Javascript ile bir bağlantıyı programlı olarak nasıl tıklarım?


173

JavaScript kullanarak sayfamdaki bir bağlantıyı tıklamanın bir yolu var mı?


6
Giriş türü = "düğme" öğelerinde yalnızca "tıklama" oluşturabilirsiniz.
Ballsacian1

@ Ballsacian1 .click()Bir <a>element üzerinde kullandım ve işe yaradı.
PaulMag

Yanıtlar:


237
document.getElementById('yourLinkID').click();

18
Aslında, şimdiye kadar IE, Safari, Chrome, Firefox ve Opera dahil olmak üzere denediğim tüm tarayıcılarda çalıştı.
arik

5
Bağlantının target="_blank"özelliği varsa, tarayıcının açılır pencere engelleyicisinin yeni pencere için etkinleştirileceğini unutmayın.
wonsuc

45

Bu işlev en azından Firefox ve Internet Explorer'da çalışır. Bağlantıya eklenmiş olay işleyicilerini çalıştırır ve olay işleyicileri varsayılan eylemi iptal etmezse bağlantılı sayfayı yükler.

function clickLink(link) {
    var cancelled = false;

    if (document.createEvent) {
        var event = document.createEvent("MouseEvents");
        event.initMouseEvent("click", true, true, window,
            0, 0, 0, 0, 0,
            false, false, false, false,
            0, null);
        cancelled = !link.dispatchEvent(event);
    }
    else if (link.fireEvent) {
        cancelled = !link.fireEvent("onclick");
    }

    if (!cancelled) {
        window.location = link.href;
    }
}

5
Matthew doğru ve stackoverflow.com/questions/809057/… neden hakkında biraz daha bilgi var. Çapraz tarayıcı eğlenceli :)
Dan F

4
bu targetözelliğe <base target="frame">
uymaz

38

Yalnızca geçerli sayfa adresini değiştirmek istiyorsanız, bunu yalnızca Javascript'te yaparak yapabilirsiniz:

location.href = "http://www.example.com/test";

53
Kullanım durumu etrafında cevap vermek yerine cevapları beğenmediğim için oy verdim. "Bunun niyetiniz olduğunu düşünüyorum ve kısıtlamalarınızdan habersizim, bu yüzden kavramsal bir vakumda kavramsal bir küreyle: bunu kullanın."
cazlab

11
mailto:Oy verdim, çünkü userjs betiğindeki bağlantıyı tıklamanın hoş bir çözümünü arıyordum . Kesinlikle bana zaman kazandırdı. aÖğe oluşturmaya ve bazı "programlı tıklama" yapmaya hazırlandım stackoverflow.com/questions/809057/…
AD

6
Ben de click()başka bir yerde ve yukarıda önerilen yöntem çağırma denedim ve IE9 işe yaramadı, ama ayar location.hrefaslında mailto:bağlantıdan e-posta gönderdi . Harika bir çözüm!
ajeh

Bu yöntem PyQT4'te yardımcı olmuştur. click () çağrısı benim için çalışmıyor. Teşekkürler!
VilleLipponen

Bir bağlantıyı tıklamak istediğim soruda yer alan kullanım durumumu ele almıyor. Bağlantı hiçbir yere yönlendirmiyor, ancak tıklama etkinliğine bağlı başka şeyler var. Konum değiştirmek istemiyorum.
Rastgele Fil

17

Sadece şöyle:

<a id="myLink" onclick="alert('link click');">LINK 1</a>
<a id="myLink2" onclick="document.getElementById('myLink').click()">Click link 1</a>

veya sayfa yüklendiğinde:

<body onload="document.getElementById('myLink').click()">
...
<a id="myLink" onclick="alert('link click');">LINK 1</a>
...
</body>

2
Evet, ancak başka bir tıklamanın gerçekleşmesi gerekiyor.
furlafur Ücreti

2
Sayfa yükleme gibi herhangi bir etkinlikte yapamaz mısınız?
Kertenkele Bill

2
yardım için teşekkürler, ama im firefox 3 kullanarak ve çalışmıyor, hata konsolunda Hata diyor: Belge.getElementById ("myLink"). tıklama bir işlev değildir

Firefox tıklama yöntemini desteklemiyor gibi görünüyor. ve benimki de dahil olmak üzere cevapların çoğu yardımcı olmuyor :)
Canavar

@Canavar: Tıklama yerine Tıkla'yı deneyin
Stefan Steiger

9

Bir bağlantıyı tıklamanın jQuery yolu

$('#LinkID').click();

