Apa yang dilakukan <meta http-equiv = "Kompatibel dengan X-UA" = "IE = edge">?

1438

Apa bedanya jika satu halaman web dimulai

<!DOCTYPE html> 
<html> 
  <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

dan Jika halaman dimulai dengan

<!DOCTYPE html> 
<html> 
  <head> 
     <!-- without X-UA-Compatible meta -->

Jika tidak ada perbedaan, saya kira saya bisa mengabaikan X-UA-Compatibleheader meta, karena saya hanya ingin itu diberikan dalam mode paling standar di semua versi IE.

Morgan Cheng
sumber

Jawaban:

1703

Pembaruan Oktober 2015

Jawaban ini telah diposting beberapa tahun yang lalu dan sekarang pertanyaannya harus benar-benar harus Anda pertimbangkan menggunakan X-UA-Compatibletag di situs Anda? dengan perubahan yang telah dibuat Microsoft untuk browser-nya (lebih lanjut tentang yang di bawah ini).

Bergantung pada browser Microsoft apa yang Anda dukung, Anda mungkin tidak perlu terus menggunakan X-UA-Compatibletag. Jika Anda perlu mendukung IE9 atau IE8, maka saya akan merekomendasikan menggunakan tag. Jika Anda hanya mendukung browser terbaru (IE11 dan / atau Edge) maka saya akan mempertimbangkan untuk menghapus tag ini sama sekali. Jika Anda menggunakan Bootstrap Twitter dan perlu menghilangkan peringatan validasi, tag ini harus muncul dalam urutan yang ditentukan. Info tambahan di bawah ini:


The X-UA-Compatiblemeta tag memungkinkan web penulis untuk memilih versi Internet Explorer apa halaman harus diterjemahkan sebagai. IE11 telah melakukan perubahan pada mode ini; lihat catatan IE11 di bawah ini. Microsoft Edge , browser yang menggantikan IE11, hanya menghormati X-UA-Compatiblemeta tag dalam keadaan tertentu. Lihat catatan Microsoft Edge di bawah ini.

Menurut Microsoft, saat menggunakan X-UA-Compatibletag, tag harus setinggi mungkin dalam dokumen Anda head:

Jika Anda menggunakan tag META yang Kompatibel dengan X-UA, Anda ingin menempatkannya sedekat mungkin dengan bagian atas HEAD halaman. Internet Explorer mulai menafsirkan markup menggunakan versi terbaru. Ketika Internet Explorer menemukan tag META yang Kompatibel dengan X-UA, tag itu mulai menggunakan mesin versi yang ditunjuk. Ini adalah hit kinerja karena browser harus berhenti dan mulai kembali menganalisis konten.

Ini pilihanmu:

  • "IE = edge"
  • "IE = 11"
  • "IE = EmulateIE11"
  • "IE = 10"
  • "IE = EmulateIE10"
  • "IE = 9"
  • "IE = EmulateIE9
  • "IE = 8"
  • "IE = EmulateIE8"
  • "IE = 7"
  • "IE = EmulateIE7"
  • "IE = 5"

Untuk mencoba memahami apa yang dimaksud masing-masing, berikut adalah definisi yang disediakan oleh Microsoft:

