2

我正在使用原型1.7.0。 我有一个像下面提到的标签的HTML代码。 我已经添加了一个自定义的方法。现在html标记的自定义属性不被ie9和firefox识别

<div id="showButton" onclick="javascript:hello();" onhide="onNamehide()">show</div> 

当我点击,$('showButton').onhide计算结果为true显示在IE8和IE9中,Firefox的错误。

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

'Prototype'不是jquery。错误的标签名称! – 2012-01-09 17:44:16

回答

3

Element#hasAttribute

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

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

尝试通过使用像getAttributesetAttribute(在原型抽象为readAttributewriteAttribute跨browserness起见)函数编写代码来规范,而不是实现。