Способ выйти из скрипта или запустить Tamerpmonkey Userscript один раз на вкладке? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь запустить скрипт в Tampermonkey и запустить его один раз на вкладке или на заданной странице веб-страницы, прежде чем он остановится.В настоящее время скрипт автоматически нажимает любую ссылку на элемент «a», в которой есть данное слово.Пример HTML-кода, например, так:

<a href="adbc.com">Contact</a>

Сценарий будет щелкать по этой ссылке, если я указал слово "Контакт" в сценарии.К сожалению, скрипт, который у меня есть, продолжает работать бесконечно на одной странице / вкладке в моем браузере, независимо от того, сколько раз на него нажимали.Я хочу, чтобы это прекратилось - и использовалось один раз на вкладке (даже если оно переходит к следующей ссылке, по которой щелкнули).

Я хочу, чтобы этот скрипт остановился, когда он щелкнул по одной ссылке -или запускается только один раз на одной вкладке или с одной страницы.Часто это обычно не проблема, потому что следующая загруженная страница (по нажатой ссылке) не будет содержать ссылку с данной фразой ... Но иногда это будет, что приведет к тому, что страница просто будет бесконечно нажимать на ссылки.Мне нужен способ избежать этой проблемы - чтобы скрипт щелкнул один раз или по одной ссылке.Это может включать в себя выход из сценария, приостановку сценария или просто запуск программы один раз.

Сейчас у меня есть следующий код, который автоматически нажимает на любые ссылки с фразой «Контакт» внутри них:

// ==UserScript==
// @name     Music Submissions Contact
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @include  *
// @grant    GM_addStyle
// ==/UserScript==

var TargetLink = $("a:contains('Contact')")

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

Я хочу, чтобы этот скрипт останавливал / выходил / закрывал / приостанавливал / приостанавливал после одного щелчка мышью.Мне не удалось найти правильный синтаксис или логику, поэтому любой совет наверняка поможет.

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете сделать это в Tampermonkey, используя GM_getTab() и GM_saveTab() ( Вот страница документа для обоих ).

Эти функции устанавливают и извлекают данные, которые сохраняются тольков данной вкладке, независимо от загрузки страницы или изменений домена .

Вот полностью рабочий скрипт (просто отрегулируйте страницы, на которых он работает), который демонстрирует технику:

// ==UserScript==
// @name     _Data that persists only in tab, cross-domain, cross page loads
// @match    *://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    GM_saveTab
// @grant    GM_getTab
// ==/UserScript==
/* eslint-disable no-multi-spaces */

GM_getTab ( thisTabData => {
    console.log ("thisTabData: ", thisTabData);
    if (thisTabData.bornOn) {
        console.info ("Userscript has already run for this tab.");
        return;
    }
    var tmStamp         = (new Date() ).getTime ();
    thisTabData.bornOn  = tmStamp;
    GM_saveTab (thisTabData);

    scriptMain ();
} );

function scriptMain () {
    // PUT THE CODE THAT YOU ONLY WANT TO RUN ONCE PER TAB, HERE.
    console.log ("Script main code ran.");
}
...