Шрифт:
// создать на их основе объекты и добавить их в хранилище.
for(var і = 0; і < lines.length; i++) {
var fields = lines[i].split(",");// Значения через запятую
var record = { // Сохраняемый объект
zipcode: fields[0], // Все свойства - строки
city: fields[1],
state: fields[2],
latitude: fields[3],
longitude: fields[4]
};
// Вся прелесть IndexedDB API в том, что хранилище
// объектов *по-настоящему* просто использовать.
// Следующая строка добавляет запись:
store.put(record); // Или add, чтобы избежать затирания
}
status("Инициализация базы данных, загружено записей:
+ numlines + ".");
}
if (e.type == "load") {
// Если это было последнее событие load, значит, мы отправили в базу
// данных все сведения о почтовых индексах. Но, так как мы только
// что обработали порядка 40000 записей, они все еще могут записываться
// в хранилище. Поэтому мы выполним простой запрос. Когда он будет
// успешно выполнен, это послужит сигналом, что база данных готова
// к работе, и наконец можно удалить строку сообщения и вызвать
// функцию f, которая так давно была передана функции withDB
lookupCity("02134",
function(s) { // Allston, MA
document.body.removeChild(statusline); withDB(f);
});
}
}
}
}
</script>
</head>
<body>
<р>Введите почтовый индекс, чтобы отыскать город:</р>
Индекс: <input onchange="displayCity(this.value)"></input>
Город: <output id="city"></output>
</div>
<div>
<р>Введите название города (с учетом регистра символов, без названия штата),
чтобы отыскать все города с этим названием и их почтовые индексы:</р>
Город: <input onchange="displayZipcodes(this.value)"></input>
<div id="zipcodes"></div>
</div>
<р><і>Зтот пример работает только в Firefox 4 и Chrome 11.</i>
<р><і>Выполнение первого запроса может занять длительное время.</і></р>
<р><і>Вам может потребоваться запустить Chrome с
ключом --unlimited-quota-for-indexeddb</i>