首次打开浏览器窗口/选项卡后执行 JavaScript 代码
Execute JavaScript code once a browser window/tab is opened for the first time
有没有办法在浏览器中的窗口或选项卡打开时只执行一次 JavaScript 代码,然后在该窗口/选项卡的整个生命周期内再也不执行一次(即使导航离开)?
像这样使用window.sessionStorage
的一种方法。
if (!window.sessionStorage.getItem("isExecuted")) {
//execute code
window.sessionStorage.setItem("isExecuted", true);
}
MDN 文档
会话存储属性允许您访问会话存储 对象。sessionStorage 类似于 Window.localStorage,唯一的 不同之处在于,存储在本地存储中的数据没有设置过期, 存储在会话中的数据在页面会话结束时被清除。 只要浏览器处于打开状态并存活,页面会话就会持续 超过页面重新加载和还原。在新选项卡或窗口中打开页面 将导致启动新会话,这与 会话饼干工作。
这是一个基于检查 window.history.length 为 1 的解决方案(即他们第一次访问此窗口/选项卡)。它还会检查他们是否只是刷新了页面。
if(window.history.length === 1 && performance.navigation.type !== 1){
alert("show me once per tab");
}
如果您将要运行的脚本放在我有警报的地方,它应该适用于您要执行的操作。
您可以使用 localStorage。
本地存储是按源(按域和协议)存储的。来自一个源的所有页面都可以存储和访问相同的数据。
localStorage 对象存储没有过期日期的数据。关闭浏览器时不会删除数据,并且将在第二天、一周或一年内可用。
localStorage.getItem('key');
localStorage.setItem('key', 'value');
文档:http://www.w3schools.com/html/html5_webstorage.asp
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 在Safari执行javascript之前对其进行修改
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- 使用Rhino和ASE执行Javascript的区别
- 如何在加载完整页面后严格执行javascript代码
- 在动态加载的对话框中执行Javascript
- 在Sinatra中执行Javascript
- 通过AJAX加载页面并执行javascript和CSS
- 适用于多种浏览器的Selenium-需要能够执行javascript的webDriver
- 如何在seleniumwebdriver中执行javascript提示并等待接受输入
- 在window.open()生成的窗口中执行JavaScript
- AJAX成功回调-执行javascript时出现问题
- 通过指令在控制器中执行javascript函数
- 从React Native Android原生地执行JavaScript代码
- iframe未执行Javascript方法(PHP)
- 执行JavaScript代码,使用selenium webdriver或WatiN从控制台获取日志
- 通过web驱动程序异步执行Javascript
- 如何在长时间执行JavaScript期间显示微调器
- 点击困难时执行javascript函数