var flag = null;
if(flag==null){
  flag = window.showModalDialog(......);
}else{
  //do other ...
}

解决方案 »

  1.   

    这个问题很有意思啊?这个窗口是获得焦点啊,怎么可以开两个,下面这样的代码是运行不了的,只能开一个
    <script language=javascript>
    var a=window.showModalDialog("1.htm")
    var b=window.showModalDialog("2.htm")
    </script>
    如果是已经开了一个,在关闭之后就不要再开的话,可以在第一个开的页面中加语句,在主页面加隐藏域来存个变量,证明已经开过一个窗口了,就不要再开一个窗口了,下面给你个例子。
    两个文件
    1.htm<input name=flag type="hidden">
    <script language=javascript>
    var a=window.showModalDialog("2.htm",window)
    if(document.getElementById("flag").value!="Notshow")
    var b=window.showModalDialog("2.htm",window)
    </script>
    2.htm
    <script language=javascript>
    window.dialogArguments.document.getElementById("flag").value="Notshow"
    </script>
      

  2.   

    showModalDialog本身的特性就是如此,没有必要去强行限制
      

  3.   

    对头,showModalDialog打开一个模式窗口后,你就只能在这个模式窗口里操作,直到该窗口关闭。
      

  4.   

    稍微纠正一下:
    虽然是模态对话框,但有可能因为重入的缘故,再打开一个模态对话框。所以楼主的问题是有可能发生的。下面的例子就会打开两个模态对话框。
    在页面A:
    <script language=javascript>
    window.showModalDialog("B.htm",window);  //打开页面B//准备一个函数,用于重入
    function test()
    {
    window.showModalDialog("about:blank");
    //window.showModalDialog("B.htm",window);//有兴趣的话,执行这一行试试。
    }
    </script>页面B:
    <script language=javascript>
    window.dialogArguments.document.Script.test();
    </script>解决方案:
    1、如hbhbhbhbhb1021(天外水火(我要多努力)) :使用隐藏域
    2、直接定义一个javascript变量就可以了。====================================
     签名走马灯--让你的每一个签名都与众不同
     CSDN助手 全面支持CSDN论坛