Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取特定窗口打开的时间?_Javascript_Jquery_Html_Forms - Fatal编程技术网

Javascript 如何获取特定窗口打开的时间?

Javascript 如何获取特定窗口打开的时间?,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我有一个简单的用户调查表单,其中有一个部分,用户需要单击链接,阅读链接内的页面,然后返回继续表单。目前,我有一个父HTML页面,从中我提供了一个链接,可以在不同的窗口/选项卡中打开子web页面 如何获取用户在子窗口/选项卡上花费的时间?用户是通过单击链接离开页面,还是第二个页面显示在第一个页面内?在第一种情况下,您必须使用cookie来存储单击时间,在第二种情况下,使用变量。可以使用new Date()通过以下方式来检索时间 $('a').on('click', function(){

我有一个简单的用户调查表单,其中有一个部分,用户需要单击链接,阅读链接内的页面,然后返回继续表单。目前,我有一个父HTML页面,从中我提供了一个链接,可以在不同的窗口/选项卡中打开子web页面


如何获取用户在子窗口/选项卡上花费的时间?

用户是通过单击链接离开页面,还是第二个页面显示在第一个页面内?在第一种情况下,您必须使用cookie来存储单击时间,在第二种情况下,使用变量。可以使用
new Date()

通过以下方式来检索时间

$('a').on('click', function(){
    var d = new Date();
    var curr_time = d.getTime();
    //save in cookie1 
})
现在,在用户正在阅读的另一个html页面中……执行相同的操作,但仅在窗口卸载时执行

 $(window).unload(function(){
    var d1 = new Date();
    var curr_time1 = d1.getTime();
    //save in cookie2 
})
也保存这个

然后当s/he回来时,我的意思是在它的聚焦上,你可以减去这两个cookie的值,然后除以1000,得到秒,因为这些时间将以毫秒为单位

 (cookie1 -cookie2)/1000 seconds  //if the cookie thing is used
  • 记录窗口打开的时间
  • 在命名窗口中打开页面
  • 设置timeinteval函数(在原始页面上)以检查指定窗口的location.href,例如1000 ms
  • 如果已更改(已完成/感谢页面)或不存在,则用户必须已完成阅读

  • 当要读取的页面打开时,应设置cookie或DOM存储值。在该页中:

    var isFocused = true; // just opened
    var secondsLookedupon = 0; // eventually init with a saved value
    window.onblur = function(){ isFocused=false; }; // use addEventHandler and co
    window.onfocus = function(){ isFocused=true; }; // use addEventHandler and co
    window.setInterval(function(){
        if (!isFocused) {
            secondsLookedupon++;
            document.cookie.name = secondsLookedupon; // set a cookie in some way
            window.sessionStorage.setItem("name", secondsLookedupon); // or use DOM storage
        }
    }, 1000);
    

    从调查表单页面,您可以随时从cookie或DOM存储中读取该值。

    我感觉到又有人试图强迫人们阅读他们不想阅读的内容。这个问题最好通过写清楚、简单、简短的总结来解决。如果有烦人的计时器,人们只会做其他事情。如果有人想读,他会读,如果没有,他不会读。不要用计时器来打扰你的用户,尤其是因为对于阅读速度非常快的osmeone来说,计时器通常太长。@Quentin:这是为我正在构建的产品进行的用户调查。@ThiefMaster:我的错误。我应该提到这是一个用户调查。我得到的用户自愿同意参与一些用户研究,他们为此得到了补偿:)哦,是的,可能……我错过了。。。如果他只需要脚本的值,那么cookie可能就是他所剩下的或者domstorage(和co)。但我想,在给定的超时之后设置cookie来标记文档“已读”可能是最好的方法。