0

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

4

0 回答 0