javascript:history.back(-1) 由 <a> 引起的问题

javascript:history.back(-1) issue caused by <a>

您好,我正在使用 按钮 返回我们的 上一页 app [我用的代码↓ ]

<a class="back-page" href="javascript:history.back(-1)"></a>

这也很完美。我的视图页面中有一些 ID 是我真正的问题。如果用户 点击 一些带有 ID 链接的锚点标签,那么他必须点击那么多时间 后退按钮重定向到上一页。

我需要的是不管他点击了多少ID如果他点击 后退按钮 然后页面应该重定向到上一页.

我试过一些方法的↓

第一

function goBack() {
    window.history.back();
}
<button onclick="goBack()">Go Back</button>

第二

<a href="javascript: history.go(1)">Go Back</a>

第三

$(".back-page").click(function(event) {
    event.preventDefault();
    history.back(1);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a class="back-page" href="javascript:void(0);">Back</a>

ID为↓的anchot标签代码

<ul>
  <li><a href="#t1">Personal Info</a></li>
  <li><a href="#t2">Address(s)</a></li>
  <li><a href="#t3">Social Info</a></li>
  <li><a href="#t4">More Info</a></li>
</ul>

None 这对我有帮助,任何帮助将不胜感激。

主要问题是单击其中一个 ID 会添加另一个历史条目。为了防止这种情况,我们可以这样做:

document.querySelectorAll("a")
  .forEach(function(link){
     if(link.href.includes( location.href + "#")){
       //we stay on the page, prevent redirects:
       link.addEventListener("click", function(event){
         event.preventDefault(); //the redirect
         //scroll:
         document.getElementById( link.href.split("#")[1] )
         .scrollIntoView();
      });
    }
  });

如果您想更改 url(和历史记录),我们需要计算我们创建的历史记录条目,然后后退按钮需要返回该数量:

var count = 1;

document.querySelectorAll("a")
  .forEach(link =>
     link.onclick = () =>  count++
  );

那么回去:

history.go( - count );