Firefox 中的 window.onbeforeunload 支持

2023-12-14

我在 JavaScript 中使用 window.onbeforeunload 。 这在 IE 中完美运行,但在 Firefox 中不会触发。

我检查了 stackoverflow 中的不同链接......在其中我读到 firefox 不支持 window.onbeforeunload 。这是真的?

如果是,您能否告诉我在关闭浏览器时调用 app.deleteAccount(key) 的不同方式。这是我的 JavaScript。请查看deleteFile() 和dontDeleteFile() 方法。

<script type="text/javascript">
//Event handler for body onload
function confirmDeleteFile(){
    var secured =document.r_form.Secure[1].checked;
    alert("confirmDeleteFile : "+secured);
    if(secured){
     var agree=confirm("Are you sure you wish to continue?");
     if (agree){
      //document.form1.submit();
      return true;
     }
     else
     return false ;
    }
  //  submitForm();
    return true;
   }
function deleteFile() {
 alert('inside deleteFile() but outside window.onbeforeunload');
window.onbeforeunload = function(){
 var key = DOMAIN+'::' + elem('userName').value;
alert('inside deleteFile()');
    app.deleteAccount(key)  
    alert('Unloading!');
   } 
}
function dontDeleteFile() {
 alert('inside dontDeleteFile() but outside window.onbeforeunload');
 window.onbeforeunload = function(){ 
  alert("Not deleting"); 
    } 
 }

function validateFormOnSubmit(theForm) {
var reason = "";
var userName = theForm.username.value;
var pin = theForm.pin1.value;
var PAM = theForm.pam.value;
var organization = theForm.organization.value;
//reason += validateUsername(theForm.username);
reason += validateEmpty(theForm.pam);
reason += validatePinMatch(theForm.pin1,theForm.pin2);
reason += validatePin(theForm.pin1,theForm.pin2);
if (reason != "") {
if(!confirmDeleteFile()){
 return false;
}
alert("Some fields need correction:\n" + reason);
return false;
}
else{
 if(!confirmDeleteFile()){
  return false;
 }

<% String url  =  request.getServerName().toString();
 int port = request.getServerPort();
 String contextPath = request.getContextPath();
%>
 var servlet = "arcotebank.az"; //AroctEBanking Servlet
  var url = BASE_URL + '/' + servlet;
     var query = 'lang=en&reqid=1&version=1.1';
     query += '&device=' + urlEncode(navigator.userAgent);
     query += '&uid=' + urlEncode(userName);
     query += '&code=' + urlEncode(PAM); 
     query += '&pin=' + urlEncode(pin);
     query += '&usePin=' + usePin+'&method=arcotOTPEnroll&organization='+organization; 
//alert("url=>"+url + '?' + query);
  var xml = app.openUrl(url + '?' + query) + '';
  //alert("xml=>"+xml);
  if(appError()){
    alert("applet error");
  }
var domain = getDomain(url);
app.provisionAccount(domain, xml);
  if(appError()){
    alert("applet error");
   }
var acc = app.getAccount(DOMAIN + '::' + userName);
     if(acc!=null){
     <%String formSubmitAction1 =
            URLEncoderDecoder.encodeURL(
                        formAction,
                        "Action.2FA.Arcot.Navigation.LogoutActionCalled=Y",cm);%>
                theForm.action ='<%=formSubmitAction1%>';
                var secured =document.r_form.Secure[1].checked;
               alert("line 131 "+secured);
                if(secured){
                 deleteFile();
    }else{
    dontDeleteFile();
    }               
       theForm.submit();
     }else{
    document.getElementById("error").innerHTML = "Failed to Create ArcotOTP";
     }
}
}
function resetForm(){
     var form = document.forms[0]; 
     form.username.value = '';
     form.pam.value = '';
     form.pin1.value = '';
     form.pin2.value = '';
  }
function validateUsername(fld) {
var error = "";
var illegalChars = /\W/; // allow letters, numbers, and underscores

if (fld.value == "") {
fld.style.background = 'Yellow';
error = "You didn't enter a username.\n";
} else if ((fld.value.length < 5) || (fld.value.length > 15)) {
fld.style.background = 'Yellow';
error = "The username should contain more than 4 characters.\n";
} else if (illegalChars.test(fld.value)) {
fld.style.background = 'Yellow';
error = "The username contains illegal characters.\n";
} else {
fld.style.background = 'White';
}
return error;
}
function validateEmpty(fld) {
 var error = "";

 if (fld.value.length == 0) {
 fld.style.background = 'Yellow';
 error = "You didn't enter Personal Assurance Message \n"
 } else {
 fld.style.background = 'White';
 }
 return error;
 }

