JavaScript, Tampermonkey GM_setValue и GM_getValue

У меня есть два разных скрипта. В конце одного он открывает новую веб-страницу, которая запускает другой сценарий, а затем ожидает, пока этот сценарий установит значение true, чтобы позволить первому сценарию открыть другую страницу.

Это сценарий для функции, вызываемой в конце первого сценария. Он ожидает, пока значение флага continueValue не будет установлено в значение true. Консоль снова и снова отображает сообщение «check flag», подразумевая, что другой сценарий не меняет значение на true.

function checkFlag() {
    console.log("Checking flag");
    if(GM_getValue("continueValue") === false) {
       window.setTimeout(checkFlag, 2000); /* this checks the flag every 3000 milliseconds*/
    } else {
        //--- Opens the next cove
        if (!(currentCoveNum = -1)) {
            window.open(coveLinks[currentCoveNum + 1],"_self");
        }
    }
}

В конце следующего скрипта выполняется следующий код:

//--- If the text "Next Creature" exists on the page, click next creature button
if ((document.documentElement.textContent || document.documentElement.innerText).indexOf('Next Creature') > -1) {
  window.location.href = nextCreatureLink[0].href;
//--- Otherwise set the continue value to true to allow Super Auto Feed, Open Coves to open the next cove
} else {
    GM_setValue("continueValue", true);
    console.log("continueValue is "+GM_getValue("continueValue"));
    setTimeout(function() {
        window.close();
    }, (2 * 1000));
}

Проблема в том, что когда этот сценарий достигает сообщения «continueValue is», он отображает истину, подразумевая, что другой сценарий должен открыть следующую страницу, но это не так. Он просто продолжает проверять, становится ли флаг истинным.

Мне интересно, может быть, getValue и setValue не работают между скриптами? Или, может быть, что-то с циклом проверки того, что флаг стал истинным, не так.

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


person LucyTurtle    schedule 12.06.2016    source источник


Ответы (1)


GM_setValue и GM_getValue действительно запускают кросс-таблицу или окно в одном и том же скрипте, но они не запускают кросс-скрипт. Таким образом, когда значение устанавливается в скрипте, оно не меняет значение для другого скрипта.

Попробуйте локальное хранилище или хранилище во внешней базе данных.

person LucyTurtle    schedule 12.06.2016
comment
В зависимости от доменов postMessage тоже может работать. developer.mozilla.org/en-US/docs/Web/ API / Window / postMessage - person Jeremy J Starcher; 15.06.2016