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

问题描述 投票:0回答:1

我在我的项目中使用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.cfm的主页有document.ready函数,我有onbeforeunload函数。我预计一旦下载报告与window.location然后onbeforeunload将再次触发br。所以我不确定我做错了什么,或者JS不可能做到这一点。这是entry.cfm的例子:

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

如果有人知道如何再次触发onb​​eforeunload,请告诉我。谢谢!

javascript jquery onbeforeunload
1个回答
1
投票

这将工作,不要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>
© www.soinside.com 2019 - 2024. All rights reserved.