如何检测浏览器是否支持js onscroll ..立即

问题描述:

我想检测浏览器是否支持onscroll立即?问题是IOS的旧IOS版本支持onscroll,但它会在滚动结束时触发。但我想不出一种方法来检测这个?如何检测浏览器是否支持js onscroll ..立即

+0

既然你用jquery标记了这个问题,是element.on(“scroll”,function(){})不工作? – 2015-02-06 09:46:10

+0

@kasperTaeymans - 该测试如何说明问题描述的'scroll'的两个实现之间的区别?这甚至不会告诉你它是否被支持*在事件被解雇之前。 – Quentin 2015-02-06 09:50:49

+0

它不,但为什么这个问题标签为jquery? – 2015-02-06 09:52:16

既然你不试图检测,onscroll是否支持,但你试图检查它的实现我会说,代理嗅探是最好的方法(尽管代理嗅探通常是坏事)。

您不指定具有这种滚动事件行为的iOS版本,所以我建议在页面加载时处理用户代理字符串。

http://www.webapps-online.com/online-tools/user-agent-strings/dv/operatingsystem51849/ios拥有iOS 7和8用户代理字符串的良好来源。如果没有匹配,那么应用程序可以转到另一组定义的滚动行为。

旧版本然后IOS8暂停“DOM绘画”,而滚动事件被触发。 一个关于IOS版本之间的差异onscroll优秀的文章可以在这里找到:

http://developer.telerik.com/featured/scroll-event-change-ios-8-big-deal/

http://ejohn.org/blog/learning-from-twitter/

由于IOS版本8的onscroll将不断闪光。你可以用javascript来检查IOS版本。

function iOSversion() { 
    if (/iP(hone|od|ad)/.test(navigator.platform)) { 
    var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/); 
    return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)]; 
    } 
} 

version = iOSversion(); 

if (version[0] > 7) { 
    alert('Continuous scrolling is working!'); 
}