Rumah hujung hadapan web tutorial js 关于scrollLeft,scrollTop的浏览器兼容性测试_javascript技巧

关于scrollLeft,scrollTop的浏览器兼容性测试_javascript技巧

May 16, 2016 pm 05:40 PM
serasi

今天在修改原群组弹窗的时候,发现弹窗在谷歌浏览器chrome下的位置跟在别的浏览器下不一样.逐一排查,肯定是在计算窗口位置的时候,少加了scrollTop这个值.在查看源代码的时候发现直接采用

document.documentElement.scrollTop这个,但在chrome下这个值为0.

在有文档声明的情况下,也就是第一行有个dtd声明,标准浏览器认识document.documentElement.scrollTop,可chrome竟然不认识这斯.在没有文档声明的情况下,chrome,safari还是可以读取到scrollTop值.因为chrome是通过document.body.scrollTop获取值的.

解决这个问题:不用去那么麻烦去判断浏览器类别,因为在不同情况下,document.body、document.documentElement都有可能获取到不同的值的特点.问题就很好解决.
在获取浏览器或某div的scrollTop或scrollLeft时,我封装了一个方法:

复制代码 代码如下:

var ueScroll=(function(){
//获取scrollX
function scrollX(ele){
var element=ele || document.body;
return element.scrollLeft || (document.documentElement && document.documentElement.scrollLeft);
}
//获取scrollY
function scrollY(ele){
var element=ele || document.body;
return element.scrollTop || (document.documentElement && document.documentElement.scrollTop);
}
return {
left:scrollX,
top:scrollY
}
})()

在DEMO中各浏览器获取scrollTop,scrollLeft值差异性调用的方式也很方便简单的,只要跟普通的对象调用方式一样.

这个也可以直接用在textarea或div获取scrollTop,scrollLeft上的,只要后面传进一个dom对象即可.
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Versi Win10 yang paling stabil Versi Win10 yang paling stabil Dec 25, 2023 pm 07:58 PM

Versi Win10 yang paling stabil

Adakah Win11 menyokong kertas dinding dinamik? Adakah Win11 menyokong kertas dinding dinamik? Jan 01, 2024 pm 06:41 PM

Adakah Win11 menyokong kertas dinding dinamik?

Adakah Switch2 serasi dengan kartrij Switch? Adakah Switch2 serasi dengan kartrij Switch? Jan 28, 2024 am 09:06 AM

Adakah Switch2 serasi dengan kartrij Switch?

Pengenalan kepada kaedah tetapan win10 yang serasi dengan win7 Pengenalan kepada kaedah tetapan win10 yang serasi dengan win7 Jan 03, 2024 pm 05:09 PM

Pengenalan kepada kaedah tetapan win10 yang serasi dengan win7

Bolehkah program yang disusun oleh Mingw berjalan seperti biasa di bawah sistem Linux? Bolehkah program yang disusun oleh Mingw berjalan seperti biasa di bawah sistem Linux? Mar 19, 2024 pm 12:03 PM

Bolehkah program yang disusun oleh Mingw berjalan seperti biasa di bawah sistem Linux?

Kaedah untuk menyelesaikan ketidakserasian d3dx9_43.dll Kaedah untuk menyelesaikan ketidakserasian d3dx9_43.dll Feb 24, 2024 pm 10:06 PM

Kaedah untuk menyelesaikan ketidakserasian d3dx9_43.dll

Cara menangani ketidakserasian versi Eclipse Cara menangani ketidakserasian versi Eclipse Jan 04, 2024 am 10:29 AM

Cara menangani ketidakserasian versi Eclipse

Memperkenalkan keserasian antara sistem win10 dan versi ps Memperkenalkan keserasian antara sistem win10 dan versi ps Dec 30, 2023 pm 06:04 PM

Memperkenalkan keserasian antara sistem win10 dan versi ps

See all articles