2011-10-19 33 views
1

我對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個事件,但是當涉及派發更多事件時,它似乎失敗了?

回答

0

在我看來,這個問題是在參考this:所以這不是SWFAddress,但Window這部分是在事件處理程序執行

this.dispatchEvent(new SWFAddressEvent(type)); 

我用SWFAddress.dispatchEvent(new SWFAddressEvent(type));替換它,並修復它 - 懸停我不是JS專家。

前三個事件的生成方式不同於創建NS_ERROR_ILLEGAL_VALUE的事件。

+0

幾個月前,我已經停止使用swfaddress和flash來開發豐富的web應用程序,所以我無法評論此修復是否可行。但是,我會將這個答案標記爲正確的。如果有人在未來有更好的答案,那麼我會將其標記爲正確:) – F21

相關問題