Pertanyaan Hal spesifik apa yang menyebabkan IE8 memicu mode kompatibilitas?


Saya punya aplikasi yang dalam beberapa keadaan menyebabkan IE8 memunculkan pesan kompatibilitas dan memuat ulang dalam mode compat:

masalah menampilkan penyebab penjelajah internet untuk menyegarkan laman web   menggunakan tampilan kompatibilitas

Ini jarang terjadi, dan tidak terjadi karena meta-tag, sejauh yang saya tahu. Ini terjadi sebagai respons terhadap tindakan pengguna yang mengubah DOM. Ini adalah masalah yang sama seperti: https://superuser.com/questions/215281/how-do-i-stop-i-e-jumping-into-compatability-view, tetapi pertanyaan saya adalah: Apa jenis hal yang menyebabkan ini, sebagai bantuan dalam memperbaikinya.

Letakkan cara lain, lihat situs ini thesitewizard.com, di mana penyebab ketiga dari mode kompatibilitas di IE8 digambarkan sebagai:

dan, kadang-kadang, untuk beberapa alasan tak berdasar lainnya yang tidak dapat didokumentasikan   halaman yang divalidasi sebagai standar-compliant (atau, setidaknya, itu berlaku   ini di Release Candidate 1).

Dan pertanyaannya adalah: Alasan apa yang tak terduga dan tidak terdokumentasi?


32
2018-01-25 17:07


asal


Jawaban:


Setelah sesi debugging panjang (menggunakan peringatan sekolah lama untuk menentukan apa yang gagal di mana), garis manipulasi dom yang tampaknya tidak berbahaya ini adalah pelakunya:

document.getElementById("literal"+varValue).style.display = "none";

Tidak ada kesalahan di sini, dan elemen itu ternyata ditemukan (yaitu, ini bukan null null berbagai taman).

Ini adalah aplikasi skala besar, dan ada banyak hal yang terjadi di sekitar kode ini. Saya beralih ke yang berikut, dan ini tampaknya telah mencegah masalah ini:

setTimeout(function(){
           var layoutEl = document.getElementById("literal"+varValue);
           if (layoutEl)
               layoutEl.style.display = "none";
       },10)

7
2018-01-28 19:31



Konten berikut berasal dari artikel MSDN "Mengontrol perenderan default".


  Ketahuilah bahwa kondisi tertentu, seperti yang tercantum di sini, dapat memaksa Internet Explorer untuk menampilkan halaman dalam mode kompatibilitas dokumen yang berbeda dari yang ditentukan di halaman web.

  • Tampilan Kompatibilitas diaktifkan untuk halaman.
  • Halaman ini dimuat di zona Intranet dan Internet Explorer dikonfigurasi untuk menggunakan Tampilan Kompatibilitas untuk halaman yang dimuat dari zona Internet.
  • Halaman ini diambil dari sistem file lokal pengguna (yang berarti halaman tersebut dimuat di zona Intranet) dan Internet Explorer dikonfigurasi untuk menggunakan Tampilan Kompatibilitas untuk halaman yang dimuat dari zona Internet.
  • Internet Explorer dikonfigurasi untuk menampilkan semua situs web dalam Tampilan Kompatibilitas.
  • Internet Explorer dikonfigurasi untuk menggunakan Daftar Tampilan Kompatibilitas, yang menetapkan sekumpulan situs web yang selalu ditampilkan dalam Tampilan Kompatibilitas.
  • Alat Pengembang digunakan untuk mengganti pengaturan yang ditentukan di halaman web.
  • Halaman web mengalami kesalahan tata letak halaman dan Internet Explorer dikonfigurasi untuk secara otomatis pulih dari kesalahan tersebut dengan membuka kembali halaman dalam Tampilan Kompatibilitas.
  • Halaman ini berisi Tanda Web yang mengarahkannya untuk dimuat di zona tertentu.

Tautan ini menyediakan info tambahan yang menjelaskan bagaimana Internet Explorer menentukan mode dokumen yang sesuai untuk halaman web:


5
2018-06-10 21:33



Saya tahu Anda sudah mendapatkan jawaban Anda, tetapi hari ini saya sudah mencari apa yang menyebabkan IE8 memicu mode kompatibilitas. Saya mencari kode JavaScript, css (: pertama,: terakhir, dll) tetapi tampaknya ada beberapa gaya sebaris:

max-height dalam kombinasi dengan overflow ..

Jadi ini (juga) memicu mode kompatibilitas di IE8:

style="overflow:scroll;max-height:200px;"

Dan ini tidak, jadi ini memecahkan masalah saya:

style="overflow:scroll;height:200px;"

Edit: Saya pikir ini terkait: IE8 overflow: auto dengan max-height


5
2018-03-26 11:28



Saya tahu ini adalah pertanyaan lama, tetapi saya pikir saya akan menambahkan sesuatu yang baru saja saya temui. Saya mengalami masalah ketika mode kompatibilitas dipaksa dan saya tidak dapat melacak sumbernya. Saya secara manual mengambil halaman dari mode kompatibilitas dan memperhatikan bahwa beberapa karakter tidak muncul. Itu akhirnya menjadi daftar bullet yang menggunakan karakter khusus pada elemen pseudo:

li:before {
  content: '\25B6';
}

Sebagai perbaikan cepat, saya akhirnya hanya menimpa ini untuk IE kurang dari 9:

.lt-ie9 li:before {
  content: '';
}

Artikel ini memberi saya ide untuk mencari karakter yang salah penanganan. Semoga ini membantu seseorang jika mereka menemukan masalah yang sama!


2
2017-09-03 16:57