Datumskonstruktor-Fehlfunktionen im IE: Ein browserübergreifender Vergleich
Im Bereich der Webentwicklung hat sich der Datumskonstruktor von JavaScript als ein Problem erwiesen treuer Verbündeter von Entwicklern, die Daten manipulieren möchten. Bei der Verwendung dieses Konstruktors in allen gängigen Browsern wurde jedoch ein merkwürdiges Phänomen beobachtet. Während Firefox und Chrome die Funktionalität von Date freudig nutzen, stolpert Internet Explorer bekanntermaßen und gibt für bestimmte Datumsoperationen NaN (Not-a-Number) zurück.
Um dieses Rätsel zu lösen, wollen wir uns mit dem spezifischen Problem befassen, das von beobachtet wurde Ein Entwickler, der einen Kalender erstellt. Ihre Datumskonstruktion aus einer PHP-formatierten Datumszeichenfolge ('m, d, Y') funktionierte in Firefox und Chrome einwandfrei, aber IE bestand darauf, NaN-Wutanfälle auszulösen.
Das Datumskonstruktionsproblem
function buildWeek(dateText){
var headerDates='';
var newDate = new Date(dateText);
for(var d=0;dDie Ursache des Problems liegt im Datumsformat. Während IE Datumsangaben in seinem nativen Format („JJJJ-MM-TT“) analysieren kann, hat er Probleme, wenn er mit dem in diesem Code verwendeten Format „m, d, Y“ konfrontiert wird.
Die Lösung: Standardisierung des Datumsformats
Um die Kompatibilität zwischen Browsern sicherzustellen, ist es unbedingt erforderlich, das bei der Datumskonstruktion verwendete Datumsformat zu standardisieren. Der empfohlene Ansatz besteht darin, die Datumszeichenfolge in ein Format zu konvertieren, das der IE problemlos verstehen kann. Eine bequeme Option besteht darin, die Methode split() zu nutzen, um die Datumszeichenfolge zu zerlegen und dann die einzelnen Komponenten an den Datumskonstruktor zu übergeben.
Angenommen, ein MySQL-Datums-/Zeitstempelfeld gibt beispielsweise eine Zeichenfolge wie „2011-“ zurück. 08-03 09:15:11“, würde der folgende Codeausschnitt das Format für IE-Kompatibilität normalisieren:
var dateStr="2011-08-03 09:15:11"; //returned from mysql timestamp/datetime field
var a=dateStr.split(" ");
var d=a[0].split("-");
var t=a[1].split(":");
var date = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]);
Indem Sie dies übernehmen Mit diesem Ansatz können Sie sicherstellen, dass Ihre Datumsoperationen in allen gängigen Browsern einwandfrei funktionieren, und unerklärliche NaN-Fehler vermeiden, die verheerende Auswirkungen auf Ihren Code haben können.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3