Firefox扩展无法覆盖元素事件

时间:2011-09-26 23:53:20

标签: javascript firefox firefox-addon

我在尝试覆盖表单元素的onsubmit事件时遇到问题。添加addEventListener的监听器没有问题,但对于我的特定情况,我需要替换 onsubmit,但出于某种原因,当我这样做时,它会给我这个错误:

Error: Component is not available = NS_ERROR_NOT_AVAILABLE

我的代码就是这样:

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

基本上我想阻止表单提交,但是这段代码失败并引发上述错误。使用addEventListener返回false似乎并未阻止表单提交。

感谢。

1 个答案:

答案 0 :(得分:1)

出于安全原因,getElementById在扩展中返回的对象是围绕DOM元素的XPCNativeWrapper;它不是元素本身。这导致一些重要的限制。更多细节在这里:

  

在DOM节点或Window对象的XPCNativeWrapper上分配或读取on *属性将引发异常。 (改为使用addEventListener,如果之前使用了“return false;”,则在处理程序中使用“event.preventDefault();”。)