Как правильно использовать тег привязки? - PullRequest
1 голос
/ 18 ноября 2010

Я прочитал, как тег привязки является святым, его нельзя использовать с javascript:

<a href="javascript:(alert('no!'))">Popup</a>

что ТОЛЬКО должно использоваться для ссылки на другую страницу:

<a href="/grassIsAlwaysGreener.html">Take me over there</a>

Так, как правильно использовать тег привязки с javascript? Должен ли я использовать:

<a href="#" onclick="someJsFn();">Energize!</a>

или какой-то другой вариант? Меня несколько смущают разные взгляды на эту тему. Также стоит ли беспокоиться только о SEO, если я сделаю href javascript? Или это скорее соглашение о соблюдении веб-стандартов?

Мысли? Надеюсь, я не единственный, кто запутался.

Ответы [ 4 ]

1 голос
/ 18 ноября 2010

Ты не один Якуб; даже самые крупные WWW компании используют разные подходы.

Однако, основываясь на опыте со времен Netscape, я бы не стал использовать:

<a href="javascript:(alert'no!')">Popup</a>

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

Тем не менее,

<a href="#" onclick="someJsFn();">Energize!</a>

или;

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

не доставляет серьезных хлопот и может использоваться. Обратите внимание, что предыдущий может сбросить прокрутку наверх.

Вы должны использовать значимые ссылки и ненавязчивый JavaScript везде, где это возможно, но это не всегда возможно в реальных примерах. Это не определенный стандарт, а метод, полностью согласованный большинством веб-разработчиков.

Когда речь идет о стандартах, есть одна, связанная с этой ситуацией:

Вам следует рассмотреть возможность использования «кнопки» для входных данных, которые на самом деле не отправляют посетителя на страницу, а выполняют операцию. Это также важно для SEO.

1 голос
/ 18 ноября 2010

Как говорит @Sime (и это действительно должен быть ответ), считается "плохой практикой" - прямо ссылаться на javascript в любом HTML-объекте. Таким образом, в этих случаях вы присоединяете событие, используя что-то вроде jQuery, используя концепции, изложенные в «ненавязчивом javascript».

Как вы упомянули, еще одно соображение - это SEO и доступность. Если SEO важен для вашего сайта, убедитесь, что сайт полностью ориентирован, используя только стандартные ссылки. Опять же, вы можете управлять этим с помощью «ненавязчивого JavaScript» и т. Д.

0 голосов
/ 18 ноября 2010

Во всяком случае, вы должны привязать свои якорные ссылки к методам javascript только с использованием ненавязчивого javascript, такого как Paul .

Это означает, что разделение задач и оставить вашу разметку просто такHTML-разметка:

<a id="Jolter">Energize!</a>

и более поздние

<script type="text/javascript">
    $(document).ready(function(){
        $("#Jolter").click(function(){
            // doStuffHere ...
        });
    });
</script>
0 голосов
/ 18 ноября 2010

Я всегда использовал якорь как обычно (т. Е. Указывал либо альтернативный URL, который является другим местом, где пользователь мог бы выполнить то, что делается с помощью javascript, либо использовал javascript:void() / #), затем использовал onclick событие для всего, что вы хотите выполнить.

Вы также можете использовать <span>, если вы беспокоитесь о соответствии, просто нужно, возможно, стилизовать его (изменить курсор, возможно, цвет), чтобы сделать визуально очевидным, что вы делаете это действием.

Я думаю, что Facebook - лучший пример. Почти все их ссылки связаны с javascript, но у них также есть «резервная» страница для тех, кто либо запретил javascript, либо не имеет его (более поздние, в наши дни, гораздо реже). Посмотрите на модуль, который реагирует так, как вы хотели бы, и посмотрите, как они это сделали. Они также вложили много работы в лучшие практики, которыми вы можете воспользоваться.

...