Internet Explorer mendukung sejumlah mode kompatibilitas dokumen yang memungkinkan berbagai fitur dan dapat memengaruhi cara konten ditampilkan:

  • Mode Edge memberitahu Internet Explorer untuk menampilkan konten dalam mode tertinggi yang tersedia. Dengan Internet Explorer 9, ini setara dengan mode IE9. Jika rilis Internet Explorer di masa mendatang mendukung mode kompatibilitas yang lebih tinggi, halaman yang diatur ke mode tepi akan muncul dalam mode tertinggi yang didukung oleh versi itu. Halaman-halaman yang sama akan tetap muncul dalam mode IE9 bila dilihat dengan Internet Explorer 9. Internet Explorer mendukung sejumlah mode kompatibilitas dokumen yang memungkinkan berbagai fitur dan dapat memengaruhi cara konten ditampilkan:

  • Mode IE11 menyediakan dukungan tertinggi yang tersedia untuk standar industri yang mapan dan muncul, termasuk HTML5, CSS3, dan lainnya.

  • Mode IE10 memberikan dukungan tertinggi yang tersedia untuk standar industri yang mapan dan muncul, termasuk HTML5, CSS3, dan lainnya.

  • Mode IE9 menyediakan dukungan tertinggi yang tersedia untuk standar industri yang mapan dan muncul, termasuk HTML5 (Working Draft), Spesifikasi Level 3 Cascading Style W3C Cascading (Working Draft), Scalable Vector Graphics (SVG) 1.0 Spesifikasi, dan lain-lain. [Catatan Editor: IE 9 tidak mendukung animasi CSS3].

  • Mode IE8 mendukung banyak standar yang ditetapkan, termasuk Spesifikasi W3C Cascading Style Sheets Level 2.1 dan W3C Selectors API; itu juga menyediakan dukungan terbatas untuk Spesifikasi Level 3 W3C Cascading Style Sheets (Working Draft) dan standar yang muncul lainnya.

  • Mode IE7 membuat konten seolah-olah itu ditampilkan dalam mode standar oleh Internet Explorer 7, terlepas dari apakah halaman tersebut berisi arahan.

  • Mode IE9 emulasi memberi tahu Internet Explorer untuk menggunakan arahan untuk menentukan cara merender konten. Arahan mode standar ditampilkan dalam mode IE9 dan arahan mode quirks ditampilkan dalam mode IE5. Tidak seperti mode IE9, mode Emulate IE9 menghormati arahan.

  • Mode IE8 emulasi memberi tahu Internet Explorer untuk menggunakan arahan untuk menentukan cara merender konten. Arahan mode standar ditampilkan dalam mode IE8 dan arahan mode quirks ditampilkan dalam mode IE5. Tidak seperti mode IE8, mode Emulate IE8 menghormati arahan.

  • Mode IE7 emulasi memberi tahu Internet Explorer untuk menggunakan arahan untuk menentukan cara merender konten. Arahan mode standar ditampilkan dalam Internet Explorer 7 mode standar dan arahan mode quirks ditampilkan dalam mode IE5. Tidak seperti mode IE7, mode Emulate IE7 menghormati arahan. Untuk banyak situs web, ini adalah mode kompatibilitas yang disukai.

  • Mode IE5 membuat konten seolah-olah itu ditampilkan dalam mode quirks oleh Internet Explorer 7, yang sangat mirip dengan cara konten ditampilkan di Microsoft Internet Explorer 5.

IE10 CATATAN: Pada IE10, mode quirks berperilaku berbeda dari pada versi browser sebelumnya. Dalam IE9 dan versi sebelumnya, mode quirks membatasi halaman web ke fitur yang didukung oleh IE5.5. Dalam IE10, mode quirks sesuai dengan perbedaan yang ditentukan dalam spesifikasi HTML5.

Secara pribadi, saya selalu memilih http-equiv="X-UA-Compatible" content="IE=edge"meta tag, karena versi lama memiliki banyak bug, dan saya tidak ingin IE memutuskan untuk masuk ke "Mode kompatibilitas" dan menampilkan situs saya sebagai IE7 vs IE8 atau 9. Saya selalu lebih suka versi terbaru dari YAITU.

IE11

Dari Microsoft :

Dimulai dengan IE11, mode tepi adalah mode dokumen yang disukai; itu mewakili dukungan tertinggi untuk standar modern yang tersedia untuk browser.

Gunakan deklarasi tipe dokumen HTML5 untuk mengaktifkan mode tepi:

<!doctype html>

Mode Edge diperkenalkan di Internet Explorer 8 dan telah tersedia di setiap rilis berikutnya. Perhatikan bahwa fitur yang didukung oleh mode tepi terbatas pada yang didukung oleh versi spesifik browser yang menyajikan konten.

Dimulai dengan IE11, mode dokumen sudah usang dan tidak boleh lagi digunakan, kecuali untuk sementara. Pastikan untuk memperbarui situs yang mengandalkan fitur lawas dan mode dokumen untuk mencerminkan standar modern.

Jika Anda harus menargetkan mode dokumen tertentu agar situs Anda berfungsi saat Anda mengolahnya untuk mendukung standar dan fitur modern, perlu diketahui bahwa Anda menggunakan fitur transisi, yang mungkin tidak tersedia di versi mendatang.

Jika saat ini Anda menggunakan header yang kompatibel dengan x-ua untuk menargetkan mode dokumen lawas, mungkin situs Anda tidak akan mencerminkan pengalaman terbaik yang tersedia dengan IE11.

Microsoft Edge (Penggantian untuk Internet Explorer yang dibundel dengan Windows 10)

Informasi tentang X-UA-Compatibletag meta untuk versi "Edge" dari IE. Dari Microsoft :

Memperkenalkan mode dokumen Edge "hidup"

Seperti yang kami umumkan pada Agustus 2013, kami tidak lagi menggunakan mode dokumen pada IE11. Dengan pembaruan platform terbaru kami, kebutuhan akan mode dokumen lawas terutama terbatas pada aplikasi web Enterprise legacy. Dengan perubahan arsitektur baru, mode dokumen lawas ini akan diisolasi dari perubahan dalam mode Edge "hidup", yang akan membantu menjamin tingkat kompatibilitas yang jauh lebih tinggi bagi pelanggan yang bergantung pada mode tersebut dan membantu kami bergerak lebih cepat dengan peningkatan pada Edge. . IE masih akan menghormati mode dokumen yang dilayani oleh situs intranet, situs pada daftar Tampilan Kompatibilitas, dan saat digunakan dengan Mode Perusahaan saja.

