使用javascript打开子窗口时禁用父窗口 我有一个名为worklist.jsp的父窗口 父窗口有一个按钮。单击按钮后,它将调用名为getEventLogUser()的函数 getEventLogUser()函数依次调用一个名为popupWindowWithPost()的函数,该函数将打开子窗口。这两个函数都在单独的js文件(utility.js)中 我的需要是,当子窗口打开时,我必须禁用父窗口

使用javascript打开子窗口时禁用父窗口 我有一个名为worklist.jsp的父窗口 父窗口有一个按钮。单击按钮后,它将调用名为getEventLogUser()的函数 getEventLogUser()函数依次调用一个名为popupWindowWithPost()的函数,该函数将打开子窗口。这两个函数都在单独的js文件(utility.js)中 我的需要是,当子窗口打开时,我必须禁用父窗口,javascript,Javascript,worklist.jsp: <div class="claro" id="menuDiv21" onclick="setWidgetproperty(this.id,'x','navMenu21');" onmousedown="setMenuBarProperty('navMenu21');" onmouseup="setDocStyle(this.id)" style="border:1px dotted white; left: auto; position: absolute; t

worklist.jsp:

<div class="claro" id="menuDiv21" onclick="setWidgetproperty(this.id,'x','navMenu21');" onmousedown="setMenuBarProperty('navMenu21');" onmouseup="setDocStyle(this.id)" style="border:1px dotted white; left: auto; position: absolute; top: 620px;">
     <div dojotype="dijit.MenuBar" id="navMenu21" style="font-size:11pt;" title="MenuBar">
          <div dojotype="dijit.MenuBarItem" id="SearchMenu21" onclick="getEventLogUser();setMenuId(this.id);" style="font-size:11pt;" title="menuBarItem">
               <img class="images" id="SearchMenu21" name="search5.png" onclick="setImgProperty(this.id)" src="images/uploads/search.png" style="height:20px; width:20px;">
               Search
          </div>
</div>
</div>

据我所知,你想打开模态对话框。签出
window.showModalDialog()
而不是
window.open()
。注意,它也有一些不同的参数


另外,如果您想将它放在
form.submit()之前,则在模式窗口关闭之前不会执行该命令。

请查看创建模式iframe的库。我已经在一些项目中使用了它,它可以满足您的要求;尽管是在覆盖层中,而不是在单独的窗口中。

禁用窗口的一种简单方法(假设您对禁用的定义与我上面的评论相匹配)就是简单地用一个不可见的div覆盖窗口,并给它一个非常大的z-index,这样如果有z-index>1的任何其他dom元素,它仍然会被这个不可见的div覆盖


尽量避免使用window.showModalDialog()之类的东西,因为它们。。如果我是你。。我甚至不会创建一个新窗口,除非它是绝对必要的(老实说,我想不出一个场景)。。我会在同一个窗口中使用div和css创建一个模态对话框。。在线上有大量的教程和库(如twitter引导)。

当你说“禁用”父窗口时。。你是说用户不能点击上面的任何东西吗?即,如果他们在子窗口打开时单击父窗口中的按钮。。按钮没有反应?是的。。。当孩子打开时,家长窗口中不应该有任何操作…Rachel请告诉我们我们的答案是否符合您的需要,或者如果不符合您的需要,为什么不这样做,以便我们可以帮助您。是的,有必要将孩子窗口作为弹出窗口打开。模态对话框的用途是什么?下面有很多例子。。只要试着点击任何一张图片,你就会看到我们在谈论什么。。但是如果需要弹出窗口。。那么我的回答仍然针对这个案例
function getEventLogUser(){
        var dummyvar = document.getElementById("CWPROCESSEVENTLOG.OBJECT_ID").value;
        popupWindowWithPost("eventLogUser.jsp",'height=600px,width=960px,top=50px,left=150px,scrollbars=no,sizable=yes,toolbar=no,statusbar=no','processManager',dummyvar);
}
function popupWindowWithPost(url, windowoption, name, params)
{
         var form = document.createElement("form");
         form.setAttribute("method", "post");
         form.setAttribute("action", url);
         form.setAttribute("target", name);
         var input = document.createElement('input');
         input.type = 'hidden';
         input.name = "PARAM";
         input.value = params;
         form.appendChild(input);
         document.body.appendChild(form);
         window.open(url, name, windowoption);
         form.submit();
         document.body.removeChild(form);
}