1. 程式人生 > >js獲取url中?後的引數,修復移動版無法切換到電腦版的BUG

js獲取url中?後的引數,修復移動版無法切換到電腦版的BUG

昨天,釋出了《完美實現移動主題在 360 網站衛士快取全開情況下的切換》一文,通過 JS 實現了主題在移動端訪問時的自動切換,最後提到了可以在電腦版和移動版的 footer 裡面加上手動切換連結,實現手動版本切換功能。

今早發現,電腦版切換到移動版是沒問題了,但是移動版切換到電腦版,JS 將會再次工作uaredirect.js會再次做 UA 判斷,然後由又跳回了電腦版! 也就是說,手機上瀏覽無法手動切換到電腦版,看來還得繼續折騰!

於是,想到一個辦法,給移動版的切換連結帶上一個引數,再修改 uaredirect.js,當發現連結後面帶了指定引數時,就直接 return,而不再進行 UA 判斷,避免再次跳轉的尷尬。。。

說幹就幹,在 oschina 找到如下 2 中獲取 url 後面引數的方法:

JavaScript
12345678910111213141516171819202122232425262728293031323334353637 //獲取請求url中引數的值:/*方法一:引數值中沒有等於號(“=”)*/functiongetUrlRequest(){varurl=location.search;//獲取url中"?"符後的字串vartheRequest=newObject();if(url.indexOf("?")!=-1){varstr=url.substr(1);if(str.indexOf("&")!=-1
){strs=str.split("&");for(vari=0;i<strs.length;i++){theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);}}else{theRequest[str.split("=")[0]]=unescape(str.split("=")[1]);}}returntheRequest;}/*方法二:引數值中有等於號的情況(“=”)*/functiongetUrlRequest(){varurl=location.search;//獲取url中"?"符後的字串vartheRequest=newObject();if(url.indexOf("?")!=-1){varstr=url.substr(1);if(str.indexOf("&")!=-1){strs=str.split("&");for(vari=0;i<strs.length;i++){theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);}}else{varkey=str.substring(0,str.indexOf("="));varvalue=str.substr(str.indexOf("=")+1);theRequest[key]=decodeURI(value);}}returntheRequest;}

根據個人喜好,張戈選擇了第二種,然後如下修改uaredirect.js

JavaScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 //獲取url後面引數functiongetUrlRequest(){varurl=location.search;vartheRequest=newObject();if(url.indexOf("?")!=-1){varstr=url.substr(1);if(str.indexOf("&")!=-1){strs=str.split("&");for(vari=0;i<strs.length;i++){theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);}}else{varkey=str.substring(0,str.indexOf("="));varvalue=str.substr(str.indexOf("=")+1);theRequest[key]=decodeURI(value);}}returntheRequest;}functionuaredirect(f){varcanshu=getUrlRequest();try{if(canshu["type"]=="pc"){//當檢測到url後面帶了type=pc引數時,停止執行.return}varb=false;if(arguments[1]){vare=window.location.host;vara=window.location.href;if(isSubdomain(arguments[1],e)==1){f=f+"/#m/"+a;b=true}else{if(isSubdomain(arguments[1],e)==2){f=f+"/#m/"+a;b=true}else{f=a;b=false}}}else{b=true}if(b){varc=window.location.hash;if(!c.match("fromapp")){if((navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i))){location.replace(f)}}}}catch(d){}}functionisSubdomain(c,d){this.getdomain=function(f){vare=f.indexOf("://");if(e>0){varh=f.substr(e+3)}else{varh=f}varg=/^www\./;if(g.test(h)){h=h.substr(4)}returnh};if(c==d){return1}else{varc=this.getdomain(c);varb=this.getdomain(d);if(c==b){return1}else{c=c.replace(".","\\.");vara=newRegExp("\\."+c+"$");if(b.match(a)){return2}else{return0}}}};

最後,在移動版主題的 footer 裡面加上如下程式碼:

PHP
1234567891011121314151617 <!--登陸--><atitle="登陸"href="http://zhangge.net/wp-login.php">登陸</a>&nbsp;<!--首頁底部切換連結--><?phpwp_reset_query();if(is_home()){?><atitle="電腦版"href="http://zhangge.net?type=pc">電腦版</a><?php}?><!--文章底部切換連結--><?phpwp_reset_query();if(is_single()){?><atitle="電腦版"href="http://zhangge.net/<?phpthe_ID();?>.html?type=pc">電腦版</a><?php}?><!

相關推薦

js獲取url?引數修復移動無法切換電腦BUG

昨天,釋出了《完美實現移動主題在 360 網站衛士快取全開情況下的切換》一文,通過 JS 實現了主題在移動端訪問時的自動切換,最後提到了可以在電腦版和移動版的 footer 裡面加上手動切換連結,實現手動版本切換功能。 今早發現,電腦版切換到移動版是沒問題了,但是移動版切換到電腦版,JS 將會再次工作uar

js獲取url 的值並跳轉相應頁面

實現方法:一:獲取URL帶QUESTRING引數的JAVASCRIPT客戶端解決方案,相當於asp的request.querystring,PHP的$_GET1.函式:<Script language="javascript">function GetRequest() {var url = lo

js獲取url引數,並保證獲取到的引數不亂碼

//網上比較經典的js獲取url中的引數的方法 function getQueryString(name) {     var reg = new RegExp("(^|&)" + name +

ExtJs 獲取url引數根據id獲取元素設定屬性

ExtJs獲取Url中的某個引數,下面例子是獲取url中的name屬性值 Ext.Object.fromQueryString(window.location.href).name; ExtJs根據id獲取元素,給元素設定屬性 id: 'stud

原生js獲取url傳遞引數js獲取url傳遞的引數

方法一:正則分析法function getQueryString(name) {          var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");          var r 

獲取URL引數(使用迴圈獲取存進集合url引數作為key可根據需要根據key調取自己想要的引數

這是index頁面  中的點選事件方法                       準備跳轉到model_xxxx-list.html的頁面,傳的id function mod

獲取URL引數和對應值以鍵值對方式返回

根據題意,URL可分為三類。即無引數,有一個引數,有多個引數。 http://www.jiangxiaobai.com http://www.jiangxiaobai.com?name=xiaobai http://www.jiangxiaobai.com?name=x

JS通過Url傳遞中文引數c#獲取引數

最近遇到一個JS通過Url傳遞中文引數,c#獲取中文引數亂碼的問題。解決方法如下: 正確的方法是: JS var reqUrl = document.location + "?key=" + encodeURI(keyword); C# string keyword =

js獲取url引數名也引數值

本文轉載於:猿2048網站➯js獲取url中引數名也引數值 要撮利用js獲取url中引數名也引數值這個不多見了,但我今天需

js 獲取URL參數

res 獲取值 參數名稱 var blog null match class query function getQueryString() { var result = location.search.match(new RegExp("[\?\&][^

js 獲取url 的參數;

實例 pos 瀏覽器中 date toc 整數 調用方法 cap adding 用JS獲取地址欄參數的方法(超級簡單) 方法一:采用正則表達式獲取地址欄參數:( 強烈推薦,既實用又方便!) function GetQueryString(name) {

js獲取URL指定的值

string 元素 每一個 cati 組元 brush func arc gets function getSearchString(key) { // 獲取URL中?之後的字符 var str = location.search; str = s

使用JS獲取URL參數的方法

彈出 port there href 字串 span window subst var 1、獲取整個URL字符串 要想獲取URL中的參數,首先我們就要獲取到整個URL字符串。我們以http://localhost:8080/Charge/homePage.html?cost

node.js獲取url的各個參數

local substr .net sub In csdn 列表 tle CA   實例代碼test.js var http=require(‘http‘); var url=require(‘url‘); var querystring=require(‘queryst

js去除url指定引數

在專案中,遇到有引數只需要彈出一次,彈出後返回時就會再次彈出,所以需要將彈出引數取消: 程式碼如下: function delParam(paramKey) { var url = window.location.href; //頁面url var

JS獲取url連線的引數

應用場景:訪問某個html靜態頁面時需要帶上大量引數 如: http://localhost:8086/seeyon/h5/edoc/index.jsp?id=123123454&name=joke&age=16&job=worker var url = wi

JavaScript獲取URL引數

function getQueryString(name){ vat reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.serarch.substr(1).match

JS獲取URL引數值的4種方法

  方法一:正則法 function getQueryString(name) {var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');var r = window.location.se

案例:JS獲取URL引數值的方法

假設位址列地址是:http://localhost:3000/m/productlist.html?search=%E9%9E%8B 思路分析: 1.location.search//得到?search=%E9%9E%8B 2.location.search.substring(1)//"s

javascript獲取url引數

function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search