Situs Internet publik akan dirender dengan platform mode Edge yang baru (mengabaikan Kompatibel X-UA). Adalah tujuan kami bahwa Edge adalah mode dokumen "hidup" dari sini dan tidak ada mode dokumen lebih lanjut yang akan diperkenalkan ke depan.

Dengan perubahan di Microsoft Edge menjadi tidak lagi mendukung mode dokumen dalam banyak kasus, Microsoft memiliki alat untuk memindai situs Anda untuk memeriksa dan melihat apakah ada kode yang tidak kompatibel dengan Edge.

Chrome = 1 Info untuk IE

Ada juga chrome=1yang dapat Anda gunakan atau menggunakan bersama-sama dengan salah satu pilihan di atas seperti: <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">. chrome=1adalah untuk Google Frame Chrome yang didefinisikan sebagai:

Google Chrome Frame adalah plug-in browser sumber terbuka. Pengguna yang memasang plug-in memiliki akses ke teknologi web terbuka Google Chrome dan mesin JavaScript cepat ketika mereka membuka halaman di browser.

Google Chrome Frame secara mulus meningkatkan pengalaman menjelajah Anda di Internet Explorer. Ini menampilkan situs yang diaktifkan Google Chrome Frame menggunakan teknologi rendering Google Chrome, memberi Anda akses ke fitur HTML5 terbaru serta fitur kinerja dan keamanan Google Chrome tanpa dengan cara apa pun mengganggu penggunaan browser Anda yang biasa.

Saat Google Chrome Frame diinstal, web menjadi lebih baik tanpa Anda harus memikirkannya.

Tapi untuk itu plug-in untuk pekerjaan yang Anda harus menggunakan chrome=1dalam X-UA-Compatiblemeta tag.

Info lebih lanjut tentang Chrome Frame dapat ditemukan di sini .

Catatan: Google Chrome Frame hanya berfungsi untuk IE6 hingga IE9 , dan telah dihentikan pada tanggal 25 Februari 2014. Info lebih lanjut dapat ditemukan di sini . Terima kasih kepada @mck atas tautannya.

Validasi:

HTML5 :

Halaman hanya akan divalidasi menggunakan Validator W3 saat menggunakan <meta http-equiv="X-UA-Compatible" content="IE=Edge">. Untuk nilai-nilai lain itu akan membuang kesalahan: A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge.Dengan kata lain, jika Anda memilikinya IE=edge,chrome=1tidak akan memvalidasi. Saya mengabaikan kesalahan ini sepenuhnya karena browser modern mengabaikan baris kode ini.

Jika Anda harus memiliki kode yang benar-benar valid maka pertimbangkan untuk melakukan ini di tingkat server dengan mengatur HTTP header. Sebagai catatan, Microsoft mengatakan, If both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header). Lihat jawaban olibre atau jawaban bitinn untuk detail lebih lanjut tentang cara mengatur header HTTP.

XHTML

Tidak ada masalah dengan validasi ketika menggunakan <meta http-equiv="X-UA-Compatible" content="IE=Edge" />selama tag ditutup dengan benar (yaitu />vs >).

Bootstrap Twitter

Tag ini telah sangat direkomendasikan oleh tim Bootstrap sejak setidaknya 2014, dan Bootlint , linter yang ditulis oleh tim twbs terus memberikan peringatan ketika tag dihilangkan. Linter membedakan antara peringatan dan kesalahan, dan oleh karena itu keparahan menghilangkan tag ini dapat dianggap minor.


Untuk informasi lebih lanjut tentang X-UA-Compatiblelihat Kompatibilitas Dokumen Menentukan Situs Web Microsoft .

Untuk informasi lebih lanjut tentang dukungan IE, lihat caniuse.com .

Untuk informasi lebih lanjut tentang persyaratan Bootstrap Twitter, lihat halaman wiki proyek bootlint .

