如何在 window.location 重新加载页面后激活 onbeforeunload?
How to activate onbeforeunload after window.location reloads the page?
我在我的项目中使用 onbeforeunload
。但是有一个部分,用户可以单击 link 并下载报告。在 window.location
被触发之前,我设置了 window.onbeforeunload = null
这样用户就不会得到 alert/confirm 框,其中包含离开或留下的问题。一旦他们点击报告并下载文件,如果他们尝试关闭浏览器,就会出现问题 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 将再次触发。所以我不确定我是不是做错了什么,或者这对 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>
我在我的项目中使用 onbeforeunload
。但是有一个部分,用户可以单击 link 并下载报告。在 window.location
被触发之前,我设置了 window.onbeforeunload = null
这样用户就不会得到 alert/confirm 框,其中包含离开或留下的问题。一旦他们点击报告并下载文件,如果他们尝试关闭浏览器,就会出现问题 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 将再次触发。所以我不确定我是不是做错了什么,或者这对 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>