-
Notifications
You must be signed in to change notification settings - Fork 4
/
877.txt
91 lines (66 loc) · 6.3 KB
/
877.txt
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
[1] [[DOM3LS]] [[WD]] にあったのと同じ or 似た意味の [CODE(DOMm)@en[[[load]]]]
[[メソッド]]は、 [[MSXML]] (not [[MSHTML]]) や [[Gecko]] で実装されています。
[2] [CITE[Hawk's W3 Laboratory : XML : JavaScriptでXMLを扱う方法]] ([TIME[2009-01-04 12:36:07 +09:00]] 版) <http://web.archive.org/web/20060902115316/www.hawk.34sp.com/stdpls/xml/js_xml.html>
>[INS[[[MSXML]] では、]] 同期的に読み込みを行った場合、loadメソッドは読み込みの成否に応じて真偽値を返すので、parseErrorプロパティからIXMLDOMParseError オブジェクトにアクセスしてエラー情報を取り出すことができます。
>ただしこの [INS[([CODE(DOMa)@en[[[async]]]] を [CODE(JS)@en[[[false]]]] にする)]] 方法は古いバージョンのGeckoエンジンでは使用できません。私は最新のソースを追いかけているわけではないので正確には分かりませんが、Mozilla's DOM Sample Projectを参考にする限り、Mozilla 1.3.1 の段階ではasyncプロパティは存在しません。またNetscape 7.0では使用不可能なのを確認しています。
>
確実に使用できるのは onload イベントの中で処理を行う方法です。
>さて、続いてエラー処理についてです。Geckoベースのブラウザの場合、エラー処理は少々複雑です。
>まず読み込みそのものに(ファイルが見つからないなどの理由で)失敗した場合と、XMLのパースに失敗した場合とでエラー時の動作が異なります。更にその双方が、少なくとも一度仕様変更されています(もしかしたらもっと多いかも知れません)。先述したとおり私は細かくソースを追ってはいませんので、ここでは参考までに、Netscape 7.0での動作を旧仕様として、Mozilla Firefox 1.0PRの動作を新仕様として紹介しておきます。
>
まず旧仕様においては、読み込みそのものに失敗しても一切エラーは起こりませんので、documentElement が null であることから判断するしかありません。
>次に、XMLのパースに失敗した場合、以下のようなXMLが読み込まれたものとして扱われます。エラーらしい動作は一切起こりません。
>現実的にはルート要素の名前がparsererrorで、namespaceURIがhttp://www.mozilla.org/newlayout/xml/parsererror.xmlだったらエラーと判断することになるでしょう。ちなみにこの名前空間にどんな根拠があるのかは不明ですが、ソース中にも直書きしてあったりするので、ある程度は信頼できるものと思われます。
>
一方新仕様の場合、ファイルの読み込みそのものに失敗すると例外がthrowされるので、loadメソッドはtryブロックの中で実行する必要があります。
>次に、XMLのパースに失敗した場合、以下のようなXMLが読み込まれたとして扱われます。やはりエラーらしい動作は起こりません。
>要素名や名前空間は旧仕様と同じですが、よく見比べると微妙に書式が異なっています。この違いにどの程度の意味があるのかは分かりませんので、あくまで参考に留めておいてください。
[3] [[同一起源方針]]の対象になっているみたいです。
* 歴史
** DOM3
[7] [CODE(DOMm)@en[[[load]]]] [[メソッド]]、[CODE(DOMa)@en[[[async]]]] [[属性]]、
[CODE(DOMm)@en[[[abort]]]] [[メソッド]]は [[DOM水準3LS]] 仕様案の
[DFN[[CODE(DOMi)@en[[[DocumentLS]]]]]] [[界面]]に含まれていました。
(もっと前の[[原案]]が初出)
[2] [CITE@en-US[Document Object Model Load and Save]]
([TIME[2003-02-27 04:19:25 +09:00]] 版)
<http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030226/load-save.html#LS-DocumentLS>
[1] [CITE@en-US[Document Object Model Load and Save]]
([TIME[2003-06-19 07:22:01 +09:00]] 版)
<http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619/load-save.html#LS-DocumentLS>
[4] [CITE@en-US[Document Object Model Load and Save]]
([TIME[2003-06-19 07:22:01 +09:00]] 版)
<http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619/load-save.html#LS-DocumentLS-async>
[6] [CITE@en-US[Document Object Model Load and Save]]
([TIME[2003-06-19 07:22:01 +09:00]] 版)
<http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619/load-save.html#LS-DocumentLS-load>
[5] [[DOM水準3LS]]の当時既に [[IE]] と [[Mozilla]] で実装されていたらしいのに、
なんで実装済みのこいつらを削除して、かわりに[[Webブラウザー]]でまったく実装されていない
[CODE(DOMi)@en[[[LSParser]]]] だけ[[勧告]]にしたのかまったく謎ですねwwwwwwww
[8] [CITE[IRC logs: freenode / #whatwg / 20091009]]
([TIME[2009-12-08 00:45:57 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20091009>
[9] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-08-12 22:23:25 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=5284&to=5285>
[10] [CITE@en[Last Week: Asynchronous script execution and GPU Acceleration by default « Peter Beverloo]]
( ([TIME[2010-09-26 23:09:35 +09:00]] 版))
<http://peter.sh/2010/09/last-week-asynchronous-script-execution-and-gpu-acceleration-by-default/>
[11] [CITE@en[983090 – Try to remove document.load]]
( ([TIME[2014-03-15 00:27:55 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=983090>
[12] [CITE@en[Web Applications 1.0 r8800 Remove commented out SYNCLOAD stuff relating to XMLDocument.load()]]
( ([TIME[2014-09-20 08:22:00 +09:00]] 版))
<https://html5.org/r/8800>
[13] [CITE@en[Web Applications 1.0 r8799 Stop using the word 'asynchronously', and reduce usage of the word 'synchronous'.]]
( ([TIME[2014-09-20 08:19:00 +09:00]] 版))
<https://html5.org/r/8799>
[14] [CITE@en[Bug 22696 – inline <script async>]]
( ([TIME[2014-09-28 09:03:14 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22696>
[15] [CITE@en[Improve #sync-warning wording · 2747353 · whatwg/xhr]]
( ([TIME[2014-11-14 21:01:20 +09:00]] 版))
<https://github.com/whatwg/xhr/commit/2747353a3861ca72258d5393d7fa99712a85c011>
[16] [CITE@en[494705 – Deprecate DOM3 Load (XMLDocument.load)]]
( ([TIME[2015-01-07 11:40:17 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=494705>