웹 앱을 개발 중입니다. 여기에는 사용자가 카테고리 중 하나를 클릭 할 때마다 업데이트 패널이 적절한 콘텐츠를로드하는 카테고리라는 섹션이 있습니다.
사용자가 카테고리를 클릭 한 후 브라우저의 주소 표시 줄 URL을 변경하고 싶습니다.
www.mysite.com/products
같은 것에
www.mysite.com/products/{selectedCat}
페이지를 새로 고치지 않고
이를 위해 사용할 수있는 JavaScript API가 있습니까?
답변
HTML5를 사용하면 다시로드하지 않고도 URL을 수정할 수 있습니다.
브라우저의 기록에 새 게시물을 작성하려는 경우 (즉, 뒤로 버튼이 작동 함)
window.history.pushState('Object', 'Title', '/new-url');
돌아 가지 않고 URL 만 변경하려면
window.history.replaceState('Object', 'Title', '/another-new-url');
객체는 ajax 탐색에 사용할 수 있습니다.
window.history.pushState({ id: 35 }, 'Viewing item #35', '/item/35');
window.onpopstate = function (e) {
var id = e.state.id;
load_item(id);
};
자세한 내용은 http://www.w3.org/TR/html5-author/history.html을 참조하십시오.
대체 솔루션 : https://github.com/browserstate/history.js
답변
사람들이 이미 말한 내용을 추가하려면 onclick 함수에서 원하는 URL과 일치하도록 window.location.hash 속성을 편집하십시오.
window.location.hash = 'category-name'; // address bar would become http://example.com/#category-name
답변
URL로 이동하지 않고 주소 표시 줄을 완전히 다른 URL로 직접 조작하는 것은 보안상의 이유로 허용되지 않는다고 생각합니다.
www.mysite.com/products/#{selectedCat}
즉, 동일한 페이지 내의 앵커 스타일 링크는 현재 대부분의 자바 스크립트 라이브러리에있는 다양한 히스토리 / “뒤로 버튼”스크립트를 살펴 봅니다.
업데이트 패널에 대한 언급은 당신이 asp.net을 사용하고 있다고 생각하게 만듭니다.이 경우 asp.net ajax 히스토리 컨트롤은 시작하기에 좋은 곳입니다.
답변
저는 이것이 가능하지 않다고 생각합니다 (적어도 완전히 다른 주소로 변경). 주소 표시 줄의 직관적이지 않은 오용이고 피싱 공격을 조장 할 수 있기 때문입니다.
답변
이것은 당신이 말하는 방식으로 할 수 없습니다. somej.net에서 제안한 방법이 가장 가깝습니다. 실제로 AJAX 시대에는 매우 일반적인 관행입니다. Gmail조차도 이것을 사용합니다.
답변
“window.location.hash”
sanchothefat가 제안한 것처럼 그것을하는 유일한 방법이어야합니다. 이 기능을 본 모든 장소에서 URL의 # 다음에 항상 있습니다.