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