2016-08-02 7 views
3

У меня есть строка HTML-тегов, которую я могу добавить или изменить, когда захочу.Загрузка строки, если HTML в iframe с использованием JavaScript

"<html><body><script language="javascript" src=""></script></body></html>" 

Можно ли загрузить эту строку во время выполнения в iframe, как если бы это был файл HTML?

Это для Construct 2. У меня есть объект, который может загружать HTML из URL-адреса, он также может вставлять HTML и запускать скрипты, но не как есть.

+0

Да с данными uri, это возможно. –

+0

К сожалению, похоже, что javascript не будет работать, так как я ограничен редактором тем, что могу внести в скрипт. Я могу добавить строки, просто не правильно отформатированные строки. –

ответ

0

Вы можете сделать это с

document.getElementById('iframe').src = "data:text/html;charset=utf-8," + escape(html); 

Смотрите следующую скрипку для примера

https://jsfiddle.net/erk1e3fg/

1

С Data URI, (see browser support) это возможно. Формат, как описано в

data:[<mime type>][;charset=<charset>][;base64],<encoded data>. 

Вы, возможно, не нужно base64 кодировать строку, если у вас есть определенные символы, которые не могут быть экранированы. Отрывок удовлетворяющих требований:

var iframe = document.getElementById('iframe'), 
 
    htmlStr = "<html><body><h1>Hell World</h1></body></html>"; 
 
iframe.src = 'data:text/html,'+htmlStr;
<iframe id="iframe" src="blank:"></iframe>

0

Конечно, есть пара отличий варианты аренды.

Via srcdoc (асинхронный):

iframe.srcdoc = html; 

Через данные URI (асинхронный):

iframe.src = 'data:text/html;charset=utf-8,' + escape(html); 

Via document.write (Синхронный, и работает в очень старых браузерах):

var idoc = iframe.contentWindow.document; 
idoc.write(html); 
idoc.close(); 

 Смежные вопросы

  • Нет связанных вопросов^_^