I hate <body onload="loadStars">

  • Onderwerp starter Onderwerp starter deeq
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

deeq

Gebruiker
Lid geworden
27 aug 2008
Berichten
13
Zoals de titel doet vermoeden zoek ik een alternatief voor <body onload="loadStars">

dit omdat ik het laden van deze functie nou eenmaal niet nodig ben op elke pagina, maar ik wel de de hele header include (php)
dit is de functie die geladen moet worden:
Code:
function loadStars()
{
star1 = new Image();
star1.src = "../images/site/star1.gif";
star2 = new Image();
star2.src= "../images/site/star2.gif";
}


Weet iemand een alternatieve methode hiervoor??

Bedankt alvast
 
Dit is wat je volgensmij kunt doen:
Je kunt op de pagina's die de functie wel nodig hebben
Code:
<script type="text/javascript">loadStars();</script>
plaatsen; of je kunt op een andere plaats onLoad plaaten (zoals bij
Code:
<img src="afbeelding.jpg" alt="afbeelding" onload="loadStars" />
, hoewel dat niet HTMLvalid is.)
 
thanx

Thanx man...

maar ik ga morgen uitproberen de pizza is koud en de cola op ;)
 
Laatst bewerkt:
Wat Wietze93 zegt, kan allemaal. Maar wat mooier is:

HTML:
<script type='text/javascript'>
   body.onload = loadStars();
</script>
of in het geval je de javascript direct wilt plaatsen:
HTML:
<script type='text/javascript'>
   body.onload = function(){
      star1 = new Image();
      star1.src = "../images/site/star1.gif";
      star2 = new Image();
      star2.src= "../images/site/star2.gif";
   }
</script>

Overgens werkt de image-onload niet in elke browser.


:thumb:
 
Laatst bewerkt:
Je kan ook het javascript extern plaatsen en de functie daar toevoegen.
 
Wat Wietze93 zegt, kan allemaal. Maar wat mooier is:

HTML:
<script type='text/javascript'>
   body.onload = loadStars();
</script>
Dit werk iig niet

Maar die van Wietse wel hmmm
 
Laatst bewerkt:
Dit werk iig niet

Maar die van Wietse wel hmmm

Bij het declareren van een property moet je de haakjes weg moet laten.

PHP:
window.onload = loadStars;

De functie van Wietse wordt uitgevoerd voordat de pagina geladen wordt, dit is misschien niet wat je wil.

Wanneer het script al extern staat hoef je dus geen <script> tag te gebruiken, maar de window.onload declaratie in het externe script zetten.
 
Laatst bewerkt:
window.onload is de meeste eenvoudige en juiste manier.


Daarnaast heb je nog addEventListener functies maar die si weer niet crossbrowser

Hiervoor zou ik je graag verwijzen naar jQuery. Dit is een framework die alle crossbrowser quircks voor je wegneemt. Ook de dom bewandelen is een stuk eenvoudiger

Voorbeeld gewoon js:
PHP:
window.onload = function () {
  alert('hai');
}

voorbeeld jQuery
PHP:
$(function() {
  alert('hai');
})

het mooie is dat ze allebei precies hetzelfde doen. Als de pagina geladen is zal de function uitgevoerd worden. Er is wel een verschil. jquery vuurt de functie namelijk eerder af. het is een minimaal verschil, maar toch leuk om te weten.
 
Dit is een framework die alle crossbrowser quircks voor je wegneemt
Niet helemaal waar.

Zojuist deze code moeten aanpassen omdat IE er slecht mee om ging.
PHP:
function showChanges(item_id) {
	changes = $('<div class="showChanges" title="Aanpassingen"></div>').insertAfter('#lockedProjects');
	$(changes).load('xxx.php?itemID='+ item_id).dialog({
		width: 500,
		modal: true,
		resizable: false
	});
}

jQuery is super, maar niet heilig. ;)
 
Niet helemaal waar.

Zojuist deze code moeten aanpassen omdat IE er slecht mee om ging.
PHP:
function showChanges(item_id) {
	changes = $('<div class="showChanges" title="Aanpassingen"></div>').insertAfter('#lockedProjects');
	$(changes).load('xxx.php?itemID='+ item_id).dialog({
		width: 500,
		modal: true,
		resizable: false
	});
}

jQuery is super, maar niet heilig. ;)

jep daar heb je helemaal gelijk in. Het is echt super. neemt een heleboel rotzooi voor je uithanden en doet je ook makkelijk programmeren, maar is zeker niet heilig.
 
Daarnaast heb je nog addEventListener functies maar die si weer niet crossbrowser

PHP:
function addEvent( obj, type, fn ) {
            if ( obj.attachEvent ) {
                obj['e'+type+fn] = fn;
                obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
                obj.attachEvent( 'on'+type, obj[type+fn] );
            } else
                obj.addEventListener( type, fn, false );
        },
        function removeEvent( obj, type, fn ) {
            if ( obj.detachEvent ) {
                obj.detachEvent( 'on'+type, obj[type+fn] );
                obj[type+fn] = null;
            } else
                obj.removeEventListener( type, fn, false );
        }

Ik gebruik deze functie (van de Quirksmode 'prijsvraag') dan kan je cross-browser addEvent en removeEvent gebruiken.
 
ik gebruik dan windos.onload.
de () hoever er niet achter!
gewoon ergens in je js zetten

Code:
window.onload= loadStars;
.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan