#javascript #html #dom #browser #script-tag
Вопрос:
У меня есть строка, содержащая некоторые 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 — Я хочу знать, почему первый подход работает, а второй-нет. Заблокирован ли он по соображениям безопасности? Что это за причина?
Заранее спасибо.