Window.location.href vs нажатие на Якорь

В чем разница между нажатием кнопки:

<a href />

против.

вызов window.location.href = ...

?

Ответы

Ответ 1

По возможности, вы должны использовать <a href="foo.html"> над window.location.href по ряду очень веских причин.

  • Если у вас отключен javascript, ни одна из ссылок не будет работать.
  • Пауки, такие как Google Bot, не интерпретируют javascript, и поэтому они не будут следовать ни одной из ваших ссылок.
  • ЭТО ОТКЛЮЧАЕТ ИНТЕРНЕТ. Нет, действительно, хотя World Wide Web построен на основе обнаруживаемых связей между страницами. Скрытие этих связей с нестандартными.. err, links, идет против этой самой предпосылки.
  • Это приводит к плохому пользовательскому опыту: пользователь ожидает, что, когда они нажмут на ссылку, у них будет доступ к некоторой информации:
    • пункт назначения отображается в строке состояния (очень важно!)
    • щелкните правой кнопкой мыши → скопировать местоположение ссылки
    • средний клик → открыть новую вкладку
    • и т.д.
    • Использование window.location разбивает все эти
  • Это намного проще!

Ответ 2

Настройка window.location.href = 'thepage.html' совпадает с вызовом:

window.open('thepage.html', '_self');

т.е. цель ограничена одним и тем же окном, так как это свойство местоположения. Это имеет тот же эффект, что и щелчок по ссылке без целевого атрибута:

<a href="thepage.html">...</a>

Вместо этого вы можете использовать метод open, чтобы указать другую цель, например новое окно:

window.open('thepage.html', '_blank');

Это имеет тот же эффект, что и щелчок по ссылке с этой целью:

<a href="thepage.html" target="_blank">...</a>

Вы также можете использовать метод open для открытия нового окна. Возвращаемое значение является ссылкой на окно, поэтому вы можете использовать это, чтобы установить расположение этого окна вместо текущего окна:

var w = window.open('about:blank', '_blank');
w.location.href = 'thepage.html';

Ответ 3

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

Можно вручную вызвать обработчик onclick из Javascript, если вы хотите имитировать клик, но вы должны помнить об этом вручную. Отмеченные вами фрагменты будут отличаться в этом отношении, что может быть причиной каких-либо поведенческих различий.

Ответ 4

С помощью привязки вы можете указать целевое свойство, но с помощью window.location.href вы не можете. Обычно якорь используется, когда пользователь хочет перенаправить браузер в другое место, window.location.href используется, когда перенаправление выполняется с помощью javascript.

Ответ 5

В дополнение к другим приведенным ответам, нажатие на элемент <a> с атрибутом href sapecified приведет к тому, что браузер перейдет к URL-адресу в href, независимо от того, включен ли JavaScript или нет.

Ответ 6

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