/
460.txt
161 lines (122 loc) · 8.58 KB
/
460.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
[3] [CODE(DOMi)@en[NavigatorContentUtils]] [[インターフェイス]]の
[DFN[[CODE(DOMm)@en[registerProtocolHandler]]]] [[メソッド]]は、
[[プロトコル取扱器]]を[[利用者]]に提示するものです。
* 仕様書
[REFS[
- [4] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-07-19 18:13:57 +09:00]]) <https://html.spec.whatwg.org/#custom-handlers>
]REFS]
* 処理
[44] [SEE[ 一般的事項は[[ハンドラー]] ]]
[27] [CODE(DOMm)@en[registerProtocolHandler]] [[メソッド]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>4]]。
[FIG(steps)[
= [30] [VAR[scheme]] を、必須の第1引数を [CODE(IDL)@en[DOMString]] として解釈した結果に設定します。
= [31] [VAR[URL]] を、必須の第2引数を [CODE(IDL)@en[USVString]] として解釈した結果に設定します。
= [32] [VAR[題名]]を、必須の第3引数を [CODE(IDL)@en[DOMString]] として解釈した結果に設定します。
= [37] [VAR[絶対URL]] を、[VAR[URL]] を[[文脈オブジェクト]]の[F[設定群オブジェクト]]に対して[[構文解析][URLの構文解析]]した結果に設定します。
= [33]
[FIG(list)[
- [35] [VAR[scheme]] が [[safelisted scheme]] のいずれかであるか、
[CODE[web+]] の後に1文字[[以上]]の [[ASCII小文字]]が続くものであるかのいずれでもない
- [36] [VAR[URL]] に [CODE[%s][proto-URL]] が含まれない
- [38] [VAR[絶対URL]]が[[失敗]]
]FIG]
... のいずれかを満たすなら、
== [34] [CODE[SyntaxError]] を[[投げ]]、ここで停止します。
= [39] [VAR[絶対URL]]の[F[起源][URLの起源]]と[[文脈オブジェクト]]の[F[設定群オブジェクト]]の[F[起源]]が[[同じ起源]]でなければ、
== [40] [CODE[SecurityError]] を[[投げ]]、ここで停止します。
= [42] [VAR[取扱器]]を、[[取扱器]]に設定します。
[FIG(list members)[
[FIGCAPTION[
[[取扱器]]
]FIGCAPTION]
: [F[種別][取扱器]] : [[プロトコル取扱器]]
: [F[proto-URL]] : [VAR[絶対URL]]
: [F[題名][取扱器]] : [VAR[題名]]
]FIG]
= [43] [VAR[取扱器]]について、[[取扱器の登録]]をします。
]FIG]
* 関連
[45] [SEE[ [[標準のWebブラウザー]] ]]
* 歴史
[6] [[Firefox3]] で [CODE(JS)@en[[[navigator]].[[registerProtocolHandler]]]]
[[メソッド]]を呼び出すと、[[閲覧領域]]上部にメッセージ欄が現れて、
プロトコル取扱器が提供されている旨とそれを追加するボタンが現れます。
ボタンを押すと [[Webブラウザー]]にインストールされます。
;; 一度インストールすると設定画面から削除しない限りずっと有効なようです。
;; インストール後にまったく同じ[[引数]]で[[メソッド]]を呼び出すと、
ボタンなしでインストール済みですというメッセージが出てくるようです。
[7] その後登録した [[URL scheme]] を使おうとするとプログラム選択の[[窓]]が出てきて、
そこから選ぶと[[引数]]で指定した [[URL]] が使われます。この選択の[[窓]]には「以後表示しない」
というチェックがついていて、それをチェックしておくと次からは聞かれません。
[8] 同じ [[URL scheme]] について別の [[URL]] を登録すると、 >>7 の選択肢として新たに追加されます。
以後表示しないとしていてもまた勝手に聞かれるようになるみたいです。
[19] [[Chrome]] では、複数登録されていても、いずれか標準で選択されたものが使われるようです。
どれを選択するかは設定画面で決定できます。
[18] [[Windows]] 上の [[Chrome]] は、 [[OS]] の [[URL scheme]] の取扱器としても登録するようです。
[20] [[Windows]] 上の [[Firefox]] は、 [[OS]] の [[URL scheme]] の取扱器や [[Firefox]]
の取扱器の一覧を非モーダルなダイアログで表示し、選択させるようです。
[[OS]] の [[URL scheme]] として登録はしないようです。
[1] [CITE@en-us[Web-based protocol handlers - MDC]] ([TIME[2009-04-12 11:38:21 +09:00]] 版) <https://developer.mozilla.org/ja/Web-based_protocol_handlers>
[2] [CITE@en-us[registerProtocolHandler - MDC]] ([TIME[2009-04-12 11:39:35 +09:00]] 版) <https://developer.mozilla.org/ja/DOM/window.navigator.registerProtocolHandler>
[5] 登録が有効なのは登録した[[文書]]ないし[[起源]]だけかと思い込んでいましたが、
そうではなく [[Webブラウザー]]上のほぼあらゆる [[URL]]
処理に適用されるのですね。 [[Firefox3]] で試しましたが、[[起源]]に関わらず
[CODE(HTMLe)@en[[[a]]]], [CODE(HTMLe)@en[[[img]]]], [CODE(HTMLe)@en[[[iframe]]]],
[[Webブラウザー]]の [[URL]] 入力欄などいろいろな場所で使えました。
[9] [TIME[2009-04-12T03:08:11.100Z]]:
ぐぐってみると、 [CODE(URI)@en[[[mailto:]]]] に [[GMail]]
を登録するために使っている人が多いみたいですね。他には
[CODE(URI)@en[[[msnim:]]]] に使っている例も見かけました。
それ以外は見てないなあ。
[10] [CITE[IRC logs: freenode / #whatwg / 20100111]]
([TIME[2010-01-13 07:32:59 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100111>
[11] [CITE@en[Web Applications 1.0 r6523 registerProtocolHandler() and registerContentHandler() security updates]]
( ([TIME[2011-08-24 08:27:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6522&to=6523>
[12] [CITE[''''''[''''''whatwg'''''']'''''' Proposal to extend registerProtocolHandler]]
( ([TIME[2011-08-26 07:45:49 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-August/032986.html>
[13] [CITE@en[Web Applications 1.0 r6524 Add an API to unregister a handler and an API to check if a handler is registered.]]
( ([TIME[2011-08-26 07:23:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6523&to=6524>
[14] [CITE@en[Web Applications 1.0 r8051 Add more schemes to the registerProtocolHandler whitelist]]
( ([TIME[2013-07-13 03:07:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8050&to=8051>
[15] [CITE@en[Re: Allow javascript: URIs for registerProtocolHandler]]
( ([[Ian Hickson]] 著, [TIME[2013-11-28 08:43:37 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webapps/2013OctDec/0622.html>
[16] [CITE[registerProtocolHandler() & registerContentHandler() — Anne’s Blog]]
( ([TIME[2014-08-22 07:08:07 +09:00]] 版))
<http://annevankesteren.nl/2014/08/registerprotocolhandler>
[17] [CITE@en[1056860 – Improve registerProtocolHandler()]]
( ([TIME[2014-09-23 05:02:58 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=1056860>
[21] [CITE@en[Fate of registerProtocolHandler() / registerContentHandler() and friends? · Issue #630 · whatwg/html]]
([TIME[2016-02-06 12:38:44 +09:00]] 版)
<https://github.com/whatwg/html/issues/630>
[22] [CITE@en[26876 – Title argument for both registerProtoclHandler() and registerContentHandler() should be removed as i ''''''[''''''...'''''']'''''']]
([TIME[2016-02-06 12:38:48 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26876>
[23] [CITE@en[URLs are parsed and produce records · whatwg/html@30bc255]]
([TIME[2016-02-14 23:04:01 +09:00]] 版)
<https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44>
[24] [CITE@en[Use USVString for all URLs]]
( ([[domenic]]著, [TIME[2016-05-20 22:02:29 +09:00]]))
<https://github.com/whatwg/html/commit/018b983b77b2cd908f6d00100e7e0abe893dd2c3>
[25] [CITE@en[Use URL's HTTP(S) scheme concept and define rel=icon better]]
( ([[annevk]]著, [TIME[2016-05-26 21:59:00 +09:00]]))
<https://github.com/whatwg/html/commit/a932f7dfd5e50101db47a373cee27b04ed108934>
[26] [CITE@en[Use relevant settings object in protocol handlers]]
([[domenic]]著, [TIME[2016-07-13 07:13:28 +09:00]])
<https://github.com/whatwg/html/commit/413c1ccc43c9b16ff5c73585092f8721dea305c7>
[28] [CITE@en[Add version control URI schemes to registerProtocolHandler safelist by joshtriplett · Pull Request #1829 · whatwg/html]]
([TIME[2017-04-18 23:37:06 +09:00]])
<https://github.com/whatwg/html/pull/1829>
[29] [CITE@en[URL scheme for remote follow, share buttons · Issue #2291 · tootsuite/mastodon]]
( ([TIME[2017-09-12 01:54:06 +09:00]]))
<https://github.com/tootsuite/mastodon/issues/2291>
[41] [CITE@en[Fate of registerProtocolHandler() / registerContentHandler() and friends? · Issue #630 · whatwg/html]]
([TIME[2017-09-15 23:14:49 +09:00]])
<https://github.com/whatwg/html/issues/630>