IE又來找碴了,這回闖禍的是IE6。

以下的程式(可使用Mini jQuery Lab測試) ,利用jQuery selector去查詢XML中的XmlElement,我有段類似的Code開發期間在IE7/8、FF、Chrome、Safari、Opera下都正常,直到今天交付User測試,User冷不防丟出魔法卷軸,召喚出IE6大魔獸登場,一鎚襲來,我可憐的小網頁就這麼倒地不起...

$.getScript("jquery.xmlext.js", function() {
    var xd = $.parseXml("<items><notebook /><pc /></items>");
    var x = $(xd);
    x.find("notebook,pc").text("Y");
    alert(x.xml());
});

x.find("notebook,pc")語法在IE6下會產生錯誤("Number expected" @ jquery-1.3.2.js 1529 列)。我發現如果拆成x.find("notebook")及x.find("pc")倒可以過關。

原本推測是IE6所附的MSXML物件版本較舊,所以我找到以下的程式碼測試:

 

alert(MSXMLversion());
function MSXMLversion()
{
    var msxv = ""
    
    if(window.ActiveXObject)
    {
        try {
            msxv += ( new ActiveXObject("Microsoft.XMLHTTP"))? "Microsoft.XMLHTTP":"";
            msxv += ( new ActiveXObject("Msxml2.XMLHTTP"))? " / Msxml2.XMLHTTP":"";
            msxv += ( new ActiveXObject("Msxml2.XMLHTTP.3.0"))? " / Msxml2.XMLHTTP.3.0":"";
            msxv += ( new ActiveXObject("Msxml2.XMLHTTP.4.0"))? " / Msxml2.XMLHTTP.4.0":"";
            msxv += ( new ActiveXObject("Msxml2.XMLHTTP.5.0"))? " / Msxml2.XMLHTTP.5.0":"";
        } catch (e) {
 
        }
    }
    return msxv
} 

出乎意料,問題IE6跟正常IE8得到的都是: Microsoft.XMLHTTP / Msxml2.XMLHTTP / Msxml2.XMLHTTP.3.0。

如果問題不在XML Document Object,那麼有可能出在jquery的Sizzle核心... 沒有氣力去挖出深層原因,再次含淚將二合一的selector拆成兩個避開問題。

今天雖然被IE惡搞了兩次,看到殺了人還一臉無辜的IE6,心中倒是浮現一個另類想法。

IE在這場瀏覽器大戰中,位於一種比較奇怪的處境: 大家在使用其他瀏覽器時,即便無人催促,好像自然而然就會升級使用最新版本;只有在談IE時,就是必須考量仍佔有一定比例的侏儸紀時代版本。(我保證有成千上萬的Developer想把IE6拖去埋了) 從某個角度來說,拿IE6跟其他瀏覽器的最新版相比,未盡公平。

我覺得這個現象源於IE是許多不熟電腦使用者的唯一選擇(換句話說,它在M型化社會的另一端),許多人或許搞不清楚Internet、Browser是什麼,但知道"要上網就按那個藍色小e就對了"。在此前題下,不會有動機去更換更新版、功能更強大的瀏覽器,可能就著Windows內附的IE版本用到電腦報廢為止(願上天保佑至少有做Windows Update)。但不可諱言,在Web Developer眼中機車得要命的IE6倒是讓許多對電腦、網路一竅不通的人擁有了最基本與Internet接軌的能力,說來也是功不可沒。用這個角度去看待IE6,倒有幾份像是夾在高樓林立都市中的一大片老眷村,破舊髒亂有礙觀瞻,街狹巷窄治安不佳,與四周的現化代建築格格不入,但它的存在不容被忽視,提供廣大平民基本生活需求也是不爭的事實。如果你的網站想真要服務普羅大眾,就不能忽略它背後所代表的聲音,就像選立委一樣得走訪其間爭取每一張選票,無法瀟灑地置於腦後(所以寫網頁才這麼累)。但是,就都市的長期發展而言,它絕對是應被優先整頓改造的議題,只是進展似非操之在我。

話是這麼說啦,我還是希望IE6早點消失~~~ (謎之聲: 那廢話這麼多做啥?)

[2009-06-03補充] 剛好看到重灌狂人的這篇統計,IE6仍然佔IE版本的45%以上,仍是瀏覽器一哥,看來離"消失"還有好長的路要走...


Comments

# by steve

J大 以敝小公司為例 這些年累積下來的系統 光是ASP程式數目我想應該就有5位數吧 沒有人有時間測試,也沒有人敢拍胸膊保證這些程式在IE7乃至IE8上沒有問題 於是力阻user升級成IE7以上瀏覽器就變成MIS的Policy了...... 敝小公司的MIS也是鋸箭法的忠實實踐者阿.....

# by kennyshu

我們的MIS也是勸user不要升級到ie8...

# by joe

講到ie6最近遇到一個很不爽的事,就是ie6不能在js裡面用這種//@TODO ........單行的註解?? 好像有個@就不行,真是白爛到極點的ie6阿

Post a comment