[Edge]?。→、、
新しいウインドウを開き、指定されたリソースを表示し、そのウインドウを WindowProxyオブジェクトで返します。
ウィンドウやタブに新しく、または <iframe> に読み込ませることができます。
url | 文字列で、読み込むリソースの URL を示します。
これは HTML ページ、画像ファイル、その他のブラウザーが対応しているリソースのパスまたは URL にすることができます。 空文字列("")がこの時期数(¶)に指定されると、対象の閲覧コンテキストに空のページが開きます。 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
target | 省略可。ホワイト スペースのない文字列で、指定したリソースを読み込むための閲覧コンテキスト(ウィンドウ、<iframe>、タブ)の名前を指定します。
その名前で既存のコンテキストが識別できない場合は、新しいコンテキストが指定された名前で作成されます。 特殊な target キーワードである この名前は <a> や <form> 要素の target 属性として使うことができます。 | ||||||||||||||||
windowFeatures | 省略可。ウインドウのオプションを表す文字列。name=value の形式で、それらをカンマ「, 」で区切って指定する。論理特性の場合は name だけよい。
以下のようなオプションに対応しています:
Note: 要求位置(top、left)、要求寸法(width、height)の値が windowFeatures で指定された場合、ブラウザー ポップアップ全体をユーザーのオペレーティング システムのアプリケーションの作業領域内に表示できないと、修正されます。言い換えれば、新しいポップアップのどの部分も、最初は画面外に位置することはできません。 |
WindowProxy オブジェクトです。
返される参照は、同一オリジン ポリシーのセキュリティ要件に準拠する限り、新しいウィンドウのプロパティとメソッドにアクセスするために使用することができます。
Window インターフェイスの open() メソッドは、URL を引数として取り、識別する新規または既存のタブまたはウィンドウにリソースを読み込みます。target 引数は、リソースを読み込むウィンドウやタブを決定します。また、windowFeatures 引数は、最小限のユーザー インターフェイス機能で新しいポップアップを開き、そのサイズや位置を制御するために使用することができます。
リモートの URL は、すぐには読み込まれないことに注意してください。window.open() から返ったとき、ウィンドウには常に about:blank を含んでいます。URL が実際に読み込まれるまでには猶予期間があり、現在のスクリプト ブロックが実行を終えた後に開始されます。ウィンドウの生成と参照されるリソースの読み込みは、非同期に行われます。
以下の例では、popup 特性を使用して、ポップアップを開く方法を示しています。
Warning: 最近のブラウザーはポップアップ ブロッカーが内蔵されており、このようなポップアップを開くことを防いでいます。ユーザーは、ブラウザーの設定を変更してポップアップを有効にするか、ブラウザーのユーザー インターフェースからサイトごとに有効にする必要があります(サイトが最初にポップアップを開こうとしたときに通知が現れ、有効にするか破棄するかの選択肢が与えられる場合があります)。
window.open("https://www.mozilla.org/", "mozillaWindow", "popup");
新しいポップアップの大きさと位置を操作することが可能です。
const windowFeatures = "left=100,top=100,width=320,height=320"; const handle = window.open("https://www.mozilla.org/", "mozillaWindow", windowFeatures); if (!handle) { // The window wasn't allowed to open // This is likely caused by built-in popup blockers. // … }
JavaScriptが無効または利用できない場合、window.open()が動作しないことがあります。この機能の有無だけに頼るのではなく、サイトやアプリケーションが機能するような代替策を提供してください。
JavaScript のサポートが無効または存在しない場合、ユーザー エージェントはそれに応じて副ウィンドウを作成するか、target 属性の処理に従って参照されるリソースをレンダリングします。目標とアイデアは、参照されるリソースを開く方法をユーザーに提供してください(押し付けないでください)ということです。
HTML:
<a href="https://www.wikipedia.org/" target="OpenWikipediaWindow"> Wikipedia, a free encyclopedia (opens in another, possibly already existing, tab) </a>
JavaScript:
let windowObjectReference = null; // global variable function openRequestedTab(url, windowName) { if (windowObjectReference === null || windowObjectReference.closed) { windowObjectReference = window.open(url, windowName); } else { windowObjectReference.focus(); }; } const link = document.querySelector("a[target='OpenWikipediaWindow']"); link.addEventListener("click", (event) => { openRequestedTab(link.href); event.preventDefault(); }, false);
上記のコードは、リンクがポップアップを開くことに関連するいくつかのユーザー ビリティの問題を解決しています。
コード中の event.preventDefault() の目的は、リンクの既定値のアクションを取り消すことです。click のイベントリスナーが実行されれば、リンクの既定値のアクションを実行する必要はありません。しかし、ユーザーのブラウザーで JavaScript のサポートが無効または存在しない場合、click のイベント リスナーは無視され、ブラウザーは "WikipediaWindowName" という名前を持つターゲット フレームまたはウィンドウに参照されたリソースを読み込む。フレームやウィンドウに "WikipediaWindowName" という名前がない場合、ブラウザーは新しいウィンドウを作成して "WikipediaWindowName" という名前を付けます。
Note: target 属性についての詳細は、<a>、<form> 要素を参照してください。
¶省く
D=window.open("../Com/Test.htm", "Test"); //新しいウインドウを開き、Test.htm を表示させる。
Dを表示させるとエラー発生:Blocked a frame with origin "null" from accessing a cross-origin frame.
(オリジンが「null」のフレームがクロスオリジン フレームにアクセスするのをブロックしました。)
オフラインだと内容を見られないようだ。
以下はオンラインで得られた内容:
//D=[object]:[object Window] //window=[object]:[object Window] //self=[object]:[object Window] //document=[object]:[object HTMLDocument] //name=[string]:Test //location=[object]:http://tetuya-amamiya.la.coocan.jp/HTML_R/HTML-Rifarennsu/DOM/Com/Test.htm //customElements=[object]:[object CustomElementRegistry] //history=[object]:[object History] //locationbar=[object]:[object BarProp] //menubar=[object]:[object BarProp] //personalbar=[object]:[object BarProp] //scrollbars=[object]:[object BarProp] //statusbar=[object]:[object BarProp] //toolbar=[object]:[object BarProp] //status=[string]: //closed=[boolean]:false //frames=[object]:[object Window] //…
HTML:
<IFRAME name=NIframe></IFRAME>
JavaScript:
NIframe.open("../Com/Test.htm"); //別の通常の新規ウインドウに表示された。
window.open("../Com/Test.htm", "NIframe"); //これでIFRAME内に表示された。