2

我正在编写一个用于从页面中串行提取信息的脚本,通常我必须暂停 javascript,但页面继续加载,并且 javascript 停止了。

setTimeout不是必需的,因为脚本的其余部分仍在运行

我需要它以使脚本在另一个脚本(我无权访问)将必要的数据下载到页面后继续运行(这需要 3 秒)。

PS 如果有什么我从村里提取信息 - http://www.mosgortrans.org/pass3/使用带有扩展名“用户脚本”的 mozilla

4

2 回答 2

2

我不明白为什么setTimeout这里没有必要 - 它完全符合您的描述:

setTimeout(function() {
    // this code runs 3 seconds after the page loads
}, 3000);
于 2012-12-01T12:00:38.523 回答
1

正如先前的回答和评论所建议的那样,执行此操作的正常方法是将要在脚本加载后运行的代码放入setTimeout. 例如,如果您担心在等待时触发事件处理程序并导致错误,那么您需要禁用事件处理程序(例如element.onclick = null),然后在超时功能内重新启用它们。我想你也可以这样做:

var pause = false;
...
callExternalScript();
pause = true;    
setTimeout(function() {
   pause = false;
}, 3000);
...
function oneOfMyOtherFunctions() {
    if (pause) return;
    ...
}
...

但这很麻烦,因为您必须if (pause) return在脚本暂停时要禁用的每个功能的开头包含。此外,您可能希望也可能不希望添加额外的代码来运行脚本暂停时调用的所有函数,一旦它被取消暂停。

于 2012-12-01T18:46:04.603 回答