我在aspx页面上有一个退出按钮,需要执行一些服务器端代码,然后关闭浏览器窗口。该按钮具有OnClick事件和OnClientClick事件。 OnClientClick事件调用应该进行回发然后关闭窗口的方法。代码在IE中运行良好,但不会在Chrome中进行回发。两种情况下窗口都关闭。这是我的代码。我正在检查它是哪个浏览器,但此时并没有做任何不同的事情
function closeMainWindow(control) {
var clientIDName = control.name;
if (navigator.userAgent.indexOf('Chrome') != -1) {
__doPostBack(clientIDName, '');
window.open('', '_self', ''); //need this for Chrome
window.close();
return false;
}
else {
__doPostBack(clientIDName, '');
window.open('', '_self', ''); //bypasses warning from IE
window.close();
return false;
}
以下是该按钮的代码。
<asp:Button ID="btnExit" runat="server" Text="Yes" Width="50px" OnClick="btnExit_Click" OnClientClick="javascript:return closeMainWindow(this);" />
如果您有任何关于如何在Chrome中使用此功能的建议,或者有更好/不同的方式来执行服务器端代码然后关闭浏览器窗口,我将不胜感激。
答案 0 :(得分:2)
您不必在onClientClick上执行“window.close()”,删除该客户端代码。执行正常回发而不使用“__doPostBack()”并在该服务器端回发代码内部发送“window.close();”通过“ClientScript.RegisterStartupScript”返回客户端