2013-02-22 33 views
1

(我已经问过这个问题,我在这里加入了更多细节)jQuery在第一次尝试时不能在IE9中工作;上按F5(刷新)它的工作原理

我返回一个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上我不需要刷新页面;它在第一次尝试时起作用。

请帮助...

+0

你确定你没有prev版本的页面缓存吗?什么版本的jQuery?此代码看起来正确 – 2013-02-22 12:34:22

+0

此代码不正确,文档准备不应该与jQuery Mobile一起使用,有时文档准备好可以在创建页面之前触发,并且int不会绑定它的case change事件。看看我的其他答案,以更好地理解:http://stackoverflow.com/a/14469041/1848600 – Gajotres 2013-02-22 12:42:53

+0

@Gajotres 我没有看到** NewToAspMVC **提及任何关于JQueryMobile。 – 2013-02-22 13:24:26

回答

0

的$(文件)。就绪()事件取决于事件称为DOMContentLoaded(在Chrome中,真的不知道关于Firefox,但它是有一些名称)。

此事件一旦HTML已加载和所有相关文件已在(CSS和JS的文件)..浏览器,Safari浏览器(WebKit的)和Firefox(壁虎)被带到解雇在解决这个特殊事件时是相当可预测的。它像发条一样冒着烟雾堆积起来,一旦被抓到,就可以玩弄它,对于任何人都在关心。

但是,就IE而言,直到版本7(我认为)他们从未实现过这个事件。鉴于此,最近版本的实施并不如此有效。

我一次又一次面对这个问题。对于这一点,曾先后每次

一个解决办法是在HTML结束手动触发事件:

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

希望这有助于

问候
Binaek萨卡

编辑
查看事件是否被解雇的一个好方法是在cod中增加一些动作即是这样的:

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

警报块的代码执行时,由于Java脚本的单线程性质。因此,您可以使用它来获取代码的伪栈跟踪。

+0

当我使用F5重新加载页面时有效;但是当我从某个链接到达页面时,它不起作用。 – NewToAspMVC 2013-02-22 13:34:21

相关问题