gpt4 book ai didi

javascript - 退出脚本或在选项卡中一次运行 Tamerpmonkey Userscript 的方法?

转载 作者:行者123 更新时间:2023-11-30 14:23:04 25 4
gpt4 key购买 nike

我正在尝试在 Tampermonkey 中运行脚本,并让它在停止之前在选项卡或给定网页上运行一次。该脚本当前会自动单击其中包含给定单词的任何“a”元素链接。示例 HTML 代码如下:

<a href="adbc.com">Contact</a>

假设我在脚本中指定了单词“Contact”,脚本将点击该链接。不幸的是,我的脚本在浏览器的单个页面/选项卡中继续无限运行,无论它被点击了多少次。我希望它停止 - 并在一个选项卡中使用一次(即使它转到已单击的下一个链接)。

我希望此脚本在单击单个链接后停止 - 或者仅在单个选项卡或单个页面中运行一次。通常这不是问题,因为下一个加载的页面(点击的链接)不会包含给定短语的链接......但有时它会导致页面无限点击链接。我需要一种方法来避免这个问题——只让脚本点击一次或点击一个链接。这可能涉及退出脚本、暂停脚本或只是让程序运行一次。

现在我有以下代码,它会自动点击其中包含短语“Contact”的任何链接:

// ==UserScript==
// @name Music Submissions Contact
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @include *
// @grant GM_addStyle
// ==/UserScript==

var TargetLink = $("a:contains('Contact')")

if (TargetLink.length)
window.location.href = TargetLink[0].href

我想要一种方法让这个脚本在单击后停止/退出/关闭/暂停/暂停。我一直找不到正确的语法或逻辑,所以任何建议肯定会有所帮助。

最佳答案

您可以在 Tampermonkey 中使用 GM_getTab()GM_saveTab() ( Here's the doc page for both ) 执行此操作。

这些函数设置和检索仅在给定选项卡中保留的数据,无论页面加载或域更改如何

这是演示该技术的一个完整的工作脚本(只需调整它运行的页面):

// ==UserScript==
// @name _Data that persists only in tab, cross-domain, cross page loads
// @match *://YOUR_SERVER.COM/YOUR_PATH/*
// @grant GM_saveTab
// @grant GM_getTab
// ==/UserScript==
/* eslint-disable no-multi-spaces */

GM_getTab ( thisTabData => {
console.log ("thisTabData: ", thisTabData);
if (thisTabData.bornOn) {
console.info ("Userscript has already run for this tab.");
return;
}
var tmStamp = (new Date() ).getTime ();
thisTabData.bornOn = tmStamp;
GM_saveTab (thisTabData);

scriptMain ();
} );

function scriptMain () {
// PUT THE CODE THAT YOU ONLY WANT TO RUN ONCE PER TAB, HERE.
console.log ("Script main code ran.");
}

关于javascript - 退出脚本或在选项卡中一次运行 Tamerpmonkey Userscript 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52415273/

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