Javascript inopérant dans un include php

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
Shan

Javascript inopérant dans un include php

Message 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.
jv2759
Tyrannosaurus Rex
Messages : 4161
Inscription : 12 févr. 2004, 14:29

Message 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...
Inscrit sur la liste des abonner absent...
Shan

Message 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>
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Re: Javascript inopérant dans un include php

Message 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">[...]
Shan

Message 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>
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message 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.
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message par SB »

Shan

Message 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.
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message 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.
Shan

[Réglé]

Message 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.
Invité

Message 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.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités