2012-02-11 1 views
0

私は、可能な割引オプションについて1ページをテストするための非常に単純なスクリプトを書いています。 しかし、いったん私が 'button.click();'を実行すると問題に直面しました。私の機能が完了するまでページの読み込みがブロックされるので、button.click();意味をなさない。JavaScriptページbruteforcer

機能の中にページを読み込むことは可能ですか?これは、サファリの開発者ツールバーで実行する必要があります(私は私の側にページのonloadイベントを設定することはできないと思うので、ハンドラを使用しないでそれを行う必要があります)。

var card = document.getElementById('discount_card'); 
    var button = $('.buttonTotal'); 
    var disc_val = document.getElementById('cart_discount').firstChild; 
    for(var i=init;i<=finish;i++){ 
     card.value = i; 
     button.click(); 
     disc = disc_val.data; 
     if(disc > my_discount) console.log(disc + " : " + i); 
    } 
+1

なぜmixin jsとjQueryですか? jQueryを使用しているなら、それを使って要素をつかむことをお勧めします。 – elclanrs

+0

私はこのページがjQueryを使用していることを知っていますが、私はあまりよく分かりません。あなたが私にそのことを教えることができるなら、私はそれを感謝します! –

+0

'$( 'cart_discount')。first()で' document.getElementById( 'discount_card') 'を' $( 'discount_card') 'と' document.getElementById( 'cart_discount' '。それはそれを行う必要があります。 – elclanrs

答えて

1

ボタンの順序は問題ありませんか?そうでない場合は、button.click();(function (button) {setTimeout(function() {button.click();}, 1)})(button);

と置き換えてください。問題がある場合でも、setTimeoutを使用できますが、スクリプトロジックを変更する必要があります(ループを再帰で置き換えてください)。

+0

私はデベロッパーコンソールでこれを試しましたが、動作していないようです。 var discountCheck = function(id){ var card = document.getElementById( 'discount_card'); var button = $( '。buttonTotal'); var disc_val = document.getElementById( 'cart_discount')。firstChild; card.value = id; (function(button){setTimeout(function(){button.click();}、)))(ボタン); return disc_val.data; }; –

+0

私はdiscountCheck(12312)と呼んでいます。短期的にはページの一部が割引価格で更新されているため、7.0(割引率)になると予想されていますが、0になっています。そして、私が2度目の機能を呼び出すと、7%の価値が得られました。それは最初のメッセージで説明した私の問題です。値が更新され、ページのロードがブロックされないようにする関数が必要です。 –

+0

それはまったく可能ですか、JSは常にブロックしていますか? –

関連する問題