L84
sumber
40
Jika saya tidak memiliki header "Kompatibel X-UA", apa yang akan terjadi?
Morgan Cheng
45
Pada dasarnya apa yang terjadi adalah ketika Anda memiliki X-UA-Compatible itu memberi tahu IE bagaimana berperilaku sehubungan dengan nilai yang Anda tetapkan (IE = edge dll) jika tidak ada IE akan menunjukkan situs bagaimana ia berpikir terbaik itu harus ditampilkan . Itu bisa mode kompatibilitas atau versi IE terbaru. Apa pun yang menurut Microsoft / IE adalah yang terbaik. Masuk akal?
L84
2
@ TravisJ - Dari pemahaman saya, mode tertinggi yang tersedia pada dasarnya berarti IE 8 dapat mendukung hingga mode IE8, IE9 dapat mendukung mode IE9 dan seterusnya. Saya menambahkan beberapa definisi untuk setiap mode yang disediakan oleh Microsoft.
L84
10
@AdrienBe - Saya sepenuhnya setuju! Sejauh ini IE 10 adalah yang terbaik untuk saya, tetapi saya membenci versi lainnya. Suatu kali saya memiliki pengaturan halaman dengan beberapa efek sekitar 200-300 baris HTML dan sekitar 20 menit pengkodean. Agar IE berfungsi, saya harus menambahkan 1.000 baris kode lainnya (kebanyakan javascript pihak ketiga) dan 2-3 jam kerja! Saya sangat benci IE =>
L84
9
Google Chrome Frame akan dihentikan pada Januari 2014: blog.chromium.org/2013/06/retiring-chrome-frame.html
mck
339

Gunakan content="IE=edge,chrome=1"   Lewati X-UA-Compatiblemode lain

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 
  • Tidak ada ikon kompatibilitas
    bilah Alamat IE9 tidak menampilkan tombol Tampilan Kompatibilitas
    dan halaman tidak juga menampilkan tumpukan menu, gambar, dan kotak teks yang tidak pada tempatnya.

  • Fitur
    Tag meta ini diperlukan untuk mengaktifkan javascript::JSON.parse()di IE8
    (bahkan ketika <!DOCTYPE html>ada)

  • Kebenaran
    Rendering / Eksekusi modern HTML / CSS / JavaScript yang lebih valid (lebih bagus).

  • Performa
    Mesin rendering Trident harus berjalan lebih cepat dalam mode edge -nya .


Pemakaian

Di HTML Anda

<!DOCTYPE html> 
<html> 
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Atau lebih baik dalam konfigurasi server web Anda:
(lihat juga jawaban RiaD )

  • Apache seperti yang diusulkan oleh Pixeline

    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    <IfModule mod_headers.c>
      Header append Vary User-Agent
    </IfModule>
  • Nginx seperti yang diusulkan oleh Stef Pause

    server {
      #...
      add_header X-UA-Compatible "IE=Edge,chrome=1";
    }
  • Proksi pernis seperti yang diusulkan oleh Lucas Riutzel

    sub vcl_deliver {
      if( resp.http.Content-Type ~ "text/html" ) {
        set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
      }
    }
  • IIS (sejak v7)

    <configuration>
      <system.webServer>
         <httpProtocol>
            <customHeaders>
               <add name="X-UA-Compatible" value="IE=edge,chrome=1" />
            </customHeaders>
         </httpProtocol>
      </system.webServer>
    </configuration>

Microsoft merekomendasikan mode Edge sejak IE11

Sebagaimana diperhatikan oleh Lynda (lihat komentar), perubahan Kompatibilitas di IE11 merekomendasikan mode Edge :

Dimulai dengan IE11, mode tepi adalah mode dokumen yang disukai; itu mewakili dukungan tertinggi untuk standar modern yang tersedia untuk browser.

Tetapi posisi Microsoft tidak jelas. Halaman MSDN lain tidak merekomendasikan mode Edge :

Karena mode Edge memaksa semua halaman dibuka dalam mode standar, apa pun versi Internet Explorer, Anda mungkin tergoda untuk menggunakannya untuk semua halaman yang dilihat dengan Internet Explorer. Jangan lakukan ini, karena X-UA-Compatibletajuk hanya didukung dimulai dengan Windows Internet Explorer 8.

Sebagai gantinya, Microsoft merekomendasikan untuk menggunakan <!DOCTYPE html>:

Jika Anda ingin semua versi Internet Explorer yang didukung untuk membuka halaman Anda dalam mode standar, gunakan deklarasi tipe dokumen HTML5 [...]

Seperti yang dijelaskan Ricardo (dalam komentar di bawah), setiap DOCTYPE (HTML4, XHTML1 ...) dapat digunakan untuk memicu Mode Standar, bukan hanya DOCTYPE HTML5. Yang penting adalah selalu memiliki DOCTYPE di halaman.

Clara Onager bahkan telah memperhatikan dalam versi yang lebih lama dari mode dokumen lawas Menentukan :

Mode tepi dimaksudkan hanya untuk tujuan pengujian; jangan menggunakannya di lingkungan produksi.

Sangat membingungkan sehingga Usman Y mengira Clara Onager berbicara tentang:

Contoh [...] disediakan hanya untuk tujuan ilustrasi; jangan menggunakannya dalam lingkungan produksi.

<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" >

