Page 1 sur 1

Javascript inopérant dans un include php

Publié : 24 févr. 2005, 12:42
par Shan
Bonjour à toute la communauté.

Voilà, n'étant pas (et de loin) un grand spécialiste de développement web, je m'adresse à vous concernant un problème de script java inopérant dans un include php.

Ce script, permet de faire apparaitre en MouseOver une image dans une bulle. Voici un site qui sert d'exemple. J'ai fais l'équivalent sur une page html chez moi et çà marche comme sur des roulettes :

Code : Tout sélectionner

(...)
<head>
<script src="scripts.js"></script>
</head>
<body>
<script language="javascript">
InitBulle();
</script>

<a onmouseover="this.background='ressources/tdfnd.gif';previsualisationGif('ressources/forum2.png')" onmouseout="this.background='';HideBulle()" class="release" href="http://un.site.com/" target="_blank">notre forum</a>
Par contre en incorporant tout cela dans un site fait en php avec la fonction include() le script ne marche plus.

J'ai pourtant pris soin de mettre dans la page d'index :

Code : Tout sélectionner

<head>
<script src="scripts.js"></script>
</head>
<body>
<script language="javascript">
InitBulle();
</script>
Et le lien avec le MouseOver dans le fichier *.php qui est includé dans la page d'index. Il n'y a pourtant pas de doublons de balise body et html.

Y a t'il quelque chose de spécifique a faire dans ce cas de figure ? Ou est l'erreur ?
Merci par avance.

Publié : 24 févr. 2005, 12:55
par jv2759
tu pourais donner le code du fichier qui fait le include (le fichier php), ainsi que le code du fichier que tu appelle exactement.

Car la ce n'est pas tres claire dans tes explication et j'ai peur que tu confonde certaine notion...

Car le php et le javascripte son deux chose completement différente. Le javascripte ce fait du coter client alors que le php ce fait du coter client.

C'est à dire que javascript ne s'occupe pas de ton include. Pour lui ce qui compte c'est le fichier html final, celui du naviguateur...

Publié : 24 févr. 2005, 14:38
par Shan
Oui, da.

Voici en premier lieu le code du fichier main.php qui sert d'index :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>EroGaki || Pervers un jour, Pervers pour toujours</title>
<LINK rel="stylesheet" type="text/css" href="ressources.css">
<script src="scripts.js"></script>
</head>

<body>
<script language="javascript">
InitBulle();
</script>
<center>
<table class="maintable" cellspacing="0">
<tbody><tr>
<td class="top" colspan="2">
<span class="extend">EroGaKi|Team</span>
</td>
</tr>
<tr>
<td class="leftcol">
<span class="titre">Navigation</span><br>
<div class="navigation">
<a OnMouseOver="return true;" href="main.php?rubrique=news">News</a><br>
<a OnMouseOver="return true;" href="main.php?rubrique=equipe">L'équipe</a><br>
<a OnMouseOver="return true;" href="main.php?rubrique=projets">Projets</a><br>
<a OnMouseOver="return true;" href="main.php?rubrique=bittorent">Bittorent</a><br>
<a OnMouseOver="return true;" href="main.php?rubrique=faq">F.A.Q</a><br>
<a OnMouseOver="return true;" href="main.php?rubrique=forum">Forum</a><br>
</div><br>
<p class="w3c">
<a href="http://frenchmozilla.sourceforge.net/" target="_blank" class="transwall"><img src="ressources/moz.png" width="80" height="15" border="0" /></a>
<br>
<a href="http://www.php.net/" target="_blank" class="transwall"><img src="ressources/Php.png" width="80" height="15" border="0" /></a>
<br>
<a href="http://www.w3.org/Style/CSS/" target="_blank" class="transwall"><img src="ressources/css.png" width="80" height="15" border="0" /></a>
<br>
</p>
<br>
</td>
<td class="rightcol">
<center>
<?php
// On récupère la rubrique passée en paramètre
if(isset($_GET["rubrique"])) $rubrique = $_GET["rubrique"];
else $rubrique = "";

// On affiche la page associée à la rubrique
switch ($rubrique)
{
case 'news':
include('news.php');
break;
case 'equipe':
include('equipe.php');
break;
case 'projets':
include('projets.php');
break;
case 'bittorent':
include('bittorent.php');
break;
case 'faq':
include('faq.php');
break;
case 'forum':
include('forum.php');
break;
default:
include('news.php');
break;
}
?>
</center>
</td></tr>
<tr>
<td class="bas" colspan="2"><span style="color:#FFFFFF">R&eacute;alisation : <acronym style="cursor: help;" title="Réalisation & Création personnelle">Shan-Drazzis</acronym> - 2005</span></td>
</tr>
</tbody>
</table>
</center>
</body></html>
Puis le code de la page a inclure, faq.php :

Code : Tout sélectionner

<div align="center"><strong>Frequently Asked Questions</strong></div>
Et si vous voulez nous parler, aucun probl&egrave;me : venez sur
<a onmouseover="this.background='ressources/tdfnd.gif';previsualisationGif('ressources/forum2.png')" onmouseout="this.background='';HideBulle()" class="release" href="http://mon.site.com/" target="_blank">notre forum</a>.
<br><br><br>
</div>

