[英]Unable to load external page inside active with local storage to return to last active on refresh
Post bounty update:发布赏金更新:
With Bootstrap-4 tab, I want to load external page inside active tab.
使用 Bootstrap-4 选项卡,我想在活动选项卡中加载外部页面。 And, if page is refreshed it should return to last active tab.
而且,如果页面被刷新,它应该返回到最后一个活动选项卡。
With Bootstrap navs
, I was trying to load external page inside active div.使用 Bootstrap
navs
,我试图在活动 div 中加载外部页面。 And, if page is refreshed it should return to the last active tab.而且,如果页面被刷新,它应该返回到最后一个活动选项卡。 So, I stored last active tab in
localstorage
and with that the active tab can be activated.因此,我将最后一个活动选项卡存储在
localstorage
中,并且可以激活活动选项卡。
In the mean time, if load a eternal page take a while so i added bootstrap spinner
and here is the code,同时,如果加载一个永恒的页面需要一段时间,所以我添加了
bootstrap spinner
,这是代码,
$(document).ready(function() { $('a[data-toggle="tab"]').on('shown.bs.tab', function(e) { localStorage.setItem('activeTab', $(e.target).attr('href')); var $this = $(this), loadurl = $this.attr('href'), targ = $this.attr('data-target'); $.get(loadurl, function(data) { $(targ).html(data); }); $this.tab('show'); $("#tabsp").hide(); return false; }); var activeTab = localStorage.getItem('activeTab'); if (activeTab) { $('.nav-tabs a[href="' + activeTab + '"]').tab('show'); var $this = $(this), loadurl = $this.attr('href'), targ = $this.attr('data-target'); $.get(loadurl, function(data) { $(targ).html(data); }); $this.tab('show'); $("#tabsp").hide(); return false; } });
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.0/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.0/js/bootstrap.min.js"></script> <ul class="nav nav-tabs" id="myTab" role="tablist"> <li class="nav-item"> <a href="/dashboard/proinfo.php" data-target="#home" class="nav-link active" id="contacts_tab" data-toggle="tab"> Info </a> </li> <li class="nav-item"> <a href="/dashboard/ads.php" data-target="#ads" class="nav-link" id="ads-tab" data-toggle="tab"> Ads </a> </li> <li class="nav-item"> <a href="/dashboard/favor.php" data-target="#fav" class="nav-link" id="fav-tab" data-toggle="tab"> Favorites </a> </li> <li class="nav-item"> <a href="/dashboard/sold.php" data-target="#sol" class="nav-link" id="sol-tab" data-toggle="tab"> Sold </a> </li> </ul> <div class="tab-content profile-tab" id="myTabContent"> <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="contacts_tab"> </div> <div class="tab-pane fade" id="ads" role="tabpanel" aria-labelledby="ads-tab"> </div> <div class="tab-pane fade" id="fav" role="tabpanel" aria-labelledby="fav-tab"> </div> <div class="tab-pane fade" id="sol" role="tabpanel" aria-labelledby="sol-tab"> </div> <div class="text-center" id="tabsp"> <div class="spinner-border text-primary" role="status"> <span class="sr-only">Loading...</span> </div> </div> </div>
I was trying to add the following,我试图添加以下内容,
While visiting
index_file.php
for the first time, I can view only the bootstrap spinner, which means IF there is nolocalstorage
第一次访问
index_file.php
时,我只能查看 bootstrap spinner,这意味着如果没有localstorage
How do I solve this problem?我该如何解决这个问题?
This should solve your problems, but I can't fully test it.这应该可以解决您的问题,但我无法完全测试它。
var defaultTab = 'contacts_tab'; $(document).ready(function() { $('a[data-toggle="tab"]').on('shown.bs.tab', function(e) { var tabEl = $(e.target); saveIntoLocalStorage(tabEl.attr('id')); loadPage(tabEl); }); var tabToActivate = loadFromLocalStorage(); loadPage(tabToActivate); }); function loadFromLocalStorage() { var activeTab = localStorage.getItem('activeTab'); if (activeTab) { return $("#" + activeTab); } else { saveIntoLocalStorage(defaultTab); return $("#" + defaultTab); } } function saveIntoLocalStorage(id) { localStorage.setItem('activeTab', id); } function loadPage(tabEl) { debugger; var $this = $(this), loadurl = tabEl.attr('href'), targ = tabEl.attr('data-target'); $.get(loadurl, function(data) { $(targ).html(data); }); $this.tab('show'); $("#tabsp").hide(); return false; }
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.0/css/bootstrap.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.0/js/bootstrap.min.js"></script> <ul class="nav nav-tabs" id="myTab" role="tablist"> <li class="nav-item"> <a href="/dashboard/proinfo.php" data-target="#home" class="nav-link active" id="contacts_tab" data-toggle="tab"> Info </a> </li> <li class="nav-item"> <a href="/dashboard/ads.php" data-target="#ads" class="nav-link" id="ads-tab" data-toggle="tab"> Ads </a> </li> <li class="nav-item"> <a href="/dashboard/favor.php" data-target="#fav" class="nav-link" id="fav-tab" data-toggle="tab"> Favorites </a> </li> <li class="nav-item"> <a href="/dashboard/sold.php" data-target="#sol" class="nav-link" id="sol-tab" data-toggle="tab"> Sold </a> </li> </ul> <div class="tab-content profile-tab" id="myTabContent"> <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="contacts_tab"> </div> <div class="tab-pane fade" id="ads" role="tabpanel" aria-labelledby="ads-tab"> </div> <div class="tab-pane fade" id="fav" role="tabpanel" aria-labelledby="fav-tab"> </div> <div class="tab-pane fade" id="sol" role="tabpanel" aria-labelledby="sol-tab"> </div> <div class="text-center" id="tabsp"> <div class="spinner-border text-primary" role="status"> <span class="sr-only">Loading...</span> </div> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.