Есть ли способ выйти из скрипта Greasemonkey? - PullRequest
2 голосов
/ 10 января 2011

Я знаю, что вы можете использовать return; для возврата из скрипта Greasemonkey, но только если вы не в другой функции.Например, это не сработает:

// Begin greasemonkey script
function a(){
    return; // Only returns from the function, not the script
}
// End greasemonkey script

Существует ли встроенная функция Greasemonkey, которая позволила бы мне остановить выполнение скрипта из любого места скрипта?

Спасибо

Ответы [ 3 ]

4 голосов
/ 11 января 2011

Существует ли встроенная функция Greasemonkey, которая позволила бы мне остановить выполнение скрипта из любого места скрипта?

Нет. Это текущие функции Greasemonkey .


Вы можете выбросить исключение, например, ответ Андерса, но я предпочитаю не исключать исключения, кроме исключительных обстоятельств.

Всегда есть старая классика, do-while ...

// Begin greasemonkey script
var ItsHarikariTime = false;

do {
    function a(){
        ItsHarikariTime = true;
        return; // Only returns from the function, not the script
    }
    if (ItsHarikariTime)    break;

} while (0)
// End greasemonkey script


В качестве альтернативы, вы можете использовать возврат функции вместо локального глобала.

3 голосов
/ 11 января 2011

Да, вы, вероятно, можете сделать что-то вроде:

(function loop(){
    setTimeout(function(){
        if(parameter === "abort") {
            throw new Error("Stopped JavaScript.");
        }
        loop();
  }, 1000);
})(parameter);

Вы можете просто прервать ваш скрипт, установив значение параметра переменной в abort, это может быть обычная переменная или переменная Greasemonkey.Если это переменная Greasemonkey, вы можете изменить ее напрямую через браузер, используя about: config в Firefox.

1 голос
/ 09 декабря 2014

Если вы находитесь во вложенном вызове функций, throw кажется единственным решением для полного выхода из сценария. Однако, если вы хотите выйти из сценария где-то внутри сценария (не внутри вызова функции), я предлагаю обернуть весь сценарий в анонимную функцию.

// begin greasemonkey script

(function(){


// all contents of the script, can include function defs and calls
...
...
if <...>
    return;  // this exits the script
...
...



})(); // this calls the whole script as a single function
...