7

Я прочитал «Dive into Greasemonkey» (по Mark Pilgrim), написанный в 2005 году. Он упоминает, что Greasemonkey обертывает пользовательский скрипт в анонимной оболочке функции. Включает ли Greasemonkey оболочку в исходный код JavaScript или добавляет ее как любой обработчик событий, такой как window.onload?JavaScript - как работает Greasemonkey

ответ

6

ли Greasemonkey вставить обертку в исходный код JavaScript или добавить его в качестве обработчика любого события, такого как window.onload?

GM слушает событие DOMContentLoaded (в основном DOM Ready) here. Затем обертывает код пользовательского кода и вставляет его в песочницу, here.

+0

благодарит за указание кода. когда событие DOMContentLoaded запущено, является ли оболочка usercript вызывается как обработчик события или является оболочкой, вставленной как часть исходного кода? другими словами, строка 309, this.evalInSandbox ("(function() {" + scriptSrc + "})()", url, sandbox, script), выполняет оболочку или вставляет оболочку в исходный код javascript? – Paul

+1

Первый GM прослушивает события DOMContentLoaded, когда это происходит, GM определяет, какие пользовательские скрипты должны запускаться (с помощью правил @ include/@ exclude и проверки того, что url является «greasemonkeyable»), тогда исходный код из пользовательского файла (который является просто строка в этой точке), который должен быть запущен, завернут в анонимную функцию самоиспускания (через конкатенацию строк) и, наконец, выполняет evalInSandbox в функции анонимного самоиспускания (которая запускает пользовательский текст). – erikvold

+0

Итак, сценарий выполняется в момент его ввода. Правильно ли это? – Paul

Смежные вопросы