我正在使用原型1.7.0。 我有一个HTML代码,如下面提到的标签。 我已经添加了一个隐藏的自定义方法。
<div id="showButton" onclick="javascript:hello();" onhide="onNamehide()">show</div>
现在,当我点击时,IE8中显示$('showButton').onhide
计算结果为true,而IE9中显示为false,
function hello(){
if($('showButton').onhide){
alert("I am able to find onhide function");
} else {
alert("Sorry, I am not able to find onhide function");
}
}
有人可以向我解释一下吗?
答案 0 :(得分:3)
if ($('showButton').hasAttribute('onhide')) {
仅onhide
的测试有时会起作用的原因是复杂而微妙的。从技术上讲,$('showButton')
返回的对象是DOM的javascript表示,它本身不是HTML元素。较旧的浏览器会通过将HTML属性视为DOM属性来混淆该问题,但设置DOM属性并不总是设置HTML属性。随着浏览器越来越接近规范,差异变得越来越准确。
尝试使用getAttribute
和setAttribute
等函数将代码编写到规范而不是实现(在Prototype中抽象为readAttribute
和writeAttribute
,以便交叉使用browserness)。