JavaScript:; по сравнению с javascript:void (0);

Я хотел бы знать то, что является различием между javascript:; и javascript:void(0); если я использую их в href attribure для a привязка (ссылка)

<a href="javascript:;" onclick="DoSomething();">Link</a>

<a href="javascript:void(0);" onclick="DoSomething();">Link</a>

Я вижу, что они действуют то же на все браузеры, но каково техническое различие?

С уважением, Magdy

21
задан Ahmed Magdy 26 June 2010 в 22:09
поделиться

3 ответа

Один запускает JavaScript без операторов, другой запускает JavaScript, который оценивает оператор 0 , а затем возвращает undefined .

Ни то, ни другое использовать нельзя.

18
ответ дан 29 November 2019 в 21:27
поделиться

Я согласен с Дэвидом, что ни то, ни другое не следует использовать. Псевдопротокол javascript может переводить страницу в состояние ожидания в некоторых браузерах, что может иметь неожиданные последствия. В качестве одного примера, я часами пытался отладить веб-приложение, которое давало сбой IE6 всякий раз, когда кто-то щелкал ссылку javascript: вскоре после загрузки страницы. Оказалось, что страница, переходящая в состояние ожидания, конфликтует с попыткой инициализации Flash-ролика. Я решил проблему, заменив ссылку на ссылку в следующем формате:

<a href="#" onclick="DoSomething(); return false;">Link</a>

«return false» предотвращает переход по ссылке.

6
ответ дан 29 November 2019 в 21:27
поделиться

Только то, что последний javascript: void (0); более читабелен, и принятое соглашение гласит, что этот код ничего не делает .

Стоит отметить, что отраслевые стандарты прошли долгий путь в отношении этого синтаксиса. Вам следует изучить Progressive Enhancement.

5
ответ дан 29 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

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