Пользовательский скрипт должен запускаться один раз, а не несколько раз - PullRequest
2 голосов
/ 18 января 2020
// ==UserScript==
// @name         Test
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://myanimelist.net/*
// @require http://code.jquery.com/jquery-3.4.1.slim.min.js
// @grant        none
// ==/UserScript==
var index = 0;
(function() {
    'use strict';
    $(document).ready(function () {
        console.log(index);
        index++;
        setTimeout(() => {  console.log(index); }, 2000);
    });
})();

Итак, вы можете видеть, что этот код должен возвращаться в консоли: 0, затем 1, но результат другой, на самом деле скрипт запускается несколько раз.

Моя единственная подсказка - это то, что пришло с сайта. под вопросом, есть идея?

Исключено: (изображение с низким повторением 1)

Фактически: (изображение с низким повторением 2)

Ответы [ 2 ]

1 голос
/ 20 января 2020

ваш скрипт может загружаться для каждого фрейма на странице.

добавьте // @noframes, чтобы предотвратить это.

// ==UserScript==
// @name         Test
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://myanimelist.net/*
// @require http://code.jquery.com/jquery-3.4.1.slim.min.js
// @grant        none
// @noframes
// ==/UserScript==
0 голосов
/ 18 января 2020

Вы можете использовать Loda sh для запуска функции один раз

_. Once (// Функция запускается только один раз)

...