Javascript navigate to url

Шпаргалка по window.location

https://voiti-v-it.com/posts/76?filter=JS#2 window.location.origin → ‘https://voiti-v-it.com’ .protocol → ‘https:’ .host → ‘voiti-v-it.com’ .hostname → ‘voiti-v-it.com’ .port → » .pathname → ‘posts/76’ .search → ‘?filter=JS’ .hash → ‘#2’ .href → ‘https://voiti-v-it.com/posts/76?filter=JS#2’ window.location.assign(‘url’) .replace(‘url’) .reload() .toString()

window.location .origin Базовый URL (Протокол + имя хоста + номер порта) .protocol Протокол (http: или https) .host Доменное имя + порт .hostname Доменное имя .port Имя порта .pathname Строка пути (относительно хоста) .search Часть строки, которая следует после? (включая ?) .hash Часть строки, которая следует после # (якорь или идентификатор фрагмента) .href Полный URL

В моем примере выше ты заметишь, что

возвращают одно и то же значение. Так в чем же разница. Ну, это связано с номером порта. Давай взглянем.

https://voiti-v-it.com window.location.host; // ‘voiti-v-it.com’ window.location.hostname; // ‘voiti-v-it.com’ window.location.port; // »

http://voiti-v-it.com:8080 window.location.host; // ‘voiti-v-it.com:8080’ window.location.hostname; // ‘voiti-v-it.com’ window.location.port; // ‘8080’

будет содержать номер порта, тогда как

будет возвращать только имя хоста.

Ты можешь не только вызвать свойства объекта

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

http://voiti-v-it.com:8080 window.location.host; // ‘voiti-v-it.com:8080’ window.location.hostname; // ‘voiti-v-it.com’ window.location.port; // ‘8080’

Вот полный список свойств, которые ты можешь изменить:

http://voiti-v-it.com:8080 window.location.host; // ‘voiti-v-it.com:8080’ window.location.hostname; // ‘voiti-v-it.com’ window.location.port; // ‘8080’

Единственное свойство, которое ты не можешь установить, это

Это свойство доступно только для чтения.

который дает тебе информацию о текущем местоположении страницы. Ты также можешь получить доступ к объекту Location несколькими способами.

http://voiti-v-it.com:8080 window.location.host; // ‘voiti-v-it.com:8080’ window.location.hostname; // ‘voiti-v-it.com’ window.location.port; // ‘8080’

Объект доступен таким образом, потому что является глобальной переменной в браузере.

Каждый из 4х свойств выше указывают на один и тот же объект

и на самом деле не буду использовать

Главным образом потому, что

читается больше как общий термин, и кто-то может случайно назвать свою переменную, которая переопределяет глобальную переменную. Взять, к примеру:

Я думаю, что большинство разработчиков знают, что

является глобальной переменной. Так что у тебя меньше шансов вызвать путаницу. Поэтому я рекомендую использовать

Вот мой личный порядок предпочтений:

// ✅ 1. window.location // 🏆 2. document.location // ❌ 3. window.document.location // почему бы просто не использовать #1 or #2 😅 4. location // чувствуется слишком двусмысленно 😵

Конечно, это всего лишь мои предпочтения. Ты эксперт в своей кодовой базе, лучшего способа нет, лучший всегда тот, который подходит тебе и твоей команде.🤓

window.location .assign() Навигация происходит по указанному URL .replace() Навигация происходит по указанному URL & и текущая страница удаляется из истории .reload() Перезагружает текущую страницу .toString() Returns the URL

window.location.toString

Этот метод возвращает USVString URL. Версия только для чтения

Другими словами, ты можешь использовать его для получения значения

// https://voiti-v-it.com window.location.href; // https://voiti-v-it.com window.location.toString(); // https://voiti-v-it.com

Что касается использования, я не смог найти много информации о том, что лучше; но если ты это сделаешь, пожалуйста, поделись в комментах 😊. Я нашел тест производительности на разницу.

Один момент, который я хочу отметить в отношении этих тестов скорости, заключается в том, что они зависят от браузера. Различные браузеры и версии будут иметь разные результаты. Я использую Chrome, поэтому href вышел быстрее остальных. Так что я буду этим пользоваться. Также я думаю, что он читается более явно, чем

предоставит URL, тогда как

выглядит как нечто, преобразуемое в строку.😅

Оба эти метода помогут тебе перейти по другому URL. Разница в том, что

сохранит твою текущую страницу в истории, поэтому твой пользователь может использовать кнопку «назад» для перехода к ней. Принимая во внимание метод

он не сохраняет его истории. Это немного смущает, да? Меня тоже. Давай пройдемся по примерам.

1. Открыть новую вкладку 2. Перейти https://voiti-v-it.com (текущая страница) 3. Загрузить нвоую страницу 👉 `window.location.assign(‘https://www.w3schools.com’)` 4. Нажать «назад» 5. Вернемся на 👉 https://voiti-v-it.com

1. Открыть новую вкладку 2. Перейти https://voiti-v-it.com (текущая страница) 3. Загрузить нвоую страницу 👉 `window.location.assign(‘https://www.w3schools.com’)` 4. Нажать «назад» 5. Вернемся на 👉 чистую страницу

Мне просто нужно подчеркнуть «текущая страница» в определении. Это страница прямо перед

