javascript - 刷新后保存当前事件选项卡

标签 javascript html

我有更改事件类别并在其下应用地下风格的菜单:

我的代码片段:

(function() {
  var tabs = document.getElementsByClassName('tab');

  for (i = 0; i < tabs.length; i++) {

    tabs[i].addEventListener('click', function(e) {
      removeActive();
      e.target.classList.add('active');
    })
  }
})();


function removeActive() {
  var tabs = document.getElementsByClassName('tab');
  for (i = 0; i < tabs.length; i++) {
    tabs[i].classList.remove('active')
  }
}
 .myTabs {
   border: 1px solid #797979;
   background: #ffffff;
   background: -moz-linear-gradient(top, #ffffff 0%, #d6d6d6 100%);
   background: -webkit-linear-gradient(top, #ffffff 0%, #d6d6d6 100%);
   background: linear-gradient(to bottom, #ffffff 0%, #d6d6d6 100%);
   filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#d6d6d6', GradientType=0);
 }

 .myTabs a {
   color: #000000;
   border-left: 1px solid #797979;
   display: block;
   padding: 5px 10px;
   float: right;
   text-decoration: none;
 }

 .myTabs a:hover {
   background: #ffffff;
   background: -moz-linear-gradient(top, #d6d6d6 0%, #ffffff 100%);
   background: -webkit-linear-gradient(top, #d6d6d6 0%, #ffffff 100%);
   background: linear-gradient(to bottom, #d6d6d6 0%, #ffffff 100%);
   filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#d6d6d6', endColorstr='#ffffff', GradientType=0);
   text-decoration: none;
 }

 .myTabs a:active,
 .myTabs a:visited {
   text-decoration: none;
 }

 .myTabs a.active {
   /*box-shadow: 0px 5px 0px grey;*/
   background: #ffffff;
   background: -moz-linear-gradient(top, #c3c3c3 0%, #ffffff 100%);
   background: -webkit-linear-gradient(top, #c3c3c3 0%, #ffffff 100%);
   background: linear-gradient(to bottom, #c3c3c3 0%, #ffffff 100%);
   filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#c3c3c3', endColorstr='#ffffff', GradientType=0);
   text-decoration: none;
 }
 <div class="myTabs">
         <div style="float:left; margin:5px;">
           Load
          </div>
           <a href="#bonos" class="tab" aria-controls="bonos" role="tab" data-toggle="tab">tab3<a>
           <a href="#empleados" class="tab" aria-controls="empleados" role="tab" data-toggle="tab">tab2</a>
           <a href="#puestos" class="active tab" aria-controls="puestos" role="tab" data-toggle="tab">tab1</a>
                        <div style="clear:both;"></div>
                    </div>

我想要实现的目标是,例如,如果我当前的选项卡是“Tab3”并且我刷新页面。继续使用 Tab3,而不是刷新全部并再次返回 Tab1。

我需要做什么才能实现这个目标?问候

最佳答案

有两种不同的方式,一种是cookie,另一种是localstorage。对于这样的事情,我会使用 localstorage,这样您就不会根据请求发送 activetab。但是,某些浏览器/计算机不支持 localStorage,因此您可以使用上面的 cookie 代码。

下面是 localStorage 的 JS Fiddle,它也保存事件选项卡。

有任何问题请随时提问。

JSFiddle - LocalStorage

这是部分代码:

if (typeof(Storage) !== "undefined") {
   if (localStorage.lastTab == undefined) localStorage.setItem("lastTab",0);
   var i = localStorage.lastTab;
   $('.fakeTabs > li').removeClass('active').eq(i).addClass('active');
} else {
   // This will not save an active tab unless you use cookies but why waste the space.
} 

关于javascript - 刷新后保存当前事件选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48938986/

相关文章:

javascript - 一次调用数组中的多个元素?

javascript - 为什么我的 HTML 表在使用 ajax 刷新时会丢失引导数据表属性?

javascript - 如何解决并非所有代码路径都返回值的问题?

regex - 仅在 HTML5 输入表单中匹配每个 Unicode 字母

php - 技巧问题;显示 'nr of results' 的 MySql 搜索

css - 如何将百分比值分配给 div 以将整个页面分成 3 个部分,主体高度 = 窗口高度

javascript - 在没有某些 div 的情况下淡入背景

javascript - 具有数据绑定(bind) URL 的 ExtJS 存储不会重新评估数据属性

javascript - 在 contentEditable 中将 HTML 转换为纯文本

javascript - 在正则表达式中: SyntaxError: Unexpected token ]