Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1508 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Doctype, offetWidth et compatibilité.... besoin d'aide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Doctype, offetWidth et compatibilité.... besoin d'aide

n°1371038
namerh
Posté le 20-05-2006 à 12:53:13  profilanswer
 

il y a plein de normes, je ne comprends pas ce qui suit..
 
http://msdn.microsoft.com/library/ [...] ements.asp

Citation :

To comply with the Cascading Style Sheets, Level 1 (CSS1)  box model, Microsoft Internet Explorer 6 and later calculate the height of objects differently when you use the !DOCTYPE declaration in your document to switch on standards-compliant mode. This difference may affect the value of the offsetWidth propety. When standards-compliant mode is switched on, the width property specifies the distance between the left and right edges of the bounding box that surrounds the object's content. When standards-compliant mode is not switched on, and with earlier versions of Internet Explorer, the width property also includes the border and padding belts that surround the object's bounding box

 
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-> Mon doctype est défini comme ceci mais apparement il n'est pas "standards-compliant mode" :(
 
car d'après ce que j'observe: l'offsetwidth prend en compte l'épaisseur des "border" sous IE6 mais pas sous mozilla firefox 1.0.7
 
Que faire pour que l'offsetwidth adopte le meme comportement quelques soient les versions de navigateur ?
 
En fait comme le problème n'est pas propre à cette propriété, la question est plutot de savoir s'il y a un moyen de forcer la manière dont les navigateurs gèrent les dimensions des objets?


Message édité par namerh le 20-05-2006 à 15:56:05
mood
Publicité
Posté le 20-05-2006 à 12:53:13  profilanswer
 

n°1371053
xtof_83
Freeride Spirit
Posté le 20-05-2006 à 13:41:22  profilanswer
 

Ton doctype indiqué n'est pas complet  :o  
 
tiens j'ai trouvé ça http://perso.wanadoo.fr/coin.des.e [...] q9_64.html

n°1371099
namerh
Posté le 20-05-2006 à 14:46:13  profilanswer
 

Citation :

Sans ce doctype, le navigateur essaie de donner un sens à l'intruction litigieuse en revenant à des versions antérieures du HTML ou à des habitudes qui se sont mises en place dans les premiers navigateurs sans trop tenir compte de la norme internationale de l'époque. En général, il ne s'en tire pas trop mal parce que l'évolution du HTML s'est faite sans contradiction majeure d'une version à la suivante


 
c'est plutot handicapant de mettre le doctype.. le but n'est-il pas en effet d'écrire un code qui soit compatible avec le plus de navigateurs possibles?!
 
 
P.S. j'ai ajouté http://www.w3.org/TR/html4/loose.dtd à mon doctype: du coup plus rien de fonctionne sous IE6 et mes problèmes sous mozilla eux sont tjrs là  :ouch:

Message cité 1 fois
Message édité par namerh le 20-05-2006 à 15:52:26
n°1371140
xtof_83
Freeride Spirit
Posté le 20-05-2006 à 15:46:55  profilanswer
 

C'est que donc ton site est codé avec les pieds

n°1371148
namerh
Posté le 20-05-2006 à 15:51:57  profilanswer
 

si tu le dis.. en tous cas sur ton lien j'ai lu clairement que l'url était facultative

n°1371172
xtof_83
Freeride Spirit
Posté le 20-05-2006 à 16:31:29  profilanswer
 

j'ai pas lu mon lien ... c'est la premiere réponse google....
 
lol.. et puis c'est facultatif pour les noobs like you...

n°1371329
gatsu35
Blablaté par Harko
Posté le 20-05-2006 à 23:33:22  profilanswer
 

namerh a écrit :

Citation :

