Для классических интерактивных элементов, таких как кнопки или ссылки, click()
должно работать во всех браузерах.Однако для других элементов, таких как div, вам нужно onclick()
в некоторых браузерах и click()
в других.
Я бы настоятельно рекомендовал вместо того, чтобы пытаться выяснить это самостоятельно, использовать библиотеку javascript, такую как MooTools , jQuery , Прототип , YUI и многие другие.Причина в том, что для кроссбраузерности это очень сложно - 1014 * трудно .Зачем тратить свое время, когда другие работали и работали, чтобы сделать это правильно и сделать его супер простым в использовании?Я гарантирую, что если вы потратите свое время на изучение использования фреймворка, вы быстрее освоите свой навык разработки javascript.Позже вы можете вернуться и посмотреть, как все это делается в мельчайших подробностях, если хотите.
Тем не менее, вот скрипт, который будет работать в кросс-браузерном режиме и ничего не будет делать, если ни одно из этих свойств не имеет функцииназначено:
el = document.getElementById('id');
if (el.onclick) {
el.onclick();
} else if (el.click) {
el.click();
}
Вы также можете сделать это, но, возможно, это немного менее понятно:
(el.onclick || el.click || function() {})();
Некоторые эмпирические тесты, запускающие событие click для div:
- Firefox 3 и 4 используют
onclick
. - IE7, 8 используют оба.
- Chrome использует
onclick
(как проверено в v. 12.0.742.100). - Safari на iPhone 4 с iOs 4.2.1 использует
onclick
.
Тестовый скрипт:
var d = document.createElement('div'); d.style.position = 'absolute'; d.style.top = '0'; d.style.left = '0'; d.style.width = '200px'; d.style.height = '200px'; d.style.backgroundColor = '#fff'; d.style.border = '1px solid black'; d.onclick = function() {alert('hello');}; document.body.appendChild(d);
Запустите его в инструментах разработчика в своем браузере или javascript:
впереди и void(0);
в конце, затем вставьте в адресную строку и нажмите Enter.Затем попробуйте d.click()
и d.onclick()
.Вы можете щелкнуть сам div, чтобы доказать, что он работает и с реальными щелчками.