簡體   English   中英

幫助使用戶腳本在chrome中工作

[英]Help making userscript work in chrome

我已經為Gmail寫了一個用戶腳本: Pimp.my.Gmail ,我也希望它也與Google Chrome兼容。
現在,據我所知,我已經嘗試了幾件事(非常薄弱),並且在一定程度上取得了成功,盡管我不確定這是否是正確的方法。

這是我嘗試過的方法,以使其可在Chrome中運行:
我發現的第一件事是contentWindow.document在chrome中不起作用,所以我嘗試了contentDocument ,它可以工作。
但是我注意到一件事,檢查了Firefox和Chrome中的控制台消息,我看到腳本在Firefox中執行了多次,而在Chrome中它只執行了一次!
所以我不得不放棄window.addEventListener('load', init, false); 行並將其替換為window.setTimeout(init, 5000); 我不確定這是否是個好主意。

我嘗試的另一件事是保持window.addEventListener('load', init, false); 行並使用window.setTimeout(init, 1000); init()內部,以防找不到canvasframe。

因此,請讓我知道使該腳本跨瀏覽器兼容的最佳方法是什么。 噢,我是全力以赴地使這個腳本更好/更有效的代碼(我肯定是可能的)

編輯:沒有幫助...? :'(

編輯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()方法將永遠運行?

非常感謝所有人的幫助! -_-嗯

順便說一句,這就是我在腳本開始時所需要的:

try { if(top.location.href != window.location.href) { return; } }
catch(e) { return; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM