我對JavaScript很陌生,所以請原諒我的無知。組件返回失敗代碼:0x80070057(NS_ERROR_ILLEGAL_VALUE)[nsIDOMEventTarget.dispatchEvent]
我目前使用SWFAddress爲flex應用程序構建深層鏈接。問題是瀏覽器歷史記錄功能在IE9中不起作用。
我想解決這個問題,看來它不應該是一個困難的解決方案。
當調試Firefox中的腳本,我得到這個錯誤信息:
Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget.dispatchEvent]
this.dispatchEvent(new SWFAddressEvent(type));
這指向該位的代碼的罪魁禍首:
_dispatch = function(type) {
this.dispatchEvent(new SWFAddressEvent(type));
type = type.substr(0, 1).toUpperCase() + type.substr(1);
if(typeof this['on' + type] == FUNCTION)
this['on' + type]();
},
我已經確認並證實SWFAddressEvent對象正確實例化,沒有任何問題。
的問題似乎在於這裏:
this.dispatchEvent = function(event) {
console.log(event);
if (this.hasEventListener(event.type)) {
console.log(event);
event.target = this;
for (var i = 0, l; l = _listeners[event.type][i]; i++)
l(event);
return TRUE;
}
return FALSE;
};
似乎出於某種原因,dispatchEvent
不會收到所創建的SWFAddressEvent
。
有人可以解釋那個錯誤信息的含義嗎?爲什麼當頁面第一次加載時,它能夠正確地分派3個事件,但是當涉及派發更多事件時,它似乎失敗了?
幾個月前,我已經停止使用swfaddress和flash來開發豐富的web應用程序,所以我無法評論此修復是否可行。但是,我會將這個答案標記爲正確的。如果有人在未來有更好的答案,那麼我會將其標記爲正確:) – F21