ฉันจะคลิกลิงค์ด้วย javascript ได้อย่างไร


173

มีวิธีคลิกที่ลิงค์ในหน้าของฉันโดยใช้ JavaScript หรือไม่


6
คุณสามารถ preform องค์ประกอบ 'คลิก' ในอินพุต type = "button" เท่านั้น
Ballsacian1

@ Ballsacian1 ฉันใช้.click()กับ<a>องค์ประกอบและใช้งานได้
PaulMag

คำตอบ:


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

18
ที่จริงแล้วมันใช้งานได้กับเบราว์เซอร์ทั้งหมดที่ฉันได้ลองซึ่งรวมถึง IE, Safari, Chrome, Firefox และ Opera
arik

5
โปรดทราบว่าหากลิงก์มีtarget="_blank"คุณสมบัติตัวป้องกันป๊อปอัปของเบราว์เซอร์จะเปิดใช้งานสำหรับหน้าต่างใหม่
wonsuc

45

ฟังก์ชั่นนี้ทำงานได้อย่างน้อย Firefox และ Internet Explorer มันรันตัวจัดการเหตุการณ์ใด ๆ ที่แนบมากับลิงค์และโหลดหน้าเชื่อมโยงถ้าตัวจัดการเหตุการณ์ไม่ได้ยกเลิกการกระทำเริ่มต้น

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 ถูกต้องและstackoverflow.com/questions/809057/…มีข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุ เบราว์เซอร์ข้ามคือความสนุก :)
แดน F

4
ไม่เคารพtargetคุณลักษณะหรือ<base target="frame">
Vitim.us

38

หากคุณเพียงต้องการเปลี่ยนที่อยู่หน้าปัจจุบันคุณสามารถทำได้โดยเพียงแค่ทำสิ่งนี้ใน Javascript:

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

53
ลงคะแนนเพราะฉันไม่ชอบคำตอบที่ตอบรอบกรณีการใช้งานมากกว่าที่จะตอบ "ฉันคิดว่านี่เป็นความตั้งใจของคุณและไม่ทราบถึงข้อ จำกัด ของคุณดังนั้นด้วยขอบเขตความคิดในการสร้างแนวคิด: ใช้สิ่งนี้"
cazlab

11
ฉันโหวตเพราะฉันกำลังมองหาทางออกที่ดีของการคลิกmailto:ลิงก์ในสคริปต์ userjs ช่วยฉันประหยัดเวลาอย่างแน่นอน ฉันได้เตรียมที่จะสร้างaองค์ประกอบและสร้าง "คลิกแบบเป็นโปรแกรม" stackoverflow.com/questions/809057/…
โฆษณา

6
ฉันก็ลองclick()วิธีการโทรเสนอที่อื่นและเหนือและมันไม่ทำงานใน IE9 แต่การตั้งค่าlocation.hrefจริงส่งอีเมลจากmailto:ลิงค์ สุดยอดทางออก!
ajeh

วิธีนี้เป็นประโยชน์อย่างมากใน PyQT4 คลิก () การโทรไม่ทำงานสำหรับฉัน ขอบคุณ!
VilleLipponen

ไม่ได้ระบุกรณีการใช้ของฉันที่เป็นปัญหาซึ่งฉันต้องการคลิกลิงก์ ลิงก์นำไปสู่ที่ใดก็ได้ แต่มีสิ่งอื่น ๆ เชื่อมโยงกับเหตุการณ์คลิก ฉันไม่ต้องการเปลี่ยนตำแหน่ง
สุ่มปางช้าง

17

เพียงแค่ว่า

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

หรือที่หน้าโหลด:

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

2
ใช่ แต่จะมีบางคลิกเกิดขึ้น
Ólafur Waage

2
คุณไม่สามารถทำได้ในทุกกิจกรรมเช่นการโหลดหน้าเว็บใช่ไหม
Bill the Lizard

2
ขอบคุณสำหรับความช่วยเหลือ แต่ im ใช้ Firefox 3 และจะไม่ทำงานในคอนโซลข้อผิดพลาดกล่าวว่าข้อผิดพลาด: document.getElementById ( "myLink") คลิกไม่ได้เป็นฟังก์ชั่น.

ดูเหมือนว่า firefox ไม่สนับสนุนวิธีการคลิก และส่วนใหญ่ของคำตอบรวมทั้งเหมืองจะไม่เป็นประโยชน์ :)
มอนสเตอร์

@Canavar: ลองคลิกแทนคลิก
Stefan Steiger

9

วิธีการคลิกลิงก์ jQuery คือ

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

สำหรับการเชื่อมโยง mailTo คุณต้องเขียนรหัสต่อไปนี้

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

2
สิ่งนี้ไม่ได้ผลนี่ไม่ใช่คำตอบสำหรับคำถามที่เขาถามฉันจะให้ค่าลบกับสิ่งนี้ถ้าฉันมีคะแนนมากกว่านี้

2
มันใช้ไม่ได้เหรอ คุณลองแล้วหรือยัง ฉันหวังว่าคุณจะเข้าใจความหมายของ "LinkID" ฉันจะแปลกใจจริง ๆ ถ้าใครบางคนในปัจจุบันเป็นวันย้อนหลังพอที่จะ js โดยไม่ jQuery อย่างไรก็ตามอย่าลังเลที่จะลงคะแนนหลังจากได้รับคะแนน
Muhammad Waqas Iqbal

