(我已经问过这个问题;这里我要补充更多细节)
我返回了一个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上我不需要刷新页面;这是第一次尝试。
请帮忙......
答案 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的单线程特性,警告会阻止代码的执行。因此,您可以使用它来获取代码的伪栈跟踪。