Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Modernizer位置固定测试未完成_Javascript_Css_Html_Css Position_Modernizr - Fatal编程技术网

Javascript Modernizer位置固定测试未完成

Javascript Modernizer位置固定测试未完成,javascript,css,html,css-position,modernizr,Javascript,Css,Html,Css Position,Modernizr,Modernizer很好,但是位置:fixed的示例测试非常不完整: iOS 4和更低版本返回true,但它不支持位置:fixed Windows上的Opera返回false,但它确实支持position:fixed 我发现了另一个基于Modernizer测试的测试,但添加了iOS检测:。 由于即将推出的iOS5确实支持位置:fixed,因此它并不是未来的证明 你们能帮我找到一种不用浏览器嗅探就能测试iOS中固定位置的方法吗 // Test for position:fixed suppor

Modernizer很好,但是
位置:fixed
的示例测试非常不完整:

  • iOS 4和更低版本返回
    true
    ,但它不支持
    位置:fixed
  • Windows上的Opera返回
    false
    ,但它确实支持
    position:fixed
我发现了另一个基于Modernizer测试的测试,但添加了iOS检测:。 由于即将推出的iOS5确实支持
位置:fixed
,因此它并不是未来的证明

你们能帮我找到一种不用浏览器嗅探就能测试iOS中固定位置的方法吗

// Test for position:fixed support
Modernizr.addTest('positionfixed', function () {
    var test  = document.createElement('div'),
      control = test.cloneNode(false),
         fake = false,
         root = document.body || (function () {
            fake = true;
            return document.documentElement.appendChild(document.createElement('body'));
      }());

   var oldCssText = root.style.cssText;
   root.style.cssText = 'padding:0;margin:0';
   test.style.cssText = 'position:fixed;top:42px';
   root.appendChild(test);
   root.appendChild(control);

   var ret = test.offsetTop !== control.offsetTop;

   root.removeChild(test);
   root.removeChild(control);
   root.style.cssText = oldCssText;

   if (fake) {
      document.documentElement.removeChild(root);
   }

   return ret;
});

我为iOS编写了这个测试:


这有点凌乱,但似乎有效。Android仍然是一个问题,因为它的“假”位置:修复了

我发现你需要插入一些黑客来获得一个功能位置修复测试。例如,我在测试中插入了一个hack,对于运行v.5或更高版本的iOS设备,它返回true:

/*iPhone/iPad Hack*/
if(navigator.userAgent.match(/iPad|iPhone/i) !== null){
    /*Check if device runs iOS 5 or higher*/
    isSupported = navigator.userAgent.match(/[5-9]_[0-9]/) !== null;
}

我不确定这段代码是否“干净”,但它确实帮了我的忙。

您好,您使用的是最新版本的Modernizer吗。我想今天或昨天发布了一个新版本,它涵盖了这些bug。无论如何,position:fixed在当前的移动浏览器上很差。我没有一个解决方案给你,但是现代人意识到了这个问题:--也许值得你摇摇他们的树,看看他们是否能把它修好。这是目前最大的未解决的功能检测谜团之一。到目前为止,还没有一个固定pos的检测功能能够成功地处理移动webkit。我的理解是,对Postton:fixed的支持需要滚动。迄今为止,Mobile safari没有滚动。而是移动并调整悬停在内容上方的视口的大小。测试滚动性是否足够?或者IOS也没有通过测试?@julien_c虽然有很多新的测试,但Modernizer 2.5仍然没有为position:fixed提供一个。