Javascript 关闭脚本执行结束时的弹出窗口
我有一个php页面来创建excel文件并将其保存到文件夹中。我从一个页面开始,用户点击一个按钮来启动脚本。我的目标是执行以下步骤:Javascript 关闭脚本执行结束时的弹出窗口,javascript,Javascript,我有一个php页面来创建excel文件并将其保存到文件夹中。我从一个页面开始,用户点击一个按钮来启动脚本。我的目标是执行以下步骤: 在另一个窗口中运行脚本(我现在使用一个小弹出窗口) 当脚本结束时,关闭弹出窗口,并在主窗口中显示一个警报,表示执行正常 警报关闭时,刷新主窗口中显示的文件列表 我知道如何做所有这些事情,只有一件:当脚本在弹出窗口中结束时,如何触发任何事件(弹出窗口关闭和警报? 弹出窗口的实际代码如下所示: $('#elabora').click(function(e){ e
$('#elabora').click(function(e){
e.preventDefault();
var data = $('#data_rif').val();
if (data=='') {
$("#spnmsg").fadeTo(200,0.1,function(){
$(this).removeClass().addClass('spn_error').html("Inserisci una data di riferimento per l'elaborazione").fadeTo(900,1);
});
}else{
window.open('sofferenze/trxls.php?data='+data, "popupWindow", "width=10,height=10");
//here is where I want to trigger that when trxls.php ends the alert should be displayed.
}
});
脚本(仅限开头和结尾)
您在卸载之前是否尝试过使用on
window.onbeforeunload = function (event) {
// ...
}
编辑:只需将此事件添加到打开的窗口中,如下所示:
$('#elabora').click(function(e){
e.preventDefault();
var data = $('#data_rif').val();
if (data=='') {
$("#spnmsg").fadeTo(200,0.1,function(){
$(this).removeClass().addClass('spn_error').html("Inserisci una data di riferimento per l'elaborazione").fadeTo(900,1);
});
}else{
var wndRef = window.open('sofferenze/trxls.php?data='+data, "popupWindow", "width=10,height=10");
wndRef.onbeforeunload = function (event) {
// Show your alert
}
}
});
编辑:您可以从脚本关闭窗口。事实上,浏览器不允许关闭当前打开的窗口。您应该从调用者处调用close函数,但这里有一个关闭它的小技巧,无论如何,请使用此函数:
function close_popupWindow() {
window.self.opener = window.self;
window.self.close();
}
您在卸载之前是否尝试过使用on
window.onbeforeunload = function (event) {
// ...
}
编辑:只需将此事件添加到打开的窗口中,如下所示:
$('#elabora').click(function(e){
e.preventDefault();
var data = $('#data_rif').val();
if (data=='') {
$("#spnmsg").fadeTo(200,0.1,function(){
$(this).removeClass().addClass('spn_error').html("Inserisci una data di riferimento per l'elaborazione").fadeTo(900,1);
});
}else{
var wndRef = window.open('sofferenze/trxls.php?data='+data, "popupWindow", "width=10,height=10");
wndRef.onbeforeunload = function (event) {
// Show your alert
}
}
});
编辑:您可以从脚本关闭窗口。事实上,浏览器不允许关闭当前打开的窗口。您应该从调用者处调用close函数,但这里有一个关闭它的小技巧,无论如何,请使用此函数:
function close_popupWindow() {
window.self.opener = window.self;
window.self.close();
}
如果希望在脚本结束时在新窗口中执行某些操作,请按照Ludvoic的建议使用onbeforeunload
另一方面,如果您希望在子页面运行脚本后在父页面中执行某些操作,则情况就不同了。您在问题中暗示了这一点,因此将回答此场景
您可以使用localstorage
,前提是两个页面都来自同一个域。脚本运行完毕后,子页面可以更新一个值。父页面可以监听存储
事件,以了解该事件何时发生。下面是一篇讨论如何跨选项卡共享数据的帖子:
在父页面中:
$('#elabora').click(function(e){
e.preventDefault();
var data = $('#data_rif').val();
if (data=='') {
$("#spnmsg").fadeTo(200,0.1,function(){
$(this).removeClass().addClass('spn_error').html("Inserisci una data di riferimento per l'elaborazione").fadeTo(900,1);
});
}else{
localStorage.popup_script_done = false;
window.open('sofferenze/trxls.php?data='+data, "popupWindow", "width=10,height=10");
}
});
$(window).bind('storage', function (e) {
if (localStorage.popup_script_done == true) {
// Do stuff
}
});
在弹出窗口中:
// Do stuff
localStorage.popup_script_done = true;
如果希望在脚本结束时在新窗口中执行某些操作,请按照Ludvoic的建议使用onbeforeunload
另一方面,如果您希望在子页面运行脚本后在父页面中执行某些操作,则情况就不同了。您在问题中暗示了这一点,因此将回答此场景
您可以使用localstorage
,前提是两个页面都来自同一个域。脚本运行完毕后,子页面可以更新一个值。父页面可以监听存储
事件,以了解该事件何时发生。下面是一篇讨论如何跨选项卡共享数据的帖子:
在父页面中:
$('#elabora').click(function(e){
e.preventDefault();
var data = $('#data_rif').val();
if (data=='') {
$("#spnmsg").fadeTo(200,0.1,function(){
$(this).removeClass().addClass('spn_error').html("Inserisci una data di riferimento per l'elaborazione").fadeTo(900,1);
});
}else{
localStorage.popup_script_done = false;
window.open('sofferenze/trxls.php?data='+data, "popupWindow", "width=10,height=10");
}
});
$(window).bind('storage', function (e) {
if (localStorage.popup_script_done == true) {
// Do stuff
}
});
在弹出窗口中:
// Do stuff
localStorage.popup_script_done = true;
在主页上,我没有在卸载前开火。你能详细说明一下这一点吗?@LelioFaieta你不能在脚本结束时关闭窗口吗?这是一个php脚本,可以生成一个excel文件并将其保存到服务器上的文件夹中。我试着用一个脚本来结束它,但没有做这个小把戏——编辑问题。添加了我运行的脚本。窗口关闭呼叫不起作用work@LelioFaieta我添加了一个小代码,演示如何在卸载之前关闭主页面上的窗口。你能详细说明一下这一点吗?@LelioFaieta你不能在脚本结束时关闭窗口吗?这是一个php脚本,可以生成一个excel文件并将其保存到服务器上的文件夹中。我试着用一个脚本来结束它,但没有做这个小把戏——编辑问题。添加了我运行的脚本。窗口关闭呼叫不起作用work@LelioFaieta我添加了一个显示如何关闭窗口的小代码