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