设为首页 收藏本站
查看: 1033|回复: 0

[经验分享] window.open()和window.showModalDialog()

[复制链接]

尚未签到

发表于 2019-1-27 11:01:35 | 显示全部楼层 |阅读模式
  本文主要讲解window.open()和window.showModalDialog()弹出窗口的一些基本用法和刷新问题
  

  window.open()弹出对话框:
  基本语法:
  window.open(pageURL,name,parameters)
其中:

pageURL 为子窗口路径
name 为子窗口句柄
parameters 为窗口参数(各参数用逗号分隔)
eg:
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no,
  menubar=no, scrollbars=no, resizable=no,location=no, status=no')//这句要写成一行
  参数解释:
  window.open           弹出新窗口的命令;
page.html                弹出窗口的文件名;
newwindow            弹出窗口的名字(不是文件名),非必须,可用空''代替;
height=100              窗口高度;
width=400              窗口宽度;
top=0                     窗口距离屏幕上方的象素值;
left=0                     窗口距离屏幕左侧的象素值;
toolbar=no              是否显示工具栏,yes为显示;
menubar=no           是否显示菜单栏,yes为显示;
  scrollbars=no         是否显示滚动栏,yes为显示;
resizable=no           是否允许改变窗口大小,yes为允许;
  location=no            是否显示地址栏,yes为允许;
  status=no              是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
  

  下面来说一下window.opener
  

  window.opener 实际上就是通过window.open打开的窗体的父窗体。比如在父窗体parent里面通过window.open("sub.html")打开一个窗口,那么在sub.html中window.opener就代表parent,可以通过这种方式设置父窗体的值或者调用父窗体的js方法。
  eg:1,window.opener.test(); ---调用父窗体中的test()方法
        2,如果window.opener存在,设置parent中stockBox的值。
         if (window.opener && !window.opener.closed) {
             window.opener.document.parent.stockBox.value = symbol;
        }
  主窗口的刷新你可以用
window.opener.location.reload();

  

  


  window.showModalDialog()弹出对话框刷新问题的总结
  

  showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)

  window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。
  

  参数传递:
1.要向对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

  
var obj = new Object();
obj.name="ttop";
window.showModalDialog("test.htm",obj,"dialogWidth=200px;dialogHeight=100px");

test.htm

var obj = window.dialogArguments
alert("您传递的参数为:" + obj.name)

  

  window.showModalDialog()刷新父窗口和本窗口的方法及注意:
一.刷新父窗口的方法:
1.使用window.returnValue给父窗口传值,然后根据值判断是否刷新。

  ① 在window.showModalDialog()打开的窗口页面中用window.returnValue方式设置返回值;
      eg:window.returnValue='refresh';
  ②.在写window.showModalDialog()弹出窗口函数时,定义一个个变量,然后根据变量值操作父窗口是否刷新;
      eg:var winPar = window.showModalDialog              

              (url,'','dialogHeight:400px;dialogWidth:800px;status:no;scroll:no;help:no');
              if(winPar  == 'refresh'){
                window.parent.location.reload();  //当window.showModalDialog窗口关闭时执行
            }
  

  winPar为①步骤给showModalDialog()窗口设置的返回值
  总结:由于window.showModalDialog函数打开一个IE的模式窗口(就是打开后不能操作父窗口,只能等模式窗口关闭时才能操作),所以想要刷新父窗口只能在模式窗口关闭后执行。用window.returnValue可以向父窗口传值,这样一来可以用从模式窗口向父窗口传递值,然后根据值判断操作父窗口的方式来刷新。这样在任何关闭了模式窗口后父窗口都会自动刷新.
  

  二.刷新模式本窗口
showModalDialog()窗口与window.open()打开的窗口刷新本窗口时不同,showModalDialog()窗口也不能用F5刷新,也没有右键操作
①. 在模式窗口页面中加入:     
//在html和body之间

   ②. 在需要执行刷新操作的地方执行以下js:
reload.click();//reload为①中隐藏a标签的id,当然可以换成其它名称
  
三  注意事项
  ①  在点击window.showModalDialog()窗口的链接的时候会打开新窗口,想要阻止打开新窗口,需要在窗口页
       面中的html和body之间加入: 即可   
  ②  showModalDialog和showModelessDialog有什么不同?
   showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。
                                  类似alert的运行效果。
     showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一
  下而已。
  






  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668175-1-1.html 上篇帖子: unable to open an initial console问题解决 下篇帖子: 关于open函数中的modeNoTrucate
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表