Quantcast
Channel: パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください
Viewing all articles
Browse latest Browse all 138

[Javascript] 最新ブラウザではwindow.openのオプションは動かない

$
0
0

こんにちは!パーク社員のゆんぼうです。

Webアプリ開発のクロスブラウザ対応したときに注意したいことを紹介します。

今回は、Javascriptの「window.open」関数の第3引数のオプションについてです。

動作確認した環境

OS: Windows 10 Pro

ブラウザ名バージョン
Google Chrome62.0.3202.94
Mozilla Firefox57.0
Microsoft Edge41.16299.15.0
Microsoft Internet Explorer (IE11)11.64.16229.0

window.openとは

window.openとは、サブウィンドウを生成して、第1引数に指定されたリソースを参照する関数です。第2引数はウィンドウ名、第3引数はウィンドウの高さや幅などのオプションを指定します。

https://developer.mozilla.org/ja/docs/Web/API/window.open

 

下記のデモページでwindow.openを実行することができます。

 

【デモはこちら】

【ソースファイルはこちら】

 

テキストボックスとプルダウンを選択して、「window.open」ボタンを実行すると、サブウィンドウが生成されます。ソースコードは以下の通りです。

$('#openWindButton').on('click', function () {    var option =        'top=' + $('#topInput').val() +        ',left=' + $('#leftInput').val() +        ',width=' + $('#widthInput').val() +        ',height=' + $('#heightInput').val() +        ',menubar=' + $('#menubarSelect').val() +        ',toolbar=' + $('#toolbarSelect').val() +        ',location=' + $('#locationSelect').val() +        ',status=' + $('#statusSelect').val() +        ',resizable=' + $('#resizableSelect').val() +        ',scrollbars=' + $('#scrollbarsSelect').val();    log('window.open option: ' + option);    window.open('sub_window.html', 'windowName1', option);});

 

第3引数のオプションは、ブラウザ毎に挙動が異なりますので注意が必要です。オプションについて、ブラウザ毎の動作結果を以下に記載します。

オプション: menubar

menubarは、「yes」を指定するとサブウィンドウにメニューバーが表示されます。(Altキーを押下するとメニューが表示されます。)「no」で非表示となります。ChromeとEdgeは、常に非表示となり、この機能が動作していません。

ブラウザ名menubar
Google Chrome×: 常に非表示
Mozilla Firefox
Microsoft Edge×: 常に非表示
Microsoft Internet Explorer (IE11)

オプション: toolbar

toolbarは、「yes」を指定するとサブウィンドウにツールバーが表示されます。「no」で非表示となります。ChromeとEdgeは、常に非表示となり、この機能が動作していません。

ブラウザ名toolbar
Google Chrome×: 常に非表示
Mozilla Firefox
Microsoft Edge×: 常に非表示
Microsoft Internet Explorer (IE11)

オプション: location

locationは、「yes」を指定するとサブウィンドウにアドレスバーが表示されます。「no」で非表示となります。ChromeとFirefox、Edgeは、常に表示となり、この機能が動作していません。IEは、インターネットオプションの「Webサイトがアドレスバーやステータスバーのないウィンドウを開くのを許可する」の設定を有効にすると、非表示にすることができます。

ブラウザ名location
Google Chrome×: 常に表示
Mozilla Firefox×: 常に表示
Microsoft Edge×: 常に表示
Microsoft Internet Explorer (IE11)〇: ブラウザの設定で非表示可能。

オプション: status

statusは、「yes」を指定するとサブウィンドウにステータスバーが表示されます。「no」で非表示となります。ChromeとFirefox、Edgeは、常に非表示となり、この機能が動作していません。

ブラウザ名status
Google Chrome×: 常に非表示
Mozilla Firefox×: 常に非表示
Microsoft Edge×: 常に非表示
Microsoft Internet Explorer (IE11)

オプション: resizable

resizableは、「yes」を指定するとサブウィンドウのサイズが変更できます。「no」で変更できません。ChromeとFirefox、Edgeは、常にサイズの変更が可能で、この機能が動作していません。

ブラウザ名resizable
Google Chrome×: 常にリサイズ可能
Mozilla Firefox×: 常にリサイズ可能
Microsoft Edge×: 常にリサイズ可能
Microsoft Internet Explorer (IE11)

オプション: scrollbars

scrollbarsは、「yes」を指定するとスクロールバーが表示されます。「no」で表示されません。ChromeとEdgeは、常に表示され、この機能が動作していません。

ブラウザ名scrollbars
Google Chrome× 常に表示
Mozilla Firefox
Microsoft Edge× 常に表示
Microsoft Internet Explorer (IE11)

 

まとめ。インターネットでwindow.openのことを調べてみると、10年以上前の記事が散見されます。10年前と今では、同じブラウザでも挙動が異なることがあります。実際の動作を確認せずに、古い記事を鵜呑みにしないようにしてほしいと思いました。

 

以上です。


Viewing all articles
Browse latest Browse all 138

Latest Images

Trending Articles