javascript - window.location重新加载页面后如何激活onbeforeunload?

标签 javascript jquery onbeforeunload

我在我的项目中使用onbeforeunload。但是,有一个部分用户可以单击链接并下载报告。在触发 window.location 之前,我设置了 window.onbeforeunload = null 这样用户就不会收到带有离开或留下问题的警报/确认框。一旦他们点击报告并下载文件,如果他们尝试关闭浏览器,就会出现问题 onbeforeunload 不会再次触发。下载报告后如何触发 onbeforeunload?这是我的函数的示例:

function getReport(){
    var fileName = $(this).prop('id'),
    param = 'rptFile=' + fileName;  

    try{
        window.onbeforeunload = null;
        window.location = '/'+pathname+'/APPS/entry.cfm?idx=5&' + param;
    }catch(err){
        alert("An error occurred retrieving the file.");
    }
};

我正在重新加载的主页entry.cfmdocument.ready函数,其中我有onbeforeunload函数。我预计一旦使用 window.location 下载报告,onbeforeunload 将再次触发。所以我不确定我是否做错了什么,或者这对于 JS 来说是不可能的。这是 entry.cfm 示例:

$(document).ready(function() {
    window.onbeforeunload = function () {
        return 'Are you sure you want to leave?';
    }
});

如果有人知道如何再次触发 onbeforeunload 请告诉我。谢谢!

最佳答案

这会起作用,不要 null window.onbeforeunload 只需将 window.location 替换为 window.open > 在新选项卡中打开报告。

function getReport() {
  try {
    window.open('https://via.placeholder.com/350x150/ee5533', '_blank');
  } catch (err) {
    alert("An error occurred retrieving the file.");
  }
};


window.onbeforeunload = function() {
  return 'Are you sure you want to leave?';
}

$('.dwl').on('click', getReport );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a class="dwl">Try to download in new tab</a>

关于javascript - window.location重新加载页面后如何激活onbeforeunload?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47839842/

相关文章:

javascript - 在任何情况下都防止 onbeforeunload 关闭页面

javascript - 返回从 NodeJS 监听器派生的值

javascript - 使用greasemonkey重定向到域中的页面

javascript - 有没有办法测试 jqGrid 是否有数据?

javascript - 将值从一个对象复制到另一个对象,忽略新属性

javascript - 单击 div 外部时删除了类,但关闭 div 时保持删除状态

javascript - 系统关闭时 localStorage 未被清除

javascript - 如何防止window.onbeforeunload事件被按钮和链接事件触发

Javascript函数执行同步

javascript - splitter - 调整特定节点的大小