IndexedDB - рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреА рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ - рд╕рд╛рде рд╣реА рд╕рд╛рде WebSocket (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рдХрдо) рдХреА рдЙрдореНрдореАрдж рдереАред рдлрд╝рд╛рдпрд░реНрдлрд╝реЙрдХреНрд╕ 4 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдЖрд▓реЛрдХ рдореЗрдВ, рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рд╢рдХреНрддрд┐ рдорд┐рд▓реА рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдПрдбреНрд░реЗрд╕ рдмреБрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рдП (рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЦреЛрдЬ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ рдЖрднрд╛рд╕ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдерд╛ рдЙрджрд╛рд╣рд░рдг)ред
рдХреБрдЫ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╢рдмреНрдж
рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IndexedDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреВрд▓рдХрд┐рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реБрдИред рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреГрд╖реНрдарднреВрдорд┐
рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА
рд╣реИ ред
рдкрд╛рда рдореЗрдВ рднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╡рд┐рдореЛрдЪрди рдХреЗ рд▓рд┐рдП рдЬрд╝рд░реВрд░реА рдЧреАрддрд╛рддреНрдордХ рдкрдЪрдбрд╝реЗ рд╣реЛрдВрдЧреЗред рдореИрдВ рд▓реЗрдЦ рдХреЛ рд╡рд┐рдХреА-рд╢реИрд▓реА рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдЫрд┐рдбрд╝рдХрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рд╕рднреА рд╕реНрд░реЛрдд рдЕрдВрдд рдореЗрдВ рд╕реНрдЯреИрдХреНрдб рд╣реИрдВред
рд╣рдо рдХрд┐рд╕ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджреЗрдВрдЧреЗ
рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЪреИрдЯ рд░реВрдо рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪреИрдЯ рд░реВрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ:
- рд╕рднреА рдЪреИрдЯ рд╕рдВрджреЗрд╢ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ; рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ 100 рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ;
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдоред
рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ
рдкрд╣рд▓рд╛ рдЪрд░рдг рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ IndexedDB рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
if ("webkitIndexedDB" in window){ var idb=window.webkitIndexedDB; } else if ("mozIndexedDB" in window) { var idb=window.mozIndexedDB; } else {
:
, . , , ( ), , , -, .
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ IDBRequest рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреАред рдорд╕реМрджрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ IndexedDB рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдЙрдкрдпреЛрдЧ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
var idbRequest=idb.open(dbName,dbDescription);
рдСрдирд░реЛрд░ рд╣реИрдВрдбрд▓рд░:
рдпрджрд┐ рдЖрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ IDBErrorEvent рдореЗрдВ рджреЛ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ - рдХреЛрдб рдФрд░ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЙрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдШрдЯрдирд╛ рдЖрддреА рд╣реИ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдПрдХ IDBRequest рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рдПрдХ рд╡реЗрдмрдХрд┐рдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрд╡рдпрдВ рд╕рдВрджреЗрд╢ред рдЕрдВрддрд┐рдо рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИ:
function idbRequestError(err){ idbRequest=err.target;
рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:
- рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдкрд░ рд░реЛрдХ;
- рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ тАЬрдпрд╣ рд╕рд╛рдЗрдЯ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рд╣реИред рдЕрдиреБрдорддрд┐ рджреЗрдВ? "
рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓ рд╣реИ, рддреЛ рдЖрдк рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╕рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рд╕рдлрд▓ рд╣реИрдВрдбрд▓рд░ рд╕рдВрд░рдЪрдирд╛:
function idbRequestSuccess(e){ var db=e.target.result; if (db.version===''){
рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдЗрд╕рдХреЗ рдЧрд▓рдд рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реЗрдЯрд╡рд░реНрд╕рди рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рдореБрдЭреЗ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ IndexedDB рдореЗрдВ рд▓реЗрдирджреЗрди рддрдВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреА рд╣реЛрдЧреАред
IndexedDB рдореЗрдВ рд▓реЗрдирджреЗрди
W3C рдбреНрд░рд╛рдлреНрдЯ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЗрдирджреЗрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ: READ_ONLY, READ_WRITE, SNAPSHOT_READ рдФрд░ VERSION_CHANGEDред
, READ_ONLY SNAPSHOT_READ, , , .
READ_ONLY - рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рдХрд╛ рдЕрд░реНрде рд╣реИ, рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЗрди-рджреЗрди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
READ_WRITE - рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЪрдпрдирд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╕рднреА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд▓реЗрдирджреЗрди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдп рд╕рднреА рд▓реЗрдирджреЗрди рдФрд░ рд░рди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред
VERSION_CHANGE - рдПрдХ рд▓реЗрдирджреЗрди рдЬреЛ рдЕрдиреНрдп рд╕рднреА рд▓реЗрдирджреЗрди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕ рд▓реЗрди-рджреЗрди рдореЗрдВ рд╣реА рдЖрдк рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛, рд╣рдЯрд╛ рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
. W3C READ_WRITE=0, READ_ONLY=1, SNAPSHOT_READ=2, VERSION_CHANGE=3. тАЬwebkitIDBTransaction.READ_ONLYтАЭ , , . , VERSION_CHANGE 2, . , FireFox READ_ONLY=0, READ_WRITE=1 .
рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ VERSION_CHANGE рд▓реЗрдирджреЗрди рд╕реЗ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдПрдХ рд╕рдлрд▓ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
var setVersion=db.setVersion('3.14'); setVersion.onsuccess=function (e) { var db=e.target.transaction.db;
рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдмрдирд╛рдПрдБ - createObjectStore ()
рд╣рдЯрд╛рдПрдВ - deleteObjectStore ()
рд▓реЗрди-рджреЗрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ - рд▓реЗрди-рджреЗрди ()
рд╣рдо рдирд┐рд╖реНрдХрд╛рд╕рди рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗ
рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдбрд┐рд▓реАрдЯ рд╡рд┐рдзрд┐ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рддреА рд╣реИ, рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЙрд╕реЗ IDBRequest рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдСрдирд╕реНрд▓реЗрдпрд░ рд╣реИрдВрдбрд▓рд░ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рди рддреЛ рд╡реЗрдмрдХрд┐рдЯ рдФрд░ рди рд╣реА рдореЛрдЬрд╝рд┐рд▓рд╛ рдХреЛ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╡рд┐рдзрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд░реЛрдХрддреА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ
for (var i=0; i<db.objectStoreNames.length; i++){ db.deleteObjectStore(db.objectStoreNames.length[i]); };
рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдЫреЛрдбрд╝рдирд╛ рд╣реИ, рдХреБрдЫ рдирд╣реАрдВред рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмреИрд╕рд╛рдЦреА рдХреА рд╕рдВрд░рдЪрдирд╛, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рддрдм рддрдХ рдФрд░ рдЬрдм рддрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рдмрджрд▓реА рдЬрд╛рддреА, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкрддрд╛ рдкреБрд╕реНрддрд┐рдХрд╛ рдХреЗ рд╕рд╛рде, рдХреЗрд╡рд▓ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди, рдЬрдм рдореИрдВрдиреЗ рджреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рддреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдиреЗ рдореБрдЭреЗ NON_TRANSIENT_ERR, рдЬреЛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдорддрд▓рдм рд╣реИ: "рдЖрдк рдЧрд▓рдд рдХрд╛рдо рдФрд░ рдЧрд▓рдд рд▓реЗрдирджреЗрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ" рд╡рд┐рд╖рдп рдкрд░ рдореБрдЭреЗ рдШреЗрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдбрд┐рдЬрд╛рдЗрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛, рдФрд░ рдХреНрд░реЛрдо рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛:
var setVersion=db.setVersion(dbVersion); setVersion.onsuccess=idbCreateStore; function idbCreateStore(e){
рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рдж, FireLis рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЬреЛ рдХреНрд░реЛрдо рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
var setVersion=db.setVersion('4'); setVersion.onsuccess=idbCreateStore; function idbCreateStore(e){
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рджреЗрдЦрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рдБрдЪ рдЪрд▓ рд░рд╣реА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рд╛рдордиреЗ рдЖрдПрдЧреАред
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ: рдХреБрдВрдЬреА рдирд╛рдо рдФрд░ рдСрдЯреЛ-рдЗрдВрд╕рд┐рдиреЗрдВрд╕ рдлреНрд▓реИрдЧ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛)ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЛрдб рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛: OgneLis рдиреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рд▓реЗрдирджреЗрди рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рджрд░реНрджрдирд╛рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрдХреНрдд рдХреАред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реИ рдирд╣реАрдВред рд╕рднреА рдХреЙрд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЧрдП рдереЗред рдлрд┐рд░ рд╕реЗ, рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░, IDObjectStore рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ createObjectStore () рд╡рд┐рдзрд┐ рдореЗрдВ IDBRequest рдЧреБрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ рдЕрд╕рдлрд▓ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╕реНрддреБ рдореЗрдВ рд╕рдорд╛рди рдЧреБрдг рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдирд┐рдореНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
var idbObjectsWait=true; while (idbObjectsWait){ idbObjectsWait=!(db.objectStoreNames.contains('chat') && db.objectStoreNames.contains('iam')); };
рдЕрдВрдд рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИред
рдЕрднрд┐рд▓реЗрдЦ
рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ (рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд▓рд┐рдЦрд┐рдд рд▓реЗрдирджреЗрди рд╕реЗ): рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдбрд╛рд▓реЗрдВред рдЕрдВрддрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдПрдХ рдХреБрдВрдЬреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдореВрд▓реНрдп рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛; рдбрд╛рд▓ - рдбреЗрдЯрд╛ рдХреА рдЬрдЧрд╣ред рдСрдкрд░реЗрд╢рди рдлрд┐рд░ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИрдВред
var t=idb.transaction(['iam'], idbConst.WRITE); var s=t.objectStore('iam'); s.put({'name':$('#name').val()},1);
рдкрдврд╝рдирд╛
. IDBKeyRange, , . .. : . , : var t=idb.transaction(['chat'],idbConst.READ); var s=t.objectStore('chat'); var r=s.openCursor(); r.onsuccess=function (e) { var idbEntry=e.target.result; if (idbEntry){
рдпрд╣ рдкреЙрдЗрдВрдЯрд░ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдкрдврд╝рдХрд░ рд░реАрдбрд┐рдВрдЧ рджрд┐рд╢рд╛ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдкрд░ рдмрд╣реБрдд рдЖрд╢рд╛рд╡рд╛рджреА рдиреЛрдЯ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред IndexedDB рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдХрдЪреНрдЪрд╛ рд╣реИ: рдХреИрдХреНрдЯрд╕ рдмрд╣реБрдд рдЦрд░реЛрдВрдЪ рд╣реИ, рдФрд░ рдЯрдХреАрд▓рд╛ рдЗрд╕рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддреА рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реАрдорд╛ рдЕрддреНрдпрдВрдд рд╕реАрдорд┐рдд рд╣реИ, рдФрд░ IndexedDB рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рдХрдо рд╕рдВрдЦреНрдпрд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╡рд┐рд╖рдп рдкрд░ рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рд╣реИ
Mikewest ред
developer.mozilla.org/en/IndexedDB - рдореЛрдЬрд╝рд┐рд▓рд╛ рдХрд╛ рдПрдХ рд╡рд┐рдХрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред
www.w3.org/TR/IndexedDB - W3C рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ред
www.netroxsc.ru/pub/chateg - Chrome рдЙрджрд╛рд╣рд░рдг Chrome 11 рдФрд░ 12, рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛
UPD 2014-04-09 ред IndexDB рд▓реЗрдЦ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛:
IndexedDB рддреИрдпрд╛рд░ рдХрд░рдирд╛