Я хотел бы создать веб-компоненты, которые должны работать на ie11. Я собираю js с gulp (и gulp-babel, который включает в себя babel 7).
К настоящему времени, когда я компилирую с Babel, он работает в Chrome, но отправляет ошибку в ie11: Function.prototype.toString: 'this' is not a Function object
.
В gulpfile.js у меня есть это:
.pipe(babel({
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": [
"Chrome >= 52",
"FireFox >= 44",
"Safari >= 7",
"Explorer 11",
"last 4 Edge versions"
]
}
}]
]
}))
В js у меня есть что-то вроде этого (пример кода, который я нашел в сети для тестирования):
class MyCustomTag extends HTMLElement {
connectedCallback() {
this.innerHTML = '<h2>My custom element</h2><button>click me</button>';
this.style.backgroundColor = 'blue';
this.style.padding = '20 px';
this.style.display = 'inline-block';
this.style.color = 'white';
}
}
try {
customElements.define('my-custom-tag', MyCustomTag)
} catch (err) {
const h3 = document.createElement('h3')
h3.innerHTML = "This site uses webcomponents which don't work in all browsers! Try this site in a browser that supports them!"
document.body.appendChild(h3)
}
Конечно, я добавил <my-custom-tag></my-custom-tag>
в HTML.
Ошибка генерируется чем-то, сгенерированным Babel, когда в коде присутствует "extends HTMLElement" (Babel генерирует что-то вроде "_.isNative", который использует Function.prototype.Tostring, если я хорошо помню - извините, я в данный момент включен другой компьютер)
Я уверен, что упускаю что-то глупое, но я не могу найти ответ на эту ошибку. Я пытался добавить @ babel / plugin-transform-classes, babel-plugin-transform-builtin-classes, но ничего не работает, и это сводит меня с ума.
Есть идеи?