zoukankan      html  css  js  c++  java
  • 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) 
    其中:
    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>

  • 相关阅读:
    使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务
    聊聊高并发系统之限流特技
    Java程序员 必须掌握的 20+ 种 Spring 常用注解
    这20个核心技术,作为Java开发程序员,你一定要掌握
    40K刚面完Java岗,这些技术必须掌握
    Java 5,6,7,8,9,10,11新特性超详细总结
    小米程序员的忧虑:感觉互联网这两年要凉,想回家种地
    Java技术文档—Java中的运算符有哪些?
    Java笔记之数组,异常处理,集合知识要点
    Java学习笔记——IO流基础知识点整理
  • 原文地址:https://www.cnblogs.com/webenh/p/8092655.html
Copyright © 2011-2022 走看看