Internet Explorer 11 menonaktifkan "tampilkan situs intranet dalam tampilan kompatibilitas" melalui tag meta yang tidak berfungsi

100

Saya telah mengerjakan situs web intranet selama lebih dari 6 bulan jika saya telah menggunakan doctypetag meta kompatibilitas html5 dan edge di bawah ini untuk memaksa Internet Explorer agar tidak meniru versi browser yang lebih lama, dan ini berfungsi dengan baik.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

Alasan saya melakukannya dengan cara ini adalah karena tempat saya bekerja menggunakan pengaturan kebijakan untuk mengaktifkan tampilan kompatibilitas untuk semua situs intranet, dan pendekatan menggunakan EDGEpengaturan ini telah berhasil di Internet Explorer 9.

Pengaturan tampilan kompatibilitas situs intranet

Lebih dari sebulan yang lalu saya ditingkatkan ke Internet Explorer 11 dan situs masih berfungsi seperti yang diharapkan.

Hari ini ini berhenti berfungsi seperti yang diharapkan, saya tidak bisa mengatakan dengan pasti tetapi saya pikir kebijakan yang memaksa tampilan kompatibilitas tidak diaktifkan di IE11 dan sekarang ... dan karena ini telah diaktifkan, tag meta kompatibilitas tidak lagi melakukan apa yang diharapkan, dan situs ini dijalankan dalam mode Perusahaan yang mengemulasi IE8.

Adakah yang tahu bagaimana cara memperbaikinya dan memaksa IE11 untuk digunakan di situs intranet ketika kompatibilitas "mode Enterprise" sedang diterapkan? dan tidak dapat dinonaktifkan melalui pengaturan browser?

EDIT

Saya baru saja mencoba menambahkan tajuk khusus di web.config saya seperti yang dijelaskan dalam jawaban ini https://stackoverflow.com/a/18257208/98706

dan ini tidak berhasil untuk saya, saya masih mendapatkan pesan di bawah ini di konsol toolbar pengembang

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

Seolah-olah versi 8 diperlakukan seperti edgesaat pengaturan kompatibilitas intranet ini diaktifkan di IE11.

Posting ini: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode menjelaskan hal ini dengan baik, saya belum mencoba menyetel header ini melalui kode dan pengguna kami tidak memiliki akses untuk mengubah pengaturan browser mereka .. belum ada perubahan lain yang berhasil.

MEMPERBARUI

Silakan lihat komentar saya di posting ini tentang apa perbedaan antara mode Enterprise dan mode kompatibilitas, karena itu penting.

Mahal
sumber
Mode perusahaan berbeda dari tampilan kompatibilitas, silakan lihat stackoverflow.com/a/26463309/98706 untuk mengetahui cara menonaktifkannya tetapi dalam kasus saya tidak sesederhana seperti dapat mematikannya, saya ingin menimpanya untuk situs intranet tertentu menggunakan tag meta tetapi ini tidak berhasil, saya belum mencoba lagi sejak itu karena situs kami sekarang ada dalam daftar putih.
Mahal

Jawaban:

93

Yakinkan:

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

adalah <meta>tag pertama di laman Anda, jika tidak, IE mungkin tidak akan menghormatinya.

Atau, masalahnya mungkin IE menggunakan Mode Perusahaan untuk situs web ini:

  • Pertanyaan Anda menyebutkan bahwa konsol menunjukkan: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • Jika demikian, Anda mungkin perlu menonaktifkan mode perusahaan (atau seperti ini ) atau menonaktifkannya untuk situs web tersebut dari menu Alat di IE.
  • Namun Perusahaan Modus harus dalam teori menjadi ditimpa oleh tag X-UA-Compatible, tapi IE mungkin memiliki bug ...
