首次打开浏览器窗口/选项卡后,执行JavaScript代码

时间:2016-07-13 20:47:09

标签: javascript html browser

当浏览器中的窗口或选项卡打开时,是否有一种方法只执行一次JavaScript代码,然后在该窗口/选项卡的整个生命周期中再次执行(即使在导航时)?

3 个答案:

答案 0 :(得分:3)

使用window.sessionStorage这样的一种方式。

if (!window.sessionStorage.getItem("isExecuted")) {
    //execute code
    window.sessionStorage.setItem("isExecuted", true);
}

MDN docs

  

sessionStorage属性允许您访问会话存储   宾语。 sessionStorage类似于Window.localStorage,唯一的   区别在于localStorage中存储的数据没有到期设置,   当页面会话结束时,存储在sessionStorage中的数据将被清除。   只要浏览器处于打开状态并且存活,页面会话就会持续   页面重新加载和恢复。 在新标签页或新窗口中打开页面   将导致新会话启动,这与方式不同   会话cookie工作。

答案 1 :(得分:1)

这是一个基于检查window.history.length为1的解决方案(即他们第一次访问此窗口/选项卡)。它还检查他们不是简单地刷新页面。

if(window.history.length === 1 && performance.navigation.type  !== 1){
     alert("show me once per tab");
} 

如果你把我想要的脚本放在我有警报的地方,那么它应该适用于你想要做的事情。

答案 2 :(得分:0)

您可以使用 localStorage

  

本地存储是按源(每个域和协议)。来自一个来源的所有页面都可以存储和访问相同的数据。

     

localStorage对象存储没有过期日期的数据。当浏览器关闭时,数据不会被删除,并且可以在第二天,一周或一年中使用。

localStorage.getItem('key');
localStorage.setItem('key', 'value');

Doc:http://www.w3schools.com/html/html5_webstorage.asp