简体   繁体   English

从子窗口访问父窗口ID

[英]Access parent window id from child window

  • I have a parent window named eventLog.jsp 我有一个名为eventLog.jsp的父窗口
  • And a child window named processManager.jsp 还有一个名为processManager.jsp的子窗口
  • Parent window has a button, on clicking of the button, it calls a function getEventLogProcess(). 父窗口具有一个按钮,单击该按钮时,它将调用函数getEventLogProcess()。
  • getEventLogProcess() will open the popup window(processManager.jsp/child window) getEventLogProcess()将打开弹出窗口(processManager.jsp /子窗口)
  • My need is, i have to get the parent window button id in the on load function of child window. 我的需要是,我必须在子窗口的加载功能中获取父窗口按钮ID。

eventLog.jsp: eventLog.jsp:

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

getEventLogProcess(): getEventLogProcess():

function getEventLogProcess(){
    if(dijit.byId('dynamiceventgridCWPROCESSEVENTLOG')){
        var selctedItem = dijit.byId('dynamiceventgridCWPROCESSEVENTLOG').selection.getSelected();
        if(selctedItem.length){
            //alert("grid row selected");
            dojo.forEach(selctedItem, function(selectedItem){
            if(selectedItem !== null){
                dojo.forEach(dijit.byId('dynamiceventgridCWPROCESSEVENTLOG').store.getAttributes(selectedItem), function(attribute){
                    var value = dijit.byId('dynamiceventgridCWPROCESSEVENTLOG').store.getValues(selectedItem, attribute);
                });
            }
            var objectId = document.getElementById("CWPROCESSEVENTLOG.OBJECT_ID").value;
            if(objectId != ""){
                //alert(objectId);
                popupWindowWithPost("processManager.jsp",'height=600px,width=960px,top=50px,left=150px,scrollbars=no,sizable=yes,toolbar=no,statusbar=no','processManagerpopup',objectId);  
            }else{
                alert("Please have some value in Process ID field");
            }
            });
        }else{
            alert("grid loaded and row nt selected");
        }
    }
    if(gbshowgridFlag==false){
        alert("grid not loaded");
    }
}

Your code seems too complicated to me, so I wrote a test script: 您的代码对我来说似乎太复杂了,所以我写了一个测试脚本:

Parent Window 父窗口

<script type="text/javascript">
function foo(){
     window.buttonid=document.getElementById('button1');
     window.open("childwindow.html","child window");
}
</script>
<body>
<!-- some stuff here -->
<button id="button1" name="NiceButton" onclick="foo()">click here</button>
</body>

Child Window 子窗口

<script type="text/javascript">
function loading(){
    alert(window.opener.buttonid.name);
}
</script>
<body onload="loading();"></body>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM