gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:07:15 33 4
gpt4 key购买 nike

我如何在我的 Tampermonkey 用户脚本中指定它只按预期在 Twitch https://www.twitch.tv 主页上运行?

详细说明:

  • 如果我最初打开 https://www.twitch.tv,那么我通过点击该网站导航到的所有后续 Twitch channel 页面都会运行该脚本。 (不好)
  • 同样,如果我最初打开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();
}

}

最佳答案

该站点通过 ajax-load“更改”页面,这意味着您的脚本必须在所有页面上运行,因为主页可以在不加载的情况下“加载”一个 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,见脚注) .
因此,如果您希望能够在这些视频上单击“播放”,您将需要更复杂的逻辑。这超出了这个问题的范围,如果需要,请为此提出一个新问题。





而且它也格外“忙碌”和烦人。也许更好的用户脚本是:

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

关于javascript - 目标页面在没有浏览器页面加载的情况下更改其 URL。如何让我的用户脚本仅在该站点的选定页面上触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786986/

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