2011-01-28 5 views
2

JavaScript Facebook SDK를 사용하여 xfbml 요소를 구문 분석하고 있습니다. 그러나, 나는 또한 ajax 페이지 매김을 사용한다. 여기 무슨 일이 일어나는가?XFBML 요소를 다시 파싱하지 않으려면 어떻게해야합니까?

각 요소에는 XFBML에 같은 버튼과 주석 상자가있는 요소의 첫 번째 페이지가로드됩니다. SDK의 parse 메서드를 호출하여 요소를 구문 분석합니다.

사용자가 요소의 다음 페이지를로드하면 Ajax를 통해 DOM에 추가됩니다. 그러나, 이제 구문 분석 메서드를 호출하면 첫 번째 페이지의 요소가 다시 구문 분석되므로 분명히 바람직하지 않습니다.

구문 분석 메서드는 nother 항목 루트를 제공하지만 모든 개체가 형제이기 때문에이 옵션이 아닙니다. 구문 분석에 아직 구문 분석하지 않은 요소 만 구문 분석하도록 지시하는 방법이 있습니까? 또는 이미 구문 분석 된 모든 오래된 xfbml 태그를 제거해야합니까?

+0

나는 ...... – nambrot

답변

1

FB.XFBML.parse()은 XFBML을 다시 파싱하는 데 사용할 수있는 유일한 함수이며 DOM 요소를 시작점으로 전달하거나 아무 것도 전달하지 않고 전체 DOM 구조를 구문 분석 할 수 있습니다.

이러한 옵션 만 사용할 수 있으므로 Ajax 호출을 수정하는 것이 좋습니다. Ajax 호출을 통해 최종 DOM 위치에 직접 새 요소를 삽입하고 다시 구문 분석하기가 어려워지고 <div> (또는 다른 요소)을 생성하고 Ajax 가져온 내용을로드 한 다음 FB.XFBML.parse() 내용을 적절한 위치로 이동하기 전에 <div>에? 당신은 <div>을 숨기고, 이동 수행 할 구문 분석 함수의 두 번째 콜백 매개 변수를 사용할 수 있습니다 : 나는 한동안 자바 스크립트를하지 않은

//do Ajaxy stuff here to insert new content into hidden div 'foo' 

FB.XFBML.parse(document.getElementById('foo'), function() {   
    document.getElementById('yourContent').innerHTML += document.getElementById('foo').innerHTML; 
}); 

을, 그래서 어떤 중대한 사안 구문을 용서하지만 잘하면 당신은 아이디어를 얻을.

+0

을 시도한다. 그것은 좋은 생각이다. 감사 – nambrot

관련 문제