2012-09-04 4 views
2

저는 pjax를 처음으로 사용하고있는 WordPress 사이트가 있습니다. #main 컨테이너뿐만 아니라 기본 컨테이너 외부에있는 div도 확장 할 수 있기를 원합니다. 확장 된 배경 슬라이더에 사용하고 있습니다.pjax 컨테이너로드에 스크립트 유지

배경 슬라이더는 html과 슬라이더에 대한 설정을 지정하는 script 태그를 씁니다. innerHTML을 사용하여 슬라이더의 html을 #main 컨테이너 외부의 적절한 위치로 이동할 수있었습니다 (스크립트를 유지하기 위해 jquery의 html() 대신 사용함). 그 때 스크립트 태그가 pjax 요청에서 전혀 반환되지 않는 것으로 나타났습니다.

스크립트 태그를 보관하거나 호출에서 검색 할 수있는 해결 방법이 있습니까? 내 스크립트 태그 정보를 얻기 위해 pjax를로드 한 후에 별도의 ajax 호출이 필요합니까?

감사합니다.

답변

1

이것은 좋은 질문이며 나에게 한동안 두통을 일으켰습니다.

불행히도 PJAX는 새 DOM을 처리하고 새 이벤트 처리기를 등록하지만 페이지가 자바 스크립트를 재분석하거나 다시 컴파일하지 않습니다.

즉, PJAX로로드하는 내용에 JavaScript 호출이 있으면 원본 문서에로드하기 위해 호출하는 함수가 필요합니다.

예를 들어 라이트 박스에서 더 큰 버전을 팝업하려면 onClick을 사용하여 이미지를로드 할 수 있습니다. 원본 페이지를로드 할 때 라이트 박스 JavaScript 함수를로드하는 경우에만 가능합니다.

아주 간단한 예 : 원래의 HTML 페이지에서

다음 PJAX -로드 된 내용에

<script type="text/javascript" src="lightbox.js" /> 

:

<img src="small-image.jpg" onClick="javascript:show_lightbox('big0image.jpg');" /> 

하지만 당신은 스크립트 요소가없는 경우 원본 페이지 및 PJAX로로드하려고하면 작동하지 않습니다.

관련 문제