3
ฉันลองสิ่งนี้และลิงก์ mailTo ไม่ทำงานใน React Native ใช้สิ่งนี้: window.location.href = "mailto: address@gmail.com";
fungusanthrax

4
สิ่งนี้ใช้ไม่ได้สำหรับฉันทั้งการคลิกaลิงก์ การใช้[0].click()งานเวอร์ชั่นซึ่งผมเชื่อว่าเป็นdocument.getElementById('yourLinkID').click();คำตอบเดียวกับ
อืมม

เบราว์เซอร์ Firefox: ใช้งานได้กับ <input> แต่ไม่ใช่สำหรับ <a>
jimver04

2

สำหรับฉันฉันจัดการเพื่อให้มันทำงานอย่างนั้น ฉันปรับใช้การคลิกอัตโนมัติใน 5,000 มิลลิวินาทีแล้วปิดลูปหลังจาก 1,000 มิลลิวินาที จากนั้นมีการคลิกอัตโนมัติเพียง 1 ครั้ง

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

2

วิธีการข้างต้นจำนวนมากได้ถูกปฏิเสธ ตอนนี้ขอแนะนำให้ใช้ตัวสร้างที่นี่

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

สิ่งนี้จะทำให้แท็กสมอถูกคลิก แต่จะไม่แสดงว่าตัวบล็อกป็อปอัพทำงานอยู่หรือไม่ดังนั้นผู้ใช้จะต้องอนุญาตป๊อปอัป


3
ฉันไม่เข้าใจว่าเหตุใดจึงมีการตั้งค่าเหตุการณ์สองครั้ง ฉันไม่เห็นว่า event = new CustomEvent ('คลิก'); คือเหตุการณ์อ้างอิงดังนั้นประเด็นของ var ... คืออะไร
historystamp

ฉันคิดว่าคุณถูกต้อง historystamp เขาสร้างเม้าส์เม้าส์แล้วเขียนทับมันทันทีด้วยเหตุการณ์ใหม่
จอห์นลอร์ด

1

แทนที่จะคลิกคุณสามารถส่งต่อไปยัง URL ที่การคลิกจะไปใช้ Javascript ได้หรือไม่?

บางทีคุณสามารถใส่อะไรลงในร่างกายโหลดเพื่อไปยังที่ที่คุณต้องการ


ฉันโพสต์คำถามทั้งสองเพราะผู้คนจะไม่ค้นหาข้อมูลปุ่มอย่างเป็นธรรมชาติเมื่อพวกเขาจัดการกับลิงก์ "a tag" พวกเขาจะไม่เกี่ยวข้องกับเทคนิค
Scott Tovey

1

คุณสามารถเปลี่ยนเส้นทางไปยังหน้าอื่น ที่จริงแล้วการทำให้มันคลิกลิงก์และเดินทางไปที่มันดูเหมือนจะไม่น่ากลัว แต่ฉันไม่รู้เรื่องราวทั้งหมด


2
ในกรณีของฉันฉันไม่รู้ว่าลิงก์นั้นมีเป้าหมาย "_blank" หรือไม่ดังนั้นฉันไม่รู้ว่าควรใช้ location.href หรือ window.open หรือไม่ มันสั้นกว่าที่จะจัดส่งคลิก มีกรณีการใช้งานเช่นคุณอาจต้องการเริ่มต้นเหตุการณ์เช่นการเปิด modalbox
dxvargas

-2

คุณไม่สามารถทำให้เมาส์ของผู้ใช้ทำอะไรได้ แต่คุณสามารถควบคุมสิ่งที่เกิดขึ้นได้อย่างสมบูรณ์เมื่อมีเหตุการณ์เกิดขึ้น

สิ่งที่คุณสามารถทำได้คือการคลิกที่ร่างกายโหลด W3Schools มีตัวอย่างที่นี่


6
@Nolit มันเป็นลิงค์ที่ไม่ดีก่อนที่มันจะมี 404 ครั้งต่อไป ไม่มีการสูญเสีย
John Dvorak

-2

ฟังก์ชัน JS ฝั่งไคลเอ็นต์เพื่อคลิกลิงก์โดยอัตโนมัติเมื่อ ...

นี่คือตัวอย่างที่คุณตรวจสอบค่าของการป้อนข้อมูลในแบบฟอร์มที่ซ่อนอยู่ซึ่งเก็บข้อผิดพลาดที่ส่งผ่านจากเซิร์ฟเวอร์ .. ฝั่งไคลเอ็นต์ของคุณ JS จากนั้นตรวจสอบค่าของมันและใส่ข้อผิดพลาดในตำแหน่งอื่นที่คุณระบุ .. ตัวพิมพ์ใหญ่เป็นตัวช่วยในการเข้าสู่ระบบ

var signUperror = document.getElementById('handleError')

if (signUperror) {
  if(signUperror.innerHTML != ""){
  var clicker = function(){
    document.getElementById('signup').click()
  }
  clicker()
  }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.