这是完整的 javascript 代码:
function openAddressDB(){
if (!window.indexedDB) {
window.alert("Your browser doesn't support a stable version of IndexedDB. Can't store address data in web storage");
} else {
// Let us open address database
var request = window.indexedDB.open(Address_DB_Name, Address_DB_Version);
//Sucess event handler
request.onsuccess = function(event) {
addressDb = request.result;
refreshAddressList();
// Generic error handler for all errors targeted at this database's requests!
addressDb.onerror = function(event) {
alert(Address_DB_Name + " error: " + event.target.errorCode);
};
};
// If some other tab is loaded with the database, then it needs to be closed
// before we can proceed.
request.onblocked = function(event) {
alert("Need to update "+Address_DB_Name+" database, please close all other tabs with this site open!");
};
//Error event handler
request.onerror = function(event) {
alert("Open "+Address_DB_Name+" failed:" + event.target.errorCode );
};
//upgrade event handler
request.onupgradeneeded = function (evt) {
addressDb = evt.currentTarget.result;
//delete object store if database is upgrading
if (event.oldVersion != 0){
if(addressDb.objectStoreNames.contains(Address1_Store)) {
addressDb.deleteObjectStore(Address1_Store);
}
if(addressDb.objectStoreNames.contains(Address2_Store)) {
addressDb.deleteObjectStore(Address2_Store);
}
if(addressDb.objectStoreNames.contains(Address3_Store)) {
addressDb.deleteObjectStore(Address3_Store);
}
if(addressDb.objectStoreNames.contains(Town_City_Store)) {
addressDb.deleteObjectStore(Town_City_Store);
}
if(addressDb.objectStoreNames.contains(County_Store)) {
addressDb.deleteObjectStore(County_Store);
}
if (addressDb.objectStoreNames.contains(State_Store)) {
addressDb.deleteObjectStore(State_Store);
}
if (addressDb.objectStoreNames.contains(Post_Code_Store)) {
addressDb.deleteObjectStore(Post_Code_Store);
}
if (addressDb.objectStoreNames.contains(Country_Store)) {
addressDb.deleteObjectStore(Country_Store);
}
if (addressDb.objectStoreNames.contains(Region_Store)) {
addressDb.deleteObjectStore(Region_Store);
}
}
//creating object store and store data
//Address 1
$("#addressview").find("[name='address1id']").each(function(index){
address1Store =addressDb.createObjectStore(Address1_Store,{ keyPath: "id" });
// Create an index to search on
address1Store.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
address1Store.transaction.oncomplete = function(event){
loadAddressList('address1id', 'Address1')
};
});
//Address 2
$("#addressview").find("[name='address2id']").each(function(index){
address2Store =addressDb.createObjectStore(Address2_Store,{ keyPath: "id" });
address2Store.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
address2Store.transaction.oncomplete = function(event){
loadAddressList('address2id','Address2')
};
});
//Address 3
$("#addressview").find("[name='address3id']").each(function(index){
address3Store =addressDb.createObjectStore(Address3_Store,{ keyPath: "id" });
address3Store.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
address3Store.transaction.oncomplete = function(event){
loadAddressList('address3id','Address3')
};
});
//Town/City
$("#addressview").find("[name='towncityid']").each(function(index){
townCityStore =addressDb.createObjectStore(Town_City_Store,{ keyPath: "id" });
townCityStore.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
townCityStore.transaction.oncomplete = function(event){
loadAddressList('towncityid','TownCity')
};
});
//county
$("#addressview").find("[name='countyid']").each(function(index){
countyStore =addressDb.createObjectStore(County_Store,{ keyPath: "id" });
countyStore.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
countyStore.transaction.oncomplete = function(event){
loadAddressList('countyid','County')
};
});
//state
$("#addressview").find("[name='stateid']").each(function(index){
stateStore =addressDb.createObjectStore(State_Store,{ keyPath: "id" });
stateStore.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
stateStore.transaction.oncomplete = function(event){
loadAddressList('stateid','State')
};
});
//Postal Code
$("#addressview").find("[name='postalcodeid']").each(function(index){
postalCodeStore =addressDb.createObjectStore(Post_Code_Store,{ keyPath: "id" });
postalCodeStore.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
postalCodeStore.transaction.oncomplete = function(event){
loadAddressList('postalcodeid','PostalCode')
};
});
//Country
$("#addressview").find("[name='countryid']").each(function(index){
countryStore =addressDb.createObjectStore(Country_Store,{ keyPath: "id" });
countryStore.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
countryStore.transaction.oncomplete = function(event){
loadAddressList('countryid','Country')
};
});
//Region
$("#addressview").find("[name='regionid']").each(function(index){
regionStore =addressDb.createObjectStore(Region_Store,{ keyPath: "id" });
regionStore.createIndex("parentAddressListValueId", "parentAddressListValueId", { unique: false });
regionStore.transaction.oncomplete = function(event){
loadAddressList('regionid','Region')
};
});
addressDb.onversionchange = function(event) {
alert(Address_DB_Name+' database change has occurred; you should refresh this browser window, or close it down and use the other '+ 'open version of this application, wherever it exists.');
};
window.location.reload();
}; // onupgradeneeded
}//else
} // function openAddressDB()
function loadAddressList(fieldName,address_field) {
$.ajax({
type: "GET",
url: "/settings/address_lst_values/"+address_field,
data: {},
beforeSend: function() {
$('#address_loading').show();
},
complete: function() {
$('#address_loading').hide();
},
success: function(data, status, jqXHR)
{
if (anyAjaxError(data, status, jqXHR) === false)
{
//store in browser object store
var store = getObjectStore(fieldName, 'readwrite');
for (var i in data) {
store.add(data[i]);
}
}
$('#address_loading').hide();
},
error : function(jqXHR, status, errorThrown )
{
ajaxCallFail(jqXHR, status, errorThrown,"Error while loading "+address_field +"data")
}
}); // ajax call to load address list
}// function load address list