1

アクセスする 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 オブジェクト (それらをアタッチするために使用されたライブラリに関係なく) にバインドして、それらの一部をオーバーライドできるようにする方法はありますか?

4

1 に答える 1