技術とかの雑なToday I Learnedメモ

window.open()がうまく動かない

window.open()がうまく動かない

特定のファイルをダウンロードするときに、window.open(downloadLink)みたいなことをやったんだけど、ファイルサイズが大きいときにダウンロードされない現象に出くわした。

ファイルサイズ起因かな?と思って、window.open()について調べたけど特にそういった記述はなさそうだった。

Window.open() - Web API | MDN

何が原因だろう……と唸っていたところ、これじゃないですか?という記事のリンクを教えてもらった。

あなたの window.open はなぜ開かないのか,Chrome で - マンガ〜ノ伊藤ノ〜ト

だから,今回のケースでは (2) に該当して「なにも操作をせずに 5 秒待っているとポップアップブロックされる」という結果になった.そのため,カチカチと適当にクリックをして待っているとポップアップは開く

なるほど、つまり 5 秒以内にタブが開かれないと(ユーザーがなにか操作をしていない限り)window.open()が無効になるということっぽい。

引用の通り、window.open()を実行してからポチポチ画面をクリックしながら待っていたら、5 秒以上かかっても新しいタブが開かれた。

ということで、ファイルの重さ起因ではなくそのファイルのダウンロードに 5 秒以上かかるかどうかが今回のポイントだったらしい。