2012-08-29 110 views
1

这个问题似乎只发生在铬 这是iframe的代码访问IFRAME功能

<!DOCTYPE html> 
<html> 
<head> 
    <script> 
    function blahblah() { alert("test"); } 
    </script> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title>Test Page</title> 
</head> 
<body> 

    <p> lalalalallalala!!! </p> 

</body> 
</html> 

这是我创建的iframe

<iframe src="iframetest.html" id="iframetest"></iframe> 

然后我打电话iframe的blahblah( )功能:

$('#iframetest')[0].contentWindow.blahblah() 

但是这不起作用

+0

你有没有尝试过'$( '#iframetest')contentWindow.blahblah()'? (注意,缺少'[0]') – freefaller

+0

你什么时候调用函数?你确定iframe已经被加载了吗? –

+0

它的加载,因为我可以通过铬的控制台看到它 我没有尝试[0] – user1307863

回答

2

这工作:我用$(window).load确保了iframe

<iframe id=iframetest src=iframetest.html></iframe> 
    <script> 
     $(window).load(function(){ 
     document.getElementById('iframetest').contentWindow.blahblah(); 
     }); 
    </script> 

注意加载。在document上使用load将无法​​确保加载iframe。

当然,您的iframe必须具有与父文档相同的来源(这也意味着您必须在浏览器中打开http://而不是file://)。

编辑:Working demo

+0

仍然不适合我在铬上工作。 虽然它在IE上工作.. – user1307863

+0

我在Chrome上测试过它。你确定你使用$(window).load?两个HTML文件是否都是相同的来源? –

+0

请注意,您必须在http://中打开文件,而不是文件:// –