2010-05-23 29 views
7

Bir web sayfasındaki javascript kullanarak, ancak belirli bir unsuru tanımlamadan, sadece belgeyi belirtmeden simüle etmek mümkün mü?Simülasyona tıklayın javascript ile tıklayın

ben böyle bir şey yapmak isterdi ve konumu bir bağlantı olursa, o zaman bu basılı olacaktır:

function simulateClick(x, y) 
{ 
    var evt = window.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 
     x, y, x, y, 1, false, false, false, false, 0, null); 

    window.dispatchEvent(evt); 
} 

cevap

5

window.dispatchEvent hile yapmak gerekir. Ekstra MouseEvents bilgilerle

<script> 
function simulateClick() { 
    var evt = document.createEvent("Events"); 
    evt.initEvent("click", true, true); 
    window.dispatchEvent(evt); 
} 
addEventListener('click',function(){alert('test');},false); 
</script> 
<button onclick="simulateClick();">Go</button> 

Ya da ... : button tıklandığında yukarıdaki örnekler bir tıklama neden olacaktır

<script> 
function simulateClick() { 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null); 
    window.dispatchEvent(evt); 
} 
addEventListener('click',function(){alert('test');},false); 
</script> 
<button onclick="simulateClick();">Go</button> 

window üzerinde simüle edilmesine olanak. Tıklandığında bir olay dinleyicisi window'a alert'a eklenir, bu nedenle button tıklatıldığında dolaylı olarak bir alert tetiklenir.

diğer bilgiler: http://www.howtocreate.co.uk/tutorials/javascript/domevents (gerekirse ve bazı seçenekleri ayarlamak) Herkes bu herhangi bir HTML ve Fare olayı tetiklemek için bir çerçeve agnostik yol arıyoruz çarpar durumda

+0

Etkinliğin koordinatlarını vermek istiyorum, böylece programsal olarak bir dış çerçeve oluşturulabilir. – Charlie

+0

Merhaba, 'MouseEvents' özel verilerine başka bir örnek ekledim. –

+0

Bu daha iyi :-) 'addEventListener' nedir? – Charlie

0
+1

Geçtiğimiz saatte aynı cevabı birkaç soruya göndermiş olduğunuzu fark ettik. Açıkladığınız çözüme varma çabalarınızı takdir ederken, aynı sorulara cevap vermek yerine, OP'nin kendine özgü problemini çözmek için cevaplarınızı söyleyebilmeniz daha yararlı olacaktır. Bunun yapılmaması, diğer kullanıcıların bu istenmeyen cevapları "spam" olarak görebilmeleri nedeniyle indirimleri azaltabilir. – Kev

+1

Ayrıca, http://stackoverflow.com/questions/6157162 adresindeki bu soruya cevap veren aynı soru işareti, OP'nin sorgusuyla ilgilidir; bu, olay işleyicilerini nasıl bağlayacağınız ve bir sayfaya tıklamayı nasıl simüle edeceğiniz hakkında değildir. öğesi. Yine, cevabınızın alakalı olduğundan emin olmak için daha fazla zaman ayırın ve özen gösterin. Teşekkürler. – Kev

+0

Merhaba Kev, sonuncusu yeni sildim. Haklısın, coşkuluyum. Çoğu zaman soru daha spesifik bir çözümdü (bir tıklamayı simüle etmek için soru, anahtar, ...). Bunun iyi olacağını düşündüm, çünkü daha ne istediğini halledebilirdi. Yaptığım şey [javascript] + simulate olayı için bir arama yapmaktı (eğer doğru hatırlamıyorsam, gece geç oldu). Bir keresinde bir bağlantıyı tıklatmayı nasıl simüle edeceğimi sorduğumda, kangax çözümüne çarptım. Şahsen ben daha ihtiyacım var ve nispeten hafif kaldı bir çözüm bulmak için çok mutluydum .. – TweeZz

İlgili konular