gpt4 book ai didi

javascript - 当在多个选项卡上加载时,用户脚本会自行阻塞

转载 作者:行者123 更新时间:2023-12-03 03:02:17 24 4
gpt4 key购买 nike

我在 FF56 上的 Greasemonkey 3.17 以及 Vivaldi 上的 tampermonkey 中都遇到了这个问题,并且我无法通过 google 找到有关此问题的任何信息。

示例脚本:

// ==UserScript==
// @name stackoverflow.com
// @namespace siod87gbnwf87rnsfdkn
// @include https://stackoverflow.com/*
// @version 1
// ==/UserScript==

alert(1);
alert(2);

正如您所看到的,它非常简单,应该给出一个消息框,然后单击“确定”后出现第二个消息框。这基本上工作正常,但现在问题是:

  • 访问 stackoverflow.com

  • 使用鼠标中键在新选项卡中连续两次打开一个问题,以便在另一个选项卡仍在加载时打开第二个选项卡

发生的情况是,两个选项卡都将按预期显示弹出框“1”,但是当您在第一个选项卡的框中单击“确定”时,脚本将暂停,直到您在第二个选项卡的弹出框中单击“确定”。在第二个选项卡上单击“确定”两次后,第一个选项卡上的警报将会触发。

为什么脚本不能彼此独立运行?这与 alert 无关,我在使用更复杂的脚本时遇到了这个问题,但为了显示我的问题,alert 的工作原理是相同的。

最佳答案

Why do the scripts not run independently from each other?

它们是“独立”运行的,因为它们不共享全局空间。但是,诸如 alert 之类的阻塞调用由浏览器本身处理,并且 ECMAScript 规范中未指定顺序。

一个“解决方案”是不使用阻塞调用,例如alert。相反,如果您需要打印值,请使用 console.logconsole.info

关于javascript - 当在多个选项卡上加载时,用户脚本会自行阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47319649/

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