2

一部のファイルをダウンロードフォルダーに保存する拡張機能があります。以下のコードはテスト用です

//This lies in the background page of my extension
function fileTest(name) {
    var a = document.createElement('a');
    a.href = 'data:text/plain;base64,SGVsbG8gV29ybGQh'; //Hello World!
    a.download = name + '.txt';
    a.onclick = function (e) {console.log('[TEST] ' + name);return true;};
    a.click();
}
window.onload = function() {
    fileTest('test1');
    fileTest('test12');
    fileTest('test123');
}

最初のファイル「test1.txt」のみがディスクに保存されますが、コンソールの出力には 3 回のクリックがあったことが示されています。

[テスト] テスト1

[テスト] test12

[テスト] test123

これはブラウザによる意図的な制限ですか? またはコードに何か問題がありますか?

4

1 に答える 1

3

通常のブラウジング セッションでコードを実行すると、(ウィンドウの上部に) スライド アウト通知が表示されます。

このサイトは複数のファイルをダウンロードしようとしています。これを許可しますか?

したがって、はい、ユーザーが開始したものではないダウンロードを制限するのは、ブラウザーのセキュリティ上の制限です。バックグラウンド ページでアクションが実行されているため、通知が表示されない可能性があります。

この制限は、コードのこのバリアントで示されているように、ユーザー アクションごとに 1 つのダウンロードのようです。

window.onclick = function() {
    fileTest('test1');
}

これにより、無制限のダウンロードが可能になりますが、クリック イベントごとに 1 つのダウンロードのみが許可されます。

于 2013-01-23T00:51:37.090 に答える