2017-04-06 14 views
0

私はAJAXコンテンツを扱っています。基本的には1ページに多数の製品があり、製品をクリックすると、ページをリロードせずに製品に移動します。製品UPCはハッシュとして追加されます。問題は、ユーザーが戻るボタンをクリックしたときに機能しないことです。ユーザーは現在、ブレッドクラムを使用して前に戻る必要があります。AJAXコンテンツでハッシュ変更が検出された場合、ページをリロードする方が良いでしょうか?

私の解決策は、機能するハッシュ変更機能のウィンドウを使用することでしたが、前進するときにページを強制的にリロードするように強制しました。 AJAXの目的を破るのは一種です。ユーザーが下のボタンをクリックして、私が現在使っていることをハッシュ値で取得するよりも、ページの最後の項目にナビゲートする方がいいですか?ここで

$(window).on('hashchange', function() { 
    var hash = window.location.hash; 
    var fullURL = window.location.href = "http://www.test.com/product-categories/test.php" + hash; 
    if (fullURL) { 
     location.reload(); 
    } 
}); 
+1

History.pushState APIを使用します。この方法であなたのコンテンツを履歴に保存し、ユーザーは前後に移動できます - https://code.tutsplus.com/tutorials/an-introduction-to-the-html5-history-api--cms-22160 –

+1

i http://sammyjs.org/がこれに役立つと思います – ryan

+0

これらは両方とも有望です! – Tom

答えて

1

を使用すると、履歴API

function loadProduct(productid, reload){ 
 
    $.ajax({ 
 
    ... 
 
    ... 
 
    data: {productId : productid}, 
 
    success:function(){ 
 
     if(!reload) { 
 
      History.pushState('productName', { productId : productid }, '#' + productId) 
 
     } 
 
    } 
 
    }) 
 
} 
 

 
$(product).on('click', function(){ 
 
    loadProduct(productId , true) 
 
}); 
 
$(window).on('popstate', function(){ 
 
    loadProduct(e.state.productId, false); 
 
});

あなたが製品に製品IDたびにユーザーがクリックを保存します。この方法でそれを行うことができる方法です。 &に戻ると、ストアドプロダクトIDが取得され、リロードされます。

+0

ありがとうございます!これは私の必要性のために完全に動作するように見えます。感謝します! – Tom

+0

このプラグインをJSONでどのように使用しますか?それも可能ですか? – Tom

+0

はい、jsonデータをpushStateに格納できます。しかし、ここで述べたように、ブラウザのドキュメントには何も言及されていません。http://stackoverflow.com/a/22214096/1911146 –

関連する問題