问题描述
我有一个字符串包含一些来自 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 (将#修改为@)