1

(私はすでにこの質問をしました。ここに詳細を追加します)

変更イベントで入力要素に入力されたテキストを返すjQueryを返しました。この jQuery は FireFox では問題なく動作しますが、Internet Explorer (IE9) では失敗します。

  <script>
      $(document).ready(function () {
          $("#UserName").change(function () {
              alert("Text Entered Is :"+$("#UserName").val());
          });
      });
  </script>

1) ASP.NET MVC を使用しています。上記のjqueryを持つページに到達するには、Html.ActionLinkを使用しています

2) IE で上記の jQuery のページにアクセスしても機能しません。しかし、F5 を押してページを更新すると機能します。

3) Firefox では、ページを更新する必要はありません。最初の試行で機能します。

助けてください...

4

1 に答える 1

0

$(document).ready() イベントは、 DOMContentLoadedというイベントに依存します(Chrome では、firefox についてはよくわかりませんが、何らかの名前で存在します)。

このイベントは、HTML が読み込まれ、すべての関連ファイル (CSS および JS ファイル) が取り込まれるとすぐに発生します。Chrome、Safari ( WebKit )、および Firefox ( Gecko ) は、この特定のイベントの発生をかなり予測できます。 . それは時計仕掛けのようにスタックを泡立て、一度キャッチされると、誰もが気にするように、それをいじることができます。

ただし、IE に関する限り、バージョン 7 まで (私が思うに)、このイベントは実装されていませんでした。それを考えると、最近のバージョンでの実装もそれほど効率的ではありません。

私は何度もこの問題に直面しました。

HTML の最後でイベントを手動で起動することで、毎回うまくいきます。

<script type="text/javascript">
try{jQuery.ready();}catch(e){}
</script>

お役に立てれば

編集
イベントが発生するかどうかを確認する優れた方法は、コードに何らかのアクションを追加することです。何かのようなもの:

<script>
      $(document).ready(function () {
          alert("Loaded");
          $("#UserName").change(function () {
              alert("Text Entered Is :"+$("#UserName").val());
          });
      });
</script>

アラートは、Javascript のシングル スレッドの性質により、コードの実行をブロックします。したがって、これを使用してコードの疑似スタックトレースを取得できます。

于 2013-02-22T12:52:42.523 に答える