从onbeforeunload javascript调用asp.net按钮单击

时间:2014-03-27 08:00:55

标签: javascript html asp.net validation

我的iframe内容aspx页面包含3个asp元素:textbox,requriedfieldValidator,它与文本框和按钮有关, 在javascript onbeforeunload我想调用按钮点击事件,如果文本框为空则阻止离开页面。

但下面的代码有效:

<script type="text/javascript">
window.onbeforeunload = function (e) {
document.getElementById("Button1").click();
}
</script>
<asp:textbox runat='server' id="TextBox1" AutoPostBack="true"/>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="TextBox1_Click" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"    ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>

1 个答案:

答案 0 :(得分:0)

onbeforeunload事件处理程序很特殊。您无法无条件阻止用户离开页面 https://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload
您应该从此处理程序返回非空值 - 最好是string - 如果他/她真的想要离开页面,将提示用户。大多数浏览器将在弹出窗口中显示返回的字符串。

<script type="text/javascript">
window.onbeforeunload = function (e) {
    return "The textbox is empty. Are you sure you wan't to leave the page?";
}
</script>

出现这种异常行为的原因是安全性。必须通知用户对另一页面的导航被中断。否则他/她可能会认为导航成功 想象一下,您默默地取消此处理程序内的导航,并将页面内容更改为Internet银行应用程序。用户实际想要访问银行应用程序的可能性很小。但它可能会发生。这打开了劫持用户凭据的大门。因此,在网络浏览器中无法实现。

基本上在onbeforeunload事件处理程序中,所有通常会停止导航到另一个页面的操作都不起作用 - 它们会被忽略,这是故意的。