2015-10-04 116 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> 
相關問題