确认从 javascript 中的页面重定向

Confirm redirection from page in javascript

本文关键字:重定向 javascript 确认      更新时间:2023-09-26

我正在asp.net包含三页的网站工作

page1.aspx page2.aspxpage3.aspx

我希望如果用户从page1重定向,应该出现要求确认的警报框。为此,我编写了以下代码

window.onbeforeunload = function () {            
        return 'Are you sure you want to leave?';
    };

但是此代码在服务器的每个postback上运行,包括按 F5 。我希望此代码仅在用户重定向到剩余两个页面中的任何一个时运行

怎么能做到这一点??

仅在

页面中的JavaScript onload事件中尝试此代码

if(confirm("Are you sure you want to leave?"))
{
//redirect to next page
return false
}

window.onbeforeunload 中处理可能不是直接的方法,因为每次加载页面时都会显示警报消息。

相反,您可以做的是在 from DOM 对象中调用确认 js 函数,这可能会将用户带到不同的页面。

例如,让我们假设下面的锚标签将用户带到第二页:

<a id="pageTwoAnchorTag" runat="server" href="~/Page2.aspx">Page 2</a>

您可以添加以下 onClick 事件,以便在用户想要转到第 2 页时获得确认:

<a id="pageTwoAnchorTag" runat="server" onclick="return confirm('Are you sure you want to leave?')" href="~/Page2.aspx">Leave Records</a>

只在几个地方要求确认可能并不完全令人满意,因为它不会在所有期望的情况下触发。例如,当您关闭浏览器选项卡或窗口时,您的数据将丢失。

我建议做相反的事情:像你已经做的那样注册onbeforeunload,但包括一个"守卫",你可以在任何不应该触发确认的操作上禁用它(即在回发中):

window.shouldconfirm = true;
window.onbeforeunload = function () {
    if (shouldconfirm) {
        return 'Are you sure you want to leave?';
    }
};

注册在执行回发之前发生的事件(例如按钮单击事件等)在这些位置,禁用确认:

window.shouldconfirm = false;

我对回发触发 onbeforeunload 事件感到有点惊讶。我想记住,在表单发布时不会触发事件,并且 ASP.NET 回发是作为表单发布操作实现的。