2016년 12월 31일 토요일
History
History API
・ブラウザの履歴数取得
・ブラウザの履歴の一つ前に戻る
・ブラウザの履歴の一つ先に進む
・指定の回数分、履歴を前後する
・指定のurlを履歴に追加
・指定のurlを今の履歴に上書き
・window.history.length;
・window.history.back();
・window.history.forward();
・window.history.go($前後の回数);
・window.history.pushState($state, $title, $追加履歴);
・window.history.replaceState($state, $title,$上書き履歴);
--------------------------------------------------------------
<div>
historyLength : <span id="historyLength"></span>
<br>
<button id="back">back</button>
<br>
<a href="#" id="forward">forward</a>
<br>
<input type="button" value="go" id="go" />
<br>
<input type="text" id="pushState"/>
<br>
<button id="replaceState">replaceState</button>
</div>
<script type="text/javascript">
(function () {
$({id:'historyLength'}).innerHTML = window.history.length;
// タグ名でエレメントを取得
var btns = $({tagName:'button'});
var aTag = $({tagName:'a'});
var inputTag = $({tagName:'input'});
// button, aタグ, inputタグを配列でforEach関数呼び出す
forEach([btns, aTag, inputTag]);
/*
* タグ配列を数分、イベントリスナー登録
*/
function forEach(tagArray) {
// タグ配列分、ループ処理
tagArray.forEach(function (item, index, array) {
// タグ配列の要素数分、ループ処理
for (var idx = 0; idx < item.length; idx++) {
var el = item[idx];
// INPUTタグ かつ ボタン以外はイベント登録なし
if (el.tagName === 'INPUT' && el.type !== 'button') {
return;
}
// イベントリスナー登録処理
el.addEventListener('click', function () {
// 上記で判定しているため、不要だが、
tagName判断処理を作成したいため、書いておく
if ('BUTTON' === event.target.tagName
|| 'A' === event.target.tagName
|| 'button' === event.target.type) {
historyExe();
}
});
}
});
}
/*
* 履歴関連処理
* @returns {undefined}
*/
function historyExe() {
debugger;
var id = event.target.id;
var func = "window.history." + id + "()";
eval(func);
};
/*
* 指定オブジェクトからエレメントを取得
*/
function $(obj) {
debugger;
if(obj['id']){
return document.getElementById(obj['id']);
}
if(obj['tagName']){
return document.getElementsByTagName(obj['tagName']);
}
}
})();
</script>
----------------------------------------------------------------
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기