window.open()による新しいウィンドウの開き方

JavaScriptのwindowオブジェクトに含まれるopen()メソッドを使用することで、新しいウィンドウを開くことができます。基本的な構文は以下の通りです:

window.open (URL, name, features, replace)

引数の詳細は以下の通りです:

  • URL:オプションの文字列で、新しいウィンドウに表示するページのURLを指定します。指定しない場合や空文字の場合、新しいウィンドウには何も表示されません。
  • name:オプションの文字列で、新しいウィンドウの名前を設定します。この名前は<a>タグや<form>タグのtarget属性値として利用できます。すでに存在するウィンドウ名が指定された場合は、新しいウィンドウは作成せず、既存のウィンドウへの参照を返します。この場合、featuresパラメータは無視されます。
  • features:オプションの文字列で、新しいウィンドウに適用するブラウザの標準機能を指定します。以下の表に詳細を示します。このパラメータを省略すると、すべての標準機能が適用されます。
  • replace:オプションのブール値で、指定したURLがブラウザ履歴に新しいエントリとして追加されるか、現在のエントリを置き換えるかを指定します。

このメソッドは新しく作成されたwindowオブジェクトを返し、これを使って新しいウィンドウを操作できます。

ウィンドウの表示設定

設定項目 説明
fullscreen = yes | no | 1 | 0 フルスクリーンモードでの表示を行うかどうか。デフォルトはno。フルスクリーンモードではシアター表示も有効になります。
height = pixels ウィンドウのコンテンツ領域の高さ。単位はピクセルです。
left = pixels ウィンドウのX座標。単位はピクセルです。
location = yes | no | 1 | 0 アドレスバーの表示有無。デフォルトはyesです。
menubar = yes | no | 1 | 0 メニューの表示有無。デフォルトはyesです。
resizable = yes | no | 1 | 0 ウィンドウサイズの変更可否。デフォルトはyesです。
scrollbars = yes | no | 1 | 0 スクロールバーの表示有無。デフォルトはyesです。
status = yes | no | 1 | 0 ステータスバーの表示有無。デフォルトはyesです。
toolbar = yes | no | 1 | 0 ツールバーの表示有無。デフォルトはyesです。
top = pixels ウィンドウのY座標
width = pixels ウィンドウのコンテンツ領域の幅。単位はピクセルです。

新しく作成されたwindowオブジェクトにはopenerプロパティがあり、これを介して元のウィンドウを参照できます。openerプロパティはポップアップウィンドウの最上位windowオブジェクト(top)でのみ定義され、window.open()メソッドを呼び出したウィンドウまたはフレームを指します。

サンプル1

以下のコードは、開いたウィンドウと元のウィンドウとの関係を示しています。

win = window.open();  // 新しい空白ウィンドウを開く
win.document.write ("<h1>新しいウィンドウです</h1>");  // 新しいウィンドウにメッセージを出力
win.focus ();  // 元のウィンドウにフォーカスを移す
win.opener.document.write ("<h1>元のウィンドウです</h1>");  // 元のウィンドウにメッセージを出力
console.log(win.opener == window);  // window.openerプロパティの確認

ウィンドウを閉じるにはwindowのclose()メソッドを使用します。例えば、新しく作成したwinウィンドウを閉じるには以下のようにします。

win.close;

もし開いたウィンドウ内でそのウィンドウ自身を閉じる場合は、以下の方法で実行します。

window.close;

サンプル2

以下のコードは、自動的にウィンドウを開いてから半秒後に閉じるサンプルであり、ユーザーがリンクをクリックして表示するページを変更できるようにしています。

var pageUrl = "c.biancheng.net";  // 開くページのURL
var options = "height=500, width=800, top=100, left=100, toolbar=no, menubar=no,
    scrollbars=no,resizable=no, location=no, status=no";  // ウィンドウの設定
// リンクを動的に生成
document.write('<a href="c.biancheng.net" target="newWindow">C言語中文网首页に移動</a>');
var popup = window.open(pageUrl, "newWindow", options);  // 新しいウィンドウを開く
setTimeout (function () {  // タイマー処理
    if (popup.closed) {
        console.log("作成されたウィンドウは既に閉じられています。");
    } else {
        popup.close();
    }
}, 5000);  // 5秒後にウィンドウを閉じる

サンプル3

<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>新しいウィンドウを開く</title>
    
    <script type="text/javascript" >
    function showPopup(url,width,height){
    window.open(url, "popupWindow", "scrollbars=yes,resizable=yes,statebar=no,width="+width+",height="+height+",left=200, top=100");
}
    </script>
</head>
<body>

| \| **注文リスト:** \| <input class="np coolbg" name="ss13" onclick="javascript:showPopup('#',680,450);" type="button" value="未払い"></input> \| \|---\|--:\| |
|---|
      </td>
    </tr>
</table>
<a href="javascript:showPopup('shops_operations_cart.php?oid=S-P1586654454RN545',680,450);" >[詳細]</a>

動作イメージは以下の通りです:

参考資料:windowオブジェクトのopen()メソッドを使用して新しいウィンドウを開く

日付:2020.1.22 lzb

タグ: javascript window.open ブラウザ操作 ウィンドウ管理 フロントエンド開発

7月10日 22:50 投稿