【发布时间】:2021-10-26 05:56:17
【问题描述】:
他们有什么方法可以观察到点击后退按钮的反应吗?
实际上,我在分类页面上添加了一个代码,它提供的功能是将用户保持在页面上。
例如:客户浏览分类页面滚动浏览产品并点击产品页面然后点击返回按钮然后用户看到用户点击的完全相同的分类页面产品(即相同的产品位置)。
为此,我在类别页面上设置了以下代码
CategoryPage.js
const [scrollPosition, setScrollPosition] = React.useState('');
React.useEffect(() => {
var pathName = document.location.pathname.substr(1);
if (window) {
window.onscroll = function (e) {
setScrollPosition(window.scrollY);
if(scrollPosition != 0){
sessionStorage.setItem("scrollPosition_"+pathName, scrollPosition);
}
};
}
}, [scrollPosition]);
React.useEffect(() => {
var pathName = document.location.pathname.substr(1);
if (window && sessionStorage.getItem("scrollPosition_"+pathName)) {
$(window).scrollTop(sessionStorage.getItem('scrollPosition_'+ pathName));
console.log('position_set to = ' + sessionStorage.getItem('scrollPosition_'+ pathName));
}
}, []);
如您所见,代码scrollTop 屏幕中的值保存在会话存储中
它有效,但我需要这个东西只有在这种情况下才能工作
(即用户访问分类页面,滚动页面,点击产品,产品页面打开并点击返回按钮)
它不应该与任何其他场景一起使用,例如 (用户访问类别页面,滚动页面,单击产品,产品页面打开,用户单击另一个页面或主页并访问相同类别页面并使用上面的代码滚动它到同一页面的位置)。
解决方案:检查之前的路线是产品页面,然后滚动到顶部,否则什么都不做
他们对此有什么解决办法吗? 如何查看上一条路线是产品页面?
【问题讨论】:
-
对此有何想法?
-
您可以尝试的一件事是您可以检查用户来自哪里。例如,如果他之前的路线是您的产品页面,那么您可以滚动顶部,否则什么也不做。
-
感谢@Shyam 的建议,是的,这可以做到,而且应该也可以。如果用户访问一个类别页面到另一个类别页面,也可以保存尽可能多的会话?
-
他们有什么方法可以从产品页面或网站主页检查用户来自哪里?
标签: javascript reactjs