opera问题

ci1699 2012-03-15 11:48:23
我创建一个frame,写至当前的body了,然后
window.frames[name],但取不到这个frame。
alert(window.frames.length) 为0。


但我在取window.frames[name]的时候的前面随便加一个alert('test'); "延时"一下,window.frames[name]就能正常取得到。
这问题应该怎么解决? 头疼中,另,ie ff chrome 正常。
...全文
137 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ci1699 2012-03-15
  • 打赏
  • 举报
回复
刚试了Safari也正常,唯独Opera有问题。。。
ci1699 2012-03-15
  • 打赏
  • 举报
回复
嘿,你都在这里啊,有加载完成了。

[Quote=引用 5 楼 jordan102 的回复:]

页面没加载完吧。外面套个 window.onload=function(){} 试试。
[/Quote]


扣代码不容易,刚写了一个也是这样的情况。

莫非是Opera的BUG? 怎么解决,大牛们。


<!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">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=" />
<link href="" rel="stylesheet" type="text/css" />
</HEAD>

<script>
var G = function (id) {return document.getElementById(id); }
var C = function (tag) {return document.createElement(tag); }

window.onload = function ()
{
var f = C('frame');
f.name = 'mys';
f.id = 'mys';
f.src = 'about:blank';
G('content').appendChild(f);
// alert('开启这一行Opera就正常了');
window.frames['mys'].document.write('<div id="LoadingBlock">  Loading...<div id="loading"></div></div>');
}
</script>

<frameset id="content" rows="100%,*" cols="*" frameborder="no" border="0" framespacing="0">
</frameset>
</HTML>
一起混吧 2012-03-15
  • 打赏
  • 举报
回复
页面没加载完吧。外面套个 window.onload=function(){} 试试。
三石-gary 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ci1699 的回复:]

引用 1 楼 zsx841021 的回复:

写在哪了。。body里?


求解决,我搞了一上午了,调不好。
[/Quote]
上代码。。
ci1699 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zsx841021 的回复:]

写在哪了。。body里?
[/Quote]

求解决,我搞了一上午了,调不好。
ci1699 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zsx841021 的回复:]

写在哪了。。body里?
[/Quote]

应该是frameset,

没错,是写在frameset里。
三石-gary 2012-03-15
  • 打赏
  • 举报
回复
写在哪了。。body里?
daols 2012-03-15
  • 打赏
  • 举报
回复
那为啥不用 src="javascript: document.write(...
可以省一大片代码啊...= =!!
ci1699 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 daols 的回复:]

额...楼主怎么解决的???...能说说不..
[/Quote]

是拉,用setTimeout(function(){},0);
而且必须是这样写,setTimeout执行外面函数也不行,又码了重复的代码,郁闷。
daols 2012-03-15
  • 打赏
  • 举报
回复
额...楼主怎么解决的???...能说说不..
daols 2012-03-15
  • 打赏
  • 举报
回复
是有问题, opera-9.64~11.00全是, 其他没测...
错误控制台信息:
Event thread: load
Error:
name: TypeError
message: Statement on line 12: Cannot convert undefined or null to Object

意思是页面没有加载完毕找不到window.frames['mys']吧...加个setTimeOut试试...
或者换一种写法..Opera/firefox-8.3测试成功:
<html>
<head>
<title>
</title>
<meta http-equiv="Content-Type" content="text/html; charset=">
<link href="" rel="stylesheet" type="text/css">
</head>
<frameset id="content" rows="100%,*" cols="*" frameborder="no" border="0" framespacing="0">
<frame name="mys" id="mys" src="javascript: document.write('Loading...'); document.close();">
</frameset>
</html>
ci1699 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cssliuzhy 的回复:]

最后一行换成G('mys').document.write('<div id="LoadingBlock">&nbsp; Loading...<div id="loading"></div></div>');
[/Quote]

不行。问题已解决了。
痞子虫 2012-03-15
  • 打赏
  • 举报
回复
最后一行换成G('mys').document.write('<div id="LoadingBlock">  Loading...<div id="loading"></div></div>');

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