3

簡単なプロトタイプを作成するために jQuery BBQ プラグインを正常に実装しましたが、特定のセットアップに関連する小さな問題が 1 つあります。

  • ページの 1 つである"#catalogue"には、関数"randomItems()"を使用してランダムに生成されたアイテムのグリッドが含まれており、hashchange (別のページから来た場合) でトリガーされます。
  • 次に、ユーザーはグリッド内のこれらのアイテムのいずれかをクリックして、#detailspageを表示します。
  • ブラウザーの [戻る] ボタンをクリックすると、ユーザーに#catalogueページ (正常に動作します) を表示してもらいたいのですが、ページがオンロードでランダムなアイテムの新しいセットを生成しないようにします (そのため、最後に表示されたアイテムを保持します)。

ユーザーが戻るボタンを押したことを知る方法はありますか?その場合、「randomItems()」関数をトリガーしませんか?

4

3 に答える 3

0

ブラウザのローカル ストレージを使用してアイテムを保存します。まず、オブジェクトの JavaScript 表現を作成します。次に、localStorage に格納します。ページ読み込み時に取得します。ストレージはキーと値のペアのみを受け入れるため、複雑なオブジェクトを文字列化して格納する必要があることに注意してください

一般的なパターンはこちら

var foo;
window.onpageload = function(){
   if(localStorage["foo"] == '' | localStorage["foo"] == undefined){
     foo = getrandomItems(); //possibly an ajax call;
     localStorage["foo"] = JSON.stringify(foo);
   else{
     foo = JSON.parse(localStorage["foo"]);
   }
};

詳細については、 http://diveintohtml5.info/storage.htmlおよびHTML5 localStorageへのオブジェクトの保存を参照してください。

于 2013-06-14T00:46:58.907 に答える
0

bbq を使用すると、URL パラメーターを設定および取得できると信じてください。これらを使用して、ランダム化が必要かどうかを判断できます。ユーザーがカタログへのリンクをクリックすると、URL は次のようになります。

http://yoururl.com/#catalog

したがって、これはカタログの「ルート」URL であり、URL がこれである場合はいつでもアイテムをランダム化します。アイテムをランダム化した後、URL にパラメーターを追加して、次のようにします。

http://yoururl.com/#catalog?r=1

このように、ユーザーが離れてアイテムを見てからクリックして戻ると、履歴 URL に が含まれるためr=1、ランダム化機能は処理されません。

function randomiseItems()
{
  // we do not want to randomise
  if(urlParamIsSet("r")) return; 

  // set url param so gets stored in history (replacing current url)
  urlSetParam("r",1); 

  //-- do your code here
}

urlParamIsSet/urlSetParamURLを操作するためにbbqが提供する機能を使用する代わりに。

于 2013-07-09T03:59:54.607 に答える