Re: [問題] CSS的外部檔案匯入....

看板Web_Design作者 (IE是最棒的瀏覽器)時間19年前 (2006/08/01 21:38), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串4/4 (看更多)
: : 關於這個 : : http://www.w3.org/TR/html4/struct/links.html#edef-LINK : : 可是我直接加在Link 的地方, : : <LINK href="學習與評量研究室-劉子鍵副教授 著作.files/style.css" : : type="text/css" rel="stylesheet" charset="Big5" /> : : 還是沒變耶,就是原po的問題一樣還是在 : : 而用 @charset "Big5" 卻可以用,可解決原po問題 : : 兩個不是應該要有一樣的效能嗎? 怎麼一個有用處,另一個沒作用? : 哈哈 我看漏了一件事 原po的網頁並沒有DOCTYPE宣告 : 他的網頁在任何modern的瀏覽器都會以舊規格的HTML來render(Quirks-mode) : 而舊規格的HTML(指XHTML/HTML4之前的規格) : <link>是沒有charset這個屬性的 :→ ileadu:? 我手動幫他加入doctype 一樣沒有效果說... 08/01 12:29 :→ elan:你加入那一種doctype? 08/01 12:30 :→ ileadu:HTML 4.01 Strict 跟 XHTML 1.1 Strict ^^ 08/01 12:57 :→ ileadu:兩個都不行. 08/01 12:58 :推 mdfh:我試過用 transitional 也一樣 08/01 14:26 :推 mdfh:又另外如果我把style.css改成 utf-8就OK了? 08/01 14:30 :→ ileadu:樓上 對啊~這篇是更深入的探討 link 如何加charset才有效 08/01 16:39 剛剛經過測試 我發現可能有其他的原因 (要不是有原po的例子 我以前也不會對IE以<link>引入外部css 做這麼多的觀察 我之前從未遇過這種問題): 先說明一下情況, 原po的網頁write.html是指定定utf-8編碼, 而他的樣式表style.css第一行有這樣一個宣告: * { font-size: 12px; font-family:Tahoma, 新細明體;} 裡面font-family有指定了'新細明體', 這是樣式表裡唯一的非拉丁字資料, 以big5編碼儲存 原po以<link href="style.css" rel="stylesheet" type="text/css" />引入style.css 接下來是我在IE6上觀察推測的結果, 1. 樣式表第一行之後的定義全失效了 唯一可能的原因就是IE的parsing bug (來自以錯誤的encoding去解譯style.css的內文) 當IE遇到'新細明體'以錯誤的 encoding去解讀而未能正確解譯第一行最後面的 ;} 所以接在後面的定義全因 文法錯誤而未引入. 然後我就試試看把第一行的定義做點小修改: * { font-size: 12px; font-family:Tahoma, 新細明體 ;} ^ 插一個空格進去 這樣應該能強迫IE跳脫parsing bug, 接著正確解譯定義及宣告的結束 ';}' 果然 後續的styles又被正確的引入了.(當然, 我猜font-family也不會有 '正確'的新細明體定義) 2. 既然推測是encoding造成的parsing bug, 我就試著讓IE以big5編碼去去解讀 以<link>引進的style.css, 理所當然依照W3C的規格 加入charset="Big5" (前面文章已經說明在外部樣式表內宣告 @charset "Big5"; 可以work, 不再贅述 另外我要向版友們致歉, 我從沒試過<link>的charset功能, 只是照本宣科依照規格推文在版上) 就如ilead與mdfh兄所測試的一樣, charset屬性 並無作用(雖然MSDN上有說明支援這個屬性). 這時, 我回憶起microsoft軟體的 壞名聲, 直覺的做了一件事, 就是網頁的指定編碼改成big5, style.css果然是 成功的引入了, 所以, 雖然依照W3C的規格, UA應該要 'respect' <link>元素 的charset屬性做指定的編碼, 但IE似乎還是以網頁本身的編碼來解譯<link>所 引進的樣式表 (做這個測試前我已將原po的網頁加入XHTML Strict的DOCTYPE, 以standard-compliant模式來render) 3. 因此, 回到原po的問題, 根據觀察的結果: * 讓你的網頁與外部樣式表使用相同的編碼, 或者是 * 你外部樣式表內的中文用什麼編碼, 就在第一行宣告 @charset "[encoding]"; 的規則(這個保證work!) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.131.10.144

08/01 21:46, , 1F
這並非廣泛的測試 希望其他版友對此問題多加回饋
08/01 21:46, 1F

08/02 02:37, , 2F
沒想到忘了改編碼牽涉到一堆東西 ^^;
08/02 02:37, 2F

08/02 15:29, , 3F
有人可以用IE7試試看嗎?
08/02 15:29, 3F

08/02 15:48, , 4F
回mdfh, 我認為這並非你'忘了'改編碼, 是IE的bug造成你的
08/02 15:48, 4F

08/02 15:50, , 5F
困擾
08/02 15:50, 5F

08/02 15:50, , 6F
沒有理由強制要網頁與外部樣式表用一樣編碼
08/02 15:50, 6F
文章代碼(AID): #14prb6Ff (Web_Design)
文章代碼(AID): #14prb6Ff (Web_Design)