【茶包射手日記】Virutal Server 2005 R2 SP1管理介面啟動VM時出現Script錯誤

同事被一個鬼怪問題困住: 新裝好Virtual Server 2005 R2 SP1,複製完VM並掛上,卻在用管理介面網頁界面啟動VM時出現Javascript錯誤:
'document.getElementById(...)' is null or not an object
而該錯誤導致VM無法開機! 換句話說,安裝VS2005 R2 SP1跟Copy超大vhd的功夫變成在做心酸的。

茶包射手出馬,心想既然是Javascript問題,應該不難追查。打開IE Developer Tools,馬上追到錯誤發生在以下程式片段:
BLOCKED SCRIPTdocument.getElementById('action').value='poweron';

使用Console下指令document.getElementById('action')傳回null,再仔細搜尋HTML原始碼:
<input type="hidden" name="action" value="none"><input type="hidden" name="vm">

BINGO!! <input>只給了name沒設id,但程式卻又試圖用getElementById取元素! 我想起一件事,getElementById在IE8模式下只會比對ID屬性且大小寫有別,在IE7模式下則同時比對ID及NAME屬性且不分大小寫。這是一段在IE8下會爆炸的程式碼,算是VS2005R2SP1不支援IE8的Bug... 知道原因就一切好辦,只需將IE8切到IE7相容模式,問題解決,收工回家!

最後順道提醒開發網頁的朋友:

請留意是否網頁裡有只給name沒設id的情形,或是getElementById(...)時沒分大小寫,這些設計在IE8下將會出錯。若不求長進但求省事,倒是可用document.all("...")取代document.getElementById("...")鋸箭;但強烈建議為元素補上id,並分清楚大小寫方為王道!! 既然要動手就該一次把事情做好,不要留下個document.all的尾巴,到時要搞跨瀏覽器又要再痛一次。

歡迎推文分享:
Published 03 September 2010 09:48 PM 由 Jeffrey
Views: 5,934



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<September 2010>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication