今天把window.showModalDialog用法記錄一下,下面說的父窗口和子窗口之間傳值的問題
js代碼片段:這是一個js的function
function menuQuery(field1,field2,path) { var str = ""; if (window.screen) { var ah = screen.availHeight - 20; var aw = screen.availWidth - 10; var xc = (aw - 50) / 2; var yc = (ah - 485) / 2; str += "dialogLeft:" + xc + ";"; str += "dialogTop:" + yc + ";"; } window.showModalDialog("system.menu.menuReadAction.do",window, "dialogHeight:450px;dialogWidth:200px;status=no;"+str); }
1. str 字符串只是拼接了指定窗口位置的參數
2. window.showModalDialog("system.menu.menuReadAction.do",window,"dialogHeight:45px;dialogWidth:200px;status=no;"+str);
本句的意思是打開一個子窗口, 在showModalDialog中傳了3個參數:
第一個參數 指定 頁面跳轉的地址,第二個參數是window,可以把父窗口對象傳給子頁面,第三個參數是控制子窗口的顯示位置
jsp代碼片段:
<td align="left" width="70%"> <input type=text id="parentMenuName" value="<s:property value="#request.parentMenu"/>" readonly /> <input type="hidden" id="mnId" name="pMnId" value="<s:property value='menu.parentMenu.mnId'/>" /> <s:fielderror fieldName="menu.mnName" /> <input type="button" value="選擇" id="chose" onclick="menuQuery(mnId,parentMenuName);">
</td>
在jsp代碼中onclick="menuQuery(mnId,parentMenuName)"用來調用上面js的function
在打開的子窗口中,有如下js腳本
<script> var val=window.dialogArguments.document.getElementById("parentMenuName"); var val2=window.dialogArguments.document.getElementById("mnId"); val.value="部門"; val2.value="0102999"; window.close() </script>
在子窗口中就可以通過window.dialogArguments獲取父窗口對象,
通過window.dialogArguments.document.getElementById("parentMenuName")來獲取父窗口中的id為parentMenuName的dom對象
通過window.dialogArguments.document.getElementById("mnId");來獲取父窗口中的id為mnId的dom對象
再通過下面的語句,就可以在子窗口的js代碼中為父窗口中的dom元素賦值
val.value="部門";
val2.vlue="0102999"
最后通過window.close();關掉子窗口