0

昨年、ASP.net Web アプリケーションを作成しました。私を悩ませているバグレポートを受け取りました。

すべてのユーザーの Web ページに表示される HTML SELECT 要素があります。OPTION 要素は、jQuery を使用して入力されます。それらにはdata-属性も異常なものもありません。内部テキストとvalue属性だけです。

私が受け取った (そして再現した) バグ レポートには、プログラムがハングし、「このスクリプトの実行を停止しますか?」というメッセージが表示されます。ユーザーが SELECT 要素をクリックすると、メッセージが表示されます。このユーザーと他のユーザーの間で異なるように見える唯一のことは、このユーザーの場合、SELECT 要素にほぼ 2000 の OPTION が含まれていることです。ただし、これにより「このスクリプトの実行を停止しますか?」というメッセージが表示される理由はわかりません。メッセージが表示されます。

私が知る限り、SELECT の .click ハンドラーに関連付けられたイベントはありませんが、何らかの理由で、クリックされるたびに多数の JavaScript が実行されています。

ページ用に作成した .js ファイル全体にブレークポイントを挿入しようとしましたが、この状況ではどれもヒットしません。ユーザーが SELECT 要素をクリックしたときに、どのコードが実行されていて、プログラムがハングする原因になっているのかを調べるにはどうすればよいですか?

ところで、私のユーザーは IE8 を使用しており、アップグレードするか他のブラウザを使用するオプションがあると思います。

コメントに応じて更新:明確にするために、プログラムがハングし、「このスクリプトの実行を停止しますか?」の原因となっている JavaScript コードがあることは確かです。メッセージが表示されます。問題は、どのコードが問題を引き起こしているのかを正確に把握するのに苦労していることです。

質問をより簡潔に言うと、「「このスクリプトの実行を停止しますか?」IE8 でメッセージが表示されますが、メッセージが表示されたときにインタープリターが読み取っていた JavaScript コードの場所を見つける方法はありますか?」

4

2 に答える 2

1

考えられる理由は次のとおりです。

  1. ユーザーは、SELECT の変更を監視するプラグインをインストールしています
  2. ユーザーは IE デバッガーを実行しています。これにより、スクリプトが遅くなります

また、IE J​​avaScript エンジンはかなり遅いです

** その SELECT をjQuery オートコンプリートなどに変更することを検討する必要があります。

于 2013-01-07T18:17:46.970 に答える
0

私はそれを理解したかもしれないと思います。

私の質問に対する答えは、Internet Explorer の組み込みデバッガーの「Break All」機能を使用することだと思います。これにより、jQuery のイベント処理コードでスクリプトが停止しました。OPTION 要素にイベントが関連付けられているとは思えませんが、どういうわけか、ここで膨大な数のイベントが発生しているようです。

さらに調査を進めると、問題は私のページでの jQuery-UI の使用方法に関係していることが判明しました。SELECT はたまたま jQuery-UI ダイアログ内にあります。ここで見つけたアドバイスに従ってください: (http://stackoverflow.com/questions/3239841/jquery-ui-dialog-slow)、ダイアログのドラッグ可能なプロパティを false に設定すると、正常に動作するようになりました!

于 2013-01-07T18:15:22.840 に答える