2011-01-27 4 views
43

Мне нужно перенаправить пользователя с помощью JavaScript. Какой предпочтительный метод?window.open target _self v window.location.href?

window.open("webpage.htm", "_self"); 

или

window.location.href = "webpage.htm"; 
+0

- не первый - открыть новое окно? На самом деле я не уверен. –

+0

@Gunner, Nope, он откроет его в том же окне, следовательно, '' _self'' там ... –

+0

, если вы замените _self на _blank, он откроется в новом окне – DOK

ответ

53

Определенно второй способ является предпочтительным, потому что вы не имеете накладные расходы на другой вызов функции:

window.location.href = "webpage.htm"; 
+1

Якоб предоставил лучшее объяснение, чем Or W Фредерик Хамиди также добавил к ответу, и я хотел бы дать вам ответ, но, похоже, я должен выбрать его. Поскольку Иаков ответил первым, ответ идет вам. – Junto

+0

Следует отметить, что при использовании этого метода использование ссылки типа '../../ folder/page.aspx? Source = abcd' не работает. Мне нужно было использовать другой метод, чтобы моя ссылка работала, и даже тогда не могла использовать «_self» с ней. – Christine268

+1

Накладные расходы на вызов функции? Функциональные вызовы имеют определенную стоимость, но я не уверен, имеет ли это какое-либо значение, я на этот раз ожидаю, что вызовы функций в настоящее время так же эффективны, как доступ к ресурсам для всех практических целей. На JVM это происходит, когда производительность прыгает, что V8 сделал, я ожидаю то же самое здесь. Что-то не так с моим анализом здесь? – faizan

19

Как уже говорилось, второй подход обычно предпочтительнее.

Два фрагмента кода не совсем эквивалентны: первый на самом деле устанавливает window.opener самому объекту окна, тогда как второй оставит его как есть, по крайней мере, под Firefox.

3

Вы можете опустить window и просто использовать location.href. Например:

location.href = 'http://google.im/'; 
17

Надеюсь, кто-то еще сохранит это, прочитав это.

Мы столкнулись с проблемой с WebKit браузеров на основе делают:

window.open("webpage.htm", "_self"); 

Браузер будет Блокировку и умереть, если у нас было слишком много узлов DOM. Когда мы перевели наш код на следующий принятый ответ:

location.href = "webpage.html"; 

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

0

Пожалуйста, используйте этот

window.open("url","_self"); 
  • Первый параметр "URL" полный путь к какой странице вы хотите открыть.
  • Второй параметр «_self», он используется для открытой страницы на той же вкладке. Вы хотите открыть страницу на другой вкладке, пожалуйста, используйте «_blank».
+1

Этот ответ прямо противоположен предлагаемому ответу и может привести к сбою браузеров. Смотрите мой ответ в этой теме. Кроме того, это не говорит, почему вы решили использовать этот метод, он просто говорит, чтобы использовать его. –

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