利用sessionStorage收集用户访问信息,然后传递给后端

这里只是简单的收集用户的停留时间、页面加载时间、当前页面URL及来源页面,以做示例

html 复制代码
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
        <title>测试sessionStorage存储用户访问信息</title>
    </head>
    <body>
        <button id="timer">停止</button>
        <script type="text/javascript">
        //日期+时间函数
            function formatDate(){
                let date=new Date();
                let Y=date.getFullYear()+'-';
                let M=date.getMonth()+1 < 10 ? '0'+date.getMonth()+1 : date.getMonth()+1+'-';
                let D=date.getDate() < 10 ? '0'+date.getDate()+' ' : date.getDate()+' ';
                let h=date.getHours() <10 ? '0'+date.getHours()+':':date.getHours()+':';
                let m=date.getMinutes()<10 ? '0'+date.getMinutes()+":":date.getMinutes()+":";
                let s=date.getSeconds()<10 ? '0'+date.getSeconds() : date.getSeconds();
                return Y+M+D+h+m+s;
            }
            //停留时间变量
            let timer=null,
                startTime=new Date().valueOf();//开始时间
                //页面加载完成后,收集用户信息
            document.addEventListener('DOMContentLoaded',function(){
                sessionStorage.setItem('visitedPage',window.location.href);//当前页面
                sessionStorage.setItem('referrer',document.referrer);//访问来源
                sessionStorage.setItem('visitTime',formatDate());//访问的日期和时间
                //计时变量
                let seconds=0;
                timer=setInterval(function(){
                    seconds++;
                    sessionStorage.setItem('timerDisplay',seconds);//停留时间,每秒种seconds增加1
                },1000);
                
            });
            
            //这里是以点击按钮,然后把数据传递给后端;
            //现实生成过程过应该是以用户关闭页面;然后把收集数据传递给后端,用unload事件完成
            const btn=document.getElementById('timer');
            btn.addEventListener('click',function(){
                console.log(sessionStorage.getItem('timerDisplay'));
                console.log(sessionStorage.getItem('visitTime'));
                //取消停留时间变量
                clearInterval(timer);
                //将收集所有数据,存储进frondEndData对象中
                let v=sessionStorage.getItem('visitTime');
                let r=sessionStorage.getItem('referrer');
                let l=sessionStorage.getItem('loadTime');
                let d=sessionStorage.getItem('timerDisplay');
                const frontEndData={
                    visitTime:v,
                    referrer:r,
                    loadTime:l,
                    timerDisplay:d
                };
                //转换为json格式
                const frontData=JSON.stringify(frontEndData);
                const jsonHeaders=new Headers({
                    'Content-Type':'application/json'
                });
                //利用fetch传递给后端
                fetch('sessionStorage.php',{
                    method:'post',
                    body:frontData,
                    headers:jsonHeaders
                })
                .then((response)=>{
                    if(response.ok && response.status===200)
                    {
                        return response.text();
                    }
                    throw new Error('返回数据有误');
                })
                //后端返回的信息
                .then((data)=>{
                    /*
                    let result=JSON.stringify(data);
                    let res=JSON.parse(result);
                    console.log(res.msg);
                    */
                   console.log(data);
                })
                .catch(e=>{
                    console.log('连接服务器发生错误',e);
                })
                
                //将停留计时器删除
                sessionStorage.removeItem('timerDisplay');
            });

			//这里是加载完成各类要素如:CSS、图片、javascript等
			//计算加载页面共用时间;也可以用performance API里面的navigation来计算页面加载时间更精确,可以达到毫秒级
            window.addEventListener('load',function(){
                let endTime=new Date().valueOf();
                let loadTime=endTime-startTime;
                sessionStorage.setItem('loadTime',loadTime);
            });

            
            
        </script>
    </body>
</html>

后端接收文件

php 复制代码
if($_SERVER['REQUEST_METHOD']==='POST')
{
    $data=file_get_contents('php://input');
    $result=json_decode($data);
    echo $result->timerDisplay;
}
相关推荐
徐小夕5 小时前
我用 AI 撸了个开源"万能预览器":浏览器直接打开 Office、CAD 和 3D 模型
前端·vue.js·github
小码哥_常5 小时前
Flutter Android 延迟加载代码指南:提升应用性能的关键
前端
这是个栗子5 小时前
TypeScript(三)
前端·javascript·typescript·react
kvo7f2JTy5 小时前
基于机器学习算法的web入侵检测系统设计与实现
前端·算法·机器学习
北风toto5 小时前
前端CSS样式详细笔记
前端·css·笔记
nanfeiyan5 小时前
git commit
前端
前端精髓8 小时前
移除 Effect 依赖
前端·javascript·react.js
码云之上8 小时前
从一个截图函数到一个 npm 包——pdf-snapshot 的诞生记
前端·node.js·github
码事漫谈9 小时前
AI提效,到底能强到什么程度?
前端·后端
IT_陈寒9 小时前
React hooks依赖数组这个坑差点把我埋了
前端·人工智能·后端