我正在尝试在 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/