我们有两个 aspx 页面。我将它们称为 Page1 和 Page2。Page1 有一个 ListBox 和一个 Button。按钮打开 Page2。Page2 有一个 ListBox 和一个 Button。Page2 按钮有一个用 Javascript 编写的 OnClientClick 方法。它使用 window.opener 返回到 Page1 并将 Page2 列表框中检查的项目的值传递给 Page1 上的 Javascript 函数。使用警报,我们确定 Page2 将值正确地传递回 Page1 并且 Page1 函数触发。如果我们将网站发布到 Windows 7 机器上,Page1 功能就可以正常工作。但是,在 Windows 2008 标准服务器上,当我们到达将值作为新 ListBox 项添加到 Page1 的 ListBox 的行(练习的重点)时,Javascript 不起作用。它不会抛出错误,但不会将项目添加到 ListBox,并且在那之后插入到脚本中的任何警报都不会触发。这是代码:
function ProcessFromPopup(dvalue, text) {
var htmlSelect = document.getElementById('<%=lstSelEmployees.ClientID%>');
var selectBoxOption = this.document.createElement("option");
selectBoxOption.value = dvalue;
selectBoxOption.text = text;
htmlSelect.add(selectBoxOption, null);
return true;
}
正如我所说,带有“htmlSelect.add”的行没有做任何事情,并且在该行之后插入的任何警报都不会触发。直接插入该行上方的警报会触发。那么我们做错了什么?我们正在使用 .Net 4.0 框架。此外,这是在 IE9 和 10 中看到的行为,但在 Chrome 或 Safari 中没有。在 Chrome 和 Safari 中,代码运行良好。