Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
jQuery через window.jQuery. И, надеюсь, это не перекроют.а почему бы нам не воспользоваться уже используемой на сайте, к примеру, jQuery. Ответ — да с радостью, вот только никто не позволит, т.к. в противном случае наше расширение могло бы влезть в логику работы сайта и сделать что-нибудь нехорошее (например увести ваши пароли). Ранее мне удавалось обойти этот запрет в opera, и я надеюсь эту «дыру» уже залатали.
Но если Chrome умеет преобразовывать UserJS в расширения сам, а Firefox-у для этого нужен Greasemonkey, то в случае Opera нам нужно его оформить в виде расширения (чем мы уже и занялись).
Его можно улучшить, добавить поддержку Chrome и Greasemonkey
мы могли бы внедрить ещё и какую-либо библиотеку вроде jQuery или Prototype. Но я строго не рекомендую так поступать. Такого рода библиотеки весьма весомые, а т.к. они будут загружаться не только для каждой вкладки, а ещё и для каждого iframe, которых на странице бывает много, 5-10 таких расширений могут вызвать тормоза, а то и вовсе заставить зависнуть браузер пользователя. Учитывая что наши задачи весьма скромны, мы не сильно много теряем.Вот после этого вызывают недоверие любые подобные утверждения. Вы действительно проверяли, что скрипты аддонов Опера не кеширует, а копирует в каждое окно? Даже если копирует, то в 50 окнах и фреймах копии jQuery займут 5 мегабайт. И они «могут вызвать тормоза»? Они будут чем-то отличаться от 50 копий настоящих скриптов с jQuery?
Вы разве не знаете, что *user.js тоже поддерживаются Оперой? Все 2 спсосба.
Любой юзерскрипт (даже в Хроме) способен с помощью написанного своего кода вмешаться в логику работы приложения, если его допустили в домен
Юзерскрипт не упаковывается в zip-архив и представляет собой единственный скрипт формата .js, без манифестов, без рисунков и HTML. Вы утверждаете, что возможно поддержать аддон Оперы в GreaseMonkey?
Вы действительно проверяли, что скрипты аддонов Опера не кеширует, а копирует в каждое окно?
Простите, ещё один признак некомпетентности
Но как можно учить других, самому не разбираясь в происходящем?
Отчего же, знаю оба. Оба достаточно мудрёные. Это что-то меняет?
Способ с расширением, в теории, способен к автообновлению и ...
Вы имеете ввиду то, что расширение может выполнять произвольные запросы к сайту? Или доступ к js-окружению тоже?Произвольные действия на клиенте (и запросы в частности). После своего момента запуска, конечно. Про JS-окружение я ничего не говорил — известно, что даже рядом написанные нативные скрипты не могут получить доступ к соседям в их локальные скоупы. Но всё, что способен сделать обычный скрипт (написанный не выше точки запуска юзерскрипта), то способен и любой юзерскрипт или аддон.
В случае GreaseMonkey используем не oex, а только js и все делаНо в том и дело, что оех — это не только js. Кое-что (работа бекграунда Оперы, например) юзерскрипт не сумеет. Если речь о конкретном аддоне, то да, он может быть переписан как юзерскрипт, но не каждый.
В случае если там будет jQuery, и опера закеширует уже пропарсенный js-код, выполнять её его придётся всё равно каждый раз заного.
А можно немного меньше напыщенности? Статья излагает какие-либо вредные идеи?Соответственно Вашим утверждениям. Все 4 цитаты содержат ошибки. И я не анализировал все утверждения в статье, хватило и этих.
Начнём писать код. Для начала, для удобства, поместим всё в анон.функцию. Т.к. наше javascript-окружение изолировано от javascript-окружения сайта, этого делать не обязательно, но на мой взгляд, подобное уже давно стало правилом хорошего тона:Тут для скриптов аддонов сказать уверенно не могу, что они изолированы; а в юзерскриптах Оперы такая обёртка была бы вызвана необходимостью (а не мифическим «правилом хорошего тона»), потому что Опера — единственный (из основных) браузер, который не разделяет окружения юзерскриптов и скриптов страницы.
Пишем простое Opera-расширение