2016-08-02 11 views
3

언제든지 추가하거나 변경할 수있는 HTML 태그 문자열이 있습니다.JavaScript를 사용하여 HTML을 iframe에로드하는 경우

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

HTML 파일처럼 런타임에 해당 문자열을 Iframe에로드 할 수 있습니까?

이것은 Construct 2를위한 것입니다. URL에서 벌금을로드 할 수있는 오브젝트가 있으며, HTML을 삽입하고 스크립트를 실행할 수도 있지만 그대로는 아닙니다.

+0

데이터 유실이 가능합니다. 가능합니다. –

+0

불행히도 스크립트로 입력 할 수있는 편집기로 제한되어 있으므로 javascript가 작동하지 않는 것처럼 보입니다. 올바른 형식의 문자열이 아닌 문자열을 추가 할 수 있습니다. –

답변

0

: 코드 조각은 사용자의 요구를 충족 몇 가지 임대 옵션.

통해 srcdoc (asyncronous) : 비아

iframe.srcdoc = html; 

데이터 URI (asyncronous) :

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

(syncronous, 정말 오래된 브라우저에서 작동) document.write 통해 :

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

Data URI으로 (see browser support) 가능합니다. 설명 된대로 형식은 당신이 탈출되지 않을 수 있습니다 특정 문자가 없다면 당신은 base64로 필요하지 않을 수도 있습니다

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

당신의 문자열을 인코딩입니다. 가,

https://jsfiddle.net/erk1e3fg/

0

물론 예는 다음과 바이올린을 참조하십시오 당신은

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

와 함께 할 수

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>