डिफ़ॉल्ट रूप से IE8 संगतता मोड में वेबसाइटों को इंट्रानेट करता है। मैंने मेटा हेडर को IE8 में बदलने की कोशिश की, लेकिन यह मेटा हेडर को स्वीकार नहीं करता है और केवल ब्राउज़र सेटिंग का उपयोग करता है। क्या कोई इसे अक्षम करना जानता है?
डिफ़ॉल्ट रूप से IE8 संगतता मोड में वेबसाइटों को इंट्रानेट करता है। मैंने मेटा हेडर को IE8 में बदलने की कोशिश की, लेकिन यह मेटा हेडर को स्वीकार नहीं करता है और केवल ब्राउज़र सेटिंग का उपयोग करता है। क्या कोई इसे अक्षम करना जानता है?
जवाबों:
इंट्रानेट में संगतता मोड को ओवरराइड करना संभव है।
IIS के लिए, बस नीचे दिए गए कोड को web.config में जोड़ें। IE9 के साथ मेरे लिए काम किया।
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
अपाचे के लिए बराबर:
Header set X-UA-Compatible: IE=Edge
और नगीनक्स के लिए:
add_header "X-UA-Compatible" "IE=Edge";
और एक्सप्रेस के लिए।
res.set('X-UA-Compatible', 'IE=Edge')
माइकल Irigoyen सही है लेकिन यह थोड़ा और अधिक जटिल है ...
यदि आप पॉल आयरिश द्वारा अद्भुत बॉयलरप्लेट का उपयोग कर रहे हैं तो आपके पास कुछ इस तरह होगा: -
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
यह IE में अपेक्षित और बल के रूप में काम नहीं करेगा। इंट्रानेट वातावरण में संगतता मोड में यदि आपके पास "संगतता दृश्य में इंट्रानेट साइट प्रदर्शित" है। इंट्रानेट संगतता मोड को रोकने के लिए आपको सशर्त IE टिप्पणियों को हटाने की आवश्यकता है।
तो निम्न कोड काम करेगा:
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
मूल रूप से यदि आप <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
स्टेटमेंट से पहले सशर्त IE टिप्पणियों को ट्रिगर करते हैं तो आपको इंट्रानेट वातावरण में संगतता मोड में मजबूर किया जाएगा यदि आप डिफ़ॉल्ट सेटिंग्स के साथ IE9 चला रहे हैं।
अद्यतन - अतिरिक्त जानकारी: लेकिन ध्यान दें कि HTML5 boilplate काम करेगा कि एक चाल है:
DOCTYPE से पहले एक emtpy, सशर्त टिप्पणी जोड़ें । और साथ ही ध्यान दें, कि जब आप ऐसा करते हैं , तब आप निर्देश के चारों ओर सशर्त टिप्पणियां भी जोड़ सकते हैंX-UA-Compatible
, जिससे पृष्ठ HTML5-मान्य हो जाता है। उदाहरण के लिए:
<!--[if HTML5]><![endif]-->
<!doctype html>
<!--[if the boilerplate conditionals goes here<![endif]-->
<head>
<!--[if !HTML5]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
एक ब्लॉग पोस्ट जो इस उत्तर के पहले भाग से प्रेरित था , में अधिक विवरण है। और जिस तरह से: के रूप में है कि ब्लॉग पोस्ट में उल्लेख किया है, एक भी एक साथ DOCTYPE से पहले सशर्त टिप्पणी की जगह ले सकता अर्ध सशर्त साथ टिप्पणी कोई शर्त : <!--[]-->
। इस प्रकार, जैसे:
<!--[]-->
<!doctype html>
<!--[if the boilerplate conditionals goes here<![endif]-->
<head>
<!--[if !HTML5]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
लेकिन ध्यान दें कि बाद वाले संस्करण ( <--[]--><!DOCTYPE html>
), जैसा कि किसी अन्य प्रश्न के उत्तर के द्वारा समझाया गया है , अच्छी तरह से ज्ञात समस्या को सक्रिय करें कि यह - विरासत समर्थन IE संस्करणों के लिए बिना समर्थन X-UA-Compatioble
(पढ़ें: IE7 और IE6 के लिए) - ब्राउज़र में लाएं quirks मोड।
यदि आप "टूल" मेनू को नीचे खींचते हैं और "संगतता दृश्य सेटिंग" चुनते हैं, तो उस डायलॉग में सबसे नीचे एक सेटिंग "संगतता मोड में इंट्रानेट साइट प्रदर्शित करें" है। यदि आप इसे अनचेक करते हैं जो समस्या को हल करना चाहिए और IE DOCTYPE के आधार पर मोड का उपयोग करेगा।
इस प्रश्न के उत्तर में कुछ निश्चित भ्रम की स्थिति है।
शीर्ष उत्तर वर्तमान में एक सर्वर-साइड समाधान है जो http हेडर में एक ध्वज सेट करता है और कुछ टिप्पणियां संकेत दे रही हैं कि मेटा टैग का उपयोग कर समाधान बस काम नहीं करता है।
मुझे लगता है कि यह ब्लॉग प्रविष्टि अनुकूलता मेटा जानकारी का उपयोग करने का एक अच्छा अवलोकन देता है और मेरे अनुभव में वर्णित के रूप में काम करता है: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/29/use-x- UA- संगत करने के लिए बनाने के टिकाऊ-उद्यम-वेब-applications.aspx
मुख्य बिंदु:
एक महत्वपूर्ण बिंदु (और मुझे लगता है कि इस बिंदु से बहुत भ्रम होता है) यह है कि IE में दो "कक्षाएं" मोड हैं:
दस्तावेज़ मोड रेंडरिंग इंजन (वेब पेज कैसे प्रस्तुत किया गया है) निर्धारित करता है।
ब्राउज़र मोड यह निर्धारित करता है कि उपयोगकर्ता-एजेंट (यूए) स्ट्रिंग IE सर्वरों को क्या भेजता है, दस्तावेज़ मोड IE किससे चूक करता है और IE कैसे सशर्त टिप्पणियों का मूल्यांकन करता है।
दस्तावेज़ मोड बनाम ब्राउज़र मोड की जानकारी के बारे में अधिक इस लेख में पाया जा सकता है: http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for- साइट-developers.aspx? रीडायरेक्ट सच =
मेरे अनुभव में संगतता मेटा डेटा केवल दस्तावेज़ मोड को प्रभावित करेगा । इसलिए यदि आप ब्राउज़र का पता लगाने पर भरोसा कर रहे हैं तो यह आपकी मदद नहीं करेगा। लेकिन अगर आप फीचर डिटेक्शन का उपयोग कर रहे हैं तो यह जाने का तरीका होना चाहिए।
इसलिए मैं इस वाक्य रचना का उपयोग करके मेटा टैग (html पृष्ठ में) का उपयोग करने की सलाह दूंगा:
<meta http-equiv="X-UA-Compatible" content="IE=9,10" ></meta>
सूचना: आपके द्वारा परीक्षण किए गए ब्राउज़र मोड की सूची दें।
ब्लॉग पोस्ट EmulateIEX के उपयोग के खिलाफ भी सलाह देता है। यहाँ एक उद्धरण:
यह कहा जा रहा है, एक बात मुझे अजीब लगती है, जब एक आवेदन EmulateIE7, या EmulateIE8 का अनुरोध करता है। ये अनुकरण मोड स्वयं निर्णय हैं। इसलिए, आप जो चाहते हैं, उसके बारे में विशिष्ट होने के बजाय, आप दो चीजों में से एक के लिए पूछ रहे हैं और फिर एक DOCTYPE के लिए कोड में कहीं और देखकर उन दो चीजों का निर्धारण कर रहे हैं (और फिर यह समझने का प्रयास कर रहे हैं कि क्या DOCTYPE आपको मानक देगा या इसकी सामग्री पर निर्भर करता है - एक और कभी-कभी भ्रमित कार्य)। ऐसा करने के बजाए, मुझे लगता है कि प्रतिक्रिया देने के बजाय, जो आप चाहते हैं, उसे सीधे तौर पर निर्दिष्ट करने के लिए यह बहुत अधिक समझ में आता है। यदि आप IE7 मानक चाहते हैं, तो IE = EmulateIE7 के बजाय IE = 7 का उपयोग करें। (ध्यान दें कि इसका मतलब यह नहीं है कि आपको DOCTYPE का उपयोग नहीं करना चाहिए - आपको करना चाहिए।)
इस मेटाटैग को आज़माएं:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
यह IE8 को IE8 मानक मोड के रूप में प्रस्तुत करने के लिए बाध्य करना चाहिए, भले ही "संगतता दृश्य में इंट्रानेट साइटों को प्रदर्शित करें" की जाँच की जाती है [या तो इंट्रानेट या सभी वेबसाइटों के लिए], मैंने आईई 8.0.6 पर अपना स्वयं का प्रयास किया
हमारे सिस्टम व्यवस्थापक ने हमारे संगठन के लिए विश्व स्तर पर बॉक्स को अनचेक करके इस मुद्दे को हल किया। उपयोगकर्ताओं को लॉग ऑफ करने की भी आवश्यकता नहीं थी।
मुझे एक काम करने वाला उत्तर मिला जो जाँची गई इंट्रानेट संगतता दृश्य को ओवरराइड करने की अनुमति देता है। बस अपने पृष्ठ की OnInit घटना में इस पंक्ति को जोड़ें (कोई मेटा या web.config customHeader की आवश्यकता नहीं):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
हेडर में निम्नलिखित डालने की कोशिश करें:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
सौजन्य पॉल आयरिश के एचटीएमएल 5 बॉयलरप्लेट (लेकिन यह एक्सएचटीएमएल संक्रमणकालीन में भी काम करता है)।
मैं मेटा टैग को हेड सेक्शन में FIRST TAG के रूप में निर्दिष्ट करके कम्पैटिबिलिटी मोड को ओवरराइड करने में सक्षम था , न केवल पहले मेटा टैग के रूप में और केवल VERY FIRST TAG के रूप में ।
मेरे उत्कृष्ट उत्तर में इसे डालने के लिए @ stefan.s को धन्यवाद। मेरे पढ़ने से पहले:
यह काम नहीं किया
<head>
<link rel="stylesheet" type="text/css" href="https://stackoverflow.com/qmuat/plugins/editors/jckeditor/typography/typography.php"/>
<meta http-equiv="x-ua-compatible" content="IE=9" >
लिंक टैग को रास्ते से हटा दिया और यह काम कर गया
यह काम करता है :
<head><meta http-equiv="x-ua-compatible" content="IE=9" >
तो IE8 क्लाइंट संगतता का उपयोग करने के लिए सेट IE8 मानक मोड के रूप में पृष्ठ को प्रस्तुत करता है - सामग्री = 'IE = 9' का अर्थ है IE9 सहित और तक उपलब्ध उच्चतम मानक का उपयोग करें।
यह बिल्कुल समाधान नहीं है लेकिन, मुझे लगता है कि यह सबसे अच्छा है। हमारी इंट्रानेट साइटों पर हम लोगों को बताते हैं कि इसे केवल फ़ायरफ़ॉक्स द्वारा ही एक्सेस किया जा सकता है, हम कृपया इई उपयोगकर्ताओं को इधर-उधर न करें। सर्वर या क्लाइंट पक्ष पर उपयोगकर्ता एजेंट की जाँच करें और उन्हें IE से एक्सेस से इनकार करें। और मैं एक .NET प्रोग्रामर हूं।
मैं इस मुद्दे से जूझ चुका था और एक अनूठा समाधान और अंतर्दृष्टि प्रदान करने में मदद करना चाहता था।
कुछ AJAX आधारित रूपरेखा javascripts और स्टाइलशीट को इंजेक्ट करेगी <head>
और ऐसा करने से लगता है कि अच्छी तरह से स्थापित मेटा टैग समाधान को ठीक से काम करने से रोका जा सकता है। इस मामले में मैंने पाया कि सीधे HTTP प्रतिक्रिया हेडर में इंजेक्ट करने पर, एंड्रा सेसी के जवाब की तरह समस्या का समाधान हो जाएगा।
हालांकि, जावा सर्वलेट्स का उपयोग करने वाले लोगों के लिए, इसे हल करने का एक अच्छा तरीका है सर्वलेटफिल्टर का उपयोग करना।
public class EmulateFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletResponse response = ((HttpServletResponse)arg1);
response.addHeader("X-UA-Compatible", "IE=8");
arg2.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
हम वसंत-अपाचे-टोमकैट वातावरण में इस समस्या को RequestInterceptor विधि में एक सिंगल लाइन जोड़कर हल कर सकते हैं -
//before the actual handler will be executed
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
throws Exception {
// Some logic
// below statement ensures IE trusts the page formatting and will render it acc. to IE 8 standard.
response.addHeader("X-UA-Compatible", "IE=8");
return true;
}
संदर्भ से - फ़िल्टर कैसे बनाएं और प्रतिक्रिया हेडर को संशोधित करें यह कवर करता है कि हम अनुरोधकर्ता (स्प्रिंग) के माध्यम से इस समस्या को कैसे हल कर सकते हैं।
यदि आप चाहते हैं कि आपकी वेब साइट IE 8 मानक मोड को लागू करने के लिए है, तो इस मेटाटैग का उपयोग वैध DOCTYPE के साथ करें:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
सादे "IE8" के बजाय "EmulateIE8" मान पर ध्यान दें।
IE devs के अनुसार, "IE8 मानक मोड में प्रदर्शन मानक DOCTYPEs प्रदर्शित करना चाहिए। Quirks मोड में Quirks DOCTYPEs प्रदर्शित करें। इस टैग का उपयोग क्लाइंट मशीनों पर संगतता दृश्य को ओवरराइड करने के लिए करें और IE मानकों के लिए मानकों को बाध्य करें।"
इस IE ब्लॉग पोस्ट के बारे में अधिक जानकारी: http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx
यह प्रश्न इंट्रानेट में फोर्स "इंटरनेट एक्सप्लोरर 8" ब्राउज़र मोड का एक डुप्लिकेट है ।
वहां मौजूद प्रतिक्रियाओं से संकेत मिलता है कि संगतता दृश्य (सर्वर की ओर) को अक्षम करना संभव नहीं है - https://stackoverflow.com/a/4130343/24267 । यह निश्चित रूप से ऐसा प्रतीत होता है, जैसा कि मेरे द्वारा सुझाए गए सुझावों में से किसी ने भी काम नहीं किया है। IE8 में "ब्राउजर मोड" इंटरनेट एक्सप्लोरर 8 के अनुकूल हो जाता है, इससे कोई फर्क नहीं पड़ता कि आप किस तरह का एक्स-यूए-संगत हेडर भेजते हैं।
मुझे IE7 और संगतता मोड के लिए कुछ विशेष हैंडलिंग करनी थी, जिसके कारण ब्राउज़र को IE8 का उपयोग करके रेंडर किया गया था लेकिन रिपोर्ट किया गया कि यह IE7 था, इसके कोड को तोड़ दिया। यह है कि मैंने अपना कोड कैसे तय किया (मुझे पता है कि यह एक भयानक हैक है और मुझे ब्राउज़र संस्करण नहीं सुविधाओं के लिए परीक्षण करना चाहिए):
isIE8 = navigator.appVersion.indexOf ("MSIE")! = -1 && parseFloat (navigator.appVersion.split ("MSIE") [1]) = 8; if (। is88 && navigator.appVersion.indexOf ("MSIE")! = -1 और& parseFloat (navigator.appVersion.split ("MSIE") [1] == 7 && navigator.appVersion.indexOf ("Trident") ! = -1) { // Liar, यह संगतता मोड में IE8 है। isIE8 = सत्य; }
इसे अपने पृष्ठों के हेड टैग के अंदर जोड़ें (IE संस्करण जिसे आप चाहते हैं) को लक्षित करें:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
ध्यान दें, यह इस तथ्य को नहीं बदलेगा कि ब्राउज़र इसकी संगतता मोड में कहता है (ब्राउज़र मोड कहा जाता है), लेकिन पेज IE8 मानक मानकों में प्रस्तुत करेगा । यदि इसका STILL प्रतिपादन नहीं करता है कि आप कैसे चाहते हैं, तो शायद इसलिए कि आपके पास जावास्क्रिप्ट है जो आईई संस्करण की गलत तरीके से जाँच कर रहा है। निम्नलिखित ब्लॉग पोस्ट देखें कि यह निर्धारित करने के लिए कि आपको किस गुण को बंद करना चाहिए क्योंकि यदि आप मेटा एक्स-यूए-संगत टैग सेट करते हैं, तो भी उपयोगकर्ता एजेंट स्ट्रिंग को MSIE 7.0 कहेंगे ।
मेरे मामले में, फिक्स के लिए मुझे IE7 संगतता मोड के लिए एक चेक जोड़ना पड़ा। मैंने एक सरल जावास्क्रिप्ट कोड का उपयोग किया है:
//IE8 and later will have the word 'trident' in its user agent string.
if (navigator.userAgent.indexOf("Trident")>-1) { //do something }
सभी उपयोगकर्ताओं के लिए GPO के माध्यम से इसे अक्षम करने के लिए इसे पढ़ने वाले किसी अन्य व्यक्ति के लिए, यह सेटिंग है:
कंप्यूटर कॉन्फ़िगरेशन / प्रशासनिक टेम्पलेट / विंडोज घटक / इंटरनेट एक्सप्लोरर / संगतता दृश्य / स्थानीय इंट्रानेट के लिए इंटरनेट एक्सप्लोरर मानक मोड चालू करें
हालाँकि web.config एडिट ने इसे मेरे लिए ठीक कर दिया है।
हेडर बदलें ।htaccess
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
इस समस्या का हल यहां मिला: https://github.com/h5bp/html5-boilerplate/issues/378
दस्तावेज़ मोड बनाम ब्राउज़र मोड के बारे में स्टीफन एस की टिप्पणी मेरी समस्या के लिए बहुत प्रासंगिक थी।
मेरे पास पृष्ठ में X-UA- सामग्री मेटा डेटा है, लेकिन मैं क्लाइंट-साइड ब्राउज़र संस्करण का परीक्षण कर रहा था navigator.appVersion
। यह परीक्षण मेटा डेटा को प्रतिबिंबित नहीं करता है क्योंकि यह ब्राउज़र मोड को दस्तावेज़ मोड नहीं दे रहा है।
मेरे लिए उत्तर document.documentMode
कुछ इस तरह का था:
function IsIE(n)
{
if (navigator.appVersion.indexOf("MSIE ") == -1) return false;
var sDocMode = document.documentMode;
return (isFinite(sDocMode) && sDocMode==n);
}
अब, मेरा मेटा एक्स-यूए-कंटेंट टैग मेरे ब्राउज़र परीक्षण में प्रतिबिंबित करता है।
ब्राउज़र परीक्षण के रूप में मैं इस तरह की एक फ्रॉन्ड-ऑन चीज़ क्यों करता हूं? स्पीड। मेरे कई jQuery ऐड-इन्स, जैसे टेबल-एजेंट IE6 / 7 पर बहुत धीमे हैं, और मैं उन्हें बंद करना चाहता हूं। मुझे यकीन नहीं है कि ब्राउज़र सुविधाओं के लिए परीक्षण मुझे इसे हल करने में मदद कर सकता है अन्यथा।