2

전제 조건 플러그인 스크립트가로드되기 전에 겉보기에 내 $(function() {...}) 핸들러가 실행되기 때문에 JS 오류가 발생합니다. IE에서만 발생합니다 (IE7에서 테스트). 다음과 같다, 플러그인 스크립트가로드되기 전에 .ready (function() {...})가 실행됩니다.

<script type="text/javascript" src="../resources/org.wicketstuff.jwicket.JQuery/jquery-1.4.2-special.js"></script> 
... 
<script type="text/javascript" id="noConflict"><!--/*--><![CDATA[/*><!--*/ 
jQuery.noConflict(); 
/*-->]]>*/</script> 
... 
<script type="text/javascript" src="../resources/com.csc.aims.wicket.components.collapsiblefieldset.CollapsibleFieldsetBehavior/jquery.collapsiblefieldset.js"></script> 
<link rel="stylesheet" type="text/css" href="../resources/com.csc.aims.wicket.components.collapsiblefieldset.CollapsibleFieldsetBehavior/jquery.collapsiblefieldset.css" /> 
<script type="text/javascript"> 
jQuery(function(){ 
jQuery('#collapse119').collapse({"iconClosedUrl":"../resources/img/white_plus","iconOpenUrl":"../resources/img/white_minus"}); 
}); 
</script> 

그래서 HTML 코드에 따라 순서를주의 :

나는 다음과 같습니다 내 <head>에 일부 HTML을

  1. JQuery와-1.4.2- special.js
  2. jQuery.noConflict()
  3. jquery.collapsiblefieldset.js //을 정의 전화 $ .fn.collapse
  4. jQuery ('# collapse119'). 축소 (...)가 호출됩니다.

이 코드가 FF로 실행되면 모든 것이 정상적으로 작동합니다. IE7 (또는 IE8 w/Compat. View : IE7 표준 모드)에서 테스트 할 때 자바 스크립트 오류가 발생합니다. 디버거에서 jQuery.fn.collapse가 정의되지 않았 음을 알 수 있습니다.

IE8 개발자 도구를 사용하여 jquery.collapsiblefieldset.js를 봅니다. 목록에있는 스크립트를 볼 수 있지만 스크립트가로드되어 있지 않기 때문에 중단 점을 설정할 수 없다고 도구가 알려줍니다.

내 $() 준비 처리기를 실행하기 전에 collapsiblefieldset.js가로드되지 않는 이유는 무엇입니까? 모든 통찰력은 인정 될 것입니다! 감사.

답변

4
대신

$(document).ready(function(){...}); 

의 동의어입니다

$(function(){...}); 

을 사용하고

, 페이지 로딩 순서대로 나중에 화재

$(window).load(function(){...}); 

을 시도 할 수 있습니다.

+0

고마워요! 이것은 유망한 것으로 보인다. 나는 그것을 월요일에 시험해 볼 것이다 – RMorrisey

+1

나는 그것이 타이밍 문제라고 생각하는 것으로 착각되었다. 내가 얻은 오류는 문제의 외부 .js 파일에서 구문 오류 인 실제 문제를 가리는 것이 었습니다. 창로드 이벤트에 명령 스크립트를 지정하면 근본적인 문제가 노출 된 것으로 보입니다. – RMorrisey

1

모든 스크립트를 페이지 하단, 즉 </body> 태그 바로 앞에 붙여주십시오.

그래도 해결되지 않으면 시간에로드되지 않는 스크립트를 <head>으로 옮기고 나머지 스크립트는 맨 아래에 두십시오.

+0

웹 프레임 워크를 사용하면 의 하단에 쉽게 넣을 수 없습니다. collapsiblefieldset.js가 에 있고 위젯이 정의 된 지점에서 본문에 jQuery 준비 핸들러가 내려졌습니다. 이것은 문제를 해결하지 못하는 것 같습니다. – RMorrisey

+0

또한이 페이지에서 실행되는 많은 다른 스크립트가 있습니다. 가장 비싼 것은 $() 준비 핸들러에서 발생한다. 관련성이 있는지 확실하지 않습니다. – RMorrisey

+0

IE8의 개발자 도구를 사용하여 Javascript 코드를 디버깅하고 디버깅해야하는 것처럼 보입니다. http://coolwebdeveloper.com/2009/03/fantastic-new-javascript-debugging-tool-with-ie-8-and-its-list-of-features-hard-to-live-without/ –

0

이 문제로 고통받는 다른 사람에게는 jQuery에 대한 다중 참조가 없는지 이중으로 확인하는 것이 좋습니다. 머리글에 정의 된 플러그인이 있으면 본문의 두 번째 jQuery 호출에 의해 무시됩니다.