(jQuery) Met alert wordt deel van script wel uitgevoerd
Allereerst mijn excuses voor de onduidelijke titel (Ik wist niet wat er beter bij zou passen).
Ik zal beginnen met een stuk van mijn code te laten zien:
index.php:
Dit stuk gebruik om om een pagina op te vragen en in de div #content te laten zien.
Nu heb ik ook een (sub)titel in mijn ons.php pagina.
Het probleem is dat het font dat ik voor deze titel gebruik een speciaal ingesteld font is.
Nu wilt dit font in sommige browsers wat breder/smaller zijn.
Het lijntje dat er onder zit wil ik daarom aanpassen aan de breedte van de tekst.
Hiervoor had ik het volgende bedacht:
ons.php:
#img-onzeaanpak is het id van het plaatje.
#span-onzeaanpak is het id van de span die om de tekst staat.
Opzich werkt dit prima.
Alleen het probleem is dat in sommige browsers zoals Opera en Firefox, de ene keer het plaatje veel breder is dan de andere keer.
Nu is het me opgevallen dat als ik mijn code verander in dit dat het wel werkt.
Ik denk zelf dat het komt omdat de pagina nog niet volledig is geladen, maar volgens mij hoort de document.ready() daarop te letten.
Weet iemand hoe ik dit kan oplossen?
Ik zal beginnen met een stuk van mijn code te laten zien:
index.php:
Dit stuk gebruik om om een pagina op te vragen en in de div #content te laten zien.
Nu heb ik ook een (sub)titel in mijn ons.php pagina.

Het probleem is dat het font dat ik voor deze titel gebruik een speciaal ingesteld font is.
Nu wilt dit font in sommige browsers wat breder/smaller zijn.
Het lijntje dat er onder zit wil ik daarom aanpassen aan de breedte van de tekst.
Hiervoor had ik het volgende bedacht:
ons.php:
Code (php)
1
2
3
2
3
$(document).ready(function() {
$('#img-onzeaanpak').width($("#span-onzeaanpak").width()+3);
})
$('#img-onzeaanpak').width($("#span-onzeaanpak").width()+3);
})
#img-onzeaanpak is het id van het plaatje.
#span-onzeaanpak is het id van de span die om de tekst staat.
Opzich werkt dit prima.
Alleen het probleem is dat in sommige browsers zoals Opera en Firefox, de ene keer het plaatje veel breder is dan de andere keer.
Nu is het me opgevallen dat als ik mijn code verander in dit dat het wel werkt.
Code (php)
1
2
3
4
5
2
3
4
5
$(document).ready(function() {
alert('1');
alert('2');
$('#img-onzeaanpak').width($("#span-onzeaanpak").width()+3);
})
alert('1');
alert('2');
$('#img-onzeaanpak').width($("#span-onzeaanpak").width()+3);
})
Ik denk zelf dat het komt omdat de pagina nog niet volledig is geladen, maar volgens mij hoort de document.ready() daarop te letten.
Weet iemand hoe ik dit kan oplossen?
Gewijzigd op 27/08/2013 17:20:55 door Tom aan t Goor
Misschien irrelevant, maar je stukje code om een pagina in te laden in een div kun je ook met jQuery .load() doen.
Edit::
Probeer eens $(window).ready() i.p.v. $(document).ready().
Gewijzigd op 27/08/2013 17:58:28 door Roel -
Dit heeft helaas niet geholpen.
Misschien de oplossing voor je probleem en sowieso handig om te weten:
$(document).ready() wordt uitgevoerd als de hele dom geladen is (de document structuur, je html)
window.onload wordt uitgevoerd als de hele pagina klaar is met laden, dus ook alle plaatjes, frames etc zijn geladen.
Door het gebruik van alerts heeft je pagina op de achtergrond de tijd om je plaatjes te laden waardoor het dan wel werkt.
edit:
jQuery versie:
$(document).ready() wordt uitgevoerd als de hele dom geladen is (de document structuur, je html)
window.onload wordt uitgevoerd als de hele pagina klaar is met laden, dus ook alle plaatjes, frames etc zijn geladen.
Door het gebruik van alerts heeft je pagina op de achtergrond de tijd om je plaatjes te laden waardoor het dan wel werkt.
Code (php)
1
2
3
2
3
window.onload = function(){
$('#img-onzeaanpak').width($("#span-onzeaanpak").width()+3);
}
$('#img-onzeaanpak').width($("#span-onzeaanpak").width()+3);
}
edit:
jQuery versie:
Code (php)
1
2
3
2
3
$(window).load(function() {
$('#img-onzeaanpak').width($("#span-onzeaanpak").width()+3);
});
$('#img-onzeaanpak').width($("#span-onzeaanpak").width()+3);
});
Gewijzigd op 04/09/2013 11:45:39 door Frits Katoen
Images moet je apart bekijken.
Een <img> element gaat autonoom en asynchroon zijn source (src) zoeken.
Reken er niet op dat een image volledig geladen is op $(document).ready, noch op window.onload.
En dan nog, zullen verschillende webbrowsers anders reageren.
Het zou ook een vrij slecht idee zijn.
Dan laat je de werking van jouw site afhangen van andere servers (want een <img> mag zonder probleem zijn src op andere servers zoeken).
Je wil toch niet dat jouw javascript wordt uitgeschakeld omdat er ergens een server plat ligt, waar je een logo van 15px x 15px haalt?
Er bestaan jQuery plugins. Daarmee kan je een functie laten uitvoeren op het moment dat de images echt volledig geladen zijn.
bv. deze
http://alz.so/imageloader/
Een <img> element gaat autonoom en asynchroon zijn source (src) zoeken.
Reken er niet op dat een image volledig geladen is op $(document).ready, noch op window.onload.
En dan nog, zullen verschillende webbrowsers anders reageren.
Het zou ook een vrij slecht idee zijn.
Dan laat je de werking van jouw site afhangen van andere servers (want een <img> mag zonder probleem zijn src op andere servers zoeken).
Je wil toch niet dat jouw javascript wordt uitgeschakeld omdat er ergens een server plat ligt, waar je een logo van 15px x 15px haalt?
Er bestaan jQuery plugins. Daarmee kan je een functie laten uitvoeren op het moment dat de images echt volledig geladen zijn.
bv. deze
http://alz.so/imageloader/
Waarom er niet op rekenen? Volgens de definitie hoort window.onload wel zo te werken,
volgens Mozilla dan ;)
Ik heb even snel een testje gedaan met IE10, FF23 en Chrome29 en deze drie doen het zoals gedefinieerd
volgens Mozilla dan ;)
Ik heb even snel een testje gedaan met IE10, FF23 en Chrome29 en deze drie doen het zoals gedefinieerd




