2009-04-11

osTube v2.3-ie無法開啟的問題

最近osTube升級2.5…但據它的demo好像只有多一個webTV的東東…嗯,不怎麼需要(其實…是我今天要上去抓,但官網連不到)

ok,先說說為什麼我在知道2.5沒啥好東東之後還想去抓…
是因為,我的老姐在隔了很久之後又突然測試開我的狐吐唄,發現連不上去…
但老姐跟我說的當下,我可以看呀…想說是不是她的電腦又有問題或網路之類的錯誤,但老姐說,她在上班與家裡都一樣的結果…

嗯??很懷疑…

然後,老姐突然的說:「我用firefox可以看,但ie不行」…
我才想到,一定又是osTube v2.3又不知道哪跑出來的bug官方又沒修掉(可能2.5有),所以,發揮程式設計師debug的習慣,開始抓蟲。

============
ok,先從ie下手
我的ie-plugin有用orbit的grab pro,類似google-toolbar,在正在連線的網頁找不到會有問題的時候它不會直接出現404的錯誤,它會跑去orbit的search網頁找關鍵字。
所以,在ie開我的網站時,會發現有類似link的一連串行為發生…這時候可以知道應該有error…
有error的就好辦了…因為用linux上的apache,它會存有syslog…所以,馬上到/var/log/httpd底下把error_log打開來看…大至上會看到一連串的「[error] [client:xxx.xxx.xxx.xxx] File does not exist: /var/www/html/js」

ostube的js的路徑應該是在ostube的根目錄底下,沒道理會link到網站的根目錄…所以,錯誤應該發生在這個地方…

但為何firefox沒這個錯誤…嗯,我想,應該歸納在ie 6/7的w3c還吃不完全的關係…

無所謂,接著,我將說明我怎麼找到錯誤…
因為,基本上,在error_log中發現的是在browser在丟回server解出的http-tag的路徑是/js,所以,一定是在某網頁的頁面中在link或load某js的東西時產生的錯誤而造成的,所以,可以利用notepad++或dreamweaver的尋找來找某個路徑下的檔案…可以發現…要載入js很多頁

ok,太多,我們就縮小範圍…
因為ie開啟網頁錯誤是在主頁進去就會有錯了,所以,有問題的index也會算在內…我們就開啟在template/index.tpl…(注意…不需要去開啟index.php,因為那是php程式的主頁,ostube是用template的方式來載入樣板,所以html的頁面是在template的*.tpl)…
可以找到有二個css與四個js會載入…

四個js的路徑都是直接依相對路徑來載入…index.php是主程頁面,php-document的模式會把tpl載入至index.php來做畫面呈現,所以在index.tpl出現的路徑要從ostube的根目錄開始(你也可以把index.tpl看與index.php是放在相同的位置)…所以,js的位置是ok的…

那還會有哪邊有問題???

ok,大家別忘了,css中不僅可以做一些定位與color的變化,有某一些html-tag中的屬性是可以loading檔案或img的…

所以,我們可以把重點先移到「<!--[if IE] >」的上面…因為這是server判斷broswer是ie的話會載入的css…(因為發生錯誤是在ie嘛)…

ok…因為tpl中的是一些document-template的表示法…所以我們得看網頁執行後的html原碼才能知道if IE是去讀什麼css…再用ie來開,速度快一點的來檢視原始碼…可以找到那一行解出來的是「<!--[if IE]><link rel="stylesheet" type="text/css" media="screen,projection" href="templates/default/styles/black_mamba/styles_ie.css?1239414100" /><![endif]-->」
所以,發現是會去載入styles_ie.css…

根據該目錄的位置去打開styles_ie.css…可以找找有什麼會load東西而且又是找js目錄底下的…果然,很快的發現該檔案的頭幾行就有「behavior: url(../../../../js/iepngfix.htc)」

我光從這樣子看,再從styles_ie.css所在路徑用../去反推…照理而言,應該是沒有問題的…但我把「../../../../」直接指定到ostube的根變為「url(/ostube/js/iepngfix.htc)」之後,ie開啟就正常了…

所以,個人認為…不是ostube的問題就是ie的問題

沒有留言: