इंट्रानेट संगतता मोड को ओवरराइड करें IE8


200

डिफ़ॉल्ट रूप से IE8 संगतता मोड में वेबसाइटों को इंट्रानेट करता है। मैंने मेटा हेडर को IE8 में बदलने की कोशिश की, लेकिन यह मेटा हेडर को स्वीकार नहीं करता है और केवल ब्राउज़र सेटिंग का उपयोग करता है। क्या कोई इसे अक्षम करना जानता है?


1
प्रयास करें stackoverflow.com/questions/2742853/... , जो मेरे लिए काम किया।
डेविड कोलार

2
इसे अपने पेजों के हेड टैग के अंदर जोड़ें: <meta http-equiv = "X-UA- कम्पेटिबल" कंटेंट = "IE = 8" /> (IE संस्करण जिसे आप चाहते हैं उसे लक्षित करें)। ध्यान दें, यह इस तथ्य को नहीं बदलेगा कि ब्राउज़र इसकी संगतता मोड में कहता है (ब्राउज़र मोड कहा जाता है), लेकिन पेज IE8 मानक मानकों में प्रस्तुत करेगा। यदि आप IE8 या बाद के लिए अपनी जाँच कर रहे हैं तो आपको "त्रिशूल" की जाँच के लिए जावास्क्रिप्ट को बदलना होगा। देखें: blogs.msdn.com/b/mikeormond/archive/2008/09/25/…
n00b

@ n00b - इसका मेरी साइट पर कोई प्रभाव नहीं है।
पीटी

मेरी समझ है मेटा टैग मुझे हेड टैग के तुरंत बाद चाहिए। मैंने देखा कि कुछ स्क्रिप्ट्स इंडेक्स 0 पर सिर में डालेंगी; इस प्रकार, मेटा टैग अब सिर के बाद नहीं होगा।
एमीसिको

जवाबों:


224

इंट्रानेट में संगतता मोड को ओवरराइड करना संभव है।

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')

20
यह सही जवाब है। मेटा टैग में कुछ भी नहीं है, लेकिन प्रतिक्रिया हेडर काम करता है। यहाँ अधिक जानकारी: social.msdn.microsoft.com/Forums/is/iewebdevelopment/thread/…
russau

3
इस बात से सहमत। यह सही उत्तर होना चाहिए क्योंकि यह केवल इस वेबसाइट के लिए इंट्रानेट सेटिंग को सही ढंग से ओवरराइड करता है।
एनरिकस

9
(स्पष्ट करने के लिए: यह दस्तावेज़ मोड के लिए काम करता है, लेकिन ब्राउज़र मोड में नहीं)
कोडुलिक

21
यह सही उत्तर नहीं है। यह उत्तर दस्तावेज़ मोड को बदल देता है यह महत्वपूर्ण "ब्राउज़र मोड" नहीं बदलता है। मैं अभी भी उस मुद्दे का समाधान खोज रहा हूं।
DeveloperChris

4
यह सही उत्तर नहीं है, क्योंकि यह .net विशिष्ट है (तथ्य को स्वीकार किए बिना भी)।
डैडी 32

84

माइकल 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 मोड।


इससे मेरे लिए समस्या हल नहीं हुई। हालाँकि, FYI करें, "X-UA- कम्पेटिबल" को हेडर DID के रूप में जोड़ने से समस्या ठीक होती है!
स्कॉट रिप्पी

34

यदि आप "टूल" मेनू को नीचे खींचते हैं और "संगतता दृश्य सेटिंग" चुनते हैं, तो उस डायलॉग में सबसे नीचे एक सेटिंग "संगतता मोड में इंट्रानेट साइट प्रदर्शित करें" है। यदि आप इसे अनचेक करते हैं जो समस्या को हल करना चाहिए और IE DOCTYPE के आधार पर मोड का उपयोग करेगा।


19
मैं नीचे नहीं गया, लेकिन मुझे लगता है कि इसका कारण यह होगा कि आपने उपयोगकर्ता के दृष्टिकोण से जवाब दिया था (उपयोगकर्ता को क्या करना चाहिए)। यह प्रश्न एक वेब डेवलपर से है और यह पूछ रहा है कि उपयोगकर्ता को विशेष रूप से कुछ भी करने की आवश्यकता के बिना समस्या को कैसे ठीक किया जाए।
रॉय टिंकर

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

