※誠保超值※使用JavaScript操作CSS

這本JavaScript大全(第六版)的第十六章是ㄚ琪最近在對一支很舊的JavaScript碼偵錯時,注意到並加以修改程式碼的,如果沒有看到這一章的話,可能ㄚ琪到今天還在摸哪裡的問題吧。

這隻程式其實在IE8跑得還滿順的,但是有一天ㄚ琪把程式丟到Windows 7中去跑,因為這版本的IE是9,ㄚ琪突然發現它不能動,想當然耳,在Chrome也是無法動,ㄚ琪其實並不想改,但聽到客戶有意要添購新的硬體,這樣的話勢必用到新的IE版本,ㄚ琪只好想辦法改囉,因為客戶永遠是對的。

ㄚ琪花了一個上午的時間檢查,發現有兩個問題:

1.使用使用document.all[],這在JavaScript大全(第六版)的15.2.6 document.all[]中有提到,『在DOM被標準化之前,IE4引進了document.all[]群集(collection)來表示文件中所有的元素。document.all[]已經被標準的getElementById()與getElementByTagName()等方法所取代,現在已被棄用了,而且不應該再使用。』

2.操作行內樣式的問題,主要是這樣一行程式:

submenu.left = calculateSumOffset(menu, ‘offsetLeft’);

這在IE8執行是沒問題的,但是在IE9一直有問題,calculateSumOffset在IE9回傳的值沒有問題,不過它是回傳純數值。

ㄚ琪讀到這一節時,有這樣的提醒:『記得所有的定位特性都要加上單位。因此這樣設定left特性是不正確的:

e.style.left = 300;//不正確:這是個數字而非字串

e.style.left = “300”;//不正確:少了單位

像這樣:

e.style.left = “300px”;//這樣才正確

所以ㄚ琪懷疑在IE8以前是可以不用加單位的,果真沒錯,ㄚ琪改寫這樣的程式碼:

submenu.left = calculateSumOffset(menu, ‘offsetLeft’)+”px”;

這樣結果就正確了。

看來很多舊版的JavaScript的程式都要進行修改了,因為大家已慢慢在改用更新的IE9或是更快的Chrome了,要改…

來聽一下蘇芮的休息工作再工作吧…

曾失意失意失足過百千次
如今我知這是沒意思
曾阻我方向的都一一退下
還?我種下許多好處

曾相信相信這世上有天意
優劣的終可做主
觸發一切邁向新的故事
愚鈍的蠢的總不感到滿意

明天 也許不再坐於此
明日 自由新的際遇
雲起 靜眼忘無盡的遠方天地
人生只不過是如此
休息工作再工作
戀愛分開再戀愛

曾相信這裏急需一些新意
來轉變趕上新目標
轉變轉變還是不太易
愚鈍的蠢的總不感到滿意

新版的瀏覽器需要有新意,用舊版的程式的您千萬不要太愚鈍…

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *