Javascript 为什么';t浏览器运行a<;脚本>;在通过fetch API检索的HTML片段中?

Javascript 为什么';t浏览器运行a<;脚本>;在通过fetch API检索的HTML片段中?,javascript,fetch,Javascript,Fetch,我正在尝试使用FetchAPI获取HTML片段,然后将其添加到HTML页面。虽然这对HTML内容很有效,但我注意到,如果我在片段中放入标记,标记不会被剥离,但也不会被执行 下面是一个例子。我希望警报会触发,但它不会,即使脚本标签出现在页面上 我的问题是:(1)为什么没有得到评估,(2)有没有办法让它评估 index.html 因为这就是 使用innerHTML插入的脚本元素在插入时不会执行 插入 我在这里做一些假设,但可能是为了引入一层安全性,这样您就不会意外地引入XSS或 如果要运行脚本,请

我正在尝试使用FetchAPI获取HTML片段,然后将其添加到HTML页面。虽然这对HTML内容很有效,但我注意到,如果我在片段中放入
标记,标记不会被剥离,但也不会被执行

下面是一个例子。我希望
警报
会触发,但它不会,即使脚本标签出现在页面上

我的问题是:(1)为什么
没有得到评估,(2)有没有办法让它评估

index.html 因为这就是

使用innerHTML插入的脚本元素在插入时不会执行 插入

我在这里做一些假设,但可能是为了引入一层安全性,这样您就不会意外地引入XSS或


如果要运行脚本,请获取其内容,创建特定的
元素,将脚本主体设置为内容,然后将其插入DOM:

const script=document.createElement(“脚本”),
text=document.createTextNode(“console.log('foo')”);
script.appendChild(文本);

document.body.appendChild(脚本)因为脚本仅在加载页面时执行。您可以使用
$(elm).html(str)
而不是
elm.innerHTML=str以运行此类内容。
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Index</title>
  </head>
  <body>
    <script src="main.js"></script>
  </body>
</html>
<h1>Hello</h1>
<p>It works</p>
<script>
  alert('hello') // doesn't work, but script still appears on page
</script>
fetch('fragment.html').then((res)=>{
  return res.text()
}).then((data)=>{
  var div = document.createElement('div')
  div.innerHTML = data
  document.body.appendChild(div)
})