Tampermonkey waitForKeyElements 在点击后刷新页面并创建无限循环?

Tampermonkey waitForKeyElements refreshes page after click and creates endless loop?

我正在尝试自动点击 YouTube 上的“还在看吗?视频将很快暂停”按钮,这样我的视频就不会在 X 时间后停止。我已经使用 waitForKeyElements 创建了一个 Tampermonkey/Greasemonkey 脚本来在按钮出现时单击它。它似乎有效,因为它点击了弹出窗口。但有时它会进入无限循环,点击弹出按钮,然后刷新页面。刷新后按钮会再次弹出,然后按钮会再次被点击并无限重复。

我提供了我正在谈论的内容的屏幕截图。注意左下角的 YouTube 弹出窗口:

这是 Tampermonkey 脚本的代码:

// ==UserScript==
// @name     YouTube Yes 4
// @include  https://www.youtube.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==

waitForKeyElements (
    ".yt-button-renderer", click
);

function click (TargetLink) {
TargetLink = $("a:contains('Yes')")

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

编辑:这是一个使用 .click()

的更新脚本
waitForKeyElements (
    "tp-yt-paper-button#button.style-scope.yt-button-renderer.style-blue-text.size-default", clicks
);

function clicks () {
    $("tp-yt-paper-button#button.style-scope.yt-button-renderer.style-blue-text.size-default:contains('Yes')").click();
}

我们将不胜感激任何帮助。节日快乐!

在另一个 Stack Overflow thread 和此处评论的帮助下,我能够使用带有 contains() 的选择器和出现在弹出按钮中的单词“是”来获得解决方案:

// ==UserScript==
// @name     YouTube Yes
// @include  https://www.youtube.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==

waitForKeyElements ("a.yt-simple-endpoint.style-scope.yt-button-renderer:contains('Yes')", clicks);

function clicks (jNode) {
    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    jNode[0].dispatchEvent (clickEvent);
}