2014-02-06 4 views
2

jquery history.js가 작동하고 있지만 해시 태그를 사용하고 싶습니다. 나는 History.options.html4Mode=true 설정을 시도했으나 작동하지 않습니다.history.js가 해시 태그로 URL을 다시 쓰고 있습니다.

내가 필요한 이유는 페이지 새로 고침시 브라우저의 URL이 유효하지 않기 때문입니다. 나는 이상한 백엔드를 해결하기 위해이 URL을 요구하고 있습니다.

내가 해시 태그를 사용할 때 발생하는 것입니다 :

1) 초기 상태 : http://localhost/<script_path>/<param1>?get&file=<html_file>

2) History.pushSate(null, null, http://<script_path/<parm>?get&file=<html_file>#/<parm>/<parm>?<more parms>

3) History.pushState: http://localhost/<parm>/<parm>?<more parms>

편집 후 : 언급하는 것을 잊었다 경우 I 해시를 제거하면 파일 다음에 오는 모든 것을 완벽하게 추가합니다.

편집 2 : 내역과 jquery 간의 상호 작용 인 것 같습니다. 나는 역사가 내가 그것을주는 url을 밀고 있다고 생각한다. 지금 밟아.

편집 3 : 해결됨. 히스토리 j는이 프로젝트에서 작동하지 않습니다. location.hash를 사용해야합니다.

답변

2

기존 URL에 해시를 추가하는 것이면 location.hash으로 설정해야합니다. pushState를 사용하여 페이지를 다시로드하지 않고 pathName을 변경하십시오.

업데이트 : history.js는 이전 브라우저를 지원하기 위해 해시를 사용합니다. 따라서 해시 된 URL을 history.js로 전달하는 것은 의미가 없습니다 (예 : 구형 브라우저에서는 어떻게됩니까?).

내 제안은 다른 쿼리 문자열 매개 변수를 사용하여 새 URL을 보유하는 것입니다. (필요 없음 인코딩)

var path2 = "/script_path/param1?more=params&even_more=params"; 
var newUrl = "/script_path/param1?get&file=html_file&path=" + encodeURI(path2); 
History.pushSate(null, null, newUrl); 

...하거나 API를 활용할 수 있습니다 : 당신은 어떤 경로와 같은 값을 인코딩 할 필요가 없습니다

var path2 = "/script_path/param1?more=params&even_more=params"; 
var newUrl = "/script_path/param1?get&file=html_file"; 
History.pushSate({path: path2}, null, newUrl); 
+0

감사합니다, 링크를 클릭에 대한 작업을 수행하지만, 다시로드하지 마십시오. 제 질문은 여전히 ​​history.js가 서버와 해시 이외의 모든 것을 제거하는 이유입니다. – locoMotion

+0

나는 위대한 일을 자신의 HTML 5 플러그인을 구축했지만 html 4 브라우저를 지원해야합니다. 이 플러그 접속 식은 나가 그것을 알아낼 얻을 수있는 경우에 갈 방법 같이 보인다 O.o – locoMotion

+0

코멘트는 너무 길다, 그래서 나는 나의 응답을 새롭게했다 –

관련 문제