Как запомнить переменные с помощью скрипта Greasemonkey при перезагрузке страницы - PullRequest
0 голосов
/ 13 июня 2011

У меня возникла проблема в настоящее время на мобильном сайте, который я запускаю прямо в браузере Firefox моего компьютера.Каждый раз, когда нажимается кнопка, страница перезагружается, таким образом сбрасывая мои переменные.У меня есть этот скрипт:

// ==UserScript==
// @name        trada.net autoclick 55_1min_mobile
// @namespace   airtimeauction auto click
// @include http://www.trada.net/Mobile/
// @version     0.1
// @description Automatically click // ==/UserScript==

var interval            = 57000;
var bidClickTimer       = setInterval (function() {BidClick (); }, interval);
var numBidClicks        = 0;

function BidClick ()
{var bidBtn1=document.getElementById("ctl00_mainContentPlaceholder_AirtimeAuctionItem7_btn_bidNow");







    numBidClicks++;
    if (numBidClicks > 500)
    {
        clearInterval (bidClickTimer);
        bidClickTimer   = "";
    }
    else
    {
        bidBtn1.click (1);

    }
};



BidClick();

Он должен нажимать кнопку каждые 57 секунд, но в тот момент, когда он нажимает кнопку, страница перезагружается, таким образом сбрасывая переменные.Как я могу заставить greasemonkey «запомнить» или перенести переменные на следующую страницу / скрипт при перезагрузке?Будет ли это как-то связано с GM_setValue?Это будут только эти несколько переменных, но вторая проблема или вопрос, будет ли вычитать те несколько секунд, которые требуются для перезагрузки страницы из «57» секунд?Как мне это компенсировать?

Ответы [ 3 ]

1 голос
/ 19 июля 2011

В дополнение к GM_setValue ... Вы также можете использовать новый объект Javascript "localStorage" или API-интерфейс SQL Javascript.

Преимущество подхода SQL состоит в том, что он потребляет очень мало ресурсов в скрипте (подумайте об этом; вместо объединения огромной строки результатов, вы можете убрать каждый результат и при необходимости вызвать его с точным запросом) Недостатком является то, что вы должны настроить SQL-сервер, но с использованием чего-то вроде SQLite, что не так уж важно в наши дни. Даже postgres или mysql можно быстро запустить на ноутбуке ...

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

GM.setValue установит значение на неопределенный срок и будет ограничено сценарием, но будет работать, если ваш сценарий выполняется в нескольких доменах.

window.localStorageустановит значение на неопределенный срок и будет относиться к домену страницы, поэтому не будет работать в разных доменах, но будет работать, если вам нужно несколько сценариев GreaseMonkey для доступа к одному значению.

window.sessionStorage будет устанавливать значение только тогда, когда окно или вкладка открыты и ограничены только этим окном или вкладкой для этого домена.

document.cookie может устанавливать значение неопределенно или только в то время, когдабраузер открыт и может быть распределен по дочерним доменам, одному домену, пути или отдельной странице.

Это основные механизмы на стороне клиента для хранения значений при загрузке страниц, предназначенные дляэта цель.Однако есть другой способ, который иногда возможен (если сама страница не использует его), а также может быть весьма полезен;window.name.

window.name относится к окну или вкладке, но также будет работать в разных доменах.Если вам нужно сохранить несколько значений, то они могут быть помещены в объект, и вы можете сохранить строку JSON объекта.Например window.name = JSON.stringify(obj)

0 голосов
/ 13 июня 2011

Да, я думаю, вам нужно использовать GM_setValue / GM_getValue.

И если вам нужно что-то делать ровно каждые 57 секунд, то рассчитайте время, когда следующее действие должно произойти послеперезагрузите и сохраните его, используя GM_setValue.Когда ваш сценарий запускается, сначала прочитайте, если сохранено следующее действие, если оно есть, используйте это время, чтобы запланировать следующее действие, и рассчитайте время для действия после этого и т. Д. ...

...