我在寫一個jQuery插件。在這個插件中,我將BODY
的內容包裝在DIV
中並隱藏它們。包裝內容元素導致內聯腳本觸發
var $originalBodyContents = $('body').wrapInner('<div>').children('div').hide();
插件,然後附加了自己的覆蓋DIV
到BODY
並執行它的插件魔法。當用戶退出插件時,刪除其覆蓋DIV
,並解開它們。
$originalBodyContents.children().unwrap();
這是偉大的工作,你可以在這個演示中看到:
http://jsfiddle.net/vKddB/1/
但是,如果有內容腳本的網頁上,然後他們都當包裝出現重載,他們跑他們的再次編碼。這是造成很多意想不到的行爲,你可以在這個演示中看到:「你好!」
http://jsfiddle.net/vKddB/3/
在上面的演示中,你會看到「顯示警報」按鈕會顯示,上面寫着警告點擊時。如果您啓動插件並關閉插件,您會注意到「顯示警報」按鈕現在有兩個點擊處理程序,因此點擊時會顯示兩個警報。
我的插件將無法控制正在運行的頁面內容。有沒有辦法阻止內聯腳本重新運行時,我將主體內容封裝到DIV
?
如果有什麼腳本塊包含被稱爲該網頁上的功能呢?我會從頁面中刪除它們。那會很糟糕。我只關心只在初始頁面加載時運行一次的代碼。 – Chev
正確..但由於腳本塊已經加載不會有任何效果,即使它被刪除?或者我們可以將它們移動到'