Re: Javascript inopérant dans un include php

Publié : 24 févr. 2005, 14:56
par calimo
Juste pour dire de faire attention, ce site ouvre plein de popups, alors ne faites pas comme moi, n'oubliez pas l'onglet au fond de la barre d'onglet, parce qu'au bout d'un moment Firefox finit par planter :lol:

Sinon il n'y a visiblement aucun rapport entre ton script php et le script JS, par contre :

Code : Tout sélectionner

<script src="scripts.js"></script>

<script language="javascript"> 
Si tu avais essayé de valider, tu aurais vu qu'il n'y a pas d'attribut type spécifiant tes types de script, et un attribut language déprécié.

Code : Tout sélectionner

<script src="scripts.js" type="text/javascript"></script>

<script type="text/javascript">[...]

Publié : 24 févr. 2005, 15:23
par Shan
Oui effectivement les balises que j'ai employées ne sont pas au gout du jour et de la «norme».

Mais, en employant celles que tu as spécifié ne modifie pas la problématique initiale. A savoir :

Dans une page HTML classique le MouseOver fait bien apparaitre la bulle dotée de l'image, et dans la configuration PHP et Include() çà ne fonctionne plus du tout. :?

Dans le main.php :

Code : Tout sélectionner

<head>
<script src="scripts.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
InitBulle();
</script> 
Dans le fichier includé :

Code : Tout sélectionner

<a onmouseover="this.background='ressources/tdfnd.gif'; previsualisationGif('ressources/forum2.png')" onmouseout="this.background='';HideBulle()" class="release" href="http://un.site.com/" target="_blank">ICI</a>

Publié : 24 févr. 2005, 16:03
par calimo
Tu as des erreurs dans la console javascript ?

PS : toujours rien à voir avec l'include, Firefox ne sait pas que tu as fait un include php ici, ça s'est fait sur le serveur, donc ce qui compte la page que Firefox reçoit à la fin.

Publié : 24 févr. 2005, 19:25
par SB

Publié : 24 févr. 2005, 23:01
par Shan
:D

Un grand merci pour toutes vos réponses, cela fait réellement plaisir. C'est pour cela que j'affectionne tout particulièrement le forum Geckozone, il y a toujours des réponses.

Grace à ton exemple SB, j'ai compris d'ou venais mon erreur. Enfin je pense.

1°) Tu as collé le script directement dans la page, et non pas son importation en tant que script externe. Cela aurait donc une réelle inscidence ?

2°) Je n'avais pas lu le script dans son intégralité et en faisant un copié / collé du source de ta page : cela ne marchait tj pas. En faite tu avais fait appel a ton image "Zeus.jpg" directement dedans. J'ai donc remis la variable initiale pour que ce soit dans chaque lien que l'image soit spécifiée.

Et maintenant cela marche correctement.
Encore merci.

Publié : 25 févr. 2005, 03:54
par SB
1°) Pas du tout. Je l'avais fait par réflexe de rapidité, ça allait plus vite de le copier-coller là que de créer un nouveau fichier. Je viens de le mettre dans un fichier à part pour exemple.

2°) C'est vrai j'aurais du mettre mon image dans le fichier faq pour qu'il n'y ait pas de confusion possible, c'est réparé.

3°) Au final je n'avais pas changé grand chose et le script du site d'exemple fonctionne à un détail prêt. Comme il n'y a pas de doctype sur ce type, pas de problèmes. Comme tu en as mis un, il fallait modifier

Code : Tout sélectionner

document.getElementById("bulle").style.top=posY+yOffset;
document.getElementById("bulle").style.left=finalPosX;
en

Code : Tout sélectionner

document.getElementById("bulle").style.top=posY+yOffset+"px";
document.getElementById("bulle").style.left=finalPosX+"px";
c'est à dire qu'il faut rajouter les unités aux valeurs de positionnement de l'image. Donc soit tes liens étaient faux et les images ne s'affichaient pas, soit tes liens étaient bons mais les images s'affichaient dans le coin supérieur gauche (elles étaient peut-être cachées par autre chose d'ailleurs).
J'ai refait le script pour le rendre plus léger et actuel en virant ce qui était inutile si tu veux l'utiliser. Mais attention j'ai virer aussi les fonctions popup et previsualisationtexture vu que tu n'avais pas l'air de t'en servir.

[Réglé]

Publié : 25 févr. 2005, 11:30
par Shan
Que dire de plus ?

Clair, concis et précis. Ton script fonctionne parfaitement.

Merci du temps que (tu) vous avez pris pour résoudre ce qui me semblait inextricable à mon niveau.

Publié : 26 févr. 2005, 16:46
par Invité
En continuant a chercher sur le sujet, pour le cas IE ce script ne marche pas effectivement si l'on a spécifié un doctype.

Pour qu'il marche faut que IE marche en mode compatibilité.

Au cas ou quelqu'un, hypothétiquement ai besoin de l'info un jour (pour ses recherches personnelles), regardez sur ce site l'explication.

Voilà, bye.