JQuery IE8 .text(String) 取代html的悲劇

故事是這樣開始的…

客戶給的spce html code沒有太注意,因為其他瀏覽器都沒有問題。

結果IE8竟然出現一個 jquery.min.js的錯誤訊息且無法往下做。
同樣的一段程式碼

$("*[tid='WellyTest']").text($("Hello!!");

在FF, Chrome一切正常,但IE錯得很嚴重。
錯誤為”對方法或內容存取發出未預期的呼叫

感覺就是對錯誤的東西賦值才造成的,但是因為有其他地方也會去呼叫這個東西卻沒事。
找了好久好久才發現原來是客戶給的Spec html有一點不嚴謹的地方。
他們在兩種不同type的東西下面,取了相同的tid name,
導致我用JQ選取的時候,會選到全部種類的物件。

因為我使用.text()來改變裡面的值,
IE8發現這個選出來的tid WellyTest根本沒有text可以取代(猜)
他是一個input type=text的東西

<input tid="WellyTest" type="text"/>

跟可以正常取代的:

<strong tid="WellyTest">Some Text Here!</strong>

純粹是html code的部分不同,所以不能取代會出現錯誤。

所以最後把input type那裏的WellyTest 改為 WellyTest2 就可以正常了…

很妙的是其他瀏覽器都可以,所以也不知道該怪IE太智障 還是其他的太聰明。
IEIE 你可不可以趕快從地球上消失,這大概是所有程式設計師的心聲…

285 Views


發佈留言

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