js 截取url中的參數


getQueryString(name) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    var r = window.location.search.substr(1).match(reg);
    if(r != null) {
        return unescape(r[2]);
    }
    return null;
}

正常的頁面可以調用這個方法,window.location.search獲取到當前頁面從問號 (?) 開始的 URL(查詢部分)

隨后配合正則就可以篩選出想要的參數,比如鏈接:https://i.cnblogs.com/EditPosts.aspx?hello=123

這么使用:  getQueryString(‘hello’)

就可以直接獲取到  “123”

--------------------------------------------------------------

這個方法在vue單頁面中是不可用的,比如vue的hash模式,鏈接是含有#號且在?號之前的

比如: http://192.168.1.181:8080/#/bookDetail?antBook=3

如果這時候調用方法:this.getQueryString(‘antBook’),是會返回null的,主要原因是該死的#號,他會讓window.location.search直接失效,阻礙我們導致

根本拿不到我們想要的antBook的值

這個時候也很簡單,我們只要相對的改改代碼,讓從問號 (?) 開始變為從#號開始的 URL(錨)

也就是將(window.location.search)更改為(window.location.hash

這樣在vue單頁面中,就可以順利取到參數值了

--------------------------------------------------------------

最后,由於我在vue的hash模式下進行了微信分享,鏈接被我處理了一下

比如: http://192.168.1.181:8080/?isshare=1#/bookDetail?antBook=3

這時候用上面的方法去取 antBook 的值還是取不到的

需要對 window.location.hash 進行處理

這次的鍋要#后面的?號來背

綜上

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM