History obyekti
History API brauzer seanslari tarixi bilan ishlash imkonini beradi.
Siz quyidagilarni qila olasiz:
- Move backward
- Move forward
- Add new history entries
- Joriy yozuvni o‘zgartirish
History obyekti
History API ga window.history obyekti bilan kirish mumkin.
history obyekti oyna prefiksisiz yozilishi mumkin.
Eng keng tarqalgan usullar quyidagilardir:
history.back()— brauzerda "orqaga" tugmasini bosish bilan bir xilhistory.forward()- brauzerda oldinga bosish bilan bir xil
History obyekti metodlari
| Metod | Tavsif |
|---|---|
| back() | Seans tarixidagi oldingi yozuvni yuklaydi |
| forward() | Seans tarixidagi keyingi yozuvni yuklaydi |
| go() | Joriy yozuvga nisbatan yozuvni yuklaydi |
| pushState() | Seans tarixiga yangi yozuv qo‘shadi |
| replaceState() | Joriy tarix yozuvini o‘zgartiradi |
Seanslar tarixi bo‘ylab harakatlanish uchun back(), forward() va go() tugmalaridan foydalaning.
Yangi sahifa yuklamasdan yangi tarix yozuvini yaratish uchun pushState()’dan foydalaning.
Yangi sahifani yuklamasdan joriy yozuvni o‘zgartirish uchun replaceState() dan foydalaning.
Foydalanuvchi boshqa tarix yozuviga o‘tishini aniqlash uchun popstate hodisasidan foydalaning.
History obyekti xususiyatlari
| Xususiyat | Tavsif |
|---|---|
| length | Tarixdagi yozuvlar sonini qaytaradi |
| state | Joriy tarix yozuvining holatini qaytaradi |
| scrollRestoration | O‘tkazishni tiklash harakatini oladi yoki o‘rnatadi |
Eslatma!
Foydalanuvchi maxfiyligini himoya qilish uchun JavaScript-ning tarix obyektiga kirishiga cheklovlar mavjud.
Maxfiylik sababli JavaScript brauzer tarixida saqlangan URL manzillarini o‘qiy olmaydi.
history.back() metodi
history.back() usuli sessiya tarixidagi oldingi sahifani yuklaydi.
Bu brauzerning Orqaga tugmasini bosish bilan bir xil.
Misol
history.back() tarix ro‘yxatidagi oldingi URL manzilni yuklaydi:
<button onclick="window.history.back()">Go Back</button>
Esda tuting: window prefiksini tushirib qoldirish mumkin:
<button onclick="history.back()">Go Back</button>
Yuqoridagi kodning chiqishi quyidagicha bo‘ladi:
history.forward() metodi
history.forward() usuli sessiya tarixidagi keyingi sahifani yuklaydi.
Bu brauzerning "Forward" tugmasini bosish bilan bir xil.
Misol
history.forward() tarix ro‘yxatidagi keyingi URL’ni yuklaydi.
<button onclick="history.forward()">Go Forward</button>
Yuqoridagi kodning chiqishi quyidagicha bo‘ladi:
history.go() metodi
history.go() usuli sessiya tarixidan ma’lum bir sahifani yuklaydi.
Argument brauzerga joriy sahifadan qancha qadam o‘tish kerakligini aytadi.
Misol
Go back two pages:
<button onclick="history.go(-2)">Go Back</button>
Yuqoridagi kodning chiqishi quyidagicha bo‘ladi:
Misol
Bir sahifa oldinga o‘tish:
<button onclick="history.go(1)">Go Forward</button>
Yuqoridagi kodning chiqishi quyidagicha bo‘ladi:
Negative numbers move backward.
Positive numbers move forward.
history.go(0) reloads the current page.
history.back() history.go(-1) bilan bir xil natija beradi.
history.forward() history.go(1) bilan bir xil natija beradi.
history.length xususiyati
history.length xususiyati sessiya tarixidagi yozuvlar sonini qaytaradi.
Misollar
let length = window.history.length;
window prefiksini tushirib qoldirish mumkin:
let length = history.length;
O‘zingiz sinab ko‘ring »
history.state xususiyati
history.state xususiyati joriy tarix yozuvi bilan bog‘liq holat ma’lumotlarini qaytaradi.
history.state qiymati
history.pushState() yoki history.replaceState() chaqirilmaguncha
null bo‘ladi.
Brauzer tarixini o‘zgartirish
History API brauzer tarixidagi yozuvlarni ham qo‘shishi yoki almashtirishi mumkin.
Bu butunlay yangi hujjatni yuklamasdan sahifa mazmunini o‘zgartiradigan ilovalar uchun foydalidir.
Ikki usul quyidagilardir:
history.pushState()- adds a new history entryhistory.replaceState()- replaces the current history entry
history.pushState() metodi
history.pushState() usuli sessiya tarixiga yangi yozuv qo‘shadi.
Sintaksis
history.pushState(state, "", url)
Misol
let state = {name:"example", page: 2};
let url = "page2.html";
history.pushState(state, "", url);
O‘zingiz sinab ko‘ring »
Misol URLni page2.html ga o‘zgartiradi va yangi tarix yozuvini qo‘shadi.
U serverdan page2.html faylini yuklamaydi.
Holat argumentida siz kirish bilan bog‘liq har qanday ma’lumotlarni saqlashingiz mumkin.
Ikkinchi dalil ("") tarixiy sabablarga ko‘ra mavjud va odatda bo‘sh.
Ixtiyoriy url argumenti joriy sahifa bilan bir xil kelib chiqishi kerak.
Yangi sahifa yuklanmaydi
history.pushState() metodi yangi sahifani yuklamaydi.
U brauzer tarixiga URL va state obyektini o‘z ichiga olgan yangi yozuv qo‘shadi.
Agar sahifa mazmuni o‘zgarishi kerak bo‘lsa, JavaScript uni alohida o‘zgartirishi kerak
location.href = "page2.html"; kabi holat bilan
history.replaceState() metodi
history.replaceState() metodi joriy tarix yozuvini o‘zgartiradi.
history.pushState()’dan farqli ravishda, u yangi tarix yozuvini yaratmaydi.
Bu brauzer tarixiga boshqa yozuv qo‘shmasdan joriy URL manzilini o‘zgartiradi:
Sintaksis
history.replaceState(state, "", url)
Misol
let state = {name:"example", page: 2};
let url = "page2.html";
history.replaceState(state, "", url);
O‘zingiz sinab ko‘ring »
Yangi sahifa yuklanmaydi
history.replaceState() metodi yangi sahifani yuklamaydi.
U joriy tarix yozuvini, jumladan URL va state obyektini o‘zgartiradi.
Agar sahifa mazmuni o‘zgarishi kerak bo‘lsa, JavaScript uni alohida o‘zgartirishi kerak
location.href = "page2.html"; kabi holat bilan
popstate hodisasi
popstate hodisasi faol tarix yozuvi o‘zgarganda sodir bo‘ladi.
Bu odatda foydalanuvchi brauzerning Orqaga yoki Oldinga tugmasini bosganda sodir bo‘ladi.
Misol
window.addEventListener("popstate", function(event) {
myDisplayer("Page changed");
});
Agar tarix yozuvida holat ma’lumotlari bo‘lsa, uni event.state saytidan olish mumkin:
Misol
window.addEventListener("popstate", function(event) {
if (event.state) {
myDisplayer(event.state.page);
}
});
Eslatma: pushState() yoki replaceState() chaqirilganda popstate hodisasi ishga tushmaydi.
History API’ning oddiy misoli
Quyidagi misol yangi sahifani yuklamasdan URL manzilini o‘zgartiradi.
Bundan tashqari, foydalanuvchi Orqaga yoki Oldinga tugmasini bosganida ko‘rsatilgan tarkibni tiklaydi.
Misol
<button onclick="showPage('home')">Home</button>
<button onclick="showPage('about')">About</button>
<p id="demo">Home</p>
<script>
function showPage(page) {
myDisplayer(page);
history.pushState({page: page}, "", "?page=" + page);
}
window.addEventListener("popstate", function(event) {
if (event.state) {
myDisplayer(event.state.page);
}
});
</script>
O‘zingiz sinab ko‘ring »
Aylantirish (scroll) holatini tiklash
Brauzerlar odatda foydalanuvchilar orqaga yoki oldinga harakat qilganda aylantirish holatini tiklaydi.
History.scrollRestoration xususiyati bu xatti-harakatni boshqarishi mumkin.
Misol
Disable automatic scroll restoration:
history.scrollRestoration = "manual";
Mumkin bo‘lgan qiymatlar:
- "auto" - brauzer aylantirish (scroll) holatini tiklaydi
- "qo‘lda" - dastur aylantirish pozitsiyasini boshqaradi
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
