<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
对模板使用中断脚本标签(样式标签也可以使用这种方法正常工作)?