忍者ブログ

03May

[PR]

Posted by in

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

19May

画面の変更内容を履歴に保存する。

Posted by No Name Ninja in Javascript Sample

画面の変更内容を履歴に保存します。
ブラウザの履歴で画面を戻られたときに直近の画面状態を表示させることができます。
SAMPLE
Firefox 12.0
Safari 5.0
Chrome 19.0
I.E. 9.0 ×

<script>

var data = new Array();

window.onload = function(){
  document.getElementById('next').onclick = save;
}

/**
 * 履歴操作した際に実行するイベント
 */
window.onpopstate = function(event){
  if(!event.state) return;
  data = event.state.input;

  document.forms['testForm'].elements['testText'].value = data[data.length -1];
  updateHistory();
}

/**
 * ブラウザの履歴に追加
 */
function save(){
  var val = document.forms['testForm'].elements['testText'].value;
  data.push(val);
  window.history.pushState({input:data},val, '?input=' + val);
  updateHistory();
}


/**
 * 履歴を更新する。
 */
function updateHistory(){
/**
  var dataString = '';
  for(i=0; i<data.length;i++){
    dataString = dataString +  data[i] + '<br/>';
  }
*/
  document.getElementById('testDiv').innerHTML = data.join('<br/>');
}
</script>

1.履歴の戻る・進むを実行されたときに実行されるイベントハンドラです。
履歴ページごとに保存したjavaオブジェクトを取り出し、画面の再現処理をしています。

2.履歴にjavaオブジェクトを保存しています。
history.replaceState()で現在の履歴エントリを更新することもできます。
PR

Comment


Vodafone絵文字 i-mode絵文字 Ezweb絵文字