3 回答
TA贡献1893条经验 获得超10个赞
经过一番研究,并得到了Mike的肯定回答,我发现这是一个解决方案:
var d = $("#someFrame")[0].contentWindow.document; // contentWindow works in IE7 and FF
d.open(); d.close(); // must open and close document object to start using it!
// now start doing normal jQuery:
$("body", d).append("<div>A</div><div>B</div><div>C</div>");
TA贡献1810条经验 获得超4个赞
我在这里四处走动,建议到目前为止提出的答案是不可能的。
如果此iframe实际上有一个src =“ somepage.html”(您应该已经指明,否则,使用iframe的意义是什么?),那么我认为Jquery不能在所有浏览器中直接跨框架操作html。 。根据我对这种事情的经验,包含页面无法直接从iframe页面调用函数或与iframe页面进行任何形式的Javascript联系。
您的“ somepage.html”(在iframe中加载的页面)需要做两件事:
将某种对象传递到可用作桥梁的包含页面
具有根据需要设置HTML的功能
因此,例如,somepage.html可能看起来像这样:
<html>
<head>
<script src="jquery.js">
</script>
<script language=JavaScript>
<!--//
var bridge={
setHtml:function(htm) {
document.body.innerHTML=htm;
}
}
$(function() { parent.setBridge(bridge); });
//--></script>
</head>
<body></body>
</html>
并且包含页面可能如下所示:
<html>
<head>
<script src="jquery.js">
</script>
<script language=JavaScript>
<!--//
var bridge;
var setBridge=function(br) {
bridge=br;
bridge.setHtml("<div>A</div><div>B</div><div>C</div>");
}
//-->
</script>
</head>
<body><iframe src="somepage.html"></iframe></body>
</html>
这可能看起来有些令人费解,但可以在多个方向进行调整,并且至少应在IE,FF,Chrome和Safari和Opera中起作用。
添加回答
举报