2012-05-14 2 views
1

현재 YUI 브라우저 기록 관리자를 사용하여 Ajax 탐색을 추적하고 있습니다. 내가 버튼을 다시 누를 때 나는YUI 브라우저 기록 관리자 뒤로 버튼

YAHOO.util.History.navigate("state",urlhash); 

을 할 때 여기에

YAHOO.util.History.register("state",init, onStateChange); 

되고 onStateChange라고 점점 : 내가 좋아하는 역사의 객체를 등록하고있다.

onStateChange가 뒤로 버튼에서 호출되는지 또는 navigate를 호출하여 알 수 있습니까?

답변

1

때때로이 이벤트는 외부 시스템 (이 경우에는 브라우저의 뒤로 버튼)에서 호출 할 수 있으며 사용자 코드로 가끔씩 호출자가 코드 호출시 특별한 작업을 수행하도록 요구함으로써 호출자를 구별 할 수 있습니다 방법. 자신의 도우미 메서드에서 navigate() 호출을 래핑하면이 작업에 대한 합의를 유지하는 데 도움이 될 수 있습니다.

YUI 문서에서 register()는 onStateChange 핸들러 함수로 전달되는 임의의 객체 인 선택적 4 번째 매개 변수 (다른 것들 중에서)를 취할 수 있음을 알 수 있습니다. 이 객체의 속성 중 하나는 브라우저에서 시작하여 코드에서 호출되었음을 나타내는 플래그 일 수 있으며 navigate() 래퍼에서 항상 해당 플래그를 설정합니다. 핸들러에서 다시 설정해야합니다.

참고 : 저는 ExtJS와 같은 YUI에 익숙하지 않습니다. 아마도 API를 잘 아는 일부 전문가가 도움이 될 수 있지만 이는 일반적인 전략입니다. 이 대답은 navigate()를 호출하면 다른 네비게이션이 발생하기 전에 해당 핸들러를 안정적으로 실행시킬 수 있다는 잘못된 생각을하게됩니다. 이는 단일 스레드 자바 스크립트 세계에서 안전한 베팅 일 것입니다.

+0

yep .... 개체 주위에 YUI 메서드를 래핑하고 옵션 매개 변수를 사용하여 메서드를 등록했습니다. 네 번째 매개 변수로, 나는 현재 상황을 통과하고 탐색자 호출자를 추적하기 위해이 컨텍스트를 사용했습니다. 나는 곧 내 코드를 붙여 넣을 것이다. – riship89

관련 문제