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

Dar*_*ren 5 javascript reactjs gatsby

我目前正在使用ReactGatsbyJS构建一个网站,并尝试window.history.back(-1);在前一页属于同一域的情况下有条件地添加导航。

一个例子是

navigateBack = () => {
  if (window !== undefined) {
    window.history.back(-1);
  }
};
Run Code Online (Sandbox Code Playgroud)

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

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

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

Der*_*yen 1

Gatsby 有一个api可以告诉你以前的位置。也许您可以将它与document.referrer建议的 @ATT 一起使用,以检查以前的 url 是否来自同一域。

// gatsby-browser.js

exports.onRouteUpdate = ({ location, prevLocation }) => {
  if (prevLocation || document.referrer.includes(SITE_NAME)) {
    // same domain
  }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想在 React 组件中获得以前的位置信息,请查看其他 gatsby 问题的答案。

旁注:如果没有引荐来源网址,则为空白 ( )(网站省略引荐来源网址,或document.referrer直接""nullundefined