Autor Zpráva
t4nn3r
Profil
Ahoj snažím se udělat javascriptovou aplikaci, bohužel v JS se neorientuju skoro vůbec. Tento script funguje, ale nezjistil jsem jak funguje u jquery selector z proměnné. Navíc bych chtěl poradit s optimalizací, protože toho js je tam hodně a načítám hodně knihoven, což je znát v prodlevách už teď kdy tam ještě není žádný obsah..
Díky předem za jakoukoli radu, pomoc
Používám tyti knihovny:
<script type="text/javascript" src="<?= SHORT_PATH?>/public/js/jquery-1.4.1.js"></script>
<script type="text/javascript" src="<?= SHORT_PATH?>/public/js/jquery-ui-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="<?= SHORT_PATH?>/public/js/jquery.metadata.js"></script>
<script type="text/javascript" src="<?= SHORT_PATH?>/public/js/mbContainer.js"></script>
<script type="text/javascript" src="<?= SHORT_PATH?>/public/js/jquery.dataTables.js"></script>
<script type="text/javascript" src="<?= SHORT_PATH?>/public/js/tinymce/tiny_mce.js"></script>
<script type="text/javascript" src="<?= SHORT_PATH?>/public/js/jquery.json-2.2.js"></script>

(plus ještě přibydou další, ale ty už jsou malé)
 <script type="text/javascript">
 $(document).ready(function(){

     $('.top-dock-item ').hover(
            function() { $(this).addClass('top-dock-item-hover'); }, 
            function() { $(this).removeClass('top-dock-item-hover'); }
     );
     
 });

 
 function isset () 
 {
        var a=arguments, l=a.length, i=0;
            if (l===0) {
            throw new Error('Empty isset'); 
        }
        while (i!==l) {        if (typeof(a[i])=='undefined' || a[i]===null) { 
                return false; 
            } else { 
                i++; 
            }    }
        return true;
}
function GetModule (host,target)
{
    
    $.post(host, function(vystup){
        GetJSon(vystup,target);
        });
}
function GetJSon(vystup,target)
{
    
    var flag = $.evalJSON(vystup).flag;
    
    switch(flag){  
       case 'container': 

            var add = '<div id="'+$.evalJSON(vystup).id+'" class="containerPlus draggable resizable {buttons:\''+$.evalJSON(vystup).buttons+'\', skin:\'default\', width:\'800\',height:\'600\',dock:\''+$.evalJSON(vystup).dock+'\'}" style="top:300px; left:30%" icon=\'browser.png\'>'
                 +'<div class="no"><div class="ne"><div class="n">'+$.evalJSON(vystup).name+'</div></div>'
                 +'<div class="o"><div class="e"><div class="c">'
                 +'<div class="mbcontainercontent" id="mb-status-list-obsah">'+$.evalJSON(vystup).content
                 +'</div></div></div></div><div ><div class="so"><div class="se"><div class="s"> </div></div></div></div></div></div>'

            
               $(document.getElementById(target)).html(add)
               var targetdiv = $.evalJSON(vystup).id;


             $(document.getElementById(targetdiv)).buildContainers({
                 containment:"document",
                  elementsPath:"<?= SHORT_PATH?>/public/images/elements/",
                  onResize:function(o){},
                  onClose:function(o){},
                  onCollapse:function(o){},
                  onIconize:function(o){},
                  onDrag:function(o){},
                  onLoad:function(o){}
             });
              
       break;  

       case 'uierror':
       break;
     
       default:;  
    }  
    if(isset($.evalJSON(vystup).tmce))
     {
         
         tinyMCE.init({
         mode : "textareas",
         theme : "advanced",
         theme_advanced_toolbar_location : "top",
         theme_advanced_toolbar_align : "left",
         editor_selector : $.evalJSON(vystup).tmce
         });
     };
     if(isset($.evalJSON(vystup).tabs))
         {

         $(document.getElementById($.evalJSON(vystup).tabs)).dataTable( {
            "bPaginate": false,
            "bAutoWidth": false
            } );
         }   
    
}
function sendAjax(host,postdata,target)
{
    $.post(host, postdata,
               function(data){
                    GetJSon(data,target);  
               });
            
}
function handlestatusform(host,target)
{
    
 if (!$("#name").val() || $("#name").val() == "Název statusu") 
  {$("#name").val('x'); /* htmlspecialchars bug*/}
 var postdata = $("#statusform").serialize();
 sendAjax(host,postdata,target);    
}
Chamurappi
Profil
Reaguji na t4nn3ra:
protože toho js je tam hodně a načítám hodně knihoven, což je znát v prodlevách
To je snadné — vyházej knihovny.
Žádná jiná optimalizace v kódu, který uvádíš, tuhle brzdu nevyřeší.

(plus ještě přibydou další, ale ty už jsou malé)
Není důležitá jen velikost skriptů, každý další soubor = další HTTP požadavek a s ním je spojená určitá režie. Drobného zrychlení bys dosáhl, kdybys všechny ty externí JS spojil do jednoho.
peta
Profil
Viz, cham. Udelej si php script, ktery ti spoji vybrane soubory do jednoho. Tez ho muzes nechat za scriptu odmazat mezery a radky navic, ale to uz je detail. Nekde u jquery jsem videl i minimalizovanou verzi, kde to melo snad o 2/3 mene.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: