目标页面在没有浏览器页面加载的情况下更改其 URL。如何让我的用户脚本仅在该站点的 select 页面上触发?

The target page changes its URL without a browser page load. How do I get my userscript to fire ONLY on a select page for this site?

如何在 Twitch https://www.twitch.tv 主页上仅 运行 指定我的 Tampermonkey 用户脚本?

详细说明:

Twitch 页面以某种方式修复,如果我通过在网站内单击进行导航,则不同页面上的所有新内容都会加载到同一页面上(我不知道这个的技术术语)。

我怎样才能解决这个问题,以便无论我最初打开哪个网页,都只有 https://www.twitch.tv 运行 脚本?

下面是我的用户脚本。它的目的是阻止自动播放 Twitch 主页上的精选视频。

// ==UserScript==
// @name         Twitch Homepage Auto-Play Disable
// @version      0.1
// @description  Disables Twitch homepage featured video auto-play.
// @author       G
// @match        https://www.twitch.tv/
// @require      http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require      https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant        GM_addStyle
// @grant        GM.getValue
// ==/UserScript==

waitForKeyElements ("div.pl-overlay--loading", pausevideo);

function pausevideo () {

        if(!document.querySelector("#icon_play")){
            console.log("pausingvideo");
            document.querySelector('.qa-pause-play-button').click();
        }

}

该站点 "changes" 页面通过 ajax-load,这意味着 您的脚本必须 运行 在所有页面上 ,因为主页可以是 "loaded" 而没有 HTML GET。 (根据标准 GET,Tampermonkey 仅触发一次。)

然后,在您的暂停功能中,检查主页是否已 ajax 进入选项卡。像这样:

// ==UserScript==
// @name         Twitch Homepage Auto-Play Disable
// @match        https://www.twitch.tv/*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require      https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant        GM_addStyle
// @grant        GM.getValue
// ==/UserScript==
/* global $, waitForKeyElements */
/* eslint-disable no-multi-spaces */

waitForKeyElements ("div.pl-overlay--loading", pauseVideo);

function pauseVideo () {
    if (location.href === "https://www.twitch.tv/"  &&  !document.querySelector("#icon_play") ) {
        console.log ("===> Pausing video.");
        document.querySelector('.qa-pause-play-button').click ();
    }
}

重要提示:此脚本基于 OP 的代码,还将阻止用户在主页上手动播放视频(好东西,IMO , 见脚注).
因此,如果您希望能够在这些视频上点击 "play",您将需要更复杂的逻辑。这超出了这个问题的范围,如果需要,请为此提出一个新问题。





而且它也非常 "busy" 和烦人。也许更好的用户脚本是:

alert("This site saps your life and IQ.  Close the tab and go for a walk (optional dog, recommended).")