【转】window.showModelessDialog的改进(兼容FF的window.showModelessDialog)
来源:互联网 发布:辐射4 超低配置优化 编辑:程序博客网 时间:2024/04/30 05:48
window.showModelessDialog的改进
文/Hafeyang 出处/博客园
window.showModelessDialog方法比window.open方法弹出的窗口不同的是弹出的窗口是模态的,这样必须关闭子窗口后才能操作父窗口.遗憾的是只有IE的支持,下面的方法能让FireFox"支持"模态窗口弹出
这种方法的灵感来自于上面的CuteEditor,弹出的窗口是模态的,在FF下是在window上写一个click方法,只要点击父窗口就调用子窗口的focus()方法,这样看上去就是"模态"的了
- var userAgent = navigator.userAgent.toLowerCase();
- var isFireFox=/mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent);
- if(isFireFox)
- {
- window.showModelessDialog=function (url)
- {
- var windowName=(arguments[1]==null?"":arguments[1].toString());
- var feature=(arguments[2]==null?"":arguments[2].toString());
- var OpenedWindow=window.open(url,windowName,feature);
- window.addEventListener('click',function (){OpenedWindow.focus();},false);
- return OpenedWindow;
- }
- }
- else
- {
- //子窗口中调用父窗口
- //IE中用window.parent.document
- //FF中用window.opener.document
- //下面的代码将 作用于IE '重载' window.showModelessDialog 方法 统一用 window.opener访问父窗口
- var originFn=window.showModelessDialog;
- window.showModelessDialog=function (url)
- {
- var OpenedWindow= originFn(url,arguments[1],arguments[2]);
- OpenedWindow.opener=window;
- }
- }
- function popW()
- {
- var OpenedWindow=window.showModelessDialog('popWindow2.html','','width=400,height=400');
- }
说破了其实很简单,只是在下面的重写IE中的showModelessDialog方法就有点技巧了,originFn竟然可以"记住"原有的showModelessDialog方法,并且能这样调用,在我的试探中都有些吃惊.
通过上面的改造,showModelessDialog显得好用多了,兼容了两种浏览器.
- 【转】window.showModelessDialog的改进(兼容FF的window.showModelessDialog)
- window.showModelessDialog()
- window.open、window.showModalDialog和window.showModelessDialog 的区别
- window.open、window.showModalDialog和window.showModelessDialog 的区别
- window.open、window.showModalDialog和window.showModelessDialog 的区别
- window.showModelessDialog 窗口设置标题的javascript
- 弹出窗口window.showModelessDialog的参数
- window.showModalDialog() window.showModelessDialog()
- 弹出窗口(window.showModelessDialog)
- window.showModelessDialog传值
- window.showModalDialog() and window.showModelessDialog()
- window.showModalDialog()、window.showModelessDialog() 相关
- window.showModelessDialog和window.open
- window.opener showModelessDialog showModalDialog 获取|控制父窗体的区别
- window.opener showModelessDialog showModalDialog 获取|控制父窗体的区别
- 用 window.showModelessDialog时应该注意的一些事情
- 弹出窗口的命令总结 window.open window.alert window.comfirm window.prompt window.showModalDialog window.showModelessDialog
- window.showModelessDialog 之间传值
- Shibboleth 2 IDP安装(windows xp)
- 新的挑战
- 实现中空窗口
- 清明梦的理论探索
- sql update 多表更新
- 【转】window.showModelessDialog的改进(兼容FF的window.showModelessDialog)
- js的submit()方法详解
- 在命令提示符处启动 Windows XP 安装程序
- 如何将 FAT 或 FAT32 卷转换为 NTFS
- 用当前进程关闭系统
- 关于一个RFT构建路径不正确导致回放无法启动的解决方法
- Symbian OS中的消息存储与常用操作
- 哈佛校长给2008届本科毕业生的毕业演讲
- 异常类的printStackTrace()方法