/
674.txt
388 lines (304 loc) · 23.6 KB
/
674.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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
[15] [DFN[[RUBYB[プラグイン]@en[plugin]]]]は、[[利用者エージェント]]が定義するところの[[利用者エージェント]]が利用する[RUBYB[内容取り扱い器]@en[content handler]]であって、
[[利用者エージェント]]の [CODE(DOMi)@en[[[Document]]]] の[[レンダリング]]の一部となることができるものであり、
しかし [CODE(DOMi)@en[[[Document]]]] の[[子供閲覧文脈]]でも [CODE(DOMi)@en[[[Node]]]]
[[オブジェクト]]を作るものでもないようなものをいいます [SRC[>>11]]。
[16] 通常は[RUBYB[[[第三者]]]@en[third party]]に提供されるものですが、
[[利用者エージェント]]に組み込まれたものもあります [SRC[>>11]]。
[EG[
[17] 例えば現在の多くの [[Webブラウザー]]は、組み込みの [[PDF]]
[[プラグイン]]を持っています。
]EG]
;; [18] [[Webブラウザー]]から別途起動されるものは[[ヘルパーアプリケーション]]と呼ばれ、
[[プラグイン]]とは異なります。
* 仕様書
[REFS[
- [11] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-03-05 09:33:40 +09:00]] 版) <https://html.spec.whatwg.org/#plugin>'''
- [23] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#concept-param-parameter>
- [62] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#storage-mutex>
- [67] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#plugins-2>
]REFS]
* 文脈
[10] [[プラグイン]]は、次の場面で使われることがあります。
[FIG(short list)[
- [CODE(HTMLe)@en[[[embed]]]]
- [CODE(HTMLe)@en[[[object]]]]
- [CODE(HTMLe)@en[[[applet]]]]
- [[プラグイン文書]]
]FIG]
* Web ブラウザーとプラグインの間の API
[19] [[HTML Standard]] では[[Webブラウザー]]と[[プラグイン]]の間の [[API]]
は規定せず、[[利用者エージェント]]と[[プラットフォーム]]に依存するもの [SRC[>>11]]
としています。
;; [20] [[プラグイン]]に対応しないことも認められています [SRC[>>11]]。
[12] 各 [[Webブラウザー]]は[[プラグイン]]と[[Webブラウザー]]との間の [[API]]
を用意しています。
[FIG(short list)[
- [[NPAPI]]
- [[PPAPI]]
- [[ActiveX control]]
- [[Qt based plugins]]
- [[NaCl]]
]FIG]
[44] [[IE]] は [[ActiveX control]] に対応しています。 [[Gecko]] は [[NPAPI]]
に対応しています。 [[Blink]] は [[PPAPI]] に対応しています。
[[WebKit]] は [[NPAPI]] に対応しています。
[13] [[プラグイン]]は、 [[DOM]] 上の [CODE(HTMLe)@en[[[embed]]]] [[要素]]や
[CODE(HTMLe)@en[[[object]]]] [[要素]]を通じて[[スクリプト]]に [[API]]
を提供できます。
;; [14] かつては [[Javaアプレット]]と[[スクリプト]]を相互接続する [[LiveConnect]]
も使われていました。
[21] [[著者]]の[[スクリプト]]はそのような [[API]] の有無を通じて当該[[要素]]を処理する[[プラグイン]]が有効か否かを判断できます。
また [CODE(DOMi)@en[[[Navigator]]]] [[オブジェクト]]にも当該環境で有効な[[プラグイン]]の情報を提供する
[[API]] があります。
;; [CODE(JS)@en[[[navigator.plugins]]]]、[CODE(JS)@en[[[navigator.mimeTypes]]]]
参照。
[30] [CODE(HTMLe)@en[[[object]]]] [[要素]]の[[プラグイン]]は、[[フォームデータ集合]]に値を提供できます。
[58] [[プラグイン]]は [[Webブラウザー]]に対して、次のものを提供する必要があります。
[FIG(list members)[
:[[保安プラグイン]]か否か:[[保安プラグイン]]とできるかどうか。
:[[隠れプラグイン]]:
[CODE(DOMi)@en[[[PluginArray]]]] に含まれ[[列挙可能]]か、
[CODE(DOMi)@en[[[PluginArray]]]] に含まれるが[[列挙可能]]ではない[DFN[[RUBYB[隠れプラグイン]@en[hidden plugin]]]] [SRC[>>67]] か、
[CODE(DOMi)@en[[[PluginArray]]]] に含まれないかのいずれか。
:[[MIME型]]:ある [[MIME型]]の指定が当該[[プラグイン]]で処理できるかどうかを判定する。
そのうちのいくつかは、 [[DOM]] に晒される。
:[[拡張子]]:ある [[URL]] の [[path]] が当該[[プラグイン]]で処理できるかどうかを判定する。
:[CODE(HTMLa)@en[[[classid]]]]:ある [CODE(HTMLa)@en[[[classid]]]]
が当該[[プラグイン]]で処理できるかどうかを判定する。
:[[実現値化]]:[[プラグイン]]を[[実現値化]]する。[[Webブラウザー]]は、
[[fetch]] して得られた[[資源]] (あれば) と[[引数]]の名前と値の組のリスト、
[CODE(HTMLa)@en[[[data]]]] [[属性値]] ([CODE(HTMLe)@en[[[object]]]])、
[[保安プラグイン]]とするかどうかを引き渡す。失敗したら、エラーを報告する。
]FIG]
[64] [[プラグイン]]の[[実現値]]は、[[Webブラウザー]]に対して、次のものを提供する必要があります。
[FIG(list members)[
:読み込み完了:読み込み完了したら通知する。 ([[Webブラウザー]]は
[CODE(DOMe)@en[[[load]]]] [[イベント]]を[[発火]]します。)
:[[レンダリング]]:[[Webブラウザー]]の指定した領域に[[レンダリング]]し、
適宜更新する。
:[[イベント]]処理:[[鍵盤イベント]]、[[マウスイベント]]などの入力を処理する。
:[[引数]]変化:[CODE(HTMLe)@en[[[object]]]]
[[要素]]の[[引数]]の変化を受信したい[[プラグイン]]は、
変化したとの通知を [[Webブラウザー]]から受け取ることができます [SRC[>>23]]。
([[属性]]の変化を受け取れるとは規定されていません。また、
[CODE(HTMLe)@en[[[param]]]] [[要素]]の追加や削除を受け取れるとも規定されていません。)
:[[フォームデータ集合]]における名前と値:
[CODE(HTMLe)@en[[[object]]]] [[要素]]で使う[[プラグイン]]は、
[[フォームデータ集合]]構築時に名前と値を提供できます。
:破棄:[[実現値]]を破棄する。
:スクリプト可能インターフェイス:[CODE(HTMLe)@en[[[embed]]]] [[要素]]や
[CODE(HTMLe)@en[[[object]]]] [[要素]]が[[実装]]する追加の[[インターフェイス]] (あれば)
と [[legacycaller]]。
]FIG]
[59] 加えて、実用上、 [[Webブラウザー]]は[[プラグイン]]に対して、次のものを提供する必要があります。
[FIG(list members)[
:[[fetch]]:[[Webブラウザー]]を介した [[fetch]] のための [[API]]。
:[[DOM]]:[[プラグイン]]が使われている[[文書]]にアクセスする [[API]]。
:エラー:[[コンソール]]にエラーを報告するための [[API]]。
]FIG]
[24] [[Webブラウザー]]は、利用可能な[[プラグイン]]であっても、
[[Webブラウザー]]の判断により、または[[利用者]]の判断により、
無効とすることができます。
;; [61] 仕様書上この「無効」状態の扱いは一貫していません。 [CODE(HTMLe)@en[[[applet]]]]
[[要素]]の規定で [[Java]] [[プラグイン]]が無効にできることを言及していたり、
[CODE(HTMLe)@en[[[object]]]] [[要素]]で特定の [CODE(HTMLe)@en[[[object]]]]
[[要素]]について[[プラグイン]]を無効化できることを言及していたりしますが、
[CODE(HTMLe)@en[[[embed]]]] [[要素]]でそのような規定はありません。
とはいえ、無効なものは「適切な[[プラグイン]]が存在する」との条件を満たさないと解釈できますから、
仕様書と現実で矛盾しているわけではありません。
[63] [[スクリプト]]が[[プラグイン]]を呼び出すときや[[プラグイン]]が[[スクリプト]]を呼び出すときは、
[[ストレージミューテックスを解放]]しなければ[['''なりません''']]。
* プラグインの選択
[69] [CODE(HTMLe)@en[[[embed]]]] [[要素]]と [CODE(HTMLe)@en[[[object]]]]
[[要素]]の処理では、それぞれで[[プラグイン]]の選択方法が規定されています。
;; それぞれの項を参照。 [CODE(HTMLe)@en[[[applet]]]] [[要素]]では、常に
[[Java]] [[プラグイン]]が選択されます。
[70] [[HTML Standard]] は具体的な[[プラグイン]]と [[Webブラウザー]]との[[インターフェイス]]を規定していないこともあり、
大まなか選択方法の規定のみで、具体的な決定手順は決められていません。
[[プラグイン]]は、 [[Webブラウザー]]に対して、
対応する [[MIME型]]、[[URL]] の [[path]] のパターン ([[拡張子]])、
[CODE(HTMLa)@en[[[classid]]]] を提示することが必要です。
[22] [[プラグイン]]は、いくつかの [[MIME型]]について、それを処理できるものとして登録できます。
ただし、[[利用者エージェント]]は [CODE(MIME)@en[[[text/plain]]]] と
[CODE(MIME)@en[[[application/octet-stream]]]] について[[プラグイン]]が登録されたものとして扱っては[['''なりません''']] [SRC[>>11]]。
また仕様上明示的に禁止はされていませんが、 [CODE(MIME)@en[[[text/html]]]]
や [CODE(MIME)@en[[[application/xml]]]] のような [[DOM]]
を構築する [[MIME型]]も[[プラグイン]]での処理には不適切と思われます。
;; しかし歴史的理由で、 [[SVG]] が[[プラグイン]]で処理されてしまうことがあります。
[71] [CODE(DOMi)@en[[[PluginArray]]]] 中の[[プラグイン]]について、
[[利用者エージェント]]は、その対応する [[MIME型]]のいくつかを[RUBYB[明示的に対応]@en[explicitly supported]]するものとして示さなければ[['''なりません''']] [SRC[>>67]]。
[[明示的に対応]]する [[MIME型]]は、 [CODE(DOMi)@en[[[Plugin]]]]
[[オブジェクト]]や [CODE(DOMi)@en[[[MimeTypeArray]]]]
[[オブジェクト]]を通して晒されます。
;; [72] これは [[fingerprinting vector]] であり、[[利用者エージェント]]は[[互換性]]と[[プライバシー]]を両立させるべく適度に晒すことが期待されています [SRC[>>67]]。
* Web ブラウザーとスクリプトの間の API
[73] [[スクリプト]]は、 [CODE(DOMi)@en[[[Navigator]]]] [[オブジェクト]]上の
[[API]] を使って[[プラグイン]]に関する情報を得ることができます。次の[[インターフェイス]]があります。
[FIG(list short)[
- [CODE(DOMi)@en[[[NavigatorPlugins]]]]
- [CODE(DOMi)@en[[[PluginArray]]]]
- [CODE(DOMi)@en[[[Plugin]]]]
- [CODE(DOMi)@en[[[MimeTypeArray]]]]
- [CODE(DOMi)@en[[[MimeType]]]]
]FIG]
[74] しかしこれは [[fingerprinting vector]] であり、[[利用者]]の[[プライバシー]]の保護のため、
できるだけ限定的な情報のみを提供することが [[Webブラウザー]]には求められています。
(各項を参照。)
[76] これらの情報は、[[大域オブジェクト]]の作成時、あるいは最初の参照時、
あるいは最初に[[プラグイン]]の[[実現値]]を作成した時などの適当なタイミングのものと思われます。
(仕様上はいつの情報とするべきかは明確にされていません。元々[[プラグイン]]自体が[[相互運用性]]と相容れない存在ですから、この程度の差異は大した問題ではないのでしょう。)
[[スクリプト]]は [CODE(DOMm)@en[[[refresh]]]] [[メソッド]]により最新の情報に更新することを求められます。
;; 相互に参照可能な[[閲覧文脈]]同士でこれらの情報に (作成タイミングの差異により)
差異が生じることはあり得ます。
[75] [[プラグイン]]の[[実現値]]と[[スクリプト]]の間の [[API]] は、
各[[要素]]の項や [[LiveConnect]] を参照。
** [CODE(DOMi)@en[Plugin]] インターフェイス
[68] [DFN[[CODE(DOMi)@en[[[Plugin]]]]]] [SRC[>>67]] [[オブジェクト]]は、
[CODE(DOMi)@en[[[PluginArray]]]] [[オブジェクト]]において[[プラグイン]]を表します。
[66] [CODE(DOMi)@en[[[Plugin]]]] [[インターフェイス]]は、
次の[[メンバー]]を持ちます。
[FIG(list short)[
- [CODE(DOMa)@en[[[description]]]]
- [CODE(DOMa)@en[[[filename]]]]
- [CODE(DOMa)@en[[[length]]]]
- [CODE(DOMa)@en[[[name]]]]
- [CODE(DOMm)@en[[[item]]]]
- [CODE(DOMm)@en[[[namedItem]]]]
- [[indexed getter]]
- [[named getter]]
]FIG]
* プラグインの一覧
[32] 現在の多くの[[Webブラウザー]]は、 [[PDF]] [[プラグイン]]を組み込みで実装しているようです。
[33] 現在の多くの[[デスクトップブラウザー]]は、 [[Flash]] [[プラグイン]]がインストールされた状態になっています。
;; [47] それも徐々に使われなくなっています。また[[スマートフォン]]の[[Webブラウザー]]にはインストールされていないのが普通です。
[34] かつては多くの[[Webブラウザー]]で次の[[プラグイン]]がインストールされた状態でしたが、
現在はあまり使われなくなっています。
[FIG(short list)[
- [[Java]]
- [[Shockwave Director]]
- [[RealPlayer]]
- [[VRML]]
- [[QuickTime]]
- [[Windows Media Player]]
]FIG]
;; [46] [[Java]] や [[Director]] は [[Flash]] に移行しました。
[[VRML]] は使われなくなりました。
[[RealPlayer]] や [[QuickTime]] や [[WMP]] を使った[[動画像]]は
[[Flash]] に移行しました。
;; [45] かつて[[プラグイン]]が必要だったものは、現在ではほぼすべて [[JavaScript]]
で実現できます。
[31] [[NPAPI]] 等各種 [[API]] を使って実装された[[プラグイン]]の一覧は、
各 [[API]] の項を参照してください。
[35] >>9 には [[Chrome]] が使っている[[プラグイン]]の一覧があります。
[40] [[Firefox]] は登録された[[プラグイン]]以外は標準状態で有効にしない方針を採っています
[SRC[>>36, >>37, >>39]]。
[REFS[
- [9] ([TIME[2011-08-08 20:21:00 +09:00]] 版) <https://dl.google.com/chrome/plugins/plugins.xml>
- [37] [CITE@en[Plugins/Firefox Whitelist - MozillaWiki]]
([TIME[2015-05-01 18:19:54 +09:00]] 版)
<https://wiki.mozilla.org/Plugins/Firefox_Whitelist>
-- [39] [CITE[Firefox Whitelist - Automatic Activation of NPAPI Plugins - Google Sheets]]
([TIME[2015-05-01 23:21:14 +09:00]] 版)
<https://docs.google.com/a/mozilla.com/spreadsheets/d/19JIQiaS9mJgkKQ07ax2KH7syRCgxt2dCCxcBD56PiQc/edit?pli=1#gid=0>
]REFS]
[60] [CODE(HTMLe)@en[[[embed]]]] [[要素]]は常に[[プラグイン]]を[[表現]]します。
適当な[[プラグイン]]がなければ、[[既定プラグイン]]が使われます。
また、エラーの発生時にも、その旨が代わりに表示されます。
* 相互運用性
[28] [[プラグイン]]は [[Web]] の表現力を向上させるための[[拡張点]]として導入され、
90年代には活発に利用されていましたが、一方で[[相互運用性]]を低下させる問題ある機能でもありました。
00年代の [[JavaScript]] [[API]] の発展と [[HTML5]] による [[HTML]]
自体の機能追加によりかつて[[プラグイン]]を通じて提供していた機能のほとんどは
[[Webブラウザー]]自体によって提供されるようになり、[[プラグイン]]は役目を終えつつあります。
[29] ほとんどの [[Webブラウザー]]が対応している [[PDF]] を除き、[[著者]]は[[プラグイン]]に依存するべきではありません。
[[後方互換性]]のため [[Flash]] が利用できる環境も少なくありませんが、対応していない環境もあり、
[[著者]]は [[Flash]] を可能な限り避けるべきです。それ以外の[[プラグイン]]を使うのは、
不適切です。
* セキュリティーとプライバシー
[25] [[Webブラウザー]]は、[[プラグイン]]を使って外部の[[内容]]を処理する時には非常な注意を払う必要があります。特に[[第三者]]の[[プラグイン]]ソフトウェアが[[Webブラウザー]]と同じ[[特権]]で動作する場合には、
[[第三者]]の[[ソフトウェア]]の[[脆弱性]]が [[Webブラウザー]]にも波及します。 [SRC[>>11]]
;; [26] 実際に[[プラグイン]]の[[バッファーオーバーフロー]]その他の[[脆弱性]]が
[[Webブラウザー]]の安全性に深刻な影響を及ぼしたり、[[Web]] の[[同一起源ポリシー]]等の[[セキュリティー]]上の制約が[[プラグイン]]で遵守されず
[[Webアプリケーション]]の安全性に問題が生じたりしたことがあります。[[プラグイン]]の動作が不安定で異常終了するようなことがあれば、
[[Webブラウザー]]自体も巻き込まれてしまいます。最近の [[Webブラウザー]]は[[プラグイン]]を別の[[プロセス]]で動作させたり、
[[第三者]]が提供する[[プラグイン]]を排除したりしてこうした問題の除去に取り組んでいます。
[27] どの[[プラグイン]]が利用できるか (その環境に[[インストール]]されているか)
は歴史的に[[利用者]]によって異なっていましたから、これは [[finterprinting vector]] [SRC[>>11]]
とされています。[[利用者エージェント]]はどの[[利用者]]に対しても同じ[[プラグイン]]の組み合わせのみに対応することが[RUBYB[望ましい]@en[encouraged]] [SRC[>>11]] です。
[54] [[プラグイン]]自体や[[プラグイン]]により実行可能データが処理される場合には、
その安全性にも配慮が必要です。
[EG[
[55] 例えば [[IE]] は [CODE(HTMLe)@en[[[object]]]] [[要素]]で指定された
[[ActiveX control]] を表示できますが、インストールされていなければ [[CAB]]
ファイルをダウンロードして半自動でインストールできます。この時、
[[セキュリティーゾーン]]の設定にもよりますが、
[[証明書]]を表示して[[利用者]]の確認を求めるなどの手順があります。
]EG]
[56] 近年の [[Webブラウザー]]は、[[プラグイン]]の暴走を検出し、
強制終了させることができる場合があります。しかし[[Webブラウザー]]ち[[プラグイン]]の実装方法によっては、
一部または全部の暴走を停止させることができないかもしれません。
* 歴史
[48] [[プラグイン]]と [[NPAPI]] や [CODE(HTMLe)@en[[[embed]]]] [[要素]]は、
[[Netscape Navigator 2]] により導入されました。 [[Java applet]] と
[CODE(HTMLe)@en[[[applet]]]] [[要素]]も実装されました。
;; [50] [CODE(HTMLe)@en[[[applet]]]] [[要素]]は [[HotJava]] が実装していましたが、
それより前には [CODE(HTMLe)@en[[[app]]]] [[要素]]でした。
[65] [CODE(DOMi)@en[[[Plugin]]]] [[オブジェクト]]と
[CODE(DOMa)@en[[[description]]]], [CODE(DOMa)@en[[[filename]]]],
[CODE(DOMa)@en[[[length]]]], [CODE(DOMa)@en[[[name]]]]
各[[IDL属性]]は [[JavaScript 1.1]] で追加されました。
[49] [[Internet Explorer 3]] もこれらを実装しました。更に [[ActiveX control]]
や [CODE(HTMLe)@en[[[object]]]] [[要素]]も実装しました。
;; [51] しかし [[IE]] はその後政治的理由で [[NPAPI]] や [[Java]] への対応を取りやめることになります。
[52] 90年代には沢山の[[プラグイン]]が作られ、多くの [[Webサイト]]で多くの
[CODE(HTMLe)@en[[[embed]]]] [[要素]]や [CODE(HTMLe)@en[[[object]]]] [[要素]]、
[CODE(HTMLe)@en[[[applet]]]] [[要素]]が使われていました。しかし
[[Webブラウザー]]によって異なる[[要素]]の異なる記述を使い分けなければならず、
また[[プラグイン]]が [[Windows]] のみや [[Windows]] と [[Mac OS]]
のみで提供されていることも多く、[[相互運用性]]には多くの問題を抱えていました。
[[プラグイン]]を使ったページのほとんどすべては、
特定の [[Webブラウザー]]と特定の[[プラグイン]]の特定の版が導入されていないと動作しない不便なページとなっていました。
[53] [[IETF]] と [[W3C]] は、 [[SGML]] として不適切という理由で
[CODE(HTMLe)@en[[[embed]]]] [[要素]]の標準化を拒み、
特定の技術に依存しているという理由で [CODE(HTMLe)@en[[[applet]]]]
[[要素]]を[[非推奨]]にすることで、 [CODE(HTMLe)@en[[[object]]]]
[[要素]]への統一を企てました。しかし[[プラグイン]]技術そのものを統一する動きにはなりませんでしたし、
この時代の [CODE(HTMLe)@en[[[object]]]] [[要素]]は実質的に [[ActiveX control]] 専用でしたから、
[CODE(HTMLe)@en[[[embed]]]] や [CODE(HTMLe)@en[[[applet]]]] が使われなくなることはありませんでした。
[1]
[CITE[Inline Plug-ins]] ([CODE[2007-02-28 00:41:17 +09:00]] 版) <http://web.archive.org/web/19970605061848/www82.netscape.com/comprod/products/navigator/version_2.0/plugins/index.html>
([[名無しさん]])
[2]
[CITE@en[Gecko Plugin API Reference - MDC]] ([CODE[2007-03-01 05:12:27 +09:00]] 版) <http://developer.mozilla.org/en/docs/Gecko_Plugin_API_Reference>
([[名無しさん]])
[3]
[CITE[Web Kit Plug-In Programming Topics: Creating Plug-ins with Cocoa and the Web Kit]] ([CODE[2007-03-09 08:50:03 +09:00]] 版) <http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/Tasks/WebKitPlugins.html>
([[名無しさん]])
[4]
[CITE[プラグインを開発する環境を整える - shima111の日記]] ([TIME[2009-01-21 07:53:23 +09:00]] 版) <http://d.hatena.ne.jp/shima111/20080523/p1>
[5] [CITE[Bug 8784 – politics in <param> example]]
([TIME[2010-02-18 23:48:26 +09:00]] 版)
<http://www.w3.org/Bugs/Public/show_bug.cgi?id=8784>
[6] [CITE@en[Web Applications 1.0 r6573 Define how sandboxing works with plugins in a hypothetical world where plugins honour the sandbox.]]
( ([TIME[2011-09-24 04:40:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6572&to=6573>
[7] [CITE['''['''whatwg''']''' instantiating display:none plugins]]
([TIME[2011-11-02 08:43:09 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-November/033732.html>
[8] [CITE['''['''whatwg''']''' instantiating display:none plugins]]
([TIME[2012-06-14 09:13:58 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-June/036394.html>
[REFS[
- [36] [CITE@en-US[Update on Plugin Activation | Mozilla Security Blog]]
([TIME[2015-05-01 23:19:52 +09:00]] 版)
<https://blog.mozilla.org/security/2014/02/28/update-on-plugin-activation/>
- [41] [CITE@en[992995 – Implement plugin whitelist]] ([TIME[2015-05-01 23:26:21 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=992995>
- [42] [CITE@en[1007389 – Implement plugin whitelist, round 2]] ([TIME[2015-05-01 23:26:47 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=1007389>
- [43] [CITE@en-US[Site Compatibility for Firefox 30 - Mozilla | MDN]] ([TIME[2014-06-19 19:16:24 +09:00]] 版) <https://developer.mozilla.org/en-US/Firefox/Releases/30/Site_Compatibility#Plugin_whitelist_has_been_implemented>
]REFS]
[38] [CITE@en[Keep your Firefox healthy with a quick checkup — Mozilla]]
([TIME[2015-05-01 23:21:08 +09:00]] 版)
<https://www.mozilla.org/en-US/plugincheck/>
[57] [CITE@en-AU[PluginDoc: Windows (MIME Type List)]]
([TIME[2015-05-07 21:46:45 +09:00]] 版)
<http://web.archive.org/web/20100911055400/http://plugindoc.mozdev.org/winmime.php>