Java Spring Framework に Ajax ベースのタブ切り替えアプリケーションがあり、戻るボタンのシナリオを処理する必要があります。以下のコードを指定することで正常に実行されました。現在、直面している効果は、タブ切り替えジャンプよりも最初のページ読み込みであり、特定の履歴が選択されたタブに表示されます。誰かがこれに関して助けてくれたら、それは素晴らしいことです。
var innerTab = "";
function navigateAjaxHtmlSetup(target,response){
if (typeof target == 'undefined')
target = "#ajax-container";
$(target).html(response);
$("input[check-with-select]:checked").parent("label").parent("td").nextUntil(":last").find('select').attr('required', 'required');
$(target).focus();
$("#ajax-loader").hide();
}
function pushStateToHistory(){
var history = window.history;
var location = window.location.pathname;
history.pushState({}, "GHFP", location+activeTabs());
}
function anchorAjaxCall(self,url,state){
$.ajax({
type: 'GET',
url: url,
dataType: "html",
success: function (response) {
var target = self.attr('targeto');
navigateAjaxHtmlSetup(target,response);
if (state)
pushStateToHistory();
// if(innerTab != ""){
// var anchor = $("a#"+innerTab);
// innerTab = "";
// anchorAjaxCall(anchor,anchor.attr('href'));
// }
}
});
}
function activeTabs(){
selectedTabList = $(".tabs-nav a.active");
var activeURL;
if (selectedTabList.length > 0){
activeURL="#";
selectedTabList.each(function(index,el){
activeURL +="/"+$(el).attr('id');
});
}else{
activeURL="";
}
return activeURL;
}
function urlAjaxNavigationHandling(hash){
if (hash.indexOf('/')!=-1)
{
var selectedTabList = hash.substring(1,hash.length).split('/');
var anchor = $("a#"+selectedTabList[1]);
anchorAjaxCall(anchor,anchor.attr('href'),false);
if (selectedTabList.length > 1)
innerTab = selectedTabList[2];
}
}
window.onpopstate = function(e) {
urlAjaxNavigationHandling(window.location.hash);
};
私の質問はSpringやJavaとはまったく関係がありませんでしたが、Ajaxベースアプリケーションを実装するためにグーグルで検索した場合は、それらをタグとして指定するだけです。Ruby on RailsとしてのSpring FrameworkのJQueryの組み込みサポートが見つからなかったので、これは彼を助けるかもしれません