gpt4 book ai didi

javascript - 如何使用 Tampermonkey 重新加载另一个标签页?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:39:34 24 4
gpt4 key购买 nike

我想在当前选项卡更改时刷新某个选项卡,使用 Tampermonkey

我是 Duolingo 的用户,但我对他们对 Crown 系统的新变化不满意,我不喜欢他们带有“练习”按钮的算法。

因此,我使用网站 duome.eu 来选择最弱的进行审查。

在本页点赞:
https://duome.eu/example/progress

本网站上的信息是基于用户在 duolingo.com。

我点击duome页面上的链接打开duolingo网站来复习技能。
完成一项技能复习后,我希望重新加载 duome.eu 页面以重新计算我的进度。

我怎样才能做到这一点?

此外,我对其他想法持开放态度,在此先感谢:)

最佳答案

您可以通过以下方式做到这一点:

  1. 将您的 Tampermonkey 脚本设置为在两个域上运行
  2. 脚本实例之间的通信使用GM_setValue()DocGM_addValueChangeListener()Doc并且,可选地,GM_getValue()Doc .

例如,您想要监控 this random question , 并重新加载 its timeline page每次您点击投票按钮或最喜欢的明星。

这个完整的 Tampermonkey 脚本可以做到这一点:

// ==UserScript==
// @name _Cross tab, cross domain script communication
// @match *://stackoverflow.com/questions/521295/*
// @match *://stackoverflow.com/posts/521295/timeline
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_setValue
// @grant GM_addValueChangeListener
// ==/UserScript==

const xmssionKey = "Last vote-button click event";

//-- Are we on the "interactive" page/site/domain or the "monitoring" one?
if (location.pathname.includes ("questions") ) {
//-- On the "interactive page/tab...
//-- Hook into the page's vote and favorite buttons:
$(".inner-content").on ("click", ".vote a", zEvent => {
var tmStamp = new Date ().getTime ();
var ctMessage = `Button ${zEvent.target.className} clicked - ${tmStamp}`;
console.log (ctMessage);

//-- Send message to monitoring tab.
GM_setValue (xmssionKey, ctMessage);
} );
}
else {
//-- On the "monitoring" page/tab...
//-- Listen for new message:
GM_addValueChangeListener (
xmssionKey, (keyName, oldValue, newValue, bRmtTrggrd) => {
console.log (`Received new event: ${newValue}`);
//-- User feedback, esp useful with time delay:
document.title = "Reloading...";
/*-- Important:
May need to wait 1 to 300 seconds to allow for
web-app / database / API delays and/or caching.
1222 == 1.2 seconds
*/
setTimeout ( () => {location.reload(); }, 1222);
} );
}
  1. 安装脚本。
  2. 打开the timeline page .
  3. 打开the question page .
  4. 点击其中一个投票按钮或最喜欢的明星。
  5. 您会看到时间线页面自动重新加载。

请注意,对于这个特定示例,两个页面都在同一个域中(只是为了让每个人都更容易运行演示脚本),但是代码/策略对于跨域页面同样有效。

关于javascript - 如何使用 Tampermonkey 重新加载另一个标签页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52014932/

24 4 0