引子:
去年年底公司開發手機站平臺,經歷了前期的用戶群、市場調查,產品需求分析,產品原型設計,ui前端到程序開發上線測試等等工作,終于上線。。。此處略去本人作為前端開發的心情。
應該說,我們的手機站平臺還是個頑皮小孩子,還有許多需要去學習,去磨練。
我們手機站平臺的設計初衷是對接我們已有的PC站平臺,簡單說就是原來我們所有的用戶使用的是我們的PC站服務,現在可以得到一個網站數據與PC站 一樣的手機站點。重點是老用戶還不收錢,免費用。(PC端網站的客戶 想想是不是有點兒小激動呢)上線一段時間,感覺很多客戶還是蠻感興趣的,都在自己的手機上安裝了這個那個的二維碼掃面軟件,對著手機網站的二維碼掃啊掃的。
話入正題:
廢話不多說,很多客戶慕名而來,原來不是我們做PC的客戶買了我們的手機站服務,這就產生了從其PC站如何能夠跳轉到手機站的問題。
我想,通過javascript獲取客戶端的 navigator.userAgent 之后使用url跳轉 是一個不錯的方法。
走你-代碼:
var isMobile = { Android: function() { return navigator.userAgent.match(/Android/i) ? true : false; }, BlackBerry: function() { return navigator.userAgent.match(/BlackBerry/i) ? true : false; }, iOS: function() { return navigator.userAgent.match(/iPhone|iPod/i) ? true : false; }, Windows: function() { return navigator.userAgent.match(/IEMobile/i) ? true : false; }, Linux: function() { return navigator.userAgent.match(/Linux/i) ? true : false; }, any: function() { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows() || isMobile.Linux()); }};setTimeout(function() { if (isMobile.any()) { var body = document.getElementsByTagName('body'); body[0].style.display='none'; location.href = "http://m.vevb.com/"; }}, 10);
簡單分析:
一、在那些設備上需要跳轉URL?
在XP,win7和mac下,一般不做手機站跳轉的。
市面上的 Android 、BlackBerry 、iOS 、Windows mobile(phone) 、Linux等系統,為大家所常用的手機端操作系統?;鸷膚ebOS,“遠古時代”的諾基亞塞班等等,在國內外好像好沒有市場了,不要去考慮。
二、在頁面跳轉時,存在哪些問題?
1.原PC網站需要加載的資源可能很多,跳轉URL之前PC站的頁面可能已經呈現,跳轉的效果太生硬
解答:js獲取終端的特性后,立即將body設置為隱藏
2.使用 window.onload 還是 setTimeout?
解答:setTimeout是由我選擇何時執行,而可惡的 window.onload需要我等所有的資源下載后去執行我的方法,故我推薦使用 setTimeout();
小結:
關于終端設備的判斷,上面的代碼很膚淺的做了很尷尬的 url 跳轉,這是不得已的方法。若是服務器端根據客戶端的請求頭信息來判斷設備特性,依此返回不同的資源是更好的選擇。
隨著移動端設備的發展,很多瀏覽器能夠設置或者自定義修改 客戶端的請求頭信息,也是這段js可能面臨的問題,有待更新吶!
新聞熱點
疑難解答