2
मेरा मानना ​​है कि उन्होंने इसका जवाब एक प्रोग्रामर के नजरिए से दिया। "... IE DOCTYPE पर मोड बेस का उपयोग करेगा"। देखें: msdn.microsoft.com/en-us/library/ms535242%28VS.85%29.aspx यदि कंपनी सक्रिय निर्देशिका चला रही है, तो व्यवस्थापक द्वारा ब्राउज़र सेटिंग्स में परिवर्तन किया जा सकता है। आप फ़ायरफ़ॉक्स के साथ ऐसा नहीं कर सकते!
नैट ज़ॉग्ग

@AndrewLewis शायद। लेकिन, URL बार में संगतता मोड बटन है जो ब्राउज़र को उस विशिष्ट साइट के लिए कॉम्पेटिटर मोड का उपयोग करने के लिए सेट करेगा। या आप उन्हें संवाद में मैन्युअल रूप से जोड़ सकते हैं। एक बार फिर, यह सामान विश्व स्तर पर आईटी द्वारा किया जा सकता है।
पाइलटबोब

2
@Pilotbus यदि आपके पास समर्थन करने के लिए इंट्रानेट साइटों के 120K + उपयोगकर्ता और सैकड़ों (यदि कोई हजारों) हैं, तो यह एक व्यवहार्य समाधान नहीं है।
योरच

19

इस प्रश्न के उत्तर में कुछ निश्चित भ्रम की स्थिति है।

शीर्ष उत्तर वर्तमान में एक सर्वर-साइड समाधान है जो http हेडर में एक ध्वज सेट करता है और कुछ टिप्पणियां संकेत दे रही हैं कि मेटा टैग का उपयोग कर समाधान बस काम नहीं करता है।

मुझे लगता है कि यह ब्लॉग प्रविष्टि अनुकूलता मेटा जानकारी का उपयोग करने का एक अच्छा अवलोकन देता है और मेरे अनुभव में वर्णित के रूप में काम करता है: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/29/use-x- UA- संगत करने के लिए बनाने के टिकाऊ-उद्यम-वेब-applications.aspx

मुख्य बिंदु:

  • मेटा टैग का उपयोग करके और हेडर में काम करते हुए दोनों जानकारी सेट करना
  • मेटा टैग हेडर पर पूर्वता लेता है
  • मेटा टैग पहला टैग होना चाहिए, यह सुनिश्चित करने के लिए कि ब्राउज़र हेअरस्टाइल के आधार पर रेंडरिंग इंजन का निर्धारण नहीं करता है

एक महत्वपूर्ण बिंदु (और मुझे लगता है कि इस बिंदु से बहुत भ्रम होता है) यह है कि IE में दो "कक्षाएं" मोड हैं:

  1. दस्तावेज़ मोड
  2. ब्राउज़र मोड

दस्तावेज़ मोड रेंडरिंग इंजन (वेब ​​पेज कैसे प्रस्तुत किया गया है) निर्धारित करता है।

ब्राउज़र मोड यह निर्धारित करता है कि उपयोगकर्ता-एजेंट (यूए) स्ट्रिंग 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 का उपयोग नहीं करना चाहिए - आपको करना चाहिए।)


ब्राउज़र मोड को कैसे बदलें?
विष्णुदेव के।

ब्राउज़र मोड वाक्य भ्रामक है
न्यायमूर्ति मुट्ठी

@JusticeFist हां, आप सही हैं, धन्यवाद। मैंने इसे सुधारने की कोशिश की।
stefan.s

1
@VishnudevK एकमात्र तरीका जो मुझे पता है कि डेवलपर टूल का उपयोग कर रहा है। लेकिन आप शायद एक प्रोग्रामेटिक समाधान चाहते हैं।
stefan.s

9

इस मेटाटैग को आज़माएं:

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

यह IE8 को IE8 मानक मोड के रूप में प्रस्तुत करने के लिए बाध्य करना चाहिए, भले ही "संगतता दृश्य में इंट्रानेट साइटों को प्रदर्शित करें" की जाँच की जाती है [या तो इंट्रानेट या सभी वेबसाइटों के लिए], मैंने आईई 8.0.6 पर अपना स्वयं का प्रयास किया


15
नहीं, यह नहीं है।
डेनिस सी

11
यह वास्तव में सही है, लेकिन यह पृष्ठ पर किसी भी और सभी मेटा टैग से पहले दिखाई देगा या यह काम नहीं करेगा।
माइकल Irigoyen

