有人能指出一个页面代码示例,当用户闲置一段时间后,该代码开始自动滚动吗?我认为这略微超出了我的技能。我认为JQuery或类似的东西可能是合适的,但我似乎无法弄明白。我正在为我工作的非营利组织设计一个网站,我们没有钱聘请程序员。我不会要求任何人为我编码任何东西,只是为了指出我正确的方向。非常感谢你。
Julie K。
答案 0 :(得分:1)
这是快速而肮脏的东西,可以做你想要的。我目前将其设置为2秒空闲时间,但您可以根据需要更改它。
var now = new Date();
setInterval(function(){
var nnow = new Date();
if(nnow.getTime() - now.getTime() >= 2000)
$('body').animate({scrollTop: '+=50'}, 2000, 'linear');
}, 2000);
$(document)
.mousemove(function(){ now = new Date(); $('body').stop(); })
.keypress(function(){ now = new Date(); $('body').stop(); });
编辑:在mousemove和keypress事件中添加.stop,以便在用户移动鼠标或按键时立即停止滚动,而不是等待动画完成。
答案 1 :(得分:0)
jQuery肯定会有所帮助。
您应该处理键盘和鼠标事件以捕获用户活动。
然后,每当您看到活动时,请致电setTimeout
以使您的代码在活动后2分钟运行。将setTimeout
调用的返回值保存在全局变量中,并在clearTimeout
之前调用setTimeout
以清除上次超时。
例如:(使用jQuery和scrollTo插件)
var timeout = false;
$(document.body).bind('keydown keyup mousemove mouseup', function() {
if (timeout) clearTimeout(timeout);
timeout = setTimeout(userIsIdle, 120000); //120,000 milliseconds
});
function userIsIdle() {
$(document.body).scrollTo('100%', 100000);
}
答案 2 :(得分:0)
我认为onBlur
事件正是您所寻找的,所以您可以这样做:
<body onblur="$('html, body').animate({scrollTop:0}, 'slow');">
您可以将0更改为要滚动到的垂直位置。
注意:当您转到其他页面或标签或无法看到该页面时,这将触发滚动。
答案 3 :(得分:0)
您可以使用像this这样的插件,并将其设置为使用JavaScripts setTimeout()函数来触发它,每次检测到某些用户操作时都会重置它,例如keyDown和Click。
答案 4 :(得分:0)
首先你必须定义IDLE的意思,我会假设用户没有移动鼠标x一段时间。 以下是伪js的步骤。
var lastTime=0;
var threshold=60000 ; // 1min
var howOftenToCheck = 1000;//1 sec
var inter = 0;
inter = setInterval(function() {
var delta=lastTime-currentTime;
if(delta>threashold){
clearInterval(inter);
window.scrollTo(xpos,ypos);
}
}, howOftenToCheck);
这应该给你一个大致的想法。
答案 5 :(得分:0)
使用以下jQuery函数滚动页面的正文
// Scrolling Down
$('body').animate({
scrollTop: '-=300px'
}, 2000);
// Scrolling Up
$('body').animate({
scrollTop: '+=300px'
}, 2000);