jQuery beforeunload 自定义弹出窗口用于离开页面

2024-05-14

您好,我想自定义离开页面的弹出窗口,有什么简单的方法可以做到这一点吗?

我正在使用简单的 jQuery

$(document).ready(function() {
    var myPopUp = $('#pop-up').css('display', 'block');
    $(window).bind('beforeunload', function(){
      return 'load my pop up here instead of the default browser message';
    });
});

我的弹出窗口的 html 是默认隐藏的

<div id="pop-up">
  <h2>Are you sure wanna leave</h2>
  <a href="#">Leave</a>
  <a href="#" class="close">Stay</a>
</div>

Thanks


简短回答:你不能.

更长的答案: 由于相当明显的“安全”原因,当用户尝试离开页面/关闭选项卡或以任何其他方式离开网站时,您可以执行的操作非常有限。

原因是浏览器想要绝对确保您无法阻止用户关闭他/她的选项卡或窗口wants关闭.

因此onbeforeunloadjavascript 事件 - 以及扩展beforeunloadjQuery 事件 - 它们能做的事情极其有限。他们肯定的事情之一cannot要做的就是阻止页面关闭 - 除非使用浏览器(通常)允许的一种非常标准化且相当无聊的方法。

有些浏览器允许您指定一条消息,而其他浏览器(包括 Firefox)甚至不允许您更改该消息(因为您可能会通过询问“我可以收养您未出生的儿子吗?”来欺骗用户)...据我所知,大多数浏览器都允许您指定您选择的字符串此外为无法更改的标准消息。有些浏览器(不是主要的桌面浏览器)甚至完全没有该事件。

您想要实现的基本上是强迫用户留在您的页面上,然后显示一个漂亮的弹出窗口,要求他们确认......虽然这在很多情况下肯定可以改善用户体验,但您并没有这样做不必费力去想象如何滥用它来根本不允许用户离开。

想想破坏后退按钮的网站是多么烦人,然后想象一下它们甚至可以消除您关闭选项卡的能力!

我偶然发现来自一位用户的相当有趣的论坛问题,他花费了大量的时间试图防止哪怕是一点点的烦恼can添加 - 简短摘录:

我不喜欢 onunload 和 onbeforeunload。我认为他们不应该 曾经在我安装的 Firefox 上被解雇过。我不认为有任何 这些事件的有用应用,甚至不是仁慈的“你有 未保存的工作!”弹出窗口。当我告诉我的网络浏览器关闭网页时, 我不希望网页阻止(或延迟)浏览器 永远关闭它。

只是添加一点官方信息:

mozilla.org:WindowEventHandlers.onbeforeunload https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload:

自 2011 年 5 月 25 日起,HTML5 规范规定调用 window.alert()、window.confirm() 和 window.prompt() 方法可能是 在此事件期间被忽略。有关更多信息,请参阅 HTML5 规范 细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery beforeunload 自定义弹出窗口用于离开页面 的相关文章

