window.scrollY
を使用してスクロールしたピクセル数を調べようとしています。しかしこれはIE8ではサポートされていません。安全なブラウザ間の代替手段は何ですか?IE8の代わりにwindow.scrollY?
答えて
window.scrollY
のクロスブラウザ対応バージョンは、document.documentElement.scrollTop
です。 IE8以前の詳細な回避策については、Mozilla documentationの「Notes」セクションを参照してください。
As mentioned here、pageYOffset
は、window.scrollYの別の代替手段です(ただし、これはIE9 +互換です)。上記のリンクに関しては
は、(それも@adeneo述べたように、ズームを占めて!)スクロール位置を取得するには、完全に互換性のある方法のため例4をチェックdocument.documentElement.scrollTop
とdocument.documentElement.scrollLeft
を使用します。
あなただけの基本機能のこの種を扱うためのライブラリを使用しないための正当な理由がある場合は、「ホイールを再発明していない」ことを躊躇しないでください。
Mootools is open source、そしてあなただけの、その実装、関連するスニペット「盗む」ことができます。
getScroll: function(){
var win = this.getWindow(), doc = getCompatElement(this);
return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
}
function getCompatElement(element){
var doc = element.getDocument();
return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
}
は、これらの2がどの互換モード、それが持っている現在のブラウザを決定するの中核であり、その後、使用するかどうかをwindow.pageYOffset
かdocument.body.scrollTop
それに基づいて、あるいは実際に古風なバギーブラウザの場合はdocument.html.scrollTop
です。
jQueryを使用している場合、私は$(window).scrollTop()を使用してIE 8のY位置を取得しました。動作するようです。
だけY座標が必要な場合ニールス回答に基づいて、私は少しよりコンパクトな解決策を考え出す:
function get_scroll_y() {
return window.pageYOffset || document.body.scrollTop || document.html.scrollTop;
}
あなたはそれをたくさん使用する必要がない場合は、単にん:
角度でvar scroll =
window.scrollY //Modern Way (Chrome, Firefox)
|| window.pageYOffset (Modern IE, including IE11
|| document.documentElement.scrollTop (Old IE, 6,7,8)
これは動作しますが、私はあなたが2番目のもの(window.pageYOffset)を必要としないと思います。それが動作している間、すべての古いIEブラウザは 'document.documentElement.scrollTop'スクロール位置を取得する方法をサポートしています。最新のIEブラウザ(「Edge」)は、MDNで述べたように 'window.scrollY'をサポートしています:https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY?redirectlocale=en-US&redirectslug = DOM%2Fwindow.scrollY – ps2goat
、我々が使用する:
のMozilla、および上記の回答に基づいてvar windowEl = angular.element($window);
scrolldist = windowEl.scrollTop();
これは[jQueryのscrollTop](https://docs.angularjs.org/api/ng/function/angular.element)です。 –
を、私が作成した関数のベルを持っていますOWは、より簡単にCOORDSを取得するには:
var windowEl = (function() {
var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat");
function scroll() {
return { left: scrollLeft, top: scrollTop };
};
function scrollLeft() {
return window.scrollX || window.pageXOffset || (isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft);
};
function scrollTop() {
return window.scrollY || window.pageYOffset || (isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop);
};
return {
scroll: scroll,
scrollLeft: scrollLeft,
scrollTop: scrollTop
}
})();
Mozilla documentationによると、上記の寿命が引用として、pageXOffset
プロパティはそれほどstictlyない必要が話している、scrollX
プロパティの別名です。
Anyhoo、使用量は次のとおりです。
var scroll = windowEl.scroll();
// use scroll.left for the left scroll offset
// use scroll.top for the top scroll offset
var scrollLeft = windowEl.scrollLeft();
// the left scroll offset
var scrollTop = windowEl.scrollTop();
// the top scroll offset
クロム、Firefoxの、オペラ、エッジ(8-EDGE)、IE(7-11)、IE8 XP
上window.scrollYに&作品をテスト済み& window.scrollXは(Chrome、FireFox & Safariのような)現代のブラウザでうまく動作しますが、IEでは動作しませんので、window.pageXOffsetやwindow.pageYOffsetを修正してください。ここで
私はプログラムによるスクロールがIE
if((window.scrollY || window.pageYOffset) >= 1100){
//alert('Switch to land');
$('#landTrst').trigger('click'); // your action goes here
}else if ((window.scrollY || window.pageYOffset) <= 900) {
//alert('Switch to Refernce Letter');
$('#resLet').trigger('click'); // your action goes here
}
- 1. の代わりに
- 2. SpinWait.SpinUntilに代わり
- 3. 代わりにギャラリーウィジェット
- 4. 現代のフレームの代わりに?
- 5. 古代の "マーキー"タグの代わりに?
- 6. Windowsの代わりにタスクスケジューラ
- 7. fopen()の代わりにSqlite?
- 8. マイクロソフトセキュリティアプリケーションブロックの代わりに?
- 9. CVDisplayLinkの代わりに、NSTimer
- 10. fcntlの代わりに
- 11. コンポジションリフトの代わりにliftIO
- 12. MVS SSRSの代わりに?
- 13. JavaScriptの代わりにarray_count_values
- 14. Intent.FLAG_ACTIVITY_CLEAR_TASKの代わりに
- 15. の代わりにpthread_timedjoin_np
- 16. システムの代わりに( "PAUSE")?
- 17. JNotifyの代わりに?
- 18. 51degrees.mobiの代わりに?
- 19. Thread.Suspend()メソッドの代わりに
- 20. セレンウェブドライバ - getEvalの代わりに
- 21. IPの代わりに、URI
- 22. localStorageクッキーの代わりに?
- 23. ストップウォッチの代わりに?
- 24. SlideshowProディレクターの代わりに?
- 25. Application.DoEvents()の代わりに
- 26. GDI +の代わりに
- 27. Capybaraの代わりにSpecflow
- 28. static_pointer_castの代わりにunique_ptr
- 29. setIntervalの代わりに?
- 30. ビューモデルの代わりにJSON
を含むすべてのブラウザで動作するように、すなわち、問題を解決するために書いたサンプルコードは、すべての可能であればあなたのために、ブラウザの抽象化を処理するために、MooToolsはやjQueryのようなライブラリを使用しています。 –
ブラウザクロスブラウザのバージョンではなく、scrollX、scrollY、document.body.scrollLeft、document.body.scrollTop? – lifetimes
^^^^^ [*** pageYOffsetとdocument.body.scrollTop ***](http://help.dottoro.com/ljnvjiow.php) – adeneo