我有一個WebForms的頁面,其包括MicrosoftAjax.debug.js(4.1.7.123),其爲腳本資源:對象[對象全球]無方法「的attachEvent」
// Name: MicrosoftAjax.debug.js
// Assembly: AjaxControlToolkit
// Version: 4.1.7.123
// FileVersion: 4.1.7.
// (c) 2010 CodePlex Foundation
在負載該腳本自所調用最終調用這個函數:
var attachEvent = !!document.attachEvent;
...
function listenOnce(target, name, ieName, callback, isReadyState, isScript) {
function onEvent() {
if (!attachEvent || !isReadyState || /loaded|complete/.test(target.readyState)) {
if (attachEvent) {
target.detachEvent(ieName || ("on" + name), onEvent);
}
else {
target.removeEventListener(name, onEvent, false);
if (isScript) {
target.removeEventListener("error", onEvent, false);
}
}
callback.apply(target);
target = null;
}
}
if (attachEvent) {
target.attachEvent(ieName || ("on" + name), onEvent);
}
else {
if (target.addEventListener) {
target.addEventListener(name, onEvent, false);
}
if (isScript) {
target.addEventListener("error", onEvent, false);
}
}
}
的問題是,在Chrome中,我發現了以下JavaScript錯誤:
遺漏的類型錯誤:對象[對象全球]有沒有方法「的attachEvent」
在下面一行:
target.attachEvent(ieName || ("on" + name), onEvent);
附加調試,target
是窗口對象,正如你所期望沒有在Chrome中attachEvent()
方法。
document.attachEvent()
如下功能:
function (sType, fHandler) {
var shortTypeName = sType.replace(/on/, "");
fHandler._ieEmuEventHandler = function (e) {
window.event = e;
return fHandler();
};
this.addEventListener(shortTypeName, fHandler._ieEmuEventHandler, false);
}
這是微軟的Ajax腳本錯誤?鉻?或者是由頁面上的某些條件引起的?
無論哪種方式,我該如何解決它?
什麼是'document.attachEvent'? (在控制檯中) – SLaks
那麼,Chrome沒有'attachEvent',這是一個IE方法。所以問題是,爲什麼'!! document.attachEvent'似乎評估爲'true'? –
我已經更新了關於document.attachEvent的問題 –