मेरे पास एक HTML5 दस्तावेज़ है जो मीडिया प्रश्नों का उपयोग करता है। पुराने ब्राउजर के उपयोगकर्ताओं को पूरा करने के लिए मैं सिर्फ जेएस में व्यवहार का अनुकरण करने की कोशिश कर रहा था और mq-testing करने के लिए जेएस में व्यवहार का अनुकरण करने और आधुनिकता 2.5.3 (फ़ाइल को एचटीएमएल 5 बॉयलरप्लेट डाउनलोड से मिला) का उपयोग करने की कोशिश कर रहा था।आधुनिकizr 2.5.3 आईई और ओपेरा में मीडिया क्वेरी परीक्षण ब्रेक पेज
एक और चीज जो मैं करना चाहता हूं वह यूआई को थोड़ा बदल देता है यदि क्लाइंट सरल Modernizr.touch
का उपयोग करके स्पर्श ईवेंट का समर्थन करता है।
मैं इस निम्नलिखित तरीके से करना:
//$window is $(window)
if ($window.width() < 575 || Modernizr.touch){
//change UI layout a little
}
if (Modernizr.touch){
//enable tap-navigation for touch devices
}
if (!Modernizr.mq('only all and (min-width: 575px)')){ //fix non-media query browsers
$window.resize(function(){
if ($window.width() < 575){
//add CSS
} else {
//remove CSS
}).trigger('resize');
}
यह (और मोबाइल डेस्कटॉप) वेबकिट में ठीक काम करता है और फ़ायरफ़ॉक्स, अभी तक जब मैं ओपेरा में पेज (11.6) या Internet Explorer को खोलने का प्रयास (7 9 तक) नरक टूट जाता है। घटनाक्रम एक यादृच्छिक संख्या को आग लगेंगे, jQuery एनीमेशन ईमानदार होने के लिए आधे रास्ते से रुक जाएगा, मुझे कोई संकेत नहीं है कि क्या हो सकता है (हालांकि कोई कंसोल त्रुटियां नहीं)। जब मैं अपने पृष्ठ के सिर में आधुनिकता स्क्रिप्ट को हटा देता हूं, तो यह ठीक काम कर रहा है (पाठ्यक्रम की विशेषता का पता लगाने के अलावा ...)।
की तरह क्या मैं भी कर रहा हूँ html5shiv
उपयोग कर रहा है (मैं लोड हो रहा है कर रहा हूँ इस के बाद modernizr, फिर भी अभी भी सिर में):
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
मैं इस पर शक था में दोषी मामला आईई तोड़ता है, लेकिन चूंकि इसे ओपेरा के व्यवहार पर कोई प्रभाव नहीं लेना चाहिए, इसलिए मैं थोड़ा उलझन में हूं।
क्या मैं कुछ गलत कर रहा हूं या यह किसी प्रकार की बग है और मुझे अपनी सुविधा का पता लगाने के लिए एक और तरीका देखना चाहिए?
संपादित:
जब मैं पता लगाने के लिए कि मैं क्या निम्नलिखित में पता चला हो रहा है कोशिश कर रहा हूँ: Modernizr.mq('only all and (min-width: 575px)')
: क्या सभी बुराई की जड़ हो रहा है सिर्फ मीडिया क्वेरी परीक्षण है। जैसे ही इसे चीजें कहा जाता है पागल हो जाते हैं। मैं इसे कंसोल में जोड़ सकता हूं और सही परिणाम प्राप्त करूंगा, फिर भी ऐसा लगता है कि कुछ अजीब तरीके से कुछ तोड़ना है। साथ ही, मैं कंसोल से इसे कॉल करके एक चल रहे पृष्ठ को तोड़ सकता हूं (जिसने इसे पहले नहीं कहा है)।
संपादित नंबर 2:
जबकि एक वैकल्पिक तरीका सुविधा परीक्षण मैं this library पाया Dev.Opera में अधिक है कि (वाह!) ओपेरा में ठीक से काम करने लगता है संभाल करने के लिए खोज। अभी तक यह आईई (वेबकिट और Firefox ठीक हैं) में काम नहीं करता है के रूप में इसके बारे में शिकायत:
style.innerText = '@media ' + str + ' { #'+id+' { display:none !important; } }';
भावहीन।
संपादित नंबर 3:
तो मैं सिर्फ 2.0.6 Modernizr के लिए डाउनग्रेड और चीजों को अब सभी ब्राउज़रों में ठीक काम कर रहे हैं। हालांकि मुझे अभी भी यकीन नहीं है कि यह एक बग है या मैं कुछ गलत कर रहा हूं, इसलिए मैं इसे जवाब देने से पहले कुछ समय इंतजार करूंगा।
मुझे एक ही समस्या है। जब भी मैं Modernizr.mq() का उपयोग करता हूं, तो मैं पेज पर अपनी सारी कार्यक्षमता खो देता हूं, बस आईई में। (ओपेरा परीक्षण नहीं किया है)। मुझे कंसोल में कोई भी त्रुटि दिखाई नहीं देती है। –
@EdCharbeneau ने डाउनग्रेड आपकी मदद की है? मेरे लिए पूरी तरह से काम किया। – m90
मैं एक और लाइब्रेरी का उपयोग करता हूं जिस पर आधुनिकता पर निर्भरता है इसलिए मैं डाउनग्रेड और कुछ और तोड़ने का जोखिम नहीं लेना चाहता था। मैंने नीचे एक जवाब दिया जिसने मेरे लिए समस्या तय की, दुर्भाग्य से यह मुझे एक और निर्भरता दे दी। मैं खुश नहीं हूं, लेकिन यह खुला स्रोत है, आपको अच्छा डब्ल्यू/बुरा लेना होगा। –