Sans ce doctype, le navigateur essaie de donner un sens à l'intruction litigieuse en revenant à des versions antérieures du HTML ou à des habitudes qui se sont mises en place dans les premiers navigateurs sans trop tenir compte de la norme internationale de l'époque. En général, il ne s'en tire pas trop mal parce que l'évolution du HTML s'est faite sans contradiction majeure d'une version à la suivante


 
c'est plutot handicapant de mettre le doctype.. le but n'est-il pas en effet d'écrire un code qui soit compatible avec le plus de navigateurs possibles?!
 
 
P.S. j'ai ajouté http://www.w3.org/TR/html4/loose.dtd à mon doctype: du coup plus rien de fonctionne sous IE6 et mes problèmes sous mozilla eux sont tjrs là  :ouch:


 
 
 
En fait il faut faire gaffe avec le doctype <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
IE garde toujours le box model microsoft, ce qui signifie que la largeur sur un block est appliquée  sur l'extérieure des bordures.
alors que sous FF qui respecte le box model W3C la largeur est appliquée sur le contenu (donc à l'interieur des paddings)
 
pour que IE se comporte de la même manière que FF alors faut utiliser le doctype avec URL
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
 
sinon un peu de lecture ne fera pas de mal : http://pompage.net/pompe/doctype/

n°1371420
namerh
Posté le 21-05-2006 à 11:00:16  profilanswer
 

gatsu35 a écrit :

IE garde toujours le box model microsoft, ce qui signifie que la largeur sur un block est appliquée  sur l'extérieure des bordures.
alors que sous FF qui respecte le box model W3C la largeur est appliquée sur le contenu (donc à l'interieur des paddings)

effectivement j'avais lu ça qque part...

gatsu35 a écrit :

pour que IE se comporte de la même manière que FF alors faut utiliser le doctype avec URL
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">


comme dit ci-dessus, lorsque j'ajoute cette url, ça fonctionne encore sous FF mais plus sour IE (les calques n'apparaissent plus, etc.)
 
P.S. j'ai pourtant fait tout mon possible pour développer selon les usages en cours actuellement, en me référant au DOM, en développant du code cross-browser..

Message cité 1 fois
Message édité par namerh le 21-05-2006 à 11:05:19
n°1371447
gatsu35
Blablaté par Harko
Posté le 21-05-2006 à 11:44:07  profilanswer
 

namerh a écrit :

effectivement j'avais lu ça qque part...
 
comme dit ci-dessus, lorsque j'ajoute cette url, ça fonctionne encore sous FF mais plus sour IE (les calques n'apparaissent plus, etc.)
 
P.S. j'ai pourtant fait tout mon possible pour développer selon les usages en cours actuellement, en me référant au DOM, en développant du code cross-browser..


 
 
Oui mais quand on développe on choisi un bon doctype :/

n°1371461
namerh
Posté le 21-05-2006 à 12:25:38  profilanswer
 

