Chromeはコンテンツ側から生成したキーボードイベントを拾うのか?
独自キーバインドを設定するために、コンテンツ領域で keypress や keydown を拾う拡張機能が幾つかある。
keyconfig 系とか Vimperator 系とかね。
んで、これらの拡張っていうか、GoogleChromeはコンテンツ側で生成してディスパッチしたキーボードイベントを拾ってしまうのだろうか、ということが気になった。
もし拾ってしまうとすると、コンテンツ側から拡張機能を通じてChromeの操作が可能になってしまい、セキュリティ問題になりかねない。
Firefoxでも考えられることだが、Firefoxではスクリプトから生成されたイベントはevent.isTrusted
がfalse
となる。また、Firefoxのウィンドウ側からイベントを拾うにはaddEventListener
の第4引数をtrue
にする必要があるなど、ワザとで無い限り拾えないようになっている。
Chromeではこの様な仕組みはあるのだろうか? 拡張開発者たちはこのことに注意を払っているだろうか? それとも・・・。
そんなわけで実験してみようと思った。
だが、問題が発生。
- キーボードイベントの発生のさせ方が分からない!
- 公的な信頼できるドキュメントはどこ?
- テキトウなブログを元にやってみよう
- 何やっても
event.charCode
,event.keyCode
が0になるんだけど.... - もしかして、Bug 16735 – keyboard events created with DOM have keyCode and charCode of 0; thus they aren't handled correctly internally (←昨日まで)
- 質問メールを投げる Google ChromeでKeyboardEventの生成方法 - Chrome API Developers JP | Google グループ
- 回答にあった方法でやってみて、拡張機能には届いて無さそうであることを確認(←今ココ)
- ただし、生成方法が間違っている可能性があるので油断は禁物
というわけで、バグにより検証不能である、という結論に...orz
ある意味Chrome君のセキュリティは強固でした。。。