__doPostBack在Chrome中不起作用

时间:2013-08-21 13:46:13

标签: javascript asp.net

我在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中使用此功能的建议,或者有更好/不同的方式来执行服务器端代码然后关闭浏览器窗口,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

您不必在onClientClick上执行“window.close()”,删除该客户端代码。执行正常回发而不使用“__doPostBack()”并在该服务器端回发代码内部发送“window.close();”通过“ClientScript.RegisterStartupScript”返回客户端