Содержимое iframe представляет собой текст, а не html-код

У меня проблема с iframe. Я добавил HTML-код (строка — я получаю этот код из БД) в <body> iframe, но я не вижу этот код как HTML, это просто строка.

document.getElementById("iframe_with_content").ready(function() {
        (document.getElementById("iframe_with_content").contentWindow.document).write("<%= post.text %>");
        (document.getElementById("iframe_with_content").contentWindow.document).close();
});

ошибка


person Denis Lapadatovic    schedule 17.09.2017    source источник


Ответы (2)


Включите jQuery на свою страницу и

var data = $('<textarea />').html("<%= post.text %>").text();
document.getElementById("iframe_with_content").ready(function() {
        (document.getElementById("iframe_with_content").contentWindow.document).write(data);
        (document.getElementById("iframe_with_content").contentWindow.document).close();
});

Объяснение: ваши данные, предоставленные <%= post.text %>, на самом деле были закодированы в html-entity-encoded. Так что на самом деле у вас есть что-то вроде sadasds&lt;i&gt;dasd....

person Ben    schedule 17.09.2017

Это может произойти из-за экранирования html, выполненного ejs, попробуйте и проверьте, работает ли это:

<%- post.text %>

См.: Как избежать HTML в представлении node.js EJS? < /а>

ВНИМАНИЕ: Будьте осторожны при использовании этих функций, проверьте XSS-атаки.

person Madhav Chaturvedi    schedule 17.09.2017