2009-11-03 2 views

ответ

34

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

  1. Если у вас отключен Javascript, ни одна из ссылок не будет работать.
  2. Пауки, такие как Google Bot, не интерпретируют javascript, и поэтому они не будут следовать ни одной из ваших ссылок.
  3. IT BREAKS INTERNET. Нет, действительно, хотя во всем мире Веб построен на основе обнаруживаемых связей между страницами. Скрытие этих связей с нестандартными .. err, links, идет против этой самой предпосылки.
  4. Это делает плохой опыт пользователя: пользователь ожидает, что, когда они мыши по ссылке, они будут иметь доступ к некоторой информации: (! Очень важно)
    • назначения отображается в строке состояния
    • щелкните правой кнопкой мыши -> копировать ссылку
    • средней кнопкой мыши -> Открыть новую вкладку
    • и т.д.
    • Использование window.location перерывы все из этих
  5. Это намного проще!
+0

Отличный ответ. Я бы также добавил Shift + Нажмите, чтобы открыть в новом окне, и Ctrl + Click, чтобы открыть на новой вкладке. –

0

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

+3

Ну, это правда, но немного вводит в заблуждение. Вы выбираете цель неявно в версии Javascript объектом, на который вы вызываете метод. ** window **. location.href изменяет текущее окно, но ** mytarget **. location.href изменит другое окно/фрейм (предполагая, что переменная была объявлена ​​соответствующим образом). –

+0

Независимо от того, вы не должны использовать атрибут target в любом случае. –

+1

И кто это сказал? В любом случае он просит разногласий, и это один из них, поэтому голосуйте, но это правильно. @dtsazza: вы правы, но он говорит о window.location не somethingElse.location – mck89

0

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

1

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

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

3

Установка window.location.href = 'thepage.html' такая же, как вызов:

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

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

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

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

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'; 
0

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

Смежные вопросы