pushState, popState 및 location.hash 메소드를 사용하여 작은 경로를 직접 구현하세요.
본 글은 HTML5의 히스토리에서 제공하는 pushState와 replacementStateAPI를 주로 기록하고 있습니다. 마지막으로 이러한 API를 통해 소규모 라우팅을 직접 구현하세요.
window.history에서 제공하는 API는 Mozilla 문서를 참고하세요.
history에서 제공하는 pushState, replacementState API는 브라우저 히스토리 스택을 동작시키기 위한 메소드를 제공합니다.
pushState:
history.pushState(data, null, '#/page=1'); pushState接收3个参数,第一个参数为一个obj,表示浏览器 第二个参数是document.title的值,一般设定为`null` 第三个参数string,用以改变 当前url
로그인 후 복사
pushState 메소드는 URL을 변경하는 동안 새 기록 레코드를 브라우저 기록 스택에 푸시합니다.
URL을 받는 매개변수는 문자열 형식으로 현재 주소 표시줄의 URL을 변경하는 데 사용됩니다. 주의할 점은 이 매개변수가 크로스 도메인과 동일할 수 없다는 점입니다. 프로토콜, 도메인 이름 및 포트는 동일해야 합니다. 교차 도메인이 있는 경우 도메인의 경우
Uncaught DOMException: Failed to execute 'pushState' on 'History': A history state object with URL 'http://www.baidu.com/' cannot be created in a document with origin 'http://commanderXL.com' and URL
로그인 후 복사
예:
打开www.baidu.com history.pushState(null, null, '?page=1') //地址栏变成 www.baidu.com/?page=1 history.pushState(null, null, '#page=2'); //地址栏变成 www.baidu.com/#page=2
로그인 후 복사
history.replaceState(null, null, '#page=2');
로그인 후 복사
window.addEventListener('popstate', function() { });
로그인 후 복사
history.pushState({page: 1}, null, '?page=1'); history.pushState({page: 2}, null, '?page=2'); history.back(); //浏览器后退 window.addEventListener('popstate', function(e) { //在popstate事件触发后,事件对象event保存了当前浏览器历史记录的状态. //e.state保存了pushState添加的state的引用 console.log(e.state); //输出 {page: 1} });
로그인 후 복사
addRoute('/login', function() { //do something }) //路由处理 const routeHandle = (path) => { Router.forEach((item, index) => { if(item.path === path) { item.handle.apply(null, [path]); return true; } }) return false; } //拦截默认的a标签行为 document.addEventListener('click', function(e) { let dataset = e.target.dataset; if(dataset) { if(routeHandle(dataset.href)) { //阻止默认行为 e.preventDefault(); } } })
로그인 후 복사
var oldHash = location.hash; setTimeInterval(function() { if(oldHash !== location.hash) { //do something oldHash = location.hash; } }, 100);
로그인 후 복사
window.addEventListener('hashchange', function() { routeHandle(locaiton.hash); });
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
2 몇 주 전
By DDD
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전
By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7517
15


Cakephp 튜토리얼
1378
52


Steam의 계정 이름 형식은 무엇입니까?
79
11


Win11 활성화 키 영구
53
19


NYT 연결 힌트와 답변
21
66

