2010-02-01 9 views
0

내 머리 부분에 2 개의 javascript가 있습니다. 이제 첫 번째 스크립트 안에 embedSWF 함수를 배치하려고합니다. 만 나는 ..SWFObject를 JQuery에 넣는 곳

 <!-- JQUERY Functions --> 
    <script type="text/javascript"> 
     jQuery.noConflict(); 
     jQuery(document).ready(function() { 
      // alert('DOM ready'); 
     }); 
     window.onload = function() { 
      // alert('page completely loaded'); 
     } 
    </script> 

    <!-- write SWF --> 
    <script type="text/javascript"> 
     function outputStatus(e) { 
      if (!e.success) { // alert('NO flash, alternative content'); 
      } 
      else { // alert('flash embedded successfully'); 
      } 
     } 
     var flashvars = {}; 
     var params = {} 
     swfobject.embedSWF("test.swf", "album-wrap", "930", "530", "9.0.0", "js/expressInstall.swf", flashvars, params, null, outputStatus); 
    </script> 

답변

0

당신은 더 나은 </body> 위에, 페이지 하단에 head에서 모든 스크립트를 이동할 것 모르겠습니다. 그러면 로딩 자바 스크립트가 다른 페이지 요소 (예 : cssimage)의 동시로드를 차단하므로 js 코드보다 더 많이로드되므로 페이지로드가 향상됩니다.

swfobject 코드를 넣으려면 jQuery DOM 준비 블록 안에 넣는 것이 더 안전합니다.

function outputStatus(e) { 
    if (!e.success) { 
    // alert('NO flash, alternative content'); 
    } 
    else { 
    // alert('flash embedded successfully'); 
    } 
} 

jQuery(function($) { 
    // alert('DOM ready'); 
    var flashvars = {}; 
    var params = {} 
    swfobject.embedSWF("test.swf", "album-wrap", "930", "530", "9.0.0", "js/expressInstall.swf", flashvars, params, null, outputStatus); 
}); 

이렇게하면 필요한 모든 DOM이로드 된 후 swfobject이 실행되도록합니다. 블록 밖에서 처리하면 필요한 DOM 요소가 페이지에로드 될 때까지 기다리는 동안 예상치 못한 결과가 발생할 가능성이 있습니다.

+0

document.ready 안에 시도해 보았는데 괜찮습니다. (현재) Bobby van der Sluis가 회신을 보았 기 때문에 걱정이됩니다. http://groups.google.com/group/swfobject/browse_thread/thread/5ec050c79a7b8af6 – FFish

+0

그러면 걱정할 필요가 없습니다. 바비 (Bobby)가 말한 바에 따르면 SWFObject 자체에서 실행되기 전에 이미로드 된 DOM을 감지하는 메커니즘이 있습니다. jQuery의 DOM 준비 블록 안에 코드를 넣으면 아무런 부작용이 없습니다. 그것은 2 안전 메커니즘을 사용하는 것과 같습니다, 둘 다 SWFObject의 기능에 영향을 미치지 않습니다. –

+0

Bobby는 "SWF 및 외부 인터페이스 기능을 초기화하는 데 약간의 시간이 필요하므로 DOM을로드 할 때 직접 호출해야합니다." jQuery DOM 준비 블록은 DOM 요소가로드 될 때까지 대기하기 때문에로드 된 jQuery DOM 외부에서 호출하면로드 속도가 빨라진다. 이 블록 외부의 모든 코드는 DOM이 아직 완전히로드되지 않은 경우에도 실행됩니다. 위의 내 대답과 같은 코드를 작성하고 모든 현대적인 브라우저에서 문제가 없습니다. –