Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 动态创建的iframe不适用于Safari_Jquery_Iframe_Safari - Fatal编程技术网

Jquery 动态创建的iframe不适用于Safari

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"&

我有一个奇怪的问题,我在谷歌上找不到答案。。。我在页面上使用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">
<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(…)
甚至还没有机会运行,因此,即使它装配了一个处理程序在该事件发生时运行,该事件已经发生了,有意义吗?