Я вполне наслаждаюсь статья Javascript Best Practices Matt Kruse. В нем он заявляет, что с помощью эти href
раздел для выполнения кода JavaScript является плохой идеей. Даже при том, что Вы заявили, что Вашим пользователям нужно было включить JavaScript, нет никакой причины, у Вас не может быть простой страницы HTML, на которую могут указать все Ваши ссылки JavaScript для их href
раздел, если кто-то, оказывается, выключает JavaScript после входа в систему. Я высоко поощрил бы Вас все еще позволять этот механизм нейтрализации. Что-то вроде этого будет придерживаться "лучших практик" и выполнять Вашу цель:
<a href="javascript_required.html" onclick="doSomething(); return false;">go</a>
Почему Вы сделали бы это, когда можно использовать addEventListener
/ attachEvent
? Если нет никакого href
- эквивалентен, не используйте <a>
, используйте <button>
и разработайте его соответственно.
Вы забыли другой метод:
5: <a href="#" id="myLink">Link</a>
С кодом JavaScript:
document.getElementById('myLink').onclick = function() {
// Do stuff.
};
я не могу прокомментировать, какая из опций имеет лучшую поддержку или который является семантически лучшим, но я просто скажу, что очень предпочитаю этот стиль, потому что это разделяет Ваше содержание от Вашего кода JavaScript. Это держит вместе весь код JavaScript, который намного легче поддержать (особенно, если Вы применяете это ко многим ссылкам), и можно даже поместить его во внешний файл, который может тогда упаковываться для сокращения размера файла и кэшироваться клиентскими браузерами.
<a href="#" onClick="DoSomething(); return false;">link</a>
я сделаю это, или:
<a href="#" id = "Link">link</a>
(document.getElementById("Link")).onclick = function() {
DoSomething();
return false;
};
В зависимости от ситуации. Для объемных приложений второе является лучшим, потому что тогда оно консолидирует Ваш код события.
Метод № 2 имеет синтаксическую ошибку в FF3 и IE7. Я предпочитаю методы № 1 и № 3, потому что № 4, грязный URI с '#' хотя причины меньше ввода... Очевидно, как отмечено другими ответами, лучшим решением является отдельный HTML от обработки событий.