首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在window.location重新加载页面后在卸载前激活How?

如何在window.location重新加载页面后在卸载前激活How?
EN

Stack Overflow用户
提问于 2017-12-15 21:05:00
回答 1查看 1K关注 0票数 0

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

代码语言:javascript
运行
复制
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.cfm的主页上有document.ready函数,其中有onbeforeunload函数。我预计,一旦用window.location下载了报告,那么在卸载之前会再次触发br。所以我不确定我是不是做错了什么,或者用JS是不可能的。下面是entry.cfm示例:

代码语言:javascript
运行
复制
$(document).ready(function() {
    window.onbeforeunload = function () {
        return 'Are you sure you want to leave?';
    }
});

如果有人知道如何在卸货前触发,请告诉我。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-15 21:37:01

这是可行的,不要null window.onbeforeunload只是将window.location替换为window.open来打开新选项卡中的报表。

代码语言:javascript
运行
复制
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 );
代码语言:javascript
运行
复制
<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>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47839842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档