針對不同門派的瀏覽器,語法不相容的問題真的是很難搞
這次問卷系統對方又要求要能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
沒有留言:
張貼留言