【问题标题】:Why can't you create Custom Elements in content scripts?为什么不能在内容脚本中创建自定义元素?
【发布时间】:2017-08-05 14:49:46
【问题描述】:

我尝试在 Chrome 扩展内容脚本中创建自定义元素,但 customElements.definenull

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


【解决方案1】:

截至目前,custom element 可以在 chrome 扩展 UI 中使用。在 Popup ui、选项页面 ui 和内容脚本中,但它需要一个 polyfill,即thishttps://github.com/GoogleChromeLabs/ProjectVisBug - 这是 chrome 扩展中的一大自定义元素。

【讨论】:

猜你喜欢
  • 2014-03-07
  • 2014-10-18
  • 2014-05-27
  • 2017-04-21
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
相关资源
最近更新 更多