2013年10月30日 星期三

瀏覽器大混戰

寫網頁也有一段時間了

針對不同門派的瀏覽器,語法不相容的問題真的是很難搞

這次問卷系統對方又要求要能for chrome、for firefox、for kkman(啥鬼!!)

因此研究了一下各家瀏覽器的不同

市面上瀏覽器百百款,研究了一下發現有很多都是用同一個核心

主要瀏覽器核心包括[1]
Trident(IE內核)
Gecko(Firefox內核)
Webkit內核(Safari、Chrome 等)
Presto(Opera 內核)

沸沸沸,原來Safari跟Chrome是同一個老背的

不過那又怎樣,IE各家兄弟還不是長自己打自己 >"<

有空在來研究這幾個內核的愛恨糾葛


1.正統寫法

用IE用太久了,寫法都懶惰起來
<input type="text" name="user" />

結果用了一大堆document.getElementById 在Firefox跟Chrome都錯賽

這是不對的,沒有依照正統寫法[2],就像尿不准怪馬桶歪一樣丟臉

這樣寫才是乖寶寶,至少能解決一半以上的問題
<input type="text" name="user" id="user" />
如果以後我的網頁還有因為這種寫法而遇到不能跨瀏覽器的問題

只好切腹自殺了

2.客制化JS

至於其他問題呢,只好for不同瀏覽器客制化不同的javascript

甚麼!我還要知道全球12億人口的使用者到底是用甚麼瀏覽器來看我的網頁嗎?(廢話)

只好用我那個爛爛的問卷調查系統來做個普查好了,20年後待續....

我回來了,我在google上遇到大師[3]跟我說可以不用做普查

用以下的方法就可以知道使用者的瀏覽器

HTML
<!-​​-[if IE 6]> 僅IE6可識別 <![endif]–>
<!-​​-[if lte IE 6]> IE6及其以下版本可識別<![endif]–>
<!-​​-[if lt IE 6]> IE6以下版本可識別<![endif]–>
<!-​​-[if gte IE 6]> IE6及其以上版本可識別<![endif]–>
<!-​​-[if gt IE 6]> IE6以上版本可識別<![endif]–>
<!-​​-[if IE]> 所有的IE可識別 <![endif]–>
Javascript
var agent = navigator.userAgent.toLocaleLowerCase();
var isIE = agent.search("msie") > -1;
var isIE7 = agent.search("msie 7") > -1;
var isFirefox = agent.search("firefox") > -1;
var isOpera = agent.userAgent.search("opera") > -1;
var isChrome = agent.search("safari") > -1;
JSP
<%
String userAgent = request.getHeader("user-agent");
%>

其他語言略...  以後我有寫到其他語法的程式再補


3.使用第三方工具

第三方工具包括:jQuery、DWR
其他語言略...  以後我有寫到其他語法的程式再補

就是把我們的問題轉嫁到其他人身上

甚麼!!!  不能用??
我不知道,那是jQuery的問題




參考資料
[1] http://streamer-forest.tw/browser-core-intro.html
[2] http://www.w3schools.com/
[3] http://design2u.me/blog/504/html-css-php-javascript-jsp-to-judge-the-users-browser-version

沒有留言:

張貼留言