我有一个页面,该页面打开一个弹出窗口并加载一些URL。我也监视此弹出窗口,以便在它关闭时可以调用一些Ajax请求。代码如下:-
self.formsubmitAction = function () {
window.popup = window.open('about:blank','_blank');
window.popup.document.write('<div><img style="margin-right: auto;margin-left: auto;width: 150px;display: block;margin-top: 20%;" src="/ca/ui/resources/images/loading4.gif"></div>');
};
现在,还有另一个函数可以为弹出窗口提供打开链接。
self.downLoadSubmitFlag.subscribe(function (submitFlag) {
$.ajax({
type:'POST',
url:'/ca/service/api/transaction/initiateDownloads',
data:$('[name="dnldJsonInput"]').val(),
dataType:'json',
contentType: 'application/json; charset=utf-8',
success:function(data){
window.popup.location = '/ca/ui/download.jsp';
},
error:function(){
console.log('Error');
}
});
});
此弹出窗口关闭时,我需要调用服务,因此我使用下面所示的代码块对其进行监视:-
var timer = setInterval(checkChild, 500);
function checkChild() {
console.log('Monitoring the download')
if(window.popup){
if (window.popup.closed) {
console.log('Inside the cancellation serive');
$.ajax({
type: "POST",
url: 'https://' + document.domain + '/ca/service/api/transaction/cancelDownload',
success: function(data) {
self.downloadVisible(1);
self.disableDownload(false);
self.disableDownloadStatus(false);
self.downloadButtonTitle("Download");
window.popup=null;
console.log('Execute the Cancel Download Service');
}
});
clearInterval(timer);
}
}
}
现在,加载的URL已经具有JavaScript。即download.jsp的脚本如下:-
$(window).on('beforeunload', function() {
return 'Your own message goes here...';
});
但是,当用户尝试关闭选项卡或刷新时,这不会触发确认框。我不确定我在做什么错,这是由于动态加载的弹出窗口吗?
请帮助,当有人离开页面或关闭弹出标签时,我需要使此弹出窗口产生一个确认框。