Mengapa menggunakan IE = Edge yang Kompatibel dengan X-UA lagi?

95

Saya telah mengikuti beberapa kursus online akhir-akhir ini dan saya masih melihat beberapa instruktur menambahkan tag meta berikut ke bagian atas dokumen mereka secara default:

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

Pemikirannya tampaknya bahwa ini sama pentingnya dan berguna <meta charset="UTF-8">.

Tapi kenapa?

Menurut dokumentasi Modern.ie Microsoft, "praktik terbaik" yang "memastikan Internet Explorer menggunakan mesin terbaru". OK cukup adil.

Namun, jika Anda mengikuti diagram alir di MSDN itu jelas menunjukkan bahwa dokumen tanpa `informasi X-UA-Compatible diteruskan ke "Kompatibilitas Lihat" preferensi pengguna, dan jika yang tidak diatur kemudian hanya mengikuti deklarasi! DOCTYPE .

Dengan kata lain, kecuali pengguna memiliki beberapa pengaturan Tampilan Kompatibilitas, IE hanya akan mengikuti! DOCTYPE Anda dan tetap menggunakan mode standar terbaru browser Anda untuk merender ... Tidak perluX-UA-Compatible IE=Edge pernyataan sama sekali.

Seperti yang dikatakan MSDN: " Gunakan deklarasi tipe dokumen HTML5 untuk mengaktifkan mode tepi ".

Jadi dalam keadaan apa X-UA-Compatible IE=Edgedibutuhkan?

Chuck Le Butt
sumber

Jawaban:

153

Seperti yang ditunjukkan oleh jawaban @ David, kecuali Anda meng-hosting situs di zona "Intranet Lokal", hanya ada sedikit alasan untuk memasukkannya ke <meta http-equiv="X-UA-Compatible" content="IE=edge">halaman web Anda, dan (menurut rekomendasi praktik terbaik Microsoft ) sama sekali tidak ada alasan untuk memasukkannya ke dalam HTML. (Anda harus menempatkannya di konfigurasi server atau header situs Anda - bukan di HTML itu sendiri.)

Jika Anda mempertimbangkan untuk menggunakan X-UA-Compatibledi mana saja dalam proyek Anda, Anda harus ingat bahwa Tampilan Kompatibilitas hanya memengaruhi IE8, 9, dan 10. Ini hanya diperkenalkan di IE8 dan dinonaktifkan di IE11.

Ketahuilah juga bahwa IE11 adalah satu-satunya versi IE yang didukung secara resmi saat ini . Semua versi lama harus dianggap tidak aman.

Jika itu tidak cukup alasan untuk meyakinkan Anda untuk tidak menggunakannya, pertimbangkan bahwa Microsoft menyatakan bahwa IE8 dan yang lebih baru sudah secara otomatis merender dalam Mode Standar ketika <!DOCTYPEada , membuatnya semakin tidak berguna.

Anda dapat melihat sendiri alur yang diperlukan IE untuk memutuskan mode dokumen yang akan digunakan:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Seperti yang Anda lihat, jika tidak ada X-UA-Compatibletag meta atau header HTTP, ini akan memeriksa pengaturan "Tampilan Kompatibilitas" pengguna. Jika pengguna tidak memiliki apa pun untuk situs web Anda, IE kemudian memeriksa keberadaan <!DOCTYPEdeklarasi. Jika menemukannya, secara otomatis menggunakan Mode Standar terbaru (alias "EmulateIEx"). Jika tidak, itu kembali ke Mode Quirks.

Lebih banyak lagi alasan mengapa Anda tidak boleh menggunakan tag meta "Kompatibel dengan X-UA" dari Microsoft sendiri (penekanan dari saya):

Ketika Internet Explorer menemukan tag META yang Kompatibel dengan X-UA, Internet Explorer akan memulai kembali menggunakan mesin versi yang ditentukan. Ini merupakan pukulan kinerja karena browser harus berhenti dan mulai kembali menganalisis konten.

Dengan kata lain, ini memperlambat render halaman awal

Petunjuk X-UA-Compatible adalah alat untuk memungkinkan aplikasi bekerja di versi Internet Explorer terbaru sementara aplikasi diperbarui .

Itu hanya dirancang untuk penggunaan sementara.

Praktik terbaiknya adalah Header HTTP yang Kompatibel dengan X-UA . Menambahkan arahan ke header respons memberi tahu Internet Explorer mesin apa yang digunakan sebelum penguraian konten dimulai. Ini harus dikonfigurasi di server situs web.

Dengan kata lain, ada cara yang lebih baik untuk mengimplementasikan X-UA-Compatible jika Anda benar-benar membutuhkannya.

Mulai 12 Januari 2016, hanya versi Internet Explorer terbaru yang tersedia untuk sistem operasi yang didukung yang akan menerima dukungan teknis dan pembaruan keamanan. Internet Explorer 11 adalah versi terakhir Internet Explorer, dan akan terus menerima pembaruan keamanan, perbaikan kompatibilitas, dan dukungan teknis pada Windows 7, Windows 8.1, dan Windows 10 .

IE11 adalah satu-satunya versi IE yang didukung secara resmi .

Satu-satunya alasan untuk menyertakan X-UA-Compatibletag meta di HTML Anda adalah untuk menimpa setelan "Tampilan Kompatibilitas" pengguna di IE8, 9, dan 10 untuk situs web Anda. Dalam hampir setiap kasus, pengguna tidak akan mengubah pengaturan ini (mengapa mereka melakukannya?), Dan sekarang browser tersebut bahkan tidak didukung lagi.

Singkatnya: Tag ini memiliki harinya.

Chuck Le Butt
sumber
17
Diagram alir itu luar biasa.
bennettp123
9
Sekadar catatan, per hari ini (16/10/2015), memang benar tombol compat di IE11 sudah hilang, namun masih bisa diaktifkan di menu Setting, jadi masih ada sebagai kemungkinan. Kami menggunakannya saat ini karena perangkat lunak berbasis web kami digunakan di intranet perusahaan yang memiliki sistem lama yang memerlukan mode compat agar dapat berfungsi, jadi kami harus mengatasinya. Tip bagus tentang header HTTP, terima kasih untuk itu!
Doug Johnson
1
Karena masih mungkin untuk mengaktifkan tampilan kompatibilitas di IE11 dan klien korporat melakukannya, header / tag masih berguna. Saya dapat melihat mengapa header HTTP lebih unggul tetapi jika tag berada di awal DOM, sedikit kerusakan yang terjadi, dan hanya di browser yang tidak memulai dalam mode Edge. Sebagai ketentuan hanya untuk pengguna yang sesekali terjebak dalam tampilan kompatibilitas, menurut saya bukan praktik yang buruk untuk menggunakan tag (tepat di bagian atas <head>).
Tom Boutell
2
@ChuckLeButt Atau administrator mereka telah melakukan itu "untuk" mereka melalui Kebijakan Grup. Masih banyak hal dalam pengaturan perusahaan yang merupakan kemenangan terbesar bagi kami untuk memiliki cara untuk menggantinya.
Tom Boutell
2
@ChuckLeButt Saya mengerti maksud Anda dan tidak memiliki windows-fu untuk membantahnya ... namun, klien kami memberi tahu kami bahwa mereka memiliki IE11 dalam mode compat di seluruh papan; bagaimana mereka mendapatkannya, tidak ada pengetahuan yang dibagikan kepada kami. Mungkin saja mereka benar-benar memilikinya dalam daftar eksplisit selama ini.
Tom Boutell
18

Jika pengguna menjelajahi halaman yang terletak di zona "Intranet Lokal" (seperti di intranet perusahaan), "tampilan kompatibilitas" diaktifkan secara default. Ini terjadi ketika saya menggunakan "X-UA-Compatible" untuk memaksa IE menggunakan mesin terbaru.

David
sumber
Ya, itu sepertinya penggunaan yang valid, tetapi dalam situasi itu Anda mungkin ingin meletakkannya di konfigurasi server, atau tetap di header situs? stackoverflow.com/a/9338959/199700
Chuck Le Butt
1
Ada juga perubahan yang disebabkan oleh Microsoft yang sedikit menghentikan Tampilan Kompatibilitas. Selain Intranet Lokal, jika domain memiliki banyak subdomain & aplikasi di dalamnya, menambahkan Tampilan Kompatibilitas untuk subdomain akan menerapkannya ke SELURUH domain sekarang (sebelum domain tersebut hanya diterapkan ke subdomain tertentu). Jadi jika Anda hanya memiliki satu aplikasi yang mungkin memerlukannya, Anda harus melakukan ini untuk semua yang lain untuk menghindari masalah dukungan.
kilkenny
@ChuckLeButt, header akan bagus selama Anda berada di jaringan, tetapi jika pengguna memilih untuk menyimpan halaman secara lokal, yang tersisa hanyalah <meta>tag yang disematkan . Itulah mengapa secara umum merupakan praktik yang baik untuk mereplikasi header penting sebagai <meta>tag juga.
ravilov
1

Selama itu disetel ke "Edge", itu memvalidasi sebagai HTML5, dan saya diberitahu itu hanya menyebabkan IE merender ulang halaman jika situs sudah merendernya dalam mode Kompatibilitas. Tetap saja, meletakkannya di konfigurasi server ( .htaccess, dll.) Lebih baik daripada meletakkannya di HTML setiap halaman.

Michael McGinnis
sumber