English 中文(简体)
需要帮助调试润滑音脚本
原标题:Need help debugging greasemonkey script

我在这里很陌生,对通用汽车的脚本编写也很陌生。在这里的一些成员,布洛克和其他人的帮助下,我正在取得进展。

我目前有调试Greasemonkey脚本的问题,但由于某种原因,我没有掌握窍门。我的第一个问题是使用console.log调试firebug。

有时我会找到日志,大多数时候我在那里什么都找不到,我想我用错了。然后尝试使用alert来查看变量值。。。同样的故事。

我目前正在尝试获取一个脚本来处理网站上的一些拍卖Trada.net在Brock Adams的大力帮助下,我们已经完成了一半以上,但我仍然在JS脚本上努力……如果你认为我15多年前就习惯了turbo pascal,那将是一种新的体验。:)

好吧,目前这是我在剧本上总结的内容:

 // ==UserScript==
// @name           bid up to test3
// @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 );


//--- Eavesdrop 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);
    }
);

// **bid function and var s
// **var interval            = 50;
// **var bidClickTimer       = setInterval (function() {BidClick (); }, interval);
// **var numBidClicks        = 0;
// **var A1reset_go          = false;



// **function BidClick1 ()
// **{var //bidBtn1=document.getElementById("ctl00_mainContentPlaceholder_AirtimeAuctionItem1_btn_BidButton");


//**    numBidClicks++;
//**    if (numBidClicks > 10)
//**    {   Alert("check10");
//**        clearInterval (bidClickTimer);
//**        bidClickTimer   = "";
//**    }
//**    else
//**    {   Alert("check11");
//**        bidBtn1.click (1);

//**    }
//**};

//**end bid function

//--- Listen for changes to the special div and parse the data.
J_DataCell.bind ( DOMSubtreeModified , ParseJSON_Data);

function ParseJSON_Data ()
{

//**my var
//**var auction_type ;A1_upto;A1_start;A1_current;A1_reset;
//**end my var

    //--- 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 BidDataArray        = jsonObj.d;

    //--- Loop over each row in the array.
    $.each (
        BidDataArray,
        function (rowIndex, rowValue) {

            //--- Print the 7th column.
            console.log ( Row:   + (parseInt (rowIndex) + 1) +   Column: 7  Value:   + rowValue[6]);

//** my part
//**   Alert("check1");
//**  auction_type=parseInt (rowValue[4]);
//**   if (auction_type== 1)
//**
//**     {Alert("check2");
//**      A1_upto=parseInt (rowValue[12]);
//**       Alert("check3");
//**      A1_current=parseInt (rowValue[8]);
//**       Alert("check4");
//**      A1_reset=rowValue[16];
//**       if (A1_reset != "null")
//**         {Alert("check5");
//**          A1reset_go= true ;
//**          };
//**       if (A1_reset == "null") and (A1reset_go== true )
//**         {Alert("check6");
//**          A1reset_go=false;
//**          Alert("check7"); 
//**          A1_start=rowValue[8];
//**          };
//**        if  ((A1_current - A1_start) <= (A1_upto - 10))
//**          {Alert("check8");
//**           BidClick1 ();
//**           };
//**      };

//** end my part

      };
    );
}


//--- 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 () );

基本上,到目前为止,它确实创建了一个单元格,它在其中显示放入数组中的所有拍卖数据BidDataArray

我想使用数组中每秒更新的数据来获取某些数据,然后决定是否单击出价按钮。

第一次拍卖时,我停滞不前。计时器拍卖我让它每隔几秒钟点击一次。

在第一次拍卖会上,我基本上想:

  1. Check which auction it is,
  2. Find out if it is the first bid for auction,
  3. Get the bid up to amount,
  4. Do calculations to start clicking the last 10 clicks of the auction.
  5. Reset the starting amount.

听起来很简单,但没有调试器,对Js和GM知之甚少,这让我很忙。我试着把我的变量放在控制台日志中,但无法跟踪它们。可能申报错误,或者使用错误。。。但我看不出错误,而且我没有调试程序来测试它们。

java调试器能工作吗?但它没有链接到网站。。。

此外,当我把我的部分添加到Brock的代码中时,它不再显示包含信息的单元格。。。所以我在哪里破坏了他的密码,我找不到问题。。。在我向他的代码添加任何内容之前,它运行良好,然后我添加了我的部分,它不再运行,所以我用“//”将其删除。所以剧本应该跳过它,但他的部分已经不起作用了。我尝试添加“提醒”,但似乎找不到问题。我的所有部件都标有“//**”,目前应该处于非活动状态。

任何帮助都将不胜感激。谢谢

问题回答

