2011-06-11 27 views
21

Modernizr महान है लेकिन position: fixed के लिए उदाहरण के परीक्षण काफी अधूरा है:Modernizr स्थिति तय परीक्षण अधूरा

  • आईओएस 4 और कम रिटर्न true जबकि इसका समर्थन नहीं करता position: fixed
  • ओपेरा विंडोज पर रिटर्न false जबकि यह का समर्थन नहीं करता position: fixed

मैंने पाया Modernizr परीक्षण पर लेकिन आईओएस का पता लगाने के साथ आधारित एक और परीक्षण कहा: https://gist.github.com/855078/109ded4b4dab65048a1e7b4f4bd94c93cebb26b8। यह वास्तव में भविष्य का सबूत नहीं है क्योंकि आगामी आईओएस 5 position: fixed का समर्थन करता है।

क्या आप ब्राउजर स्नीफिंग के बिना आईओएस में तय की गई स्थिति की जांच करने का तरीका ढूंढने में मेरी मदद कर सकते हैं?

// 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; 
}); 
+0

हाय, क्या आप आधुनिकता के नवीनतम संस्करण का उपयोग कर रहे हैं। आज या कल एक नया जारी किया गया था, मुझे लगता है और इसमें ऐसी बग शामिल हैं। किसी भी मामले में, स्थिति: वर्तमान मोबाइल ब्राउज़र पर तय गरीब है। – Francisc

+0

हाँ, Modernizr 2 का उपयोग करते हुए। इसने प्रलेखन में उस उदाहरण को नहीं बदला है। – DADU

+0

मेरा मतलब 2.X था। (:; या पदों fixd: तय, वर्तनी अर्थात स्थिति) आप पिछले 2-3 दिनों के सबसे ऊपर में पुस्तकालय डाउनलोड किया है, यह शायद या तो एक आधुनिक बग या अपने सीएसएस में वह हो जिस पर तत्व सेट का उल्लेख को ठीक किया जाना है। 2.012 (वर्तमान में नवीनतम) का उपयोग कर – Francisc

उत्तर

1

मैं iOS के लिए इस परीक्षा में लिखा है: http://mnobeta.no/2011/09/test-position-fixed-for-iphone/

यह थोड़ा गंदा है, लेकिन काम करने के लिए लगता है। एंड्रॉइड अभी भी एक "नकली" position:fixed की वजह से एक समस्या है।

+0

एक नज़र ... – DADU

0

मुझे पता चला है कि आपको एक कार्यात्मक स्थिति प्राप्त करने के लिए कुछ हैक्स डालने की आवश्यकता है। उदाहरण के लिए मैं कि आईओएस के लिए सच रिटर्न अपने परीक्षण में एक हैक डाला है v.5 या ऊपर चल deviced:

/*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; 
} 

मुझे यकीन है कि कैसे "क्लीन" इस कोड है नहीं कर रहा हूँ, लेकिन यह मेरे लिए काम कर देता है ।

+3

सब पर ... आप के लिए जाँच कर रहे हैं साफ नहीं लेने के लिए जा ओएस संस्करण और सुविधा नहीं ... –

संबंधित मुद्दे