我在主窗口上偵聽onload
事件,然後在每個瀏覽器/選項卡上(我需要在瀏覽器中最多運行一個代碼)輸入DOMContentLoaded
事件,並在代碼在瀏覽器上運行controlExecuted
。如何在firefox插件中只運行一個代碼實例?
window.addEventListener("load", function(){
try{
var controlExecuted = 0;
var appcontent = document.getElementById("appcontent"); // browser
if (appcontent && controlExecuted == 0)
appcontent.addEventListener("DOMContentLoaded", function docLoader(e){
appcontent.removeEventListener("DOMContentLoaded", docLoader, false);
alert('run code')
controlExecuted = 1;
}, true);
}catch(e){
// log!
}
}, false);
這不行。代碼運行多次,具體取決於瀏覽器/選項卡的數量。
那麼如何在firefox插件中只運行一個代碼實例?
如果將'controlExecuted'變量移動到'load'監聽器之外,會發生什麼?是不是每次'load'在'window'上觸發都創建一個新變量? – robertc
每次創建窗口時都會創建'controlExecuted'。沒關係。 'load'之前或之後並不重要。無論如何我都試過,沒有運氣。謝謝,。 –
但是,它不會爲任何從每個窗口冒出來的「加載」事件創建嗎? – robertc