0

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

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

4

1 回答 1

3

出于与除 IE 之外的任何地方都隐秘存在相同的原因document.all:支持无条件使用它的网站,但避免在有条件地检查它的网站上使用遗留的仅 IE 代码路径(通常使用其他非标准的 IE 东西)支持)。这是在 11.62 中引入的,在这里宣布;似乎值得注意的是detachEvent并且window.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。)

于 2012-11-27T01:12:45.573 回答