IE的模态对话框里的问题还真是不少

简介:

 模态对话框(Modal Dialog),是一种会block顺序执行程序的窗口,比如C#里的MessageBox.Show(this,...),JavaScript里的alert(...)、confirm(...)等,是我们最常见的模态对话框。不关闭这种对话框程序的当前线程就被一直挂起了,这种窗口的特性最适合用来做条件分支的判断提示和Wizard窗口。

    在IE里面,我们可以通过window对象的showModalDialog方法十分方便的开启一个模态对话框。可是这个从IE4.0就开始支持的feature,居然还有一堆一堆的问题:( 比如:点超级链接或Submit按钮会开启新窗口啊,不能使用F5刷新啊,拿不到模态窗口的opener啊,等等。不过这些老问题绕来绕去都还算是被解决了。剩下的什么怎么在模态窗口间传出传入参数啊,怎么执行其opener里的方法啊,怎么关闭啊,就属于没有好好看msdn和对DHTML的不熟悉了。

    今天一不小心又发现一个模态对话框让人抓狂的问题,不能在里面使用XMLHTTP对象获取服务器数据,一调用就立刻返回空字符串。搞了半天找不到原因,于是啰里啰唆的把模态对话框的父窗口传到对话框内,把调用XMLHTTP对象的程序从模态窗口里原样移到父窗口里,从模态窗口去调父窗口里的方法,结果一下就取到服务器上的数据了emdgust.gif。到这里我还以为找到模态对话框的bug了,回家后决定把这个bug再研究一下,结果却很顺利的从模态窗口里调用XMLHTTP对象获得了服务器上的数据emangry.gif。真是郁闷!!!

    明天再找个机器来试试,看看到底还有没有问题。

    如果你对JS也感兴趣,不妨也来试验一下,看看到底是我机器环境本身的原因,还是这是一个不确定的bug。

    测试代码如下:

None.gif < html >
None.gif     < head >
None.gif         < title >Caller </ title >
None.gif     </ head >
None.gif     < body >
None.gif         < button  onclick ="OpenDialog()" >Open Dialog
None.gif     </ button >
ExpandedBlockStart.gif         < script  language ="javascript" >
InBlock.gif        
function OpenDialog()
ExpandedSubBlockStart.gif        
{
InBlock.gif            
var dlg = window.showModalDialog('Callee.htm');
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif        
</ script >
None.gif     </ body >
None.gif </ html >
None.gif

    存为:Caller.htm

None.gif < html >
None.gif     < head >
None.gif         < title >Callee </ title >
None.gif     </ head >
None.gif     < body >
None.gif         < table  border ="0"  width ="100%"  height ="100%" >
None.gif             < tr >
None.gif                 < td  align ="center"  valign ="middle" >
None.gif                     < button  onclick ="GetData()"  ID ="Button1" >Open Dialog
None.gif                     </ button ></ td >
None.gif             </ tr >
None.gif         </ table >
ExpandedBlockStart.gif         < script  language ="javascript" >
InBlock.gif        
function GetData()
ExpandedSubBlockStart.gif        
{
InBlock.gif            
var url = 'http://www.google.com';
InBlock.gif
            __XmlHttpPool__.GetRemoteData(url, alert);
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif        
</ script >
ContractedBlock.gif         < script  language ="javascript" > dot.gif </ script >
None.gif     </ body >
None.gif </ html > None.gif

    存为:Callee.htm 

    欢迎回复您的实验结果,同时也欢迎讨论模态窗口的其它问题及解决方法。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。  

目录
相关文章
|
容器
IE中ocx控件的无模式对话框不接收方向键等键盘消息的问题的解决办法
在ocx控件中如果含有无模式对话框,那么当ocx在ie中显示时,往往接收不到 诸如tab,方向键和退格键。所有这些消息都被IE容器给截取了,对于这个问题,ms给出了解决方法: 首先:   int CMyActiveXCtrl::OnCreate(LPCREATESTRUCT lpCreateStru...
1080 0
|
JavaScript Windows 前端开发
showModalDialog以及IE7 对话框样式
window.showModalDialog(URL,dialogArgments.features) 打开一个新窗口 URL为要开启的网页名字。 dialogArgments为设定好传递给新视窗网页的参数,可以为任意数据类型。 feature 与open()的类似,都是格式方面的设定。调用格式为featureName1:featureValue1:(分号)featureName2:featu
1215 0
|
6月前
|
Web App开发 前端开发 JavaScript
|
1月前
|
存储 机器人
在阿里云RPA中,你可以通过以下步骤来更改默认唤醒IE浏览器的地址
【2月更文挑战第28天】在阿里云RPA中,你可以通过以下步骤来更改默认唤醒IE浏览器的地址
20 1
|
7月前
|
Web App开发 XML 编解码
IE浏览器下载文件中文文件名乱码问题解决
IE浏览器下载文件中文文件名乱码问题解决
84 0
|
4月前
|
Web App开发 JavaScript 前端开发
JavaScript在IE和标准浏览器下的兼容性处理
JavaScript在IE和标准浏览器下的兼容性处理
41 0
|
5月前
|
前端开发
border-radius 兼容 IE8浏览器
border-radius 兼容 IE8浏览器
40 1
|
5月前
|
Web App开发 移动开发 安全
IE浏览器,和Edge浏览器
IE浏览器,和Edge浏览器