j'ai lu pas mal de doc sur le net à propos des doctypes je ne comprends toujours pas leurs intérets.. par contre les inconvénients je ne vois que ça.. incompatibilité inter-browser, incompatibilité avec les versions antérieures ce qui va à l'encontre de ce qu'on fait d'habitude :(
 
bon sinon, mon code fonctionne bien à présent sous FF et IE (avec des fonctionnalités plus avancées pour IE: forcément des effets comme celui produit par le code ci-dessous (pompé tel quel dans la MSDN) n'a pas d'équivalent sous les autres navigateurs

Code :
  1. var o= document.getElementById(id);
  2.    o.style.filter="blendTrans(duration=2)";
  3.    if (o.filters.blendTrans.status != 5) {
  4.     o.filters.blendTrans.apply();
  5.     o.style.visibility="hidden";
  6.                                                                 o.filters.blendTrans.play(); }

Mais il ne fonctionne pas sous Opera (je parle de mon script complet pas du bout de code ci dessus spécifique à IE of course, je commence à perdre patience!!!!


Message édité par namerh le 21-05-2006 à 12:27:16
mood
Publicité
Posté le 21-05-2006 à 12:25:38  profilanswer
 

n°1371462
gatsu35
Blablaté par Harko
Posté le 21-05-2006 à 12:33:08  profilanswer
 

ben colle ton code complet :spamafote:

n°1371463
namerh
Posté le 21-05-2006 à 12:37:02  profilanswer
 

il y a plusieurs pages..

n°1371465
namerh
Posté le 21-05-2006 à 12:39:46  profilanswer
 

je comprends pas j'ai appliqué les méthodes de ce site: http://www.quirksmode.org/js/events_compinfo.html
je vais revérifier mais bon j'ai fait en sorte d'écrire du code cross-browser (avec les infos de ce site) :(

n°1371480
namerh
Posté le 21-05-2006 à 12:56:44  profilanswer
 

Opera fonctionne t il sur un modèle plus proche de IE que de Mozilla?
 

Code :
  1. var mozilla = (document.all) ? false:true;


-> la variable est initialisé à false sous Opera par conséquent le code spécifique à IE celui avec les effets de filters est executé sous Opera qui forcément plante..
 
mais comment résoudre ça, ça serait sans doute possible en détectant le navigateur utilisé mais cette méthode est déconseillée d'après les docs que j'ai pu lire, il faut à la place employer des codes détecteurs comme celui ci-dessus...   la question est alors quel code est spécifique à Opera???
 
des avis?


Message édité par namerh le 21-05-2006 à 13:05:33
n°1371486
gatsu35
Blablaté par Harko
Posté le 21-05-2006 à 13:01:08  profilanswer
 

sais tu ce que signifie cette ligne ?

n°1371489
namerh
Posté le 21-05-2006 à 13:03:41  profilanswer
 

gatsu35 a écrit :

sais tu ce que signifie cette ligne ?

lol.. quand meme!
PS. pour info je débute en dév web et suis paumé par rapport aux normes etc.
 par contre je suis développeur C ;)


Message édité par namerh le 21-05-2006 à 13:04:44
n°1371494
gatsu35
Blablaté par Harko
Posté le 21-05-2006 à 13:12:31  profilanswer
 

oui mais bon :  
pour tester si un objet existe en JS on fait juste : if (mon objet)
document.all est un objet spécifique à IE et Opera
donc à cette ligne, mozilla sera true si on est sur firefox, et false pour les 2 autres navigateurs
var mozilla = (document.all) ? false:true;

n°1371513
namerh
Posté le 21-05-2006 à 13:28:34  profilanswer
 

gatsu35 a écrit :

pour tester si un objet existe en JS on fait juste : if (mon objet)


oui c'est bien le but de cette ligne... il ne reste plus qu'à écrire if (mozilla) .... mais bon voir ce que j'en dit ci-dessous...
 

gatsu35 a écrit :

document.all est un objet spécifique à IE et Opera


oui je pensais qu'il n'était spécifique qu'à IE mais je viens de m'apercevoir que ça n'est pas le cas..

gatsu35 a écrit :

donc à cette ligne, mozilla sera true si on est sur firefox, et false pour les 2 autres navigateurs
var mozilla = (document.all) ? false:true;

oui ben c'était bien l'effet recherché..
 
bon en fait, dans le reste de mon code j'ai adopté la méthodologie if (expression_qui_suit) ...
 
 
donc en fait je suis en train de modifier ça:  il faut que j'inclus la méthodologie if (expression) dans la fonction gérant les filters spécifiques à IE..
 
par contre: j'avais inclus cette fameuse ligne pour une autre raison au départ..  
la raison? c'est que je ne vois pas comment appliquer la méthodologie if (expression) pour le code suivant:
 
if (mozilla) document.captureEvents(Event.MOUSEOVER);  :??:


Message édité par namerh le 21-05-2006 à 13:35:31
n°1371522
gatsu35
Blablaté par Harko
Posté le 21-05-2006 à 13:37:47  profilanswer
 

petit rappel pour la détection des navigateur :D
document.all && window.print = IE windows
document.all && !window.print && !window.opera = IE mac
window.opera = opera
!document.all = mozilla (firefox quoi :o)
 
pour safari je ne sais pas, je n'ai pas encore eu l'occasion de faire des recherches poussées

n°1371533
namerh
Posté le 21-05-2006 à 13:55:05  profilanswer
 

gatsu35 a écrit :

petit rappel pour la détection des navigateur :D
document.all && window.print = IE windows
document.all && !window.print && !window.opera = IE mac
window.opera = opera
!document.all = mozilla (firefox quoi :o)
 
pour safari je ne sais pas, je n'ai pas encore eu l'occasion de faire des recherches poussées


ah ok je connaissais pas cette subtilité :)
 
remarque:
document.all && window.print = IE windows
document.all && !window.print && !window.opera = IE mac
j'en déduis que:
 document.all && !window.print = opera

Message cité 1 fois
Message édité par namerh le 21-05-2006 à 13:58:22
n°1371539
gatsu35
Blablaté par Harko
Posté le 21-05-2006 à 14:00:06  profilanswer
 

namerh a écrit :

ah ok je connaissais pas cette subtilité :)
 
remarque:
document.all && window.print = IE windows
document.all && !window.print && !window.opera = IE mac
j'en déduis que:
 document.all && !window.print = opera


aussi mais tu as window.opera qui te retourne true donc pour detecter opera c'est pas trop compliqué :D

n°1371545
namerh
Posté le 21-05-2006 à 14:07:12  profilanswer
 

certes certes :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Doctype, offetWidth et compatibilité.... besoin d'aide

 

Sujets relatifs
Aide en MATLABPGCD + besoin d'un coup de main Basic lol
[aide sentimentale]Comment cracker un mot de passe ?OpenCV compatibilité
problème de compatibilité Mozilla....Besoin d'aide "Tribune libre"
A l aide!!!! Compilation!!!!Aide: php et mysql
A l'aide pour une macro VBA 
Plus de sujets relatifs à : Doctype, offetWidth et compatibilité.... besoin d'aide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR