2010-04-01 60 views
3

任何人都可以點我一個頁面的代碼的例子,當用戶閒置一段時間後開始自動滾動嗎?我認爲這略高於我的技能。我認爲JQuery或類似的東西可能是合適的,但我似乎無法弄清楚。我正在爲我工​​作的非營利組織設計一個網站,我們沒有錢聘請程序員。我不會要求任何人爲我編寫任何代碼,只是爲了指向正確的方向。非常感謝。空閒時滾動嗎?

Julie K.

回答

0

jQuery肯定會在這裏幫助。

您應該處理鍵盤和鼠標事件以捕捉用戶活動。

然後,無論何時您看到活動,請致電setTimeout以使您的代碼在活動後2分鐘運行。將setTimeout調用的返回值保存在全局變量中,並在setTimeout之前調用clearTimeout以清除上次超時。

例如:(使用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

你應該捕捉不知何故滾動沒有鼠標或鍵盤。否則,帶觸摸屏或語音控制(Opera)的讀者正在變得很困難。 ;) – fuxia 2010-04-01 21:49:30

0

我覺得onBlur事件是你要找的東西,所以你可以這樣做:

<body onblur="$('html, body').animate({scrollTop:0}, 'slow');"> 

你可以將0更改爲您要滾動到的垂直位置。

注意:當您轉到其他頁面或選項卡或無法看到頁面時,這將引發滾動。

0

您可以使用像this這樣的插件,並將其設置爲使用JavaScriptssetTimeout()函數來觸發它,每當您檢測到某些用戶操作時(例如keyDown和Click),該插件就會重置。

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

這應該給你一個大概的想法。

0

使用下面的jQuery的功能,以滾動頁面的身體

// Scrolling Down 
$('body').animate({ 
scrollTop: '-=300px' 
}, 2000); 

// Scrolling Up 
$('body').animate({ 
scrollTop: '+=300px' 
}, 2000); 
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(); }); 

編輯:當用戶移動鼠標或按下某個鍵,而不是等待動畫完成鼠標移動和按鍵事件增加.stop立即停止滾動。