IE 中的日期建構函式故障:跨瀏覽器比較
在Web 開發領域,JavaScript 的日期建構函式已被證明是一個尋求操縱日期的開發人員的可靠盟友。然而,在主流瀏覽器中使用這個建構函式時,觀察到了一個奇怪的現象。雖然 Firefox 和 Chrome 很高興地接受了 Date 的功能,但 Internet Explorer 卻很容易出錯,對於某些日期操作會傳回 NaN(非數位)。
為了解開這個謎團,讓我們深入研究一下觀察到的具體問題開發人員製作日曆。他們從 PHP 格式的日期字串 ('m, d, Y') 構建的日期在 Firefox 和 Chrome 中完美運行,但 IE 堅持拋出 NaN 脾氣。
日期建構問題
function buildWeek(dateText){
var headerDates='';
var newDate = new Date(dateText);
for(var d=0;d問題的根源在於日期格式。雖然 IE 可以解析其本機格式 ('YYYY-MM-DD') 的日期,但在遇到此程式碼中使用的 'm, d, Y' 格式時,它會遇到困難。
解決方案:標準化日期格式
為了確保跨瀏覽器的兼容性,必須標準化日期構造中使用的日期格式。建議的方法是將日期字串轉換為 IE 可以輕鬆理解的格式。一個方便的選擇是利用 split() 方法來剖析日期字串,然後將各個組成部分傳遞到 Date 建構函式中。
例如,假設MySQL 日期時間/時間戳欄位傳回類似「2011- 08-03 09:15:11",以下程式碼片段將標準化IE 相容性的格式:
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]);
透過採用這個方法,您可以確保您的Date 操作在所有主要瀏覽器上都能正常運行,消除可能對您的程式碼造成嚴重破壞的莫名其妙的NaN 錯誤。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3