`
ddh9504
  • 浏览: 111929 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

真正的用window.open()代替window.showModalDialog()

阅读更多

模式窗口太过于局限性,所以我研究了一个完全可以用window.open()代替window.showModalDialog()的方法,其资料贴在了下面:

 

有两个页面,一个是调用页面---main.html,一个是被调用页面---modalWindow.html

main.html

--------------------------------------------------------------------------------------------------------------------------------------------

click here


 <script>
  
 newWin=null;
  
function abc()
{
newWin =window.open('modalWindow.html','newWin','height=200,width=400,top=200,left=200,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no,status=no');
 
  
}

 

window.onfocus=function (){  

 if(newWin){
  if(!newWin.closed)
   newWin.focus();
  
 } 
 
};

window.document.onfocus=function (){  


 if(newWin){
  if(!newWin.closed)
 newWin.focus();
  
 } 
 
};

 

window.document.onclick=function (){  


 if(newWin){
  if(!newWin.closed)
 newWin.focus();
  
 } 
 
};

window.document.ondblclick=function (){  


 if(newWin){
  if(!newWin.closed)
 newWin.focus();
  
 } 
 
};

</script>

 

----------------------------------------------------------------------------------------------------------------------------------

modalWindow.html

------------------------------------------------------------------------------------------------------------------------------------

sub window!!!!



 

在这个页面modalWindow.html中的方法可以调用父窗口的方法

其用法是 opener.functionName(param);

 

 


分享到:
评论
15 楼 icefire 2008-05-23  
今天也在搞这问题,最后还是放弃open()
"兼容FF,IE等多种浏览器"
你不想想,标签浏览时,恐怕很多时候open()无法满足效果吧!
要兼容的话,那还是只有div来遮盖吧!
14 楼 ddh9504 2007-10-09  
为了兼容FF,IE等多种浏览器,我觉得这种方案有必要的,还有,用IFRAME或者DIV也可以实现,这点不可否认。但技术的替代不能抹杀另一种技术的存在,谢谢!!!
13 楼 ddh9504 2007-09-29  
hunter_z 写道
能不能说一下,你为什么有这种需求?
老兄,用open()代替showModalDialog()是有这个需求的,你现在没有用到,以后可能会用到,这也不是算钻牛角吧,应该是对技术一种狂热,说不定还有高手能给出更合理的解决方案呢,我拭目以待.....
12 楼 InnocentBoy 2007-09-26  
我也遇见过这个中问题,有些元素在showmodaldialog里不支持,比如WEBBrower打印,但是在window.open()里就支持!
11 楼 D-tune 2007-09-26  
在目前用div来替代模态对话框以前,很多企业应用webAPP的场合,绝大部分都采用了modalDialog,lz的观点从何而来,好处在什么地方?
10 楼 liangwj72 2007-09-25  
不会吧,我见到更多的讨论是如何用showModalDialog() 代替open()...
9 楼 oooooo 2007-09-22  
open后再给原窗口加层遮罩
8 楼 pazu 2007-09-22  
open() 不可能代替 showModalDialog()
这样做是钻死胡同牛角尖.
唯一方法:可以通过iframe或DIV在同一个Window实现


http://www.laputac.com/tech/
7 楼 afcn0 2007-09-20  
可以看一下,我以前写的一个使用html弄出来的modaldialog, http://hi.baidu.com/afcn007/blog/item/fe05e91bbfa774d7ad6e7515.html 有2个button,函数当中传入2个function当参数
6 楼 jellyme 2007-09-20  
这种模拟是不会成功的。。。

你可以试试快速点击父窗口,JS响应速度没那么快,很容易就点出问题了。

真正能够解决Dialog问题的方案只有一个,那就是Float Iframe,用Iframe代替Window.open(),用DIV来做遮罩,控制模态。而且,这样做还有另外一个好处,那就是处理窗口间的关系变得异常容易。用户也不容易ganjue到自己被打扰了——因为你可以让Iframe加载完成时再显示出来,甚至可以加上一些特效,使得Iframe的浮出更加柔和自然。
5 楼 marky 2007-09-18  
学习..
4 楼 LucasLee 2007-09-18  
而且还有一种情况是比较容易忽略的,不知道你考虑没有:
父窗口弹出模态窗口A,A再弹出模态窗口B,如此多级模态窗口,关闭窗口也只能反向一层层关闭。
3 楼 birdjavaeye 2007-09-17  
一种思路吧:因为要阻止原窗口响应各种事件,可以把所有的事件回调都解除绑定,modal窗口关闭后再恢复;或者利用某些框架性代码,代理事件回调,代理时判断是否有modal窗口存在...
2 楼 ddh9504 2007-09-17  
哦,谢谢,请问楼上的朋友,这样的情况该怎么处理呢,请多指教.....
1 楼 birdjavaeye 2007-09-15  
我还没试过,但初步判断这样不够,因为window.onfocus=..等方式是bubble的,被点击的实际元素如果有onclick就先处理了,不能真正等同于modal

相关推荐

    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....

    ShowModalDialog与window.open的区别

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

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

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

    Window.ShowModalDialog使用手册

    开发者更倾向于使用`window.open()`配合`display: none`的CSS和JavaScript来模拟模态对话框,或者使用Bootstrap、jQuery UI等库提供的模态插件。 总的来说,虽然`Window.showModalDialog()`在某些场景下仍可能有其...

    showModalDialog和window.open

    ### showModalDialog和window.open在Web开发...在现代Web开发中,由于`showModalDialog`的限制和不兼容性,更推荐使用`window.open`或寻找更现代的替代方案,如使用`&lt;dialog&gt;`元素结合CSS和JavaScript实现模态对话框。

    window.showModalDialog(javascript)

    在其他浏览器中,如Firefox、Chrome和Safari,可能需要使用其他方法,如`window.open()`,配合CSS和JavaScript来实现类似的效果。 - 模态对话框可能会对用户体验造成影响,因为它会阻塞用户的交互,因此在现代Web...

    window.showModalDialog方法的使用

    因此,在开发过程中,更推荐使用`window.open`配合`display: none`的CSS来实现类似的效果,或者使用现代前端框架(如Bootstrap的模态组件)来创建模态对话框。 为了提高跨浏览器兼容性和用户体验,可以考虑以下替代...

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

    JavaScript中的`window.showModalDialog`和`window.open`都是用于打开新窗口的方法,但它们有着不同的特性和用途。 首先,`window.open`方法是JavaScript中最常见的打开新窗口的方式,它适用于所有的主流浏览器,如...

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

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

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

    描述中提到的解决方案是使用 `window.open()` 方法来替代 `showModalDialog()`. `window.open()` 可以创建一个新的浏览器窗口或者打开一个已经存在的窗口,并且可以设置新窗口的各种属性,如位置、大小、是否显示...

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

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

    js实现window.open不被拦截的解决方法汇总

    文章中提到了几种实现 `window.open()` 方法不被浏览器拦截的解决方法,其中包括新建 `a` 标签模拟点击、使用 `window.showModalDialog()` 方法和使用 `setTimeout()` 与 `window.open()` 结合的方式。 1. 新建 `a`...

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

    描述中的链接指向了博客文章,虽然具体内容未给出,但可以推测文章可能详细介绍了 `showModalDialog` 的使用、优缺点以及替代方案,因为这个函数在现代 Web 开发中已逐渐被弃用,主要原因包括不兼容性(尤其是在某些...

    window.open 函数的操作

    本篇内容详细介绍了 `window.open` 函数的基本用法及其在实际开发中的应用场景,同时探讨了如何从 `showModalDialog` 中获取数据对象的方法,以及 `request.getParameterMap()` 在处理 HTTP 请求参数时的具体使用。...

    浅谈JavaScript窗体Window.ShowModalDialog使用

    `window.showModalDialog()`的基本使用方法如下: ```javascript vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) ``` 参数解释如下: 1. `sURL`(必需):字符串类型,用于指定...

Global site tag (gtag.js) - Google Analytics