2017-07-27 15 views
0

コンテンツスクリプトを使用してクロムエクステンションを構築しています。ajaxComplete in pure JavaScript

jQueryを使用してページ上のすべてのajaxリクエストが成功すると、DOM要素を挿入するコードがあります。 jQueryなしでこれをどのように再現できますか? ページ上のAjaxリクエストを変更することはできません。

if(window.jQuery){ 
jQuery(document).ajaxComplete(function(event, xhr, settings) { 
    for(var i =0; i< $jq('div.handwave').length; i++){ 
     if($($('div.handwave')[i]).children('.done').length < 1){ 
      $(document).find('div.handwave').eq(i).append(wind); 
     } 
    } 
}); 
} 

これは可能ですか?

+3

jQueryはJavaScriptで書かれた単なるライブラリです.JQueryで可能なものはJavaScriptで可能です。なぜならJavaScriptはJavaScriptのためです。 –

+0

jQueryはJavaScriptの単なる拡張です。 jQueryには、生のJavaScriptが処理できないものはありません。 「**あなたはjQueryを必要としないかもしれません**」(http://www.youmightnotneedjquery.com)にアクセスし、スクリプトを1つずつ解読してください。 –

+0

残念ながら、ajaxCompleteの代替案はありません。 – xoail

答えて

2

更新

あなたはChromeの拡張機能を書いている場合は、おそらくchrome.webRequest APIを使用する必要があります。あなたがあなた自身の負荷イベントリスナーを追加するには、このようなXMLHttpRequest.prototype.sendとしてAJAX要求を行うために必要な既存の方法のいずれかをオーバーライドすることができhttps://developer.chrome.com/extensions/webRequest


参照してください。たとえば、

(function() { 
    const send = XMLHttpRequest.prototype.send 
    XMLHttpRequest.prototype.send = function() { 
     this.addEventListener('load', function() { 
      console.log('global handler', this.responseText) 
      // add your global handler here 
     }) 
     return send.apply(this, arguments) 
    } 
})() 

コメントに記載されているとおり、これはfetch APIをカバーしません。

+0

「Uncaught ReferenceError:XMLHttpRequestが定義されていません。」と表示されています。これをどのように初期化するのですか? – xoail

+0

@xoail申し訳ありませんが、固定以来私がしてきたタイプミスでした – Phil

+0

パーフェクト作品が素晴らしい!ありがとうございました! – xoail