What have you found for these years?

2007-08-26

IE 6/7 回來了 XD

做了相當大量的修改與觀察後,IE 6/7 又重新回來了。
好吧,其實我只有測 IE 7, 因為灌完 IE 7 我的 IE 6
就不知道跑到哪裡去了﹍。

anyway, 我灌了這個 plugin: RESTful XHTML
理所當然地,我完全不知道 restful 是什麼意思 XDD
總之這篇看完之後,我才知道原來是我自己誤會前面的那個 plugin,
他做的沒有錯,只是正好 firefox prefer xml over html,
所以才會產生送回 xml 的狀況。這也是我翻了翻 beast src 才發現的,
他很多 action 都有支援回傳 xml 的狀態,有些還有 js 的!

然後我才知道,原來 client 還可以送出他 prefer 什麼東西,
接著 server 再根據這清單送出資料,才會有按下 edit 用 ajax call,
會原地展開,而直接去 get 會得到一個全新的頁面。
剛看到我真的很納悶,他該不會自己去 parse 掉中間的內容吧?
原來是還可以有這麼巧妙的方式,同個 get 回傳不同東西。

不過要把這個考量進來的話,每個 browser 就很明顯都不一樣了﹍。
firefox prefer xhtml, opera 吃 xhtml,
safari 吃一半,有些顯示不正常。ie 則是完全不吃.
然後 w3c 的 validator 又不一樣了,他吃 xhtml,
但是他 prefer 不吃 = =b 這真的是很莫名其妙﹍﹍。

很混亂,所以我只講結果好了。最理想的狀況就是用 restful_xhtml 的
want_xhtml? 去判斷,true 則丟 xhtml(xhtml 1.1), false 則丟
html(xhtml 1.0). 可是這種情況就會變成,只有 firefox 吃到 xhtml,
因為只有 firefox(include all gecko based) 會 prefer xhtml...
可是事實上,opera 是吃 xhtml 的,那為什麼不給他?

於是我改了一下,用 google 來的這段程式碼:
@request.accepts.include?( Mime::Type.parse('application/xhtml+xml') )
然後加到 ApplicationController 裡面,取作 accept_xhtml?
這樣的話,opera 就可以吃到 xhtml 了!可喜可賀可喜可賀。

不過 w3c 的 validator 還是不吃﹍﹍。他還是堅持使用 html XD
除非我強迫他使用 xhtml, 否則他一定使用 html, 這實在是很討厭,
畢竟如果我強迫使用 xhtml, 那 safari 就會有一點點不正常,
而 ie 則會完全死掉 XDDD 如果能簡單做點 workaround 就能讓 ie
也能使用的話,其實也沒什麼不好,雖然我討厭他,他跨平台更重要 XD

所以我後來決定,把 DOCTYPE 寫死好了,這樣 validator 才能 validate
xhtml, 雖然會噴 warning, 可是我真的覺得那是他自己不吃的問題,
人家 firefox 和 opera 都好好的﹍﹍。

於是 DOCTYPE 寫死了,firefox 和 opera 可以正確使用 xhtml,
但 safari 和 ie 則是使用有點假的 xhtml XD 至於 validator 那怪狀況,
實在不知道該說他什麼,似乎比較像 bug...

RESTful XHTML 還算不錯,滿方便的,至少 mime-type 的部份處理都正確,
還能輔助產生一些 tag, 比之前那個 plugin 是來得好。不過 restful
究竟是什麼意思啊? XD 是指可以有多種輸出嗎?

所以我最後的 hack 就是把:format.html &block 改成:
xhtml_or_html format, &block
這個 method 寫在 ApplicationController 裡面,
實做則是:accept_xhtml? ? format.xhtml(&block) : format.html(&block)

所有的修改都是遠端操作,所以我用 vim, 天啊,真的很不習慣,
一直出現 500 error 然後調查結果發現是 typo...
而且使用 vim 會讓手一直放在鍵盤上,害我覺得關節有點不舒服。

另外,我後來才知道 port 的 variant 要這樣用,於是我的 vim 和 nano
也終於支援 utf-8 了。
sudo port install vim +big +huge +multibyte +ruby
big huge 不知道是什麼,亂加的 XD 我之前一直試:+multi_byte
+multi-byte 結果都錯,沒想到是全部黏在一起﹍。
sudo port install nano +color +mouse +utf8 +wrap

大概就是這樣了。至於目錄那個首頁嘛,他是靜態檔案耶,要不要為 ie
特別調整我再考慮看看,如果有簡單的方法就可以做,麻煩或是太暴力就算了。

bq. It’s basically saying, “Just give me whatever you’ve got,
I can handle it, no problem!”. This is, of course, a lie.
We know IE7 can’t handle XHTML.

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0