Problème JS et DOCTYPE

Fermé
Nico - 19 déc. 2007 à 01:24
 Jichin - 29 avril 2008 à 16:57
Bonjour,

Je cherchais à faire scroller une pub 160x600 sur la hauteur de mon site, pour ce faire j'ai recuperé ce code JS :

// Fonctions Javascripts
function WindowOnload(f) {
var prev=window.onload;
window.onload=function(){ if(prev)prev(); f(); }
}

function MM_findObj(n, d) { //v4.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
obj.visibility=v; }
}

// Pub Scroller
function pubscroll_makeVars() {
if(document.all) {
h=".pixelLeft=";
v=".pixelTop=";
dS="";
sdm=".style";
y="document.body.scrollTop";
x="document.body.scrollLeft";
doWidth="document.body.clientWidth";
doHeight="document.body.clientHeight"
object="scrollpub120x600";
} else if(document.getElementById){
v=".top=";
h=".left=";
dS="document.";
sdm=".style";
y="window.pageYOffset";
x="window.pageXOffset";
doWidth="window.innerWidth";
doHeight="window.innerHeight"
object="getElementById(\"scrollpub120x600\")";
}
xyz=400
pubscroll_placeIt()
}

movex=0,movey=0,xdiff=0,ydiff=0,ystart=0,xstart=0

function pubscroll_makeXY(){
innerX= ((eval(doWidth)-750)/2) + 750 + 5;
//if (innerX < 760) innerX = 760;
//innerY=eval(doHeight)-150;
//innerX = 0;
innerY = 10;
yy=eval(y);
xx=eval(x);
ydiff=ystart-yy;
xdiff=xstart-xx;
if ((ydiff<(-1))||(ydiff>(1))) movey=Math.round(ydiff/10),ystart-=movey;
if ((xdiff<(-1))||(xdiff>(1))) movex=Math.round(xdiff/10),xstart-=movex;
eval(dS+object+sdm+v+(ystart+innerY));
eval(dS+object+sdm+h+(xstart+innerX));
setTimeout("pubscroll_makeXY()",25);
//if(document.getElementById) document.getElementById("scrollpub120x600").visibility='show';
MM_showHideLayers('scrollpub120x600','','show');
}

function pubscroll_placeIt(){ ystart=eval(y); xstart=eval(x); ystart=0; xstart=0; }

function pubscroll_init () {
MM_showHideLayers('scrollpub120x600','','hide');
pubscroll_makeVars();
pubscroll_makeXY();
MM_showHideLayers('scrollpub120x600','','show');
};

Le problème c'est que ça ne marche que si j'enleve ma balise doctype, si je la garde, le scroll ne marche pas :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Quelqu'un peut il gentillement m'aider ou m'orienter ?

Merci d'avance

3 réponses

phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
19 déc. 2007 à 14:49
pfff
0
Salut,
J'ai le même probleme, ca marche sans doctype et avec non , le probleme c'est que j'en ai besoin quand même
pour ie qui pour lui c'est l'inverse , ca marche avec mais sans non , bref quelqu'un a t'il un idée ?

Merci d'avance!

mon code:

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

<html xml:lang="fr" lang="fr" xml?ns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/feuille.css" media="screen" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="css/ie.css" />
<![endif]-->
0
J'ai exactement le même probleme pour un menu horizontale, récupérant la position de ma souris afin de déplier un menu.

Sans Doctype, ça marche sous FF
Avec Doctype, ça ne marche plus :(

ps : menu fonctionnant avec prototype.js
0