Forum Clubic

Charger une image AVANT un javascript... - ...alors que le JS est AVANT l'image :)

Bonjour,

Je post car j’ai un petit problème : comment faire en sorte qu’une image soit intégralement chargée avant d’exécuter un javascript ?

Voilà comment ça se présente :

home.html :


<html?gt;
<head>
</head>
<body>
<script type="text/javascript" src="http://www.monsite.com/script.php"></SCRIPT>
<a href="http://www.monsite.com"><img src="http://www.monsite.com/image.png" border="0"></a>
</body>
</html?gt;

.htaccess


Options +FollowSymLinks
RewriteEngine  on
RewriteBase    /
RewriteRule ^image.png$ /image.php [L]

image.php


<?
session_start();
session_register("masession");

$i=0;
$i++; $masession[$i]=Array("1","abc");
$i++; $masession[$i]=Array("2","def");
$i++; $masession[$i]=Array("3","ghi");

header( 'Content-type:image/png' );
fpassthru( fopen( 'image-relle.png', 'rb' ) );
exit();
?>

script.php :


<?
session_start();
$a=$masession[1][1];
$b=$masession[2][1];
$c=$masession[3][1];
unset($masession);
session_destroy();
$affichCheckSess = '
1 : '.$a.' <br>
2 : '.$b.' <br>
3 : '.$c.' <br>
';
echo "document.write(\"'.$affichCheckSess.'\");";
?>

Ce qui devrait se passer :

  1. home.html appelle image.png, qui est rerootée sur image.php.
  2. image.php crée des variables de session et affiche ensuite l’image demandée.
  3. home.html appelle script.php
  4. script.php récupère ces variables et les affiche sur home.html avant l’image.

Ce qui se passe :
script.php est appelé avant image.png, car il est placé avant sur home.html. Donc, mes variables de session ne sont pas récupérées, puisque pas encore crées.

LA QUESTION (on y vient :pt1cable: ) :

Existe-t-il un moyen de faire en sorte que image.png soit chargé par le browser AVANT script.php, qui pourtant est lui meme placé avant image.png ??

Là où ça devient presque drole : je ne peux pas mettre de code PHP sur home.html. home.html est destinée à etre hébergé sur plusieurs sites, dont certains ne peuvent employer PHP. Je doit donc trouver une autre solution. A mon avis, quelque chose à inclure dans le <head> ou dans les premieres lignes de script.php. ou alors trouver un moyen de faire “patientez” script.php jusqu’à ce qu’il détecte la création des variables de session voulue.

Des idées ??

Si qulqu’un a lu ça jusqu’au bout, j’ai déja de la chance… :smiley:

Déjà, c’est <?php pas <? (pas portable)

Ensuite, envoie directement image.php plutôt que image.png (ça revient au même, et ça évite un url rewriting), envoie des entêtes au pire.

Pour ton problème, comme tu ne communique pas de variable de session (tu suppose que c’est dans un cookie? par variable GET?) je vois mal comment il pourra les récupérer à la base…

et au passage, session_register est à éviter. Préfère $_SESSION[‘nomvariable’] …

(idem : $i++; $masession[$i] = … <=> $masession[] = …)

oui, mais si je fais ça, je ne peux pas créer mes variables de session au moment de la création de l’image. Le rewriting, c’est pour créer une variable sans en avoir l’air :slight_smile: L’utilisateur croie qu’il ne fait qu’afficher une image, et en fait, un code PHP s’exécute derrière.

Ben si : image => creation des variables de session
script => lecture de ces variables

C’est noté :slight_smile:

Mais ça ne résoud pas mon problème.

J’ai tenté de faire une boucle sur script .php (attendre jusqu’à ce que les variables créent pas image.php soit créées, mais ça ne marche pas.

Peut être un code JS qui n’execute script.php que lorsque l’image est chargée ?
Si je la précharge dans un script placé dans le <head>, ça peut aider ? la page chargerait l’image avant d’exécuter script.php (dans le body), non ?

php c’est un langage côté serveur. Tout ce que tu obtiendras à ce niveau (en faisant des boucles), c’est un timeout. Si tu veux, tu peux tenter de le faire en javascript mais rien MAIS ALORS rien ne t’assure qu’un élément soit chargé avant l’autre (c’est des threads à priori)