JavaScript: substr() 負數的算法 IE, Firefox 不同

最近踩的地雷真多, IE 對 margin-top 的負數, IE6/7 都不同, 然後臨時又發現 JavaSciprt 的檢查在 IE 有問題, 大概情況是如下:

做圖片上傳, javascript 的檢查最簡單的就是檢查檔名後四個字元, 再轉小寫, 去看看是不是 .jpg, jpeg, .bmp, .png ... 等. 於是就用 substr 來取最後四個字元囉~

JavaScript substr() 取最後四個字元 並轉小寫, 很直覺得就是 filedata.substr(-4, 4).toLowerCase(), 然後在 Firefox 和 IE 情況各如下:(ex: 檔名是 filename.jpg)

  • Firefox 測試很正常就抓到檔名的後四個字元.(抓到 .jpg)
  • IE 會把 -4 當 0, 然後抓檔名前四個字元.(抓到: file)

只怪當初看完說明後, 沒有仔細看下面還有 Tips, Tips 有說 IE 的第一個參數是由 0 開始(不能為負數), 所以只好改用下面兩行解決囉~

var begin = filedata.length - 4; // 取總長度 -4
var filetype = filedata.substr(begin, 4).toLowerCase(); // 從總長度 -4 為起點, 取 4個字元

這樣子就可以抓到檔名的後四個字了. 🙂

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料