2010-10-12 19 views
4

在像iPad这样的移动设备上,我想禁用只有在position:fixed被支持的情况下才能使用的功能。有没有办法在不使用用户代理字符串的情况下检测这些设备?原因是我想避免在可能的情况下搜索iPad,iPhone,iPod,Android等。如何检测缺位:以通用方式修复?

回答

3

运行以下函数来测试position:fixed支持。

function() { 
    var isSupported = null; 
    if (document.createElement) { 
     var el = document.createElement("div"); 
     if (el && el.style) { 
      el.style.position = "fixed"; 
      el.style.top = "10px"; 
      var root = document.body; 
      if (root && root.appendChild && root.removeChild) { 
       root.appendChild(el); 
       isSupported = el.offsetTop === 10; 
       root.removeChild(el); 
      } 
     } 
    } 
    return isSupported; 
}

http://kangax.github.com/cft/#IS_POSITION_FIXED_SUPPORTED

+2

显然这会返回移动Safari中的误报(http://stackoverflow.com/questions/973875/jquery-check-if-browser-support-position-fixed)。 – 2010-10-12 05:43:47

+0

为什么不简单设置一个位置:固定在某个元素上,然后再读回来?如果position:fixed不支持返回值,理论上不应该等于fixed ... – jayarjo 2013-04-16 08:11:08

0

也返回上的Opera Mini假阳性。

为什么不简单地设置一个位置:固定在某个元素上然后再读回来?如果位置:固定不支持返回值,理论上不应该等于

不适用于Opera Mini:您可以将位置设置为“固定”,即使它是“固定”不支持。

相关问题