如何激活窗口后的beforeunload.location重新加载页面



我在项目中使用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?';
    }
});

如果有人知道如何再次触发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>

最新更新