2010-09-15 23 views
11

मैं एक पृष्ठ स्थापित करने पर काम कर रहा हूं और इसे ब्राउज़र में अच्छी तरह से देखने के लिए कठिनाई हो रही है (वास्तव में केवल आईई, क्योंकि यह मोज़िला और वेबकिट के लिए ठीक से प्रस्तुत करता है)। मैं आईई 6 के बाद से तय की गई पुरानी आईई बग पर गंभीरता से विचार करने से पहले क्विर्क मोड को रद्द करना चाहता हूं। कंटेनर पेज में एक घोषित कार्यप्रणाली है, हालांकि आईफ्रेम कोड नहीं है। क्या आईफ्रेम सामग्री क्विर्क-मोड में प्रदान की जाएगी (क्योंकि इसमें कोई कार्यप्रणाली नहीं है) या मानक मोड (क्योंकि कंटेनर में एक डॉक्टरेट है)? दुर्भाग्य से इस उत्तर पोस्ट किया गया नोटिस करने में विफल रहा है और काफी समय स्वीकार किए जाते हैं पहले IE9 अस्तित्व में जो के संदर्भ में परिवर्तन किया हैक्या एक आईफ्रेम क्विर्क मोड में प्रस्तुत करेगा?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
... 
<body> 
... 
<iframe ...> 
    <html> 
    <head> 
    ... 
    </head> 
    <body> 
    .... 
    </body> 
    </html> 
</iframe> 
... 
</body> 
</html> 

उत्तर

15

चेतावनी एम्प्टर

कुछ के रूप में: स्रोत इस योजना इस प्रकार है प्रश्न। मैं सामान्य रूप से इसे और भी डाउनवॉट्स को पकड़ने से बचने के लिए हटा देता हूं लेकिन चूंकि उत्तर वास्तव में अभी भी सच है और ब्राउज़र जनसांख्यिकी के एक बड़े हिस्से के लिए दुखद रूप से प्रासंगिक है, इसलिए मैं इसे छोड़ दूंगा। बस इसे और भी कम मत करो।


Quirksmode: IE iframes का अलग दस्तावेज नोड्स के रूप में, doctype विरासत में मिला नहीं है प्रस्तुत हुई है, और विचित्रता डिफ़ॉल्ट है।

संपादित करें: किसी और आपकी समस्या और गैर विरासत का प्रमाण (अपने बुकमार्क करने के लिए धन्यवाद के साथ: पी) के के demonstration

हालांकि, आपके द्वारा चुनी गई "लगभग" अपने doctype जो iframes का मतलब है की अनुमति नहीं है के रूप में वैसे भी। वैध iframes प्राप्त करने का एकमात्र तरीका यह है कि यदि माता-पिता quirks में था जो विरासत बनाता है या एक महत्वपूर्ण बिंदु नहीं है।

Recommended reading

+7

गलत - IE9 के रूप में, doctype विरासत में मिला है ... आपके भ्रम तथ्य यह है कि IE8 में, इस तरह से अलग है ... –

+1

साथ सहमत की वजह से उपजी व्याकुलता। आईई 10 के साथ मेरा एक ही मुद्दा है। मूल पृष्ठ IFrame पर प्रचार कर रहा है चाहे उस पृष्ठ में निर्दिष्ट क्या है (वह पृष्ठ अलग-अलग होता है जब यह स्वयं खोला जाता है)। –

+2

मेरा "भ्रम" इस तथ्य से आता है कि उत्तर कई महीनों तक आईई 9 की भविष्यवाणी करता है। करने के लिए सहायक चीज तदनुसार संपादित करना होगा, लेकिन मुझे लगता है कि डाउनवॉट मजेदार और आसान हैं, और पढ़ना तकनीक है। डाउनवोट्स की क्षतिपूर्ति के लिए – annakata

23

आईई 9 से पहले, आईफ्रेम के भीतर का वेबपृष्ठ अपने स्वयं के सिद्धांत के अनुसार प्रस्तुत करेगा, न कि मूल कंटेनर के सिद्धांत के अनुसार। हालांकि, आईई 9 में, माइक्रोसॉफ्ट ने व्यवहार को बदल दिया ताकि बच्चे आईफ्रेम को पैरेंट कंटेनर से अपना डॉक्टरेट/प्रतिपादन प्राप्त हो।

ध्यान दें कि आईई 9 अभी भी परंपरागत तरीके से व्यवहार करेगा (iframe अपने स्वयं के सिद्धांत का सम्मान करता है) जब भी संगतता दृश्य का उपयोग किया जाता है।

आपकी स्थिति में लोगों के लिए सबसे अच्छा कामकाज - मानकों के अनुरूप कंटेनर पेज लिखना, लेकिन एक क्विर्क मोड पेज के साथ एक आईफ्रेम शामिल करने की आवश्यकता है - अपने डॉक्टरेट और ओपनिंग टैग के बीच निम्नलिखित मेटा टैग्स को जोड़ना है अभिभावक पृष्ठ।

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> 
<meta http-equiv="X-UA-Compatible" content="IE=8" /> 

ये टैग अनिवार्य रूप से आईई 7 या आईई 8 का नाटक करने के लिए बताएंगे। अनुकरण में शामिल तर्क तर्क है जो बच्चे आईफ्रेम के लिए प्रतिपादन मोड निर्धारित करने के लिए उपयोग किया जाता है। इस वर्कअराउंड का नकारात्मक पक्ष यह है कि आप अपने मूल पृष्ठ में IE9 द्वारा समर्थित किसी भी नई सुविधाओं का उपयोग करने में सक्षम नहीं होंगे, लेकिन शायद यह संभवतः बच्चे पृष्ठ में भारी प्रतिपादन त्रुटियों के लिए बेहतर है।

अधिक जानकारी के लिए http://web.archive.org/web/20110905060718/http://www.sitepoint.com/forums/html-xhtml-52/ie9-iframes-doctypes-you-743000.html देखें।

+0

क्या कोई अन्य स्ल्यूशन है जो क्विर्क या EmulateIE7 बच्चे iframe के साथ पैरेंट आईई 9 मानक मोड फ़्रेम निष्पादित करने में सक्षम बनाता है? – Tal

+0

@ मिकिपर: पसंदीदा? नहीं, यह नहीं है। तथ्य यह है कि, आपको कभी भी क्विर्क मोड के साथ HTML का उत्पादन नहीं करना चाहिए। कुछ महत्वपूर्ण एमएस उत्पाद बीटीडब्ल्यू करते हैं, बिना कामकाज के ... –

+4

ओह और वैसे: इसे ऊपर उठाना बंद करो, यह अच्छा लगता है, लेकिन यह काम नहीं करता है। –

2

IE9 के लिए MSDN से प्रलेखित समाधान के लिए यहाँ मेरा उत्तर देखें: How to force Iframe to run quirks under a standard parent frame

संक्षेप में, यह अगर माता पिता पेज IE9 मोड में प्रदर्शित हो रहा है एक iframe में quirks मोड ट्रिगर करने के लिए संभव नहीं है, लेकिन यह संभव है ट्रिगर करने के लिए "क्विर्क मोड इम्यूलेशन" आईई 9 रेंडरिंग इंजन में एम्बेडेड।

JSBin डेमो: http://jsbin.com/ozejuk/1/

अतिरिक्त पठन: http://msdn.microsoft.com/en-us/library/gg558056(v=vs.85).aspx