星期三, 十月 03, 2007

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個字元

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

相關標籤
Add this page to del.icio.us Add this page to Yahoo Taiwan's bookmark Add this page to MyShare

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~