我有一个奇怪的问题,我在谷歌上找不到答案...我动态创建并在页面上用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在Safari中保持空白。似乎“内容()”没有得到很好的解释......
有什么想法吗?
答案 0 :(得分:2)
确保在可能触发之前附加load
事件处理程序,如下所示:
$('<iframe id="myiframe" name="myiframe" />')
.css({'height':'40px','width':'200px'})
.load(function() {
$(this).contents().find("body").html('greetings from the iframe !');
})
.appendTo('#container');
话虽如此,如果没有实际加载(您的框架没有load
),所有浏览器都会激活src
事件是必需可能遵循这里的规范,但仍然不一致。但是......对于load
和ready
事件,Safari总是有点“关闭”,因此使用上述方法将尽可能地帮助它。最后一点,.appendTo()
可以直接选择选择器;)