如何使我自己的页面禁用“onbeforeunload”功能,仅适用于外部页面?

时间:2017-01-23 19:23:27

标签: javascript onbeforeunload

如何为我自己的页面禁用onbeforeunload功能,仅适用于外部页面? 如何禁用 OG Sean 在此处提供的代码:"Are you sure you want to leave this page?" functions for cancel and OK

<script>
    window.onbeforeunload = function(e) {
      return 'Are you sure you want to leave this page?  You will lose any unsaved data.';
    };
</script>

对于我的所有子页面(domain.com/shop; domain.com/about-us;和domain.com/contact),并且只在您点击“x”按钮关闭页面时启用它? 或者当您尝试在地址栏中键入其他URL时?

事先感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

好的,promised我将解释此问题中给出的解决方案:Confirm Leave on External Links in Wordpress

onbeforeunload事件的特殊之处在于您无法取消它或以有意义的方式干涉。如果用户想要离开,他们将离开,浏览器不会让您干涉比显示框更多。这是一个安全问题,因此您无法在应用中保留用户。

你能做的是:

  1. 有一个onbeforeunload事件,返回一些东西(任何东西),这样当用户键入新地址或以其他方式导航时,您可以使用浏览器默认框警告它们
  2. 聆听应用中的每个链接,并使用自定义框阻止这些链接。
  3. 如果用户确定,请禁用onbeforeunload,这样他们就不必再点击两次。
  4. 我做了一个[小jsfiddle演示](https://jsfiddle.net/6672ovrn/3/)(用[F12]打开开发工具来查看控制台输出)。 S.O.回答我链接起来的方式相同,但它使用jquery的$("a").on("click", func(){});自动将检查添加到所有<a>,而不是在html中的任何地方都有<a href="..." onclick="check" >go!</a>

    希望有所帮助。