window.location в JavaScript — адреса сторінки


Введення

Об'єкт Location у JavaScript відображає поточний URL документа, дозволяючи нам отримувати, переглядати та змінювати його частини. Цей об'єкт можна використовувати для переадресації на інший URL, перезавантаження сторінки та інших завдань, пов'язаних із роботою URL.

Location надає властивості для доступу до різних частин URL:

  • location.href – повний URL.
  • location.protocol – протокол (наприклад, "http:" або "https:").
  • location.host – ім'я хоста з портом.
  • location.hostname – ім'я хоста.
  • location.port – порт.
  • location.pathname – шлях після імені домену.
  • location.search – рядок запиту, починаючи з "?".
  • location.hash – частина URL після "#".

Приклад 1: Отримання поточного URL

console.log(location.href);  // може вивести "https://example.com/page.html?query=js#section"

У цьому прикладі ми просто виводимо поточний URL документа.

Приклад 2: Зміна частини URL

location.hash = "newSection";

Після виконання цього коду, URL документа зміниться на "https://example.com/page.html?query=js#newSection", а якщо на сторінці є елемент з ID "newSection", браузер прокрутить сторінку до цього елементу.

автор: Bond

Переадресація та перезавантаження сторінки

Методи об'єкта Location дозволяють нам керувати сторінкою:

  • location.assign(url): завантажує новий документ.
  • location.reload(): перезавантажує поточний документ.
  • location.replace(url): завантажує новий документ, замінюючи поточний в історії браузера.

Приклад 3: Переадресація на інший сайт

location.assign("https://www.openai.com");

Цей код перенаправляє користувача на сайт OpenAI.

Приклад 4: Перезавантаження сторінки

location.reload();

Виконуючи цей код, ви примусово перезавантажите поточну сторінку.

Приклад 5: Заміна поточного URL без додавання його в історію браузера

location.replace("https://www.example.com/newPage");

Цей код перенаправляє на "https://www.example.com/newPage", але старий URL не буде збережений в історії браузера, тому користувач не зможе повернутися назад за допомогою кнопки "Назад" у браузері.

автор: Bond

Звернення до параметрів запиту

location.search відображає рядок запиту URL, який починається з символу "?". Часто нам потрібно працювати з параметрами запиту.

Приклад 6: Отримання параметрів запиту

Припустимо, URL має такий вигляд: "https://example.com/page.html?user=John&age=30".

let params = new URLSearchParams(location.search);
let user = params.get("user");  // John
let age = params.get("age");    // 30

У цьому прикладі ми створюємо об'єкт URLSearchParams з location.search для легкого доступу до параметрів запиту.

Використання об'єкта Location є ключовим при роботі з веб-сторінками, адже він дозволяє нам керувати URL та взаємодіяти з його компонентами. З його допомогою можна легко реалізувати редирект, працювати з параметрами запиту та багато іншого.

автор: Bond

Загальний опис

автор: NagarD

Порада

Перш ніж використовувати або змінювати будь-яку частину URL за допомогою об'єкта Location, переконайтеся, що новий URL є валідним і безпечним для ваших користувачів.

автор: Bond
Нотатка

Незважаючи на те, що об'єкт Location дозволяє легко реалізовувати переадресацію, важливо користуватися цією можливістю розумно. Занадто часте використання переадресації може хаважати користувачам та погіршувати їхній досвід користування сайтом.

автор: Bond
Нотатка

Метод location.replace() не лише перенаправляє на новий URL, але й видаляє поточний URL з історії браузера. Це може бути корисно в певних ситуаціях, але також може викликати незручності для користувачів, які сподіваються повернутися на попередню сторінку.

автор: Bond

Синтаксис

const loc = document.location;

методи

Метод Опис
assign Завантажує новий документ за вказаною URL-адресою.
reload Перезавантажує поточну веб-сторінку з сервера або кешу браузера.
replace Замінює поточну сторінку у стеку переходів новою, без можливості повернення назад.

властивості

Властивість Опис
hash Забезпечує доступ до фрагмента URL, який слідує після символу "#".
host Визначає ім'я хоста та порт поточної веб-сторінки.
hostname Повертає ім'я домену поточної веб-сторінки без порту.
href Повертає або встановлює повний URL поточної веб-сторінки.
origin Повертає походження URL поточної веб-сторінки, включаючи схему, хост та порт.
pathname Вказує шлях сторінки від кореня сайту до поточної веб-сторінки.
port Визначає порт, на якому працює поточна веб-сторінка.
protocol Визначає або повертає протокол поточної веб-сторінки.
search Повертає частину URL, що містить рядок запиту після знака '?'.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 3 12 3
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
3 18 4 1
Підтримка: серверні переглядачі
Переглядач Deno
1.7*

Приклади

+ запропонувати свій приклад у пісочниці

Розбір адреси на частини й робота з параметрами запиту. URL має ті самі властивості, що й location, тому все з прикладу однаково працює і на адресі поточної сторінки.

// URL має ті самі властивості, що й location, — зручно показувати на сталому рядку
const url = new URL('https://css.in.ua/js/object/Location?page=2&sort=new#top');
console.log('protocol:', url.protocol);   // https:
console.log('hostname:', url.hostname);   // css.in.ua
console.log('pathname:', url.pathname);   // /js/object/Location
console.log('search:', url.search);       // ?page=2&sort=new
console.log('hash:', url.hash);           // #top

// параметри руками не розбирають
const params = new URLSearchParams(url.search);
console.log('page:', params.get('page'));        // 2
console.log('якого немає:', params.get('id'));   // null — а не порожній рядок

params.set('page', '3');
console.log('новий рядок запиту:', params.toString());   // page=3&sort=new

// адреса самої сторінки живе в location (тут це службова адреса рамки прикладу)
console.log('адреса самої рамки:', location.href);
console.log('location.pathname:', location.pathname);

// перехід: location.href = url або location.assign(url);
// location.replace(url) — те саме, але без запису в історії
автор: NagarD

Якщо у вас є веб-сайт з кількома мовними версіями, ви можете дозволити користувачам змінювати мову, клікаючи на певну кнопку або випадаюче меню. Це можна зробити, модифікуючи частину шляху в URL за допомогою об'єкта Location.

function setLanguage(lang) {
    location.pathname = '/' + lang + '/homepage';
}
// Користувач вибирає "українська", викликається setLanguage('uk')
автор: Bond

На сторінці інтернет-магазину ви можете дозволити користувачам фільтрувати товари за різними критеріями. Після застосування фільтру можна змінювати рядок запиту, щоб відображати активні параметри фільтрації.

function filterProducts(color, size) {
    let params = new URLSearchParams(location.search);
    params.set('color', color);
    params.set('size', size);
    location.search = params.toString();
}
// Користувач вибирає колір "червоний" і розмір "M", викликається filterProducts('red', 'M')
автор: Bond

Після того як користувач успішно авторизується на вашому сайті, ви можете перенаправити його на сторінку, з якої він прийшов, або на особисту сторінку користувача.

function redirectToOriginOrDashboard() {
    if (document.referrer) {
        location.href = document.referrer;
    } else {
        location.href = '/dashboard';
    }
}
// Після успішного входу на сайт викликається redirectToOriginOrDashboard()
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід