2015-10-04 119 views
0

我想测量用户使网站保持关注的时间,但它不起作用。一个简单的JavaScript不起作用

<!doctype html> 
<head> 

<script> 
    var timeActive; 
    function timeActiveFuncStart(){ 
     timeActive = 0; 
     function timeActiveFunc(){ 
      timeActive++; 
      setTimeout("timeActiveFunc()", 1000)}} 

    var timeActiveTotal; 
    function timeActiveTotalFunc(){ 
     timeActiveTotal = timeActiveTotal + timeActive} 

    document.getElementById("timeActiveP").innerHTML = timeActive; 
    document.getElementById("timeActiveTotalP").innerHTML = timeActiveTotal; 
</script> 

</head> 

<body onfocus="timeActiveFuncStart()" onblur="timeActiveTotalFunc()"> 

<p id="timeActiveP"></p> 
<p id="timeActiveTotalP"></p> 

</body> 
</html> 
+0

检查了这一点http://stackoverflow.com/questions/6939047/does-html-body- tag-have-an-onblur-event – JJF

+1

保持浏览器的[JavaScript控制台](http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-in-different-browsers)打开。您可以在那里看到错误消息。 – JJJ

回答

4

这是因为JavaScript无法访问元素。而且,考虑使用setInterval代替setTimeout这样:

请更换<script>去底部:

<!doctype html> 
<head> 

</head> 

<body onfocus="timeActiveFuncStart()" onblur="timeActiveTotalFunc()"> 

    <p id="timeActiveP"></p> 
    <p id="timeActiveTotalP"></p> 

    <script> 
    var timeActive; 
    var timeActiveTotal = 0; 
    function timeActiveTotalFunc() { 
     timeActiveTotal = timeActiveTotal + timeActive; 
    } 
    function timeActiveFuncStart() { 
     timeActive = 0; 
     function timeActiveFunc() { 
     timeActive++; 
     document.getElementById("timeActiveP").innerHTML = timeActive; 
     document.getElementById("timeActiveTotalP").innerHTML = timeActiveTotal; 

     } 
     setInterval(timeActiveFunc, 1000); 
    } 

    </script> 

</body> 
</html> 

或者,你可以把它window.onload事件之后?

<!doctype html> 
<head> 

<script> 
    window.onload = function() { 
    var timeActive; 
    function timeActiveFuncStart(){ 
     timeActive = 0; 
     function timeActiveFunc(){ 
      timeActive++; 
     } 
     setInterval("timeActiveFunc()", 1000); 

    var timeActiveTotal; 
    function timeActiveTotalFunc(){ 
     timeActiveTotal = timeActiveTotal + timeActive} 

    document.getElementById("timeActiveP").innerHTML = timeActive; 
    document.getElementById("timeActiveTotalP").innerHTML = timeActiveTotal; 
    } 
</script> 

</head> 

<body onfocus="timeActiveFuncStart()" onblur="timeActiveTotalFunc()"> 

<p id="timeActiveP"></p> 
<p id="timeActiveTotalP"></p> 

</body> 
</html> 
+0

这不是唯一的问题。 – JJJ

+0

@Juhana是的,谢谢。我更新了答案。看一看。 ':)' –

+0

@Juhana现在你会删除downvote吗?谢谢。 –

0

再次感谢您的帮助,但是......这里的东西是最后的作品:

<script> 
var timeActive = 0; 
var timeActiveTotal = 0; 

window.onpageshow = function(){ 
    setInterval(function(){ 
     timeActive++; 
     document.getElementById("timeActiveP").innerHTML = timeActive; 
    }, 1000); 

    window.onblur = function(){ 
     timeActiveTotal = timeActiveTotal + timeActive; 
     document.getElementById("timeActiveTotalP").innerHTML = timeActiveTotal; 
    } 

    window.onfocus = function(){ 
     timeActive = 0; 
    } 
} 
</script> 
相关问题