2012-07-26 49 views
1

我试图创建iframe,然后添加脚本,脚本将运行。创建了iframe,但在将脚本附加到该iframe的过程中始终会出现错误。请帮忙。如何创建iframe,然后使用jQuery将javascript附加到它?

<div align="center" id="adframe1"> 
<script type="text/javascript"> 
var response1 = '<script>var ad_unit="123";</scr'+'ipt><script src="http://abc.com/abc.js"></scr'+'ipt>'; 
$('<iframe id="adframe1mopub"/>').appendTo('#adframe1'); 
$('#adframe1mopub').ready(function() { 
$('#adframe1mopub').contents().find('body').append(response1); 
}); 
</script> 
</div> 
+0

你能否详细说明“总是会出错”?什么错误? – jbabey 2012-07-26 13:15:24

+0

什么是错误?听起来你正在尝试做某些因安全原因而不允许的事情。我相信你不能操纵iframe上的脚本来处理XSS问题。 – 2012-07-26 13:16:04

+0

将JavaScript代码放入iframe而不是直接执行它的意义何在? – kgautron 2012-07-26 13:16:35

回答

3

你可以试试这个脚本:

HTML:

​<div id=container-iframe>​</div>​​​​​​​ 

JS:

var response1 = '<script>var ad_unit="123";</scr' + 'ipt><script src="http://abc.com/abc.js"></scr' + 'ipt>'; 

$('<iframe></iframe>', { id: 'adframe1mopub' }).bind('load', function(event) { 

    if (!this.contentWindow) { 
     return; 
    } 

    this.contentWindow.document.body.innerHTML += response1; 

}).appendTo('#container-iframe'); 

但是,这将是实现这个最好的方法:

$('<iframe></iframe>', { id: 'myiframe' }).bind('load', function(event) { 

    if (!this.contentWindow) { 
     return; 
    } 

    var scripWidthCode = document.createElement('script'); 
    scripWidthCode.type ='text/javascript'; 
    scripWidthCode.innerText = 'var ad_unit="123";'; 

    this.contentWindow.document.getElementsByTagName('head')[0].appendChild(scripWidthCode); 

    var scripWidthSrc = document.createElement('script'); 
    scripWidthSrc.type ='text/javascript'; 
    scripWidthSrc.src = 'http://abc.com/abc.js'; 

    this.contentWindow.document.getElementsByTagName('head')[0].appendChild(scripWidthSrc); 

}).appendTo('#container-iframe'); 

test

相关问题