我试图点击这个新创建的锚点:
$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>")
$('.download').click()
但是没有调用click事件。不知道为什么会这样?
我试图强制下载,而不是在浏览器中打开链接。像Dropbox一样
修改
这是代码,所以更清楚:
fileEntry.createWriter ((fileWriter) ->
fileWriter.onwriteend = (e) ->
$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>")
$('.download').trigger('click');
fileWriter.onerror = (e) ->
console.log "Write failed: " + e.toString()
fileWriter.write blob
), errorHandler
更新
因此,在从下面的答案中理解之后,这实际上是不可能的,除非服务器使用标题Content-disposition:attachment将数据发送给我。但在我看来,这似乎是纯HTML5 JS应用程序的一个糟糕的解决方案,可能是脱机的。
所以我发现了这个,非常棒!它很棒。这是链接:
http://updates.html5rocks.com/2011/08/Saving-generated-files-on-the-client-side
希望这可以帮助那些想要做同样事情的人,因为我相信有很多人!
答案 0 :(得分:1)
尝试将click事件绑定到anchor标记并调用click事件。
$(".download").bind("click", function (e) {
var $a = $(this);
window.location = $a.attr("href");
});
$(".download").click();
答案 1 :(得分:1)
如果我理解正确,您想模拟用户点击吗?如果是这种情况,您就是这样做的:
$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>");
// simulate/trigger a click
$('.download').trigger('click');
答案 2 :(得分:1)
您尚未将活动传递给主播,请尝试:http://fiddle.jshell.net/gnumA/
$('.file-status').html("Finished downloading
<a class='download' onclick='alert(123);' href='#'>#{name}</a>")
$('.download').click();
$('.download').click(function () {
window.location.href = $(this).attr('href');
}).click();
答案 3 :(得分:1)
向用户显示下载已完成,然后在1秒后重定向到下载。
$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>");
setTimeout(function () {
window.location.href = $('.download').attr('href');
},1000);
答案 4 :(得分:0)
试试这个插件livequery
$('.download').livequery(function(){
$(this).click();
});
答案 5 :(得分:0)
由于这个问题用CoffeeScript标记,因此这是一个CoffeeScript有效答案(虽然仍然使用jQuery)。
itemId = $('.modal__product-info').attr('data-item-id')
$('#size-' + itemId).click()