【问题标题】:DART registerElementDART 寄存器元素
【发布时间】:2014-08-17 18:57:15
【问题描述】:

我正在使用 belo 注册在 DART 中尝试自定义元素,效果非常好。

document.registerElement(CustomElement.tag, CustomElement)

构建 pub 后,该文件在 Chrome 中运行良好,但在 Firefox 和 Internet Explorer 中无法运行。

我在 Firefox 中收到以下错误:

TypeError: $document.registerElement is not a function

在 Internet Explorer 中出现以下错误:

SCRIPT438: Object doesn't support property or method 'registerElement'

有什么想法!?

【问题讨论】:

    标签: dart


    【解决方案1】:

    您需要为不支持原生自定义元素的浏览器加载 polyfill。

    pubspec.yaml你需要

    dependencies:
      web_components: any
    

    并且在您的入口页面中,您需要一个类似的脚本标签

    <script src="packages/web_components/platform.js"></script>
    

    【讨论】:

    • 我会在回家后对其进行测试,但有疑问,我使用的是我自己的构建自定义元素,而不是弃用的 web_componenent 模型,此外,Chrome 一切运行顺利,我只是在办公室、两台设备上运行它,Chrome 的输出是完美的,但在其他浏览器中没有! Safari 在此处为所有站点显示白页,因此无法判断 Safari 是否像 Chrome 或其他一样工作。谢谢
    • 您似乎将web_componentweb_ui 混淆了。 Polymer 基于一组标准,如 Shadow DOM、自定义元素、HTML 导入。您只是在使用“自定义元素”部分(与其他部分一样)在几个浏览器中尚不支持(除了 Chrome,不确定 Firefox 中的状态)。 polyfill 将这个缺失的功能添加到尚未原生实现这些功能的浏览器中。有关详细信息,请参阅pub.dartlang.org/packages/web_components
    • Opera 的输出很完美,和 Chrome 一样!
    • 我从未使用过 Opera,但它似乎也支持自定义元素 dev.opera.com/blog/opera-20 (Opera 20 for Mac and Windows (based on Chromium 33) is out!)
    • 我喜欢添加这个注释,我刚刚发现适用于低于 4.4 的 Internet Explorer 和 Android webview 的“ " 应该在 "" 之前声明以顺利运行,对于firefox,2个代码的顺序并不重要。
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多