我正在重新编写JSP中的一些html,我注意到代码有一个按钮的多个onmouseup属性。
这是有效的HTML,它似乎有效,但它有效吗?
答案 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中尝试过类似你的代码片段但它失败了)因为它违反规范;并且,由于它违反了规范,因此无法保证您的事件将触发的订单,因此如果重要的话,您无法保证事件触发的顺序。
似乎有点清理有序。