我有一个函数如下:
var audit ={
init: function(){
var dte = new Date();
// hook into the get Accruals Link
var accruals = $("#accruals");
for (var i = 0, ii = accruals.length; i < ii; i++){
$(accruals).bind("click", audit.accrualsClicked);
}
// hook into the get closed routes button
var glbtn = $(".glBtn");
for (var i = 0, ii = glbtn.length; i < ii; i++){
$(glbtn).bind("click", audit.clickListener);
}
// hook into the GL Date1 element
var glDate1 = $("#glDate1");
for(var i = 0, ii = glDate1.length; i < ii; i++){
var myDate = null;
if ($("#glDate1").attr('rel') != null) {
myDate = $.datepicker.parseDate("yy-mm-dd", $("#glDate1").attr('rel'));
}
else {
myDate = dte.getFullYear() + '-' + dte.getMonth()+ '-' + dte.getDate();
}
$('#glDate1').datepicker({
dateFormat: 'yy-mm-dd',
minDate: -120,
maxDate: '+1D',//'+1M +10D',
showAnim: 'fadeIn',
altField: '#actualDate',
altFormat: 'yy-mm-dd',
changeMonth: true,
numberOfMonths: 2,
showButtonPanel: true,
defaultDate: myDate
//onSelect: audit.doInvDate
});
$(glDate1).val(myDate);
}
// hook into the GL Date2 element
var glDate2 = $("#glDate2");
for(var i = 0, ii = glDate2.length; i < ii; i++){
var myDate2 = null;
if ($("#glDate2").attr('rel') != null) {
myDate2 = $.datepicker.parseDate("yy-mm-dd", $("#glDate2").attr('rel'));
}
else {
myDate2 = dte.getFullYear() + '-' + (dte.getMonth() +1) + '-' + dte.getDate();
}
$('#glDate2').datepicker({
dateFormat: 'yy-mm-dd',
minDate: -120,
maxDate: '+1D',//'+1M +10D',
showAnim: 'fadeIn',
altField: '#actualDate',
altFormat: 'yy-mm-dd',
changeMonth: true,
numberOfMonths: 2,
showButtonPanel: true,
defaultDate: myDate2
});
$(glDate2).val(myDate2);
}
},
clickListener: function(event){
audit.download(7);
},
accrualsClicked: function(Event){
audit.download(6);
},
removeFile: function(fileName){
var url = 'http://'+window.location.hostname+'/truck/admin/export/service/removeFile.svc.php';
var args = "filename="+fileName;
var res = audit.doAjax(url,args);
//document.getElementById("Msg1").style.display = "none";
if(res == '0'){
alert('Failed to purge document: '+ fileName +' from file system')
}
},
download: function(process){
var gl1 = $('#glDate1').val();
var gl2 = $('#glDate2').val();
var url = 'http://'+window.location.hostname+'/truck/admin/export/service/getFile.svc.php';
var args = "process="+process+"&gl1="+gl1+"&gl2="+gl2;
var fileName = audit.doAjax(url,args);
if(fileName.length>3){
var fileurl = "http://"+window.location.hostname+"/truck/admin/export/service/" + fileName;
window.location = fileurl;
audit.removeFile(fileName);
}
},
doAjax: function(url, args){
var retVal;
retVal = $.ajax({
type: "GET",
url: url,
data: args,
async: false
}).responseText;
if(retVal==null || retVal=="")retval=99;
return retVal;
}
}
audit.init();
这在创建文件和创建下载框时效果很好。我的一个要求是在文件创建和用户下载后删除它。是否有办法放置某种类型的暂停或侦听器,以便audit.removeFile(fileName)
在用户下载或取消请求之前不运行(参考下载:功能(过程)子功能)?
2条答案
按热度按时间csbfibhn1#
不幸的是,在客户端上(目前)答案是否定的。下载发生在与页面和客户端JavaScript存在的范围不同的范围内。在页面内无法监视任何相关事件。
我想到了几个服务器端选项:
ovfsdjhp2#
正如DaveWard指出的那样,您描述的方法行不通,我只是在服务器上以给定的时间间隔运行一个作业,删除所有超过(比如说)10分钟的文件。
然而,如果你 * 需要 * 找到一个客户端解决方案,你可以尝试使用弹出窗口。
在全局作用域中,您可以添加一个函数:
请记住,您不应该将卸载事件用于任何重要的事情,因为有许多事情可能会阻止它运行。