模态对话框不与主 HTA 通信 window
Modal dialog box does not communicate with main HTA window
我在 HTA 中有一个 javascript,如下所示:
var result = null;
window.showModalDialog("dialog.hta", window, "dialogHeight:300px; dialogWidth:300px");
alert(result);
dialog.hta:
<html>
<head>
<title>Dialog box</title>
<meta http-equiv="MSThemeCompatible" content="yes"/>
</head>
<body style="background:#F0F0F0">
<select id="colors">
<option selected>Red</option>
<option>Blue</option>
<option>Green</option>
<option>Yellow</option>
</select><br/>
<script type="text/javascript">
function ok(){
window.dialogArguments.result = colors.getElementsByTagName("option")[colors.selectedIndex].innerHTML;
window.close();
}
</script>
<button onclick="ok()">OK</button>
<button onclick="window.close()">Cancel</button>
</body>
</html>
问题是,当我按下“确定”时,主 HTA window 中的 alert(result)
始终显示为空,即使我在模式对话框中单击“确定”按钮也是如此。
我该怎么做才能在按下确定按钮时显示用户在列表中选择的选项,而在按下取消按钮时显示为空?
模态对话框是这样工作的:
在主应用中:
// Call a dialog, and store the returned value to a variable
var result = showModalDialog(path, argument, options);
对话框关闭时:
// Set the returnValue
var elem = document.getElementById("colors");
window.returnValue = elem[elem.selectedIndex].text;
top.close();
在对话框中设置returnValue
后,关闭对话框后可以从result
读取。
option
元素在旧 IE 中没有 innerHTML
,因此您必须使用 text
属性 代替。你也可以给select
元素添加一个value
属性,然后用简单的方法创建一个return值:
window.returnValue = document.getElementById('colors').value;
我在 HTA 中有一个 javascript,如下所示:
var result = null;
window.showModalDialog("dialog.hta", window, "dialogHeight:300px; dialogWidth:300px");
alert(result);
dialog.hta:
<html>
<head>
<title>Dialog box</title>
<meta http-equiv="MSThemeCompatible" content="yes"/>
</head>
<body style="background:#F0F0F0">
<select id="colors">
<option selected>Red</option>
<option>Blue</option>
<option>Green</option>
<option>Yellow</option>
</select><br/>
<script type="text/javascript">
function ok(){
window.dialogArguments.result = colors.getElementsByTagName("option")[colors.selectedIndex].innerHTML;
window.close();
}
</script>
<button onclick="ok()">OK</button>
<button onclick="window.close()">Cancel</button>
</body>
</html>
问题是,当我按下“确定”时,主 HTA window 中的 alert(result)
始终显示为空,即使我在模式对话框中单击“确定”按钮也是如此。
我该怎么做才能在按下确定按钮时显示用户在列表中选择的选项,而在按下取消按钮时显示为空?
模态对话框是这样工作的:
在主应用中:
// Call a dialog, and store the returned value to a variable
var result = showModalDialog(path, argument, options);
对话框关闭时:
// Set the returnValue
var elem = document.getElementById("colors");
window.returnValue = elem[elem.selectedIndex].text;
top.close();
在对话框中设置returnValue
后,关闭对话框后可以从result
读取。
option
元素在旧 IE 中没有 innerHTML
,因此您必须使用 text
属性 代替。你也可以给select
元素添加一个value
属性,然后用简单的方法创建一个return值:
window.returnValue = document.getElementById('colors').value;