纯JavaScript中的ajaxComplete

时间:2017-07-27 02:21:03

标签: javascript jquery google-chrome-extension

我正在使用内容脚本构建chrome扩展程序。

我有一段代码在使用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);
        }
    }
});
}

这可能吗?

1 个答案:

答案 0 :(得分:5)

更新

如果您正在编写Chrome扩展程序,则应该使用chrome.webRequest API。见https://developer.chrome.com/extensions/webRequest

您可以覆盖发出AJAX请求所需的现有方法之一,例如XMLHttpRequest.prototype.send,以添加您自己的加载事件侦听器。例如

(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。