तत्व मेटा पर विशेषता http-equiv के लिए खराब मान X-UA- संगत


110

मैंने उसी का उपयोग किया है metaजिसका HTML5 Boilerplate उपयोग कर रहा है, और W3C HTML सत्यापनकर्ता शिकायत करता है:

तत्व मेटा पर विशेषता http-equiv के लिए खराब मान X-UA- संगत।

<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>

इस metaटैग में क्या गलत है ?


6
यहाँ इसके बारे में एक अच्छा ब्लॉग पोस्ट है (यह भी मुझे मिला पहला खोज परिणाम था): blog.yjl.im/2011/01/…
ComFreek

जवाबों:


67

या तो एक्स-यूए-संगत "मानक" एचटीएमएल (एफएसवीओ "मानक" नहीं है, जिसमें विनिर्देश द्वारा संदर्भित सार्वजनिक रूप से संपादन योग्य विकी पृष्ठ पर दिखाई देना शामिल है ) या मान्यकर्ता उस विकि की वर्तमान स्थिति के साथ अद्यतित नहीं है।

लेखन के समय (20130326) एक्स-यूए-संगत विकी पृष्ठ पर एक अनुभाग के तहत दिखाई देता है जिसमें कहा गया है: "निम्नलिखित प्रस्तावित एक्सटेंशन अभी तक HTML कल्पना में सभी पंजीकरण आवश्यकताओं के अनुरूप नहीं हैं और इसलिए अभी तक मान्य नहीं हैं दस्तावेजों। " इसलिए सत्यापनकर्ता इस मान को अस्वीकार करने के लिए सही है।


8
गलत विकी पेज। एक आप लिंक के लिए है <meta name= ...। के लिए <meta http-equiv=...पृष्ठ है wiki.whatwg.org/wiki/PragmaExtensions
Alohci

6
सही विकी पेज शामिल नहीं है X-UA-Compatible, इसलिए विकल्प "मान्य तिथि तक नहीं है" लागू होता है। यहां तक ​​कि validator.nu (जिसे सामान्य रूप से अधिक अद्यतित कहा गया है) इस संबंध में पुराना है।
जुका के। कोरपेला

सुधार के लिए धन्यवाद। मुझे महसूस नहीं हुआ था कि मेटा विशेषताओं के लिए मान दो पृष्ठों में विभाजित थे।
क्वेंटिन

1
सत्यापनकर्ता को समर्थन के लिए कैसे पैच करना है, इसके उदाहरण के लिए मेरा उत्तर देखें X-UA-Compatiblestackoverflow.com/a/21048010/1006963
darcyparker

तो मैं w3c सत्यापनकर्ता से समस्या को कैसे ठीक कर सकता हूं..मैं टैग हटा सकता हूं?
कृष

42

यदि आप इसे तकनीकी रूप से वैध बनाना चाहते हैं (हर कोई हरे रंग की फेविकॉन को देखना पसंद करता है) w / o किसी भी कार्यक्षमता को प्रभावित करता है, तो आपको इसे "यदि IE" टैग में लपेटना चाहिए।

<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->

22
यह प्रभावी रूप से आपके Chrome फ़्रेम समर्थन को अक्षम करता है क्योंकि Chrome फ़्रेम IE सशर्त टिप्पणियों को अनदेखा करता है, देखें jeffreybarke.net/2010/08/…
जैस्पर मॉल्कर

5
@JasperMoelker: संभवत: यह उल्लेख करने योग्य है कि आपने जो लेख लिंक प्रदान किया है, उसमें वास्तव में Chrome फ़्रेम के लिए वर्कअराउंड शामिल है जो शानदार है: सत्यापन + क्रोम फ़्रेम समर्थन!
ल्यूक

5
नहीं, नहीं, यह एक्स-यूए-संगत को तोड़ता है। xn--mlform-iua.no/blog/…
brentonstrine

30

