Kev*_*gan 1 firefox script greasemonkey browser-tabs
我打算编写一个将在特定 URL(@include 或 @match)上运行的 Greasemonkey 脚本,但是,我想要它,以便如果我打开一个或多个具有相同 URL 的附加选项卡, Greasemonkey 脚本不会在第二个(以及更多)重复页面上运行。
因此,例如,假设我有一个 Greasemonkey 脚本,它在我打开“google.com”时对网页进行“样式”更改(或以其他方式“修改”它)。我希望能够打开另一个选项卡到“google.com”,在那里 Greasemonkey 脚本不会运行。或者,更准确地说,将运行但会检测到它已经在运行并在第一个选项卡中“修改”页面,然后在第二个选项卡中“退出”。第二个选项卡将保持打开状态,但只是“不受脚本影响”。
我不知道 Greasemonkey 脚本是否可以“看到”其他打开的选项卡,但如果可以,我的第一个想法是检查另一个选项卡是否已加载到该页面,然后如果发现已加载则退出。
但它必须比这更复杂,因为:
因此,似乎 Greasemonkey 脚本必须:
我不是在找人为我写这个剧本,我觉得如果我知道如何做一些事情,我就有能力写这个剧本。如果已经存在完成所有或大部分任务的脚本,那也很棒。
首先,我需要知道是否(以及如何)使用 Greasemonkey 脚本:
Greasemonkey 不能:
原因是 Greasemonkey、Tampermonkey 等不会向/为用户脚本公开这些 API。
(成熟的浏览器扩展 可以做所有这些事情。)
Greasemonkey 可以:
GM_setValue()
Doc和GM_getValue()
Doc在脚本实例之间进行交叉通信。.postMessage()
. (示例)window.open
用于创建新选项卡的情况。localStorage
或 cookie 进行交叉通信。我不是在找人为我写这个剧本,我觉得如果我知道如何做一些事情,我就有能力写这个剧本。如果已经存在完成所有或大部分任务的脚本,那也很棒。
Stack Overflow 上已经解决了所有的点点滴滴,但在我记得的任何一个问题中都没有解决。
如果您使用变量进行通信(方法 1 或 3),请确保使用beforeunload
事件处理程序之类的东西在母版页关闭之前清除变量。
归档时间: |
|
查看次数: |
3329 次 |
最近记录: |