2013-02-20 6 views
22

프로젝트 제한으로 인해 단일 페이지 기반이고 동적 인 콘텐츠가있는 간단한 응용 프로그램을 작성하고 있습니다. 나는 동적 인 내용을 괜찮은 것으로 이해하지만, URL의 해시 값이 변경되면 div의 html을 변경하는 스크립트를 설정하는 방법을 모르겠다. JavaScript를 사용하여 URL 해시 값 변경 감지

나는 같은 일을 자바 스크립트 스크립트를 필요

URL : http://foo.com/foo.html DIV 내용 : <h1>Hello World</h1>

URL : http://foo.com/foo.html#foo DIV 내용 : <h1>Foo</h1>

어떻게 이런 일이까요?

도와주세요! 감사.

+0

http://jsfiddle.net/KZknm/1/는 [새미] (https://github.com/quirkey/sammy)에서보세요. –

+0

@Bradchristie 좋아, 내가 볼게하지만 이상적으로 나는 플러그인을 많이 사용하지 않기를 원한다. jQuery만으로 가능한가? – user115422

+0

현실적으로 봅시다. 도서관이하는 일을하는 무언가를 쓰는 데 더 많은 시간을 할애하거나 아니면 도서관을 사용하고 계속 진행하십시오. 이미 jQuery (라이브러리)를 사용하고 있습니다. 아마도 유연성을 원하고 직접 작성하지 않아도되기 때문입니다. 플러스 sammy는 자리 표시자를 삽입하고 들어오는 해시를 템플릿으로 만들 수 있습니다 (매우 융통성이 있습니다). –

답변

62

당신은 hashchange 이벤트를 수신 할 수 있습니다

$(window).on('hashchange',function(){ 
    $('h1').text(location.hash.slice(1)); 
}); 
+0

좋아, 이건 어리석은 질문처럼 보일지도 모르지만. 이것은 내가 항상이 점에서 혼란스러워하기 때문에 신체의 끝이나 머리에 들어간다. – user115422

+0

머리 속에'jquery' –

+0

@RPM 뒤에 그걸 포함 시키면 되겠니? 고마워. :) – user115422

5

개인적으로, 나는 당신에게 해시 태그를 템플릿 (자리 표시자를 추가하고이를 다시 읽을 수) 할 수있는 유연성을 제공하는 sammy을 사용하십시오. 예 :

<script src="/path/to/jquery.js"></script> 
<script src="/path/to/sammy.js"></script> 
<script> 
    $(function(){ 
     // Use sammy to detect hash changes 
     $.sammy(function(){ 
      // bind to #:page where :page can be some value 
      // we're expecting and can be retrieved with this.params 
      this.get('#:page',function(){ 
       // load some page using ajax in to an simple container 
       $('#container').load('/partial/'+this.params['page']+'.html'); 
      }); 
     }).run(); 
    }); 
</script> 

<a href="#foo">Load foo.html</a> 
<a href="#bar">Load bar.html</a> 

는 여기에서 찾을 수 있습니다 :

+0

뿐만 아니라 각도 컨트롤러 내부 작동 플러그인을 사용하여 나에게 예를 표시 할 수 있습니다 나는 시도했다 :''하지만 난 해시 태그를 변경할 때 스크립트가 아무것도 경고 나던 .. – user115422

+0

@fermionoid : 그것 doe 그런 식으로 일하지 마라. 당신은'this.get (...); '을 사용하여 변경 사항에 바인딩해야합니다. –

+0

@fermionoid : 업데이트 된 답변에 포함 된 예제를 참조하십시오. –

관련 문제