代码之家  ›  专栏  ›  技术社区  ›  caw

询问用户是否确定要离开站点(xhtml/javascript)

  •  0
  • caw  · 技术社区  · 15 年前

    当用户离开我的网站的一页时,应该会有一条警告消息,让用户可以选择留在该页上:

    “是否确实要关闭此页?”

    下一页是内部页还是外部页并不重要。

    我以为这可以用OnUnload事件处理程序来完成,不是吗?

    <body onunload="confirmClose()">
    

    然后,confirmclose()函数必须显示一个带有两个按钮的消息框,以便用户可以在“really leave”或“stay”之间进行选择。

    function confirmClose() {
        return confirm('Really leave this page?')
    }
    

    但是这个功能不能停止卸载,对吗?

    你有解决我问题的办法吗?事先谢谢!

    3 回复  |  直到 15 年前
        1
  •  4
  •   ceejayoz    15 年前

    你可以添加一个 onbeforeunload 事件。注意它可以 只有 返回要包含在调用事件时浏览器将显示的对话框中的文本字符串。你不能调整对话,也不能触发你自己的对话。 confirm 就像你想做的那样。

    我会注意到这是非常非常非常恼人的行为,除了在一些特定的情况下。除非你用这个让我免于重大数据丢失,否则请不要这样做。

        2
  •  5
  •   Gabriel McAdams    15 年前

    只能提供文本。浏览器处理对话框(安全原因)。以下是您可以使用的一些代码:

    window.onbeforeunload = function (e) {
        var e = e || window.event;
        var msg = 'Are you sure you want to leave?';
    
        // For IE and Firefox
        if (e) {
            e.returnValue = msg;
        }
    
        // For Safari / chrome
        return msg;
    }
    

    不过,可以在不同的浏览器上进行尝试。您会注意到消息的构造应该根据不同浏览器的对话框措辞而有所不同。

    我用的是:

    if (IsChrome) {
        return 'You were in the middle of editing. You will lose your changes if you leave this page';
    } else {
        return 'You were in the middle of editing. Press OK to leave this page (you will lose your changes).';
    }
    
        3
  •  1
  •   Pekka    15 年前

    浏览器负责显示确认窗口。 您需要返回包含您想要询问的消息的字符串。另外,您可能想使用 onbeforeunload 为了跨浏览器的兼容性。