Baiklah ... Di sisa jawaban ini saya memberikan lebih banyak penjelasan mengapa menggunakan content="IE=edge,chrome=1"adalah praktik yang baik dalam produksi.


Sejarah

Selama bertahun-tahun (2000 hingga 2008), pangsa pasar IE lebih dari 80% . Dan IE v6 dianggap sebagai standar de facto (80% hingga 97% pangsa pasar pada tahun 2003 , 2004, 2005 dan 2006 hanya untuk IE6, lebih banyak pangsa pasar dengan semua versi IE).

Karena IE6 tidak menghormati standar Web , pengembang harus menguji situs web mereka menggunakan IE6. Situasi yang besar untuk Microsoft (MS) sebagai pengembang web harus membeli produk MS (misalnya IE tidak dapat digunakan tanpa membeli Windows), dan itu lebih banyak keuntungan-membuat untuk tetap non-compliant (yaitu Microsoft ingin menjadi yang standar tidak termasuk lainnya perusahaan).

Oleh karena itu banyak banyak situs yang hanya sesuai dengan IE6, dan karena IE tidak sesuai dengan standar web, semua situs web ini tidak dirender dengan baik pada browser yang memenuhi standar. Lebih buruk lagi, banyak situs hanya membutuhkan IE .

Namun, pada saat ini, Mozilla memulai pengembangan Firefox dengan menghormati sebanyak mungkin semua standar web (browser lain diterapkan untuk membuat halaman seperti yang dilakukan oleh IE6). Karena semakin banyak pengembang web ingin menggunakan fitur standar web baru, semakin banyak situs web yang lebih didukung oleh Firefox daripada IE.

Ketika pangsa pasar IE menurun, MS menyadari bahwa standar yang tidak kompatibel bukanlah ide yang baik. Oleh karena itu MS mulai merilis versi IE baru (IE8 / IE9 / IE10) dengan semakin menghormati standar web.


Masalah web-tidak kompatibel

Namun masalahnya adalah semua situs web yang dirancang untuk IE6: Microsoft tidak dapat merilis versi IE baru yang tidak kompatibel dengan situs web yang dirancang IE6 lama ini. Alih-alih menyimpulkan versi IE situs web telah dirancang, MS meminta pengembang untuk menambahkan data tambahan ( X-UA-Compatible) di halaman mereka.

IE6 masih digunakan pada tahun 2016

Saat ini, IE6 masih digunakan (0,7% pada 2016) (4,5% pada Januari 2014), dan beberapa situs internet masih sesuai dengan IE6. Beberapa situs web / aplikasi intranet diuji menggunakan IE6. Beberapa situs web intranet hanya berfungsi 100% di IE6. Perusahaan / departemen ini lebih memilih untuk menunda biaya migrasi: prioritas lain, tidak ada yang tidak lagi tahu bagaimana situs web / aplikasi telah diterapkan, pemilik situs web / aplikasi lama bangkrut ...

Cina mewakili 50% dari penggunaan IE6 pada 2013, tetapi itu mungkin berubah di tahun-tahun berikutnya karena distribusi Linux Cina sedang disiarkan .

Percaya diri dengan keterampilan web Anda

Jika Anda (mencoba) menghormati standar web, Anda dapat selalu menggunakannya http-equiv="X-UA-Compatible" content="IE=edge,chrome=1". Untuk menjaga kompatibilitas dengan browser lama, hindari menggunakan fitur web terbaru: gunakan subset yang didukung oleh browser tertua yang ingin Anda dukung. Atau Jika Anda ingin melangkah lebih jauh, Anda dapat mengadopsi konsep sebagai penurunan yang baik , peningkatan progresif dan JavaScript yang tidak mengganggu . (Anda mungkin juga senang membaca Apa yang harus dipertimbangkan pengembang web? )

Jangan pedulikan rendering versi IE terbaik: ini bukan pekerjaan Anda karena browser harus mematuhi standar web. Jika situs Anda memenuhi standar dan menggunakan fitur-fitur terbaru, maka browser harus sesuai dengan situs web Anda .

Selain itu, karena ada banyak kampanye untuk membunuh IE6 ( tidak ada lagi IE6 , kampanye MS ), saat ini Anda dapat menghindari membuang-buang waktu dengan pengujian IE!

Pengalaman IE6 pribadi

Pada 2009-2012, saya bekerja untuk perusahaan yang menggunakan IE6 karena peramban tunggal resmi diizinkan . Saya harus mengimplementasikan situs web intranet hanya untuk IE6. Saya memutuskan untuk menghormati standar web tetapi menggunakan subset yang mendukung IE6 (HTML / CSS / JS).

Itu sulit, tetapi ketika perusahaan beralih ke IE8, situs web masih dirender dengan baik karena saya telah menggunakan Firefox dan pembakar untuk memeriksa kompatibilitas standar web;)

