пропонувати правки
JavaScript window.history — історія переходів браузера
Об'єкт history дає доступ до історії переходів вкладки: назад, вперед і — найцікавіше — зміна адреси без перезавантаження.
автор: NagarD
правити
Загальний опис
Методи back() і forward() роблять те саме, що кнопки браузера.
Але по-справжньому важливий тут pushState(). Він змінює адресу в рядку браузера, не перезавантажуючи сторінку — і саме на цьому побудовані всі односторінкові застосунки: вміст підмінюється кодом, а адреса лишається чесною, її можна скопіювати й надіслати.
Коли користувач тисне «Назад», спрацьовує подія popstate — і застосунок має сам відновити попередній стан. Забув обробник — і кнопка «Назад» просто перестане працювати, що бісить людей найбільше.
replaceState() не додає запис, а замінює поточний — зручно, коли міняється лише фільтр, і засмічувати історію не варто.
автор: NagarD
правити
Нотатка
З міркувань приватності прочитати історію не можна: не існує способу дізнатись, де користувач був раніше. Доступна лише довжина — history.length.
автор: NagarD
правити
+ додати пораду чи нотатку
Переглядачі
Стаціонарні переглядачі
Мобільні переглядачі
Серверні переглядачі
Приклади
+ запропонувати свій приклад у пісочниці
Адреса змінюється без перезавантаження, «Назад» працює.
function render(page) {
console.log('Малюємо сторінку', page);
}
try {
// змінили адресу, сторінку не перезавантажили
history.pushState({ page: 2 }, '', '?page=2');
// без цього обробника кнопка «Назад» зламається
window.addEventListener('popstate', event => {
const page = (event.state && event.state.page) || 1;
render(page);
});
// фільтр змінився — історію не засмічуємо
history.replaceState({ page: 2, sort: 'new' }, '', '?page=2&sort=new');
history.back(); // як кнопка «Назад»
} catch (error) {
console.log('У пісочниці зміна історії заборонена:', error.name);
}
автор: NagarD
Ваша версія — : після перевірки замінить чинну.
Нова порада чи нотатка — з'явиться на сторінці після перевірки.
Ваша версія секції « »: після перевірки замінить чинну.
Текст секції (markdown — передзаповнено чинним)
Як форматувати текст?
Пишемо
Виходить
**важливо***акцент*~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]]
Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org)
Посилання на чужий сайт.

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

Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру
Код усередині речення.
```css.card { display: grid }```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги.
Цитата на всю ширину абзацу.
Специфічність: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1][^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два||
Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішенняЗадайте контейнеру `display: grid`.||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок
Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.
Чому ця правка? (необов'язково, але дуже допомагає перевірці)
Ви гість — діють добові ліміти.
Увійдіть , щоб пропонувати без капчі.