IE10 merender dalam mode IE7. Bagaimana cara memaksa mode Standar?

Jawaban:

244

Internet Explorer membuat asumsi bahwa sebagian besar halaman web ditulis untuk menargetkan versi IE sebelumnya dan melihat ke doctype, tag meta, dan HTML untuk menentukan mode kompatibilitas terbaik (terkadang salah). Bahkan dengan doctype HTML5, IE tetap akan menempatkan situs web Anda dalam mode kompatibilitas jika itu adalah situs intranet.

Untuk memastikan bahwa situs web Anda selalu menggunakan mode standar terbaru, Anda dapat memastikan Display intranet sites in Compatiblydimatikan. Namun Anda harus melakukan ini pada setiap mesin lokal ke server web (petunjuk ada di bawah).

Atau, dan lebih baik lagi, Anda dapat menggunakan X-UA-Compatibleheader untuk mematikannya dari server. Penting untuk diperhatikan bahwa menggunakan tag meta tidak akan berhasil!

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

Di seluruh MSDN disebutkan bahwa menggunakan header host atau tag meta bahkan dapat menimpa situs intranet. Artikel Memahami mode kompatibilitas di internet explorer 8 mengatakan yang berikut ini.

Sejumlah besar situs web bisnis internal dioptimalkan untuk Internet Explorer 7 sehingga pengecualian default ini mempertahankan kompatibilitas tersebut. ... Sekali lagi jika tag Meta atau header http digunakan untuk mengatur mode kompatibilitas ke dokumen itu akan menimpa pengaturan ini.

Namun, dalam praktiknya ini tidak akan berhasil, menggunakan header host adalah satu-satunya opsi yang berfungsi. Bagian komentar di artikel juga menunjukkan banyak contoh dari masalah ini.

Menggunakan tag Meta juga memiliki beberapa masalah lain seperti mengabaikan tag jika tidak langsung di bawah <head>tag atau jika ada terlalu banyak data sebelumnya (4k). Ini juga dapat memicu dokumen untuk diurai ulang di beberapa versi IE yang akan memperlambat rendering. Anda dapat membaca lebih lanjut tentang masalah ini di artikel MSDN Praktik Terbaik: Atur HEAD Anda .

Menambahkan header Kompatibel dengan X-UA

Jika Anda menggunakan .NET dan IIS, Anda dapat menambahkan ini ke web.config, Anda juga dapat melakukan ini secara terprogram:

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

Jika Anda tidak menggunakan IIS, mudah dilakukan dalam bahasa apa pun. Misalnya, berikut cara melakukannya di PHP:

header('X-UA-Compatible: IE=edge');

Selama X-UA-Compatibleheader ada dengan doctype HTML5, situs akan selalu berjalan dalam mode standar terbaru.

Mematikan Tampilan Kompatibilitas
Mungkin masih berguna untuk mematikan Tampilan Kompatibilitas. Untuk melakukannya hapus centang Display all intranet sites in compatibility viewdi Pengaturan Tampilan Kompatibilitas.

Pengaturan Tampilan Kompatibilitas

Anda dapat memunculkan ini dengan menekan Altuntuk mendapatkan menu.

masukkan deskripsi gambar di sini

Sunting Jawaban ini juga berkaitan dengan IE9.

Daniel Little
sumber
Maafkan ketidaktahuan saya, tetapi bagaimana cara menuju ke lembar Pengaturan ini? Saya memeriksa pengaturan Internet explorer, mengklik kanan tampilan kompatibilitas di bilah alamat - tidak ada.
dipecat
2
@Nick digunakan altuntuk membuka toolbar, itu di bawah alat -> pengaturan tampilan compat
Daniel Little
Oh terima kasih, sepertinya itu menyelesaikannya. Membuat orang bertanya-tanya mengapa mereka melakukan itu.
dipecat
25
+1000;). SO harus memaksa setiap OP untuk melihat jawaban ini, ketika mereka memiliki tag [IE] dan kata "kompatibel" dalam pertanyaan mereka, bahkan sebelum mereka benar-benar memposting pertanyaan itu.
Teemu
2
Saya mencoba menambahkan bagian tajuk khusus ke web.config proyek. Tampaknya pengaturan tidak menimpa pengaturan IE untuk menggunakan tampilan kompatibilitas untuk situs intranet.
DomenicDatti
25

