我已經寫了Gmail的用戶腳本:Pimp.my.Gmail &我希望它也與Google Chrome兼容。
現在我已經嘗試了一些東西,盡我所知的Javascript知識(這是非常薄弱的)&已經取得了一定的成功,儘管我不知道它是否是正確的方式。幫助使腳本工作在鉻
這裏就是我試過了,都讓它在Chrome瀏覽器:
我發現的第一件事情就是contentWindow.document
不鍍鉻工作,所以我嘗試contentDocument
,它的工作原理。
但我注意到一件事,檢查Firefox和Chrome中的控制檯消息,我看到腳本在Firefox中多次執行,而在Chrome中它只執行一次!
所以我不得不放棄window.addEventListener('load', init, false);
行,並用window.setTimeout(init, 5000);
取代它,我不確定這是個好主意。
我試過的另一件事是保持window.addEventListener('load', init, false);
行,並在init()
內使用window.setTimeout(init, 1000);
以防萬一找不到畫框。
所以,請讓我知道什麼是使這個腳本跨瀏覽器兼容的最佳方式。 哦,我的所有耳朵,使這個腳本更好/有效的代碼明智(這肯定是可能的)
編輯:沒有幫助...? :'(
編輯4月28日:
我重新寫的代碼一點,現在看起來是這樣的:
if(document.location != top.location) return; (function() { var interval = window.setInterval(waitforiframe, 3000); var canvas; function waitforiframe() { console.log("Finding canvas frame"); canvas = document.getElementById("canvas_frame"); if (canvas && canvas.contentDocument) { console.log("Found canvas frame"); pimpmygmail(); } } function pimpmygmail() { gmail = canvas.contentDocument; if(!gmail) return; window.clearInterval(interval); console.log("Lets PIMP.MY.GMAIL!!!"); ......rest of the code...... })();
這工作完全正常在Firefox,但在Chrome瀏覽器,它給了我一個top is undefined
錯誤。 我注意到另一件事是,如果我刪除第一行if(document.location != top.location) return;
,該waitforiframe()
方法不斷得到所謂的一遍又一遍。(即我看到控制檯"Finding canvas frame"
錯誤)
有人能告訴我第一行是幹什麼的?我的意思是它實現了什麼&爲什麼waitforiframe()
方法永遠運行,如果我刪除該行?
哎呀,我需要什麼做的就是這個回答.... – 1nfected 2010-04-26 17:28:44
某人天的緣故,請... – 1nfected 2010-04-27 16:50:02