blob: a6d2629093ceda018d9d849ecced37fd45fa3e1b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
---
title: Document.open()
slug: Web/API/Document/open
tags:
- API
- DOM
- Document
- Method
- Reference
- open
- メソッド
translation_of: Web/API/Document/open
---
<div>{{APIRef("DOM")}}</div>
<p><strong><code>Document.open()</code></strong> メソッドは、{{domxref("Document.write", "書き込み", "", "1")}}のために文書を開きます。</p>
<p>これはいくらかの副作用を招きます。例を挙げます。</p>
<ul>
<li>文書、文書内のノード、文書のウィンドウに現在登録されているイベントリスナーがすべて除去されます。</li>
<li>すべての既存のノードが文書から除去されます。</li>
</ul>
<h2 id="Syntax" name="Syntax">構文</h2>
<pre class="syntaxbox notranslate">document.open();
</pre>
<h3 id="Parameters" name="Parameters">引数</h3>
<p>なし。</p>
<h3 id="Return_value" name="Return_value">返値</h3>
<p><code>Document</code> オブジェクトインスタンスです。</p>
<h2 id="Example" name="Example">例</h2>
<p>以下の簡単なコードは、文書を開き、その内容をいくつかの異なる HTML の断片に置き換えてから、再び閉じます。</p>
<pre class="brush: js notranslate">document.open();
document.write("<p>Hello world!</p>");
document.write("<p>I am a fish</p>");
document.write("<p>The number is 42</p>");
document.close();
</pre>
<h2 id="Notes" name="Notes">注</h2>
<p>ページが読み込まれたあとで {{domxref("document.write()")}} が呼び出されると、自動的に <code>document.open()</code> が呼び出されます。</p>
<p>Firefox や Internet Explorer では何年も前から、すべてのノードの削除に加えて、 JavaScript の変数なども追加で消去していました。今はそうではありません。<span class="comment">document non-spec'ed parameters to document.open</span></p>
<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Gecko 固有のメモ</h3>
<p>Gecko 1.9 以降、このメソッドは他のプロパティと同一オリジンポリシーが同じになるようになり、文書のオリジンを変更しようとした場合に動作しません。</p>
<p>Gecko 1.9.2 以降、 <code>document.open()</code> は<a href="/ja/docs/Security_check_basics">プリンシパル</a>をスタックからフェッチするのではなく、 URI を使用する文書のプリンシパルを使用します。その結果、 <a class="internal" href="/ja/wrappedJSObject"><code>wrappedJSObject</code></a> を使用しても、 {{domxref("document.write()")}} を{{Glossary("chrome", "クローム")}}からの信頼できない文書に呼び出すことはできません。考え方については<a href="/ja/Security_check_basics">セキュリティチェックの基本</a>を参照してください。</p>
<h2 id="Three-argument_document.open" name="Three-argument_document.open">引数3つの document.open()</h2>
<p>あまり知られていませんが、あまり使われていない引数3つ版の <code>document.open()</code> があり、これは {{domxref("Window.open()")}} のエイリアスです (詳細はそのページを参照してください)。</p>
<p>この呼び出しは、例えば github.com を新しいウィンドウで開き、オープナーは <code>null</code> に設定してみます。</p>
<pre class="brush: js notranslate">document.open('https://www.github.com','', 'noopener=true')</pre>
<h2 id="Two-argument_document.open" name="Two-argument_document.open">引数2つの document.open()</h2>
<p>ブラウザーは以下の形で、引数2つの <code>document.open()</code> に対応してきました。</p>
<pre class="brush: js notranslate">document.open(<var>type</var>, <var>replace</var>)</pre>
<p><code><var>type</var></code> は書き込もうとしているデータの MIME タイプ (<code>text/html</code> など) を指定し、 replace が設定されていれば (すなわち "replace" の文字列)、新しい文書の履歴エントリが書き込まれている文書の現在の履歴エントリを置き換えることを指定していました。</p>
<p>この形式は現在では廃止されています。エラーは発生せず、代わりに <code>document.open()</code> に転送されます (つまり、引数なしで実行した場合と同等です)。 履歴の置換動作は常に行われるようになりました。</p>
<h2 id="Specifications" name="Specifications">仕様書</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
<th scope="col">状態</th>
<th scope="col">備考</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName("HTML WHATWG", "#dom-document-open", "document.open()")}}</td>
<td>{{Spec2("HTML WHATWG")}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName("DOM2 HTML", "html.html#ID-72161170", "document.open()")}}</td>
<td>{{Spec2("DOM2 HTML")}}</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
<p>{{Compat("api.Document.open")}}</p>
<h2 id="See_also">See also</h2>
<ul>
<li>{{domxref("Document")}}</li>
<li>{{domxref("Window.open()")}}</li>
</ul>
|