Подтвердить что ты не робот

Как перенаправить и перезагрузить правильный путь в Дарт?

Каковы предпочтительные способы перенаправления и перезагрузки в Dart?

Используем ли мы только: window.location.href = window.location.href?

4b9b3361

Ответ 1

Существует несколько различных способов обработки изменений URI, и каждый из них имеет свою собственную цель.

  • Если вы хотите отправить пользователя в другой URI:

    • window.location.assign('http://google.com')

      Этот пользователь отправляет пользователя в Google, сохраняя историю просмотров (история кнопок на задней панели). Это похоже на щелчок по ссылке.

    • window.location.href = 'http://google.com'

      То же, что и выше, это еще один способ сделать это. href - это сеттер и вызывает назначение. Я чувствую, что предыдущая версия чище.

    • window.location.replace('http://google.com');

      Однако replace() метод LocalLocation не только отправляет пользователя на Google, но также не помещает исходную страницу в историю сеансов, а это означает, что пользователь не будет страдать от нескончаемого кошмара с обратной связью.

      Это по существу то же самое, что и перенаправление HTTP. История пропущена.

  • Если вы хотите выполнить перезагрузку/обновление.

    • window.location.assign(window.location.href)

      Перезагружает текущую страницу в тот же URI. Это означает, что не содержит POST данные. Некоторые из ресурсов (например, изображения и т.д.) Могут меня перезагрузить из кеша, так что это может быть не полная перезагрузка.

      Это по существу то же самое, что нажать F5 и пропустить отправку данных POST.

    • window.location.href = window.location.href

      Опять же, как и предыдущий.

    • window.location.reload()

      Этот способ перезагрузки страницы также приводит к отправке данных POST. "Версия JavaScript" window.location.reload() также поддерживает параметр, который указывает, следует ли пропускать кеш или нет. Однако текущая реализация Dart не поддерживает этот параметр и по умолчанию извлекает ресурсы из кеша.

      Этот параметр кеша может быть добавлен в Dart в какой-то момент, но он еще не существует. Когда он появится, вы, скорее всего, просто передадите true в качестве первого параметра, а затем он будет похож на Ctrl + Shift + R.

Резюме

  • Я хочу симулировать щелчок по тегу <a>.

Используйте window.location.assign(url).

  • Я хочу перенаправить на новый веб-сайт, например перенаправление HTTP, и пропустить историю заново.

Используйте window.location.replace(url).

  • Я хочу сделать F5 с POST данными.

Используйте window.location.reload().

  • Я хочу сделать F5 без POST данных.

Используйте window.location.assign(window.location.href).

  • Я хочу сделать Ctrl + Shift + F5.

Недоступно, может быть, в будущем. Вероятно, это будет window.location.reload(true).