HTML导入webcomponents polyfill在Firefox中不起作用

时间:2017-01-19 09:57:29

标签: web-component polyfills custom-element html-imports

我在示例应用中尝试使用webcomponents。由于某些浏览器中不包含某些规格,我尝试使用polyfill。在Mozilla firefox中,我尝试启用密钥dom.webcomponents.enabled并添加一些polyfill(不在浏览器中)。我使用了webcomponents.js polyfill中的HTML Import polyfill。

仍然HTMLImport在Firefox,Internet Explorer(甚至使用polyfill)中无效。 (https://github.com/webcomponents/webcomponentsjs

我也尝试过customElements v1 polyfill,而不是在Internet Explorer和firefox中工作。 (https://github.com/webcomponents/custom-elements

是否有人成功将HTMLimports polyfill与customElements V1 polyfill包括在一起?

1 个答案:

答案 0 :(得分:2)

在Firefox中使用包含HTML导入的自定义元素v1:

  1. 不要激活Firefox标记,因为实施已过时。
  2. 安装 webcomponentsjs (例如使用bower),并在主文件中仅包含Vue.component('ajaxbtns',{ template: ` <div class="tabs"> <ul> <slot></slot> </ul> </div> `, data : function () { return { allAjaxBtn : [] }; }, created: function () { this.allAjaxBtn = this.$children; } }); Vue.component('ajaxbtn',{ template: ` <li :class="{ 'is-active' : btnActive }"> <a @click="ajaxbtnClick(name)" href="#" >@{{ name }}</a> </li> `, props : { name: { required: true }, url : { required: true }, selected: { default : false } }, data :function () { return { btnActive : false } }, created: function () { this.btnActive = this.selected; }, methods : { ajaxbtnClick : function (name) { this.$parent.allAjaxBtn.forEach( btn => { this.btnActive = (btn.name == name); }); } } }); new Vue({ el: '#root' }); 文件。
  3. 安装自定义元素(来自您的链接)并包含在主文件htmlimports.min.js中。
  4. 您的主页应如下所示:

    custom-elements.min.js

    NB:对于第3步,您还可以使用document-register-element

    您无法直接在Internet Explorer中使用自定义元素v1 <head> <script src="htmlimports.min.js"></script> <script src="custom-elements.min.js"></script> <link rel="import" href="your-components.html"> </head> <body> <your-component></your-component> 语法,因为未实现class。您首先需要使用像Babel这样的转换器来转换源代码。

    或者,使用现代版本(Edge),或使用class语法。