Да, сценарии Greasemonkey обычно заключены в анонимную функцию . И, пользовательские скрипты Chrome, очевидно, слишком .
Но, что более важно, сценарии Greasemonkey обычно 1 заключены в песочницу XPCNativeWrapper , в то время как Google Chrome преобразует пользовательские скрипты в расширения, и они работать на арене, которую Google называет «изолированным миром» 2 .
Итак, вам не нужно оборачивать код вашего скрипта в анонимные функции в целях безопасности, они уже защищены.
Просто будьте осторожны, что:
- Если вы внедрите код непосредственно в страницу (создайте тег
<script>
), то этот код будет виден JS страницы.
- Если вы используете
unsafeWindow
, то страница теоретически может последовать за ней и получить слегка повышенные привилегии.
Риск очень низкий, и я не смог найти никаких задокументированных подвигов в дикой природе.
~~~
В итоге, скрипты в разной степени изолированы в обоих браузерах. (И не только потому, что он обернут в анонимные функции.)
Greasemonkey имеет хороший набор привилегированных функций , доступных в Firefox. Хотя пользовательские скрипты в Chrome намного более ограничены.
Однако большая часть функциональности GM восстановлена в Chrome с помощью расширения Tampermonkey .
1 Начиная с Greasemonkey версии 1.0 (24 августа 2012 г.), песочница управляется директивой @grant
. Если скрипт выполняется с (или по умолчанию) @grant none
, то песочница не используется. Сценарий просто выполняется в закрытой области видимости, и обычные GM_
функции API не будут работать.
2 Разве это не звучит намного больше / приятнее, чем какая-нибудь грязная песочница? (^ _ ^)
.