javascript - Firefox 扩展中的 __defineGetter__ 未定义

标签 javascript firefox firefox-addon xpcom

我正在尝试在 Firefox 扩展中的 XUL iframe 上定义 Getter:

// iframe is an XUL iframe element
iframe.contentDocument.defaultView.HTMLElement.prototype.__defineGetter__("node", function () {
    return this.nodeName;
});

我可以访问iframe.contentDocument.defaultView.HTMLElement.prototype,但__defineGetter__未定义。

Object.defineProperty 可以工作,但这需要为创建的每个元素定义它。

有没有办法使用HTMLElement.prototype.__defineGetter__?为什么__defineGetter__未定义?

最佳答案

Object.defineProperty works but this requires to define it for each element created.

不,您刚刚在原型(prototype)对象上定义了属性:

Object.defineProperty(
  iframe.contentDocument.defaultView.HTMLElement.prototype,
  node,
  ...
);

Why is __defineGetter__ undefined?

正如您在 MDN documenation 中所读到的那样, __defineGetter__ 不是 ECMAScript 的标准功能。此外,HTMLElement 是一个宿主对象,不必遵守规范。

<小时/>

这是一篇较旧的文章,但仍然值得一读:What's wrong with extending the DOM

关于javascript - Firefox 扩展中的 __defineGetter__ 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24330978/

相关文章:

javascript - Firefox 中的 Jquery 选择器

javascript - Firefox Addon MySql 连接

内联代码的 Javascript 垃圾收集

javascript - 利用 d3 在 SVG 内渲染foreignObject 失败

firefox - 如何将我的 WAMP 本地主机从 Firefox 移动到 chrome?

javascript - 按住箭头键时,如何在 Firefox 中获取自动重复的按键事件?

javascript - Chrome 扩展中的 API 调用需要按两次按钮

javascript - 如何在表单上实现城市/州字段的自动完成?

javascript - 如何开发 Firefox 插件,将选项卡添加到 Firefox native 开发人员工具(不是 firebug)

firefox - webRequest 目标中是否可以有多个 URL