Làm cách nào để tôi lập trình nhấp vào một liên kết với javascript?


173

Có cách nào để nhấp vào liên kết trên trang của tôi bằng JavaScript không?


6
Bạn chỉ có thể tạo thành một phần tử 'nhấp chuột' vào kiểu nhập = "nút".
Ballsacian1

@ Ballsacian1 Tôi đã sử dụng .click()trên một <a>phần tử và nó đã hoạt động.
PaulMag

Câu trả lời:


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

18
Trên thực tế, cho đến nay nó đã hoạt động trong tất cả các trình duyệt mà tôi đã thử, bao gồm IE, Safari, Chrome, Firefox và Opera.
arik

5
Lưu ý rằng nếu liên kết có thuộc target="_blank"tính, trình chặn cửa sổ bật lên của trình duyệt sẽ được kích hoạt cho cửa sổ mới.
wonsuc

45

Chức năng này hoạt động trong ít nhất Firefox và Internet Explorer. Nó chạy bất kỳ trình xử lý sự kiện nào được gắn vào liên kết và tải trang được liên kết nếu trình xử lý sự kiện không hủy hành động mặc định.

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 là chính xác và stackoverflow.com/questions/809057/ vì có một số thông tin thêm về lý do tại sao. Trình duyệt chéo rất thú vị :)
Dan F

4
nó không tôn trọng targetthuộc tính hoặc<base target="frame">
Vitim.us

38

Nếu bạn chỉ muốn thay đổi địa chỉ trang hiện tại, bạn có thể làm điều đó bằng cách thực hiện điều này trong Javascript:

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

53
Bỏ phiếu xuống vì tôi không thích câu trả lời xung quanh trường hợp sử dụng hơn là giải quyết nó. "Tôi cho rằng đây là ý định của bạn và không biết về những hạn chế của bạn, vì vậy với một phạm vi khái niệm trong một vắc-xin khái niệm: sử dụng điều này."
cazlab

11
Tôi đã bỏ phiếu, bởi vì tôi đang tìm kiếm một giải pháp tốt đẹp nào đó để nhấp vào mailto:liên kết trong tập lệnh userjs. Chắc chắn tiết kiệm thời gian cho tôi. Tôi đã chuẩn bị để tạo aphần tử và tạo một số stackoverflow
AD

6
Tôi cũng đã thử click()phương thức gọi được đề xuất ở nơi khác và ở trên và nó không hoạt động trong IE9, nhưng cài đặt location.hrefthực sự đã gửi email từ mailto:liên kết. Giải pháp tuyệt vời!
ngày

Phương pháp này rất hữu ích trong PyQT4. cuộc gọi click () không hoạt động với tôi. Cảm ơn!
VilleLipponen

Không giải quyết trường hợp sử dụng của tôi trong câu hỏi, nơi tôi muốn nhấp vào một liên kết. Liên kết không dẫn đến đâu, nhưng có những thứ khác gắn liền với sự kiện nhấp chuột. Tôi không muốn thay đổi địa điểm.
Voi ngẫu nhiên

17

Đơn giản như thế:

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

hoặc khi tải trang:

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

2
Có nhưng sau đó một số nhấp chuột khác phải xảy ra.
Chờ đợi Ólafur

2
Bạn không thể làm điều đó trong bất kỳ sự kiện nào, như tải trang?
Lập hóa đơn cho thằn lằn

2
cảm ơn vì đã giúp đỡ, nhưng tôi đang sử dụng firefox 3 và nó không hoạt động, trong bảng điều khiển lỗi cho biết Lỗi: document.getEuityById ("myLink"). nhấp vào không phải là một chức năng

Có vẻ như firefox không hỗ trợ phương pháp nhấp. và hầu hết các câu trả lời, bao gồm cả câu trả lời của tôi, đều không hữu ích :)
Canavar

@Canavar: Hãy thử Nhấp thay vì nhấp
Stefan Steiger

9

Cách jQuery để nhấp vào một liên kết là

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

Đối với liên kết mailTo, bạn phải viết mã sau đây

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

2
Điều này không hiệu quả. Đây không phải là câu trả lời cho câu hỏi mà anh ấy đã hỏi. Tôi sẽ đưa ra tiêu cực cho điều này nếu tôi có thêm một số điểm.

