是的,我在previous question部分得到了答案。但是,我仍然担心告诉GM去哪里并将数据提取到数组......
在网页http://www.trada.net/p_home.aspx上,如果我运行firebug控制台,我会从上面提到的问题中获取数据,但它一直在变化,每秒都在更新。
这个数据我已经知道如何把它放在一个数组中,从那里我将告诉GM如何处理它。我一直无法运行firebug控制台,我不知道如何让GM获取网站发送的数据请求,如下所示:http://www.trada.net/REST_Service/REST_Auction.svc/GetAuctionData?_=1306009003654 - 最后一部分随每次更新而变化。
基本上Gm会每秒获取数据,看看是否需要对任何拍卖进行出价,然后如果赢得任何1,请单击出现的弹出窗口,以便继续。
答案 0 :(得分:1)
由于目标页面使用jQuery,您可以使用ajaxSuccess()
轻松窃听JSON数据。
然后问题就是将数据从页面范围转移到GM沙箱......这可以通过将数据放入特殊页面节点来完成。
从那里开始,只需使用my other (brilliant :D ) answer。
总而言之,以下内容应该让你开始:
近4年后更新:由于Firefox和Greasemonkey的许多变化,以下代码现已过时。由于缺乏兴趣,我不打算重新设计它,也因为它不是大多数RL任务的最佳方法。对于大多数情况;最强大,最便携,最可靠的方法仍然是智能轮询。请参阅an example of a handy utility for that。
// ==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 ('<div id="LatestJSON_Data"></div>');
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 ( (<><![CDATA[
#LatestJSON_Data
{
background: gold;
border: 3px ridge #0000DD;
font-size: 10px;
margin: 0 2em;
padding: 1ex 1em;
width: 94%;
opacity: 0.8;
overflow: hidden;
z-index: 666;
position: absolute;
color: black;
}
]]></>).toString () );
请注意,问题的提案可能违反了网站的服务条款和/或网站可以采取对策。 (他们已经混淆了他们的JS。)