本文摘自:
http://blog.dofy.net/?p=140
?
使用 window.showModalDialog 打開的窗口沒有 opener 對(duì)象, 這的確給使用帶來(lái)了很多麻煩, 以前一直也沒用過這個(gè)東西, 所以沒有更多關(guān)注. 今天一個(gè)朋友問到這個(gè)問題, 于是上網(wǎng)搜索了一下, 找到了解決方案, 發(fā)上來(lái)供大家參考.
首先來(lái)看看 window.showModalDialog 的參數(shù):
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) ;
?
sURL : 打開窗口的地址;
vArguments : 傳遞參數(shù);
sFeatures : 窗口屬性列表;
第一個(gè)參數(shù)是必須的, 后兩個(gè)可以省略.
這里我們要利用的就是第二個(gè)參數(shù). 原理是將父窗口的被控制對(duì)象以參數(shù)的形式傳遞到子窗口, 在子窗口中直接控制這個(gè)對(duì)象即可.
舉例來(lái)說:
parent.html
<script type="text/javascript">
function openWin(){
// 子窗口地址
var srcFile = "child.html";
// 子窗口屬性
var winFeatures = "dialogHeight:300px; dialogLeft:200px;";
// 將 From 的 ID 作為參數(shù)傳遞到子窗口
var obj = getForm;
// 打開子窗口
window.showModalDialog(srcFile, obj, winFeatures);
}
</script>
<form id="getForm">
??回傳值:
??<input type="text" id="getValue" readOnly>
</form>
<input type="button" value="打開" onClick="openWin()">
child.html
<script type="text/javascript">
function send(){
??// 獲取參數(shù)傳遞的對(duì)象
??var obj = window.dialogArguments;
??// 控制對(duì)象
??obj.getValue.value = 'from Child';
}
</script>
<a href="#" onclick="send();">Send</a>
運(yùn)行 parent.html , 單擊 [打開] 按鈕彈出對(duì)話框, 點(diǎn)擊 Send 鏈接將值傳遞到 parent 的文本框中.
傳遞的參數(shù)當(dāng)然也可以是其他對(duì)象, 例如 window . 值得注意的是傳遞的是對(duì)象, 而不是字符串.