1

我正在尝试用一些信息更新我的数据库。其中一个关键信息是从页面首次加载到用户单击按钮已经过去了多少时间。我的代码如下所示:

<script>
function pauseVideo() {
    $.get("video_pause.php?pause=" + timePassed + "&videoid=<?php echo $_GET['sessionid']; ?>&sessionid=<?php echo $_GET['videoid']; ?>");
}
</script>

<html>
<div id="pause" onclick="pauseVideo()">PAUSE</div>
</html>

我的 PHP 很好,所以忽略它。我遇到问题的部分是“timePassed”。我需要这是自页面首次加载并且该人单击 PAUSE div 以来的时间量(以秒为单位)。

我想我需要在单击时运行一个函数来查找经过的时间,然后以某种方式在 $.get() 中使用该时间变量?

4

4 回答 4

1

当文档加载时,只需将当前时间保存在一个变量中:

$(document).ready(function() {
    var timeWhenLoaded = (new Date).getTime() / 1000;
});

然后,当点击暂停按钮时,计算已经过去的时间:

function pauseVideo() {
    var currTime = (new Date).getTime() / 1000;
    // time in seconds
    var timePassed = Math.floor(currTime - timeWhenLoaded);
    $.get("video_pause.php?pause=" + timePassed + "&videoid=<?php echo $_GET['sessionid'];     ?>&sessionid=<?php echo $_GET['videoid']; ?>");
}
于 2012-07-09T18:02:07.887 回答
1

摆脱 HTML 中的 onclick,并删除现有功能,然后将其放在页面的 head 部分:

(function(){
    var loadTime = (new Date).getTime(); // Page started loading

    $(function(){
        // DOM fully loaded, so move the assignment here if that is what
        // you want to consider as the load time

        $('#pause').click(function(){
            $.get("video_pause.php?pause=" + Math.floor(((new Date).getTime() - loadTime)/1000) + "&videoid=<?php echo $_GET['sessionid']; ?>&sessionid=<?php echo $_GET['videoid']; ?>");
        });
    });

})();

另请注意,您永远不能信任服务器端的该变量。如果他们真的想的话,任何人都可以输入一个负数,甚至可以输入“pizza”这个词。

于 2012-07-09T18:02:28.890 回答
0

就像是:

var startTime = (new Date).getTime() / 1000;
function pauseVideo() {
    var curTime = (new Date).getTime() / 1000;
    var timePassed = Math.floor(curTime - startTime);
    $.get("video_pause.php?pause=" + timePassed + "&videoid=<?php echo $_GET['sessionid']; ?>&sessionid=<?php echo $_GET['videoid']; ?>");
}
于 2012-07-09T17:58:56.687 回答
-1

如果具有以下代码的页面是在服务器端生成的,您可以将当前时间传递给脚本,如下所示:

<html>
  <div id="pause" onclick="pauseVideo('" + curTime +"')">PAUSE</div>
</html>

(需要回显语法)

或将其放在隐藏字段中并将其传递回服务器。(并在php中进行计算)以这种方式,您可以获得自请求页面以来经过的时间......

于 2012-07-09T18:01:06.737 回答