zoukankan      html  css  js  c++  java
  • 使用window.showModalDialog弹出窗口返回值(兼容IE、FF、chrome)

    returnValue是javascript中html的window对象的属性,目的是返回窗口值,当用window.showModalDialog函数打开一个IE的模式窗口(模式窗口知道吧,就是打开后不能操作父窗口,只能等模式窗口关闭时才能操作)时,用于返回窗口的值,下面举个例子:

     1、main.html

     1 <script type="text/javascript">
     2 //选择文件
     3 var ActiveAssetInput;
     4 function openAsset(s)
     5 {
     6     ActiveAssetInput = s
     7     if(navigator.appName.indexOf('Microsoft')!=-1)
     8         document.getElementById(ActiveAssetInput).value=modalDialogShow_IE("./open.html",700,420); //IE 
     9     else
    10         modalDialogShow_Moz("./open.html",700,420); //Moz   
    11 }
    12   
    13 function modalDialogShow_IE(url,width,height) //IE
    14     {
    15     return window.showModalDialog(url,window,
    16         "dialogWidth:"+width+"px;dialogHeight:"+height+"px;edge:Raised;center:Yes;help:No;Resizable:Yes;Maximize:Yes");
    17     }
    18   
    19 function modalDialogShow_Moz(url,width,height) //Moz
    20     {
    21     var left = screen.availWidth/2 - width/2;
    22     var top = screen.availHeight/2 - height/2;
    23     activeModalWin = window.open(url, "", "width="+width+"px,height="+height+",left="+left+",top="+top);
    24     window.onfocus = function(){if (activeModalWin.closed == false){activeModalWin.focus();};};
    25 }
    26   
    27 function setAssetValue(v) //required by the asset manager
    28 {
    29     document.getElementById(ActiveAssetInput).value = v;
    30 }
    31   
    32 function ShowDialog(url, width, height)
    33     {
    34     window.showModalDialog(url, window, "dialogWidth:" + width + "px;dialogHeight:" + height + "px;help:yes;scroll:yes;status:yes");
    35     //showModalDialog创建一个显示指定 HTML 文档的模式对话框。
    36 }
    37 </script>
    38 <form name="form1">   
    39   
    40 <input name="smallpic" type="text" ID="smallpic" style="wIDth:60%" maxlength="100"><input type="button" value="选择(S)" onClick="openAsset('smallpic')" class='EasySiteButton'></td>
    41   
    42 </form>

    2、open.html

    <script type="text/javascript">
    bOk=false;
    function doOk()
      {
      if(navigator.appName.indexOf('Microsoft')!=-1)
        window.returnValue=inpSource.value;
      else
        window.opener.setAssetValue(document.getElementById("inpSource").value);
        bOk=true;
        self.close();
      }
    function doUnload()
      {
      if(navigator.appName.indexOf('Microsoft')!=-1)
        if(!bOk)window.returnValue="";
      else
        if(!bOk)window.opener.setAssetValue("");
      }
    </script>
    <body onUnload="doUnload()">
    <div align=center>
    <input type="text" id="inpSource" name="inpSource" style="border:#cfcfcf 1px solid;295" class="inpTxt"></div>
    <input name="btnOk" id="btnOk" type="button" value=" ok " onClick="doOk()" class="inpBtn" onMouseOver="this.className='inpBtnOver';" onMouseOut="this.className='inpBtnOut'">
    </body>

    要注意的问题:

    1.IE使用模式窗口打开的对话框是无法实现回传值的,就是说用.NET控件进行触发事件的话,完成之后会打开新的窗口,而不是在本来的模式窗口刷新。

    解决办法,就是用Iframe。弄一个中间窗口然后把自己放在IFRAM里面

    <body>
    <iframe src="最终的窗口.aspx"></iframe>
    </body>

    这样

    2.如果是CHROME ,则不能使用IFRAM 如果使用IFRAME会出现<input type="file" />控件不起作用的情况。

    所以要判断是什么浏览器。。。然后URL传参,如果是IE则弄个IFRAME如果不是 就不弄 

  • 相关阅读:
    装饰器
    提供离线chrome谷歌浏览器插件crx的网站有
    关于使用AWS上的RHEL8.x/Redhat系统使用自己单独购买的Redhat官网license导致的yum命令报错处理
    关于aws账单数据中几个重要的与费用相关的字段的意义分析
    在vCenter或者ESXi中通过ova/ovf进行还原部署虚拟机的过程记录
    关于python爬虫request.get()方法的常用参数
    关于aws cli命令的exit/return code分析
    关于pycharm代码运行后控制台的输出不完整被截断的处理
    关于变量的值中包含另一个变量引用的处理间接变量引用
    关于在python中使用pandas模块将列表list/元组tuple写入excel中
  • 原文地址:https://www.cnblogs.com/xdoudou/p/3030975.html
Copyright © 2011-2022 走看看