2011-09-26 73 views
2

我無法覆蓋表單元素的onsubmit事件。我沒有問題,添加監聽與addEventListener,但對於我的具體情況,我需要更換的的onsubmit但由於某些原因,當我這樣做,它給了我這個錯誤:Firefox擴展無法覆蓋元素事件

Error: Component is not available = NS_ERROR_NOT_AVAILABLE 

我的代碼只是這個:

gBrowser.contentDocument.getElementById("theform").onsubmit = function() { 
    return false; 
}; 

本質上我想阻止表單提交,但此代碼失敗並引發上述錯誤。使用addEventListener返回false似乎不會阻止提交表單。

謝謝。

回答

1

出於安全原因,getElementById在擴展中返回的對象是圍繞DOM元素的XPCNativeWrapper;它不是元素本身。這導致一些重要的限制。更多細節在這裏:

Assigning to or reading an on* property on an XPCNativeWrapper of a DOM node or Window object will throw an exception. (Use addEventListener instead, and use "event.preventDefault();" in your handler if you used "return false;" before.)

+0

超! 'event.preventDefault()'工作。謝謝一堆。 –