Berikut ini, IE digunakan sebagai pengganti Internet Explorer, dan MF digunakan sebagai pengganti Mozzila Firefox
1. masalah document.form.item
(1) Masalah yang ada:
Ada banyak pernyataan seperti document.formName.item("itemName") dalam kode yang ada, yang tidak dapat dijalankan di bawah MF.
(2) Solusi:
Gunakan document.formName.elements["elementName"] sebagai gantinya
(3) Lainnya
Lihat 2
2. Masalah dengan objek koleksi
(1) Masalah yang ada:
Banyak objek kelas koleksi dalam kode yang ada menggunakan () saat mengaksesnya, IE dapat menerima ini, tetapi MF tidak bisa.
(2) Solusi:
Gunakan [] untuk berlangganan. Misalnya: document.forms("formName") diubah menjadi document.forms["formName"].
Contoh lain: document.getElementsByName("inputName")(1) diubah menjadi document.getElementsByName("inputName")[1]
(3) Lainnya
3. window.event
(1) Masalah yang ada:
Tidak mengerjakan MF menggunakan window.event
(2) Solusi:
Event MF hanya bisa digunakan di lokasi terjadinya event, dan masalah ini belum bisa diselesaikan. Itu dapat diubah seperti ini:
Kode asli (dapat dijalankan di IE):
<input type="button" name="someButton" value="Kirim" onclick="javascript:gotoSubmit()"/>
...
<skrip bahasa="javascript">
fungsi gotoSubmit() {
...
alert(window.event); // gunakan window.event
...
}
</script>
Kode baru (dapat dijalankan di IE dan MF):
<input type="button" name="someButton" value="Kirim" onclick="javascript:gotoSubmit(event)"/>
...
<skrip bahasa="javascript">
fungsi gotoSubmit(evt) {
evt = evt ? evt : (jendela.acara ? jendela.acara : null);
...
peringatan(evt); // gunakan evt
...
}
</skrip>
Selain itu, jika baris pertama kode baru tidak berubah dan sama dengan kode lama (yaitu, panggilan gotoSubmit tidak memberikan parameter), kode tersebut hanya akan berjalan di IE, tetapi tidak akan terjadi kesalahan. Oleh karena itu, bagian tpl dari solusi ini masih kompatibel dengan kode lama.
4. Masalah penggunaan id objek HTML sebagai nama objek
(1) Masalah yang ada
Di IE, ID objek HTML dapat digunakan langsung sebagai nama variabel objek bawahan dokumen. Tidak mungkin di MF.
(2) Solusi
Gunakan getElementById("idName") alih-alih idName sebagai variabel objek.
5. Masalah dalam mendapatkan objek menggunakan string idName
(1) Masalah yang ada
Di IE, Anda dapat menggunakan eval(idName) untuk mendapatkan objek HTML dengan id idName, tetapi tidak di MF.
(2) Solusi
Gunakan getElementById(idName) alih-alih eval(idName).
6. Masalah nama variabel sama dengan ID objek HTML
(1) Masalah yang ada
Di MF, karena id objek tidak digunakan sebagai nama objek HTML, Anda dapat menggunakan nama variabel yang sama dengan id objek HTML, tetapi tidak di IE.
(2) Solusi
Saat mendeklarasikan variabel, selalu tambahkan var untuk menghindari ambiguitas, sehingga dapat berjalan normal di IE.
Selain itu, sebaiknya jangan mengambil nama variabel yang sama dengan id objek HTML untuk mengurangi kesalahan.
(3) Lainnya
Lihat pertanyaan 4
7. Masalah Event.x dan event.y
(1) Masalah yang ada
Di IE, objek acara memiliki atribut x, y, tetapi tidak di MF.
(2) Solusi
Di MF, setara dengan event.x adalah event.pageX. Tapi event.pageX tidak tersedia di IE.
Oleh karena itu, event.clientX digunakan sebagai ganti event.x. Variabel ini juga ada di IE.
Ada sedikit perbedaan antara event.clientX dan event.pageX (ketika seluruh halaman memiliki bilah gulir), tetapi keduanya hampir selalu setara.
Jika Anda ingin hasilnya sama persis, Anda dapat mengalami sedikit lebih banyak masalah:
mX = acara.x ? acara.x : acara.halamanX;
Kemudian gunakan mX alih-alih event.x
(3) Lainnya
event.layerX ada di IE dan MF. Apakah arti spesifiknya berbeda belum diuji.
8. Tentang bingkai
(1) Masalah yang ada
Di IE, Anda dapat menggunakan window.testFrame untuk mendapatkan bingkai, tetapi tidak di mf.
(2) Solusi
Perbedaan utama antara mf dan ie dalam penggunaan frame adalah:
Jika atribut berikut ditulis dalam tag frame:
<frame src='xx.htm' id='frameId' nama='namabingkai' />
Kemudian ie dapat mengakses objek jendela yang sesuai dengan frame ini melalui id atau nama, sedangkan mf hanya dapat mengakses objek jendela yang sesuai dengan frame ini melalui nama, misalnya jika tag frame di atas ditulis dalam htm di dalam jendela atas, maka itu dapat diakses seperti ini
yaitu: window.top.frameId atau window.top.frameName untuk mengakses objek jendela ini
mf: Objek jendela ini hanya dapat diakses melalui window.top.frameName
Selain itu, window.top.document.getElementById("frameId") dapat digunakan di mf dan ie untuk mengakses tag frame dan window.top.document. .getElementById("testFrame").src = 'xx.htm' untuk mengganti konten bingkai, Anda juga dapat menggunakan window.top.frameName.location = 'xx.htm' untuk mengganti konten bingkai deskripsi bingkai dan jendela, lihat artikel bbs 'jendela dan bingkai' dan pengujian di bawah direktori /test/js/test_frame/
----adun 2004.12.09 Modifikasi
9. Di mf, atribut yang Anda definisikan harus diperoleh dengan getAttribute()
10. Tidak ada parement.children parentElement di mf tetapi gunakan
parentNode parentNode.childNodes
Arti subskrip childNodes berbeda di IE dan MF. MF menggunakan spesifikasi DOM, dan node teks kosong akan dimasukkan ke dalam childNodes.
Umumnya, masalah ini dapat dihindari melalui node.getElementsByTagName().
Ketika sebuah node hilang di html, IE dan MF menafsirkan parentNode secara berbeda, misalnya
<bentuk>
<tabel>
<masukan/>
</tabel>
</bentuk>
Nilai input.parentNode di MF adalah form, sedangkan nilai input.parentNode di IE adalah node kosong.
Tidak ada metode deleteNode untuk node di MF. Anda harus menggunakan metode berikut node.parentNode.removeChild(node)
11 Masalah .const
(1) Masalah yang ada:
Kata kunci const tidak dapat digunakan di IE. Seperti const constVar = 32; Ini adalah kesalahan sintaksis di IE.
(2) Solusi:
Jangan gunakan const, gunakan var saja.
12. benda tubuh
Body MF ada sebelum tag body dibaca seluruhnya oleh browser, sedangkan IE harus ada setelah body
13. url coding
dibaca seluruhnya
Di js kalau tulis url cukup tulis "jangan tulis". Misalnya var url = 'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action = url, maka kemungkinan besar url tidak ditampilkan secara normal dan parameter tidak dikirimkan dengan benar ke server. Umumnya server akan melaporkan kesalahan bahwa parameter tidak ditemukan adalah jika di tpl, karena tpl sesuai dengan spesifikasi xml, dan persyaratan & ditulis sebagai &
Umumnya MF tidak bisa mengenali & di js.
14. masalah nodeName dan tagName
(1) Masalah yang ada:
Di MF, semua node memiliki nilai nodeName, tetapi textNode tidak memiliki nilai tagName. Di IE, penggunaan nodeName sepertinya
Ada masalah (saya belum menguji situasi spesifiknya, tetapi IE saya mati beberapa kali).
(2) Solusi:
Gunakan tagName tetapi akan mendeteksi jika kosong.
15. Atribut elemen
Atribut input.type bersifat read-only pada IE, namun dapat dimodifikasi pada MF.
16. Masalah dengan document.getElementsByName() dan document.all[name]
(1) Masalah yang ada:
Di IE, getElementsByName() dan document.all[name] tidak dapat digunakan untuk memperoleh elemen div (tidak diketahui apakah ada elemen lain yang tidak dapat diperoleh).