Bagaimana cara saya mengklik tautan dengan javascript?

173

Apakah ada cara untuk mengklik tautan di halaman saya menggunakan JavaScript?

Mahdi Alkhatib
sumber
6
Anda hanya dapat membentuk sebelumnya 'klik' pada elemen tipe input = "tombol".
Ballsacian1
@ Ballsacian1 Aku digunakan .click()pada <a>elemen dan bekerja.
PaulMag

Jawaban:

237
document.getElementById('yourLinkID').click();
arik
sumber
18
Sebenarnya, sejauh ini berfungsi di semua browser yang saya coba, termasuk IE, Safari, Chrome, Firefox dan Opera.
arik
5
Perhatikan bahwa jika tautan memiliki target="_blank"properti, pemblokir munculan peramban akan diaktifkan untuk jendela baru.
wonsuc
45

Fungsi ini berfungsi setidaknya di Firefox, dan Internet Explorer. Ini menjalankan penangan peristiwa apa pun yang terlampir pada tautan dan memuat halaman yang ditautkan jika penangan peristiwa tidak membatalkan tindakan default.

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;
    }
}
Matthew Crumley
sumber
5
Matthew benar, dan stackoverflow.com/questions/809057/… memiliki beberapa info lebih lanjut tentang alasannya. Cross browser itu menyenangkan :)
Dan F
4
itu tidak menghormati targetatribut atau<base target="frame">
Vitim.us
38

Jika Anda hanya ingin mengubah alamat halaman saat ini, Anda dapat melakukannya dengan hanya melakukan ini dalam Javascript:

location.href = "http://www.example.com/test";
Fabien Ménager
sumber
53
Dipilih karena saya tidak suka jawaban yang menjawab sekitar kasus penggunaan daripada mengatasinya. "Saya kira ini adalah niat Anda, dan tidak menyadari kendala Anda, jadi dengan lingkup konseptual dalam vaccum konseptual: gunakan ini."
cazlab
11
Saya memilih, karena saya sedang mencari solusi bagus untuk mengklik mailto:tautan dalam skrip userjs. Pasti menghemat waktu saya. Saya siap untuk membuat aelemen dan membuat "klik program" stackoverflow.com/questions/809057/…
AD
6
Saya juga mencoba click()metode panggilan yang diusulkan di tempat lain dan di atas dan tidak berhasil di IE9, tetapi pengaturan location.hrefsebenarnya mengirim email dari mailto:tautan. Solusi bagus!
ajeh
Metode ini sangat membantu dalam PyQT4. klik () panggilan tidak berfungsi untuk saya. Terima kasih!
VilleLipponen
Tidak membahas kasus penggunaan saya yang ada di pertanyaan, di mana saya ingin mengklik tautan. Tautan mengarah ke mana-mana, tetapi memiliki hal-hal lain yang terkait dengan acara klik. Saya tidak ingin mengubah lokasi.
Acak Gajah
17

Cukup seperti itu:

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

atau saat memuat halaman:

<body onload="document.getElementById('myLink').click()">
...
<a id="myLink" onclick="alert('link click');">LINK 1</a>
...
</body>
Canavar
sumber
2
Ya tetapi kemudian beberapa klik lainnya harus terjadi.
Ólafur Waage
2
Tidak bisakah Anda melakukannya di acara apa pun, seperti pemuatan halaman?
Bill the Lizard
2
terima kasih atas bantuan, tetapi saya menggunakan firefox 3 dan tidak berfungsi, di konsol kesalahan mengatakan Kesalahan: document.getElementById ("myLink"). klik bukan fungsi
Sepertinya firefox tidak mendukung metode klik. dan sebagian besar jawaban, termasuk saya, tidak membantu :)
Canavar
@Canavar: Coba Klik dan bukan klik
Stefan Steiger
9

Cara jQuery untuk mengklik tautan adalah

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

Untuk tautan mailTo, Anda harus menulis kode berikut

