2011-01-13 4 views
0

jquery、javascript、およびWebサイトの開発に新しくなりました。私は.offset関数に問題があります。私は、次のコードクロムとFFに細かい作業が、IE上で動作していないを持っている:私はそれをやりたいIEのJquery関数.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")のテキストはちょうど私が何が起こっているかを知っているので、コードが完成したらコメントに変わります。

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

本の一部のみ:別のノートで

、私は1つが、それを移動するためにクリックし、画面上の任意の場所にドラッグすることで、サイトのこのセクションでは、ユーザのための他の2つのナビゲーションオプションをしましたコードを書いていなかったのは、テキストの選択を妨げる行だったと思いますが、このコードはChromeやFireFox、IEでうまく動作しますが、FirefoxやIEではもっと頻繁に起こりますあなたがドラッグしている間に動きの不具合が起きることがあります。時には、「スクロール」がぎざぎざであるように見えますが、視覚的なものであり、それほど重要ではありませんが、それを防ぐ手段があれば、

答えて

1

大丈夫、私はちょうど、

var poskt=$(document).scrollTop(); 

とscrollLeftのための新たなVARを追加するposk変数を変更するコードは、クロム、FFおよびInternet Explorer

上で同じように動作し、このように私の問題を解決しました
関連する問題