2011-09-26 61 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()'工作。谢谢一堆。 –