е всі користувачі готові повторити виконані раніше процедури і можуть покинути web-сайт.
Щоб розробити рішення даної проблеми, необхідно проаналізувати можливості JavaScript. У першу чергу цікавить можливість роботи з адресною рядком браузера. Також слід проаналізувати поведінку браузера при зміні адресного рядка.
Після аналізу можливостей браузера зроблено висновок, що змінити адресний рядок, не викликаючи перезавантаження сторінки, відображеної в браузері, можливо тільки за допомогою дописування до шляху, вказаному в адресному рядку, довільного набору символів після знака «#» , тобто зміна шляху в адресному рядку браузера з metagames / index / top / index.php
на, наприклад, metagames / index / top / index.php # filter: up не приведе до перезавантаження сторінки. Цією особливістю поведінки браузера можна скористатися, щоб фіксувати в адресному рядку імена і значення змінних, що характеризують стан сторінок web-додатки при роботі користувача з ними.
Аналіз можливостей JavaScript позволяєт визначити об'єкти і властивості об'єктів, що дозволяють змінити адресний рядок браузера. Ключовим об'єктом у даному випадку є об'єкт window. Об'єкт window поєднує в собі 2 напрямки роботи з кодом сторінки: window є глобальним об'єктом JavaScript і об'єктом вікна браузера. Об'єкт window серед полів має об'єкт location, який і дозволяє отримати доступ до шляху, вказаному в адресному рядку браузера, і змінити цей шлях.
window.location +=«# some_text";
Таким чином, завдяки зазначеним вище можливостям браузера та мови JavaScript, можна змінити шлях, вказаний в рядку браузера, зазначивши в цьому шляху поточний стан сторінки web-додатки. Залишається передбачити можливість відновлення стану сторінки з шляху в адресному рядку перед завантаженням сторінки. Ця можливість знову ж реалізується використанням об'єкта location, описаного в попередньому абзаці. За допомогою цього об'єкта можна отримати доступ до шляху в адресному рядку браузера, розбити на частини і відновити імена і значення змінних, що характеризують стан сторінки.
Безпосередня реалізація
Даний механізм необхідний, передусім, в компоненті games.filter, т.к. дії користувача з фільтрації списку різних ігор ініціюють велику кількість AJAX-запитів до сервера. Але слід передбачити універсальний механізм відновлення стану сторінок, щоб мати можливість використання на різних сторінках web-додатки незалежно від компонентів. Напишемо на мові JavaScript функцію, яка формуватиме рядок, що характеризує стан сторінки web-додатки: function ajax_state_string (url, exclude_array) {}.
Ця функція приймає в якості першого параметра шлях до сторінці web-додатки, яка була б завантажена по дії користувача, якби не використовувалася технологія AJAX. Передбачається, що в даному шляху вказані всі змінні та їх значення, які будуть визначати стан сторінки web-додатки після виконання запиту. exclude_array - додатковий параметр, що містить масив параметрів, які необхідно виключити зі списку змінних, зазначених у параметрі url, може бути порожнім. Функція повертає масив з двох елементів, перший з яких з індексом 0 містить сформований рядок запиту до комп'ютера web-додатки за допомогою технології AJAX; другий, з індексом 1, містить рядок стану, яка буде поміщена в адресний р...