目标页面在没有浏览器页面加载的情况下更改其 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 用户脚本?
详细说明:
- 如果我最初打开
https://www.twitch.tv
然后我通过点击网站导航到的所有后续 Twitch 频道页面,所有 运行 脚本。 (不好)
- 同样,如果我最初打开
https://www.twitch.tv/NameOfSomeChannel
然后所有后续
我导航到的 Twitch 页面(包括主页)都不
运行 脚本。 (也不好)
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).")
如何在 Twitch https://www.twitch.tv
主页上仅 运行 指定我的 Tampermonkey 用户脚本?
详细说明:
- 如果我最初打开
https://www.twitch.tv
然后我通过点击网站导航到的所有后续 Twitch 频道页面,所有 运行 脚本。 (不好) - 同样,如果我最初打开
https://www.twitch.tv/NameOfSomeChannel
然后所有后续 我导航到的 Twitch 页面(包括主页)都不 运行 脚本。 (也不好)
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).")