網友報了一個有趣的問題,他寫了一段Javascript Code,動態新增<input type="radio" name="r1">後再變更name屬性,試圖改變其群組性。但這段程式在IE7下不管用,在FF上卻運作正常,用IE Developer Toolbar檢視,發現name屬性的確被修改,但在IE裡所有的radio仍被算成同一群組,呈現互斥。

我把這個問題簡化,用Mini jQuery Lab做了測試,Body HTML為:

<div><input type='radio' name='a'> <input type='radio' name='a'></div>
<div><input type='radio' name='a'> <input type='radio' name='a'></div>

Script為:

$("div:last input").attr("name", "b");

測試各家瀏覽器,熟悉的情境再度上演。IE一國,其他的瀏覽器一國(FF, Chrome, Opera, Safari),不合群的IE7是唯一無法透過動態改變radio name調整群組性的瀏覽器。

最後搬出IE8來跑了一下,Good! IE8終於不再搞孤僻,乖乖地跟大家一樣,可以透過修改radio name來調整群組性了。

順道一提,IE8已經計劃在3/20推出繁體中文版,並從4/30起透過Windows Update方式強迫強力部署,由於IE8瀏覽器的行為與IE7存在不少差異,屆時應該會有一些原本IE7裡看得好好的網站在IE8裡面目全非,網站開發人員應留意。(讓人想起上回IE7全面更新)

如果發現網站還沒有準備好接受IE8的洗禮,目前有兩個方法可以避免立即的衝擊:

不過,IE8更貼近W3C的標準,在安全及效能上也有大幅改良,網站開發人員應該還是要設法讓網頁能在IE8裡正常顯示,才是長久之計。畢竟,躲得了一時,躲不了一世,出來混,遲早要還的。(誤)


Comments

# by eric

請問..如果真的把網站內容改成跟IE8相容... 那被他們的兄弟檔(IE7,IE6)看到會不會也是面目全非呢? 唉~~ 好多(因為大於2)難的設計師留

# by Jeffrey

to eric, "你永遠可以找到方法讓你的網頁在所有瀏覽器看起來一致,操作正常,重點只在要付出多少代價而已。" 追求徹底跨瀏覽器有點像信仰,為了要修成正果,苦行自虐是免不了的,有時還要以身相殉哩... XD 不過若要求不高,只要別用太機車、太取巧的網頁設計手法,換瀏覽器面時目全非的機率並不高,多半是一些眉眉角角讓人看不順眼。盡可能只用到W3C較基本的HTML/CSS規格,會讓出錯的機率低一些。至於Client Script方面,就試著引用jQuery之類已考慮到跨瀏覽器因素的架構,應就能明哲保身。做到IE6/7/8通吃應該不難,要搞到FF, Chrome, Opera, Safari其至手機版隴A通,就真的很有挑戰性了,呵。

Post a comment