2
यह मेरे लिए काम नहीं करता है। जहाँ तक मैं IE8s को बता सकता हूँ "संगतता मोड में इंट्रानेट साइटें प्रदर्शित करें"
अप्राप्य है

6
(स्पष्ट करने के लिए: यह दस्तावेज़ मोड के लिए काम करता है, लेकिन ब्राउज़र मोड के लिए नहीं। इसलिए रेंडरिंग तय है, लेकिन ब्राउज़र अभी भी IE7 होने का दिखावा करता है)
कोडुलिक

7

हमारे सिस्टम व्यवस्थापक ने हमारे संगठन के लिए विश्व स्तर पर बॉक्स को अनचेक करके इस मुद्दे को हल किया। उपयोगकर्ताओं को लॉग ऑफ करने की भी आवश्यकता नहीं थी।

यहां छवि विवरण दर्ज करें


1
यह समाधान पूरी तरह से काम करता है अगर इंट्रानेट पर सभी साइटें नवीनतम वेब मानकों का उपयोग कर सकती हैं। हालांकि, अगर कुछ नहीं कर सकते हैं तो यह विधि अनजाने में उन लोगों को तोड़ देगी ... मैं सावधानी के साथ संपर्क करूंगा।
ᴍᴀᴛᴛ ᴍᴀᴛᴛ

4

मुझे एक काम करने वाला उत्तर मिला जो जाँची गई इंट्रानेट संगतता दृश्य को ओवरराइड करने की अनुमति देता है। बस अपने पृष्ठ की OnInit घटना में इस पंक्ति को जोड़ें (कोई मेटा या web.config customHeader की आवश्यकता नहीं):

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");

1
विकास-मंच-विशिष्ट उत्तर ... मंच को निर्दिष्ट किए बिना भी। मुझे लगता है कि आप Visual Studio .NET के बारे में बात कर रहे हैं? जहां तक ​​मैं बता सकता हूं कि 'ऑनइनाइट' इवेंट मौजूद नहीं है (जावास्क्रिप्ट, जावा, पीएचपी, ....) में
स्टिजिन विट


3

मैं मेटा टैग को हेड सेक्शन में 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 सहित और तक उपलब्ध उच्चतम मानक का उपयोग करें।


2

यह बिल्कुल समाधान नहीं है लेकिन, मुझे लगता है कि यह सबसे अच्छा है। हमारी इंट्रानेट साइटों पर हम लोगों को बताते हैं कि इसे केवल फ़ायरफ़ॉक्स द्वारा ही एक्सेस किया जा सकता है, हम कृपया इई उपयोगकर्ताओं को इधर-उधर न करें। सर्वर या क्लाइंट पक्ष पर उपयोगकर्ता एजेंट की जाँच करें और उन्हें IE से एक्सेस से इनकार करें। और मैं एक .NET प्रोग्रामर हूं।


1
मुझे आपका विचार पसंद है। लेकिन हमारे यहाँ कोई फ़ायरफ़ॉक्स नहीं है।
डेनिस सी

22
सबसे खराब। सुझाव। कभी। वह सभी इंट्रानेट साइटों के रूप में बुरा है जो IE-only हैं। थोड़ा अतिरिक्त काम करने की कोशिश करें और अपने सामान को सभी सामान्य ब्राउज़रों पर काम करें। यह इतना मुश्किल नही है।
mhenry1384

2
@ mhenry1384 यह समझाने की देखभाल करें कि इसका एक भयानक सुझाव क्यों है कि एक लॉक डाउन इंट्रानेट सिस्टम है? आपको पुराने ब्राउज़रों के लिए क्वार्क का समर्थन नहीं करना है। आपको पता है कि आपके उपयोगकर्ताओं को इच्छित अनुभव मिलेगा। यह एक सार्वजनिक प्रणाली नहीं है, जो परवाह करता है, क्या आप अभी भी IE 5.5 का समर्थन करते हैं? मैं अपने सार्वजनिक उपयोगकर्ताओं को अपडेट करने के लिए कहता हूं। मुझे किसी भी तरह बैकेंड सिस्टम पर अपना समय बर्बाद नहीं करना चाहिए, यह जनता की जरूरत है जो मुझे चाहिए। ऐसा नहीं है कि मैं इसे IE 6 में बंद कर देता हूं और कुछ की तरह ActiveX की आवश्यकता होती है। उदाहरण के लिए मेरा सिस्टम फ़ायरफ़ॉक्स 6 और इसके बाद के संस्करण की अनुमति देता है। इसलिए अगर फ़ायरफ़ॉक्स 27 बाहर आता है, तब भी यह काम करता है। या तो मुझे नीचा दिखाओ या एक वास्तविक तर्क बनाओ।
काइमेन

