スタートページJavascript

window.open: 別ウインドウの作成


window.open

Webページから他のページを表示させていとき、単純にリンクしたのでは、新ウインドウがブラウザ画面全体に表示されてしまい、元の画面と相互参照するのに不便です。ポップアップ画面のように、小さなウインドウを開けるようにしたいのです。それには、windoes.open を用いるのが簡単です。

(注)ポップアップ画面は迷惑なだけでなく悪用される危険があるので、多くのブラウザでは初期設定で開けないようになっています。ときによっては、臨時的に解除する必要があるかもしれません。

基本形

    window.open(URL, 別ウインドウ名, オプションパラメータ);

オプションパラメータ:下表から必要なものを選び、全体を "" で囲みます。

プロパティ指定値意味
width数値別ウインドウの横幅
height数値別ウインドウの縦幅
top数値別ウインドウの上端位置
left数値別ウインドウの左端位置
resizableyes/no★リサイズの可/不可
scrollbarsyes/no★スクロールバーの表示/非表示

多くのブラウザはyesだけをサポートしています。

1 外部HTMLファイルの表示(リンク)

例1・1:単純な例

window.open("sample/child1.html");

<a href="sample/child1.html" target="_blank">実行</a> としたのと同じです。
単に新しいタグとして表示されます。

例1・2:オプションの付加

window.open("sample/child1.html",
  "_blank",             // target="_blank" と同じ
  "width=500, height=300,      // ウインドウのサイズ
   top=0, left=200,         // 上端、左端から200pxの位置
   resizable=yes, scrollbars=yes"  // ウインドウサイズの変更可、スクロールバーを付ける
);

1・3 複数URLの表示

ウインドウ名は任意です。下の「blank」を「aaa」としても、二つのウインドウ名を別のものにしても同じ結果になります。

window.open("sample/child1.html","_blank",
  "width=500, height=300, top=0, left=200, resizable=yes, scrollbars=yes");
window.open("sample/child2.html","_blank",
  "width=300, height=200, top=0, left=200, resizable=yes, scrollbars=yes");

2 HTML以外のファイル

例2・1:画像ファイルの表示

sample/child.jpegのサイズは400x300です。別ウインドウのサイズを変更しても、画像ファイルを縮小・拡大することはできません。

window.open("sample/child.jpeg", "_blank",
  "width=500, height=400, top=0, left=0, resizable=yes, scrollbars=yes");

例2・2:テキストファイルの表示

テキストファイルはそのまま表示されます。しかし、文字コードを UTF-8 にしないと、ブラウザにより文字化けすることがあります。

window.open("sample/child.txt", "_blank",
  "width=500, height=400, top=0, left=0, resizable=yes, scrollbars=yes");


3 新規HTMLの作成

既存のファイルを表示するのではなく、元のWebページ内でHTMLファイルを作成して、それを別ウインドウに表示したいことがよくあります。この場合、URL="" になります。

HTMLのHEAD部などの記述を省略して、直接 <p> や <img> などを記述するだけでも表示できます。

例3・1:簡単な例

var ウインドウ = window.open("", "_blank",
    "width=500, height=300, top=0, left=200, resizable=yes, scrollbars=yes");
  ウインドウ.document.write("<h4>document.writeの例です。</h4>");
  ウインドウ.document.write("<p>あいうえお<br>");
  ウインドウ.document.write("かきくけこ</p>");
  ウインドウ.document.close();

例3・2:文字列で受け渡す

document.write("~") を何度も記述するのは面倒です。その文字列を例えば、「出力」という変数に蓄積しておき、それを1回の document.write("~") で渡すほうが簡単です。

var 出力 = "<h3>作成されたHTMLです</h3>";
  出力 += "<p>あいうえお<br>";
  出力 += "かきくけこ</p>";
var ウインドウ = window.open("", "_blank",
    "width=500, height=300, top=0, left=200, resizable=yes, scrollbars=yes");
ウインドウ.document.write(出力);
ウインドウ.document.close();

例3・3:範囲を指定する

指定した id の範囲を getElementById で取り出して表示します。
<div id="指定範囲">

あいうえお
かきくけこ

</div>

var 出力 = document.getElementById("指定範囲").innerHTML;
var ウインドウ = window.open("", "_blank",
    "width=500, height=300, top=0, left=200, resizable=yes, scrollbars=yes");
ウインドウ.document.write(出力);
ウインドウ.document.close();

例3・4:ソースコードを指定する

< と > の機能を外したいときの操作です。上の指定範囲でのタグを文字列として表示します。

var 出力 = document.getElementById("指定範囲").innerHTML;
出力 = 出力.replace(/</gm, "&lt;");
出力 = 出力.replace(/</gm, "&gt;");
出力 = "<pre>" + 出力 + "</pre>";
var ウインドウ = window.open("", "_blank","width=600,height=300,resizable=yes,scrollbars=yes");
ウインドウ.document.open();
ウインドウ.document.write(出力);
ウインドウ.document.close();