window.open实现模式窗⼝
看了些⽂章,实现模式窗⼝有两种⽅式。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)
onblur和blur的区别其中:
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");
这样可以在点击⽗窗⼝的时候,将焦点赋予⼦窗⼝。
还有⼀个更好的通⽤的办法。
引⽤:真正能够解决Dialog问题的⽅案只有⼀个,那就是Float Iframe,⽤Iframe代替Window.open(),⽤DIV来做遮罩,控制模态。⽽且,这样做还有另外⼀个好处,那就是处理窗⼝间的关系变得异常容易。⽤户也不容易ganjue到⾃⼰被打扰了——因为你可以让Iframe加载完成时再显⽰出来,甚⾄可以加上⼀些特效,使得Iframe的浮出更加柔和⾃然。
四、操作⽗窗⼝参数
弹出窗⼝中:
<script>
opener.document.all.obj.value=返回的值
}
</script>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论