您好,我正在尝试使用window.history.pushState
方法来更改URL而不重新加载页面,但是它无法正常工作。例如,我有一个地址:localhost:1234/jobs
,并且想将其更改为localhost:1234/jobs?jobId=1#update
,所以我尝试通过自己的方法进行操作:
changeAddress(jobId){
window.history.pushState(null, "Job update", "/jobs?jobId=" + jobId + "#update");
};
但是它不起作用,此方法仅在1秒钟内发出了良好的地址,并且恢复了旧值。 我做了一个应该在更改网址后激活的方法-
$(window).on('popstate', function(){
console.log(window.location.href);
});
但是什么也没发生。我在做什么错了?
好的,所以也许在我的代码示例之后,一切都会更加清楚。 我在.jsp文件中有一个元素:
<i class="fas fa-edit fa-fw"
data-tooltip="tooltip"
title="Edit this job"
ng-click="goJobModal(job.id);$event.stopPropagation()"></i>
按下此按钮后,应执行方法goJobModal:
$scope.goJobModal = function (jobId) {
if(jobId){
window.history.pushState=(null, "Updating job, "/jobs?jobId=" + jobId + "#update");
} else {
window.history.pushState(null, "Creating job", "/jobs#create");
}
};
此方法仅使用window.history.pushState
更改url,然后应触发popstate事件:
$(window).on('popstate', function(){
console.log(window.location.href);
$scope.makeActionWithHashParam();
});
但是不是。