2009-07-06 5 views
2

簡単なdom操作を行う簡単なgreasemonkeyスクリプトがあります。 Greasemonkeyスクリプトは、DOMがロードされた後に読み込まれます。それは運賃であり、最初のページで動作します。しかし、このサイト(twitter ;-))では、xmlhttprequestによるクリック後にページの一部が読み込まれ、この部分がgreasemonkeyscriptによって操作されませんでした。AJAX-Requestの後にgreasemonkeyスクリプトをロードする方法

xmlhttprequestがロードされた後、または要求によってDOMが変更された後で、スクリプトを再度実行することは簡単ですか?

答えて

1

ありがとうございました。それは正しい方向への道でした。

minifyiedスクリプトで関数を乗っ取るための正しいエントリポイントを見つけるのはかなり難しいです。しかし、私は、Twitterのスクリプトにハックがあることがわかった。 Ajaxリクエストの後にwindow.onPageChangeを呼び出します。 (私はこれがjavascriptでの共通のベストプラクティスであるのだろうと思っていますが、それ以外の場合も同様ですか?)私はhttp://userscripts.org/scripts/review/47998にいくつかのコードを見つけました。

 if (typeof unsafeWindow.onPageChange === 'function') { 
     var _onPageChange = unsafeWindow.onPageChange; 
     unsafeWindow.onPageChange = function(){ 
      _onPageChange(); 
      filter(); 
     }; 
    } else { 
     unsafeWindow.onPageChange = filter; 
    } 
3

Greasemonkeyを使用するときの強力なテクニックは、既存のJavaScript関数を「ハイジャック」することです。これが可能に

var originalProcessAjaxResponse; 

function myNewProcessAjaxResponse() { 
    /* Manipulate DOM if you need to, and then... */ 
    originalProcessAjaxResponse(); 
} 

function hijack() { 
    var originalProcessAjaxResponse = processAjaxResponse; 
    processAjaxResponse = myNewProcessAjaxResponse(); 
} 

AJAX独自の機能を注入する:あなたが変更しているページはXmlHttpRequest応答を処理するときに呼び出されprocessAjaxResponseと呼ばれる機能を持っている場合、あなたはあなたのGreasemonkeyスクリプトで次の操作を行うことができます応答イベントが発生します。

関連する問題