好的,我很难解决这个问题,我是一名php / C#开发人员,并且没有Javascript的经验或知识,我只需做一件需要Javascript的事情:
当某个页面加载时,计数器启动。客户必须在此页面上停留20秒。之后,我想执行php代码。
所以我有两个问题,首先:如果客户离开页面(如果页面没有聚焦),我如何停止计数器。
2)如何在javascript中执行php? ,或者从Javascript调用php函数。
到目前为止我的代码是:
<html>
<head>
</head>
<body>
<div id='timer'>
<script type="text/javascript">
COUNTER_START = 20
function tick () {
if (document.getElementById ('counter').firstChild.data > 0) {
document.getElementById ('counter').firstChild.data = document.getElementById ('counter').firstChild.data - 1
setTimeout ('tick()', 1000)
} else {
document.getElementById ('counter').firstChild.data = 'done'
}
}
if (document.getElementById) onload = function () {
var t = document.createTextNode (COUNTER_START)
var p = document.createElement ('P')
p.appendChild (t)
p.setAttribute ('id', 'counter')
var body = document.getElementsByTagName ('BODY')[0]
var firstChild = body.getElementsByTagName ('*')[0]
body.insertBefore (p, firstChild)
tick()
}
</script>
</div>
</body>
</html>
我还希望计时器在客户端返回页面时开始计时
非常感谢你提前帮助
答案 0 :(得分:4)
您可以使用jQuery执行此操作 回收旧的Stackoverflow帖子,试试这个:
var window_focus;
var counter = 1000;
// on focus, set window_focus = true.
$(window).focus(function() {
window_focus = true;
});
// when the window loses focus, set window_focus to false
$(window).focusout(function() {
window_focus = false;
});
// this is set to the ('click' function, but you could start the interval/timer in a jQuery.ready function: http://api.jquery.com/ready/
$(document).one('click',function() {
// Run this function every second. Decrement counter if window_focus is true.
setInterval(function() {
$('body').append('Count: ' + counter + '<br>');
if(window_focus) { counter = counter-1; }
}, 1000);
});
演示和旧帖子
DEMO | Old So post
<强>更新强>
可能因为演示在4个iframe中运行,$(window).focus位仅适用于实际运行代码的iframe(右下角窗口)。
<强>的jQuery 强>
jQuery.com (How jQuery works) | Example (back to basics halfway down the page) |的 If you use the 2nd link, also read this 强>
答案 1 :(得分:1)
关于检测窗口是否失焦的第一个问题,请参阅以下答案:Is there a way to detect if a browser window is not currently active?
这是可能的,但只有非常新的浏览器支持这一点,因此根据当前的浏览器支持可能没用。
要从Javascript触发PHP代码,您必须对服务器端PHP脚本进行AJAX调用以调用PHP,因为JS是客户端而PHP是服务器端。