Secara default IE8 memaksa situs web intranet ke mode kompatibilitas. Saya mencoba mengubah header meta ke IE8, tetapi tidak mengakui header meta dan hanya menggunakan pengaturan browser. Adakah yang tahu cara menonaktifkan ini?
200
Jawaban:
Dimungkinkan untuk mengganti mode kompatibilitas di intranet.
Untuk IIS, tambahkan saja kode di bawah ini ke web.config. Bekerja untuk saya dengan IE9.
Setara dengan Apache:
Dan untuk nginx:
Dan untuk express.js:
sumber
Michael Irigoyen benar TETAPI itu sedikit lebih rumit ...
jika Anda menggunakan pelat yang indah oleh Paul Irish maka Anda akan memiliki sesuatu seperti berikut: -
Ini TIDAK akan bekerja seperti yang diharapkan dan memaksakan IE ke mode kompatibilitas dalam Intranet lingkungan jika Anda memiliki "Tampilkan situs intranet dalam tampilan kompatibilitas" dicentang. Anda perlu menghapus komentar IE bersyarat untuk mencegah mode kompatibilitas Intranet.
Jadi kode berikut akan berfungsi:
Pada dasarnya jika Anda memicu komentar bersyarat IE sebelum
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
pernyataan itu maka Anda akan dipaksa ke mode kompatibilitas di lingkungan Intranet jika Anda menjalankan IE9 dengan pengaturan default.UPDATE - INFO TAMBAHAN: Tetapi perhatikan bahwa ada trik yang akan membuat HTML5 boilplate bekerja:
Tambahkan emtpy, komentar kondisional sebelum DOCTYPE. Dan catatan juga, bahwa ketika Anda melakukan itu , maka Anda dapat juga menambahkan komentar bersyarat sekitar
X-UA-Compatible
direktif, membuat halaman HTML5-sah juga. Jadi misalnya:Sebuah posting blog yang terinspirasi oleh bagian pertama dari jawaban ini , memiliki lebih rinci. Dan omong-omong: Seperti disebutkan dalam posting blog, kita juga bisa mengganti komentar bersyarat sebelum DOCTYPE dengan bersyarat setengah komentar dengan ada kondisi :
<!--[]-->
. Jadi, seperti ini:Tetapi perhatikan bahwa varian terakhir (
<--[]--><!DOCTYPE html>
) akan, seperti yang dijelaskan misalnya dengan jawaban atas pertanyaan lain , mengaktifkan masalah yang sudah diketahui dengan baik - untuk versi lawas IE tanpa dukungan untukX-UA-Compatioble
(baca: untuk IE7 dan IE6) - bawa browser ke mode quirks.sumber
Jika Anda membuka menu "Alat" dan memilih "Pengaturan Tampilan Kompatibilitas" Pada dialog di bagian bawah adalah pengaturan "Tampilkan situs intranet dalam mode kompatibilitas". Jika Anda tidak mencentang ini yang seharusnya menyelesaikan masalah dan IE akan menggunakan mode berdasarkan DOCTYPE.
sumber
Ada sejumlah kebingungan dalam jawaban untuk pertanyaan ini.
Jawaban teratas saat ini adalah solusi sisi server yang menetapkan bendera di header http dan beberapa komentar menunjukkan bahwa solusi menggunakan tag meta tidak berfungsi.
Saya pikir entri blog ini memberikan gambaran yang bagus tentang bagaimana menggunakan informasi meta kompatibilitas dan dalam pengalaman saya bekerja seperti yang dijelaskan: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/using/x- ua-kompatibel-untuk-membuat-tahan lama-perusahaan-web-aplikasi.aspx
Poin utama:
Satu poin penting (dan saya pikir banyak kebingungan berasal dari titik ini) adalah bahwa IE memiliki dua "kelas" mode:
Mode dokumen menentukan mesin rendering (bagaimana rendering halaman web).
Mode Browser menentukan string User-Agent (UA) yang dikirim IE ke server, apa Mode IE default untuk, dan bagaimana IE mengevaluasi Komentar Bersyarat.
Lebih lanjut tentang informasi tentang mode dokumen vs mode browser dapat ditemukan di artikel ini: http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for- situs-developers.aspx? Redirected = true
Dalam pengalaman saya, meta data kompatibilitas hanya akan memengaruhi mode dokumen . Jadi, jika Anda mengandalkan deteksi peramban, ini tidak akan membantu Anda. Tetapi jika Anda menggunakan deteksi fitur, ini harus menjadi jalan yang harus ditempuh.
Jadi saya akan merekomendasikan menggunakan tag meta (di halaman html) menggunakan sintaks ini:
Perhatikan: berikan daftar mode peramban yang telah Anda uji.
Posting blog juga menyarankan penggunaan EmulateIEX. Berikut kutipannya:
sumber
Coba metatag ini:
Seharusnya memaksa IE8 untuk merender sebagai Mode Standar IE8 bahkan jika "Tampilkan situs intranet dalam tampilan kompatibilitas" diperiksa [baik untuk intranet atau semua situs web], saya mencobanya sendiri di IE 8.0.6
sumber
Admin sistem kami menyelesaikan masalah ini dengan menghapus centang pada kotak secara global untuk organisasi kami. Pengguna bahkan tidak perlu keluar.
sumber
Saya menemukan jawaban yang memungkinkan untuk mengganti Tampilan Kompatibilitas Intranet yang dicentang. Cukup tambahkan acara OnInit pada halaman Anda pada baris ini (tidak perlu meta atau web.config customHeader):
sumber
Coba letakkan yang berikut ini di header:
Courtesy Paul Irish's HTML5 Boilerplate (tetapi berfungsi di XHTML Transitional, juga).
sumber
Saya dapat mengganti mode kompatibilitas dengan menetapkan tag meta sebagai THE TAG PERTAMA di bagian kepala, bukan hanya tag meta pertama tetapi sebagai dan hanya sebagai TAG SANGAT PERTAMA .
Terima kasih kepada @ stefan.s karena telah menjadikan saya jawaban yang sangat baik. Sebelum membaca yang saya miliki:
INI TIDAK BEKERJA
memindahkan tag tautan dari tempatnya dan itu berfungsi
KARYA INI :
Jadi klien IE8 yang diatur untuk menggunakan kompatibilitas menjadikan halaman sebagai mode Standar IE8 - konten = 'IE = 9' berarti menggunakan standar tertinggi yang tersedia hingga dan termasuk IE9.
sumber
Ini bukan solusi yang tepat, tetapi saya rasa ini adalah yang terbaik. Di situs intranet kami, kami memberi tahu orang-orang bahwa itu hanya dapat diakses oleh Firefox, kami tidak menghargai pengguna IE di sekitar sini. Periksa agen pengguna di sisi server atau klien dan tolak mereka akses dari IE. Dan saya seorang programmer .NET.
sumber
Saya telah berjuang dengan masalah ini dan ingin membantu memberikan solusi dan wawasan yang unik.
Kerangka kerja berbasis AJAX tertentu akan menyuntikkan javascripts dan stylesheet di awal
<head>
dan melakukan hal ini tampaknya mencegah solusi meta tag yang sudah mapan bekerja dengan baik. Dalam hal ini saya menemukan bahwa secara langsung menyuntikkan ke header respons HTTP, seperti jawaban Andras Csehi yang akan menyelesaikan masalah.Namun bagi kita yang menggunakan Java Servlets, cara yang baik untuk menyelesaikan ini adalah dengan menggunakan ServletFilter.
sumber
Kami dapat mengatasi masalah ini di lingkungan Spring-Apache-tomcat dengan menambahkan satu baris tunggal dalam metode RequestInterceptor -
Referensi dari - Cara membuat filter dan memodifikasi header respons. Ini mencakup bagaimana kita dapat menyelesaikan masalah ini melalui RequestInterceptor (Spring).
sumber
Jika Anda ingin situs Web Anda memaksakan mode standar IE 8, gunakan metatag ini bersama dengan DOCTYPE yang valid:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
Catat nilai "EmulateIE8" dan bukan "IE8".
Menurut IE devs, ini harus, "Tampilan Standar DOCTYPEs dalam mode Standar IE8; Tampilan Quirks DOCTYPEs dalam mode Quirks. Gunakan tag ini untuk mengganti tampilan kompatibilitas pada mesin klien dan memaksa Standar ke Standar IE8."
info lebih lanjut tentang posting blog IE ini: http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx
sumber
Pertanyaan ini adalah duplikat dari mode browser Force "Internet Explorer 8" di intranet .
Tanggapan di sana menunjukkan bahwa tidak mungkin untuk menonaktifkan tampilan kompatibilitas (di sisi server) - https://stackoverflow.com/a/4130343/24267 . Tampaknya memang itulah masalahnya, karena tidak ada saran yang pernah saya coba yang berhasil. Di IE8, "Browser Mode" diatur ke Internet Explorer 8 Tampilan kompatibilitas apa pun header X-UA-Kompatibel yang Anda kirim.
Saya harus melakukan beberapa penanganan khusus untuk IE7 dan mode kompatibilitas, yang menyebabkan browser membuat menggunakan IE8 tetapi melaporkan itu adalah IE7, memecahkan kode saya. Ini adalah bagaimana saya memperbaiki kode saya (saya sadar ini adalah hack yang mengerikan dan saya harus menguji fitur bukan versi browser):
sumber
Punya masalah yang sama. Ini berhasil dengan menggunakan
sumber
Tambahkan ini di dalam tag kepala halaman Anda (menargetkan versi IE yang Anda inginkan):
Catatan, ini TIDAK akan mengubah fakta bahwa browser mengatakan itu dalam mode kompatibilitas (disebut mode browser), tetapi halaman akan dirender dalam mode standar IE8. Jika MASIH tidak menampilkan apa yang Anda inginkan, itu mungkin karena Anda memiliki javascript yang keliru memeriksa versi IE. Lihat posting blog berikut untuk menentukan properti mana yang harus Anda pilih karena meskipun Anda menetapkan tag meta X-UA-Compatible, string agen pengguna masih akan mengatakan MSIE 7.0 .
Dalam kasus saya, untuk perbaikan saya harus menambahkan cek untuk mode Kompatibilitas IE7. Saya melakukannya menggunakan kode javascript sederhana:
sumber
Bagi siapa pun yang membaca ini ingin menonaktifkan ini melalui GPO untuk semua pengguna, ini adalah pengaturan:
Konfigurasi Komputer / Template Administratif / Komponen Windows / Internet Explorer / Tampilan Kompatibilitas / Nyalakan Mode Standar Internet Explorer untuk Intranet Lokal
meskipun edit web.config memperbaikinya untuk saya.
sumber
Ubah header di .htaccess
Temukan solusi untuk masalah ini di sini: https://github.com/h5bp/html5-boilerplate/issues/378
sumber
Komentar Stefan S tentang mode dokumen versus mode browser sangat relevan untuk masalah saya.
Saya memiliki data meta X-UA-Content di halaman, tetapi saya sisi klien sedang menguji versi browser melalui
navigator.appVersion
. Tes ini tidak mencerminkan meta data karena memberikan mode browser bukan mode dokumen.Jawaban bagi saya adalah untuk menguji
document.documentMode
sesuatu seperti:Sekarang, tag meta X-UA-Content saya tercermin dalam pengujian browser saya.
Mengapa saya melakukan hal yang tidak disukai saat menguji browser? Mempercepat. Berbagai add-in jQuery saya, seperti tablesorter terlalu lambat pada IE6 / 7, dan saya ingin mematikannya. Saya tidak yakin bahwa pengujian untuk fitur browser dapat membantu saya menyelesaikan ini sebaliknya.
sumber