1. Открыть новую вкладку 2. Перейти www.developer.mozilla.org 3. Перейти https://voiti-v-it.com 👈 это будет текущая страница 4. window.location.assign(‘https://www.w3schools.com’); // Перейдет к #3 4. window.location.replace(‘https://www.w3schools.com’); // Перейдет к #2

Теперь ты знаешь, что мы можем изменить свойства

присвоив значение с помощью

Точно так же существуют методы, к которым мы можем получить доступ для выполнения некоторых действий. Итак, что касается «как перенаправить/редиректить на другую страницу», то есть 3 способа.

// Установить свойство href window.location.href = ‘https://voiti-v-it.com’; // Использование Assign window.location.assign(‘https://voiti-v-it.com’); // Использование Replace window.location.replace(‘https://voiti-v-it.com’);

replace vs assign vs href

Все три перенаправляют, разница связана с историей браузера.

здесь одинаковы. Они сохранят твою текущую страницу в истории, а

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

Таким образом, вопрос сейчас:

Я считаю, что это личные предпочтения. Мне больше нравится

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

window.location.assign = jest.fn(); myUrlUpdateFunction(); expect(window.location.assign).toBeCalledWith(‘http://my.url’);

Но для тех, которые болеют за

для редиректа страницы. Я нашел тест производительности и он работает в моей версии Chrome быстрее. Опять же, тесты производительности варьируются в зависимости от браузера и разных версий, сейчас это может быть быстрее, но, возможно, в будущих браузерах всё может измениться.

Как это все появилось 👍

Ладно, я готов с вами поделиться как появилась эта шпаргалка. Я гуглил, как редиректить на другую страницу, и столкнулся с объектом

Иногда я чувствую, что разработчик является журналистом или детективом — для того, чтобы собрать всю доступную информацию, приходится много копаться и прочесывать разные источники. Честно говоря, я был ошеломлен материалами, они все были “о разном”, а я просто хотел всё из одного источника. Я не мог найти много полной информации, поэтому я подумал, а расскажу-ка я об этом в шпаргалке!

Ещё больше полезного в наших соц. сетях instagram, facebook, telegram

Источник

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The navigate() method of the Navigation interface navigates to a specific URL, updating any provided state in the history entries list.

Syntax

navigate(url) navigate(url, options) 

Parameters

The destination URL to navigate to. Note that when calling navigate() on a another window’s navigation object, the URL will be resolved relative to the target window’s URL, not the calling window’s URL. This matches the behavior of the History API, but not the behavior of the Location API.

An options object containing the following properties:

Developer-defined information to be stored in the associated NavigationHistoryEntry once the navigation is complete, retrievable via getState() . This can be any data type. You might, for example, wish to store a page visit count for analytics purposes, or store UI state details so the view can be shown exactly as the user last left it. Any data stored in state must be structured-cloneable.

Developer-defined information to be passed along to the navigate event, made available in NavigateEvent.info . This can be any data type. You might, for example, wish to display newly-navigated content with a different animation depending on how it was navigated to (swipe left, swipe right, or go home). A string indicating which animation to use could be passed in as info .

An enumerated value that sets the history behavior of this navigation. The available values are:

  • auto : The default value; will usually perform a push navigation but will perform a replace navigation under special circumstances (see the NotSupportedError description below).
  • push : Will push a new NavigationHistoryEntry onto the entries list, or fail under special circumstances (see the NotSupportedError description below).
  • replace : Will replace the current NavigationHistoryEntry .

Return value

An object with the following properties:

A Promise which will fulfill when the visible URL has changed and a new NavigationHistoryEntry has been created.

A Promise which will fulfill when all promises returned by the intercept() handler are fulfilled. This is equivalent to the NavigationTransition.finished promise fulfilling, when the navigatesuccess event fires.

Either one of these promises rejects if the navigation has failed for some reason.

Exceptions

Thrown if the state parameter had values included in it that are not structured-cloneable.

Thrown if the url parameter is not a valid URL.

Thrown if the history option is set to push , and any of the following special circumstances are true:

  • The browser is currently showing the initial about:blank document.
  • The url ‘s scheme is javascript .

Examples

Set up home button

function initHomeBtn()  // Get the key of the first loaded entry // so the user can always go back to this view. const  key > = navigation.currentEntry; backToHomeButton.onclick = () =>  navigation.traverseTo(key); >; > // Intercept navigate events, such as link clicks, and // replace them with single-page navigations navigation.addEventListener("navigate", (event) =>  event.intercept( async handler()  // Navigate to a different view, // but the "home" button will always work. >, >); >); 

A smart back button

A page-supplied «back» button can take you back, even after reload, by inspecting the previous history entries:

.addEventListener("click", () =>  if ( navigation.entries()[navigation.currentEntry.index - 1]?.url === "/product-listing" )  navigation.back(); > else  // If the user arrived here in some other way // e.g. by typing the URL directly: navigation.navigate("/product-listing",  history: "replace" >); > >); 

Using info and state

async function navigateHandler()  await navigation.navigate(url,  info:  animation: "swipe-right" >, state:  infoPaneOpen: true >, >); > 

Specifications

Browser compatibility

BCD tables only load in the browser

See also

Found a content problem with this page?

This page was last modified on Jun 13, 2023 by MDN contributors.

Your blueprint for a better internet.

MDN

Support

Our communities

Developers

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

Источник

Читайте также:  CSS Test
Оцените статью