我在网站上有一个页面,您可以在其中下载以前付款的文件。该文件是包含许多PDF文件的邮政编码。单击下载链接时,将调用一个PHP文件,该文件在提供文件之前进行一些工作(在PDF上添加邮票(。因为这可能需要一些时间在较大的文件上,所以I'V在投票机制中构建,以向用户展示正在发生的事情。民意调查是通过看起来像这样的Ajax调用来完成的:
$('.rm-table').on(clickhandler,'.fa-download', function(e){
tr = $(this).closest('tr');
id = tr.attr('id');
tr.find("progress").show();
tr.find('.downloadstatus').show();
tr.find('.downloadstatus').html('Start Download...');
setTimeout(getDownloadStatus(), 250);
});
function getDownloadStatus(){
setTimeout( function() {
$.ajax({
url: '/process/{{Auth::id()}}/'+id,
type: 'POST',
async: true,
cache: false,
data: {},
dataType: "json",
success: function(data, textStatus, jqXHR)
{
var tekst = data.tekst;
var perc = data.percentage;
tr.find('.downloadstatus').html(tekst);
tr.find('progress').val(perc);
if(tekst != 'done'){
getDownloadStatus();
} else {
tr.find('.downloadstatus').html("Done!");
tr.find('progress').val(100);
setTimeout(
function()
{
tr.find('progress').val(0);
tr.find('progress').hide();
tr.find('.downloadstatus').html("");
tr.find('.downloadstatus').hide();
}, 750);
}
},
error: function(jqXHR, textStatus, errorThrown) {
var response = jQuery.parseJSON(jqXHR.responseText);
alert(response.error);
}
});
}, 250);
}
用户单击链接后进行轮询。因此,不能阻止链接的默认行为。
这在Windows上的所有浏览器上都可以正常运行,但是在Mac上的Safari或iPad上的其他浏览器上,投票却没有以某种方式启动。任何人都知道有什么问题?
好的,所以问题是与Windows上的浏览器不同,Safari似乎在单击链接时在页面上停止了Al JavaScript活动。因此,尽管"另一页"仍在加载,无论是重定向还是下载,AJAX进行了投票。我也通过通过Ajax请求文件来解决它。如果javaScript不可用,则仍然允许后备。