2 つのサイドバー (左側と右側) を持つ Web サイトを作成しました。
両方のサイドバーは、ajax.load()
関数 (leftside.html と rightside.html) を介してコンテンツを読み込みます。
左のサイドバーにはメニューがあります。誰かがメニュー リンクをクリックする'#mainside'
と、ハッシュ関数を使用してページを更新せずに div で開き、履歴を保存して、ブラウザの戻るボタンと 'history.back' が完全に機能するようにします。
これが私の実際のコードです。
leftside.html :
<div class="sidebars"><div id="ls"><ul>
<li><a href="#a.html" class="left-ajax">AAA</a></li>
<li><b href="#b.html" class="left-ajax">BBB</a></li></ul>
<ul class="submenu">
<li><a href="#c.html">CCC</a></li></ul>
</div>
</div>
mainside: ('a.html' または 'b.html' はデータをロードする必要があります)
<div id="mainside"></div>
現在、この JavaScript コードを使用してコンテンツをロードし、URL バーにハッシュを配置しています (ただし、履歴を保存することはできません)。
JavaScript:
var Anand = {
Config:{
animSpeed: 300,
screenDuration: 2500,
},
sideInit: function() {
$("body").on("click","#ls li >a", function(e){
e.preventDefault();
$("body").scrollTop(0);
var me = this;
Aanad.Util.showLoading(function() {
$.ajax({
url: $(me).attr("href").replace("#", ""),
success: function(r) {
$("#mainside").html(r);
setTimeout(function() {
Anand.Util.doneLoading();
}, 600);
}
});
});
});
$("body").on("click","#ls .submenu li >a", function(e){
e.preventDefault();
$("body").scrollTop(0);
var me = this;
Anand.Util.showLoading(function() {
$.ajax({
url: $(me).attr("href").replace("#", ""),
success: function(r) {
r = r + "<br/><br/><br/><br/>";
$("#mainside").html(r);
Anand.Util.doneLoading();
}
});
});
});
$(window).bind("hashchange", Anand.processHash);
},
processHash: function() {
hash = window.location.hash;
if (hash)
$(hash).click();
if (hash == "#home")
$("#home-button").click();
},
windowLoaded: function() {
if (window.location.hash && $(window.location.hash).length) {
Anand.processHash();
setTimeout(function() {
$("#preloader").fadeOut()
}, Anand.Config.screenDuration);
} else {
$(".sidebars li >a:first").click();
setTimeout(function() {
$("#preloader").fadeOut()
}, Anand.Config.screenDuration);
window.location.hash = "home";
}
},
Util: {
showLoading: function(callback) {
$(".loading-progress").hide();
$("#mainside *").unbind("click");
$("#mainside").fadeOut(Anand.Config.animSpeed);
setTimeout(function() {
callback();
}, 501);
},
doneLoading: function(callback) {
$(".loading-progress").hide();
$("#mainside").fadeIn(Anand.Config.animSpeed, function() {
$(this).scrollTop(0);
callback();
});
},
activateMenu: function(el) {
$(document).ready(function() {
$(".sidebars li >a").removeClass("active");
$(el).addClass("active");
$("#ls-" + $(el).attr("id")).addClass("active");
Anand.Util.silentHashChange($(el).attr("id") != undefined ? $(el).attr("id") : "")
$("body, html").scrollTop(0);
});
},
silentHashChange: function(hash) {
$(window).unbind("hashchange");
window.location.hash = hash;
setTimeout(function() {
$(window).bind("hashchange", Anand.processHash);
}, 100);
}
}
};
$(document).ready(Anand.sideInit);
このコードを使用すると、リンクはターゲットをロードでき'#mainside'
、ハッシュ関数も正常に機能します。しかし、戻るボタンを使用すると、ページのコンテンツを前のハッシュに変更することなく、現在のハッシュを前のハッシュに変更するだけです。
「bbq」も試しましたが、結果は「0」です。
私を助けてください...
感謝と敬意