javascript - 如果上一页不是来自同一个域,则有条件地使用 window.history.back(-1)

标签 javascript reactjs gatsby

我目前正在使用 ReactGatsbyJS 构建网站并尝试有条件地添加导航 window.history.back(-1); 如果上一页是同一域的一部分。

一个例子是

navigateBack = () => {
  if (window !== undefined) {
    window.history.back(-1);
  }
};

请注意,if (window !== undefined) 允许在没有服务器端渲染的情况下使用 window

如何在运行此功能之前检查上一页。

例如,用户是从外部链接导航的,我想使用 navigate('/stories/'),否则如果用户来自内部页面,即 '/stories/2/' 我希望他们使用 window.history.back(-1);

返回

最佳答案

我必须通过检查以确保有一个历史可以访问,然后通过验证当前主机可以在引荐来源网址中找到来解决这个问题。如果找到它们,那么我知道它们来 self 的站点,所以我返回;否则,我会将它们导航到其他地方。

if(window.history.length > 1 && 
document.referrer.indexOf(window.location.host) !== -1) {
  window.history.back();
}
else {
  <do something else>
}

关于javascript - 如果上一页不是来自同一个域,则有条件地使用 window.history.back(-1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55452880/

相关文章:

javascript - event.preventDefault() 不适用于按钮?

reactjs - 在 React 中将输入字段的值传递给父组件

reactjs - Gatsby 一页一页

reactjs - React `Router`组件如何与 `Route`组件通信?

在 Gatsby-node.js 中检索多种数据类型时,graphql 出现重复文档错误

javascript - Netlify 未检测到 GatsbyJS 表单

javascript - React State 数据无法作为 props 传递

Javascript:如何在函数内无延迟地执行函数?

javascript - event.target.id 来自从 div 内容而不是从分配的 div 调用的点击事件

reactjs - NextJS 对 SSG/SSR 和 Google Analytics/cookie 的建议