我正在使用 webcomponents.js 来填充 Firefox 对 Web 组件的支持。
通过 HTML 导入加载 HTML 模板时,一旦将基于模板的自定义元素添加到主页的 DOM 中,模板中的脚本就不会执行。
它在 Chrome 中运行网站时会执行(支持原生 Web 组件)。
但是,当模板放置在主页本身中时,Firefox 和 Chrome 都会执行此类脚本。
请参阅HTML5Rocks的 Eric Bidelmann 的示例。这可以在 Chrome 和 Firefox 中运行(通过 webcomponents.js)——只要模板位于同一个 HTML 文件中。
<!DOCTYPE html>
<html>
<body>
<button onclick="useIt()">Use me</button>
<div id="container"></div>
<script>
function useIt() {
var content = document.querySelector('template').content;
// Update something in the template DOM.
var span = content.querySelector('span');
span.textContent = parseInt(span.textContent) + 1;
document.querySelector('#container').appendChild(
document.importNode(content, true));
}
</script>
<template>
<div>Template used: <span>0</span></div>
<script>alert('Thanks!')</script>
</template>
</body>
</html>
但是,当模板文本显示时,它不会在通过 HTML 导入链接加载模板及其内容时运行。如前所述,它会加载内容,但不会在 Firefox 中执行脚本。
这是 webcomponents.js 中的错误,还是 Firefox 中的错误?任何人都有解决方法的好主意(“使用 Polymer 或 Angular”除外)?
注意 - 这是基于使用 Firefox 43 和 Chrome 47。