Ini bekerja untuk saya ..

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
JGilmartin
sumber
11
NB seperti yang dikatakan Lavinski di atas, "tag meta tidak melakukan apa pun untuk situs intranet."
Nathan
2
Untuk apa nilainya, untuk situs web yang dihosting (situs non-intranet) yang memiliki X-UA-Compatibletag meta, namun masih tidak memicu mode dokumen Standar IE10 sebagai Default Halaman, saya menemukan bahwa jika tag meta terletak di bawah tag skrip atau hanya terlalu jauh dari atas <head>pohon DOM, IE10 menangis dan menyetel mode dokumen ke Standar IE8. Jadi, pertahankan agar IE=edgetag meta Anda tetap menutup <title>tag. Tidak selalu merupakan perbaikan sederhana untuk situs Wordpress jika tidak ada kode keras di file template header. Tidak yakin apakah IE11 peduli di mana tag meta berada, tetapi semoga ini terbukti bermanfaat bagi seseorang.
purefusion
1
Untuk blind copy dan paster seperti saya, tag penutupnya tidak ada. . <meta http-equiv = "X-UA-Compatible" content = "IE = edge"> </meta>
John Newman
Anda hanya perlu menutup tag meta jika Anda menggunakan doctype XHTML
Andy Brudtkuhl
2
Juga tag ini harus menjadi tag pertama di dalam <head>
Chris Gunawardena
10

Coba tambahkan tag berikut ke kepala

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
Jeow Li Huan
sumber
5
Itu harus IE=Edgesebaliknya
Daniel Sedikit
1
Tetapi ada risiko bahwa versi IE yang akan datang melakukan sesuatu yang buruk dan merusak situs Anda
Jeow Li Huan
7
Tidak, itu bukan risiko jika Anda mengikuti spesifikasi, Anda tidak akan melihat orang melakukan itu untuk chrome.
Daniel Little
1
Tag ini harus menjadi tag pertama di dalam <head>
Chris Gunawardena
1
Hasil edit pada jawaban ini menunjukkan mengapa ini bukan ide yang bagus. Jawaban yang diterima adalah solusi terbaik.
David Granado
2

Tag meta tidak melakukan apa pun untuk situs intranet dan masalah saya adalah rendering IE10 dalam mode kompatibilitas IE10. Apa yang mengatasi masalah bagi saya adalah mengambil jawaban @ Jeow lebih jauh dan menggunakan nilai itu di header http dengan menambahkan yang berikut ke web.configdalam IIS:

<system.webServer>
  <httpProtocol> 
    <customHeaders> 
      <clear />
      <!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
      <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> 
    </customHeaders> 
  </httpProtocol>
</system.webServer>

Untuk tujuan IE, situs intranet menyertakan situs publik yang tidak dirutekan secara eksternal - misalnya, karyawan Stackoverflow yang bekerja dari kantor mungkin akan melihat stackoverflow.com dalam mode kompatibilitas.

ov
sumber
1

Ini bekerja dengan sempurna untuk saya ketika saya melakukan hal berikut:

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

Menggunakan contoh tepat yang mereka berikan di kotak pertama (menambahkan yang hilang </html>di bagian bawah), membukanya di IE10 dan standar terpaksa, saya pikir Anda mungkin perlu konten aktual dalam html untuk itu untuk memaksa standar tidak yakin.

Saran saya adalah mengganti kode kosong Anda dengan konten aktual (sesuatu yang sederhana) dan melihat apa fungsinya.

ZacNespral21
sumber