W3C home > Mailing lists > Public > public-webapps@w3.org > July to September 2009

Re: Web Storage how to check for support?

From: Garrett Smith <dhtmlkitchen@gmail.com>
Date: Thu, 6 Aug 2009 00:08:36 -0700
Message-ID: <c9e12660908060008v3c46d172rda47c33f439c1bc9@mail.gmail.com>
To: Darin Adler <darin@apple.com>
Cc: (wrong string) ありがとうございました" <j.chetwynd@btinternet.com>, WebApps WG <public-webapps@w3.org>
2009/8/5 Darin Adler <darin@apple.com>:
> On Aug 5, 2009, at 9:42 PM, Jonas Sicking wrote:
>
>> 2009/8/1 Joo Eiras <joaoe@opera.com>:
>>>
>>
>>>> How can one in a script check for UA support?
>>>> else if(localStorage){}
>>>> does not work for Opera**.
>>>
>>> This obviously does not work because you need to prefix localStorage with
>>> window "if(window.localStorage)" else the script breaks because localStorage
>>> is a undefined identifier while window.localStorage looks up a property in
>>> the window. Different things, specific to ecmascript itself.
>>
>> No, the window object is the global object where all global variables are
>> defined. Try the following:
>>
>> <script>
>> a = 10;
>> alert(window.a);
>> </script>
>

There is no variable declaration there.

> I think the point is that if there is no global variable of name "x", then
> "window.x" yields undefined, whereas "x" yields an exception.
>
> That means that one way to check for the localStorage object is:
>
>  if (window.localStorage) {
>    // Code using localStorage here.
>  }
>
> If you instead do:
>
>  if (localStorage) {
>    // Code using localStorage here.
>  }
>
> Then you end up with code that simply throws an exception in browsers that
> dont have localStorage.
>

Correct.

The 'typeof' operator would be another good option here.

Type converting and even getting host object properties has been the
source of errors in IE.

For example:-

javascript: var op = document.createElement("div").offsetParent;

- errs in IE.

The typeof operator can be used to avoid such errors.

if(typeof window.localStorage != "undefined"){
 // property is not undefined.
}

Considerations of usage context are important and relevant. Good question.

>  -- Darin
>
>
>

Regards,

Garrett
Received on Thursday, 6 August 2009 07:09:17 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:33 GMT