質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

8045閲覧

ファイルの複数ダウンロードについて

kaputaros

総合スコア1844

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2015/10/28 02:58

いつもお世話になっています。

JavaScriptのwindow.open()を使用して、サーバーにあるファイルをダウンロードしようとしています。
※ブラウザはFirefoxを対象としています。

複数のPDFファイルのダウンロード - Java Solution - @IT
↑こちらを参考にしてみたのですが、
ファイルが1つの場合は問題ないのですが、別の複数のファイルがある場合に、

JavaScript

1window.open("ファイルパスURL1", "_top"); 2window.open("ファイルパスURL2", "_top"); 3・・・

とすると、最後に記載したwindow.open()のファイルしかダウンロードダイアログが表示されません。
(どうやら後勝ちになるようです。)

また、第二引数の"_top"を外し、

JavaScript

1window.open("ファイルパスURL1"); 2window.open("ファイルパスURL2"); 3・・・

とすると、ダイアログは複数表示されるのですが、
その前にブランクのタブも複数開いてしまいます。
(前者の場合には、タブは開きませんでした。)

タブが開かず、ダイアログが複数表示されるようにする方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

一つ目のコードでは、"_top"というウィンドウ(フレームになっているウィンドウの一番外側)に、"ファイルパスURL1"を開いて、その直後に"ファイルパスURL2"を開いているので、最初に開こうとした"ファイルパスURL1"のほうが中断されてしまいます。

二つ目のコードは、別々のウィンドウに、それぞれのURLを開いているのですから、正しいプログラムです。

HTML

1window.open("ファイルパスURL1");

というのは、ブラウザのアドレス欄に「ファイルパスURL1」と入力するのと同じですから、必然的にタブかウィンドウが必要になります。

「タブが開かず、ダイアログが複数表示されるようにする」プログラムをJavascriptだけで書くのは、至難の業だと思います。
Pythonなど、別の言語を使う事を検討されては、いかがでしょうか。

投稿2015/10/29 06:45

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2015/10/29 07:26

言われてみれば、そうですね。 windowをopenしているんですもんね。 フレームワーク的なものが特殊で、javascriptしか使えないため、このことを報告したいと思います。 ありがとうございました!!
guest

0

ターゲットを_top固定じゃなく、重複しないようにすればいいと思います。
ダウンロードのファイルパスだけを渡すんじゃなくて、サーバー側でphpとか挟んで、HTTP応答ヘッダーにContent-Type:とかContent-Disposition:を適切に与えるとwebブラウザによってはブランクウィンドウ(ブランクタブ)を回避します。

投稿2015/10/28 03:05

編集2015/10/29 06:49
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2015/10/28 04:59

回答ありがとうございます。 ターゲットを"_top"じゃなく、重複しないようにするということなのですが、 "_blank","_self","_parent"以外にもあるのでしょうか? 一緒にダウンロードするファイルが数十ある場合もあるので、その場合はどうしたらいいでしょうか? (連番を振るとか出来るのでしょうか?)
退会済みユーザー

退会済みユーザー

2015/10/29 01:20

既存のwindow名にしなければ、別window(別タブ)で開きますので、乱数で生成したでたらめなターゲット名を与えるという意味です。
kaputaros

2015/10/29 05:28

なるほど。やってみます!ありがとうございます。
kaputaros

2015/10/29 07:28

デタラメでよいのならと、"_top0","_top1","_top2"・・・となるようにしてみましたが、 タブが開いてしまいました。 やはりJavaScriptでは無理なようなので、タブが開いてしまう旨報告したいと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問