• 《转》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>

  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/wangxiuhui/p/3860319.html
Copyright © 2020-2023  润新知