嗯,我没有得到太多的回应,但我试过…:(我设法调试了90%,但这是我的答案……我会在找到解决小故障的方法后更新它……:

// ==UserScript==
// @name            let s try 3.42
// @include         http://www.trada.net/*
// @require         http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// ==/UserScript==
var auctiontyp = 0;var aupto = 0;var A1_start  = 0;var A1_current = 0;var A1_rest=  x ;
// **bid function and var s
var interval            = 50;
var bidClickTimer       = setInterval (function() {BidClick1 (); }, interval);
var numBidClicks        = 0;
var A1reset_go          = false;

function BidClick1 ()

{var bidBtn1=document.getElementById("ctl00_mainContentPlaceholder_AirtimeAuctionItem1_btn_BidButton");


    numBidClicks++;
    if (numBidClicks > 3)
    {   alert("check10");
       clearInterval (bidClickTimer);
        bidClickTimer   = "";
    }
    else
    {   alert( check11 );
        //bidBtn1.click (1);

    }
};



// end bid function

var myJson              =  {"d":[["","","y","ZAR","1","49517","6458, 8270, 8270, 8270, 7635",null,"1.40","6458","0:13:30","","12","","C","30",null],["y","-00:00","y","ZAR","2","49593","6458, 6458, 6458, 6458, 6458",null,"2.92","6458","0:13:37","","12","","L","12","Ve4mYdrvkkQMKxBH1/1VMtDTCDQBRspg5jB8jjY08zg="],["","","y","ZAR","3","49058","7456, 9216, 6458, 5153, 7456",null,"194.40","7456","0:00:31","","1100","","T",null,null],["","","y","ZAR","4","49597","2935, 6554",null,"1.22","2935","0:01:16","","12","","T",null,null],["","","y","ZAR","5","49590","4440, 0518, 5343, 2625, 4848",null,"0.95","4440","0:15:58","","5","","L",null,null],["","","y","ZAR","6","49591","4848, 4440, 4440, 0518, 2625",null,"1.81","4848","0:16:05","","12","","L",null,null],["","","y","ZAR","7","49595","6458",null,"5.55","6458","0:04:13","","55","","T",null,null],["","","y","ZAR","8","49596","",null,"2.90","NONE","0:04:35","","29","","T",null,null],["","","y","ZAR","9","49496","6458, 2427, 2427, 7863, 5845",null,"2.56","6458","0:06:07","","10","","B",null,null],["","","y","ZAR","10","49524","6458, 2427, 7863, 7863, 5845",null,"1.67","6458","0:06:00","","5","","B",null,null],["","","y","ZAR","11","49539","6458, 2427, 7863, 7863, 0764",null,"2.02","6458","0:04:25","","10","","B",null,null]]} 
var jsonObj             = $.parseJSON (myJson);

//--- The JSON should return a 2-D array, named "d".
var arrayOfAuctions     = jsonObj.d;

//--- Loop over each row in the array.
$.each (
    arrayOfAuctions,
    function (rowIndex, singleAuctionData) {

        //--- Print the 7th column.
        console.log ( Row:   + (parseInt (rowIndex) + 1) +   Column: 7  Value:   + singleAuctionData[6]);
alert( test3.41 );
auctiontyp=parseInt (singleAuctionData[4]);
   if (auctiontyp== 1)

     {
   aupto=parseInt (singleAuctionData[15]);alert( check2.6 );
       alert( check3  +(singleAuctionData[8]));
      A1_current=parseFloat (singleAuctionData[8]);
      alert( check4  +(singleAuctionData[16]));
      A1_rest=singleAuctionData[16];
       alert(A1_rest);
       if (A1_rest !=  null )
         {alert( check5 );
          A1reset_go=true;
          };
       alert( check5.1 );
       alert(A1reset_go);
       if (A1_rest ==  null ) and (A1reset_go==true)
         {alert( check6 );
          A1reset_go=false;
          alert( check7 ); 
          A1_start=singleAuctionData[8];
         };
          alert( check7.3 );
         alert((A1_current) );
         alert(( A1_start));
         alert((aupto) );
        if  (((A1_current - A1_start)*100) < (aupto - 10))
          {alert( check8 );
           //BidClick1 ();
           };

     };
    }
);

我当前对此脚本的问题:

1.The "BidClick1" function runs in the beginning of the script without being called, i only call it close to the end, but then it is not running.. 2.This part:

A1_rest=singleAuctionData[16];
           alert(A1_rest);
           if (A1_rest !=  null )
             {alert( check5 );
              A1reset_go=true;
              };
           alert( check5.1 );
           alert(A1reset_go);
           if (A1_rest ==  null ) and (A1reset_go==true)
             {alert( check6 );
              A1reset_go=false;
              alert( check7 ); 
              A1_start=singleAuctionData[8];
             };

没有正确执行。,对于这个数组“arrayOfAuctions”,在我进行所有测试的第一段上,“A1_rest”应该=为“null”,但它不是,因此它执行:“

if (A1_rest !=  null )
                 {alert( check5 );
                  A1reset_go=true;
                  };" 

and also, it doesnt execute this statement : "

 if (A1_rest ==  null ) and (A1reset_go==true)
                 {alert( check6 );
                  A1reset_go=false;

正确地说,它应该只在A1_rest=“null”AND A1_reset_go为true时执行。无论哪一个是true,它都会执行,如果我把它设置为:if((A1_rest==null)和(A1reset_go==true)),它根本不会运行脚本。

If any1 got an complete answer, i will mark it as such. Thanks. alert( check7 ); A1_start=singleAuctionData[8]; };" executes always





相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签