`

window.ShowModalDialog与window.open的区别

阅读更多
火狐浏览器不支持showModalDialog(),但可以使用window.open()方法,属性中加上modal=yes,就可以实现和IE中showModalDialog()差不多的效果。

showModalDialog()可与父窗口相互传递数据,它与window.open的最大区别就在于由ShowModalDialog()打开子窗口后,父窗口将不能操作,例如:
Js代码 
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. 首先定义一个数组,保存打开的子窗口的引用:
Js代码 
var childWindows = new Array(); 

2. 当打开一个新的子窗口时,将这个子窗口的引用添加到数组中。下面这句代码写到打开子窗口的函数中:
Js代码 
childWindows[childWindows.length] = window.open(......); 

3. 在退出登录时,遍历这个数组,然后将其中的子窗口关闭。下面这段代码应该加到退出登录时的处理函数中:
Js代码 
for(i=0; i<childWindows.length; i++) 

    childWindows[i].close(); 

分享到:
评论

相关推荐

    window.showModalDialog模式对话框和 window.open的区别

    `window.showModalDialog` 和 `window.open` 都是JavaScript提供的两种打开新窗口的方法,但它们在功能和使用场景上有着显著的区别。 首先,我们来详细探讨`window.showModalDialog`。`showModalDialog`方法用于...

    window.showModalDialog以及window.open用法简介

    Window.showModalDialog 和 Window.open 用法简介 Window.showModalDialog 和 Window.open 都是 JavaScript 中的方法,用于创建新窗口或对话框,下面分别介绍它们的用法和参数。 一、Window.open() 方法 Window....

    Window.ShowModalDialog使用手册

    在JavaScript编程语言中,`Window.showModalDialog()`方法是一个非常重要的功能,主要用于打开一个模态对话框,即用户必须关闭对话框才能与父窗口进行交互。这个方法在创建用户交互和自定义弹出窗口场景中非常有用。...

    父子窗口传值window.showModalDialog以及window.open用法简介

    window.showModalDialog以及window.open用法简介

    ShowModalDialog与window.open的区别

    ### ShowModalDialog与window.open的区别 #### 一、概述 在Web开发中,有时需要创建新的浏览器窗口或对话框来实现特定功能,如显示警告、输入数据等交互操作。JavaScript 提供了两种常用的方法来创建这类窗口:`...

    window.showModalDialog(javascript)

    【window.showModalDialog() 方法详解】 在Web开发中,JavaScript提供了两种对话框方式来与用户交互,即模态对话框和非模态对话框。本文将重点介绍模态对话框的使用方法`window.showModalDialog()`。 模态对话框是...

    window.showModalDialog方法的使用

    在JavaScript编程中,`window.showModalDialog`是一个用于打开模态对话框的函数,它能够创建一个新的浏览器窗口或者在当前窗口内显示一个弹出层,阻止用户与父窗口的交互,直到用户关闭对话框为止。这个方法在创建...

    'window.ShowModalDialog'在Chrome中不起作用

    `window.showModalDialog()` 是一个古老的JavaScript方法,用于在当前页面上打开一个模态对话框,该对话框阻止用户与页面其余部分进行交互,直到对话框被关闭。然而,这个功能在现代浏览器,特别是Google Chrome中...

    js的window.showModalDialog及window.open用法实例分析

    与`window.open`不同的是,`showModalDialog`创建的窗口是不可多任务的,用户必须先处理对话框,才能继续操作原页面。基本使用方法如下: ```javascript vReturnValue = window.showModalDialog(sURL [, vArguments...

    showModalDialog open弹出子窗口操作parent、opener父窗口及跨域处理

    1&gt; window.showModalDialog()采用JS原理实现,同时父窗口不可操作,window.open()采用新创建一个窗口,同时父窗口可操作; 2&gt; 父窗口与子窗口传递值的方式也有所不同,在子窗口中操作父窗口也语法也不同,分别为var...

    window.showModalDialog('d.html',fault,'');

    在这个例子中,`window.showModalDialog` 是用来显示一个模态窗口,用户必须与该窗口交互(关闭它)才能继续在主窗口中操作。我们来详细探讨这个知识点。 `window.showModalDialog` 是一个古老的浏览器内置函数,...

    浅谈JavaScript窗体Window.ShowModalDialog使用

    与`window.showModalDialog()`类似,`window.showModelessDialog()`方法创建的是非模态对话框,用户可以同时与对话框和主窗口交互。非模态对话框没有强制焦点,所以用户可以在打开对话框的同时进行其他操作。与模态...

    JavaScript中window.showModalDialog()用法详解

    今天在项目中用到了弹出子窗口,就想到了用JavaScript实现的两种方法,一个是window.open();一个是window.showModalDialog()方法,后者是存在父子关系的一种弹出窗口,只有子窗关闭,父窗口才激活,并且可以传送参数...

    showModalDialog和window.open

    ### showModalDialog和window.open在Web开发中的应用与区别 在Web开发中,`showModalDialog`和`window.open`是两种用于打开新窗口或对话框的方法,但它们各自有着独特的特性和应用场景。以下是对这两种方法的详细...

    使用selenium测试showModalDialog模态对话框

    这段代码首先定义了一个JavaScript字符串,用于重写 `showModalDialog` 方法,将其替换为 `window.open` 函数,这样对话框将以非模态窗口的形式打开,Selenium 就可以继续执行并选中这个新窗口。然后,代码模拟点击...

    showModalDialog模态对话框的使用详解以及浏览器兼容

    `showModalDialog`是JavaScript中`window`对象的一个方法,用于打开一个模态对话框,即新打开的窗口会阻止用户与父窗口的交互,直到该对话框被关闭。这与`window.open`方法不同,后者打开的新窗口并不会阻止用户在父...

    JS控制弹出页面窗口控件(openWin)

    window.open()和window.showModalDialog(),并解决了showModalDialog()弹出窗口中列表分页的问题。 提供了三个JS方法: (1)showWindow(sURL, width, height); (2)showWindowInPage(pageUrl, params, title, ...

Global site tag (gtag.js) - Google Analytics