burung gereja
sumber
Ya, saya sudah melakukan ini sejak itu, sayangnya tidak berhasil :(
Mahal
Mungkin Mode Perusahaan aktif untuk situs web itu (berdasarkan pertanyaan Anda) ... Saya telah memperbarui jawaban saya, beri tahu saya jika itu membantu
sparrowt
2
"Mode Perusahaan" dan "Tampilan Kompatibilitas" berbeda, meskipun serupa. Meskipun "Tampilkan situs intranet dalam Tampilan Kompatibilitas" dicentang, tag Kompatibel dengan X-UA harus menggantikannya. Namun Mode Perusahaan dapat mengesampingkan itu ... apakah Anda melihat ikon mode perusahaan ( media.askvg.com/articles/images5/… ) saat di situs Anda?
burung gereja
1
Juga apa isinya jika Anda menekan F12 dan melihat pada tab emulasi? Ini harus memberi tahu Anda mengapa itu menggunakan mode dokumen. Saya pikir Anda masuk ke mode Perusahaan, bukan tampilan kompatibilitas.
burung gereja
19
Benar-benar! @ # $ Menyebalkan, menghabiskan ratusan ribu jam pengembang web di seluruh dunia.
Sam Watkins
19

Masalah ini biasanya disebabkan oleh URL situs web / intranet ditempatkan di salah satu dari:

  • Daftar Mode Kompatibilitas
  • Zona Intranet Internet Explorer
    (dengan Tampilkan situs intranet dalam pengaturan Tampilan Kompatibilitas diaktifkan)
  • Daftar Mode Perusahaan

Di jaringan perusahaan, pengaturan tampilan kompatibilitas ini sering dikontrol secara terpusat melalui kebijakan grup . Dalam kasus Anda, Mode Perusahaan tampaknya menjadi penyebabnya.

IE 11 Mode Perusahaan

Sayangnya pengaturan META X-UA-Compatible tidak akan menimpa ini.

Untuk Pengguna Akhir

Terkadang satu-satunya cara bagi pengguna akhir untuk mengesampingkannya adalah dengan menekan F12 dan mengubah Mode Dokumen di bawah Tab Emulasi . Namun pengaturan ini tidak permanen dan dapat kembali setelah Alat Pengembang ditutup.

Anda juga dapat mencoba mengecualikan situs Anda dari zona Intranet. Tetapi daftar domain yang termasuk dalam zona Intranet biasanya juga dikontrol oleh kebijakan grup, jadi kemungkinannya bekerja sangat kecil.

Untuk melihat daftar domain yang termasuk dalam zona Intranet, buka:

Alat -> Opsi Internet -> Keamanan -> Situs -> Lanjutan

Jika daftar berisi subdomain Anda dan berwarna abu-abu, Anda tidak akan dapat mengganti tampilan kompatibilitas hingga admin jaringan Anda mengizinkannya.

Anda benar-benar perlu menghubungi administrator jaringan Anda untuk mengizinkan perubahan pengaturan tampilan kompatibilitas dalam kebijakan grup.

Untuk Admin Jaringan

Memuat situs web dengan Alat Pengembang terbuka (F12) akan sering melaporkan alasan IE beralih ke mode lama.

Ketiga pengaturan yang disebutkan di atas umumnya dikontrol melalui Kebijakan Grup, meskipun terkadang dapat diganti pada mesin pengguna.

Jika Mode Perusahaan adalah masalahnya (seperti yang terjadi pada poster asli), dua artikel berikut mungkin bisa membantu:

rustyx.dll
sumber
Saya memperluas jawaban bagus Anda dengan beberapa detail lebih lanjut yang saya temukan selama penelitian terbaru. Saya harap tidak apa-apa.
Simon East
8

Bagi mereka yang sedang membangun proyek ASP.NET MVC, pastikan bahwa Anda menambahkan:

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

tag ke halaman Tata Letak (template) Anda. Saya baru saja menghabiskan dua jam untuk debugging dan tweaking, hanya untuk menyadari bahwa saya hanya menambahkan meta tag itu ke halaman anak saya. Segera setelah saya menambahkannya ke halaman tata letak saya, browser dimuat dalam mode EDGE dengan sempurna.

Jason Marsell
sumber
Masalah saya terkait dengan mode Perusahaan baru di IE11 yang memaksa browser untuk meniru IE8. Ini tidak sama dengan mode kompatibilitas, yang digunakan untuk mengganti tag meta ini. Saya menggunakan ini dengan benar.
Mahal
Komentar saya dimaksudkan untuk membantu orang lain dengan gejala yang sama, yang sedang membangun situs di ASP.NET MVC. Saya tidak menyapa Anda, secara khusus.
Jason Marsell
Tag meta akan berfungsi (untuk masalah mode kompatibilitas, bukan masalah mode Perusahaan) untuk situs non .NET / MVC juga btw, tidak spesifik untuk ASP.NET
Dan Harris
4

Jawaban yang ditandai adalah jawaban yang benar. Namun, Pricey, Anda harus menindaklanjutinya dengan grup admin AD dan desktop Anda. Mereka menyalahgunakan daftar situs Mode Perusahaan IE11. Microsoft TIDAK bermaksud menggunakannya untuk semua situs intranet dalam organisasi sama sekali. Itu akan menyebarkan pengaturan "render semua situs intranet dalam mode kompatibilitas" yang ada yang merupakan kutukan bagi perkembangan situs web perusahaan di seluruh dunia.

Ini dimaksudkan untuk diterapkan sebagai "Daftar hitam", dengan beberapa situs yang benar-benar memerlukan mode browser lama yang tercantum dalam daftar Mode Perusahaan dengan persyaratan rendering yang ditentukan. Semua situs lain di organisasi Anda kemudian dibebaskan untuk menggunakan Edge. Orang-orang di organisasi Anda yang menerapkannya dengan semua situs intranet yang disertakan untuk memulai telah salah paham sepenuhnya tentang bagaimana Mode Perusahaan dimaksudkan untuk diterapkan.

ch1nmuzak.dll
sumber
Ya, mereka pasti harus melakukan itu, tetapi sayangnya saya tidak memiliki suara apa pun dalam masalah ini, tetapi hal itu telah dibicarakan bersama mereka.
Mahal
1

Pertanyaannya agak lama tetapi saya baru saja memecahkan masalah yang sangat mirip. Kami memiliki beberapa situs intranet di sini termasuk yang saya tanggung, dan yang lainnya memerlukan mode kompatibilitas atau rusak. Oleh karena itu, aturan situs default IE ke mode kompatibilitas di situs intranet. Saya mengupgrade barang saya sendiri dan tidak lagi membutuhkannya; faktanya, beberapa fitur yang saya coba gunakan tidak terlihat benar dalam mode compat. Saya menggunakan tag meta IE-Edge seperti Anda.

IE mengasumsikan situs web tanpa alamat yang sepenuhnya memenuhi syarat adalah intranet, dan bertindak sesuai dengan itu. Dengan pemikiran tersebut saya baru saja mengubah binding di IIS untuk hanya mendengarkan alamat yang sepenuhnya memenuhi syarat, lalu membuat situs web tiruan yang mendengarkan alamat yang tidak memenuhi syarat. Yang kedua mengalihkan semua lalu lintas ke alamat yang sepenuhnya memenuhi syarat, membuat IE yakin itu adalah situs eksternal. Situs merender dengan benar dengan atau tanpa mencentang kotak Mode Kompatibilitas di Situs Intranet.

Mike Anderson
sumber
lihat: stackoverflow.com/questions/2518256/… jika Anda memiliki akses web.config.
fontofilik
Saya melihat pertanyaan itu sebelumnya, tetapi saya kira saya salah mengira baris header HTTP untuk baris META dan mengira saya sudah mencobanya. Ini bekerja dengan baik setelah saya meluruskannya. Terima kasih telah mengarahkan saya kembali.
Mike Anderson
Saya telah mencoba menerapkan pengaturan EDGE kompatibilitas yang sama ke dalam konfigurasi web dan itu tidak berhasil untuk saya, satu-satunya cara yang saya temukan untuk membuat ini berfungsi adalah dengan meminta situs web spesifik kami ditambahkan ke daftar putih sehingga mereka diabaikan dari yang baru Mode IE11 Enterprise, yang tampaknya berbeda dari mode kompatibilitas. Ini sama sekali bukan solusi yang bagus bagi saya karena loop yang harus saya lewati untuk menyelesaikannya setiap saat.
Mahal
Kedengarannya seperti Anda menempuh jalan yang sama seperti saya. Ada 2 hal yang harus saya lakukan. 1 adalah pengaturan EDGE di tag META halaman. Anda mungkin dapat melakukan ini di web.config (atau tidak; saya tidak tahu) tetapi saya melakukannya di halaman master situs. Yang lainnya menambahkan header HTTP khusus ke web.config.
Mike Anderson
1

Ini adalah masalah lama dengan beberapa informasi yang bagus. Tapi yang baru saya temukan adalah bahwa menggunakan FQDN mematikan mode Compat di IE 9 - 11. Contoh. Saya memiliki masalah compat dengan
http: // lrmstst01: 8080 / JavaWeb / login.do
tetapi masalahnya hilang dengan
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB: .int adalah bagian dari domain internal kami

Dean P
sumber
Tautan tersebut tidak valid. Mereka digunakan sebagai contoh url hanya dengan nama komputer vs satu dengan FQDN.
Dean P
2
Tips pro: Example.com ada hanya untuk tujuan ini
Dasar
Ini masih menjadi masalah dan komentar ini tidak menambahkan apa pun ke solusinya.
Diana
0

Pindahkan ke zona Situs Tepercaya dengan menambahkannya ke daftar Situs Tepercaya atau pengaturan lokal. Ini akan mengeluarkannya dari Zona Intranet dan tidak akan ditampilkan di Compat. Melihat.

Greg C.
sumber
Ps Saya tahu ini berfungsi karena itulah yang kami lakukan di perusahaan saya untuk produk berbasis browser yang lebih baru yang tidak ditulis dengan tag X-UA untuk memaksakan rendering seperti yang mereka inginkan.
Greg C.
Mengingat ini kemungkinan besar pengaturan seluruh perusahaan, jawaban Anda harus diterapkan ke mesin setiap pengguna, yang hampir tidak ideal.
MattD
0

Tambahkan properti di bawah ini ke file web.config untuk situs IIS. Ini bekerja untuk saya di intranet saya di IE11.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 
pengguna942620
sumber
Silakan lihat pembaruan saya di tiket, mode Perusahaan dan mode Kompatibilitas adalah 2 hal yang berbeda
Mahal
0

Saya memecahkan masalah ini dengan mengarahkan pengguna ke FQDN dari server yang menghosting intranet.

IE mungkin menggunakan algoritme terburuk di dunia untuk mendeteksi situs "intranet" ... memang, menetapkan server.domain.tld memecahkan masalah bagi saya.

Ya, Anda membacanya dengan benar, IE mendeteksi situs intranet bukan dengan alamat IP pribadi, seperti yang dilakukan oleh pengembang mana pun yang pernah mendengar tentang TCP / IP, tidak, oleh bagian "host" dari URL, jika tidak memiliki bagian domain, harus menjadi internal.

Menakutkan mengetahui bahwa pengembang IE tidak memahami konsep TCP / IP yang paling dasar.

Perhatikan bahwa ini terjadi pada pelanggan perusahaan BESAR, meminta mereka mengubah GPO untuk Anda sama seperti mencoba memindahkan Pegunungan Alpen ke timur sejauh 4 meter, tidak akan terjadi.

thecarpy
sumber
IE mungkin melakukan pencarian DNS dan mengetahui IP dari situ. Karena MS, mungkin bisa melakukan AD, tetapi DNS lebih masuk akal.
smoore4
@SQLDBA negatif, jika Anda menentukan IP, katakanlah 10.0.0.1, host TIDAK terdeteksi sebagai situs "intranet" ... tidak ada hubungannya dengan DNS, apa yang Anda maksud dengan AD? Apakah maksud Anda itu terhubung ke AD dan mencari host di sana? Tidak masuk akal, kenapa melakukan itu? Kemudian lagi, mereka adalah Microsoft karena suatu alasan ™.
thecarpy
0

Untuk apa nilainya, saya memiliki masalah juga di IE11:

  • Saya tidak dalam mode Perusahaan.
  • "Tampilkan situs intranet dalam Tampilan Kompatibilitas" telah dicentang.
  • Saya memiliki semua pengaturan <!DOCTYPE html>dan yang IE=Edgedisebutkan dalam pertanyaan
  • Meta header memang merupakan elemen pertama dalam <head>elemen tersebut

Setelah beberapa saat, saya menemukan bahwa:

  • tajuk Agen Pengguna yang dikirim ke server adalah IE7 tetapi ...
  • nilai JavaScript adalah IE11!

Header HTTP :

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E) tapi

JavaScript :

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

Jadi saya akhirnya melakukan pemeriksaan di sisi klien.

Dan BTW, sementara itu, memeriksa agen pengguna tidak lagi disarankan. Lihat https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (tapi mungkin ada kasus yang bagus)

Yann Vo
sumber