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 страницы, содержащую ссылку, которую пользователь нажал, чтобы перейти на новую страницу -
сценариев методов размещения нет.