7
我在2005年編寫了「Dive into Greasemonkey」(由Mark Pilgrim)。它提到Greasemonkey將用戶腳本封裝在匿名函數包裝中。 Greasemonkey是否將包裝器插入源JavaScript代碼或將其添加爲任何事件處理程序,如window.onload
?JavaScript - Greasemonkey的工作原理
我在2005年編寫了「Dive into Greasemonkey」(由Mark Pilgrim)。它提到Greasemonkey將用戶腳本封裝在匿名函數包裝中。 Greasemonkey是否將包裝器插入源JavaScript代碼或將其添加爲任何事件處理程序,如window.onload
?JavaScript - Greasemonkey的工作原理
感謝您指出的代碼。何時觸發DOMContentLoaded事件,是作爲事件處理程序調用的userscript的包裝器還是作爲源代碼的一部分插入的包裝器?換句話說,第309行,this.evalInSandbox(「(function(){」+ scriptSrc +「})()」,url,sandbox,script)執行包裝器或將包裝器插入原始JavaScript代碼? – Paul 2010-07-15 01:02:20
第一個GM收聽DOMContentLoaded事件,當發生這些事件時,GM確定應該運行哪些腳本(通過@include/@ exclude規則,並檢查url是否爲'greasemonkeyable'),然後從腳本中獲得源代碼(這只是一個字符串)應該被運行包裹到匿名自執行函數(通過字符串連接),最後在匿名自執行函數(運行userscript)上執行evalInSandbox。 – erikvold 2010-07-15 18:26:33
因此,腳本在注入時執行。這是對的嗎? – Paul 2010-07-15 20:13:37