function validatePin(pin1,pin2){
 var error="";

   if(pin1.value!=pin2.value){
    pin1.style.background = 'Yellow';
    pin2.style.background = 'Yellow';
    error += "Pin numbers dont match\n";
     //alert("Pin numbers dont match");

     }
     return error;

 }
 function validatePinMatch(pin1,pin2){
 var error="";
 if(pin1.value==""){
  //elem('otp').style.background = 'Yellow';
  pin1.style.background = 'Yellow';
  error += "Pin number cannot be empty\n";
  //alert("Pin number cannot be empty");

  }
 if(pin2.value==""){
  //elem('otp').style.background = 'Yellow';
     pin2.style.background = 'Yellow';
  error += "Confirm Pin number cannot be empty\n";
  //alert("Pin number cannot be empty");

  }
  return error;
 }

</script>

请注意,在 Firefox 4 及更高版本中,返回的字符串不会向用户显示。请参阅错误 588292。

https://developer.mozilla.org/en/DOM/window.onbeforeunload

也许这就是造成您问题的部分原因。另外,页面上的示例可能更适合跨浏览器兼容性?

window.onbeforeunload = function (e) {
  var e = e || window.event;

  // For IE and Firefox prior to version 4
  if (e) {
    e.returnValue = 'Any string';
  }

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

Firefox 中的 window.onbeforeunload 支持 的相关文章

  • 如何在 Firefox 控制台中访问附加内容脚本?

    我为 Firefox 和 Chrome 开发了一个插件 它有内容脚本 我想在浏览器选项卡的控制台中访问它们 在 Firefox 上网页控制台 https developer mozilla org en US docs Tools Web
  • tkinter:打开一个带有按钮提示的新窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 用户如何按下 tkinter GUI 中的按钮来打开新窗口 我只需要非常简单的解决方案 如果代码也能被解释那就太好了 这
  • 哪个 Firefox 版本与 Selenium 2.48.0 兼容

    谁能帮我 哪个 Firefox 版本与 Selenium 2 48 0 兼容 Selenium WebDriver 2 48 支持到 firefox 41 0 版本 有关更多详细信息 请查看 selenium webdriver 的更新日志
  • 使用 Firefox 插件 sdk 的 nsISocketTransportService

    我正在尝试使用 Firefox 来读取 SSH 横幅 IE 当您最初连接到 SSH 服务器时 服务器会向您发送其横幅 标识服务器软件 并且您向 SSH 服务器发送您的横幅 标识您的客户端软件 为此 我使用以下 URL 中的示例 firefo
  • 使用 jQuery 选择具有数据属性的元素为其父元素分配一个 null ID

    这确实很奇怪 如果我使用 jQuery find 在滚动事件期间查找具有数据属性的子元素 然后滚动页面将重复添加和删除 IDparents这些元素 这很难描述 但这里有一个可重现的测试用例 http jsfiddle net 8fouvx9
  • 创建可重用的 WINDOW 控件

    好吧 这似乎很难 或者我错过了一些明显的东西 我想创建可重复使用的 WINDOW 它将在所有产品中使用 这意味着该控件位于 WPF Controls 程序集中 Themes Generic xaml 不是一个解决方案 我需要为窗口提供自己的
  • 如何在 Firefox 30 上调试 Greasemonkey 脚本?

    我一直在为 Youtube 开发一个 JavaScript 片段 它使用 Greasemonkey 并且还导入 Bootstrap 和 jQuery 库 该应用程序必须为每个搜索列表结果添加一个按钮 当用户单击该按钮时 它必须带出用户从其频
  • 启动 Firefox 并等待其关闭

    Question 我想启动 Firefox 网络浏览器作为访问特定网站的过程 然后等到它关闭 一种特殊情况是浏览器可能已经打开并正在运行 因为用户可能已经访问过某个网站 在这种情况下 浏览器可能会在现有窗口中打开一个新选项卡 并且新启动的进
  • Firefox 中的 Signalr 连接意外中止

    我正在使用 SignalR 具有跨域请求 2 3 0 版 用于集成到 ASP NET 站点的网络聊天 一切正常 但我发现 SignalR 连接的奇怪行为 当我单击聊天选项卡中的引用进行文件下载时 SignalR 连接被中止 并且在我的 Hu
  • Chrome 和 Firefox 不会在 iframe 中显示大多数 PDF 文档

    我运行的是 Windows 7 64 位 我最近更新了操作系统以安装最新更新 从那时起 大多数 PDF 文档已停止在我的程序中呈现 我的程序想要在单独的 iFrame 中显示 PDF 文档 我通过获取 PDF 文档的 URL 并设置来做到这
  • 删除 IE 中的窗口属性

    我找不到有关此问题的任何信息 为什么下面的代码在 IE 中不起作用 window x 45 delete window x or delete window x IE 报告 对象不支持此操作 错误 这与 IE 问题中窗口属性的迭代有什么关系
  • 防止 Firefox Web 通知自动关闭

    我已经在 Firefox 中将 Web 通知与服务器发送的 DOM 事件结合使用 不幸的是 通知在大约两到三秒后消失 我更喜欢 Chrome 的方法 即让消息保持可见 在任何给定时间最多显示三个 直到用户单击通知 这是我所拥有的 windo
  • 计算 Windows 10 上第 3 方窗口的标题栏按钮的总宽度

    我最初的方法是使用GetSystemMetrics with SystemMetric SM CXSIZE以及一些基于可用按钮的简单数学计算 乘以 3 或乘以 1 通过WindowStyle DllImport user32 dll pri
  • 如何在mozilla firefox上获得线性渐变效果

    我正在使用下面的CSS来获得线性渐变效果 但它在mozilla firefox中不起作用 你们中的任何人都知道它吗 请帮助在firefox中也获得相同的效果 CSS 是 background image webkit linear grad
  • 浏览器特定的 CSS 属性

    在哪里可以找到完整的 浏览器特定 css 属性 参考 我的意思是一些属性 例如 moz border radius这仅适用于 Firefox 或 webkit min device pixel ratio 这些示例仅适用于指定的 Web 浏
  • XMLHttpRequest 上传进度事件在 Firefox 10.0.2 中不起作用

    我正在尝试创建一个带有进度条的基于ajax 的上传表单 这是我的代码 其中的上传部分 xhr new XMLHttpRequest xhr upload addEventListener progress function e if e l
  • CSS 中的 Data-URI SVG 背景在 Firefox 中不起作用

    好的 这就是我想做的 我的 css 文件中有这段代码 form row textfield hover textfield m hover background image url data image svg xml base64 PHN
  • 在网络浏览器上显示 UTF-16 字符

    我打印了一些 UTF 16 编码的字符并尝试在 Firefox 中显示它 它显示为 所以我进入 工具 gt 编码 并将编码从 UTF 8 更改为 UTF 16 我也尝试直接在 HTML 中更改字符集 但是 当我这样做时 我的页面完全被符号淹
  • 如何识别当前打开的每个单独的浏览器窗口?

    如何使用 javascript 唯一地识别当前为所有主要浏览器打开的每个单独的浏览器窗口 让我解释一下我需要了解的内容 并考虑以下场景 我有 3 个当前打开的浏览器窗口 任何现代浏览器 即 Chrome Firefox 等 每个窗口都包含多
  • 我希望 AutoIt 激活 Firefox 中的特定选项卡。如何才能做到这一点?

    我在 Firefox 中打开了几个选项卡 我希望 AutoIt 激活 Firefox 中的特定选项卡 如何才能做到这一点 给予整个浏览器窗口焦点 然后使用 send 命令重复发送 cntl tab 直到窗口的标题是您想要的选项卡的名称 末尾

随机推荐

  • 黑莓录音示例代码

    有谁知道有一个好的存储库可以获取 BlackBerry 的示例代码吗 具体来说 可以帮助我学习录制音频的机制的示例 甚至可能对其进行采样并对其进行一些动态信号处理 我想读取传入的音频 如果需要的话可以逐个采样 然后对其进行处理以产生所需的结
  • 为什么 JavaScript fetch API 的响应对象是一个承诺?

    当使用 JavaScript fetch API 从服务器请求时 您必须执行类似的操作 fetch API then response gt response json catch err gt console log err Here r
  • 按下 UI 按钮时持续运行代码

    我正在做一个平台游戏在 Unity 中 球的移动方式为三个按钮 向右移 向左移动 jump 我已经拥有现在可以使用的所有功能 但要移动角色我需要继续向按钮发送垃圾邮件 而不是像我想要的那样按住它 我尝试了在教程中找到的几种方法 但是由于我仍
  • 从 testcafe 中打开的第 N 个模式中选择“确定”按钮

    我在测试中打开两个模态 我希望能够单击第二个模态中的 确定 按钮 下面 html 中的第二个选定元素 我当前的代码是 import waitForReact from testcafe react selectors import Sele
  • shinyjs - setBookmarkExclude 用于延迟 ID

    我试图从 Shiny 的反应式书签上下文中排除 ShinyJS 延迟 我看到 URL 中的延迟 ID 是自动生成的 并且始终不同 delay ad190e10123bd97f960fed7a8a9e6fde 3000 我试图通过正则表达式排
  • JoyGetPosEx 在 C# 中返回 165

    我尝试用 C 读取 JoyStick 中的数据 只要我使用 jeyGetPos 就可以正常工作 但我需要使用joyGetPosEx 因为它提供了更多数据 例如我需要的操纵杆的旋转 class JoyStick JOYINFO pji JOY
  • php:从 html 获取纯文本 - simplehtmldom 或 php strip_tags?

    我正在考虑从 html 获取纯文本 我应该选择哪一个 php条带标签 or 简单的htmldom明文提取 simplehtmldom 的优点之一是支持无效 html 这本身就足够了吗 strip tags就足够了
  • 合并哈希数组

    我有两个数组 每个数组都包含带有属性哈希的数组 Array1 gt attribute 1 A attribute 2 B attribute 1 A attribute 4 B Array2 gt attribute 3 C attrib
  • 同步安装后节点找不到某些模块

    我有一个在启动时同步安装非内置模块的脚本 如下所示 const cp require child process function requireOrInstall module try require resolve module cat
  • 单例模式 - 默认属性

    我一直在研究设置类中使用的单例模式 以下是我的项目 AccessTest 的 Settings Designer cs 的相关代码 internal sealed partial class Settings global System C
  • 如何检查 IOException 是否为 Not-Enough-Disk-Space-Exception 类型?

    我怎样才能检查是否IOException是 磁盘空间不足 异常类型吗 目前 我检查该消息是否与 磁盘空间不足 之类的内容匹配 但我知道如果操作系统语言不是英语 这将不起作用 您需要检查HResult并测试ERROR DISK FULL 0x
  • 无需轮询即可订阅 MySQL 数据库中的更改

    我有一个由不同应用程序更新的 MySQL 数据库 我想从我的 Node js 服务器订阅该数据库的更改 是否可以监视数据库的任何更新 而无需长时间轮询所有行 列以了解其值的任何更改 我见过的一种可能的解决方案是使用 Redis 订阅数据库以
  • 如何安装边缘导轨?

    如何安装最新的 未发布的 Rails 版本 即边缘导轨 已遵循一些建议 但似乎仍然有版本 2 3 5 你所要做的就是跑rake rails freeze edge在你的项目中 如果您还没有开始项目 另一个选择是 mkdir p foo ve
  • 如何在数据框的每一行上执行函数,并仅将输出的一个元素作为新列插入到该行中

    对两个值进行精确二项式测试很容易 但如果想对一大堆成功次数和试验次数进行测试会发生什么 我创建了一个包含测试敏感性 研究中潜在参与者数量的数据框 然后对于每一行 我计算了成功的可能性 这是代码 sens lt seq from 1 to 5
  • Git - 从 SHA1 查找文件名

    我将一个文件添加到索引中 git add somefile txt 然后我通过以下方式获取了该文件的 SHA1 git hash object somefile txt 我现在有一个 SHA1 我想使用 SHA1 检索索引中对象的文件名 g
  • 当程序状态不断变化时,不可变对象的用处

    我知道不可变对象始终具有相同的状态 即它们实际创建时的状态 它们的不变量是由构造函数建立的 并且由于它们的状态在构造后不会改变 因此这些不变量总是保持良好状态 这就是为什么它们可以安全地在多线程环境中发布 这一切都很好 但是由于我们生活在一
  • 从 .NET 程序与 ffmpeg 交互 - 写入输入

    在参照this问题 正如您所看到的 我设法运行该程序并从该程序接收数据 然而 我没有设法向它提交数据 例如 在转换文件时 按q立即停止转换并停止程序 我需要我的应用程序也支持停止该过程 我认为这应该通过将此参数传递给 ffmpeg 应用程序
  • 在 PrimeNG 中单击多选下拉列表内的字段时禁用多选下拉列表关闭

    我正在处理一个使用 PrimeNG 多重选择的需求 该多选有复选框 后面跟着一些文本和徽标 单击徽标后 我将在弹出窗口中显示一些数据 单击弹出窗口的 确定 按钮时 背景多选将关闭 其中我需要禁用单击徽标时关闭弹出窗口 这里是 stackbl
  • 将通用应用程序作为缩放的 iPhone 应用程序运行?

    我已经看到了大量有关将 iPhone 和 iPad 应用程序合并为通用应用程序的问题和答案 但这不是我想要做的 我要做的是在应用程序购买中使用来解锁 iPad 界面 然后使用条件显示正确的界面 如果购买了该界面 应用程序将显示 iPad 笔
  • Firefox 中的 window.onbeforeunload 支持

    我在 JavaScript 中使用 window onbeforeunload 这在 IE 中完美运行 但在 Firefox 中不会触发 我检查了 stackoverflow 中的不同链接 在其中我读到 firefox 不支持 window