window.location.href = window.location.href и JSLint - PullRequest
12 голосов
/ 19 июля 2011

При использовании

window.location.href = window.location.href;

Перезагрузить страницу (без повторного размещения) - это не плохая практика, что нам следует делать с жалобой JSLint « Странное назначение »?

EDIT window.location.reload() не подходит, если вы не хотите снова отправлять данные формы POST. В некоторых браузерах это вызывает «Переслать данные формы?» чего лучше избегать, когда не нужно.

ОБНОВЛЕНИЕ Я провел очень краткое тестирование и обнаружил:

  • Chrome 12 и Safari 5.0.5 на Mac не повторяют POST с .reload()
  • FF 2.0, 3.6, 4.0, 5.0 на Mac предоставляют пользователю «диалог отправки формы» с .reload(), .reload(true) и .reload(false)
  • IE6, IE8 (стандарты), IE8 (режим IE7, стандарты) в XP; и IE9 и IE10-tech-preview в Win7 ведут себя так же, как FF на Mac
  • window.location = window.location.href работает так же, как window.location.href = window.location.href во всех этих браузерах.

Вот тестовый скрипт .

Ответы [ 3 ]

9 голосов
/ 19 июля 2011

Попробуйте это

window.location = window.location.href;
1 голос
/ 19 июля 2011

Это действительно странное задание - назначить что-то себе.Похоже, больше предупреждения, чем жалобы.

Я сам предпочел бы использовать:

window.location.reload()

Редактировать: , но это будет перепечатывать форму, не так лиВот сообщение на SO о том же: страница перезагрузки php без публикации данных

0 голосов
/ 20 июля 2011

Это странное задание, JSLint прав. Проблема в том, что установка переменной имеет побочный эффект перезагрузки страницы. Я бы кодировал это как window.location.href = window.location.href + '';, чтобы избежать ошибок JSLint, и добавил бы комментарий, объясняющий, что он делает.

...