十分に安全だと感じたら、間違いなくそのコードに取り掛かり (それほど長くはありません)、onreadystatechange セクションにいくつかのロジックを追加できます。このイベントは、Ajax 呼び出しが完了すると発生します。それにフックすると、コードと対話する何かを簡単に追加できます。
もう 1 つの方法は hijackXMLHttpRequest
です。そのsend()
メソッドが呼び出されたら、「load」イベントのリクエストを監視する独自のイベント リスナーをアタッチします。リクエストが完了したら、カスタム関数を呼び出すことができます。これは次のように実行できます。
XMLHttpRequest.prototype.originalSend=XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send=function(s){
this.addEventListener('load',function(){
//CALL YOUR CODE HERE
},false);
this.originalSend(s);
}
または、onreadystatechange 関数をハイジャックして独自のロジックを追加することもできます。
XMLHttpRequest.prototype.originalSend=XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send=function(s){
if(this.onreadystatechange){
var oldORSC=this.onreadystatechange;
}
this.onreadystatechange=function(){
if (this.readyState==4 && this.status==200){ //a successful request
//CALL YOUR CODE HERE
}
if(oldORSC){
oldORSC();
}
}
this.originalSend(s);
}
もちろん、IE をサポートしたい場合は、IE が AJAX に使用する ActiveXObject で同様のことを行う必要があります。しかし、私はそれを使用していないので、例を挙げることはできません。
編集: これは、ページがこの目的のためだけに呼び出しを行っていることを前提としています。他の AJAX 呼び出しがある場合は、どの呼び出しが使用されているかを判断するロジックを追加する必要があります。このために、open()
メソッドにフックして、URL やパラメーター、または呼び出しの行き先を特定するのに役立つ特定の情報を調べ、それに応じて要求を変更することができます。
また、これらのハイジャックが、他の JavaScript よりも前に FIRST と呼ばれることを確認してください。