|
| massi | Posté le 18/11/2004 @ 22:07 |
Petite astucienne
47 Messages
| Salut a tous!
Je suis nouvelle sur ce forum, et nouvelle aussi dans la creation de site web :)
Je fais appel a vous car mon esprit est bien confus sur la question du prechargement d'images.
J'ai beaucoup d'images et je souhaiterais que des que l'on arrive sur mon site les images commencent a se charger dans le cache du navigateur pendant que l'on navigue sur le site. Tant pis si ce n'est pas fini qd on arrive sur une page ou il y a pleins d'images.
Alors j'ai inséré un code dans le HEAD de mon index.php, un mix entre php pour parcourir le repertoire et ce code javascript:
<script type="text/JavaScript">
i1 = new Image;
i1.src = "image/im1.jpg";
i2 = new Image;
i2.src = "image/im2.jpg";
</script>
-> voir le code entier en fin de message.
et ... ca marche! enfin, si on veut:
ca charge toutes les images avant de charger la page d'acceuil, et c'etait pas le but d'attendre 40 ans avant de rentrer dans le site. Evidemment je peux precharger les images de la page d'accueil en premier mais ca regle pas le probleme. Puis si on se jette sur un lien avant la fin du prechargement, ben il s'arrete et uniquement les premieres images sont chargées (ai verifié dans temporary internet files). Rigolez pas, ca ne parait pas evident au debut que ca s'arrete si on change de page!
Puis si on arrive sur le site sans passer par la page d'accueil, ben rien n'est prechargé.
Donc ca va pas du tout, c'est pourquoi je demande votre aide et conseils eclaires, a vous webmaster confirmés.
Merci bcp d'avance,
massi
PS: le code:
<?php
if ($handle = opendir('image')) {
$cpt = 1;
echo "<script type=\"text/JavaScript\">\n\n";
while (false !== ($file = readdir($handle))) {
echo "i" . $cpt . " = new Image;\n";
echo "i" . $cpt . ".src" . " = \"image/$file\";\n\n";
$cpt++;
}
echo "</script>";
closedir($handle);
}
?>
|
| |
| |
| Publicité |
|
|
| massi | Posté le 22/11/2004 à 20:21 |
Petite astucienne
47 Messages
| personne veut me donner des conseils alors ? [triste]
finalement j'ai mis mon code sur la page sommaire du site (prob la + frequentée, et c'est une page sur laquelle on s'attarde), en esperant que les visiteurs restent suffisamment longtemps dessus pour qu'un bon paquet d'images soit prechargé.
mais c'est po vraiment satisfaisant comme solution..
suis un peu pommée sur la question, si qqun se sent de m'eclairer je lui serais reconnaissante [bierre] |
| |
|
| koala01 | Posté le 23/11/2004 à 12:50 |
Astucien
4715 Messages
| Tu pourrais, pour reprendre le téléchargement, remettre le script sur chacune des pages, mais en le midifiant très legerement de manière à ce que le script vérifie la présence des fichiers dans le cache internet de ton visiteur...
Ce devrait etre quelque chose du genre
if(!file_exists(fichier)
{
//ici, tu charge l'image
}
mais je n'en suis pas sur du tout (car le javascript et moi...) |
| |
|
| massi | Posté le 23/11/2004 à 21:15 |
Petite astucienne
47 Messages
| oui c'est une bonne idée. Je viens de partir a la recherche d'un truc comme ca mais j'ai pas trouvé.
ya que des scripts pour tester la fin du chargement d'une image (mais ca colle pas terrible la) et pas pour tester sa presence dans le cache. ai aucune idée de comment on fait ca... suis pas un brin pro du javascript.
si vous une idée une idée n'hésitez pas !
massi [confus] |
| |
|
| massi | Posté le 24/11/2004 à 03:07 |
Petite astucienne
47 Messages
| ok j'ai la réponse koala01!
Tu peux pas verifier si un fichier est present dans le cache ou pas, ca c'est valable que pour les cookies.
Mais apparemment les navigateurs le font d'eux-meme et une image presente n'est pas re-telechargée... m'enfin c'est bizarre parce qu'a chaque fois je rafraichis la page ou il y a le script de prechargement ca tourne pas mal de temps.... |
| |
|
| koala01 | Posté le 24/11/2004 à 03:16 |
Astucien
4715 Messages
| A vrai dire, les navigateurs font le travail eux meme, mais si tu essaie d'exécuter un javascript sur une page HTML, il modifiera la gestion événementielle du navigateur, et tant pis si les instructions données dans le scripts sont contraire aux réglages par défaut du navigateur (et c'est d'ailleurs ce que l'on remarque tres bien avec les scripts d'ouverture de pop-up: on peut choisir de modifier completement l'apparence de la fenetre...) |
| |
|
| massi | Posté le 24/11/2004 à 03:29 |
Petite astucienne
47 Messages
| mmmmmm tu veux dire que mon script force les navigateurs a re-télécharger les images meme si elles sont deja presentes?
alors la je sais plus quoi faire ... [pleurer]
j'deconne je pleure pas encore en fait [bigsmile] |
| |
|
| koala01 | Posté le 24/11/2004 à 03:36 |
Astucien
4715 Messages
| En gros, c'est que que je voulais effectivement dire...
Mais personnellement, je t'avouerai ne pas très bien comprendre l'utilité de précharger TOUTES les images de ton site, sachant qu'avec un peu de (mal)chance, la plupart des visiteurs ne feront sans doute jamais la visite intégrale d'un seul coup.... |
| |
|
| massi | Posté le 24/11/2004 à 04:00 |
Petite astucienne
47 Messages
| oui c'est vrai, mais comme sur certaines pages il y a un paquet d'images.. c'est toujours + sympathique qd elles s'affichent presque instantanement ! alors je precharge tout pour parer toutes eventualités...
pour l'instant j'ai mis mon script sur la page principale de sommaire en esperant que les gens y restent suffisamment longtemps pour tout precharger. Quand le site s'aggrandira je ferai plusieurs rep image et je mettrai le script sur des pages de sommaire secondaires... non ?
le seul truc qui me chagrine un peu finalement c'est que ma page de sommaire ne se charge pas completement.. comment faire pour que la page se charge d'abord et que le script de prechargement soit executé apres ??
merci bcp Koala01 pour tes remarques en tout cas!
|
| |
|
| koala01 | Posté le 24/11/2004 à 09:05 |
Astucien
4715 Messages
| Il faut noter que, à mon avis, tu as lancé le javascript sur l'évenement "onload" de ta balise body...
Il existe plein d'autres attributs événementiels, dont certains s'utilisent avec body (onload : au chargement, onunload: lorsqu'on quitte la page, onexit: lorsqu'on ferme le navigateur, ...) et d'autres qui s'appliquent pour ainsi dire à toutes les balise (onclick: quand on clique sur un élément, onmouseover:quand la souris passe sur un élément, onmouseout: quand la souris quitte un élément, ondrag:quand on commence un "glisser",...)
Il me semble meme qu'il existe un attribut événementiel (mais c'est à vérifier) "onexecute", qui lance la commande lors de l'affichage de la page (une fois qu'elle est entièrement chargée)...
Ceci dit, il s'agit d'être circonspect avec le javascript:
certains *bons* navigateurs permettent de donner le choix d'activer certaines fonctions ou non, et ne supporte par défaut pas certaines foncitons "ésotériques" fournies par IE... |
| |
|
| massi | Posté le 24/11/2004 à 23:31 |
Petite astucienne
47 Messages
| suis completement d'accord qu'il faut eviter les trucs "esotériques", pour bien sure j'utilise le validator W3C.
et non en fait j'avais pas mis de onload .. (yavait besoin ?)
donc finalement j'ai mis cette fonction dans le head:
<script type="text/JavaScript">
<!--
function prechargimg() {
var doc=document;
if(doc.images){
if(!doc.precharg) doc.precharg=new Array();
var i,j=doc.precharg.length,x=prechargimg.arguments;
for(i=0; i<x.length; i++)
if (x[i].indexOf("#")!=0){
doc.precharg[j]=new Image;
doc.precharg[j++].src=x[i];
}
}
}
//-->
</script>
et ce code en fin de page:
<?php
if ($handle = opendir('image')) {
echo "<script type=\"text/JavaScript\">\n\n";
echo "<!--\n";
echo "prechargimg('logo/logo3.gif'";
while (false !== ($file = readdir($handle))) {
echo ",'image/$file'";
}
echo ")\n";
echo "//-->\n";
echo "</script>";
closedir($handle);
}
?>
et j'ai l'impression que ca va mieux... je pense que je vais faire avec. Sauf si qqun a une objection [smile]
merci bcp koala01 !
massi |
| |
|
|
| Haut de la page |