MailTo bağlantısı için aşağıdaki kodu yazmanız gerekir

$('#LinkID')[0].click();

2
Bu işe yaramıyor. Sorduğu sorunun cevabı bu değil. Daha fazla puanım olsaydı bunun için olumsuz olurdu.

2
Bu işe yaramıyor mu? Denedin mi? Umarım "LinkID" nin ne anlama geldiğini anlarsınız. Şimdi bir gün biri jQuery olmadan js için yeterince geri eğer gerçekten şaşırırdım. Her neyse, bazı puanlar kazandıktan sonra oy vermekten çekinmeyin
Muhammad Waqas Iqbal

3
Bunu denedim ve mailTo bağlantısı React Native'de çalışmıyor. Şunu kullanın: window.location.href = "mailto: address@gmail.com";
fungusanthrax

4
Bu benim için de bir abağlantıyı tıklamak için işe yaramadı . [0].click()Ben document.getElementById('yourLinkID').click();cevap ile aynı olduğuna inanıyorum sürümünü kullanarak çalışır .
Mmm

Firefox tarayıcı: Bu <input> için çalışıyor ancak bir <a>
jimver04

2

Benim için bu şekilde çalışmayı başardım. Otomatik tıklamayı 5000 milisaniyede konuşlandırdım ve sonra 1000 milisaniyeden sonra döngüyü kapattım. Sonra sadece 1 otomatik tıklama oldu.

<script> var myVar = setInterval(function ({document.getElementById("test").click();}, 500); setInterval(function () {clearInterval(myVar)}, 1000); </script>

2

Yukarıdaki yöntemlerin birçoğu kullanımdan kaldırılmıştır. Şimdi burada bulunan yapıcıyı kullanmanız tavsiye edilir

function clickAnchorTag() {
    var event = document.createEvent('MouseEvent');
    event = new CustomEvent('click');
    var a = document.getElementById('nameOfID');
    a.dispatchEvent(event);
}

Bu, bağlantı etiketinin tıklanmasına neden olur, ancak pop-up engelleyicilerin etkin olup olmadığını göstermez, böylece kullanıcının pop-up'lara izin vermesi gerekir.


3
Etkinliğin neden iki kez ayarlandığını anlamıyorum. Ben nasıl event = new CustomEvent ('click') görmüyorum; referans olay, yani var noktası nedir ...
historyystamp

bence doğru tarih damgası. Bir fare olayı yaratıyor ve hemen yeni bir olayla üzerine yazıyor.
John Lord

1

Tıklamak yerine, tıklamanın Javascript kullanarak gideceği URL'ye yönlendirebilir misiniz?

Belki vücuda bir şey koyabilirsin, istediğin yere gitmek için.


Her iki soruya da gönderdim çünkü insanlar bir "etiket" bağlantısıyla uğraşırken düğme bilgilerine doğal olarak bakmayacaklar. Teknik olarak ilgisizdirler.
Scott Tovey

1

Bunları başka bir sayfaya yönlendirebilirsiniz. Aslında kelimenin tam anlamıyla bir bağlantıyı tıklayıp seyahat etmek gereksiz görünüyor, ama tüm hikayeyi bilmiyorum.


2
Benim durumumda, bağlantı "_blank" hedef olup olmadığını bilmiyorum, bu yüzden location.href veya window.open kullanmam gerektiğini bilmiyorum. Bir tıklama göndermek daha kısadır. Kullanım durumları vardır, örneğin bir modalbox açmak gibi bir olayı başlatmak isteyebilirsiniz.
dxvargas

-2

Kullanıcının faresini hiçbir şey yapamazsınız. Ancak bir olay tetiklendiğinde ne olacağı üzerinde tam kontrole sahipsiniz.

Yapabileceğiniz şey vücut yüküne bir tıklama yapmaktır. W3Schools'un bir örneği var.


6
@Neolit ​​zaten 404'ünü almadan önce kötü bir linkti. Kayıpsız.
John Dvorak

-2

İstemci Tarafı JS işlevi bir bağlantıyı otomatik olarak tıklattığında ...

Burada sunucudan iletilen bir hatayı tutan gizli bir form girişinin değerini kontrol ettiğiniz bir örnek var .. istemci tarafınız JS daha sonra değerini kontrol eder ve belirttiğiniz başka bir konumda bir hatayı doldurur .. bu bir pop-up giriş yöntemi kullanın.

var signUperror = document.getElementById('handleError')

if (signUperror) {
  if(signUperror.innerHTML != ""){
  var clicker = function(){
    document.getElementById('signup').click()
  }
  clicker()
  }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.