2010-02-01 6 views
0

У меня есть 2 javascripts в моей голове. Теперь я хочу разместить функцию 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

Вы бы лучше переместить весь сценарий из head в нижней части страницы, над </body>. Это сделает загрузку страницы лучше, так как загрузка javascript будет блокировать одновременную загрузку другого элемента страницы, например css и image, что более необходимо, чем код 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); 
}); 

Это позволит убедиться, что swfobject запустить после всех необходимых DOM были загружены. Если вы сделаете это за пределами блока, тогда у него может быть вероятность на запуск, все еще ожидая, что необходимый элемент DOM будет загружен на страницу, что даст неожиданный результат.

+0

Я пробовал внутри document.ready и работает отлично (на данный момент) Я просто волнуюсь, потому что я видел Бобби ван дер Слуиса ответить здесь: http://groups.google.com/group/swfobject/browse_thread/thread/5ec050c79a7b8af6 – FFish

+0

Тогда вы не должны беспокоиться. То, что сказал Бобби, заключается в том, что у самого SWFObject есть механизм для обнаружения, который DOM уже загрузил перед запуском. Он не будет иметь никакого побочного эффекта, если вы поместите код внутри готового блока jQuery в DOM. Это похоже на использование 2 механизмов безопасности, и это не повлияет на функциональность SWFObject. –

+0

Бобби сказал: «Для инициализации вашей функции SWF и внешнего интерфейса потребуется некоторое время, поэтому вызов непосредственно при загрузке DOM слишком быстр». Ну, вызывая его вне загруженного jQuery DOM, он будет загружен быстрее, потому что готовый блок jQuery DOM должен ждать, пока не будет загружен элемент DOM. Весь код вне этого блока будет запущен, даже если DOM еще не загружен. Я пишу свой код, как в моих ответах выше, и у меня нет проблем во всех современных браузерах. –