Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 离开页面前询问用户确认的最佳方式_Javascript_Javascript Events - Fatal编程技术网

Javascript 离开页面前询问用户确认的最佳方式

Javascript 离开页面前询问用户确认的最佳方式,javascript,javascript-events,Javascript,Javascript Events,我目前正在建立一个注册页面,如果用户离开,我想弹出一个CSS框,问他是否确定。我可以使用确认框来完成这个壮举,但是客户说它们太难看了。我尝试过使用unload和beforeunload,但两者都无法阻止页面重定向。使用这些事件,我返回false,那么除了返回false之外,可能还有一种取消的方法 我遇到的另一个解决方案是将他们重定向到另一个有我的弹出窗口的页面,但问题是,如果他们确实想离开该页面,并且这不是一个错误,他们会丢失他们最初试图访问的页面。如果我是一个用户,这会激怒我 最后一个解决方案

我目前正在建立一个注册页面,如果用户离开,我想弹出一个CSS框,问他是否确定。我可以使用确认框来完成这个壮举,但是客户说它们太难看了。我尝试过使用unload和beforeunload,但两者都无法阻止页面重定向。使用这些事件,我返回false,那么除了返回false之外,可能还有一种取消的方法

我遇到的另一个解决方案是将他们重定向到另一个有我的弹出窗口的页面,但问题是,如果他们确实想离开该页面,并且这不是一个错误,他们会丢失他们最初试图访问的页面。如果我是一个用户,这会激怒我

最后一个解决方案是真正的弹出窗口。我唯一不喜欢的是,主winow将有他们的目标页面,而pop将有我的页面。在我看来,它看起来是不相交的。除此之外,我还担心弹出窗口拦截器

只是为了增加大家的评论。我理解阻止用户退出页面是令人恼火的,我认为不应该这样做。现在我正在使用一个确认框。发生的事情是,它实际上并没有“阻止”用户离开,客户实际上想要做的是,如果用户对注册有疑问,就提出建议。如果用户在注册过程中中途离开,客户希望向用户提供参加研讨会的免费优惠券(该客户正在销售研讨会),希望说服用户注册。客户的印象是,由于用户已经在表单上,他正在考虑注册,因此,也许一个关于他注册目的的研讨会将是让用户注册的最终推动。理想情况下,我不必阻止用户离开,这同样好,我认为最好是暂停卸载过程。也许是睡眠命令?我真的不必让用户留在页面上,因为无论哪种方式,他们都会离开去另一个页面


此外,正如人们所说,这是一个可怕的标题,因此如果有人知道一个更好的,我真的很感激他们能将标题改成一个不那么吸引垃圾邮件发送者的标题。

当我看到“阻止用户”这个词时,我开始痛苦地哭泣永远不要阻止用户,只帮助他们

如果他们看到你的注册页面就跑掉了,那是他们的选择。如果他们已经填写了一些数据(因为他们可能是无意中导航离开的),则弹出一个javascript确认框,但保持不变。如果他们没有碰过表格,就别碰他们——他们不想填写你的表格

看看其他吸引用户的方法。如果你的表单很大,很吓人,把它分解成简单的可管理的块,或者更好的是,把事情简化到用户只在你需要的时候才给你数据。例如,您可能不需要他们的地址,直到您想向他们发布内容

通过将其分解为多个部分,您可以用一个简单的表单将其挂钩,一旦他们投入了时间,他们就更有可能继续此过程

但不要骚扰用户。如果他们不想注册,用弹出窗口和jaavscript对话纠缠他们只会把他们完全赶出网站。

考虑到这一点,假设你只是试图阻止人们一半地填写表格,那么有几个选项可以真正帮助人们:

  • 检测表单是否已更改,并询问他们一条简单的
    confirm()
    消息

    这就是你所能做的。CSS“pop-in”无法工作,因为您无法在卸载事件中控制*窗口位置

    *您可以在页面的所有链接上放置一个事件侦听器来启动某些内容以检查表单,但这只有在用户单击其中一个链接时才有帮助。例如,如果用户单击“上一步”或关闭窗口,则不会有任何帮助。您可以同时使用CSS和javascript,但最终会有点混乱

  • 在幕后保持窗体的状态

    对#1的扩展。与其与用户争吵,不如让他们去他们想去的地方,但将表单内容保存到会话或cookie(如果合适的话),并在页面上放置一些东西(比如页面顶部的橙色提示栏),提醒他们已经开始填写表单,并给他们返回表单的链接

    当他们单击该链接时,您将数据从cookie(或会话)加载回表单,并让他们继续。这有一个明显的好处,那就是让他们在你的网站上做他们喜欢做的事情,并保证数据的安全。。伊什

    如果他们不回来,他们的cookie/会话过期,那是他们的错。你只能把马牵到水边。强迫它喝酒不是你的工作


  • 如果要捕获链接,可以重写页面中的链接,转到“you real want to leave?”javascript函数,将目标URL作为参数传递

    如果您想阻止用户使用“后退”按钮,或阻止他们在地址栏中添加其他URL,停止。立即停止。(1) 浏览器就是为了防止这种令人讨厌的行为而设计的,(2)即使允许,也要看(1)的最后两个词太粗鲁了。无论你觉得你的网站有多酷,你的网站都没有那么特别。

    不要这样做

    但是如果你想,试试这个。记录鼠标位置并检测快速向上的推力——用户正在接近大X或左上角或右上角。现在你可能有机会在屏幕上看到一个不引人注目的方框


    我在网上看到过这个工具,它是邪恶的。

    您可以使用
    document.location.href=“www.website.com”
    更改url的值。不是所有浏览器都支持模式弹出窗口,没有模式弹出窗口,您的页面将无法打开
    window.onbeforeunload = function() { return "Message"; };