阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1896|回复: 0

[转帖] window.dialogArguments的用法[转]

[复制链接]
  • TA的每日心情
    开心
    2021-8-30 00:00
  • 签到天数: 35 天

    [LV.5]常住居民I

    发表于 2010-3-20 20:31:53 | 显示全部楼层 |阅读模式
    今天在学习任我行分销系统的单据录入表格时,

    发现tableclient.js这个有强大功能的grid“控件”,顺便网络搜索学习了一下window.dialogArguments的用法,做个小记录

    =============================================

    Javascript有许多内建的方法来产生对话框,如:window.alert(),  window.confirm(),window.prompt().等。  然而IE提供更多的方法支持对话框。如:

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


      window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。
      window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

      当我们用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时,  打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。

    使用方法如下:
      vReturnValue  =  window.showModalDialog(sURL  [,  vArguments]  [,  sFeatures])
      vReturnValue  =  window.showModelessDialog(sURL  [,  vArguments]  [,  sFeatures])
    参数说明:
      sURL
      必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
      vArguments
      可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
      sFeatures
      可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
        dialogHeight  对话框高度,不小于100px,IE4中dialogHeight  和  dialogWidth  默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
        dialogWidth:  对话框宽度。
        dialogLeft:  距离桌面左的距离。
        dialogTop:  离桌面上的距离。
        center:  {yes  |  no  |  1  |  0  }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
        help:  {yes  |  no  |  1  |  0  }:是否显示帮助按钮,默认yes。
        resizable:  {yes  |  no  |  1  |  0  }  [IE5+]:是否可被改变大小。默认no。
        status:  {yes  |  no  |  1  |  0  }  [IE5+]:是否显示状态栏。默认为yes[  Modeless]或no[Modal]。
        scroll:{  yes  |  no  |  1  |  0  |  on  |  off  }:指明对话框是否显示滚动条。默认为yes。

        还有几个属性是用在HTA中的,在一般的网页中一般不使用。
        dialogHide:{  yes  |  no  |  1  |  0  |  on  |  off  }:在打印或者打印预览时对话框是否隐藏。默认为no。
        edge:{  sunken  |  raised  }:指明对话框的边框样式。默认为raised。
        unadorned:{  yes  |  no  |  1  |  0  |  on  |  off  }:默认为no。

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

      test1.htm
      ====================
      <script>
        var  mxh1  =  new  Array("mxh","net_lover","孟子E章")
        var  mxh2  =  window.open("about:blank","window_mxh")
        //  向对话框传递数组
        window.showModalDialog("test2.htm",mxh1)
        //  向对话框传递window对象
        window.showModalDialog("test3.htm",mxh2)
      </script>

      test2.htm
      ====================
      <script>
        var  a  =  window.dialogArguments
        alert("您传递的参数为:"  +  a)
      </script>

      test3.htm
      ====================
      <script>
        var  a  =  window.dialogArguments
        alert("您传递的参数为window对象,名称:"  +  a.name)
      </script>

      可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

      test4.htm
      ===================
      <script>
        var  a  =  window.showModalDialog("test5.htm")
        for(i=0;i<a.length;i++)  alert(a)
      </script>

      test5.htm
      ===================
      <script>
      function  sendTo()
      {
        var  a=new  Array("a","b")
        window.returnValue  =  a
        window.close()
      }
      </script>
      <body>
      <form>
        <input  value="返回"  type=button  onclick="sendTo()">
      </form>

      常见问题:
      1,如何在模态对话框中进行提交而不新开窗口?
      如果你  的  浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:例子,

      test6.htm
      ===================
      <script>
        window.showModalDialog("test7.htm")
      </script>

      test7.htm
      ===================
      if(window.location.search)  alert(window.location.search)
      <frameset  rows="0,*">
        <frame  src="about:blank">
        <frame  src="test8.htm">
      </frameset>

      test8.htm
      ===================
      <form  target="_self"  method="get">
      <input  name=txt  value="test">
      <input  type=submit>
      </form>
      <script>
      if(window.location.search)  alert(window.location.search)
      </script>
      2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗?
      答案是不能。但在frame里是可以的。
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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