Javascript OnClick подходит для разных браузеров?

Можно ли использовать следующее во всех браузерах?

<a href="#" onclick="doSomething()">Click here.</a>

Является ли это «плохой практикой» в отношении стандартов?

Будет ли это работать в IE, FF, Safari и Chrome?

6
задан Moshe 19 August 2010 в 21:39
поделиться

6 ответов

Могу ли я использовать следующее во всех браузерах?

Да

Является ли это "плохой практикой" в отношении стандартов?

"Плохая практика" и "соответствие стандартам" - разные вещи. Это соответствует стандартам, но также, по трем причинам, является плохой практикой.

  1. Это не ненавязчиво. Обработчики событий лучше применять с помощью JS.
  2. Он ссылается на верхнюю часть страницы (#) и всегда будет отправлять браузер туда, даже если JS запущен.
  3. Если JS не работает, то ничего полезного не произойдет. Вы должны основываться на том, что работает.

Будет ли это работать в IE, FF, Safari и Chrome?

Да

9
ответ дан 8 December 2019 в 13:43
поделиться

Несмотря на то, что некоторые люди могут сказать, что это неплохая практика (с оговоркой, что это единственный слушатель событий, который вам нужен на этом элементе), и это самый простой (и наиболее распространенный) кроссбраузерный способ добавления слушателя событий, но есть два изменения, которые я бы внес в него.

Во-первых, если Javascript не включен, ссылка будет бесполезна (хотя # href заставит браузер прокрутить страницу до верха, что, вероятно, нежелательно). Аналогично, если включен Javascript, щелчок по ссылке все равно заставит браузер следовать за href и прокручивать страницу вверх.

Вместо этого я бы использовал что-то вроде этого:

<a href="[url to JS-less way of doing the same thing]" onclick="doSomething(); return false">Click here</a>

В качестве альтернативы, если это действительно только для javascript, вы можете сделать ссылку скрытой по умолчанию с помощью CSS и использовать Javascript, чтобы сделать ее видимой (чтобы пользователи с отключенным JS не видели бесполезную ссылку).

6
ответ дан 8 December 2019 в 13:43
поделиться

onclick является кроссбраузерным. Дискуссия о стандартах и лучших практиках, конечно, гораздо шире. Большинство скажет, что "прогрессивное улучшение" предпочтительнее. Простое объяснение этого заключается в том, что ссылка по-прежнему будет делать правильные вещи, а версия javascript только улучшит поведение. Важно ли это для вас или нет, зависит от того, что вы делаете, каков проект и т.д.

2
ответ дан 8 December 2019 в 13:43
поделиться

На этой странице Википедии onClick внесен в список общих событий / событий W3C и поддерживается указанными вами браузерами.

Кстати, если бы это было не так, большинство веб-приложений не работали бы в этих браузерах.

0
ответ дан 8 December 2019 в 13:43
поделиться

Это должно работать в упомянутых вами браузерах.

Попробуйте взять за привычку ставить ; в конце каждой "строки" Javascript:

<a href="#" onclick="doSomething();">Click here.</a>

Хотя все будет работать нормально и без этого, если вы выработаете эту привычку, то сможете избавить себя от проблем позже, когда будете писать большие скрипты.

Если вы не хотите, чтобы # отображался в строке местоположения:

<a href="#" onclick="doSomething(); return false;">Click here.</a>
0
ответ дан 8 December 2019 в 13:43
поделиться

Это будет работать во всех браузерах, но в качестве лучшей практики большинство использует обработчики кликов, такие как jQuery $('a').click(doSomething);, что делает JavaScript более независимым от HTML. Также таким образом можно подключать несколько обработчиков, а с помощью метода jQuery live обработчики можно добавлять к HTML-элементам, которые динамически добавляются на страницу.

0
ответ дан 8 December 2019 в 13:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: