還在學習中,記錄一下在工作上遇到的問題
若有錯誤的地方歡迎指教,十分感謝
需求
瀏覽本身提供了 URL、URLSearchParams 的 WebAPIs 可以使用
參考:URL、URLSearchParams
const currentUrl = new URL(window.location.href);
const searchParams = new URLSearchParams();
searchParams.append('item', 100);
currentUrl.search = searchParams;
const address = `http://www.test.com/page${currentUrl.search}`;
console.log(address);
// http://www.test.com/page?item=100
URLSearchParams 還有提供很多方法可以對參數/值做事:
URLSearchParams.append() // 插入一個自定義的參數與值
URLSearchParams.delete() // 刪除指定參數及值
URLSearchParams.get() // 取得指定查詢的參數(第一個值)
URLSearchParams.has() // 判斷參數是否存在
HTML5 提供了可以儲存網頁歷史紀錄的方法:history.pushState()
和 history.replaceState()
方法
兩者差別在紀錄堆疊的方式不同,細節可參考:History API
state:可儲存一個 state 物件,並能在 onpopstate 事件中拿到該值
title:更新後頁面的標題,目前瀏覽器會忽略,文件中建議給空字串
url:設定要更新歷史紀錄的 URL
// history.pushState(state, title, url);
history.pushState(null, null, address);
被更換過的 URL 頁面,若點擊瀏覽器的上一頁按鈕卻沒有反應,但 URL 確實有被置換
查詢文件後發現,瀏覽器對於新的URL並不會重新加載、檢查存在與否
使用瀏覽器提供的方法 window.onpopstate
Window.onpopstate
該方法會在會在歷史紀錄有發生變動時被觸發(例如點擊瀏覽器的上下一頁按鈕)一個 popstate event
我們就可以在事件中,加入自定義的內容,去判斷當前狀態是否需要進行頁面重載
window.onpopstate = function(event) {
if (event.state) return
location.reload();
}
小编对如今英文论文代写 http://www.hotessay.net/our_service1.php 行业的了解发现,如今总体的市场认同度还是非常好的。大家在代写的过程中不仅可以解决学业问题,最关键的是自己也能从中学习一些自己还未掌握的专业技能。