Bahasa yang sama, JavaScript, mempunyai isu keserasian bahasa dalam penyemak imbas yang berbeza Pada asasnya, ini disebabkan oleh fakta bahawa penyemak imbas yang berbeza menyokong piawaian dan pelaksanaan bahasa yang berbeza. Artikel ini akan mencipta objek Tarikh berdasarkan Tarikh baharu untuk menganalisis masalah ini.
1. Masalahnya ialah masa mula dan ruang masa tamat tidak dapat memindahkan nilai dengan betul
Dalam halaman tersebut, kami menggunakan komponen masa untuk membangunkan kotak pemilihan masa, tetapi mendapati ia tidak berfungsi dengan betul di bawah Firefox, tetapi ia berjalan seperti biasa di bawah Chrome. Apa masalahnya?
2. Analisis Masalah
Analisis keputusan mendapati bahawa masalah disebabkan oleh kod berikut:
var timestart = '2010-05-04'; var timeend = '2015-09-05'; var time1 = (timestart+' 00:00:00').toString(); var time2 = (timeend+' 23:59:59').toString(); timestart = new Date(time1); timeend = new Date(time2);
Masalahnya ialah pembina Date(time1) baharu tidak boleh menjana objek Date dengan betul, dan nilainya ialah NaN Strange, apakah masalahnya?
3. Prestasi pada pelbagai pelayar
Pelaksanaan di bawah IE:
Pelaksanaan di bawah Firefox:
Pelaksanaan di bawah Chrome:
Melalui analisis di atas, dapat diketahui bahawa skrip javascript ini boleh dilaksanakan dengan betul di bawah Chrome, tetapi ralat dilaporkan di bawah pelayar lain.
4. Pendekatan yang betul
Pendekatan yang betul disenaraikan di bawah:
var time1 = (timestart+' 00:00:00').toString(); var time2 = (timeend+' 23:59:59').toString(); timestart = new Date(Date.parse(time1.replace(/-/g,"/"))).getTime(); timeend = new Date(Date.parse(time2.replace(/-/g,"/"))).getTime();
Perubahan utama ialah penukaran format tarikh lalai Rentetan tarikh berdasarkan format '/' disokong secara meluas oleh pelbagai pelayar Rentetan tarikh yang disambungkan dengan '-' hanya tersedia dalam Ia berfungsi dengan baik di bawah chrome.
5. Ringkasan mata pengetahuan
'2015-09-05' tidak boleh digunakan oleh pelbagai penyemak imbas untuk menjana objek tarikh dengan betul menggunakan Date(str) baharu. Penggunaan yang betul ialah '2015/09/06'.