火狐浏览器不支持showModalDialog(),但可以使用window.open()方法,属性中加上modal=yes,就可以实现和IE中showModalDialog()差不多的效果。
showModalDialog()可与父窗口相互传递数据,它与window.open的最大区别就在于由ShowModalDialog()打开子窗口后,父窗口将不能操作,例如:
returnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])...
window.open()方法在IE7和IE8上不能直接弹出一个子窗口,而是打开一个新的标签页。
showModalDialog() 弹出一个对话框,对话框是依附于打开它的那个窗口的;window.open() 是开一个新窗口,和打开它的那个窗口是独立的。
showModalDialog() 必须关闭才能操作打开它的那个窗口;而 window.open() 打开的窗口不必关闭也可以操作打开它的那个窗口。
这两者控制打开它的窗口方法也不一样:一个使用 dialogArguments,一个使用 opener。
-----------------------------------------------------------------------------------------------------------
问题:
把弹出子窗口的方法改成"window.showModalDialog",发现改完之后,子窗口里的任何功能都不能用了,后台程序突然取不到当前用户的ID,所以点击查询之类的功能的时候,要么报空指针异常,要么就弹出登录界面,要求重新登陆系统。。。
解释:
你的showModalDialog执行时,主窗口的所有代码都将停止运行,这时候如果试图对当前页面执行操作或想在后台自动刷新(以维持session不过期)都将失败。
模式对话框不建议使用,除非在必要的情况下。
--------------------------------------------------------------------------------------------------------------------------------
问题:
如何保证用户在退出系统时,所有的子窗口都关闭。
解释:
一种方法是每打开一个子窗口,都将该子窗口的引用赋给一个数组项,在主页面关闭时,遍历这个数组,将其中的所有子窗口都关闭。
第二种方法是让子窗口每隔一定时间(如1秒)利用其opener属性检查一次它的父窗口是否还在,如果父窗口关闭了,则子窗口调用window.close()方法将自身也关闭。
详细说明一下:
1. 首先定义一个数组,保存打开的子窗口的引用:
var childWindows = new Array();
2. 当打开一个新的子窗口时,将这个子窗口的引用添加到数组中。下面这句代码写到打开子窗口的函数中:
childWindows[childWindows.length] = window.open(......);
3. 在退出登录时,遍历这个数组,然后将其中的子窗口关闭。下面这段代码应该加到退出登录时的处理函数中:
for(i=0; i<childWindows.length; i++)
{
childWindows[i].close();
}
分享到:
相关推荐
window.showModalDialog以及window.open用法简介
NULL 博文链接:https://shawnfree.iteye.com/blog/598885
window.showModalDialog以及window.open用法简介
window.showModalDialog&&open.docx
ShowModalDialog函数的功能: 使用方法: 参数说明:
本文实例讲述了js的window.showModalDialog及window.open用法。分享给大家供大家参考。具体分析如下: 一、window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二、基本语法: window.open...
今天在项目中用到了弹出子窗口,就想到了用JavaScript实现的两种方法,一个是window.open();一个是window.showModalDialog()方法,后者是存在父子关系的一种弹出窗口,只有子窗关闭,父窗口才激活,并且可以传送参数...
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。 window.showModelessDialog()方法用来创建一个显示HTML内容的非模态
1> window.showModalDialog()采用JS原理实现,同时父窗口不可操作,window.open()采用新创建一个窗口,同时父窗口可操作; 2> 父窗口与子窗口传递值的方式也有所不同,在子窗口中操作父窗口也语法也不同,分别为var...
嗨,Kavita3,它是Chrome浏览器中的一个已知问题,您可以使用window.open();希望对您有用
showModalDialog和window.open
window.open()和window.showModalDialog(),并解决了showModalDialog()弹出窗口中列表分页的问题。 提供了三个JS方法: (1)showWindow(sURL, width, height); (2)showWindowInPage(pageUrl, params, title, ...
showModalDialog是jswindow对象的一个方法,和window.open一样都是打开一个新的页面。区别是:showModalDialog打开子窗口后,父窗口就不能获取焦点了(也就是无法操作了)。可以在子窗口中通过设置window.return...
程序没有改动过运行一直正常,突然... 代码如下: “[removed]window.showModalDialog(‘Info.aspx?bh=” + Server.UrlEncode(e.Row.Cells.FromKey(“编号”).Text.Trim()) + “‘,null,’dialogWidth:750px;dialogHeig
因为项目中使用showModalDialog函数的地方特别多,所以必须用一个类似方法实现功能,也就是window.open() 首先是判断子窗口关闭,因为项目是在子窗口关闭(确定按钮)的时候向父页面传递值的。
window.open 函数的操作 取出showModalDialog中传过来的数据对象 request.getParameterMap()相关的操作实例