2
प्रत्येक इंट्रानेट साइट जो मैंने उपयोग की है, वह एक विशिष्ट ब्राउज़र के लिए लॉक की गई थी जिसे IE में बंद कर दिया गया है। यह मुझे पागल कर देता है, क्योंकि मैं IE को अगले आदमी जितना नफरत करता हूं। अपने उपयोगकर्ताओं को अपनी पसंद के ब्राउज़र का उपयोग करने के लिए मजबूर करना (उनका नहीं), भले ही यह कुछ भी हो, लेकिन यह वेब के विपरीत भी लगता है, यहां तक ​​कि इंट्रानेट वेब भी। यह आमतौर पर IE7 / 8/9 में काम करने वाली वेबसाइट प्राप्त करने के लिए आमतौर पर कठिन नहीं है, खासकर यदि आप jQuery जैसी पुस्तकालयों का उपयोग करते हैं। उपयोगकर्ताओं को वे क्या चाहते हैं का उपयोग करने दें।
mhenry1384

2
उदाहरण के लिए, फ़ायरफ़ॉक्स 10 के लिए लिखी गई एक साइट, मेरे अनुभव में लगभग हमेशा बिना संशोधन के IE9 पर पूरी तरह से ठीक काम करेगी। इसलिए IE9 का उपयोग करने से उपयोगकर्ताओं को प्रतिबंधित करने का मतलब है कि कुछ और चल रहा है। यह इंगित करता है कि आप एक विचारशील मिशन पर हैं, न कि कोई अच्छा वेब सॉफ्टवेयर लिखने की कोशिश कर रहा है। यदि यह फ़ायरफ़ॉक्स के अलावा अन्य ब्राउज़रों का परीक्षण करने का समय नहीं होने का सवाल था, तो क्या आप लोगों को ओपेरा का उपयोग करने से भी रोकते हैं? [इतनी चिंताजनक होने के लिए क्षमा करें। मैं इस लानत IE8 समस्या मैं कर रहा हूँ तय करने के लिए वापस जाना चाहिए ... :-)]
mhenry1384

1

मैं इस मुद्दे से जूझ चुका था और एक अनूठा समाधान और अंतर्दृष्टि प्रदान करने में मदद करना चाहता था।

कुछ 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 {
}

}

1

हम वसंत-अपाचे-टोमकैट वातावरण में इस समस्या को 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;
}

संदर्भ से - फ़िल्टर कैसे बनाएं और प्रतिक्रिया हेडर को संशोधित करें यह कवर करता है कि हम अनुरोधकर्ता (स्प्रिंग) के माध्यम से इस समस्या को कैसे हल कर सकते हैं।


0

यदि आप चाहते हैं कि आपकी वेब साइट 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


0

यह प्रश्न इंट्रानेट में फोर्स "इंटरनेट एक्सप्लोरर 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 = सत्य;
}

0

एक ही समस्या थी। इसका उपयोग करके काम किया

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

0

इसे अपने पृष्ठों के हेड टैग के अंदर जोड़ें (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 }

0

सभी उपयोगकर्ताओं के लिए GPO के माध्यम से इसे अक्षम करने के लिए इसे पढ़ने वाले किसी अन्य व्यक्ति के लिए, यह सेटिंग है:

कंप्यूटर कॉन्फ़िगरेशन / प्रशासनिक टेम्पलेट / विंडोज घटक / इंटरनेट एक्सप्लोरर / संगतता दृश्य / स्थानीय इंट्रानेट के लिए इंटरनेट एक्सप्लोरर मानक मोड चालू करें

हालाँकि web.config एडिट ने इसे मेरे लिए ठीक कर दिया है।


स्थानीय समूह नीति संपादक में जाने के लिए , आप रन से gpedit.msc चला सकते हैं ।
ROMANIA_engineer


0

दस्तावेज़ मोड बनाम ब्राउज़र मोड के बारे में स्टीफन एस की टिप्पणी मेरी समस्या के लिए बहुत प्रासंगिक थी।

मेरे पास पृष्ठ में 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 पर बहुत धीमे हैं, और मैं उन्हें बंद करना चाहता हूं। मुझे यकीन नहीं है कि ब्राउज़र सुविधाओं के लिए परीक्षण मुझे इसे हल करने में मदद कर सकता है अन्यथा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.