Я пишу код JavaScript, который должен запускать событие click для ссылки. В Internet Explorer я могу это сделать
var button = document.getElementById('myButton');
button.click();
Но это не работает в Firefox, как и в любом другом браузере. В Firefox я сделал это
var button = document.getElementById('myButton');
window.location = button.href;
Я чувствую, что это не лучший способ сделать это. Есть ли лучший способ вызвать событие click? Желательно то, что работает независимо от типа элемента или браузера.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как правило, это невозможно, в mozilla есть метод нажмите (), но только для элементов ввода, а не для ссылок.
Почему бы вам просто не создать функцию, которую кнопка будет вызывать в обработчике onClick, и всякий раз, когда вы хотите «щелкнуть» кнопку, вместо этого вызовите функцию?
Mozilla имеет более строгую политику в отношении разрешенных действий / событий JS - у меня тоже были аналогичные проблемы с событием click (). Он отключен для некоторых элементов, чтобы предотвратить XSS.
Что не так с перенаправлением браузера? Это могло сработать везде.
http://jehiah.cz/archive/firing-javascript-events-properly
function fireEvent(element,event) {
if (document.createEvent) {
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true ); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
} else {
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on'+event,evt)
}
}
Я бы не рекомендовал это, но вы можете вызвать атрибут onclick элемента HTML как метод.
<a id = "my-link" href = "#" onclick = "alert('Hello world');">My link</a>
document.getElementById('my-link').onclick();
Эй, я не собираюсь копать старую ветку, но я тоже искал ответ на эту же проблему и нашел функцию, новую для jQuery 1.3x (у меня была проблема с содержимым, загруженным Ajax)
Вот как я это реализовал:
HTML
<a class = "navlink" href = "mypage.html">Online Estimate</a>
ЗАГРУЖЕННЫЙ СКРИПТ
$(".pagelink").click(function(){
$(".navlink[href = "+$(this).attr("href")+"]").trigger('click');
return false;
});
ЗАГРУЖЕН HTML
<a class = "pagelink" href = "mypage.html">Online Estimate</a>
Это функция «Триггерное событие» ...
Подробнее об этом здесь:
http://docs.jquery.com/Events/trigger#eventdata
Это не будет работать идеально для каждого элемента в 100% случаев. Например, он не перейдет к значению в href, даже если у вас там что-то есть. Пример Криса Макдональда воля работает с каждым элементом и запускает действие по умолчанию, такое как переход к href для тега привязки.
Это очень верно. Я использую return false; и обхожу фактическую функциональность элемента ссылки, так как я использую jQuery и Ajax для загрузки контента в DOM. В этом случае это наименьшее количество кода и самое чистое решение, но во многих других случаях, как указал Дэн Герберт, предпочтительным выбором будет Chris MacDonald's.
Ответ jquery не имеет значения, поскольку вопрос - это тег только с javascript. Причина, по которой я отклонил ваш ответ.
Я отчаянно искал этот тихий, и казалось, что самый простой сработал!
document.getElementById('foo').onclick();
он работал в Chrome 7.0.5 и т.е. 8.0.6
Это будет работать только в том случае, если атрибут onclick был определен в элементе dom!
Что ж, вам следует попытаться дать правильный ответ вместо того, чтобы отвечать на исходный вопрос!
Как показывает практика, обычно лучше сначала проверить стандартную функцию (например,
createEvent), а только потом проприетарную (например,createEventObject).