在 ASP.NET Web 应用程序中,有一个主窗口(Default.aspx 或主页)和一个子窗口(一个新的 aspx 页面)。当我在按钮上使用 javascript 打开子页面时,通过指定其 url 使用 window.open() 方法单击。按钮单击事件上的 C# 代码:
protected void BtnChildPage_Clicked(object sender, ImageClickEventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script language='javascript'>");
sb.Append(@"OpenChildPage('" + sQueryString + "')");
sb.Append(@"</script>");
//register startup script with button
ScriptManager.RegisterStartupScript(BtnPartMemo, this.GetType(), sScriptName, sb.ToString(), false);
}
用于打开子页面的 Javascript 代码:
var childmWindow;
function OpenChildPage(sQueryString) {
var width = 655;
var height = 508;
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
var params = 'width=' + width + ', height=' + height;
params += ', top=' + top + ', left=' + left;
params += ', directories=no';
params += ', location=no';
params += ', menubar=no';
params += ', resizable=yes';
params += ', scrollbars=yes';
params += ', status=yes';
params += ', toolbar=no';
childmWindow = window.open('DirectoryName/ChildPage.aspx' + '?ViewerId=' + sQueryString,
'Child Page' + sViewerId, params);
childmWindow.focus();
}
子窗口不会出现在主窗口的前面。我在调用 window.open() 方法后尝试了 window.focus() 但它在打开后隐藏了子窗口。
仅在使用 Win XP 在 IIS 5.1 中部署应用程序后才会观察到此行为。当我从代码中执行它时,它会相应地运行,但是在 IIS 中部署后,它会在打开后隐藏子窗口。
如何克服这种行为?