Re: [IndexedDB] Problems unprefixing IndexedDB

On Wed, Aug 8, 2012 at 5:06 PM, Kyle Huey <me@kylehuey.com> wrote:
> Hello all,
>
> Jonas mentioned earlier on this list that we unprefixed IndexedDB in Firefox
> nightlies some time ago.  We ran into a bit of a problem.[0]  Most of the
> IndexedDB tutorials (including ours and HTML5 Rocks[1] :-/) tell authors to
> deal with prefixing with:
>
> var indexedDB = window.indexedDB || window.webkitIndexedDB ||
> window.mozIndexedDB || window.msIndexedDB || ...
>
> This code has a bug when executed at global scope.  Because the properties
> are on the prototype chain of the global object, 'var indexedDB' creates a
> new property on the global.  Then window.indexedDB finds the new property
> (which has the value undefined) instead of the IDBFactory on the prototype
> chain.  The result is that all of the pages that do this no longer work
> after we unprefix IndexedDB.

Just for reference, the correct way to do this is:

window.indexedDB = window.indexedDB || window.webkitIndexedDB ||
window.mozIndexedDB || window.msIndexedDB || ...

This avoids the var hoisting that's causing the problems.

~TJ

Received on Thursday, 9 August 2012 00:13:21 UTC