Целевая страница меняет свой URL без загрузки страницы браузера.Как мне заставить мой usercript запускаться ТОЛЬКО на выбранной странице этого сайта? - PullRequest
0 голосов
/ 13 октября 2018

Как я могу указать в своем пользовательском скрипте Tampermonkey его запуск только на домашней странице Twitch https://www.twitch.tv, как задумано?

Чтобы уточнить:

  • Если я первоначально открою 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();
        }

}

1 Ответ

0 голосов
/ 13 октября 2018

Этот сайт «меняет» страницы с помощью ajax-load , что означает, что ваш скрипт должен работать на всех страницах , потому что домашняя страница может быть «загружена» без HTMLGET.(Tampermonkey срабатывает только один раз для стандартного GET.)

Затем, в вашей функции паузы, проверьте, была ли домашняя страница перемещена во вкладку.Например:

// ==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 ();
    }
}

Важно: Этот сценарий, основанный на коде ОП, также не позволит пользователю вручную воспроизводить видео на главной странице (Хорошо,ИМО, см. Сноску) .
Итак, если вы хотите иметь возможность нажимать кнопку «Воспроизвести» на этих видео, вам потребуется более сложная логика.Это выходит за рамки этого вопроса, задайте новый вопрос для этого, если необходимо.





И это также чрезвычайно «занято» и раздражает.Возможно, лучшим пользовательским сценарием будет:

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