我是jquery和javascript的新手,並且整體上開發網站,並且遇到了.offset函數的問題。我有以下的代碼工作鉻和FF罰款,但不工作的IE瀏覽器:在IE瀏覽器中輸出jquery function .offset時出現問題
$(document).keydown(function(k){
var keycode=k.which;
var posk=$('html').offset();
var centeryk=screen.availHeight*0.4;
var centerxk=screen.availWidth*0.4;
$("span").text(k.which+","+posk.top+","+posk.left);
if (keycode==37){
k.preventDefault();
$("html,body").stop().animate({scrollLeft:-1*posk.left-centerxk})
};
if (keycode==38){
k.preventDefault();
$("html,body").stop().animate({scrollTop:-1*posk.top-centeryk})
};
if (keycode==39){
k.preventDefault();
$("html,body").stop().animate({scrollLeft:-1*posk.left+centerxk})
};
if (keycode==40){
k.preventDefault();
$("html,body").stop().animate({scrollTop:-1*posk.top+centeryk})
};
});
帽子我希望它做的是使用箭頭鍵滾動窗口設置的百分比,所以我的想法是找到文檔左上角的當前座標,並將相對於用戶屏幕的百分比添加到該文檔中,併爲滾動設置動畫,以便內容不會跳躍,並且用戶從他原來的位置放鬆焦點。 $(「span」)。text只是讓我知道發生了什麼,並且在代碼完成時會變成註釋。
因此,在Chrome和Firefox上,位置變量的$(「span」)。文本的輸出是正確的,從0,0開始並始終顯示有多少內容在座標中滾動,但在IE上,它始於-2,-2,並且永遠不會離開它,即使我手動滾動窗口直到它結束並嘗試使用右箭頭鍵,它仍然會返回初始值-2, - 2並回滾到開始。
我試着用document.body.scrollLetf和scrollTop替代偏移量,但結果是一樣的,只有這次座標是0,0。難道我做錯了什麼?或者這是一些IE錯誤?有沒有辦法解決這個問題,或者我可以使用一些其他功能並獲得相同的結果?
在另一方面,我沒有在網站的此部分用戶另外兩個導航選項,一個是點擊,隨時隨地在屏幕上拖動來移動它:
$("html").mousedown(function(e)
{
var initx=e.pageX
var inity=e.pageY
$(document).mousemove(function(n)
{
var x_inc= initx-n.pageX;
var y_inc= inity-n.pageY;
window.scrollBy(x_inc*0.7,y_inc*0.7);
initx=n.pageX;
inity=n.pageY
//$("span").text(initx+ "," +inity+ "," +x_inc+ "," +y_inc+ "," +e.pageX+ "," +e.pageY+ "," +n.pageX+ "," +n.pageY);
// cancel out any text selections
document.body.focus();
// prevent text selection in IE
document.onselectstart = function() { return false; };
// prevent IE from trying to drag an image
document.ondragstart = function() { return false; };
// prevent text selection (except IE)
return false;
});
});
$("html").mouseup(function()
{
$(document).unbind('mousemove');
});
這樣做的唯一部分我沒有寫的代碼是防止文本選擇行,這些是我在關於點擊和拖動對象的教程中找到的,無論如何,這段代碼在Chrome,FireFox和IE上運行良好,儘管在Firefox和IE中它更常發生在你拖動的時候會出現動畫故障,有時候看起來「滾動」是一個參差不齊的樣子,它只是一種視覺上的事情,並不是那麼重要,但是如果有辦法阻止它,我想知道。