$('#LinkID')[0].click();
Muhammad Waqas Iqbal
sumber
2
Ini tidak berhasil. Ini bukan jawaban untuk pertanyaan yang dia tanyakan. Saya akan memberikan negatif untuk ini jika saya memiliki beberapa poin lagi.
2
Ini tidak bekerja? Sudahkah Anda mencobanya? Saya harap Anda mengerti apa artinya "LinkID". Saya akan sangat terkejut jika seseorang sekarang-a-hari cukup mundur untuk js tanpa jQuery. Bagaimanapun, jangan ragu untuk mundur setelah mendapatkan beberapa poin
Muhammad Waqas Iqbal
3
Saya mencoba ini dan tautan mailTo tidak berfungsi di React Native. Gunakan ini: window.location.href = "mailto: [email protected]";
fungusanthrax
4
Ini juga tidak berhasil bagi saya untuk mengklik atautan. Menggunakan [0].click()versi berfungsi, yang saya percaya sama dengan document.getElementById('yourLinkID').click();jawabannya.
Mmm
Browser Firefox: Ini berfungsi untuk <input> tetapi tidak untuk <a>
jimver04
2

Bagi saya, saya berhasil membuatnya bekerja seperti itu. Saya menggunakan klik otomatis dalam 5000 milidetik dan kemudian menutup loop setelah 1000 milidetik. Kemudian hanya ada 1 klik otomatis.

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

Banyak metode di atas telah usang. Sekarang disarankan untuk menggunakan konstruktor yang ditemukan di sini

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

Ini akan menyebabkan tag anchor diklik, tetapi itu tidak akan ditampilkan jika pop-up blocker aktif sehingga pengguna perlu memperbolehkan pop-up.

maus
sumber
3
Saya tidak mengerti mengapa acara diatur dua kali. Saya tidak melihat bagaimana event = new CustomEvent ('klik'); adalah acara referensi, jadi apa gunanya var ...
historystamp
saya pikir kamu benar historystamp. Dia membuat mouseevent dan kemudian segera menimpanya dengan acara baru.
John Lord
1

Alih-alih mengklik, dapatkah Anda meneruskan ke URL yang akan diklik menggunakan Javascript?

Mungkin Anda bisa meletakkan sesuatu di tubuh onLoad untuk pergi ke tempat yang Anda inginkan.

Jas Panesar
sumber
Saya memposting ke kedua pertanyaan karena orang tidak akan secara alami mencari informasi tombol ketika mereka berurusan dengan tautan "a tag". Secara teknis mereka tidak terkait.
Scott Tovey
1

Anda bisa mengarahkan mereka ke halaman lain. Sebenarnya membuatnya benar-benar mengklik tautan dan melakukan perjalanan ke sana tampaknya tidak sehat, tapi saya tidak tahu keseluruhan cerita.

akway
sumber
2
Dalam kasus saya, saya tidak tahu apakah tautannya memiliki target "_blank", jadi saya tidak tahu apakah saya harus menggunakan location.href atau window.open. Lebih pendek untuk mengirim klik. Ada kasus-kasus penggunaan, misalnya Anda mungkin ingin menjalankan acara seperti membuka modalbox.
dxvargas
-2

Anda tidak dapat membuat mouse pengguna melakukan apa pun. Tetapi Anda memiliki kendali penuh atas apa yang terjadi ketika suatu peristiwa muncul.

Yang bisa Anda lakukan adalah melakukan klik pada beban tubuh. W3Schools memiliki contoh di sini.

Ólafur Waage
sumber
6
@Neolit ​​itu adalah tautan yang buruk sebelum sampai di 404. Tidak ada kerugian.
John Dvorak
-2

Fungsi JS Sisi Klien untuk secara otomatis mengklik tautan ketika ...

Berikut adalah contoh di mana Anda memeriksa nilai input formulir tersembunyi, yang menyimpan kesalahan yang diturunkan dari server .. JS sisi klien Anda lalu memeriksa nilainya dan mengisi kesalahan di lokasi lain yang Anda tentukan..dalam hal ini huruf kapital login pop-up.

var signUperror = document.getElementById('handleError')

if (signUperror) {
  if(signUperror.innerHTML != ""){
  var clicker = function(){
    document.getElementById('signup').click()
  }
  clicker()
  }
}
Vontei
sumber