Я прочитал «Dive into Greasemonkey» (по Mark Pilgrim), написанный в 2005 году. Он упоминает, что Greasemonkey обертывает пользовательский скрипт в анонимной оболочке функции. Включает ли Greasemonkey оболочку в исходный код JavaScript или добавляет ее как любой обработчик событий, такой как window.onload
?JavaScript - как работает Greasemonkey
7
A
ответ
6
благодарит за указание кода. когда событие DOMContentLoaded запущено, является ли оболочка usercript вызывается как обработчик события или является оболочкой, вставленной как часть исходного кода? другими словами, строка 309, this.evalInSandbox ("(function() {" + scriptSrc + "})()", url, sandbox, script), выполняет оболочку или вставляет оболочку в исходный код javascript? – Paul
Первый GM прослушивает события DOMContentLoaded, когда это происходит, GM определяет, какие пользовательские скрипты должны запускаться (с помощью правил @ include/@ exclude и проверки того, что url является «greasemonkeyable»), тогда исходный код из пользовательского файла (который является просто строка в этой точке), который должен быть запущен, завернут в анонимную функцию самоиспускания (через конкатенацию строк) и, наконец, выполняет evalInSandbox в функции анонимного самоиспускания (которая запускает пользовательский текст). – erikvold
Итак, сценарий выполняется в момент его ввода. Правильно ли это? – Paul