是否有可能使用JavaScript来凑的正在AJAX现场更新的所有更改到网页? 我希望该网站使用AJAX每秒刮更新数据,我想抓住所有的变化。 这是一个拍卖网站,每当用户把投标几个对象可以改变。 如果出价被放置在以下变化:
现行出价目前的最高出价拍卖定时器的时间重新添加到它
我想抢到使用Chrome扩展内置于JavaScript这个数据。 是否有一个AJAX监听器对JavaScript可以做到这一点? 的工具套件? 我需要一些方向。 JavaScript可以做到这一点?
是否有可能使用JavaScript来凑的正在AJAX现场更新的所有更改到网页? 我希望该网站使用AJAX每秒刮更新数据,我想抓住所有的变化。 这是一个拍卖网站,每当用户把投标几个对象可以改变。 如果出价被放置在以下变化:
现行出价目前的最高出价拍卖定时器的时间重新添加到它
我想抢到使用Chrome扩展内置于JavaScript这个数据。 是否有一个AJAX监听器对JavaScript可以做到这一点? 的工具套件? 我需要一些方向。 JavaScript可以做到这一点?
我要展示解决问题的方法有两种。 无论选择哪种方法,不要忘了看我的回答底部!
首先,我介绍一个简单的方法, 只要该页面使用jQuery的工作 。 第二种方法看起来稍微复杂一点,但也将在没有jQuery的网页上运作。
下面的例子演示了如何实现基于方法(如POST / GET),URL过滤器,并读取(POST)数据和响应主体。
关于jQuery的方法的详细信息可以的文档中找到.ajaxSuccess
。 用法:
jQuery.ajaxSuccess(function(event, xhr, ajaxOptions) {
/* Method */ ajaxOptions.type
/* URL */ ajaxOptions.url
/* Response body */ xhr.responseText
/* Request body */ ajaxOptions.data
});
如果网站不使用jQuery它的AJAX请求,您必须修改内置XMLHttpRequest
方法。 这需要更多的代码...:
(function() {
var XHR = XMLHttpRequest.prototype;
// Remember references to original methods
var open = XHR.open;
var send = XHR.send;
// Overwrite native methods
// Collect data:
XHR.open = function(method, url) {
this._method = method;
this._url = url;
return open.apply(this, arguments);
};
// Implement "ajaxSuccess" functionality
XHR.send = function(postData) {
this.addEventListener('load', function() {
/* Method */ this._method
/* URL */ this._url
/* Response body */ this.responseText
/* Request body */ postData
});
return send.apply(this, arguments);
};
})();
先前所示的代码在页面的上下文中运行(在你的情况下,拍卖页)。 出于这个原因, 内容脚本必须使用中注入(!)的脚本。 利用这一点并不难,我指的是这个答案的解释的相关详细加用法示例: 建立一个Chrome扩展-使用脚本内容在页面注入代码 。
您可以阅读请求主体,请求头和响应头与chrome.webRequest
API。 该头还可以被修改。 这不过没有(还)可以读,更不用说修改请求的响应体。 如果你想要这个功能,明星https://code.google.com/p/chromium/issues/detail?id=104058 。