如何滚动到另一页上的 id/anchor?

How can I scroll to a an id/anchor on another page?

我的导航栏中有一个 link,单击它后,您会转到主页并通过 id 向下滚动到某个部分。当我单击 link 调用一个函数时,它将定向到新页面但不会滚动到任何地方。由于函数必须是异步的,所以它不会做我想做的事情。

我的HTML

<a id="categoryButton"><li>Categories</li></a>
<!-- further down the page -->
<div id="categoryTitleDiv"><h1 id="categoryTitle">Where I want to scroll to</h1></div>

我的JS

document.getElementById("categoryButton").onclick = function onCategoryButtonClick() {
    window.location.href = "</*my page address*/";
      document.getElementById("categoryTitleDiv").scrollIntoView();
    }

问题在于,由于它们是同步的,因此命令同时发生。所以我最终从 window.location.href = "</*my page address*/"; 转到了正确的页面,但我没有滚动到任何地方。

然后我尝试了解 Promises,但我不确定自己是否做对了。我真的认为这会奏效,但它让我遇到了和以前一样的问题。他们似乎仍然 运行 同步,我将进入新页面。

document.getElementById("categoryButton").onclick = function() {
  const promise = new Promise(function onCategoryButtonClick(resolve, reject) {
    const clickedVar = true;
    if (clickedVar) {
      window.location.href = "/*my page address*/";
      console.log("yay");
      resolve();
    } else {
      console.log("nay");
      reject();
    }
  });

  promise.then(function(){
    document.getElementById("categoryTitleDiv").scrollIntoView();
  }, function(){
    console.log("What the heck happened?");
  });
}

我也测试了一些其他的东西,比如 setTimeout(尽管这并不理想),但也没有用。我想是因为它想滚动到原始页面的一部分而不是新加载的页面。但是我不擅长 Javascript 所以我可能错了。我尝试的另一件事是调用 window.onload 函数并使用它来执行滚动代码,但这给我留下了与所有其他人相同的结果,我进入了页面但它没有滚动到任何地方。这是

的代码
  window.location.href = "/*my page address*/";
  window.onload = function(){
    document.getElementById("categoryTitleDiv").scrollIntoView();
  }
}

总的来说,我很沮丧,我这辈子都无法解决这个问题。谢谢大家,注意安全!

https://whosebug.com/users/3478010/roamer-1888 的评论朝着正确的方向推动之后,我已经弄明白了。我刚刚将 link 的 href 转到了所需的页面,并在网址末尾添加了“#categoryTitleDiv”。所以它看起来像

<a href="...\website name\index.html#categoryTitleDiv"><li>Categories</li></a> 滚动不是很流畅,但是很管用!