Autor Zpráva
snazimse
Profil
Zdravím,

čím dál se v jquery setkávám,s takovým to kodem,je strašně nepřehledný,a ještě bývá na jednom řádku,jako při nějaké kompilaci,jak to upravovat?
Má s tím někdo zkušenosti?Rozumíte obecně tomu co se děje v tomto kodu níže? Já to vůběc nechápu.To se snad nenaučím,ani za sto let,to je nějak kombinované s flashem,ale vůbec to nechápu? Rozumí tomu někdo? Je to fakt šílené! Dá se to upravit? Díky všem! Je to jen malá část kodu,na jednom řádku,ale strašně dlouhá,ani se to sem nedá vložit.

/*    SWFObject v2.2 <http://code.google.com/p/swfobject/> 
    is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);
mimochodec
Profil
Ten kód je podobně přehledný, jako tvoje příspěvky. Taky tam jsou odstraněné mezery a zalomení řádků, které by to udělaly čitelnějším.
V případě jquery nebo JS je účelem úspora datového objemu a znesnadnění zásahů. Dá se to udělat třeba pomocí http://jscompress.com.
juriad
Profil
snazimse:
To je záměr, aby ta knihovna byla menší.

http://jquery.com/download/ - máš na výběr ke stažení compressed a uncompressed verzi.
http://code.jquery.com/jquery-1.11.1.js - máš tam i komentáře.

K úpravám knihoven. Nedělej to, nikdy! Pak se budeš rozčilovat, že ti nefunguje tady slider tam autocomplete a onde nějaký jiný efekt.
snazimse
Profil
mimochodec:Dobře,děkuji za příspěvek.

Opačná cesta,už asi neexistuje ,že když se to nakompresuje?

Juriad: Tak co s tím,když to nejde upravit? Díky taky za objasnění! Vy by jste se v tomhle vyznal? A podotýkám,že to je tak čtvrtina ani ne celého kodu!
juriad
Profil
snazimse:
Neříkám, že to nelze upravit. Říkám, abys to nedělal. Ber knihovnu takovou, jaká je. Samotný kód jQuery by tě během vývoje vůbec zajímat neměl.
Neprogramuješ proti kódu knihovny, ale proti rozhraní knihovny. To rozhraní je detailně popsané tady: http://api.jquery.com/.
K čemu potřebuješ znát zdrojový kód jQuery? Abys věděl, co která funkce dělá? Chybně! To vše je popsané v API.
snazimse
Profil
Rozumím,díky moc za pomoc! A zpátky to vrátit do nekompresního zpracování,už asi samozřejmě není možné,že?
Radek9
Profil
snazimse:
Jistě, že jde. Může použít třeba tohle: jsbeautifier.org. Ale ve většině případů je to opravdu zbytečně, pokud je popsané API.
juriad
Profil
snazimse:
Jde to - prohlížeč to přece chápe, ale pro člověka je to dřina.
Pokud ti jde jen o jQuery, máš na webu k dispozici zkomprimovanou i originální verzi. Mezi sebou se funkčně neliší, můžeš tedy používat jen tu nekomprimovanou, ničemu to nevadí.

Tato komprese se dělá z dvou důvodů:
1) "Bezpečnost v uvozovkách" - nikomu se tomoc nechce luštit (toto není případ jQuery)
2) Kód je menší, a tedy jeho stažení do prohlížeče trvá kratší dobu. Zobrazení stránky je rychlejší.

Schválně do toho [#7] hoď http://code.jquery.com/jquery-1.11.1.min.js, uvidíš, že nevypadne nic použitelného - podívej se na jména proměnných a funkcí.
Chamurappi
Profil
Reaguji na snazimse:
čím dál se v jquery setkávám,s takovým to kodem
Uvedený kód knihovny SWFObject nemá s jQuery vůbec nic společného.


Reaguji na juriada:
K úpravám knihoven. Nedělej to, nikdy! Pak se budeš rozčilovat, že ti nefunguje tady slider tam autocomplete a onde nějaký jiný efekt.
Někdy jde naopak nefunkční skript úpravou knihovny rozběhat. Pokud se stránka uplácá z věcí, které potřebují různé verze knihovny, dobře mířený zásah může pomoct. Ale člověk tedy musí dobře vědět, co dělá… takže bych to panu snazimse nedoporučoval :-)

Abys věděl, co která funkce dělá? Chybně! To vše je popsané v API.
Ale někdy nedostatečně. Nejsou tam popsány chybové stavy a sama knihovna je nehlásí. Vzpomínám si na jeden loňský problém
snazimse
Profil
Díky moc všem za vysvětlení!

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: