有多个onmouseup事件处理程序有效的HTML?

时间:2009-06-08 16:03:26

标签: javascript html

我正在重新编写JSP中的一些html,我注意到代码有一个按钮的多个onmouseup属性。

这是有效的HTML,它似乎有效,但它有效吗?

4 个答案:

答案 0 :(得分:2)

Yes,您可以拥有多个事件侦听器,但是,使用多个属性是不正确的(请参阅我的评论)。

答案 1 :(得分:1)

Here是数字以太的一个很好的例子,说明如何正确连接多个处理程序,这些处理程序在符合标准的浏览器和IE中都有效:

/**
* Add events
* @param Object HTML Element
* @param string name of trigger
* @param string name of function to attach
* @param bool capture
*/
addEvent = function(el, evType, fn, useCapture) {
    if (el.addEventListener) {
        el.addEventListener(evType, fn, useCapture);
        return true;
    }
    else if (el.attachEvent) {
        var r = el.attachEvent('on' + evType, fn);
        return r;
    }
    else {
        el['on' + evType] = fn;
    }
}

答案 2 :(得分:0)

validator会告诉您它是否有效。我会告诉你,练习behavorial separation最好。

答案 3 :(得分:0)

我认为这是在某些浏览器中无效标记的情况。因此,应该考虑一些需要重构的代码。

正如Josh Stodola和David Dorward指出的那样,Element不能拥有相同属性的多个实例,W3C validator也会指出这一点。

然而,有些浏览器非常宽容,无论验证如何都能让事情发挥作用;但是,其他人不会,这些浏览器的用户会遇到问题。基本上,你会发现自己处于奇怪的边缘情况和不受支持的行为:很难保证它可以使用哪些浏览器(我在Firefox 3中尝试过类似你的代码片段但它失败了)因为它违反规范;并且,由于它违反了规范,因此无法保证您的事件将触发的订单,因此如果重要的话,您无法保证事件触发的顺序。

似乎有点清理有序。