我知道您可以使用return;
从Greasemonkey脚本返回,但前提是您不在另一个函数中。例如,这不起作用:
// Begin greasemonkey script
function a(){
return; // Only returns from the function, not the script
}
// End greasemonkey script
是否有内置的Greasemonkey函数可以让我从脚本的任何地方停止执行脚本?
谢谢,
答案 0 :(得分:4)
是否有内置的Greasemonkey函数可以让我从脚本的任何地方停止执行脚本?
没有。 These are the current Greasemonkey functions
你可以抛出一个例外,比如Anders的答案,但除了特殊情况外我不想例外。
总有旧经典,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
或者,您可以使用函数返回而不是本地全局。
答案 1 :(得分:3)
是的,你可能会做类似的事情:
(function loop(){
setTimeout(function(){
if(parameter === "abort") {
throw new Error("Stopped JavaScript.");
}
loop();
}, 1000);
})(parameter);
您可以通过将variable参数的值设置为abort来简单地中止脚本,这可以是常规变量或Greasemonkey变量。如果它是Greasemonkey变量,那么您可以使用Firefox中的about:config直接通过浏览器修改它。
答案 2 :(得分:1)
如果你在嵌套的函数调用中,抛出似乎是唯一一起退出脚本的解决方案。但是,如果你想在脚本中的某个地方退出脚本(不在函数调用中),我建议将所有脚本包装到一个匿名函数中。
// 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