2012-03-12 10 views
1

私は、ユーザをリダイレクトする機能をデバッグしようとしています。私はconsole.log()の出力を読むために実行中にスクリプトを "強制終了"したい。私は単純にreturnを使うことはできません。一緒に働く多くの機能があるからです。Javascriptスクリプトを削除するにはどうすればよいですか?

+1

alert()を試しましたか? –

+0

"一緒に働く多くの機能"はここでは役に立たない感覚を伝えません。それらはどのように読み込まれますか?彼らは一定の間隔で支払うのですか?それらは非同期にロードされていますか?彼らはイベントハンドラですか? – ZJR

答えて

1

コード内で一時停止したい箇所にブレークポイントを設定します。サポートしているコードブラウザにdebugger statementを追加すると、その時点で自動的に停止してデバッガが開きます(実際には、コンソール/ devツールを開いていない限り、実際にはChrome(?)必要に応じて開発ツールを開いて起動することができます)。

+0

Chromeは、コンソールが開いていないと間違いなく無視します。おそらくIEもそうです。コンソールが開いていなければ、 'console'が存在しないことを知らせるでしょう。 –

1

は、あなたのケースにそれらのすべては適用されませんいくつかのオプションがあります:

  1. が例外をスロー。関数と呼び出し元関数も停止します。
  2. ismaelgaが推奨するとおり、alert()を使用してください。
  3. nnnnnnが示唆するように、ブレークポイントを設定します。 debuggerキーワードを使用するか、ブラウザのGUIを使用してください。
  4. 空の関数にconsole.logを再定義します。この方法では何もログに記録されないので、これまでにログに記録された内容を干渉なく読み取ることができます。オプションはできませんいくつかの状況

  1. あなたのコードは、「メインループ」は、他のコードを停止しても、イベントへの応答、またはsetIntervalのようなものを使用している場合は、まだ実行することができますし、ログスタッフ。
  2. アラートウィンドウでは、ブラウザがどれほど目障りなのかに応じて、ログを確認するのが困難になることがあります。
  3. 適切なデバッガが存在しないか、またはデバッガをインストールできません。
  4. 一部の関数にはローカルコピーconsole.logが保存されているため、再定義することで影響はありません。

すべてのオプションのうち、私はあなたのログを静かに読むことができるので、ページを "壊す"ことはできません。ログを「フィルタ」したい場合は、「正しい」ログ(保存されたconsole.log)を呼び出し、残りの部分は「偽」(再定義したもの)を呼び出すようにすることもできます。

0

関数の外にあるグローバル変数を宣言し、その変数の値をチェックし、値が特定の方法で設定されている場合にのみ実行される、各関数または長期実行ループ内にコードを追加します。このように、変数はセマフォーとして機能し、その値をどこからでも変更して、その値に従ってすべての処理を終了することができます。

たとえば、falseとして初期化されるstopProcessingという単純なブール変数ですが、すべての関数が返すことを知り、すべてのループがASAPを中断することを知るようにするにはtrueに設定できます。

関連する問題