2013-08-30 61 views
2

我在iFrame中使用jQuery时遇到了问题。在iFrame中使用jQuery不起作用

这里是我的测试设置:

的index.html:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
<script type="text/javascript"> 

$(document).ready(function(){ 
    $("#A").contents().find('#B').addClass('Z');  
}); 

</script> 
</head> 
<body> 

<iframe id="A" src="test.html" style="width:700px; height: 1000px;" frameborder="0"></iframe> 

</body> 
</html> 

的test.html:

<html> 
<head> 
<title>test</title> 
</head> 
<body> 
<div id="B">testcontent</div> 
</body> 
</html> 

通常,当加载页面时,在源,应该添加“Z”作为一个类,但它不会。有没有人有一个想法可能是什么问题?这两个文件都在同一个(本地)文件夹中。

+0

这可能是加载的iframe的内容之前执行的功能。尝试做:$('iframe')。ready(function(){});取而代之,看看它的工作 –

+0

。在iframe上没有任何用处。 .load另一方面可能会有所帮助。 –

回答

3

您必须使用HTTP方案(http://https://)从网络服务器运行它。

使用文件方案(file://)可防止在某些浏览器中进行此类交叉帧访问。

7

试试这个

$("iframe").load(function(e){ 
    $(this).contents().find('#B').addClass('Z'); 
}); 
+0

这不起作用 – user63457

+2

更正:一旦在网络服务器上,这确实有用! – user63457