使用Greasemonkey和jQuery拦截页面中的JSON / AJAX数据并进行处理

是的,我在上一个问题中得到了部分答案。 但是,我仍然存在告诉GM去哪里和获取数据以放入arrays的问题……

在网页http://www.trada.net/p_home.aspx上 ,如果我运行firebug控制台,我从上面提到的问题中获取数据,但它一直在变化,每秒更新一次。

这个数据我已经知道如何把它放在一个数组中,从那里我将告诉GM如何处理它。 我一直无法运行firebug控制台,我不知道如何让GM获取网站发送的数据请求,如下所示: http : //www.trada.net/REST_Service/REST_Auction.svc/GetAuctionData? _ = 1306009003654 – 最后一部分随每次更新而变化。

基本上Gm将每秒获取数据,看看是否需要对任何拍卖进行投标,然后如果赢得任何1,则单击出现的弹出窗口,以便继续。

由于目标页面使用jQuery,因此您可以使用ajaxSuccess()轻松窃听JSON数据。

然后问题就是将数据从页面范围转移到GM沙箱……这可以通过将数据放入特殊页面节点来完成。

从那里开始,只需使用我的另一个(辉煌:D)答案 。

总而言之,以下内容应该让您开始:

近4年后更新:由于Firefox和Greasemonkey的许多变化,下面的代码现已过时。 由于缺乏兴趣,我不打算重新设计它,也因为它不是大多数RL任务的最佳方法。 对于大多数情况; 最强大,最便携,最可靠的方法仍然是智能轮询。 请参阅一个方便实用程序的示例 。

 // ==UserScript== // @name _Fun with JSON // @include http://www.trada.net/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js // ==/UserScript== //--- Create a cell for transmitting the date from page scope to GM scope. $('body'). prepend ('
'); var J_DataCell = $('#LatestJSON_Data'); //--- Evesdrop on the page's AJAX calls and paste the data into our special div. unsafeWindow.$('body').ajaxSuccess ( function (event, requestData) { J_DataCell.text (requestData.responseText); } ); //--- Listen for changes to the special div and parse the data. J_DataCell.bind ('DOMSubtreeModified', ParseJSON_Data); function ParseJSON_Data () { //--- Get the latest data from the special cell and parse it. var myJson = J_DataCell.text (); var jsonObj = $.parseJSON (myJson); //--- The JSON should return a 2-D array, named "d". var AuctionDataArray = jsonObj.d; //--- Loop over each row in the array. $.each ( AuctionDataArray, function (rowIndex, singleAuctionData) { //--- Print the 7th column. console.log ('Row: ' + (parseInt (rowIndex) + 1) + ' Column: 7 Value: ' + singleAuctionData[6]); } ); } //--- Format our special cell with CSS. Add "visibility: hidden;" or "display: none;", if desired. GM_addStyle ( (<>).toString () );

请注意,问题的提案可能违反网站的服务条款和/或网站可能采取对策。 (他们已经混淆了他们的JS。)