olibre
sumber
2
'Mode tepi dimaksudkan hanya untuk tujuan pengujian; jangan menggunakannya di lingkungan produksi. ' Lihat msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager
5
Silakan @ClaraOnager luangkan waktu untuk menjelaskan apa yang salah dalam jawaban saya (dari sudut pandang Anda). Bahkan jika MS tidak merekomendasikan penggunaan mode Edge di lingkungan produksi, ada alasan bagus untuk menggunakannya di lingkungan produksi. Penting untuk secara teknis mengklarifikasi praktik terbaik kami. Saya suka berbagi pengetahuan dan pengalaman saya. Saya berharap kamu juga. Kita bisa berkembang bersama;) Cheers
olibre
2
Hai @ Ricardo, saya setuju dengan Anda. Microsoft mengatakan "Jika Anda ingin semua versi Internet Explorer yang didukung untuk membuka halaman Anda dalam mode standar, gunakan HTML5 [...]" di bagian Memahami mode dokumen lawas (lihat Tip ). Mungkin penjelasan saya tidak jelas ... Mungkin saya salah mengerti sesuatu ... Saya telah mengubah teks saya ... Apa pendapat Anda tentang perubahan saya? apakah itu baik untuk anda? Apa saran Anda untuk berubah / ditingkatkan dalam jawaban saya? Terima kasih atas tanggapan Anda. Cheers ;-)
olibre
5
@ClaraOnager ... dalam jawaban pertama Anda, Anda menunjuk dengan tidak benar, di halaman referensi .. MS mengatakan untuk tidak menggunakan dalam lingkungan produksi untuk: <meta http-equiv = "Konten yang Kompatibel dengan X-UA" konten = "IE = 7, 9,10 "> bukan hal Edge lainnya.
Usman Younas
3
Tentang Edge Mode yang digunakan dalam lingkungan produksi. Dari Microsoft:Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
L84
58

Perbedaannya adalah bahwa jika Anda hanya menentukan DOCTYPE, Pengaturan Tampilan Kompatibilitas IE diutamakan. Secara default pengaturan ini memaksa semua situs intranet ke Tampilan Kompatibilitas terlepas dari DOCTYPE. Ada juga kotak centang untuk menggunakan Tampilan Kompatibilitas untuk semua situs web, terlepas dari DOCTYPE.

Dialog Pengaturan Tampilan Kompatibilitas IE

X-UA-Compatiblemengesampingkan Pengaturan Tampilan Kompatibilitas, sehingga halaman akan merender dalam mode standar terlepas dari pengaturan browser. Ini memaksa mode standar untuk:

  • halaman intranet
  • halaman web eksternal ketika administrator komputer telah memilih "Tampilkan semua situs web dalam Tampilan Kompatibilitas" sebagai default — pikirkan perusahaan besar, pemerintah, universitas
  • ketika Anda secara tidak sengaja berakhir di Daftar Tampilan Kompatibilitas Microsoft
  • kasus di mana pengguna secara manual menambahkan situs web Anda ke daftar di Pengaturan Tampilan Kompatibilitas

DOCTYPEsendirian tidak bisa melakukan itu; Anda akan berakhir di salah satu mode Tampilan Kompatibilitas dalam kasus ini terlepas dari DOCTYPE.

Jika metatag dan header HTTP ditentukan, metatag akan diutamakan.

Jawaban ini didasarkan pada pemeriksaan aturan lengkap untuk menentukan mode dokumen di IE8 , IE9 , dan IE10 . Perhatikan bahwa melihat DOCTYPEadalah fallback terakhir untuk memutuskan mode dokumen.

andrewdotn
sumber
1
Dalam skenario intranet, secara default IE10 merender dalam mode kompatibilitas. Lihat stackoverflow.com/questions/13284083/…. Tag ini tidak diperlukan secara default untuk internet, tetapi diperlukan (secara default) saat menggunakan myintenralserver / myapp . Saya ingin menambahkan komentar ini, karena perbedaan internet vs intranet hanya jelas dari teks di tangkapan layar, bukan dalam teks dari jawaban di halaman.
yzorg
Anda benar, saya seharusnya lebih jelas tentang itu. Saya menulis ulang pos; beri tahu saya jika ada hal lain yang harus saya tangani. Terima kasih!
andrewdotn
Terima kasih! jawaban ini jauh lebih jelas daripada jawaban lain mengenai situs intranet. Jawaban lain masuk ke rincian teknis tentang mengapa dan bagaimana. Saya benci MS IE. Juga tulisan yang bagus: satu paragraf menjelaskan mengapa kita membutuhkan meta tag. Bravo
Aniket Inge
3
Saya berharap saya dapat menjawab jawaban ini seratus kali. Ambil layar yang menyelamatkan jiwa di sana. Tekanan darah menurun saat saya mengetik ini ...
EvilDr
Luar biasa, luar biasa, luar biasa! Terima kasih banyak atas jawaban ini.
Seanosapien
25

