求助,因浏览器版本引发的window.parent问题

ahufeng 2003-10-17 03:57:17
比较复杂,希望我的描述足够清楚。

有一个a.jsp,a.jsp中一个链接调用window.open打开一个新窗口,窗口内容是b.jsp。b.jsp有一个form,form的action是c.jsp,b.jsp中我隐藏了一个iframe,提交form的时候把submit的target设到那个隐藏的iframe。另外在b.jsp的form中有一个hidden的input,name是aaa,用来保存c.jsp处理后得到的一个变量。因为c.jsp是在iframe中运行的,所以我使用 window.parent.aaa.valeu="sss";给b.jsp中的input赋值。基本流程就是这样的。以上操作在IE6中没有问题,但是换成IE5就出现问题了,问题出在window.parent上,我在iframe的c.jsp中alert(window.parentlocation);,在IE6中alert的是b.jsp,而在IE5中alert的确实a.jsp。

不知道大家有没有遇到过这个问题,怎么解决呢?
...全文
194 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
laocai8 2003-11-20
  • 打赏
  • 举报
回复
<script language=javascript>
function doPrintPreview(){
var b=false;
var name=navigator.appName;
var ver=browser(navigator.appVersion);
if(name=="Microsoft Internet Explorer" && ver.indexOf("IE 6")>=0)
b=true;
if(b==false)
alert("你的浏览版本为"+ver+",不能打印预览!请先升级你的浏览器!");
else{
WB.ExecWB(7,2);
}
}
function browser(text){
if(text.indexOf("MSIE 5.5")>=0)
return "IE 5.5";
else if (text.indexOf("MSIE 6.0")>=0)
return "IE 6.0";
else if (text.indexOf("MSIE 5.01")>=0)
return "IE 5.01";
else if (text.indexOf("MSIE 5.0")>=0)
return "IE 5.00";
else if (text.indexOf("MSIE 4.0")>=0)
return "IE 4.01";
else
return "未知";

}
</script>
zhouguoyao 2003-10-17
  • 打赏
  • 举报
回复
判断浏览器banben
<script language=javascript>
function check()
{
var b=false;
name=navigator.appname;
ver=parseInt(navigator.appversion.substring(0,1));
if(name=="Microsoft Internet Expolorer" && ver>=6)
b=true;
if(b==false)
alert("不能浏览");
}
</script>
<body onload="check()">
slumcherry 2003-10-17
  • 打赏
  • 举报
回复
哦,你是要把iframe中的c.jsp 的最后的变量付给b.jsp中的aaa的value.
那么在c.jsp中这么写
parent.documnet.all.你的iframe的id.aaa.value="sss"
当然不对了.
在c.jsp中这么写试试:
parent.document.表单名.aaa.value="sss"
slumcherry 2003-10-17
  • 打赏
  • 举报
回复
我都晕了,

你在b.jsp里这么写:
document.表单名.aaa.value=window.frames[名字].最后的变量名
ahufeng 2003-10-17
  • 打赏
  • 举报
回复
aaa在b.jsp的form中,iframe在b.jsp中,c.jsp在iframe中。
唉,楼上的我早试过了,还是没用,确实够麻烦的。
slumcherry 2003-10-17
  • 打赏
  • 举报
回复
试试:parent.documnet.all.你的iframe的id.aaa.value="sss"
ahufeng 2003-10-17
  • 打赏
  • 举报
回复
错误提示,parent.aaa不是对象。
parent.location 还是a.jsp
slumcherry 2003-10-17
  • 打赏
  • 举报
回复
改成parent.aaa.value="sss"
alert(parent.location)
都不行?
ahufeng 2003-10-17
  • 打赏
  • 举报
回复
不好意思 ,window.parent.aaa.value="sss";
alert(window.parent.location);
都是笔误。

好象上面的方法都不对啊。
slumcherry 2003-10-17
  • 打赏
  • 举报
回复
parent.aaa.valeu="sss";

是你的笔误还是?????
是value!!!!
longshenwang 2003-10-17
  • 打赏
  • 举报
回复
二楼说的 是不是用self代替window阿??
ahufeng 2003-10-17
  • 打赏
  • 举报
回复
那我用什么办法才可以给b.jsp中的input赋值呢?
我去了 window 似乎没用。
slumcherry 2003-10-17
  • 打赏
  • 举报
回复
引用一段原文:

如果可见文档中的脚本需要引用对象或者框架集的window属性,则可以利用parent属性.然而,不要利用window对象,例如在window.parent.propertyName中,通过window对象来扩展引用,这在早期的浏览器中会出现问题.简而言之,parent属性违反了对象层次结构,因为对于单个的框架文档,属性指向一个优先级更高的层次.如果没有特别指定parent属性,但是在框架文档中指定了self属性,对象引用仅指向框架,而不是最外部的框架集window对象.
slumcherry 2003-10-17
  • 打赏
  • 举报
回复
window去掉试试

87,901

社区成员

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

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