У меня были проблемы с ошибками на importHref в Polymer (polymer-2) в edge и safari. При начальной загрузке я получаю целый ряд ошибок, таких как ..
SCRIPT5022: пользовательский элемент с именем 'dom-bind' уже был
определены. webcomponents-lite.js (168 225)
SCRIPT5022: пользовательский элемент с именем 'dom-repeat' уже был
определены. webcomponents-lite.js (168 225)
SCRIPT5022: пользовательский элемент с именем 'dom-if' уже был
определены. webcomponents-lite.js (168 225)
SCRIPT5022: пользовательский элемент с именем 'array-selector' уже
был определен. webcomponents-lite.js (168 225)
SCRIPT5022: пользовательский элемент с именем iron-location уже
был определен. webcomponents-lite.js (168 225)
SCRIPT5022: пользовательский элемент с именем «iron-query-params» имеет
уже определено.
..
Побочным результатом этого является то, что ни один из железных значков на моем сайте не загружается, за исключением того, что сайт загружается нормально и функционирует.
Интересно, что если я просто обновлю страницу, все ошибки исчезнут, и железные значки будут отображаться правильно.
Мой сайт построен с использованием следующих компонентов Polymer.json
.
{
"entrypoint": "src/index.html",
"shell": "src/my-app/my-app.html",
"fragments": [
"src/my-view/my-view.html"
],
"sources": [
"src/images/*"
],
"extraDependencies": [
],
"lint": {
"rules": ["polymer-2"]
},
"builds": [{
"name": "myapp",
"preset": "es5-bundled",
"bundle": {
"inlineCss":false,
"inlineScripts":true,
"stripComments":true
}
}]
}
index.html
<script src="webcomponentsjs/webcomponents-loader.js" defer></script>
<script>
// Load webcomponentsjs polyfill if browser does not support native Web Components
(function() {
//'use strict';
var onload = function() {
console.log("webcomponents supported.");
if (!window.HTMLImports) {
console.log("dispatch event webcomponents ready");
document.dispatchEvent(
new CustomEvent('WebComponentsReady', {
bubbles: true
})
);
}
};
var webComponentsSupported = (
'registerElement' in document &&
'import' in document.createElement('link') &&
'content' in document.createElement('template')
);
if (!webComponentsSupported) {
console.log("BROWSER DOES NOT SUPPORT WEB COMPONENTS");
console.log(" = LOADING POLYFILL");
window.Polymer = {
dom: 'shadow',
lazyRegister: true
};
} else {
var esa = document.createElement('script');
esa.src = '/webcomponentsjs/custom-elements-es5-adapter.js';
esa.onload = function() {
console.log('on load custom elements es5');
}
document.head.appendChild(esa);
}
})();
</script>
- Тогда, если я попытаюсь импортировать my-view, как показано ниже, я получу ошибки ..
Polymer.importHref (this.resolveUrl ('../ my-view / my-view.html'), null,
null, true);
Неважно, какой полимерный файл я пытаюсь импортировать, он всегда выдает одну и ту же ошибку, даже если в my-view нет импорта. Я неправильно использую фрагменты? Или любая идея, почему это происходит.
Проблема не воспроизводится, если я просто связываю свой вид непосредственно с
и при этом он не воспроизводится в Chrome, поэтому кажется, что проблема с полифилами в веб-компонентах