h9标记上的自定义属性无法被ie9和firefox识别

时间:2012-01-09 17:31:05

标签: html firefox internet-explorer-8 prototypejs internet-explorer-9

我正在使用原型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");
   }
 }   

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:3)

请参阅Element#hasAttribute

if ($('showButton').hasAttribute('onhide')) {

onhide的测试有时会起作用的原因是复杂而微妙的。从技术上讲,$('showButton')返回的对象是DOM的javascript表示,它本身不是HTML元素。较旧的浏览器会通过将HTML属性视为DOM属性来混淆该问题,但设置DOM属性并不总是设置HTML属性。随着浏览器越来越接近规范,差异变得越来越准确。

尝试使用getAttributesetAttribute等函数将代码编写到规范而不是实现(在Prototype中抽象为readAttributewriteAttribute,以便交叉使用browserness)。