ブラウザを解決してajax要求を覚えて、前進と後退の問題ができます。
私たちは違うページを見ています。ブラウザの前進、後退ボタンを通じて前と後ろのページに来ます。これには共通点があります。ブラウザのアドレスバーの住所が変わったということです。ブラウザ自体はユーザーのページ履歴を記録するスタックを維持しており、スタックにはユーザーが異なるページにアクセスする順序が記録されている。
しかし、開発の中で、私達はよくajax技術を使ってウェブページのユーザー体験を高めます。しかし、ajax自身はブラウザのアドレスバーのurlを変えません。同じウェブページの内部で操作します。この時、ブラウザはajax要求の記録を記録しません。この場合、ユーザは、一つのページでトリガされた5回のajax要求後に、後退ボタンをクリックしたが、ブラウザは再び前のajax要求を要求することなく、前のページに戻った。
この問題を解決する最初の方法はlocationのhash値を利用することです。urlのhash値が変わると、ページはジャンプしませんが、ブラウザはこのhash付きurlを履歴に記録します。この特性を利用して、私達は人工的にアナログバンド履歴機能のajax要求を持つことができます。次はこの方法のデモです。
これと同時に、ボタンの状態を変え、locationのhash値をdata-indの値に変更します。最後にlocationのhash値の変化を傍受し、上記のステップを繰り返します。
以上述べたのは小编がみんなに绍介したので、ブラウザにajaxの要求を覚えさせて、そして前进と后退の方法(一)を覚えさせて、みんなに助けがあることを望んで、もしみんなはいかなる疑问があるならば、メッセージを下さい。小编は直ちにみんなのに返答します。ここでも私たちのサイトを応援してくれてありがとうございます。
しかし、開発の中で、私達はよくajax技術を使ってウェブページのユーザー体験を高めます。しかし、ajax自身はブラウザのアドレスバーのurlを変えません。同じウェブページの内部で操作します。この時、ブラウザはajax要求の記録を記録しません。この場合、ユーザは、一つのページでトリガされた5回のajax要求後に、後退ボタンをクリックしたが、ブラウザは再び前のajax要求を要求することなく、前のページに戻った。
この問題を解決する最初の方法はlocationのhash値を利用することです。urlのhash値が変わると、ページはジャンプしませんが、ブラウザはこのhash付きurlを履歴に記録します。この特性を利用して、私達は人工的にアナログバンド履歴機能のajax要求を持つことができます。次はこの方法のデモです。
ul{
margin:0;
padding:0;
}
li{
list-style: none;
display: block;
float: left;
border: 1px solid #000;
padding: 10px;
margin-right: 20px;
cursor: pointer;
}
li.active{
background-color: #000000;
color: #fff;
}
<ul>
<li data-id="1">1</li>
<li data-id="2">2</li>
</ul>
まず二つのボタンを作成し、ボタンをクリックするとサーバに要求を送信し、data-indをパラメータでサーバに持ち込み、サーバはdata-indに対応する結果を返します。これと同時に、ボタンの状態を変え、locationのhash値をdata-indの値に変更します。最後にlocationのhash値の変化を傍受し、上記のステップを繰り返します。
function sendAjax(hash){
console.log("recived data:" + hash);
}
function btnStatus(hash){
$("li").removeClass('active');
$("li[data-id="+hash+"]").addClass('active');
}
function onHashChange(){
var curHash = window.location.hash.replace("#","");
if(curHash){
btnStatus(curHash);
sendAjax(curHash);
}
}
window.onhashchange = onHashChange;
$("li").click(function(){
var id = $(this).attr('data-id');
window.location.hash = id;
});
「1-2-1」という順番でボタンを押すと、コンソールの出力は以下の通りです。
recived data:1
recived data:2
recived data:2
この時私達は連続して3回押して戻るボタンを押して、コンソールの出力は以下の通りです。
recived data:1
recived data:2
recived data:1
これにより、シミュレーションはブラウザ記録ajax要求の機能を実現することができる。以上述べたのは小编がみんなに绍介したので、ブラウザにajaxの要求を覚えさせて、そして前进と后退の方法(一)を覚えさせて、みんなに助けがあることを望んで、もしみんなはいかなる疑问があるならば、メッセージを下さい。小编は直ちにみんなのに返答します。ここでも私たちのサイトを応援してくれてありがとうございます。