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)目名稱:
/**
* 獲取項(xià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í)有所幫助,也希望大家多多支持腳本之家。
- JS前端開(kāi)發(fā)判斷是否是手機(jī)端并跳轉(zhuǎn)操作(小結(jié))
- JS跳轉(zhuǎn)手機(jī)站url的若干注意事項(xiàng)
- js根據(jù)手機(jī)客戶端瀏覽器類型,判斷跳轉(zhuǎn)官網(wǎng)/手機(jī)網(wǎng)站多個(gè)實(shí)例代碼
- 基于JavaScript代碼實(shí)現(xiàn)pc與手機(jī)之間的跳轉(zhuǎn)
- js判斷手機(jī)訪問(wèn)或者PC的幾個(gè)例子(常用于手機(jī)跳轉(zhuǎn))
- 兩款JS腳本判斷手機(jī)瀏覽器類型跳轉(zhuǎn)WAP手機(jī)網(wǎng)站
- JS腳本根據(jù)手機(jī)瀏覽器類型跳轉(zhuǎn)WAP手機(jī)網(wǎng)站(兩種方式)
- JSP中實(shí)現(xiàn)判斷客戶端手機(jī)類型并跳轉(zhuǎn)到app下載頁(yè)面
- 百度判斷手機(jī)終端并自動(dòng)跳轉(zhuǎn)js代碼及使用實(shí)例
- 手機(jī)平板等移動(dòng)端適配跳轉(zhuǎn)URL的js代碼
- JS自動(dòng)跳轉(zhuǎn)手機(jī)移動(dòng)網(wǎng)頁(yè)的實(shí)現(xiàn)方法
相關(guān)文章
JavaScript代碼應(yīng)該放在HTML代碼哪個(gè)位置比較好?
這篇文章主要介紹了JavaScript代碼應(yīng)該放在HTML代碼哪個(gè)位置比較好?本文總結(jié)了多種放置JS代碼的方法,需要的朋友可以參考下2014-10-10
javascript的document中的動(dòng)態(tài)添加標(biāo)簽實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇淺談javascript的document中的動(dòng)態(tài)添加標(biāo)簽實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
firefox火狐瀏覽器與與ie兼容的2個(gè)問(wèn)題總結(jié)
這幾天遇到幾個(gè)頭疼的火狐與ie兼容問(wèn)題整理下來(lái),希望對(duì)需要的朋友有所幫助。2010-07-07
javascript學(xué)習(xí)筆記之函數(shù)定義
本文主要給大家介紹了javascript的一些函數(shù)定義方面的基礎(chǔ)知識(shí),包括函數(shù)聲明式、函數(shù)表達(dá)式、Function 構(gòu)造函數(shù)等,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-06-06
使用 UniApp 實(shí)現(xiàn)小程序的微信登錄功能
這篇文章主要介紹了使用 UniApp 實(shí)現(xiàn)小程序的微信登錄功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
javascript實(shí)現(xiàn)簡(jiǎn)單搜索功能
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)簡(jiǎn)單搜索功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
解決layui上傳文件提示上傳異常,實(shí)際文件已經(jīng)上傳成功的問(wèn)題
今天小編就為大家分享一篇解決layui上傳文件提示上傳異常,實(shí)際文件已經(jīng)上傳成功的問(wèn)題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08

