今天把window.showModalDialog用法記錄一下,下面說的父窗口和子窗口之間傳值的問題dom
js代碼片斷:這是一個js的functionjsp
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);spa
本句的意思是打開一個子窗口, 在showModalDialog中傳了3個參數:code
第一個參數 指定 頁面跳轉的地址,第二個參數是window,能夠把父窗口對象傳給子頁面,第三個參數是控制子窗口的顯示位置對象
jsp代碼片斷:blog
<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的functionip
在打開的子窗口中,有以下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對象get
經過window.dialogArguments.document.getElementById("mnId");來獲取父窗口中的id爲mnId的dom對象input
再經過下面的語句,就能夠在子窗口的js代碼中爲父窗口中的dom元素賦值
val.value="部門";
val2.vlue="0102999"
最後經過window.close();關掉子窗口