Da tudi jaz zacnem z mojim doprinosom za narodov blagor ;)
Izpostavil sem vprasanje o performancu spletnih strani in predstavljam vam eno od resitev kako zadevo optimizirat.
Gre za primer ko na spletni strani vkljucujete eksterne Javascripte, oziroma zelite manipulirati z DOM-om takoj ko se ta nalozi. V primeru da se skripta klice tik pred </body> tagom ni nobenih problemov, saj se je HTML ze v celoti nalozil in zrenderiral. Stala nastane takrat kadar skripto vkljucimo v <HEAD> (recimo da jo tam tudi rabimo) saj se vse kar je pod <script> tagom ne renderira dokler se celotna skripta ne nalozi, kar pomeni da je celotna stran v zastoju oziroma v cakanju.
Vsi poznamo event window.onload tako da ne bom prevec razglabljal o tem. Ce uporabljate kaksen drug Javascript framework (prototype, scriptaculous) boste ze vedli kaj uporabit ;)
V primeru da pa ne rabite cakat da se nalozi celotna stran (HTML + slike), lahko uporabite resitev DEXAGOGO's FastInit library katera poskrbi da se inicializacijse fukncije klicejo takoj ko je browserjev DOM na voljo.
Klicemo funkcijo Load.JScript (JSON - i like it) ki v head section nalozi javascript datoteko katere source podamo kot parameter
Izvolite!
<HEAD>
<script type="text/javascript" language="JavaScript">
var Load = {
JScript: function (url_)
{
// We are preventing loading a file already loaded
var _script = document.getElementsByTagName("script");
var _head = document.getElementsByTagName("head")[0];
// Loop through the length of the links
for( i = 0; _script.length > i; i++)
{
// If the href is already present, remove it
if (_script*["href"] == url_)
{
_head.removeChild(_script*);
}
}
// Build script element
var _elscript = document.createElement("script");
_elscript.setAttribute("language", "javascript");
_elscript.setAttribute("type", "text/javascript");
_elscript.setAttribute("src", url_);
// Add script
_head.appendChild(_elscript);
}
};
function loadJs() {
Load.JScript('http://www.dolpoteg.com/nalagam-se-na-koncu.js');
}
window.onload = loadJs;
/*
//ce uporabljamo FastInit
FastInit.addOnLoad(loadJs);
*/
</script>
</HEAD>**