Pjax가 내 자바스크립트 플러그인을 파괴했다
3712 단어 jquery-pjax
나는 내 사이트에서 Pjax를 실현했지만, #Pjax 용기에 추가할 때마다 자바스크립트를 파괴한다.
내가 이 결론을 얻은 것은 내가 주요한 문제가 있기 때문이다.js, 모든 플러그인은 한 문서에서 초기화됩니다.준비 기능.Pjax 페이지가 소스 코드에서 로드되면 문서가 다시 로드되지 않으므로 document ready가 다시 시작되지 않습니다.
모든 초기화 플러그인에서 인트 () 라는 큰 함수를 생성할 때pjax에서 이 플러그인을 사용합니다:success는 페이지를 방문할 때마다 플러그인을 초기화합니다.이것은 나의 일부 플러그인에 약간의 오류를 초래할 것이다.
내 플러그인에는 많은 사용자 정의 플러그인이 포함되어 있다. (나는 가장 작은 코드 블록을 위해 플러그인을 만들고main.js에서 초기화했다.)
현재 #pjax 컨테이너에는 html,ckeditor,일부 데이터테이블스 등만 포함되어 있습니다.
Pjax가 해당 페이지의 #Pjax 컨테이너에서 새 페이지에서 컨텐트를 가져올 때마다 해당 페이지 컨텐트의 모든 요소가 초기화되지 않습니다.
그리고 내가 내 사이트를 왔다 갔다 할 때 사이트가 붕괴되고 모든 플러그인이 작동하지 않는다.
오류가 발생하지 않았지만, 모든 요소는 Pjax에 대응하는 페이지의 모든 '새' 요소에 연결된 내용이 없기 때문에 아무런 조작도 하지 않습니다.
이것에 대한 정보가 있습니까?나는 인터넷에서 이것에 관한 어떤 정보도 찾을 수 없다.
만약 누군가가 이 문제들을 어떻게 해결하는지에 대해 건의가 있다면 저에게 알려 주세요.
내 구조는 다음과 같습니다.
[제목]
- 일부 css 및 글꼴 파일을 포함하는 헤더 파일
[head]
[본문]
[div id= "pjax 컨테이너"]
-- 내 플러그인 및 편집기의 무작위 내용
[div]
--여기에는 모든 자바스크립트 파일이 포함되어 있습니다
[body]
[] <>
묘사
플러그인으로 대체되었습니다. 이 플러그인들은 DOM이 불러올 때만 초기화되지만 pjax에서 정상적으로 작동하지 않습니다.aax (pjax 포함) 를 사용하여 페이지에 동적으로 추가된 요소라도 모든 요소를 처리하는 플러그인을 사용해야 합니다.나는 책에서 이 함정을 묘사했다https://github.com/defunkt/jquery-pjax/issues/526#issuecomment- 101253283 및https://github.com/defunkt/jquery-pjax/issues/499#issuecomment-88880134각 DOM 로드 및
토론 #1
이벤트에서 플러그인을 다시 초기화하는 방법을 시도해 보십시오.$(document).on("ready pjax:end", function() {
// initialize plugins
})
이것은 pjax가 변환될 때마다 플러그인을 다시 초기화할 수 있도록 합니다.그러나 이것이 효과가 있는지의 여부는 플러그인 코드가 잘 설계되었는지, 그리고 같은 작은 위젯의 이중 초기화의 영향을 받지 않기 때문이다.또한 GitHub의 댓글에 HTML 코드 세션을 포함할 수 있습니다. 세 개의 '' 배경 표시줄에 묶는 방법입니다.예:
```html
<div>this is my html example</div>
```
이렇게 하면 그것들을 pjax:end
로 바꾸어서 피할 필요가 없다<>
.[]
답변 감사합니다!저는github의 초보이기 때문에 코드 세션에 대한 힌트를 제공해 주셔서 감사합니다!
이것은 플러그인이 초기화되었는지 확인하기 위해 모든 플러그인을 다시 써야 한다는 것을 의미한다. 이것은 매우 큰 일이지만, 나는 이것이 작동할 수 있다고 솔직하게 생각한다.
최신 상황을 알려드릴게요!:)
토론 #2
플러그인의 기능에 따라 다시 쓸 필요가 없을 수도 있습니다.내 위의 평론에 의하면토론 #셋
에서 그것들을 다시 초기화해서 효과가 있는지 확인해 보자.만약 이것이 더 이상 일을 망쳤다면, 페이지의 같은 작은 위젯을 여러 번 초기화하는 것이 안전하도록 플러그인을 조정할 수 있는지 확인하십시오.I'm kinda new to github so thanks for the tip about code snippets!
문제 없어요!그것은 all described here의 옆에 있고 옆에 또 다른 포맷 기교가 있다.
pjax:end
힌트 고마워요.나는 이미 시도해 보았지만, 몇몇 플러그인에 확실히 문제가 생겼다.나는 지금 다시 한 번 시도할 것이다. 나는 나의 플러그인을 조정해서 이 문제들을 해결하려고 시도할 것이다.
앞서 언급한 바와 같이, 그것들은 모두 내가 쓴 것이기 때문에, 플러그인이 어떻게 작성되었는지 이해하는 것은 결코 큰 문제가 아니다.
나는 곧 다시 한 번 시도할 것이다. 나는 너에게 최신 상황을 이해하게 할 것이다.정보 감사합니다!:)
토론 #4
해커는 pjax 용기에 모든 플러그인 초기화 함수를 추가하고 스크립트 표시로 포장합니다. 이렇게 하면 pjax가 다시 불러올 때마다 플러그인토론 #5
을 초기화합니다. 이것은 정말 해커입니까?나는 모든 응용 프로그램을 상상한다.js는 다음과 같습니다.
$(document).ready(function () {
function initilizePlugins() {
$('.plugin1').plugin1({
...
});
$('.plugin2').plugin2({
...
});
$('.plugin3').plugin3({
...
});
};
$(document).on('pjax:end', function() {
initializePlugins();
});
});
응용 프로그램에 플러그인을 통합하는 모든 사람들이 걱정할 것이다.우리 99.99% 아니야?이 일을 기록하지 않을 이유가 있습니까?토론 #6
@legshooter라는 점은 자술에서 명확하게 지적해야 합니다. 동의합니다.우리가 서류를 가지기 전에 나는 이것을 열 것이다.Reference
이 문제에 관하여(Pjax가 내 자바스크립트 플러그인을 파괴했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/defunkt/jquery-pjax/issues/560텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)