如何在另一个元素中使用 parseFromString 脚本输出

问题描述

我有一个字符串包含一些来自 admin 的 HTML 标签,我想解析它并将其添加到我的页面。这些字符串可能包含一些具有 script 属性的 imgsrc。但是我的浏览器由于某种原因不允许这些脚本呈现。

这种方法不起作用:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <title>Hello Carnival</title>
</head>

<body id="body">
  <div id="adsParentDiv"></div>

<script>
  var adsDoc = new DOMParser().parseFromString("<script src='SOMETHING_HERE'></sc"+"ript>","text/html");
  var adsEl = adsDoc.getElementsByTagName("script")[0];
  document.getElementById("adsParentDiv").appendChild(adsEl);
  // you can use https://embed.bannerboo.com/b293b1619335f?responsive=1 instead of SOMETHING_HERE for test 
</script>
</body>

</html>

该脚本在我的 Mozilla firefox 浏览器中不起作用并显示为灰色。

虽然这种方法确实有效:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <title>Hello Carnival</title>
</head>

<body id="body">
<div id="adsParentDiv"></div>

<script>
  var my_awesome_script = document.createElement('script');
  var adsDoc = new DOMParser().parseFromString("<script src='SOMETHING_HERE'></sc"+"ript>","text/html");
  var scriptTag = adsDoc.getElementsByTagName("script")[0];
  my_awesome_script.setAttribute('src',scriptTag.getAttribute("src"));
  document.getElementById("adsParentDiv").appendChild(my_awesome_script);
  // you can use https://embed.bannerboo.com/b293b1619335f?responsive=1 instead of SOMETHING_HERE for test 
</script>
</body>

</html>

但我不能使用它,因为我说过管理员可以上传带有 img 标签的字符串,甚至是单个 div

1- 我想用任何标签解析管理 HTML 输入并强制浏览器运行它。
2-我想知道为什么第一种方法有效,而第二种方法无效。是否因为安全原因被阻止?这是什么原因?

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...