Gunakan ini untuk memaksa IE untuk menyembunyikan tombol kompatibilitas browser yang mengganggu di bilah alamat:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
George Filippakos
sumber
1
'Mode tepi dimaksudkan hanya untuk tujuan pengujian; jangan menggunakannya di lingkungan produksi. ' Lihat msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager
4
Untuk ukuran yang baik saya gunakan <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">dengan chrome=1arahan sehingga meminta pengguna IE6, 7, 8 untuk menginstal / menggunakan Chrome Frame . Bahkan HTML5 Boilerplate menggunakannya.
Ricardo Zea
10
@ClaraOnager Meskipun Microsoft mengatakannya, itu tidak berarti mereka benar. Saya sudah menggunakannya <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">sejak hari itu keluar tanpa masalah sama sekali. Sebenarnya, saya sudah menyelamatkan tim saya dan saya sendiri dengan ratusan sakit kepala dengan membuat IE pengguna menggunakan mesin terbarunya untuk membuat halaman yang kami buat. Berlawanan dengan Anda dan Microsoft, saya merekomendasikan semua orang untuk menggunakan tag meta di atas setiap waktu . Selama IE masih ada, kita akan "dipaksa" untuk menggunakan tag meta ini: p
Ricardo Zea
Ini telah berubah dengan IE11. Versi ini telah mengambil langkah dramatis ke dunia browser mengikuti standar resmi. Ini telah menjadi ekstrem bahkan tidak mengidentifikasi dirinya sebagai Internet Explorer! Sekarang dikatakan "Netscape" dan tidak termasuk apa pun di info browser untuk memberikan identitas aslinya. Jika Anda masih menemukan quirks di browser IE sejak versi ini aktif, Anda harus memaksanya masuk ke IE10 dengan mengatur <meta http-equiv="X-UA-Compatible" content="IE=10">. Kemudian ia melaporkan dirinya sebagai Microsoft Internet Explorer.
awe
menghadapi masalah terkait yang sama, jika ada yang bisa membantu saya: stackoverflow.com/questions/22013880/…
dsi
25

Karena saya tidak dapat menambahkan komentar pada jawaban yang ditandai saya hanya akan memposting ini di sini.

Selain jawaban yang benar Anda memang dapat memvalidasi ini. Karena tag meta ini hanya diarahkan untuk IE yang perlu Anda lakukan adalah menambahkan syarat IE.

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

Melakukan ini sama seperti menambahkan pernyataan bersyarat IE lainnya dan hanya berfungsi untuk IE dan tidak ada browser lain yang akan terpengaruh.

EMurph78
sumber
4
Komentar bersyarat tidak boleh digunakan KECUALI untuk menargetkan HTML untuk <= IE9. (Ini benar bahkan ketika jawaban ini ditulis)
EKW
18

Saya pikir diagram dari Microsoft ini menjelaskan semuanya. Untuk memberi tahu IE cara merender konten,! DOCTYPE harus bekerja dengan tag meta yang Kompatibel dengan X-UA. ! DOCTYPE dengan sendirinya tidak mempengaruhi perubahan Mode Dokumen IE.

masukkan deskripsi gambar di sini

http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png

James Tsai
sumber
3
Berikut adalah versi terbaru yang mencakup IE9. OMG ... ie.microsoft.com/testdrive/ieblog/2010/Jun/…
Spiralis
3
Dan yang ini termasuk IE10: msdn.microsoft.com/en-us/library/ff406036%28v=vs.85%29.aspx Bab-bab yang berbeda memiliki diagram alur yang terpisah ...
Spiralis
Anda salah membaca diagram alur itu. Dengan tidak adanya X-UA-Compatible browser akan mencari <! DOCTYPE>. Jika menemukannya, ia merender dalam mode standar (alias "EmulateIE8"). Jika tidak, ia kembali ke "Mode Kebiasaan".
Chuck Le Butt
Terima kasih telah mengunggah gambar ke Stackoverflow. Tautan asli ke Microsoft semuanya mati.
Elmue
12

Hanya untuk kelengkapan, Anda sebenarnya tidak perlu menambahkannya ke HTML Anda (yang tidak diketahui http-equiv dalam HTML5)

Lakukan ini dan jangan pernah melihat ke belakang (contoh pertama untuk apache , kedua untuk nginx )

Header set X-UA-Compatible "IE=Edge,chrome=1"

