5568 sujets

Sémantique web et HTML

Bonjour,

J'ai développé un petit javascript bien ordinaire pour déplacer une image.

Tout se passe très bien... TANT QUE je ne fais aucune déclaration de DTD.

Dès que mon fichier comporte la déclaration DOCTYPE et, quel que soit la déclaration (HTML 4, strict, transit., frameset, XHTML...) je n'ai plus droit à mon animation.

Dans quel gros piège suis-je tombé ?
Modifié par aCOSwt (11 Oct 2006 - 18:21)
Administrateur
aCOSwt a écrit :

Dans quel gros piège suis-je tombé ?

Hello,

A moins de posséder certains dons de divination, je ne vois pas trop qui pourrait répondre avec aussi peu d'informations concrètes.
Merci Raphael.

En fait... comme c'est... mon premier javascript... j'avais... un peu honte de le publier ici...
D'où ma question d'ordre un peu plus général de savoir s'il existe un lien entre le DTD et les déplacements de DIVs en javascript.

En fait, la page en question est celle-ci :

http://perso.orange.fr/finis-europae/AGSE_TT/Index.html

A considérer sous Firefox à cause d'un problème non résolu impliquant IE.
Bon... Cela ne va toujours pas mieux :

Voici le début du html dans lequel le div 'DSCL' doit se déplacer onload grâce au JavaScript Layer_MoveXY:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html lang="fr-fr">

	<head>

		<meta http-equiv="content-script-type" content="text/javascript; charset=utf-8">
		<title>Index</title>
 		<script type="text/javascript" src="../JavaScripts/MenuLightsMngr.js"></script>		
		<script type="text/javascript" src="../JavaScripts/Layer_HideShow.js"></script>
		<script type="text/javascript" src="../JavaScripts/Layer_MoveXY.js"></script>

	</head>

	<body background="../Images/Decorum/FondePage.jpg"
		dir="ltr"
		onload="LoadMenuImages(7,'../Images/MenuIcons/Main',0,'');Layer_MoveXY('DSCL',5,5,13,6,30)">

		<IMG src="../Images/Decorum/TopTitleBanner.gif" alt=""
 			style="position: absolute; top: 5px; left: 5px;" width="770" height="111">
		<DIV id="DSCL" style="position: absolute; top: 500px; left: 700px; z-index: 30;">
			<IMG style="width: 114px; height: 114px"
				src="../Images/Decorum/AlternateTitleOrangeBall.gif" alt="">
		</DIV>

Et voici le JavaScript en question :

function Layer_MoveXY(layerId,x_dest,y_dest,incX,incY,speed){
			
	var	x_dist, y_dist, funcstr;
			
	if(document.getElementById){
		x_dist=x_dest-parseInt(document.getElementById(layerId).style.left);
		y_dist=y_dest-parseInt(document.getElementById(layerId).style.top);
		if(Math.abs(x_dist)<incX)
			x_dist=0;
		else
			x_dist=x_dist-(x_dist/Math.abs(x_dist))*incX;
		document.getElementById(layerId).style.left=x_dest-x_dist;
		if(Math.abs(y_dist)<incY)
			y_dist=0;
		else
			y_dist=y_dist-(y_dist/Math.abs(y_dist))*incY;
		document.getElementById(layerId).style.top=y_dest-y_dist;
		if(!(x_dist==0 && y_dist==0)){
			funcstr="Layer_MoveXY('"+layerId+"',"+x_dest+","+y_dest+","+incX+","+incY+","+speed+")";
			setTimeout(funcstr,speed);}}}	

Donc, ceci fonctionne très bien dès lors que j'omets la définition DOCTYPE.
(celle-ci ou une autre) Dès que j'intègre la déclaration... plus rien ne bouge.

Quel est donc ce diable de lien entre le DTD et mon JavaScript ?

Nota : Les autres scripts utilisés dans la page html fonctionnent très bien DOCTYPE ou pas DOCTYPE.
Modifié par aCOSwt (09 Oct 2006 - 18:17)
I am more and more perplexe !

- J'ai réécrit intégralement le JavaScript autrement.
J'en suis à ma troisième version dont le but est identique mais les calculs et les tests sont différents.
- J'ai essayé de mettre le JS dans la page HTML elle même et j'ai aussi essayé de le mettre dans un .js.
- J'ai essayé de mettre les 3 JS utilisés dans la page dans 3 .js différents et dans le même .js

RIEN N'Y FAIT ! Validome est très content de moi, mais il n'y a bien que lui !

Aucune animation dès que je spécifie un doctype !

HELP !

A vrai dire, plus ça va, (plus cela ne va pas devrais-je plutôt écrire) et plus je me demande pourquoi je m'em.. Smiley biggol avec ça !

Si tout marche très bien sans DOCTYPE, pourquoi en mettre un ?
A quels problèmes m'expose-je à ne pas en spécifier ?

Doctyper ou ne pas doctyper ! That is the question ! Au passage et dans le même état d'esprit, il y a probablement quelque chose de pourri au royaume du DTD...
Modifié par aCOSwt (10 Oct 2006 - 10:11)
Clever Florent !

Merci beaucoup de t'être donné l'effort de regarder mon code null !

Imbécile que je suis !

Au moins !

Ca y'est ! grâce à toi, moi aussi j'ai mon DOCTYPE !

Et bhé dis donc ! Je n'y croyais plus.
Héhé, c'est une erreur qu'on retrouve en CSS : IE accepte les unités, mais pas les autres.

J'ai eu le même probème que toi, j'ai aussi cherché pendant des heures Smiley lol