在我看来,如果遇到null对象,Prototype会停止执行包含在dom:loaded事件中的语句。例如:
<script type="text/javascript">
document.observe("dom:loaded", function() {
//id below does not exist in the DOM
$('invalid_id').observe('click',function(e){Event.stop(e);//do something});
//alert box will not execute.
alert('do something');
});
</script>
会在IE中引发错误,而其他浏览器(Chrome,FF等)会默默地忽略错误,但错误下方的任何行都不会被执行。
JQuery似乎没有这种行为。例如:
<script type="text/javascript">
$(document).ready(function(){
$("#invalid_id").click(function(event){
//click event code here...
});
alert('do something');
});
</script>
...即使遇到空对象,也会继续执行行。
我一直无法在Prototype的网站上找到关于这个问题的任何内容,而JQuery确实解决了这个问题。有没有其他人经历过这个或者我错过了什么?
感谢。
答案 0 :(得分:0)
$('invalid_id').observe(...
的元素不存在, invalid_id
会抛出错误。
如果你想以jquery的工作方式(无论是否存在invalid_id,它将工作的方式)使用:
$$('#invalid_id').invoke('observe','click',function(e){...});
这样你的dom加载函数的其余部分就会执行。