【问题标题】:Can I "redirect" user in onbeforeunload? If can't, how to?Javascript,我可以在 onbeforeunload 中“重定向”用户吗?如果不能,怎么办
【发布时间】:2010-11-27 09:25:10
【问题描述】:

当用户关闭浏览器时是否可以重定向到另一个页面?

尝试:

  1. 我试过onunload,不行

    window.onunload = function redirect(){...}
    
  2. 我也试过另一种方法,还是不行:

    window.onbeforeunload = redirect(){...}
    
  3. <body onbeforeunload="return false; redirecty()">

第三种方法,我想取消onbeforeunload(意味着延迟关闭浏览器),我调用重定向函数window.confirm,如果是重定向,如果不是则关闭浏览器。但它也不起作用。

还有其他方法吗??可能提示让用户在关闭浏览器时选择是否重定向到新页面?我的想法不多了...

【问题讨论】:

  • 当用户尝试关闭浏览器时被重定向到一个页面,这会让用户[至少对我而言]很恼火。
  • 我不是强制重定向,我会提示让用户选择是否重定向,每台电脑只调用一次
  • 浏览器还是会关闭。浏览器关闭时重定向有什么意义?无论如何用户都不会看到它。

标签: javascript browser redirect


【解决方案1】:

它不是没有缺点,但它有效

window.onbeforeunload = function(){
        window.open("http://www.google.com","newwindow");
        return "go to google instead?";
}

当用户关闭页面时,这将打开一个新窗口作为您选择的地址的弹出窗口,尽管它受到浏览器可能实施的任何弹出窗口阻止程序的限制。

【讨论】:

    【解决方案2】:

    您的 onbeforeunload 事件需要返回一个字符串(不等于 false),浏览器会将这个字符串包含在自己显示给用户的消息中。

    window.onbeforeunload = function(){
            location.assign('http://www.google.com');
            return "go to google instead?";
        }
    

    但是,以一种用户能够理解该做什么的方式来表达您的信息将非常棘手。而且我不确定这在每个浏览器中是否强大,我只是在 Chrome 中尝试过,它有效,但我最终得到了一个无法关闭的选项卡!谢天谢地,我设法通过 Chrome 任务管理器杀死了它。

    【讨论】:

    • 不确定它发布时是哪个版本的 Chrome,但它不适用于 20.0.11。消息仍然出现,但重定向没有。
    • 那时真的无能为力。公平地说,这个要求是可疑的。
    【解决方案3】:

    简单的答案是否定的。如果浏览器允许您使用 onbeforeunload/onunload 事件做更多事情,那么任何人都可能非常恶意地使用它。

    【讨论】:

    • 答案是肯定的。只是我们不知道该怎么做。
    【解决方案4】:

    如果用户试图关闭浏览器,那么他的意图很明确;他预计浏览器会关闭。防止这种情况发生,或导致在用户单击“关闭”和浏览器关闭之间发生任何其他事情只是 IMO 的一个坏主意。这有什么特殊原因吗?我的意思是,当我单击“关闭”按钮时,我希望浏览器会关闭,如果发生其他任何事情,我会觉得这非常烦人。我觉得我说得够有道理。我是吗?谁知道这样的事情。

    您为什么不尝试以较少干扰的方式吸引用户访问其他页面?比如链接或横幅?

    【讨论】:

    • 用户询问是否可以这样做。不是你想的那样。他可能有自己的原因,或者内网应用。
    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2021-11-07
    • 2012-11-08
    相关资源
    最近更新 更多