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 進行處理
這次的鍋要#后面的?號來背
綜上