2012-06-22 22 views
7

क्या यह पता लगाने के लिए कोई विश्वसनीय तरीका है कि ब्राउज़र position fixed का समर्थन करता है या नहीं?पता लगाएँ कि ब्राउज़र स्थिति का समर्थन करता है: निश्चित

मुझे कुछ समाधान मिल गए हैं लेकिन उनमें से कोई भी सभी ब्राउज़रों पर अच्छा काम नहीं कर रहा है।

+0

किस तत्व के लिए? –

+0

आपका मतलब है * चिपचिपा पाद लेख * या इसी तरह के लिए कुछ? –

उत्तर

9

jQuery मोबाइल के साथ मोबाइल एप्लिकेशन विकसित करते समय मुझे एक ही समस्या थी। हेडर स्थिति तय करना चाहिए है (यदि ब्राउज़र द्वारा समर्थित) और समाधान सीएसएस पर एक डिफ़ॉल्ट position: fixed साथ हेडर स्थापित करने के लिए था और निम्न विधि के माध्यम से समर्थित संपत्ति जाँच:

function isPositionFixedSupported() { 
    return $('[data-role="header"]').css('position') === 'fixed'; 
} 

दिए गए मान static है यदि ब्राउज़र द्वारा समर्थित नहीं है।

3

यह कोड पूरी तरह से ठीक काम करता है। आईई 6 के साथ विंडोज एमई बॉक्स पर बस इसका परीक्षण किया, 'शून्य' देता है क्योंकि आईई 6 position:fixed; का समर्थन नहीं करता है।

वैसे, यह मूल रूप से मेरा कोड नहीं है। सभी क्रेडिटKangax's Githubपर जाते हैं जिनके पास ब्राउज़र सुविधाओं का परीक्षण करने के लिए कई फ़ंक्शन हैं।

function() { 
    var container = document.body; 
    if (document.createElement && 
    container && container.appendChild && container.removeChild) { 
    var el = document.createElement("div"); 
    if (!el.getBoundingClientRect) { 
     return null; 
    } 
    el.innerHTML = "x"; 
    el.style.cssText = "position:fixed;top:100px;"; 
    container.appendChild(el); 
    var originalHeight = container.style.height, originalScrollTop = container.scrollTop; 
    container.style.height = "3000px"; 
    container.scrollTop = 500; 
    var elementTop = el.getBoundingClientRect().top; 
    container.style.height = originalHeight; 
    var isSupported = elementTop === 100; 
    container.removeChild(el); 
    container.scrollTop = originalScrollTop; 
    return isSupported; 
    } 
    return null; 
} 

यह चलाता है, यह काम करता है, अगर ऐसा नहीं होता है, तो आप एक अशक्त मिल जाएगा है।

+0

यह समाधान आईओएस 5 पर काम नहीं करता है। –

+0

ऐसा इसलिए है क्योंकि आईओएस 5 एक चंचल महिला है। कृपया [स्थिति: निश्चित और जेक्यूएम के नवीनतम वितरण] के संबंध में दस्तावेज़ देखें (http://jquerymobile.com/blog/2012/04/13/announcing-jquery-mobile-1-1-0/) – Ohgodwhy

+0

क्या यह एकमात्र ज्ञात है मुद्दा? क्या आईओएस 5 के अपवाद के बाद इस विधि का उपयोग करना सुरक्षित है? –

-1

ओहोडोवी का कोड सही है, लेकिन आईओएस के लिए, आप उपयोगकर्ता एजेंट की जांच कर सकते हैं और देख सकते हैं कि यह आईओएस सफारी है या नहीं। फिर वापस आओ कि यह समर्थित है। उपयोगकर्ता एजेंट स्ट्रिंग

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 
Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7 

मैं इस कोड करने के यकीन नहीं कर रहे हैं, लेकिन मुझे यकीन है कि यह आप आईओएस पता लगाने के लिए क्या करने की जरूरत है हूँ।

+2

डिवाइस स्नीफिंग नहीं है और सभी ब्राउज़रों में पता लगाने के लिए कभी भी एक विश्वसनीय तरीका नहीं होगा। – user2867288

1

क्या ऐसा कुछ मोबाइल ब्राउज़र पर काम करता है?

function isFixedPositionSupported() { 
    var e = document.createElement('div') 
    try { 
     e.style.position = 'fixed' 
     return e.style.position == 'fixed' 
    } catch (exception) { 
     return false 
    } 
} 
+1

काम नहीं करता है, अगर यह समर्थित नहीं है तो भी हमेशा सत्य लौटाता है। –

+0

फ़ायरफ़ॉक्स और क्रोम पर काम करें। – fred727

1
var supportFixed = (function() { 
    var elem = document.createElement('div'); 
    elem.style.cssText = 'position:fixed'; 
    if (elem.style.position.match('fixed')) return true; 
    return false; 
}()); 
+0

यह अब तक मेरे लिए सबसे अच्छा समाधान जैसा प्रतीत होता है। मैं jquery सुरक्षित सुरक्षित इस्तेमाल किया। var $ test = $ ("

"); $ ("बॉडी")। संलग्न करें ($ परीक्षण); $ test.css ("स्थिति", "निश्चित"); var supportFixed = $ test.css ("स्थिति") === "निश्चित"; $ test.remove(); --- लेकिन इसने मेरे मुद्दे को हल नहीं किया।आईओएस 4 का कहना है कि यह तय करता है भले ही यह नहीं करता है। –

+0

आईपैड पर स्थिति के छद्म समर्थन के कारण झूठी सकारात्मक देता है: निश्चित – nebulousGirl

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