闲置时滚动?

时间:2010-04-01 20:46:46

标签: javascript jquery html

有人能指出一个页面代码示例,当用户闲置一段时间后,该代码开始自动滚动吗?我认为这略微超出了我的技能。我认为JQuery或类似的东西可能是合适的,但我似乎无法弄明白。我正在为我工​​作的非营利组织设计一个网站,我们没有钱聘请程序员。我不会要求任何人为我编码任何东西,只是为了指出我正确的方向。非常感谢你。

Julie K。

6 个答案:

答案 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);