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

クリック イベントをアンカー タグにバインドして、クリック イベントを呼び出してみてください。

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

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

            });

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

この質問はCoffeeScriptでタグ付けされているため、ここにCoffeeScriptの有効な回答があります(まだjQueryを使用しています)。

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