2
Điều này không hiệu quả? Bạn đã thử chưa? Tôi hy vọng bạn hiểu "LinkID" nghĩa là gì. Tôi sẽ thực sự ngạc nhiên nếu ai đó bây giờ đủ lạc hậu để js mà không có jQuery. Dù sao, hãy thoải mái downvote sau khi đạt được một số điểm
Muhammad Waqas Iqbal

3
Tôi đã thử điều này và liên kết mailTo không hoạt động trong React Native. Sử dụng cái này: window.location.href = "mailto: address@gmail.com";
nấm từ

4
Điều này không làm việc cho tôi hoặc là nhấp vào một aliên kết. Sử dụng [0].click()phiên bản hoạt động, mà tôi tin là giống như document.getElementById('yourLinkID').click();câu trả lời.
Mmm

Trình duyệt Firefox: Điều này hoạt động cho <input> nhưng không phải cho <a>
jimver04

2

Đối với tôi, tôi quản lý để làm cho nó hoạt động theo cách đó. Tôi đã triển khai nhấp tự động trong 5000 mili giây và sau đó đóng vòng lặp sau 1000 mili giây. Sau đó chỉ có 1 lần nhấp tự động.

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

2

Nhiều phương pháp trên đã bị phản đối. Bây giờ nên sử dụng hàm tạo được tìm thấy ở đây

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

Điều này sẽ khiến thẻ neo được nhấp, nhưng nó sẽ không hiển thị nếu trình chặn cửa sổ bật lên đang hoạt động nên người dùng sẽ cần phải cho phép cửa sổ bật lên.


3
Tôi không hiểu tại sao sự kiện được đặt hai lần. Tôi không thấy cách event = new CustomEvent ('click'); là sự kiện tham khảo, vậy điểm của var là gì ...
historystamp

Tôi nghĩ bạn đúng lịch sử. Anh ta đang tạo ra một con chuột và sau đó ngay lập tức ghi đè lên nó bằng một sự kiện mới.
John Lord

1

Thay vì nhấp vào, bạn có thể chuyển tiếp tới URL mà nhấp chuột sẽ sử dụng Javascript không?

Có lẽ bạn có thể đặt một cái gì đó vào cơ thể trên Tải để đi đến nơi bạn muốn.


Tôi đã đăng lên cả hai câu hỏi bởi vì mọi người sẽ không tự nhiên tìm kiếm thông tin nút khi họ đang xử lý một liên kết "thẻ". Họ không liên quan đến kỹ thuật.
Scott Tovey

1

Bạn chỉ có thể chuyển hướng chúng đến một trang khác. Trên thực tế, làm cho nó thực sự nhấp vào một liên kết và đi đến nó có vẻ không hợp lý, nhưng tôi không biết toàn bộ câu chuyện.


2
Trong trường hợp của tôi, tôi không biết liệu liên kết có nhắm mục tiêu "_blank" hay không, vì vậy tôi không biết mình nên sử dụng location.href hay window.open. Nó ngắn hơn để gửi một nhấp chuột. Có những trường hợp sử dụng, ví dụ bạn có thể muốn kích hoạt một sự kiện như mở một modalbox.
dxvargas

-2

Bạn không thể làm cho chuột của người dùng làm bất cứ điều gì. Nhưng bạn có toàn quyền kiểm soát những gì xảy ra khi một sự kiện kích hoạt.

Những gì bạn có thể làm là nhấp chuột vào tải trọng cơ thể. W3Schools có một ví dụ ở đây.


6
@Neolit ​​đó là một liên kết xấu trước khi nó có 404 dù sao đi nữa. Không mất mát.
John Dvorak

-2

Chức năng JS phía máy khách để tự động nhấp vào liên kết khi ...

Dưới đây là một ví dụ trong đó bạn kiểm tra giá trị của đầu vào dạng ẩn, có lỗi được truyền từ máy chủ .. phía máy khách của bạn sau đó kiểm tra giá trị của nó và đưa ra lỗi ở một vị trí khác mà bạn chỉ định..trong đây trường hợp một phương thức đăng nhập bật lên.

var signUperror = document.getElementById('handleError')

if (signUperror) {
  if(signUperror.innerHTML != ""){
  var clicker = function(){
    document.getElementById('signup').click()
  }
  clicker()
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.