Я хотел бы знать то, что является различием между javascript:;
и javascript:void(0);
если я использую их в href
attribure для a
привязка (ссылка)
<a href="javascript:;" onclick="DoSomething();">Link</a>
<a href="javascript:void(0);" onclick="DoSomething();">Link</a>
Я вижу, что они действуют то же на все браузеры, но каково техническое различие?
С уважением, Magdy
Один запускает JavaScript без операторов, другой запускает JavaScript, который оценивает оператор 0
, а затем возвращает undefined
.
Я согласен с Дэвидом, что ни то, ни другое не следует использовать. Псевдопротокол javascript может переводить страницу в состояние ожидания в некоторых браузерах, что может иметь неожиданные последствия. В качестве одного примера, я часами пытался отладить веб-приложение, которое давало сбой IE6 всякий раз, когда кто-то щелкал ссылку javascript: вскоре после загрузки страницы. Оказалось, что страница, переходящая в состояние ожидания, конфликтует с попыткой инициализации Flash-ролика. Я решил проблему, заменив ссылку на ссылку в следующем формате:
<a href="#" onclick="DoSomething(); return false;">Link</a>
«return false» предотвращает переход по ссылке.
Только то, что последний javascript: void (0);
более читабелен, и принятое соглашение гласит, что этот код ничего не делает .
Стоит отметить, что отраслевые стандарты прошли долгий путь в отношении этого синтаксиса. Вам следует изучить Progressive Enhancement.