JavaScript 取得 URL Query String 與 Hash 實用技巧
Contents
在前端開發中,經常需要從網址取得 Query String 參數,例如做頁面參數傳遞、SPA 路由、或是根據網址參數顯示不同內容。這篇文章會介紹幾種常見的 JavaScript 取得 Query String 方法,並延伸說明 location.hash
、History API 及 URL API 的應用。
操作流程
-
使用 URL API 取得 Query String
現代瀏覽器已經支援 URL API,讓我們可以很方便地解析網址:
1 2 3 4 5
const url = new URL(window.location.href); const params = new URLSearchParams(url.search); const value = params.get('key'); // 將 "key" 換成你要找的參數名稱 console.log(value);
小提示URL API 只在現代瀏覽器支援,IE 不支援,建議專案要考慮瀏覽器相容性。 -
監聽 location.hash 變化
如果你的頁面有用到 hash 路由(例如 SPA),可以監聽 hash 變化:
1 2 3
window.addEventListener("hashchange", function() { console.log("Hash changed:", window.location.hash); });
-
History API 操作瀏覽器歷史紀錄
可以用 History API 來控制瀏覽器的前進/後退、pushState 等:
1 2 3 4 5 6
// 新增一筆歷史紀錄 history.pushState({page:1}, "title 1", "?key=value#hash1"); // 監聽 popstate 事件 window.addEventListener('popstate', function(event) { console.log('location: ' + document.location + ', state: ' + JSON.stringify(event.state)); });
程式碼範例
以下是完整範例,展示如何取得 Query String 並監聽 hash 變化:
|
|
踩雷心得
- 早期常用
location.search
字串手動切割,容易出錯,建議直接用 URL API。 - IE 不支援 URL API,舊專案要注意相容性。
location.hash
只會取得 # 後面的內容,不包含 Query String。- History API 操作不當可能導致瀏覽器返回行為異常。
感言/總結
這些 API 讓前端處理網址參數變得非常簡單,建議新專案都直接用 URL API。遇到瀏覽器相容性問題時,可以考慮 polyfill 或 fallback 寫法。實際開發時,建議多利用 MDN 文件查詢細節。
心智圖
mindmap
root((js Query String))
取得 Query String
URL API
傳統字串切割
監聽 hash 變化
hashchange 事件
操作歷史紀錄
History API
踩雷心得
相容性問題
hash 與 query 差異
參考連結
MDN
Stack Overflow
技術部落格
參考連結
- JavaScript 取得 Url 的 Query String | ShunNien’s Blog
- javascript - On - window.location.hash - Change? - Stack Overflow
- 操控瀏覽器歷史紀錄 - Web APIs | MDN
- URL API - Web APIs | MDN