Jquery 动态创建的iframe不适用于Safari
我有一个奇怪的问题,我在谷歌上找不到答案。。。我在页面上使用jquery动态创建并填充iframe。它可以与FF和IE配合使用,但与Safari不配合 iframe已创建但为空(缺少消息“来自iframe的问候语!”)。 下面是一段代码来说明这一点:Jquery 动态创建的iframe不适用于Safari,jquery,iframe,safari,Jquery,Iframe,Safari,我有一个奇怪的问题,我在谷歌上找不到答案。。。我在页面上使用jquery动态创建并填充iframe。它可以与FF和IE配合使用,但与Safari不配合 iframe已创建但为空(缺少消息“来自iframe的问候语!”)。 下面是一段代码来说明这一点: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr" lang="fr-fr" >
<head>
<title>iframe</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var jFrame = $('<iframe id="myiframe" name="myiframe">');
jFrame.css({'height':'40px','width':'200px'}).appendTo($('#container'));
$('#myiframe').load(function() {
jFrame.contents().find("body").html('greetings from the iframe !');
});
});
</script>
</head>
<body>
<div id="container"></div>
</body>
</html>
iframe
$(文档).ready(函数(){
var jFrame=$('');
css({'height':'40px','width':'200px'});
$('#myiframe').load(函数(){
jFrame.contents().find(“body”).html(“来自iframe的问候语”);
});
});
我真想知道为什么Safari的iframe是空的。似乎如果“contents()”没有得到很好的解释
有什么想法吗?请确保在触发事件处理程序之前连接
load
事件处理程序,如下所示:
$('<iframe id="myiframe" name="myiframe" />')
.css({'height':'40px','width':'200px'})
.load(function() {
$(this).contents().find("body").html('greetings from the iframe !');
})
.appendTo('#container');
$(“”)
.css({'height':'40px','width':'200px'})
.load(函数(){
$(this.contents().find(“body”).html('iframe的问候语!');
})
.appendTo(“#container”);
也就是说,如果没有实际加载(您的帧没有
src
),我不确定是否需要触发load
事件,所有浏览器可能都遵循这里的规范,但仍然不一致。但是……Safari在load
和ready
事件中总是有点“关闭”,因此使用上述方法将尽可能帮助实现这一点。最后一个注意事项是,可以直接使用选择器;) 亲爱的尼克,谢谢你的回答,效果很好!我是jQuery的新手,我真的不明白为什么我的代码不能像你的一样工作。是关于同步/异步的吗?再次感谢大家,,mhammout@mhammout-问题是,load
事件在您将其插入DOM时立即激发,而您的.load(…)
甚至还没有机会运行,因此,即使它装配了一个处理程序在该事件发生时运行,该事件已经发生了,有意义吗?