एक संभव समाधान हैडर में एक फिक्स सर्वर-साइड को लागू करना है, जैसा कि आरोन लेटन द्वारा इस अच्छे राइट-अप में सुझाया गया है । (सभी क्रेडिट उसके पास जाना चाहिए, और मैं साहित्यिक चोरी के बजाय विरोधाभास करूंगा ...)

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

"जब इंटरनेट एक्सप्लोरर इस लाइन के पार आता है तो यह इंजन को बदल देगा जिसका उपयोग पहले क्रोम फ्रेम में किया जा रहा है, यदि प्लगइन स्थापित है, और फिर एज (ब्राउज़र का उच्चतम समर्थित दस्तावेज़ मोड) है।"

चरण :

  • पृष्ठ सत्यापन को ठीक करें - यह केवल टैग को हटाकर प्राप्त किया गया है
  • रेंडरिंग की गति - टैग देखने के लिए ब्राउज़र का इंतजार करने और फिर मोड बदलने के बजाय हम सही मोड को एक रिफ्रेश हेडर के रूप में अपफ्रंट भेजेंगे।
  • सुनिश्चित करें कि हम केवल इंटरनेट एक्सप्लोरर के लिए फिक्स दिखाते हैं - हम केवल कुछ सर्वर साइड ब्राउज़र का पता लगाने का उपयोग करेंगे और केवल IE में भेजेंगे

PHP में शीर्ष लेख जोड़ने के लिए हम इसे अपने पृष्ठ में जोड़ सकते हैं:

