JS如何實(shí)現(xiàn)網(wǎng)站中PC端和手機(jī)端自動(dòng)識(shí)別并跳轉(zhuǎn)對(duì)應(yīng)的代碼
1. 代碼場(chǎng)景:
描述:在項(xiàng)目中,一般我們會(huì)使用響應(yīng)式布局的方式或者借助bootstrap等插件來(lái)做響應(yīng)式的網(wǎng)站。但是根據(jù)業(yè)務(wù)的需求,手機(jī)端可能會(huì)在功能上精簡(jiǎn)很多,我們也會(huì)寫(xiě)兩套代碼,分別用來(lái)實(shí)現(xiàn)PC端和手機(jī)端的功能。此時(shí),就存在一個(gè)問(wèn)題。項(xiàng)目在部署的時(shí)候只會(huì)使用一個(gè)地址,不會(huì)針對(duì)手機(jī)和PC端代碼分別進(jìn)行部署。這個(gè)時(shí)候就需要我們通過(guò)去識(shí)別視口分辨率的大小,來(lái)自動(dòng)去跳轉(zhuǎn)對(duì)應(yīng)的代碼。
2. 實(shí)現(xiàn)方式:
目前網(wǎng)上有很多的方法用來(lái)實(shí)現(xiàn)PC端和手機(jī)端的代碼跳轉(zhuǎn),但我只用了一種實(shí)現(xiàn)方式。其他的暫時(shí)還沒(méi)有嘗試,希望可以跟大家學(xué)到更多的解決方案。在此特別感謝<<--老蔣部落-->>的方法給予了我很大的幫助。
此處貼出當(dāng)前的JS代碼:
<script type="text/javascript"> function mobilePcRedirect() { var sUserAgent= navigator.userAgent.toLowerCase(); var bIsIpad= sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp= sUserAgent.match(/midp/i) == "midp"; var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb"; var bIsAndroid= sUserAgent.match(/android/i) == "android"; var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce"; var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile"; if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { window.location.href= '手機(jī)端跳轉(zhuǎn)頁(yè)面URL'; } else { window.location= 'PC端跳轉(zhuǎn)頁(yè)面URL'; } }; mobilePcRedirect(); </script>
將此方法分別寫(xiě)在手機(jī)端和PC端公共的Common.js中,然后在對(duì)應(yīng)位置寫(xiě)入對(duì)應(yīng)的路徑即可。
例如:手機(jī)端公共JS中代碼如下
// 實(shí)現(xiàn)網(wǎng)站自動(dòng)跳轉(zhuǎn)電腦PC端與手機(jī)端不同頁(yè)面 function mobilePcRedirect() { var sUserAgent= navigator.userAgent.toLowerCase(); var bIsIpad= sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp= sUserAgent.match(/midp/i) == "midp"; var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb"; var bIsAndroid= sUserAgent.match(/android/i) == "android"; var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce"; var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile"; if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { console.log("手機(jī)端跳轉(zhuǎn)頁(yè)面URL"); } else { console.log("PC端跳轉(zhuǎn)頁(yè)面URL"); // 注:此時(shí)寫(xiě)入的是PC端首頁(yè)跳轉(zhuǎn)路徑 window.location.href = getBasePath() + "/education/new_index.html"; } }; mobilePcRedirect();
反之,PC端公共JS中同樣的寫(xiě)法即可。
3. 拓展內(nèi)容(如何獲取項(xiàng)目的根路徑?)
獲取項(xiàng)目名稱(chēng):
/** * 獲取項(xiàng)目名稱(chēng) 如:/video_learning **/ function getProjectName() { var strPath = window.document.location.pathname; var postPath = strPath.substring(0,strPath.substr(1).indexOf('/')+1); return postPath; }
獲取項(xiàng)目全路徑:
/** * 獲取項(xiàng)目全路徑 如:http://localhost:8080/video_learning * */ function getBasePath(){ //獲取當(dāng)前網(wǎng)址 var curWwwPath=window.document.location.href; //獲取主機(jī)地址之后的目錄 var pathName=window.document.location.pathname; var pos=curWwwPath.indexOf(pathName); //獲取地址到端口號(hào) var localhostPath=curWwwPath.substring(0,pos); //項(xiàng)目名 var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); return (localhostPath+projectName); }
本次分享已完成,大家若有更好的方法或者意見(jiàn)歡迎指正學(xué)習(xí)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:一看就會(huì)的vuex實(shí)現(xiàn)登錄驗(yàn)證(附案例)
欄 目:JavaScript
下一篇:Websocket 向指定用戶(hù)發(fā)消息的方法
本文標(biāo)題:JS如何實(shí)現(xiàn)網(wǎng)站中PC端和手機(jī)端自動(dòng)識(shí)別并跳轉(zhuǎn)對(duì)應(yīng)的代碼
本文地址:http://mengdiqiu.com.cn/a1/JavaScript/9251.html
您可能感興趣的文章
- 04-02包含javascript舍的詞條
- 04-02java后端代碼分頁(yè) java后端實(shí)現(xiàn)分頁(yè)page
- 01-10Echarts實(shí)現(xiàn)單條折線可拖拽效果
- 01-10在Vue項(xiàng)目中使用Typescript的實(shí)現(xiàn)
- 01-10js實(shí)現(xiàn)上傳圖片并顯示圖片名稱(chēng)
- 01-10Vue中使用Lodop插件實(shí)現(xiàn)打印功能的簡(jiǎn)單方法
- 01-10echarts實(shí)現(xiàn)折線圖的拖拽效果
- 01-10d3.js實(shí)現(xiàn)圖形縮放平移
- 01-10小程序簡(jiǎn)單兩欄瀑布流效果的實(shí)現(xiàn)
- 01-10H5實(shí)現(xiàn)手機(jī)拍照和選擇上傳功能


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02javascript點(diǎn)線,點(diǎn)線的代碼
- 04-02javascript潛力,javascript強(qiáng)大嗎
- 04-02javascript替換字符串,js字符串的替換
- 04-02javascript移出,js 移入移出
- 04-02包含javascript舍的詞條
- 04-02javascript并行,深入理解并行編程 豆瓣
- 04-02javascript匿名,js匿名方法
- 04-02javascript警報(bào),JavaScript警告
- 04-02javascript遮蓋,JavaScript遮蓋PC端頁(yè)面
- 04-02javascript前身,javascript的前身
隨機(jī)閱讀
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載