为什么Opera中的document.attachEvent为false?

时间:2012-11-27 00:48:06

标签: javascript-events opera

这纯粹是一种令人费解的好奇心。

我知道Opera支持IE的高级事件模型(attachEvent),但为什么document.attachEvent在此浏览器中评估为false?

1 个答案:

答案 0 :(得分:3)

出于同样的原因,document.all除了IE之外在任何地方都有隐秘的存在:支持无条件使用它的网站,但是为了避免在有条件地检查它的网站上使用传统的仅IE代码路径(通常使用其他不支持的非标准IE事物)。这是在11.62中引入的,宣布here;值得注意的是,detachEventwindow.event也是隐藏的。

至于为什么Opera会这样做而其他人没有这样做:Opera历史上支持它而不隐藏它,虽然它被认为是完全删除它的理想,但Opera支持它的遗产实在太多了,不能让它变得可行,打破代码如:

function _aspxAttachEventToElement(element, eventName, func) {
 if(__aspxNetscapeFamily || __aspxWebKitFamily)
 element.addEventListener(eventName, func, true);
 else { if(eventName.toLowerCase().indexOf("on") != 0) eventName = "on" + eventName; element.attachEvent(eventName, func); }
 }

(来自DevExpress。)

if (d.opera)
    d.attachEvent("onmousewheel", j);
else
    d.onmousewheel = h.onmousewheel = j;

(来自krpano。)