FF中关于document.write()的BUG

yugong2009 2010-01-11 04:10:49

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>document.writeln in firefox</title>
<script type="text/javascript"language="javascript">
var strFrame;
document.writeln('<iframe id="meizzDateLayer" name="meizzDateLayer" frameborder=0 style="position: absolute; width: 144; height: 260; z-index: 9998;"></iframe>');
strFrame = "<div>asdfsaf</div>"

window.frames.meizzDateLayer.document.writeln(strFrame);

</script>
</head>

<body>

</body>
</html>

此代码在IE下能正常运行,但在FF下,总是报错window.frames.meizzDateLayer is undefined
似乎iframe没有成功写入
我测试过在FF下用document.writeln("<div></div>")都是可以的写入的,请大侠指点!
...全文
345 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yugong2009 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 blackparadise 的回复:]
这种应该会有加载顺序上的问题
把这个写到iframe的onload事件里吧
[/Quote]

确实就是这个问题,我刚才有FireBug断点调了下,执行到window.frames.meizzDateLayer.document.writeln(strFrame);
时,HTML中是空的,即iframe对象还没有成功载入
blackparadise 2010-01-11
  • 打赏
  • 举报
回复
这种应该会有加载顺序上的问题
把这个写到iframe的onload事件里吧
2010-01-11
  • 打赏
  • 举报
回复
write 的时候document还没加载

把<script>块放到body中
或者window.frames.meizzDateLayer.document.writeln(strFrame);放到window.onload函数里
草根醉秋意 2010-01-11
  • 打赏
  • 举报
回复
document.getElementById("meizzDateLayer").contentWindow.onload = function(){
document.getElementById("meizzDateLayer").contentDocument.write("test");
}
happy002 2010-01-11
  • 打赏
  • 举报
回复
会不会是没加载完?或者执行顺序问题?
你把window.frames.meizzDateLayer.document.writeln(strFrame)放在一个函数里,在页面上放一个按钮调用试试,看还报不报这个错误。或者在上面加个alert(),
yugong2009 2010-01-11
  • 打赏
  • 举报
回复
我刚才用FireBug查看了下,iframe已经写到了document中,
那会不会是加载的顺序问题呢——在iframe对象还没加载完,就开始执行下面的语句?
yugong2009 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 free_wind22 的回复:]
JScript code
document.getElementById("meizzDateLayer").contentWindow.document.writeln(strFrame);
[/Quote]

这样,会报document.getElementById("meizzDateLayer") is null
是不是iframe根本就不存在呀?
yugong2009 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happy002 的回复:]
ff下用
window.frames['meizzDateLayer']
试试
[/Quote]
试过,还是报同样的错!
2010-01-11
  • 打赏
  • 举报
回复

document.getElementById("meizzDateLayer").contentWindow.document.writeln(strFrame);

happy002 2010-01-11
  • 打赏
  • 举报
回复
ff下用
window.frames['meizzDateLayer']
试试
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2010-01-11 04:10
社区公告
暂无公告