中安拓也のブログ

プログラミングについて書くブログ

【JavaScript】window.open()で開かれるウィンドウがタブではなく新規ウィンドウで開かれるようにしたい(IE11)

はじめに

アプリでリンク先の画像を開くとタブで開かれてしまうから、プログラム(JavaScript)で制御して常に新しいウィンドウで開かれるようにしてほしいとの依頼があったので、やり方を調べた

なお、リンク先の画像を開く処理はJavaScriptのwindow.openを利用している

環境

  • ブラウザはInternet Explorer 11(11.590.17134.0)
  • アプリはBtoBのwebアプリケーション
  • OSはWindows10

調査

ネットサーフィンした

window.open - Web API | MDN

  • 上記のMDNのドキュメントを読んだが新しいウィンドウを開く際に、タブで開くかウィンドウで開くかを設定するオプションはなさそう

どのようにリンクを開くかは、常に、完全にユーザの管理下にあるべきです

ブラウザの表示方法についてはユーザー自身が設定するべきであって、開発者が強制するべきではないみたいな思想を感じる

javascript - window.open opening new tab instead of new window in IE 11 - Stack Overflow

  • ブラウザの方で設定するしかないんじゃない?みたいな回答

javascriptのwindow.open()で別窓が開かれない|teratail

  • window.open()のオプション引数であるwindowFeaturestoolbarなりmenubarの設定を工夫すれば新規タブではなく新規ウィンドウで開いたとのこと
    • windowFeaturesに開かれるウィンドウをタブかウィンドウか直接制御するプロパティがない以上、上記サイトで紹介されている方法が不安定なものである(ブラウザの設定、マイナーバージョンによって左右されうる)認識

調査結果

JavaScript(window.open())で制御するのではなく、ユーザ(クライアント)にブラウザの設定を変更していただいたほうが確実ではないか

ブラウザ設定方法

  1. IE11の設定ボタンをクリック

  2. インターネットオプションを選択

  3. 全般タブを選択

  4. [タブ]ボタンをクリック

  5. ポップアップの発生時:で「常に新しいウィンドウでポップアップを開く」を選択

上記の設定でwindow.open()で開かれるウィンドウがタブではなく新規のウィンドウになる