Javascript 有没有办法退出Greasemonkey脚本?
我知道你可以使用Javascript 有没有办法退出Greasemonkey脚本?,javascript,greasemonkey,Javascript,Greasemonkey,我知道你可以使用return从Greasemonkey脚本返回,但仅当您不在其他函数中时。例如,这将不起作用: // Begin greasemonkey script function a(){ return; // Only returns from the function, not the script } // End greasemonkey script 是否有一个内置的Greasemonkey函数允许我从脚本中的任何地方停止脚本的执行 谢谢你,是的,你可能可以做如下事情
return
从Greasemonkey脚本返回,但仅当您不在其他函数中时。例如,这将不起作用:
// Begin greasemonkey script
function a(){
return; // Only returns from the function, not the script
}
// End greasemonkey script
是否有一个内置的Greasemonkey函数允许我从脚本中的任何地方停止脚本的执行
谢谢你,是的,你可能可以做如下事情:
(function loop(){
setTimeout(function(){
if(parameter === "abort") {
throw new Error("Stopped JavaScript.");
}
loop();
}, 1000);
})(parameter);
您可以通过将variable参数的值设置为abort来中止脚本,它可以是常规变量,也可以是Greasemonkey变量。如果它是Greasemonkey变量,那么您可以在Firefox中使用about:config直接通过浏览器修改它
是否有一个内置的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
或者,您可以使用函数返回而不是局部全局。如果您在函数的嵌套调用中,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
//开始greasemonkey脚本
(功能(){
//脚本的所有内容都可以包括函数def和调用
...
...
如果
return;//这将退出脚本
...
...
})(); // 这会将整个脚本作为单个函数调用
我想抛出一个错误。但是,这会干扰页面上的其他脚本吗?@SimpleCoder,不会。我的其他Greasemonkey脚本,用于同一页面,并且本机脚本工作正常。只需添加一点:如果使用标签:do while
技巧也适用于嵌套循环:main:do{/*…*/break main;}while(false)代码>这里的问题是,您需要移动大块代码并将其放在do/while中,而我的解决方案只是附加到GM脚本的开头。