2011-01-10 2 views
4

페이지에 사용 된 jQuery의 버전을 실제로 업그레이드 할 Greasemonkey 스크립트를 작성 중입니다. 이렇게하려면 페이지에있을 수있는 다른 모든 이벤트 핸들러를 실행하는 "ready"이벤트 핸들러를 추가해야합니다.jQuery "ready"이벤트 처리기를 다른 모든 이벤트 이후에 어떻게 만들 수 있습니까?

jQuery는 준비된 이벤트 핸들러를 호출하기 전에 DOM을 조작 할 수 있기를 기다린다는 것을 알고 있으므로 실행 순서에 영향을 줄 수있는 방법이 있습니까? 감사합니다,

답변

3

등록 된 순서대로 호출됩니다. 그래서 페이지의 상단부터 하단까지. 마지막 등록 된 준비 콜백이 필요하면 body 태그의 맨 끝에 등록하십시오. $(document).ready과 대조적으로 $(window).load을 사용하십시오.

+0

감사합니다. 대부분의 jQuery 스크립트는'ready'를 사용합니다.'load'는 대개'ready' 이후 처음이므로, 이것은 제가 찾고있는 것입니다. –

+0

@SimpleCoder - 환영합니다! –

3

준비 핸들러는 readyList 배열에 추가됩니다.이 배열은 비공개이므로 사용자가 직접 영향을 줄 수 있다고 생각하지 않습니다.

당신이 할 수있는 한 가지 일은 코드를 readyList에 추가하는 것이지만 setTimeout()에 넣으십시오. 그러면 실행하기 위해 조금 기다립니다. 바라건대 다른 모든 것들이 먼저 이루어질 수 있기를 바랍니다.

그래도 jQuery를 업그레이드 할 때 문제가 발생할 수 있습니다. 예를 들어, 이벤트 처리기 및 기타 데이터를 저장하는 jQuery.cache의 구현에 차이가있을 수 있습니다.

jQuery.cache에 하나의 버전이있는 경우 다른 버전과 호환되지 않을 수 있습니다.

+1

조언 주셔서 감사합니다! –

1

How to control the order of functions being called in jQuery $(document).ready

위의 질문에 주어진 답변에 따르면, 그들은 추가 된 순서 (아약스-통화가 특정 질문에 질문보다 물에 더 많은 진흙을 추가)에 발생한다.

+0

여러분을 환영합니다! 재미있는 플러그인처럼 들리며, jQuery를 즉시 업그레이드합니다. 언젠가는 필자가 곧 Userscripts에 올 것인가? – kander

+0

물론됩니다;). 그것은 내 Gametrailers Spam Killer 스크립트 (http://userscripts.org/scripts/show/88577)의 다음 재 작성의 일부가 될 것입니다. Gametrailers는 jQuery 버전 1.3.1을 사용합니다. jQuery UI 대화 상자 및 기타 컨트롤을 추가하고 싶었고 레거시 UI 버전을 망치고 싶지 않았습니다. 내 블로그 (jQuery 참조)에서 jQuery를 업그레이드하는 방법에 대한 게시물을 작성하려고합니다. –

관련 문제