怎样用JAVASCRIPT非模态对话框里对父框架进行控制?
框架如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN ">
<html>
<head>
<TITLE> OA.NET </TITLE>
<META HTTP-EQUIV= "Content-Type " CONTENT= "text/html; charset=gb2312 ">
<meta name= "GENERATOR " content= "Microsoft Visual Studio .NET 7.1 ">
<meta content= "http://schemas.microsoft.com/intellisense/ie5 " name= "vs_targetSchema ">
</head>
<frameset rows= "75,73%,37 " border= "0 " frameSpacing= "0 " frameBorder= "0 ">
<frame name= "header " src= "Frame_Top.aspx " scrolling= "no " noresize frameborder= "0 ">
<frameset cols= "180,* " frameborder= "0 " border= "0 " framespacing= "0 ">
<frame name= "contents " src= "Frame_Left.aspx " frameborder= "0 " scrolling= "auto " marginheight= "0 "
framespacing= "0 ">
<frame name= "main " src= " " frameborder= "NO " SCROLLING= "auto ">
</frameset>
<frame name= "footer " src= "Frame_Buttom.aspx " scrolling= "no " noresize framespacing= "0 " frameborder= "0 ">
<noframes>
<pre id= "p2 ">
================================================================
关于完成此“页眉-页脚-内容”框架集的说明
1. 为“header”框架添加 src= " " 页的 URL。
2. 为“contents”框架添加 src= " " 页的 URL。
3. 为“main”框架添加 src= " " 页的 URL。
4. 为“footer”框架添加 src= " " 页的 URL。
5. 将 BASE target= "contents " 元素添加到“header”页的
HEAD,以将“contents”设置为默认框架,“header”页的链接将
在该框架中显示其他页。
6. 将 BASE target= "contents " 元素添加到“contents”页的
HEAD,以将“main”设置为默认框架,“contents”页的链接将
在该框架中显示其他页。
7. 将 BASE target= "contents " 元素添加到“footer”页的
HEAD,以将“contents”设置为默认框架,“footer”页的链接将
在该框架中显示其他页。
================================================================
</pre>
<p id= "p1 ">
此 HTML 框架集显示多个 Web 页。若要查看此框架集,请使用支持 HTML 4.0 及更高版本的 Web 浏览器。
</p>
</noframes>
</frameset>
</html>
怎样用JAVASCRIPT非模态对话框里对父框架进行控制?比如我要在框架右窗口里刷新页面:
window.parent.parent.frames( "main ").location.href= "../Mailbox/HarvestMail/Detail.aspx?ID= "+currID+ "&ts= "+Math.random();
这样写好象不行?请教各位高手
[解决办法]
那样肯定不行的。首先你要找到打开你的页面,才可以进行你上面的代码。给LZ一个思路吧:
在打开窗口的时候,把Window作为参数传到模式对话框里,然后在模式对话框中,对这个
Window进行控制就可以了
IE中非模式对话框(showModelessDialog)应用
非模式对话框是IE的一种窗口形式,打开非模式对话框后,在其被关闭之前,主调窗口不会继续解析其后的htm代码,同时主调窗口也不会被选中。
主调窗口与非模式窗口的信息传递
1.函数调用传递方式
vReturnValue = window.showModelessDialog ( sURL [, vArguments] [, sFeatures] )
主调窗口通过showModelessDialog方法的第二个参数 vArguments 向非模式窗口传递参数,该参数可以是数组,也可以是DOM对象。
非模式窗口通过window.dialogArguments 来提取传递过来的参数,若是数组,则用window.dialogArguments[i]来表示数组的第i个参数
非模式窗口通过window.returnValue向主调窗口传回值,这个值作为showModelessDialog 方法的返回值被主调窗口接收。
2.窗口操作传递方式
非模式窗口通过主调窗口传递过来window对象直接操纵主调窗口的元素
此时showModelessDialog 需要将主调窗口的 window 对象作为参数传出,在非模式窗口中即可取得主调窗口的窗口参考,用脚本可以直接对它操纵。
如主调窗口的调用代码如下:
showModelessDialog ( "myDialog.htm ",window, "status:false;dialogWidth:300px;dialogHeight:300px;edge:Raised; status: No ");
非模式窗口JScript代码如下,即可接收主调窗口的窗口对象
var sData = window.dialogArguments;
接着就可以操作主调窗口的任意变量和函数了,如下:
sData.sUserName = ‘Value from ModelessDialog’; // sUserName是主调窗口的全局变量
sData.fnUpdate(); //fnUpdate是主调窗口的函数,在该函数中对sUserName变量做处理
这种方式下,主调窗口可以不通过普通返回值方式取得非模式窗口设定的数值
备注:
将主调窗口的Window对象传入非模式窗口是一种很灵活的操作手段。但在实践中发现,窗口对象只能是主调窗口自己的,你不能通过Dom对象结构,将其他帧页面(非主调窗口)的Window对象传入。但在非模窗口中可以根据传入的主调窗口的Window对象,通过Dom对象结构引用到非主调窗口的任何对象。
