微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 使用ES6的webcomponents-lite在IE 11和10中不起作用

我们正在使用带有ES6语法的WebComponents.

WebComponents polyfill webcomponents-lite.js(不包括ShadowDOM)在IE 11中不起作用,而webcomponents.js(包括ShadowDOM)工作正常.对于我们的项目用例,我们希望在没有ShadowDOM的情况下使用“custom-elements”.

如果我们使用webcomponents-lite.js,则会在IE中引发错误 – SCRIPT5022:抛出异常但未捕获.

有没有可用的解决方法

编辑:我试图在IE与webcomponents-lite.js运行的代码

HTML:< super-button>< / super-button>

JS(ES6格式):

class SuperBtn extends HTMLElement {
  constructor() {
      super();
  }
  createdCallback() {
      this.innerHTML = "Invoke Ultron!";
      this.addEventListener('click',() => alert(this.textContent + ' has been clicked'));
    }
}

document.registerElement("super-button",SuperBtn);

解决方法

是的,您可以使用原始原型表示法声明自定义元素v1.

这适用于来自Web Reflection的another polyfill

var CEo = function ()
{
    console.log( "created" )
    return Reflect.construct( HTMLElement,[],CEo )
}

CEo.prototype = Object.create( HTMLElement.prototype )
CEo.prototype.constructor = CEo

CEo.prototype.connectedCallback = function ()
{
    console.log( "connected" )
    this.innerHTML = "Hello v1"
} 

customElements.define( "object-v1",CEo )

注意:您需要使用像the one of Babel这样的polyfill来获取Reflect.construct方法.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