localStorageで空の値を入れるとIE8がクラッシュする件

category-icon

 こんにちは。そろそろppBlogにもlocalStorageGに対応したスクリプトを組み込もうかと思っていますが、IE8で空(から)の値を入れるとブラウザがクラッシュして終了する現象に遭いました。MacBook Pro上のVMware Fusionに入れたWindows7 RC版IE8で発生します。正規版だとOKなのかなぁ。

 簡単なデモを用意しました(IE8ならクラッシュしても良い状態でアクセス)。→http://p2b.jp/demo/localStorage.html

 Firefox3.5では値が空でもエラーも何も起きませんが、IE8では即座にクラッシュです。そのスクリーンショットをば。適当なキーを設定して(例えば「foo」)、値を何も設定せずに「追加」ボタンを押すと発生。

IE8-crashed
クラッシュしても自動的に復元されますが・・・。

上記ページのスクリプトはごくシンプルなもの。

if(typeof localStorage != "object"){
 if(typeof globalStorage == "object"){ // Firefox2 possible
  localStorage = globalStorage[location.hostname];
 } else alert("お使いのブラウザはこのスクリプトに対応していません。");
}

function addItem(){
 var key = document.getElementById("key").value;
 var value = document.getElementById("value").value;
 window.localStorage[key] = value;
}

 空の値かどうかチェックすれば済む話ですが。

関連エントリー(解決編?)

  ■http://p2b.jp/200912-localStorage-crashes-IE8-with-empty-value-part2

 

— posted by martin at 09:36 pm   commentComment [2]  pingTrackBack [1]

この記事に対するコメント・トラックバック [3件]

scrollUp1. BENIT — 2009/12/16@22:32:41

ご無沙汰してます。BENITです。
更新したいなぁしたいなぁ、と思いつつ、テーマのCSS修正に時間がとれず、なかなか最新版にできていない状況です。。。

さて、エントリの内容ですが、正式版のIE8でもばっちり落ちました。Vista 64bit上になります。
ただ、クラッシュリカバリの機能がすぐに働いてすべて元に戻り、大事に至らないようになったのはちょっと驚きましたが(笑

Owner Comment martin Website  2009/12/17@02:21:03

こんばんは。ご報告ありがとうございます。Vista版でもですか。ユーザーが空の値をセットしうるというのは十分に想定できる気もしますが、ちょっと意外ですねぇ。
確かに、クラッシュリカバリーは何事もなかったかのように復帰しますね。

3. 何かできるまでのとんでもなく遠回りな道のり Website — 2010/12/07@18:46:27

はじめに 最近html5のことをよく調べているので、メモ書きしていたURLが溜まってきてしまった。ずっとメモとして置いておくよりも外に出してしまおうと思ったので列挙してみる。これでメモも綺麗さっぱりになる。 概要を知る http://www.html5.jp/Link やはりまずはここから…
続き »

この記事に対する TrackBack URL:

設定によりTB元のページに、こちらの記事への言及(この記事へのリンク)がなければ、TB受付不可となりますのであらかじめご了承下さい。

コメントをどうぞ。 名前(ペンネーム)と画像認証のひらがな4文字は必須で、ウェブサイトURLはオプションです。

ウェブサイト (U):

タグは使えません。http://・・・ は自動的にリンク表示となります

:) :D 8-) ;-) :P :E :o :( (TT) ):T (--) (++!) ?;w) (-o-) (**!) ;v) f(--; :B l_P~

     
T: Y: ALL: Online:
Created in 0.0508 sec.
prev
2012.5
next
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31