if (isset($_SERVER['HTTP_USER_AGENT']) &&
    (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
        header('X-UA-Compatible: IE=edge,chrome=1');


या आप इसे अपनी .htaccess फ़ाइल में जोड़ सकते हैं:

<FilesMatch "\.(htm|html|php)$">
    <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
    </IfModule>
</FilesMatch>


मूल लेख से लिंक करें, संभावित कैविटीज़ के लिए टिप्पणियों की जांच करें। सी # के लिए एक कार्यान्वयन भी शामिल है।

एक बार और सभी के लिए खराब मान को ठीक करें

उम्मीद है की यह मदद करेगा!


1
इस लेखन के समय, यह समाधान HTML5BP .htaccess फ़ाइल में लागू किया गया है। तो, बशर्ते कि आपके Apache सर्वर में mod_headers सक्षम हैं, आप <meta>html फ़ाइल से निकालना सुरक्षित होगा ।
पैट्रिक जेम्स मैकडॉगल

यदि आप मेरी तरह स्प्रिंग एमवीसी का उपयोग कर रहे हैं, तो यह अभी भी बहुत आसान है। आप देख रहे हैं: response.addHeader("X-UA-Compatible", "IE=edge,chrome=1");लेकिन यहाँ एक पूर्ण github gist है
पॉल नेल्सन बेकर

1
@PatrickJamesMcDougle मुझे यह काम करने के लिए अपने Apache सर्वर पर दोनों headersऔर setenvifmods को सक्षम करना पड़ा ।
iglvzx

क्या इससे कोई फर्क पड़ता है कि इसे कहां जोड़ा गया है? क्या यह पहली बात होनी चाहिए?
स्टेएस

1
W3C HTML सत्यापनकर्ता अनुरक्षक यहाँ। यदि आप मूल्य में "क्रोम = 1" डालते हैं, तो इस उत्तर में समाधान कोई और काम नहीं करेगा, क्योंकि हमने हेडर के साथ-साथ मेटा तत्व की जांच के साथ एक चेक भी जोड़ा है, और HTML कल्पना के अनुसार, किसी भी स्थान पर (मेटा तत्व या हेडर) केवल अनुमत मान "IE = एज" है।
साइडशोबर्कर


2

.. क्या यह एक अच्छा जवाब हो सकता है?

PHP के साथ HTTP हैडर सेट करें:

यह मेरा अपना काम नहीं है लेकिन मुझे उम्मीद है कि यह दूसरों के लिए भी उपयोगी है।


7
ध्यान दें कि लिंक-केवल उत्तर हतोत्साहित किए जाते हैं (लिंक समय के साथ बासी हो जाते हैं)। कृपया अपने उत्तर को संपादित करने और यहां एक सारांश लिखने पर विचार करें।
बुम्मी

1

यदि आप सत्यापनकर्ता src कोड को डाउनलोड / निर्मित करते हैं, तो आप स्वयं समर्थन जोड़ सकते हैं।

निम्नलिखित को किसी फ़ाइल में जोड़ें जैसे html5-meta-X-UA-Compatible.rnc) फिर इसे इसमें शामिल करें html5full.rnc

मैंने ऐसा किया और यह मान्य करने के लिए अच्छी तरह से काम करता है।

meta.http-equiv.X-UA-Compatible.elem =
  element meta { meta.inner & meta.http-equiv.X-UA-Compatible.attrs }
  meta.http-equiv.X-UA-Compatible.attrs =
    ( common.attrs.basic
      & common.attrs.i18n
      & common.attrs.present
      & common.attrs.other
      & meta.http-equiv.attrs.http-equiv.X-UA-Compatible
      & meta.http-equiv.attrs.content.X-UA-Compatible
      & ( common.attrs.aria.role.presentation
        | common.attrs.aria.role.menuitem
        )?
    )
    meta.http-equiv.attrs.http-equiv.X-UA-Compatible = attribute http-equiv {
      xsd:string {
        pattern = "X-UA-Compatible"
      }
    }
    meta.http-equiv.attrs.content.X-UA-Compatible = attribute content {
      xsd:string {
        pattern = "IE=((edge)|(EmulateIE(7|8|9|10))|7|8|9|10|11)(,chrome=(1|0))?"
      }
    }

common.elem.metadata |= meta.http-equiv.X-UA-Compatible.elem

0

कृपया ,chrome=1मेटा टैग से हटा दें यह ठीक काम करेगा। सत्यापनकर्ता के साथ:

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

-1

मेरे पास एक ही मुद्दा था और जोड़ना और उस पूरी रेखा को स्थिति से हटाना।

<!--[if IE]><meta http-equiv="x-ua-compatible" content="IE=9" /><![endif]-->

1
क्या किसी को पता है कि क्यों अपमानित किया जाता है? यह वास्तव में सत्यापनकर्ता को ठीक से काम करता है।
मैकीज पापरोकी

2
शायद इसलिए क्योंकि यह वास्तव में कुछ भी हासिल नहीं करता है। 1. सशर्त टिप्पणियाँ IE10 और इसके बाद के संस्करण में काम नहीं करती हैं। 2. एक्स-यूए-संगत पुराने ब्राउज़र का अनुकरण करने वाले नए ब्राउज़र बनाने के लिए है। तो इस पंक्ति को प्रभावी रूप से क्या कहते हैं: 1. IE 10 और 11, डिफ़ॉल्ट मोड का उपयोग करके प्रस्तुत करें (क्योंकि वे अब सशर्त टिप्पणियों को पार्स नहीं करते हैं) 2. IE 9, IE 9 के रूप में प्रस्तुत करना (यानी, ज्यादातर मामलों में इसका डिफ़ॉल्ट मोड)। 3. IE <9, डिफ़ॉल्ट मोड का उपयोग करके प्रस्तुत करना (क्योंकि वे एक ब्राउज़र का अनुकरण नहीं कर सकते हैं जो वे की तुलना में नया है)
aleayr

मैं यह भी जोड़ूंगा कि यह सत्यापनकर्ता के काम को 'ठीक से' बनाता है क्योंकि यह एक टिप्पणी के अंदर है (इस प्रकार सत्यापनकर्ता इसे अनदेखा करता है)।
एलियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.