随机推荐

  • CSS Font-Face url 不起作用?

    我在使用 font face 选择器时遇到了一些问题 我有以下问题 font face font family MuseoSans 700 src url http mysite co uk clients reload Images st
  • 播放选定的音频,同时暂停/重置其他音频

    我有两个通过按钮的单击事件播放的音频元素 如果选择了另一个元素 我已成功地暂停其中一个元素 但还需要将暂停元素设置回 0 0 秒 即暂停和重置 我知道 Javascript 目前没有stop 导致的方法假设这将通过设置其来完成current
  • 反转java String.split()效果的方法? [复制]

    这个问题在这里已经有答案了 我正在寻找一种将字符串数组组合成分隔符的方法 细绳 与 split 相反 在我尝试自己编写之前想询问一下论坛 因为 JDK 拥有一切 据我所知 JDK 中没有任何方法可以实现这一点 阿帕奇公共语言 http co
  • 如何将从 date_parse 返回的日期数组转换回日期字符串

    我有一个由 php 例程 date parse 返回的格式的日期数组 我需要将此日期数组转换回日期字符串 我正在寻找一个与 date parse 例程相反的函数 这是一个接受日期数组作为参数并返回日期字符串的函数 http php net
  • Sencha Touch 和远程服务器上的身份验证

    我希望收到您关于使用 PhoneGap 和 Sencha Touch 的应用程序以及带有 Active Directory 的 NET 服务器的身份验证机制的反馈 因此 我们需要在移动设备上存储用户凭据 以便用户每次希望使用该应用程序时都不
  • 运行时错误“1004”:对象“_Global”的方法“Range”失败

    我在使用 Excel 时遇到问题 有一个生成参考号的表单 但是当我尝试生成参考号时 它有一条错误消息 运行时错误 1004 对象 Global 的方法 Range 失败 当我点击 调试 按钮时 它显示的代码如下 它突出显示代码第 4 行的错
  • React Native ios运行问题

    我是反应本机和运行新手yarn ios我的 React Native 项目不断失败并出现以下错误 构建失败 以下构建命令失败 编译C Users gift Library Developer Xcode DerivedData gainer
  • Mongodb聚合数组大小大于匹配项[重复]

    这个问题在这里已经有答案了 我有一个集合 其中投资是 mongodb 文档内的一个数组 现在使用聚合 我尝试过滤投资长度超过 5 倍的结果 然后使用匹配查询进行下一步处理 Collection id 000000 investments h
  • 使用“mvncompilejib:build”推送到 Docker 注册表失败

    我正在尝试使用以下命令构建并将我的 docker 映像部署到私有注册表谷歌联合投资银行Maven 插件 但是 它因访问私有注册表时出现问题而失败 我已经安装了Docker 桌面 v19 03 1 on my Windows 10机器 接下来
  • 使用相同的 props 来反应备忘录重新渲染?

    有一个相当简单的功能组件 如果给出相同的道具 我想阻止它被重新渲染 下面是网上找的 貌似不行 知道我应该做什么吗 就我而言 props 由一组对象组成 其中一些也是嵌套对象 这也许是一个线索 export const DataTable R
  • 运行时错误“1004”:无法获取 WorksheetFunction 类的 Combin 属性

    我在 Excel 2013 的工作簿中有 VBA 函数 可以根据泊松分布计算 p 值 当 的时候events下面代码中的变量超过 1029 我得到运行时错误 1004 无法获取 WorksheetFunction 类的 Combin 属性
  • 此 bash 命令在 Makefile 中未正确运行

    在 Makefile 里面我有这样的 release version poetry version cut f2 d echo release version 如果我运行 我的终端中的语句将毫无问题地运行 gt version poetry
  • 为什么我的 Facebook 访问令牌突然停止工作? “OAuthException:验证访问令牌时出错。”

    我有一个 iframe Facebook 应用程序 它使用 Facebook PHP SDK 进行身份验证并进行 api 调用 在身份验证过程中 系统会提示用户输入基本信息和离线访问 如果他们允许我的应用程序访问 Facebook 会将它们
  • 如何在php中正确显示另一种语言的mysql表数据

    我有一个 mySQL 表 其中一列中的数据采用英语以外的语言 波斯语 当我在表中输入数据时 它会正确显示 但是当我想在 php 文件中显示数据时 它会显示如下 好吧 我应该怎么做才能以正确的形式显示数据 由于我经常使用 非英语 字符 因此要
  • StreamBlock StreamField 中的 content_panels

    我定义了一些自定义 StreamField 块 我希望该选项能够折叠自定义块中的某些属性 就像我可以使用 content panels 对标准页面模型所做的那样 但我不认为这是受支持的 正确的 如果不为管理页面编写一些自定义 css js
  • C++ POD 类型有 RTTI 吗?

    据我了解RTTI是如何在各种C 编译器 例如GCC 中实现的 指向type info数据存储在vtable各班级的数据 也正如提到的here https stackoverflow com questions 1963926 when is
  • 如何实现 JsDoc 多重继承或 mixins?

    如何记录 mixin 或多重继承 class Parent function Parent Parent prototype parentTest 5 class Mixin function Mixin Mixin prototype m
  • 有关 window.history.pushState 的帮助

    我需要语法方面的帮助 我的网站使用 AJAX 在 board div 中加载博客文章 然后单击 close 将其关闭 当我加载帖子时 网址变成这样http www visualise ca anne au cherry http www v
  • Flutter Firebase 身份验证 currentUser() 返回 null

    这是关于 Flutter Firebase 身份验证插件的 我试图在创建新用户后发送验证电子邮件 但 sendEmailVerification 内部使用 currentUser 这对我来说似乎是一个错误 但为了以防万一 我在 stacko
  • jQuery beforeunload 自定义弹出窗口用于离开页面

    您好 我想自定义离开页面的弹出窗口 有什么简单的方法可以做到这一点吗 我正在使用简单的 jQuery document ready function var myPopUp pop up css display block window b