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 に答える