アクセスする Web サイトの JavaScript イベントをオーバーライドするために、firefox 用のグリースモンキー拡張機能を試しています。
たとえば、どのページにアクセスしても、blurイベントがwindow要素にバインドされたときにメッセージを表示したいと考えています。
かなり簡単だと思いました。しかし、Web サイトが使用するライブラリによっては、JavaScript イベントがさまざまな場所に保存されているように見えるため、すべてのケースでこれを機能させるのははるかに困難です。
グリースモンキーユーザー スクリプトで作成したテストを次に示します。
window.onload = function(event) {
// Handle pure JS
if (window.onblur) {
console.log('There is a blur event on the window element of this page');
}
// Handle jQuery
if (window.jQuery) {
var jExpando = window[window.jQuery.expando];
if (jExpando.events.blur) {
console.log('There is a blur jQuery event on the window element of this page');
}
}
}
これは、純粋な JavaScript または jQuery を使用するすべてのページで機能しますが、Mootools、Prototype などの他のライブラリのブラーイベント リスナーをキャッチできません。
したがって、既存のすべての JavaScript ライブラリを自分で処理する必要があり、その方法がわからないことを考えると、これはかなり悪いコードです。
すべてのイベント リスナーを特定の JavaScript オブジェクト (それらをアタッチするために使用されたライブラリに関係なく) にバインドして、それらの一部をオーバーライドできるようにする方法はありますか?