jQuery在第一次尝试时无法在IE9中运行;按F5(刷新)它的工作原理

时间:2013-02-22 12:14:11

标签: asp.net-mvc internet-explorer jquery-mobile

(我已经问过这个问题;这里我要补充更多细节)

我返回了一个jQuery,它返回在change事件中输入元素中输入的文本。这个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)当我到达上面的jQuery页面时IE浏览器不起作用;但当我按下F5并刷新页面时,它可以工作。

3)在Firefox上我不需要刷新页面;这是第一次尝试。

请帮忙......

1 个答案:

答案 0 :(得分: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的单线程特性,

警告会阻止代码的执行。因此,您可以使用它来获取代码的伪栈跟踪。