用一个 <iframe> 来模拟模态框

解决方案 »

  1.   

    window.open(url, "", "model=yes");
      

  2.   

    <input type="button" value="打开对话框" onclick="showDialog('2.htm')"/>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function showDialog(url)
    {
    if( document.all ) //IE
    {
    feature="dialogWidth:300px;dialogHeight:200px;status:no;help:no";
    window.showModalDialog(url,null,feature);
    }
    else
    {
                       //modelessDialog可以将modal换成dialog=yes
    feature ="width=300,height=200,menubar=no,toolbar=no,location=no,";
    feature+="scrollbars=no,status=no,modal=yes"; 
    window.open(url,null,feature);
    }
    }
    //-->
    </SCRIPT>
      

  3.   

    由于代码是嵌在原来的项目里的, 独立出来比较麻烦, 我给你说说思路吧:
    我的项目用的是框架网页, 用 iframe 做子帧的:
    top.aspx:
    DIV.transparent
    {
      TOP: 0px; ; 
      LEFT: 0px;
      Z-INDEX: 8888;
      POSITION: absolute; 
      BACKGROUND-IMAGE: url(transparent.gif); /* 这是一张透明图片 */
      WIDTH: 100%; 
      HEIGHT: 100%;
    }
    <div style="DISPLAY: none" class="transparent" id="divLock" oncontextmenu="return false;"><!-- 作为锁屏用的透明层 --></div>
    <iframe name="MzVirtrulWindow" id="MzVirtrulWindow" width="0" height="0" frameborder="0" style="DISPLAY: none; Z-INDEX: 9000; POSITION: absolute" src="window.htm"></iframe>根据参数显示这个隐藏的 iframe, 显示那个锁父页面的层, 这个透明的图片背景层能够锁住大部分元素, 除了select flash object之外的元素都被锁定不能操作了, 而这个 iframe 加载你特定的页面进行操作, 关闭 iframe 其它就是隐藏它, 并将原来的那个锁定层隐藏掉. 这样大致可以在非IE的浏览器里实现弹出窗口了
      

  4.   

    不用那么麻烦吧?对于非IE,你最好有装上它亲自测试。在window.open的参数里,试试这些之一:
       modal=yes|no
       dialog=yes|no
       dependance=yes|no
    可能有你要的。不过据我的经验,在Netscape、FireFox中,都不能像ie的showModalDialog那样强制
    留在最上面,也不能像showModalDialog那样还可以返回一个值。(ie这点真好!)非IE的window.open目前只能做到类似ie的showModelessDialog的效果,通过window.opener
    获得对母窗口的引用。而ie的模式对话框和无模式对话框是通过传参数的。
      

  5.   

    to  cuixiping(无心) :
    firefox下的window.open是可以强制留在最上面的,modal就可以的
      

  6.   

    同时纠正一下楼主:showModalDialog 不是微软 JScript 脚本语言的特殊功能,而是IE的特殊支持,它是window对象的方法。即使不是JScript,如VBScript也可以调用该方法的。至于说“标准JavaScript不提供...”这个说法更不恰当,最早的javascript是netscape公司的,后来的jscript是ms公司的,能说谁的标准不标准吗?又不是什么官方机构. 而且,以msie的影响力,似乎JScript已经成为事实上的标准了。