Saya cukup bingung. Saya harus bisa mengatur
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
dan IE8 dan IE9 harus membuat halaman menggunakan mesin rendering terbaru. Namun, saya baru saja mengujinya, dan jika Mode Kompatibilitas dihidupkan di tempat lain di situs kami, itu akan tetap aktif untuk halaman kami , meskipun kami harus memaksanya untuk tidak melakukannya.
Bagaimana Anda memastikan bahwa IE tidak menggunakan Mode Kompatibilitas (bahkan dalam intranet)?
FWIW, saya menggunakan deklarasi DocType HTML5 ( <!doctype html>
).
Berikut adalah beberapa baris pertama halaman:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="innerpage no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="innerpage no-js ie8"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="en" class="innerpage no-js">
<!--<![endif]-->
<head>
<meta charset="ISO-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
EDIT: Saya baru tahu bahwa pengaturan default pada IE8 adalah menggunakan mode kompatibilitas IE7 untuk situs intranet. Apakah ini akan menimpa tag meta yang Kompatibel dengan X-UA?
Jawaban:
Jika Anda perlu mengganti Pengaturan Tampilan Kompatibilitas IE untuk situs intranet, Anda dapat melakukannya di web.config (IIS7) atau melalui header HTTP khusus di properti situs web (IIS6) dan mengatur X-UA-Compatible di sana. Meta tag tidak mengesampingkan pengaturan intranet IE di Pengaturan Tampilan Kompatibilitas, tetapi jika Anda mengaturnya di server hosting itu akan menimpa kompatibilitas.
Contoh untuk web.config di IIS7:
Sunting : Saya menghapus
clear
kode dari sesaat sebelumadd
; itu adalah pengawasan yang tidak perlu dari menyalin dan menempel. Tangkapan yang bagus, komentator!sumber
<clear />
? Tajuk khusus apa yang dihapus oleh ini?<urlCompression...>
aturan setidaknya untuk saya. Aturan itu tidak gzipping, yang saya inginkan jadi saya berkomentar dengan jelas. Informasi lebih lanjut akan menyenangkan.<?php header('X-UA-Compatible: IE=edge'); ?>
Solusi Sisi Server adalah yang disarankan, seperti yang diusulkan @TimmyFranks dalam jawabannya, tetapi jika seseorang perlu menerapkan
X-UA-Compatible
aturan pada tingkat halaman, silakan baca kiat-kiat berikut, untuk mendapatkan manfaat dari pengalaman orang yang sudah terbakarThe
X-UA-Compatible
meta tag harus muncul langsung setelah gelar di<head>
elemen. Tidak ada tag meta lain, tautan css, dan skrip panggilan js yang dapat ditempatkan sebelumnya.Jika ada komentar kondisional di halaman (misalkan terletak di
<html>
), mereka harus ditempatkan di bawah, setelah<head>
.Tim Html5BoilerPlate menulis tentang bug ini - http://h5bp.com/i/378 Mereka memiliki beberapa solusi.
Mengenai tampilan Intranet & Kompatibilitas, ada pengaturan ketika Anda pergi ke alat> Pengaturan tampilan kompatibilitas.
sumber
X-UA-Compatible
harus muncul sedini mungkin, mungkin sesudahnyacharset
. Saya tidak berpikir itu benar bahwa "harus muncul tepat setelah judul".X-UA-Compatible
meta tag dapat muncul setelahtitle
,base
dan meta tag lain tanpa kehilangan efeknya. Inilah yang saya uji di IE8. Tidak ada komentar kondisional yang dapat diberikan sebelumnya.Perhatikan bahwa jika Anda menyajikannya dari PHP, Anda dapat menggunakan kode berikut untuk memperbaikinya juga.
sumber
<!--[if lt IE 7 ]> <html>...
! TERIMA KASIH! Anda adalah dewa yang diutus !!Ternyata, ini ada hubungannya dengan Microsoft "cerdas" pilihan untuk membuat semua situs intranet memaksa ke mode kompatibilitas, bahkan jika
X-UA-Compatible
diatur keIE=edge
.sumber
Saya juga mendapat masalah yang sama rendering IE9 dalam standar Dokumen IE7 untuk host lokal. Saya mencoba banyak tag komentar kondisional tetapi tidak berhasil. Pada akhirnya saya hanya menghapus semua tag bersyarat dan baru saja menambahkan meta tag langsung setelah kepala seperti di bawah ini dan itu berfungsi seperti pesona.
Semoga ini bisa membantu
sumber
Bahkan jika Anda telah menghapus centang opsi "Tampilkan situs intranet di Tampilan Kompatibilitas", dan memiliki X-UA-Kompatibel di header respons Anda, ada alasan lain mengapa browser Anda mungkin secara default menjadi "Tampilan Kompatibilitas" - Kebijakan Grup Anda. Lihatlah konsol Anda untuk pesan berikut:
Di mana xxx.xxx adalah domain untuk situs Anda (mis. Test.com). Jika Anda melihat ini maka kebijakan grup untuk domain Anda diatur sehingga setiap situs yang berakhir dengan test.com akan secara otomatis merender dalam mode Kompatibilitas terlepas dari jenis dokumen, header, dll.
Untuk informasi lebih lanjut, silakan lihat tautan berikut (menjelaskan kode html): http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx
sumber
Seperti NEOSWF tunjukkan di atas, komentar bersyarat Paul Irish menghentikan meta tag yang memengaruhi.
Ada beberapa perbaikan di sini ( http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/ )
Ini termasuk:
Menambahkan dua kelas HTML, menggunakan header server dan menambahkan komentar kondisional di atas DOCTYPE.
Pada proyek terbaru saya, saya memutuskan untuk menghapus komentar bersyarat Paul Irish. Saya tidak suka ide menambahkan apa pun sebelum html tanpa melakukan BANYAK pengujian terlebih dahulu dan senang melihat apa yang telah ditetapkan hanya dengan melihat HTML.
Pada akhirnya saya dikelilingi div tepat setelah tubuh dan menggunakan komentar kondisional misalnya
Saya bisa melakukan ini di seluruh tubuh tetapi lebih sulit dengan CMS seperti Wordpress.
Jelas ini adalah DIV lain di dalam markup, tetapi ini hanya untuk browser lama.
Saya pikir itu bisa menjadi keputusan berdasarkan proyek.
Saya juga telah membaca sesuatu tentang tag meta charset yang perlu datang dalam 1024 byte pertama jadi ini memastikan hal itu.
Terkadang ide yang paling sederhana, termudah untuk dibaca adalah yang terbaik dan pasti layak untuk dipikirkan! Berkat komentar 6 pada tautan di atas untuk menunjukkan ini.
sumber
X-UA-Compatible
hanya akan menimpa Mode Dokumen, bukan Mode Browser, dan tidak akan berfungsi untuk semua situs intranet; jika ini kasus Anda, solusi terbaik adalah menonaktifkan "Tampilkan situs intranet dalam Tampilan Kompatibilitas" dan tetapkan pengaturan kebijakan grup untuk menentukan situs intranet mana yang memerlukan mode kompatibilitas.sumber
Saya menambahkan berikut ini ke file htaccess saya, yang melakukan trik:
sumber
Selain itu, Kompatibel dengan X-UA harus menjadi tag meta pertama di bagian kepala
Omong-omong, urutan yang benar atau tag kepala utama adalah:
Cara ini
sumber
Timmy Franks sudah tepat untukku. Kami baru saja mengalami masalah hari ini di mana klien memiliki IE8 di seluruh perusahaan, dan itu memaksa situs yang kami tulis untuk intranet mereka ke mode kompatibilitas. Pengaturan "IE-Edge" sepertinya memperbaikinya.
sumber
Untuk Nginx,
ref: https://github.com/h5bp/server-configs/commit/a5b0a8f736d68f7de27cdcb202e32975a74bd2c5
sumber
IE 11 tidak memungkinkan Anda untuk menimpa pengaturan tampilan kompatibilitas browser lagi dengan mengirimkan header ...
Tampaknya satu-satunya cara untuk memaksa browser untuk tidak menggunakan tampilan kompatibilitas adalah memiliki pengguna menonaktifkannya di browser mereka. Situs kami adalah situs Intranet, dan opsi default IE adalah menggunakan tampilan kompatibilitas untuk situs Intranet. Sungguh menyakitkan!
Kami dapat mencegah kebutuhan pengguna untuk mengubah pengaturan browser mereka untuk pengguna IE 9 dan 10, tetapi itu tidak lagi berfungsi di IE 11. Pengguna IE kami beralih ke Chrome, di mana ini bukan masalah, dan tidak pernah memiliki telah.
sumber
IE11
tidak mendukung Mode Kompatibilitas lain selainedge
. Tautan ke dokumentasi resmi . Itu berarti kita tidak perlu menggunakan tag meta itu untuk menyembunyikan tombol CM pada bilah alamat lagi.Saya bisa menyelesaikan ini memuat header sebelum HTML dengan php, dan itu bekerja dengan sangat baik.
ix.html adalah konten yang ingin saya muat setelah mengirim tajuk.
sumber
Saya mengalami masalah yang sama di IE11. Tidak ada jawaban yang memecahkan masalah saya. Setelah menggali sedikit, saya perhatikan bahwa browser sedang berjalan dalam mode Perusahaan . (verifikasi dengan menekan F12 dan klik tab emulasi, cari dropdown profil browser) Pengaturan dikunci, tidak memungkinkan saya untuk mengubah pengaturan.
Saya dapat mengubah profil ke Desktop setelah menghapus CurrentVersion dari kunci registri berikut:
Setelah mengubah mode ke Desktop , jawaban pada posting ini akan berfungsi.
sumber
Ketika browser Anda dibuka dengan Mode Kompatibilitas, bahkan Anda menghapus dan mematikan semua konfigurasi mode kompatibilitas dari browser web Anda dan Editor Kebijakan Grup Lokal, Anda dapat mencoba untuk menonaktifkan dari kunci register.
Ini juga terjadi pada saya saat menggunakan domain dan sub-domain untuk menghubungkan sisi server. Mesin dibatasi untuk membuka dalam mode kompabilitas untuk semua sub-domain.
Nonaktifkan MODE KOMPABILITAS UNTUK INTRANET
HKEY_LOCAL_MACHINE - SOFTWARE - Kebijakan - Microsoft - Internet Explorer - BrowserEmulation -> IntranetCompalityMode Nilai harus 0 (nol) . Dan juga menghapus nama domain yang ada dari PolicyList.
Jika tidak, Anda dapat menambahkan nilai baru (DWORD) yang berisi data nilai 0 (nol) .
sumber
Saya memiliki masalah yang sama setelah mencoba banyak kombinasi. Saya memiliki catatan kerja ini dan kompatibilitasnya diperiksa untuk intranet
sumber
Jika Anda menggunakan tumpukan LAMP, tambahkan ini ke file .htaccess Anda di folder root web Anda. Tidak perlu menambahkannya ke setiap file PHP.
sumber