JavaScriptのTips

関連

一定の時間が経過してからなにかの処理をするには

setTimeout(function(){
  ...
}, 3000);

3000ミリ秒後に関数が呼び出される。

-> sleep

ローカルストレージ

値の読み出し

localStorage.getItem(key)

値の書き出し

localStorage.setItem(key, value)

読みだそうとして、まだそのキーが存在しない場合は null を返す。

key の部分には、文字列や配列なども使える模様(本当?)。

value の部分には本来は文字列だけでなく配列なども使える規格らしいが、現状のほとんどのブラウザでは文字列しかサポートされていないようで、文字列以外を与えても勝手に文字列に変換されてしまう。なので、以下のようにするとよい。

値の読み出し

JSON.parse(localStorage.getItem(key))

値の書き出し

localStorage.setItem(key, JSON.stringify(value))

getItemnull を返した場合は、JSON.parsenull を返す。

特定のキーを削除するには

localStorage.removeItem(key)

キーをすべて削除するには

localStorage.clear()

容量制限

ブラウザごとに容量の制限が決まっていて、それを超えて保存しようとすると、 setItem の呼び出しで QuotaExceededError 例外が発生する(Chromeで確認したが、他のブラウザでは未確認)。

入力ボックス(input)をクリックしたときにデフォルトでテキストが全選択状態になるようにするには

HTMLであればonclickに以下のように書いておく。

<input ... onclick="this.select();">

CoffeeScriptなら以下のように書いておく。

$('#...').click ->
  this.select()

他のページに遷移する前に特定の処理をするには

window.onbeforeunload = function(event){
  console.log("onbeforeunload");
  event = event || window.event;
  return event.returnValue = '別のページを移動しちゃおうとしてます。';
}

最後の行は、ページに遷移する前に確認画面を出して取り消せるようにしたい場合に必要。 event.returnValue にメッセージを入れないといけないブラウザと、戻り値でメッセージを文字列で返さないといけないブラウザがあるために、こういう書き方をしている。

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。