模板标签innerHTML打破了脚本标签

时间:2016-02-19 19:29:21

标签: javascript html5 html5-template

我正在尝试通过包含<tr>元素的HTML解析器运行HTML字符串。使用普通的HTML解析器,<tr>元素将消失,因为您无法在<table>元素之外创建它们。所以我尝试使用<template>元素并使用innerHTML,因为模板标签没有相同的限制,可以很好地创建<tr>元素。这非常有效,我能够很好地创建元素。

var html = '<tr><td>foo</td></tr><tr><td>bar</td></tr>';
var template = document.createElement('template');
template.innerHTML = html;
document.body.appendChild(template.content);

但是,稍后我尝试使用<script>标记而不是表行执行相同的操作,但是当模板添加到正文时,脚本标记不会运行。

var html = '<script>alert("hello");</script>';
var template = document.createElement('template');
template.innerHTML = html;
document.body.appendChild(template.content);  // doesn't execute the script

但是,如果我能够创建一个脚本标记并将其附加到模板,那么它将起作用。

var template = document.createElement('template');
var script = document.createElement('script');
script.textContent = 'alert("hello");';
template.content.appendChild(script);
document.body.appendChild(template.content);  // does execute the script

有谁知道为什么使用innerHTML打破模板的脚本标签(样式标签也可以使用此方法正常工作)?

0 个答案:

没有答案