2011-03-18 19 views
5

Tarayıcıdan öğe koleksiyonu için envanteri güncelleyen bir greasemonkey komut dosyası yazmaya çalışıyorum. Bunu yapmak için birkaç formu otomatik olarak doldurmam ve gönderim düğmesindeki fare bağlantılarını taklit etmem gerekiyor. İyi bir şekilde dolduran formlarım var, ama düğmeye basıyorum. İşte Greasemonkey ile bir düğmeyi tıklatmaya çalışmak

ben böyle bir şey yaptığını çalıştı

<input type="submit" value="Find" style="" name="process-form" onclick="imhocaller.value='find-resources-page.left'; imhoaction.value='process-form';"> 

tıklayarak taklit çalışıyorum düğme için HTML, ancak herhangi bir şans olmadı.

document.getElementsByName('process-form').submit(); 

Gerekirse daha fazla kod gönderebilirim. Teşekkür ederim!

cevap

6

Ayrıca, en son tarayıcılarda özel bir tıklama olayı ve IE'de onclick etkinliğine "yangın" gönderebilirsiniz. Bu olayların kontrolünü sağlayan yeni bir özelliktir.

http://jsfiddle.net/ZWyp7/3/

var button = document.getElementById("test"); 
button.onclick = function() 
{ 
    alert("event was dispatched on me");  
} 
if(document.createEvent) 
{ 
    var click = document.createEvent("MouseEvents"); 
    click.initMouseEvent("click", true, true, window, 
    0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    button = document.getElementById("test"); 
    button.dispatchEvent(click); 
    button.focus(); 
}else if(document.documentElement.fireEvent) 
{ 
    button = document.getElementById("test"); 
    button.fireEvent("onclick"); 
    button.focus(); 
} 

bunu sevk edilmeden önce olayı dinlemek gerektiğini unutmayın etmeyin.

+0

Teşekkür ederiz! Bunun muhtemelen bunun için en iyi yol olduğunu düşünüyorum. –

1

bu belgeyi deneyin.getElementsByName ('process-form') [0] .submit();

YUKARI: Sağ! .click() olmalı ve .submit()

+0

Hayır, bu da işe yaramıyor. Cevabınız için teşekkürler! –

5

Şekilde olmalıdır. .submit() yerine .click() kullanılması gerekiyordu. Ayrıca, Georgy'in önerdiği gibi [0] eklemem gerekiyor.

document.getElementsByName('process-form')[0].click(); 
0

Bir giriş göndermeye çalıştığınızda, formu göndermeniz gerekir. Bu nedenle, #myForm'un bir kimliğini etiketlerseniz, yapmanız gereken:

0

Bunu yapmanın başka bir yolu, JQuery'de .trigger("submit") kullanmaktır.

İlgili konular