iPad(OS3.2)のSafari で window.localStorage.setItem() を連続で使うと、QUOTA_EXCEEDED_ERRが出てスクリプトがそれ以降実行されなくなる症状にあいました。

調べてみると、dankogaiさんも同じ症状に遭遇している様子。それで見ると、removeItem() すると回避できるのだとか。

加えて、エラー処理しておくと親切かなぁと思いました。それで、try ... catch の良い例を調べていたら、try ... catch のサンプルに、removeItem() が書き加えられてますね。

[抜粋]
  function setItem(key, value) {
    try {
      log("Inside setItem:" + key + ":" + value);
      window.localStorage.removeItem(key);
      window.localStorage.setItem(key, value);
    }catch(e) {
      log("Error inside setItem");
      log(e);
    }
    log("Return from setItem" + key + ":" +  value);
  }

そもそも、window.localStorage の変数って書き換え回数の制限でもあるのかな?頻繁な値の書き換えはそもそも問題?あるいはバグ?