JavaScript. Подробное руководство, 6-е издание
Шрифт:
// Отыскать каждый из этих элементов по их атрибутам id
for(var id in ui) ui[id] = document.getElementByld(id):
// Определить обработчик событий для поля ввода
ui.input.onchange = handleGuess;
// Выбрать случайное число и инициализировать состояние игры
state = {
n: Math.floor(99 * Math.random) + 1, //
Целое число: 0 < n < 100
low: 0, // Нижняя граница, где находится угадываемое число
high: 100, // Верхняя граница, где находится угадываемое число
guessnum: 0, // Количество выполненных попыток угадать число
guess: undefined // Последнее число, указанное пользователем
};
// Изменить содержимое документа, чтобы отобразить начальное состояние
display(state):
// Эта функция вызывается как обработчик события onload, а также как обработчик щелчка
// на кнопке Play Again (Играть еще раз), которая появляется в конце игры.
// Во втором случае аргумент playagain будет иметь значение true, и если это так,
// мы сохраняем новое состояние игры. Но если функция была вызвана в ответ
// на событие "load", сохранять состояние не требуется, потому что событие "load"
// может возникнуть также при переходе назад по истории посещений из какого-то
// другого документа в существующее состояние игры. Если бы мы сохраняли начальное
// состояние, в этом случае мы могли бы затереть имеющееся в истории актуальное
// состояние игры. В броузерах, поддерживающих метод pushState, за событием "load"
// всегда следует событие "popstate". Поэтому, вместо того чтобы сохранять
// состояние здесь, мы ждем событие "popstate". Если вместе с ним будет получен
// объект состояния, мы просто используем его. Иначе, если событие "popstate"
// содержит в поле state значение null, мы знаем, что была начата новая игра,
// и поэтому используем replaceState для сохранения
нового состояния игры,
if (playagain === true) save(state);
}
// Сохраняет состояние игры с помощью метода pushStateO, если поддерживается
function save(state) {
if (!history.pushState) return;// Вернуться, если pushState не определен
// С каждым состоянием мы связываем определенную строку URL-адреса.
// Этот адрес отображает число попыток, но не содержит информации о состоянии игры,
// поэтому его нельзя использовать для создания закладок.
// Мы не можем поместить информацию о состоянии в URL-адрес,
// потому что при этом пришлось бы указать в нем угадываемое число,
var url = "#guess" + state.guessnum;
// Сохранить объект с информацией о состоянии и строку URL
history.pushState(state, // Сохраняемый объект с информацией о состоянии
"", // Заглавие: текущие броузеры игнорируют его
url); // URL состояния: бесполезен для закладок
}
// Обработчик события onpopstate, восстанавливающий состояние приложения,
function popState(event) {
if (event.state) { // Если имеется объект состояния, восстановить его
// Обратите внимание, что event.state является полной копией
// сохраненного объекта состояния, поэтому мы можем изменять его,
// не опасаясь изменить сохраненное значение.
state = event.state; // Восстановить состояние
displayCstate); // Отобразить восстановленное состояние
}
else {
// Когда страница загружается впервые, событие "popstate" поступает
// без объекта состояния. Заменить значение null действительным
Поделиться:
Популярные книги
Последний Герой. Том 1
1. Последний герой
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00
рейтинг книги
Я до сих пор царь. Книга XXXII
32. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Жена неверного генерала, или Попаданка на отборе
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Неучтенный элемент. Том 1
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Законы Рода. Том 5
5. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VIII
8. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том VII
7. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Хозяин Теней 5
5. Безбожник
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Последний Паладин. Том 13
13. Путь Паладина
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Распутье
Сибириада
Проза:
военная проза
историческая проза
5.00
рейтинг книги
Последний Паладин. Том 14
14. Путь Паладина
Фантастика:
аниме
фэнтези
попаданцы
5.75
рейтинг книги
Матабар IV
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Наследие Маозари 9
9. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
сказочная фантастика
6.25
рейтинг книги
Ну, здравствуй, Герой!
2. Здравствуй, Мир!
Фантастика:
фэнтези
рпг
попаданцы
5.00