3

我试图点击这个新创建的锚点:

$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>")
$('.download').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: 附件将数据发送给我。但在我看来,这对于纯 HTML5 JS 应用程序来说是一个非常糟糕的解决方案,可能是离线的。

所以我发现了这个,它处理得非常棒!它工作得很好。链接在这里:

http://updates.html5rocks.com/2011/08/Saving-generated-files-on-the-client-side

希望这可以帮助那些想做同样事情的人,因为我相信有很多人!

4

6 回答 6

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);
于 2013-02-14T08:46:13.573 回答
1

如果我理解正确,您想模拟用户点击?如果是这种情况,您可以这样做:

$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>");

// simulate/trigger a click
$('.download').trigger('click');
于 2013-02-14T08:40:21.603 回答
1

尝试将点击事件绑定到锚标记并调用点击事件。

$(".download").bind("click", function (e) {
            var $a = $(this);

                    window.location = $a.attr("href");

            });

 $(".download").click();
于 2013-02-14T08:38:33.663 回答
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();
于 2013-02-14T08:42:12.537 回答
0

试试这个插件livequery

$('.download').livequery(function(){
    $(this).click();
});
于 2013-02-14T08:46:57.207 回答
0

由于这个问题是用 CoffeeScript 标记的,因此这里是 CoffeeScript 的有效答案(尽管仍然使用 jQuery)。

itemId = $('.modal__product-info').attr('data-item-id')
$('#size-' + itemId).click()
于 2016-01-06T10:55:24.783 回答