Як я програматично натискаю посилання на javascript?


173

Чи є спосіб натиснути на посилання на моїй сторінці за допомогою JavaScript?


6
Ви можете лише заздалегідь заздалегідь виконати елементи "натискання" на елементи введення = "кнопка".
Ballsacian1

@ Ballsacian1 я використовував .click()на <a>елемент і він працював.
PaulMag

Відповіді:


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

18
Насправді до цього часу він працював у всіх браузерах, які я пробував, включаючи IE, Safari, Chrome, Firefox та Opera.
арік

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
Метью правильний, а stackoverflow.com/questions/809057/… має додаткову інформацію про те, чому. Крос-браузер - це весело :)
Dan 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 / ...
AD

6
Я теж спробував click()метод виклику, запропонований в іншому місці і вище, і він не працював в IE9, але налаштування location.hrefфактично надіслало електронний лист за mailto:посиланням. Чудове рішення!
ajeh

Цей метод був корисним у PyQT4. Виклик click () не працював для мене. Дякую!
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
Так, але тоді має відбутися інший клік.
flafur Waage

2
Ви не можете це зробити на будь-якій події, як-от завантаження сторінки?
Білл Ящірка

2
дякую за допомогу, але я використовую firefox 3, і він не працює, в консолі помилок йдеться про помилку: document.getElementById ("myLink"). Клацання не є функцією

Схоже, що firefox не підтримує метод кліку. і більшість відповідей, включаючи мою, не корисні :)
Канавар

@Canavar: Спробуйте клацніть замість клацання
Стефан Штайгер,

9

Спосіб jQuery натиснути на посилання

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

Для посилання mailTo потрібно написати наступний код

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

2
Це не працює. Це не є відповіддю на запитання, яке він задав. Я дав би негатив на це, якби у мене було ще кілька балів.

2
Це не працює? Ви спробували це? Сподіваюся, ви зрозуміли, що означає "LinkID". Я був би дуже здивований, якщо хтось зараз на дні досить відсталий до js без jQuery. У будь-якому разі, не соромтесь брати участь у виборах, набравши кілька очок
Мухаммад Вакас Ікбал

3
Я спробував це, і посилання mailTo не працює в React Native. Використовуйте це: window.location.href = "mailto: address@gmail.com";
грибоксантракс

4
Це не спрацювало для мене ні за натискання на aпосилання. Використання [0].click()версії працює, і я вважаю, що це document.getElementById('yourLinkID').click();відповідь.
Ммм

Браузер Firefox: Це працює для <input>, але не для <a>
jimver04

2

Для мене мені вдалося змусити це працювати так. Я розгорнув автоматичне клацання за 5000 мілісекунд, а потім закрив цикл через 1000 мілісекунд. Тоді було лише 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 ('клік'); це референс подія, так що точка вар ...
historystamp

я думаю, ви правильні. Він створює мишачий подію, а потім негайно замінює його новою подією.
Джон Лорд

1

Замість того, щоб клацнути, чи можете ви переслати URL, до якого натискав би натискання, використовуючи Javascript?

Можливо, ти міг би щось покласти в тіло на Завантажити, щоб їхати куди хочеш.


Я розмістив обидва запитання, оскільки люди не збираються, звичайно, шукати інформацію про кнопки, коли вони мають справу зі посиланням "тег". Вони технічно не пов'язані між собою.
Скотт Тові

1

Ви можете просто перенаправити їх на іншу сторінку. Насправді змушуючи його буквально натиснути на посилання та подорожувати до нього здається непотрібним, але я не знаю всієї історії.


2
У моєму випадку я не знаю, чи посилання має ціль "_blank", тому я не знаю, чи слід використовувати location.href чи window.open. Це коротше, щоб відправити клік. Існують випадки використання, наприклад, ви можете запустити подію на зразок відкриття модальної скриньки.
dxvargas

-2

Ви не можете змусити мишу користувача нічого робити. Але ви маєте повний контроль над тим, що відбувається, коли подія запускається.

Що ви можете зробити - це натиснути на навантаження на тіло. Тут є приклад W3Schools .


6
@Neolit ​​це було поганим посиланням, перш ніж він отримав 404'd все одно. Без втрат.
Джон Дворак

-2

Функція JS Side Client автоматично натискає на посилання, коли ...

Ось приклад, коли ви перевіряєте значення прихованої форми вводу, яка містить помилку, передану з сервера. Ваш клієнт JS потім перевіряє його значення та заповнює помилку в іншому місці, яке ви вказали. випадок вхідного режиму входу.

var signUperror = document.getElementById('handleError')

if (signUperror) {
  if(signUperror.innerHTML != ""){
  var clicker = function(){
    document.getElementById('signup').click()
  }
  clicker()
  }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.