Нужна помощь в отладке скрипта greasemonkey - PullRequest
1 голос
/ 31 мая 2011

Я совсем новичок здесь, и так же, как новичок в сценариях GM.С помощью некоторых из присутствующих здесь участников, Брока и других, я делаю успехи.

В настоящее время у меня есть проблема отладки скриптов Greasemonkey, но по какой-то причине я не понимаю этого.Моя первая проблема, отладка с использованием console.log для firebug.

Иногда я нахожу журналы, в большинстве случаев я ничего не могу найти там, думаю, что я использую это неправильно.Затем пытаюсь использовать оповещение, чтобы увидеть значения переменных ... та же история.

В настоящее время я пытаюсь получить сценарий для обработки некоторых аукционов на сайте Trada.net с помощью Брока Адамса, мы прошли более половины пути, но я 'Я все еще бьюсь над головой при написании сценариев JS ... тихий новый опыт, если принять, я привык к Turbo Pascal 15+ лет назад. :)

Ну, в настоящее время это то, что я собрал в сценарии:

 // ==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. Проверить, какой это аукцион,
  2. Узнать, является ли это первая заявка на аукцион,
  3. Получите ставку до суммы,
  4. Выполните расчеты, чтобы начать кликать последние 10 кликов аукциона.
  5. Сбросить начальную сумму.

Звучит довольно просто, но без отладчика и очень мало знаний о Js и GM, я очень занят.Я пытался поместить свой Var в журнал консоли, но не могу отследить их.возможно, объявил их неправильно или использовал их неправильно ... но я не вижу ошибки, и у меня нет отладчика, чтобы проверить их.

Будет ли работать отладчик Java?но он не связан с сайтом ...

Кроме того, в тот момент, когда я добавил свои части в код Брока, он больше не отображал ячейку с информацией ... так что где-то я сломал его кодЯ не могу найти проблему ... До того, как я что-то добавил в его код, он работал хорошо, затем я добавил свои части, он больше не работал, поэтому я удалил его, используя "//".поэтому скрипт должен его пропустить, но его части больше не работают.Я пытался добавить "оповещения", но не могу найти проблему.все мои части помечены "// **" и должны быть неактивными в данный момент.

Любая помощь будет оценена.Спасибо

1 Ответ

1 голос
/ 04 июня 2011

Ну, я не получил много ответа отсюда, но я пытался ... :( Мне удалось отладить его на 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.Функция "BidClick1" запускается в начале скрипта без вызова, я вызываю его только близко к концу, но тогда он не работает .. 2.Эта часть:

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" должен быть = = "ноль", но это не так, поэтому он выполняет: "

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

а также, он не выполняет этот оператор: «

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

правильно, он должен выполняться, только если A1_rest = "null" И A1_reset_go имеет значение true. Он выполняется независимо от того, какой из них является истинным, и если я поставил его как: if ((A1_rest == 'null') and (A1reset_go==true)), он вообще не запускает сценарий.

Если кто-нибудь получит полный ответ, я отмечу его как таковой. Благодарю. оповещения ( 'check7'); A1_start = singleAuctionData [8]; }; "всегда выполняется

...