gpt4 book ai didi

javascript - 帮助使用户脚本在 Chrome 中工作

转载 作者:行者123 更新时间:2023-11-30 23:47:03 26 4
gpt4 key购买 nike

我为 Gmail 编写了一个用户脚本:Pimp.my.Gmail我希望它也能与 Google Chrome 兼容。
现在,我已经尽我所能的 Javascript 知识(非常薄弱)尝试了一些事情,并且在一定程度上取得了成功,尽管我不确定这是否是正确的方法。

这是我尝试让它在 Chrome 中工作的方法:
我发现的第一件事是 contentWindow.document 在 Chrome 中不起作用,所以我尝试了 contentDocument,它可以工作。
但我注意到一件事,检查 Firefox 和 Chrome 中的控制台消息,我发现脚本在 Firefox 中执行多次,而在 Chrome 中只执行一次!
所以我不得不放弃 window.addEventListener('load', init, false); 行并将其替换为 window.setTimeout(init, 5000); 和 i'我不确定这是否是一个好主意。

我尝试的另一件事是保留 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() 方法会不断被调用,并且再次。 (即我在控制台中看到“查找 Canvas 框架”错误)

谁能告诉我第一行的作用是什么?我的意思是它实现了什么以及为什么如果我删除该行,waitforiframe() 方法会永远运行??

最佳答案

非常感谢所有提供帮助的人! -_- 嗯

顺便说一句,这就是我在脚本开始时所需要的:

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

关于javascript - 帮助使用户脚本在 Chrome 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2704828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com