문제

나는 쓰스,하지만 사용자의 움직임에 따라 응용 프로그램을 통해 내가 좋아하는 것 주소 표시줄에 URL 을하는 업데이트 부족에도 불구하고의 페이지가 다시 로드됩니다.기본적으로,나는 그들을 위해 할 수 있 북마크에서 어떤 시점이고 그로 인하여 반환하는 현재 상태입니다.

사람들은 어떻게 취급 유지에 필수적인에서 AJAX apps?

도움이 되었습니까?

해결책

을 할 수 있는 방법은 이를 조작하는 것입 location.hash 때 AJAX 업데이트 결과는 상태에서 변경할을 신중한 URL.예를 들어,당신의 페이지의 url 은 다음과 같습니다.

http://example.com/

면 클라이언트 기능을 실행하는 코드:

// AJAX code to display the "foo" state goes here.

location.hash = 'foo';

다음 URL 은 브라우저에서 표시 될 것입 업데이트:

http://example.com/#foo

이 사용자를 허용하는 북마크"foo"상태 페이지의 브라우저를 사용하여 역사 사이에 이동합니다.

이 메커니즘이 장소에서,당신은 그런 다음 필요한 구문 분석하는 해시의 일부 URL 클라이언트 측에서 JavaScript 를 사용하는을 만들고 표시하는 적절한 초기 상태로 조각 식별자(부분 후#)지 서버로 전송됩니다.

벤 Alman 의 hashchange 플러그인 후자의 바람이 사용하는 경우 jQuery.

다른 팁

보 같은 사이트 book.cakephp.org.이 사이트는 URL 을 변경을 사용하지 않고 해시 사용 AJAX.난 어떻게 그것은 그것을 정확하게 그러나 내가 하려고 했는데 그것이다.누구나 알고있는 경우,알려주세요.

도 github.com 보고 때로 탐색에서는 특정 프로젝트입니다.

그것은 작가하고 싶어 다시 또는 그분의 방문자를 사용할 때 Ajax.그러나 사용하지 왜 HTML5 의 pushState/replaceState?

할 수 있 수정의 수정 요청 많습니다. 자연스러운 url 을,AJAX.

확인 코드에서는 최신 프로젝트:http://iesus.se/

이것은 비슷한 케빈이 무엇을 말했다.당신이 클라이언트 상태라 일부 자바 스크립트 객체를 저장할 때 국가는,당신은 직렬화체(사용 및 base64 인코딩).할 수 있는 다음 설정의 조각 href 이 문자열입니다.

var encodedState = base64(json(state));
var newLocation = oldLocationWithoutFragment + "#" + encodedState;

document.location = newLocation; // adds new entry in browser history
document.location.replace(newLocation); // replaces current entry in browser history

첫번째 방법이 치료에 새로운 국가 새로운 위치(그래서 이들을 위).후기가 없습니다.

SWFAddress 에서 작동 플래시 및 자바 스크립트로젝트를 만들 수 있습니다 bookmarkable Url 을 사용하여(해시 방법 위에서 언급한)뿐만 아니라 당신에게 뒤로 버튼을 지원합니다.

http://www.asual.com/swfaddress/

다.위치.해시 방법이 선호하는 방식으로 일하는 기업입니다.는 방법에 대한 설명,그것을 할 Ajax 패턴-한 Url.

유이가 구현의 패턴으로 모듈을 포함하는 IE 특정 작동하거나 우회하는 방법을 얻기 위해 다시 버튼과 함께 노력하고 다시 쓰고 주소를 사용하여 해시입니다. 유이 브라우저 기록 관리자.

다른 프레임워크는 유사한 구현을 뿐입니다.중요한 점은 원하는 경우 작동하는 역사와 함께 다시 쓰고 주소,다른 브라우저가 필요한 다른 방법으로 처리습니다.(이에 대한 자세한 내용은 첫 번째 문서입니다.)

즉 필요 iframe 기반으로 해킹,는 파이어 폭스를 생성 더블 역사를 사용하여 동일한 방법입니다.

는 경우 OP 또는 다른 사람들은 여전히는 방법을 찾고 할 수정 브라우저의 역사를 사용 상태를 사용하여,입니다 pushstate 및 replacestate 입니다.에 의해 제시된 수치로 표시된 IESUS,'오른쪽'을 할 수있는 방법입니다.그것의 주요한 이점을 통해 위치에 있습니다.해시는 것 같이 그것을 만들이 실제 url 을,단지 해시입니다.면 브라우저의 역사를 사용하여 해시 저장,그리고 다음 재검토와 자바 스크립트를 비활성화,응용 프로그램이 작동하지 않습 때문에,해시지 전송 서버입니다.그러나는 경우 입니다 pushstate 가 사용되고 있으며,전체 경로 서버로 전송할 수 있는 빌드를 적절하게 대응합니다.나는 보았다 예를 들어 같은 콧수염 템플릿 사용되었다 모두에 서버와 클라이언트 측.는 경우 클라이언트가 자바 스크립트를 활성화,그는 것을 얻을 물어 응답을 방지하여서는 왕복하는 서버,하지만 응용 프로그램 작업을 완벽하게 괜찮지 않고 javascript.따라서,응용 프로그램은 사용자에게 정상적으로 저하의 부재에서 javascript.

또한,나는 믿고 일부 프레임 워크를 기반으로,같은 이름으로 history.js.을 지원하는 브라우저 HTML5 사용 pushstate 으하지만,브라우저가 지원하지 않는,그것은 자동으로 사용하도록 해시입니다.

체크인 경우에는 사용자가'에서'페이지 때,당신은 url 을 클릭하고 바,자바 스크립트는 당신의 페이지입니다.을 변경하는 경우 이 url 을 바하고'ENTER'키를 누릅으로 상징'#'이내에 그 당신은 이동으로 페이지지 않고,다시 클릭하에 페이지 수로는 마우스 커서,그는 의견을 더욱 쉽게 확인 이벤트 명령(문서입니다.onkeypress)자바스크립트에서 확인할 수 있다면 그것은 입력하고 활성 javascript 한 리디렉션이 있습니다.을 확인할 수 있는 경우에는 사용자가 페이지에서 창을 가진.onfocus 확인하는 경우 그 밖으로 창입니다.onblur.

네,그것이 가능합니다.

;)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top