人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Webアプリケーション側JavaScriptと,ブラウザ拡張(Firefox add-onなど)のJavaScript間でデータのやりとり,メソッドの呼び出しをすることは可能でしょうか.
具体的には,AJAXアプリケーション開発者が,ページ上の要素を変更するタイミングで,ブラウザ拡張側のイベントハンドラを呼ぶ,ということをしたいです.
https://developer.mozilla.org/ja/DOM/elementを見るとelement.onchangeというものがあるようですが,より柔軟に,Webアプリケーション提供者が独自にイベントを定義し,chrome拡張やFirefoxアドオン開発者がonload時にそのイベントに登録,などの仕組みを普通のブラウザ環境の上に構築することは可能でしょうか.

●質問者: wens31
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Cherenkov
●100ポイント ベストアンサー

できます。例えに出されたonchangeはformのラジオボタンなどが変更されたときに発火するイベントなので趣旨と違います。

「要素を変更するタイミング」といってもいろいろあるので提示してもらえれば最適なイベントをアドバイスできると思います。
例えば

独自イベントではなくDOMで定義されているイベント一覧。
DOM events - Wikipedia, the free encyclopedia


webアプリケーション側で独自のイベントを発生するなら、

ブラウザ拡張側でイベントをキャッチするには、addEventListenerを使って監視します。
イベントは要素を指定して発火させることになるので拡張と通信する場合は大体 documentかwindowに対してイベントを起こします。

jQueryを使った例。

//拡張側
$(window).bind('hateq',function(){alert(1)});

//サイト側
$(window).trigger('hateq');


ページを継ぎ足す拡張の ”AutoPagerize” は継ぎ足された後にAutoPagerize_DOMNodeInsertedイベントを発生させるのでこれを監視して連携できるようにしています。
参考:AutoPagerizeで継ぎ足された部分に自分のスクリプトを適用する方法あれこれ - 0xFF


wens31さんのコメント
丁寧なご回答ありがとうございます! DOMNodeInsertedのようなものがイメージに近いですが,単にDOM要素が挿入されたというだけでなく,様々な挿入のされ方を判別できる方法はないかと考えておりました.ご教示いただいた独自イベント発生方法はまさに,こういうのがあれば良いなと考えていたそのものです. また,実際にAutoPagerizeでは独自イベントが用いられているのですね.実用の例として大変興味深いです.ありがとうございました.
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