2013-10-05 12 views
7

Próbuję zrozumieć, jak JSFiddle "opakowuje" kod w "onLoad" w oparciu o ten opis: [1]: http://doc.jsfiddle.net/basic/introduction.html#javascript. Widziałem, że OnLoad jest używany w tagu BODY HTML, aby załadować funkcję (funkcje). Czy JSF (za kulisami) zawija każde wywołanie i każdą funkcję, którą tworzę w swoim oknie JS? AKA:JSFiddle wrap in onload?

onLoad = "myfunc1(),myfunc2,alert(1);" 

Jeśli tak to kiedy wybrać jQuery jako ramy, powinno się unikać tego formatu:

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

góry przepraszam jeśli pytanie twornika.

Odpowiedz

10

Umieszczają wszystkie twoje JS wewnątrz znaczników <script> z owiniętym wokół niego kodem zdarzenia onLoad.

Na przykład, jeśli użytkownik zdecyduje się zawierać jQuery i onLoad to jest to co jsfiddle użyje:

<script type="text/javascript"> 
    //<![CDATA[ 
     $(window).load(function(){ /* your js here */ }); 
    //]]> 
</script> 

Jeśli nie to biblioteka wtedy użyć:

<script type="text/javascript"> 
    //<![CDATA[ 
     window.onload=function(){ /* your js here */ } 
    //]]> 
</script> 

I Załóżmy, że używają też innych zdarzeń specyficznych dla biblioteki, w zależności od tego, co wybierzesz.

Używanie $(document).ready(function(){ }); nie jest wymagane, gdy kod jest w skrzypcach.

Uwaga: dla dobrego wyjaśnienie co CDATA jest spojrzeć na to odpowiedź - https://stackoverflow.com/a/7092306/2287470

4

To sprawia, że ​​nowy iframe, aby uruchomić kod.

Dla onload, po prostu umieścić wszystkie kodu w

window.onload = function() { 
    // your code here 
}; 

Można to zobaczyć jeśli skontrolować tag <script> w <head> w prawym dolnym elemencie iframe.


Nic złego w używaniu $(document).ready(... ale to trochę bezużyteczne, gdy włączysz opcję onLoad w jsFiddle.