任何人都可以點我一個頁面的代碼的例子,當用戶閒置一段時間後開始自動滾動嗎?我認爲這略高於我的技能。我認爲JQuery或類似的東西可能是合適的,但我似乎無法弄清楚。我正在爲我工作的非營利組織設計一個網站,我們沒有錢聘請程序員。我不會要求任何人爲我編寫任何代碼,只是爲了指向正確的方向。非常感謝。空閒時滾動嗎?
Julie K.
任何人都可以點我一個頁面的代碼的例子,當用戶閒置一段時間後開始自動滾動嗎?我認爲這略高於我的技能。我認爲JQuery或類似的東西可能是合適的,但我似乎無法弄清楚。我正在爲我工作的非營利組織設計一個網站,我們沒有錢聘請程序員。我不會要求任何人爲我編寫任何代碼,只是爲了指向正確的方向。非常感謝。空閒時滾動嗎?
Julie K.
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);
}
我覺得onBlur
事件是你要找的東西,所以你可以這樣做:
<body onblur="$('html, body').animate({scrollTop:0}, 'slow');">
你可以將0更改爲您要滾動到的垂直位置。
注意:當您轉到其他頁面或選項卡或無法看到頁面時,這將引發滾動。
您可以使用像this這樣的插件,並將其設置爲使用JavaScriptssetTimeout()函數來觸發它,每當您檢測到某些用戶操作時(例如keyDown和Click),該插件就會重置。
首先,您必須定義您的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);
這應該給你一個大概的想法。
使用下面的jQuery的功能,以滾動頁面的身體
// Scrolling Down
$('body').animate({
scrollTop: '-=300px'
}, 2000);
// Scrolling Up
$('body').animate({
scrollTop: '+=300px'
}, 2000);
這裏是東西快速和骯髒的,將你想要做什麼。我目前已將它設置爲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立即停止滾動。
你應該捕捉不知何故滾動沒有鼠標或鍵盤。否則,帶觸摸屏或語音控制(Opera)的讀者正在變得很困難。 ;) – fuxia 2010-04-01 21:49:30