私は自分のプロジェクトに取り組んできました- 完全な (重要な) JavaScript はここにあります。ユーザーがブラウザの前と次のボタンを使用してナビゲートできるように、 history.jsを含めたいと考えています。また、生成された URL が存在しなくてもアクセスできるようにしたいと考えています。これらの URL は履歴 API によって生成されるため、HTML ドキュメントにはリンクされません。
私がすでに行ったこと
プラグインのAPI Exposed セクションを見て、Mozilla のドキュメントを読んで、これを機能させることができました。
- インターフェイスの次、前、およびベース リンクを使用してナビゲートするときに、URL が正しい
- インターフェイスの次、前、および基本リンクを使用してナビゲートするときにタイトルが正しい
このための (簡略化された) コードは次のとおりです。
document.title = $(".parentSection.base").data("title");
// Going forward
var nextClick = $("a.next_link");
nextClick.click(function(d) {
var nUrl = parentSection.next().data("url");
History.pushState(null, null, nUrl) ;
document.title = parentSection.next().data("title");
d.preventDefault();
});
// Going backwards
var prevClick = $("a.prev_link");
prevClick.click(function(e) {
var pUrl = parentSection.prev().data("url");
History.pushState(null, null, pUrl) ;
document.title = parentSection.prev().data("title");
e.preventDefault();
});
// Going to "Base" position
var baseClick = $("a.base_link");
baseClick.click(function(f) {
var bUrl = $(".parentSection.base").data("url");
History.pushState(null, null, bUrl);
document.title = $(".parentSection.base").data("title");
f.preventDefault();
});
これは正常に機能します。
やり遂げられそうにないこと
これは非常にうまく機能しますが、最終的な機能がなければ役に立ちません:
- URL が生成されるようになりましたが (例:など)
/lamp
、/desk
ユーザーがこれらのリンクのいずれかに直接アクセスすると (または単にページをリロードすると)、URL が存在しないというメッセージが表示されます。 - ブラウザーのナビゲーション ボタンはクリック可能ですが (それに応じて URL が変更されます)、コンテンツはまったく変更されません。
誰でもこれについてフィードバックをいただけますか? 腰が痛いほど長い間これに取り組んでいます。
私はcjhvealによって提供されたコードから作業しようとしましたが、これまでのところこれを取得しました(テスト目的のためだけに):
History.Adapter.bind(window,'statechange',function(){
var State = History.getState();
History.log(State.data, State.title, State.url);
$(".parentSection[data-url='" + State.title + "']").css({
"left": "0",
"top": "0"
});
});
奇妙なことに、History.js で正しいタイトルにログを記録できません... ページをログに記録すると、 "lamp", "bramvanroy.be/fullScreenSection/lamp"
(それぞれtitle
と) のように返されますが、セクションのオブジェクトでurl
定義されているタイトルを取得する必要があります。data-title
それでも、セクションで定義されているようにtitが機能するようにコードを調整しましたが、返さdata-url
れる属性と同じtitle
ですが、それでも何も起こりません!