繁体   English   中英

如何确定页面是否在新窗口或新标签页中加载?

[英]How can I determine if the page is loaded in a new window or tab?

我有一个画廊网站,上面有绘画作品,它们的overflow-x: scroll

当用户单击绘画时,当前滚动位置将存储在localStorage并显示详细信息页面。 当用户单击“后退”按钮时,将在加载页面时设置滚动位置。

我希望在将页面加载到新的选项卡或窗口中时取消设置此滚动位置。 我怎么知道这是否发生了?

取消重新加载页面设置已经可以进行了。 但是,在新窗口中打开网站显然不算是重新加载。

我已经尝试阅读sessionStorage ,但这并不能解决问题。

if (performance.navigation.type == 1 || sessionStorage.isNewSession) {
   localStorage.setItem("scrollPositionHome", 0);
} 

performance.navigation.type看到这是页面重新加载, sessionStorage.isNewSession并没有做什么。

您可以修改自己的代码以打开链接!

$('a').on('click', function(e) {
    // This will prevent the default behaviour 
    e.PreventDefault();
    // On Control click it's opened in a new window
    if (e.ctrlKey || e.metaKey){
    // Open in new window, you can already reset your localstorage here.
    localStorage.setItem("scrollPositionHome", 0);
    window.open(e.target.href);    
     } else {
    // Just a simple redirect
    window.location.href = e.target.href;
    }
});

注意:这未经测试! 如果需要,我会纠正的!

您似乎混淆了sessionStoragelocalStorage 您可以在此链接后找到一些小的说明。

TL; DR: sessionStorage是每个选项卡, localStorage将在多个会话中持续存在。 您可以只清空localStorage或首先使用sessionStorage

如果您可以提供一些代码,我们可以为您提供更详尽的解释/帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM