Javascript Href#页面上的链接要求在浏览器上按两次后退按钮

Javascript Href#页面上的链接要求在浏览器上按两次后退按钮,javascript,html,css,Javascript,Html,Css,我在一个页面上有一些选项卡,有一个href可以访问页面的特定部分 <a class="page_link" href="#tabA">Section1</a> 我需要关闭和打开选项卡,但没有弹出历史记录或替换它的内容,这是缺少的 const openPanel = (self, link, target) => { closeActiveTab(self); link.classList.add('activeTab'); link.setAttr

我在一个页面上有一些选项卡,有一个href可以访问页面的特定部分

<a class="page_link" href="#tabA">Section1</a>
我需要关闭和打开选项卡,但没有弹出历史记录或替换它的内容,这是缺少的

const openPanel = (self, link, target) => {
  closeActiveTab(self);

  link.classList.add('activeTab');

  link.setAttribute('aria-selected', 'true');
  target.classList.add('activeTab');
  target.setAttribute('aria-hidden', 'false');

};

const closeActiveTab = (el) => {
  const tabs = el.getElementsByClassName('activeTab');
  while (tabs.length) {

    const selTab = tabs[0];

    selTab.classList.remove('activeTab');
    selTab.setAttribute('aria-selected', 'false');
  }

};

最好的方法是尝试根本不改变url。您可以滚动到锚节或显示选项卡,而无需更改页面哈希。当然,如果不需要的话


如果需要在url中包含哈希,可以使用
history.replaceState()
而不是
history.pushState()
。此方法将替换当前状态,要返回,您可以按一次“返回”按钮。

您没有发布足够的信息让我们知道。也许您正在使用某种框架来更改选项卡?能否请您共享其余代码。根据给定的信息,我看不到我的侧边有问题您好,抱歉,我已经更新了它。如果您右键单击chrome中的后退箭头,您可以看到您是否已被重定向到同一位置两次,这可能是原因,值得检查。如果我只需浏览页面上的一个选项卡并单击后退,则此功能有效。如果我点击两个标签,然后返回,它不会返回到第一个标签,它会返回到我来自的页面?但进展:)如果您需要返回到上一个选项卡,为什么不简单地创建一些变量来存储访问的选项卡呢?如果有上一个选项卡,您可以创建pushState,如果没有已访问的选项卡,则可以创建replaceState。
const openPanel = (self, link, target) => {
  closeActiveTab(self);

  link.classList.add('activeTab');

  link.setAttribute('aria-selected', 'true');
  target.classList.add('activeTab');
  target.setAttribute('aria-hidden', 'false');

};

const closeActiveTab = (el) => {
  const tabs = el.getElementsByClassName('activeTab');
  while (tabs.length) {

    const selTab = tabs[0];

    selTab.classList.remove('activeTab');
    selTab.setAttribute('aria-selected', 'false');
  }

};