【发布时间】:2017-08-05 14:49:46
【问题描述】:
我尝试在 Chrome 扩展内容脚本中创建自定义元素,但 customElements.define 是 null。
customElements.define('customElement', class extends HTMLElement {
constructor() {
super();
}
...
});
显然 Chrome 不希望内容脚本创建自定义元素。但为什么?是否存在安全风险?
我似乎在 Chrome 的扩展程序指南中找不到任何说明不允许这样做的内容。
【问题讨论】:
-
它可以在普通页面上使用吗?
-
@DanielHerr 是的,我实际上是在“测试”页面中构建元素。无需重新加载扩展程序即可更轻松地进行调试。当我将它全部移到扩展程序中时,它出错了。
-
我同意这是一个疏忽。扩展需要受到主机页面 CSS 的保护。 Shadow DOM 是实现此目的的方法,但是将 Shadow DOM 封装在自定义元素中似乎是一种很好的编程习惯。自 2014 年以来一直是一个问题:bugs.chromium.org/p/chromium/issues/detail?id=390807 我假设开发人员有一些棘手的数学来协调扩展与自定义元素,所以如果现在还没有发生,那就不会发生。
标签: google-chrome google-chrome-extension