در قسمت Inspect مرورگر و بخش Console با استفاده از دستو history میتوان به تاریخچه stateها (یا صفحات طی شده توسط کاربر) دسترسی داشت. هر کدام از این صفحات به صورت length در history ذخیره میشوند. در واقع ویژگی history.length یک ویژگی فقط خواندنی است که یک عدد صحیح را برمیگرداند که نشاندهنده تعداد المانها در history بوده، از جمله شامل صفحه بارگذاریشده فعلی نیز است.
برای عقب یا جلو رفتن در صفحه میتوان از ویژگیهای history.forward() یا history.back() و یا history.go() استفاده کنید. مقدار ورودی برای دو مورد اول عدد صحیح مثبت است، برای مثال history.back(2) یعنی دو state یا صفحه به عقب برگرد؛ و مقدار ورودی برای مورد سوم اعداد صحیح مثبت و منفی به ترتیب برای forward و back است؛ برای مثال history.go(-2) یعنی دو state یا صفحه به عقب برگرد.
ویژگی history.state مقداری را برمیگرداند که نشاندهنده state بالای history stack است. در حالت اولیه مقدار state برابر null است، اما میتوان از طریق popstate یا کدهای JavaScript به آن مقدار داد. این مقداردهی میتواند object یا ... باشد که در صورت نیاز بتوان در برنامه از آن استفاده کرد. مقدار نسبت داده شده به state باید قابلیت Serialization داشته باشد.
ویژگی pushState(state, unused, url) دارای سه مقدار است؛ به ترتیب:
· state: یک object از JavaScript است که به وسیله آن میتوان یک state جدید را ساخت. در این حالت length تغییر کرده و state نیز از حالت null درآمده و مقداردهی میشود.
· unused: پارامتر دوم و درحال حاضر بلااستفاده است، پیشنهاد میشود به جای آن یک string خالی بگذارید.
· url: پارامتر سوم و optional است. مقدار نسبت داده شده به آن، مقداری را به url اضافه میکند. با این کار صفحه refresh نشده و فقط آدرس url تغییر میکند.
با تغییر در صفحه یا back و یا forward در ان، یک event با نام popstate رخ میدهد. برای فراخوانی آن میتوان به این صورت عمل کرد:
window.addEventListener('popstate', (event)=>console.log(event))
که فقط درصورتی عمل log رخ میدهد که در صفحه به عقب یا جلو بروید. نتیجه: