如何解决如何在另一个元素中使用 parseFromString 脚本输出
我有一个字符串包含一些来自 admin 的 HTML 标签,我想解析它并将其添加到我的页面。这些字符串可能包含一些具有 script
属性的 img
或 src
。但是我的浏览器由于某种原因不允许这些脚本呈现。
这种方法不起作用:
<!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 举报,一经查实,本站将立刻删除。