任意のイベントオブジェクトを Web ブラウザのコンソールに出力する monitorEvents が便利
はじめに
前回 に引き続き、postMessage を使ってブラウザ内通信を監視するための調査中に monitorEvents [1] というものを見つけた。
クライアント(Web ブラウザ) とサーバ間の通信は DeveloperTool などのネットワークから調べることができるが、postMessage などを使ったブラウザ内の通信も監視したい。
monitorEvents を使うと、ブラウザ内の通信や任意の DOM のイベントを、コンソールから監視することができる。
目的
Web ブラウザ内の任意のイベントをコンソールから監視したい。
方法
公式リファレンスによると[1]、monitorEvents は任意の DOM に対して任意のイベントを監視し、イベント発火時にコンソールにイベントオブジェクトを出力してくれる。
Chrome 対応。
monitorEvents はグローバル関数。
monitorEvents(<DOM>, <イベント名>);
<DOM>: DOM Object
ex. window, $('a'), $('#msg')
<イベント名>: String or Array(任意)
ex. 'click', 'resize', 'scroll', 'keydown', 'message'
例: ウィンドウのリサイズイベントを監視
monitorEvents(window, 'resize');
(参照 [2])
例: 指定した DOM のクリックイベント監視
monitorEvents(window, 'click');
(参照 [3])
例: 指定した DOM の全イベント監視
monitorEvents($('#hoge'));
例: ブラウザ内の postMessage イベント監視
当初の目的。これがやりたかった!
monitorEvents(window, 'message');
例えば例えば、あるブラウザに Facebook JavaScript SDK を読み込むと、iframe DOM が生成され facebook.com
のドメインが読み込まれる。この時、Facebook OAuth ログインするために FB.login()
を実行した際、postMessage を使って iframe とどんな通信をしているのか...? なんてことも、monitorEvents を使って受送信する情報およびホストを監視できる!
ちなみにこの時 iframe から受信した情報は以下。
(ブラウザ内で別ドメインと通信する postMessage については 前回 を参照。)
event: {
data: "_FB_fe44280d8cb=f264aee198&domain=mydomain.com&origin=https%3A%2F%2Fmydomain.com%2Ffe44280d8&relation=opener&frame=f1989e114c&signed_request=efy792iBaf10hurSrVapUIi9Ljcy20bX_eybHZZn8Js.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImNvZGUiOiwwwUNOY2QxMC0tQ0lZd2otdEthaFZibWZ1TE1jeUl1QVJOellTSXplTmJXcENWLXl3MW1UaFNPbkhkZ3Vjc3lnZHBMVURGd05yQV9RZHZVZjFienp0WlRjQlE0QzU2cUJTNHM1a1JmRUw3M1ZvbjBBZmFkVXpGMjRzQjBeeeZQejRfejFfT3dkdXpFRGJ0SnlLdWl5ek9DY1lVMWVvRUZpX1pqMGM2dXBTaEVsV2RvcUNuQzB2RE1rOEJSbkRva2ZhR3E3RWhDVVliWFFTejV3S2NDVk9YWkR4ZmEtZzdLQ3Y1UDM2SkJDRjlYaXAzMmZBS1lzZXRueUdkcW50RjlaMlRNbkVDdFM0TEh3UE9tdlBlMTY1Wkk2UE9xZ3lKMFlraWlEVHNvUFBoRkRHNWVaZ2JPeEp2a2FTRHNMTU1TSzBBUVpwOUdKQ05GTDMxWjJILU83ckJlWCIsImlzc3VlZF9hdCI6MTQxMzM2NDcwMiwidXNlcl9pZCI6Ijc1MTc1NTMwMTU1MzQxMSJ9&access_token=CAAJh14zkSI4BABJu4rZC22D1aR5ef0kZCfd9Ld1j8ItgpKVvaaxKr0WCh04zYIgdddddG8pWYBZCCKwiCpczSOkcZA52M4dpZC9KJJFVsXw2Us2xIvMvmQ7hmavNv3GoZA8OeJKklHRujaM6ZCLEpq7tksIHBC9QPGDE0aUEmltsKt6sF6p357Kb7WYQSiWWdroXSW3Pa8IGmk2mhMaZ228w&expires_in=6098&base_domain=&e2e=%7B%22submit_0%22%3A1413364702770%7D"
}
OAuth 認証時に発行される access_token
発見。ネットワークの通信からでは見つからなかった情報がどんどん出てきた♪
まとめ
monitorEvents を使ってブラウザ内のイベント監視することでデバッグに役立ちそう。
今更知ったのですが、便利だったのでメモがてら投稿。
[1] https://developer.chrome.com/devtools/docs/commandline-api#monitoreventsobject-events
[2] https://developer.chrome.com/devtools/docs/commandline-api-files/monitor-resize.png
[3] https://plus.google.com/u/0/+UmarHansa/posts/jf4mCvrayk8
Author And Source
この問題について(任意のイベントオブジェクトを Web ブラウザのコンソールに出力する monitorEvents が便利), 我々は、より多くの情報をここで見つけました https://qiita.com/naoiwata/items/283f7b233316f35bbb64著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .