showModalDialog是IE的语法

时间:2021-08-06 07:48:30

看了些文章,实现模式窗口有两种方法。window.showModalDialog以及window.open。

一、方法介绍

window.open()撑持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+

showModalDialog() (IE 4+ 撑持)
showModelessDialog() (IE 5+ 撑持)
window.showModalDialog()要领用来创建一个显示HTML内容的模态对话框。
window.showModelessDialog()要领用来创建一个显示HTML内容的非模态对话框。

由此可见,showModalDialog是IE的语法,其他浏览器并不撑持。showModalDialog很好用,但是由于这个原因,有些需要撑持多种浏览器客户真个情况就不能使用这个要领。

二、window.open()根基语法:
window.open(pageURL,name,parameters) 
此中:
pageURL 为子窗口路径 
name 为子窗口句柄 
parameters 为窗口参数(各参数用逗号分隔断绝分手)

三、实现模式窗口

有文章说parameters 中有一个参数modal=yes(dialog=yes效果一样),如果设定即为模式窗口。但是经笔者测试,增加这个参数,只是使弹出的窗口的最大化按钮为不成用,只是和不加该参数的独一区别。此时,同样可以操纵父窗口。这并不是我想要的模式窗口,我想要的是子窗口弹出后,在子窗口不*的情况下是不能操纵父窗口的。最后发明很简单的一句话就可以完成这个成果,在body中插手 onBlur="window.focus();" 即可。

但是这样还是有问题的,子窗口的任何输入操纵都是不被允许的,只有按钮可以点击。

改削一下:

var result= window.open("URL","window","width=600px,height=400px, modal=yes,status=no");

window.onfocus=function (){result.focus();};
      window.onclick=function (){result.focus();};

这样可以在点击父窗口的时候,将焦点赋予子窗口。      

还有一个更好的通用的步伐。

引用:真正能够解决Dialog问题的方案只有一个,,那就是Float Iframe,用Iframe取代Window.open(),用DIV来做遮罩,控制模态。而且,这样做还有此外一个好处,那就是措置惩罚惩罚窗口间的关系变得异常容易。用户也不容易ganjue到本身被打扰了——因为你可以让Iframe加载完成时再显示出来,甚至可以加上一些特效,使得Iframe的浮出越发柔和自然。

四、操纵父窗口参数

弹出窗口中:   
    
  <script>   
  window.onload=function(){   
  opener.document.all.obj.value=返回的值   
  }   
  </script>