65.9K
CodeProject 正在变化。 阅读更多。
Home

将 window.open() 窗口置于最前

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (2投票s)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

28698

在 ASP.NET 应用程序中,可以使用 window.open 方法从客户端或服务器端打开新窗口。请参阅

在 ASP.NET 应用程序中,可以使用 window.open 方法从客户端或服务器端打开新窗口。请参阅它接受的参数列表 http://msdn.microsoft.com/en-us/library/ms536651(v=vs.85).aspx

大多数开发人员在使用这个方法时遇到的问题是,新窗口没有弹出在打开窗口的前面。

有一些解决方案,例如:

- 将焦点设置到打开的窗口

 
var NewWin = window.open('somepage.aspx, 'myWin', 'toolbar=no, status=yes, menubar=no, resizable=no, scrollbars=yes, width=670, height=800');
NewWin.focus();

- 或者在新窗口页面加载时(例如在 header 标签中)

<head runat="server">
    <script type="text/javascript">
        window.focus();
    </script>
    <title>Untitled Page</title>
</head>

但大多数情况下,这些解决方案都失败了,存在时机问题,例如打开的页面从服务器返回并再次显示,或者打开窗口页面上仍然有更多的事件发生,因此即使新窗口显示出来,打开窗口页面也可能在整个执行完成后再次出现在前面。

为了将新页面置于最前并解决这些类型的问题,对将焦点设置到新页面的脚本设置一个超时时间会有效。

您可以将超时时间(例如 60 毫秒)设置为一个方法,该方法将在新窗口打开后将焦点设置到该窗口。 这样,在打开窗口页面完成所有处理后,就可以使其显示在最前面。

使用以下脚本打开新窗口并将其置于最前;

var NewWin = window.open('somepage.aspx, 'NewWindow', 'toolbar=no, status=no, menubar=no, resizable=no, scrollbars=yes, width=670, height=800');
NewWin.focus();
setTimeout('ExecFocus()', 60);
function ExecFocus() {
NewWin.focus();
}

请参阅 setTimeout 方法的参数和示例:http://msdn.microsoft.com/en-us/library/ms536753(v=vs.85).aspx

© . All rights reserved.