add_header X-UA-Compatible "IE=Edge,chrome=1";
bitinn
sumber
2
@HueiTan - Saya pikir poster tersebut mengatakan bahwa ketika Anda mencoba untuk memvalidasi halaman menggunakan W3 Validator itu akan menimbulkan kesalahan: Bad value X-UA-Compatible for attribute http-equiv on element meta.- Ini tidak berarti itu tidak akan berhasil. Itu hanya bukan kode yang valid.
L84
10

Hanya satu kalimat untuk mengatakan Instruksikan Internet Explorer untuk menggunakan mesin rendering terbaru

<meta http-equiv="x-ua-compatible" content="ie=edge">
Bipon Biswas
sumber
7
<meta http-equiv="X-UA-Compatible" content="IE=Edge">

Agar garis ini berfungsi seperti yang diharapkan, pastikan bahwa:

  1. Ini adalah elemen pertama setelahnya <head>
  2. Tidak ada komentar kondisional yang digunakan sebelum tag meta, misalnya pada <html>elemen

Kalau tidak, beberapa versi IE mengabaikannya.

MEMPERBARUI

Kedua aturan ini disederhanakan tetapi mudah diingat dan diverifikasi. Meskipun MSDN docs menyatakan Anda dapat menempatkan judul dan meta tag lain sebelum ini, saya tidak akan merekomendasikan untuk melakukannya.

Bagaimana membuatnya bekerja dengan komentar bersyarat.

Artikel menarik tentang urutan elemen di kepala. (blogs.msdn.com, untuk IE)

REFERENSI

Dari dokumentasi MSDN :

The X-UA-Compatible[...] harus muncul dalam header dari halaman web (bagian HEAD) sebelum semua elemen lain kecuali untuk elemen judul dan meta lainnya.

ToniTornado
sumber
5

jika Anda menggunakan situs web Anda di jaringan yang sama dengan server IE suka beralih ke mode kompatibilitas meskipun DOCTYPE.
Menambahkan meta http-equiv="X-UA-Compatible" content="IE=Edge" menonaktifkan ini perilaku yang tidak diinginkan.

Łukasz Jakóbiec
sumber
Kata lain untuk 'jaringan yang sama dengan server' adalah intranet ... jadi pada dasarnya IE10 rusak secara default untuk semua situs intranet. Lihat tangkapan layar di jawaban @AndrewNeitsch.
yzorg
3

Ini hanya 1 query dari Google , tetapi begini:

http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx

Memahami mode dokumen lawas

Gunakan nilai berikut untuk menampilkan halaman web dalam mode tepi, yang merupakan mode standar tertinggi yang didukung oleh Internet Explorer, dari Internet Explorer 6 hingga IE11.

<meta http-equiv="x-ua-compatible" content="IE=edge"

Perhatikan bahwa ini secara fungsional setara dengan menggunakan doctype HTML5. Ini menempatkan Internet Explorer ke dalam mode dokumen yang didukung tertinggi. Edge most paling berguna untuk situs web yang dikelola secara teratur yang secara rutin diuji interoperabilitas antara beberapa browser, termasuk Internet Explorer.

Catatan Dimulai dengan IE11, mode tepi dianggap sebagai mode dokumen yang disukai. (Dalam versi sebelumnya, itu dianggap eksperimental.) Untuk mempelajari lebih lanjut, lihat Mode dokumen tidak digunakan lagi. Dimulai dengan Windows Internet Explorer 8, beberapa pengembang web menggunakan elemen meta mode tepi untuk menyembunyikan tombol Tampilan Kompatibilitas pada bilah alamat. Pada IE11, ini tidak lagi diperlukan karena tombol telah dihapus dari bilah alamat. Karena memaksa semua halaman dibuka dalam mode standar, apa pun versi Internet Explorer, Anda mungkin tergoda untuk menggunakan mode edge untuk semua halaman yang dilihat dengan Internet Explorer. Jangan lakukan ini, karena sundulan Kompatibel-X-UA hanya didukung dimulai dengan Internet Explorer 8.

Tip Jika Anda ingin semua versi Internet Explorer yang didukung untuk membuka halaman Anda dalam mode standar, gunakan deklarasi tipe dokumen HTML5, seperti yang ditunjukkan pada contoh sebelumnya.

Juga di antara hasil pencarian adalah:

Joe Mike
sumber
2

2.1.3.5 X-UA-Kompatibilitas Meta Tag dan HTTP Response Header

Fungsi ini tidak akan diimplementasikan dalam versi Microsoft Edge apa pun.

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />

Lihat https://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx

Ya, saya tahu bahwa saya terlambat ke pesta, tetapi saya baru saja mengalami beberapa masalah dan diskusi, dan pada akhirnya bos saya meminta saya menghapus X-UA-Compatibletanda penghapusan dari semua dokumen yang telah saya kerjakan.

Jika informasi ini kedaluwarsa atau tidak lagi relevan, perbaiki saya.

Shawn Spencer
sumber