Aller au contenu

Bobe

Webmaster Régulier
  • Compteur de contenus

    72
  • Inscrit(e) le

  • Dernière visite

Messages postés par Bobe

  1. Pour info, la bonne interprétation est celle de Firefox.

    Quand un bloc est positionné en absolu, le "bloc conteneur" comme le dit la documentation n'est plus le bloc parent mais le premier bloc ancêtre lui-même positionné en absolu, fixed ou relatif. Et s'il n'existe pas de tel bloc dans les ancêtres, c'est alors le bloc racine du document qui est utilisé comme référence.

    Dans le cas qui nous occupe ici, le width: 100% déclaré pour le bloc "header" est calculé par rapport à la largeur de l'élément racine, ici "html".

    Plus d'infos sur la définition de "bloc conteneur":

    http://www.yoyodesign.org/doc/w3c/css2/vis...g-block-details

    IE et Opera sont dans l'erreur en calculant la largeur du bloc positionné en absolu par rapport à celle du bloc parent dans tous les cas (sauf si le bloc parent est lui-même positionné autrement qu'en 'static').

  2. C'est faux. De plus, ob_gzhandler() vérifie déjà si le client supporte la compression des pages avant de compresser ou non les données en sortie, donc le deuxième morceau de code que donne le monsieur est tout à fait inutile.

  3. Alors.

    Je te suggère de retirer le ".html" de ton URL, il n'a aucune signification et est inutile.

    Et pour la réécriture:

    RewriteRule ^search-(.+)$ search.php?qs=$1

    (qs pour Query String)

    Et de décomposer cette chaîne dans ton script php. Ce sera plus simple et souple amha.

  4. A mon avis, elle est plus rapide (selon la version de l'interpréteur) qu'un if... else, et tout aussi lisible pour quelqu'un qui connait le langage php ;)

    <{POST_SNAPBACK}>

    En fait, elle est un petit peu plus lente qu'un bloc if...else (en ce qui concerne php du moins), mais il en faudrait des milliers dans un script pour s'en rendre compte (du moins d'après les résultats de tests qu'on m'a rapporté).

  5. J'ai fait quelques tests, j'ai remplacé:

    if ((relTarg.nodeName.toLowerCase() != 'ul') && (relTarg.nodeName.toLowerCase() != 'li') && (relTarg.nodeName.toLowerCase() != 'h2') && (relTarg.nodeName.toLowerCase() != 'a'))
    {
    hideAll();
    }

    par:

    var inSubMenu = false;
    while( relTarg.nodeType != 9 )
    {
       if( relTarg == this )
       {
           inSubMenu = true;
           break;
       }
       
       relTarg = relTarg.parentNode;
    }

    if( inSubMenu == false )
    {
       hideAll();
    }

    Mais IE veut toujours rien savoir...

    Les voies d'IE sont impénétrables :lol:

    Je referai quelques essais ce soir

  6. C'est parce que selon que tu mettes ou pas un doctype, Mozilla, de même que la plupart des autres navigateurs, utilise un mode de rendu différent.

    http://www.mozilla.org/docs/web-developer/quirks/

    Utilise ce doctype pour avoir la présentation comme prévu:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    Les navigateurs utiliseront leur mode de compatibilité (même chose si on ne met pas de doctype).

    C'est le mieux à faire en attendant de repenser la feuille de style.

    http://openweb.eu.org/articles/dimensions_boites_css/

    http://openweb.eu.org/articles/initiation_centrage/

    Ne pas oublier aussi que Mozilla par exemple, en mode standard, utilisera l'unité "pixel" pour des nombres sans précision d'unité dans la css. (eg: margin: 20;).

    http://www.mozilla.org/docs/web-developer/.../quirklist.html

  7. Bon je vais peut etre te faire vomir Bobe, mais là j'ai fait un test rapide, et j'avoue que je ne sais pas par quel bout m'y prendre...

    si tu pouvais m'indiquer au moins si je suis a peu pres sur la bonne voie et si j'ai compris ce qu'il fallait faire.

    childNodes est une collection (un tableau) tandis que target (qui n'est pas un attribut du this dans ta fonction) est un objet. Tu ne peux pas les comparer ainsi.

    L'idée est de remonter l'arbre avec parentNode jusqu'à ce qu'on tombe sur le bloc contenant tout le sous menu (celui sur lequel on enregistre les évènements mouseover et mouseout) ou que l'on arrive à l'objet document (auquel cas, on stoppe la boucle).

    Si on a trouvé sur noter chemin le bloc du sous menu, c'est qu'on est dans le sous menu, sinon, si l'on est arrivé jusqu'à l'objet document, c'est qu'on est pas/plus dans le sous menu.

    J'ai regardé ton code et je t'invite à consulter la doc officielle pour consolider un peu tes bases du DOM:

    http://www.yoyodesign.org/doc/w3c/w3c.html#dom2 (traduction française)

    Pour le modèle d'évènement, voir aussi:

    http://www.brainjar.com/dhtml/events/default.asp

    http://www.quirksmode.org/js/contents.html#events

  8. Ahh d'accord... donc il va falloir que je reflechisse à savoir comment verifier que l'on ne sors pas dans la div quand on passe du h2 au ul... hmm comme ca vite fait je vois pas, mais j'y reflechirais (si t'as une piste rapide).

    Bah... Retourne dans l'autre topic et regarde le script que j'ai fait, je gère ce problème.

    Mais continue ton script, on apprend beaucoup par la pratique :)

  9. arf <_<

    Ça veut dire que si je passe d'un lien à un autre dans un sous menu de ton exemple, les évènements mouseover et mouseout seront déclenchés quand même (ce qui est tout à fait normal), bien que l'on n'entre ni ne sorte du sous menu. Donc display mis à none puis aussitôt remis à sa valeur par défaut, donc un affichage saccadé.

    Donc il faut vérifier si on entre ou sort vraiment du sous menu pour ne modifier la propriété display que dans ces cas là, et pas quand on se balade entre les enfants du bloc sur lequel sont enregistrés les évènements mouseover et mouseout.

  10. Là, ta fonction enregistrée sur l'évènement 'mouseout' est appellée dés qu'on quitte le h2 et masque le sous menu.

    Dans le même temps, on arrive sur le premier élément du sous menu, la fonction enregistrée sur l'évènement 'mouseover' est appellée, faisant réapparaitre le sous menu.

    Cela donne une impression de saute d'affichage, d'où l'intérêt de vérifier sur l'évènement 'mouseover' qu'on vient bien d'ailleurs que d'une partie du bloc, et sur l'évènement 'mouseout', que l'on est bien entré dans une partie de la page ne faisant pas partie du bloc.

  11. je ne trouve pas ca plus facile/difficile à utiliser... la preuve je n'ai quasiment rien à modifier pour changer le comportement du menu.

    Ton menu ne fonctionne pas en mode mouseover/mouseout...

    Lorsqu'on déplace le curseur pour pointer sur un lien du sous menu ouvert, on quitte le h2 et la fonction enregistrée sur l'évènement 'mouseout' est donc appellée et referme le sous menu.

    Bon, sur ce, je continue dans l'autre topic.

  12. bah je vais vous paraitre rabats joie mais je suis pas satisfait pas votre script  :whistling:

    Oui mais ton script, lui, s'appuie sur l'évènement 'click' qui est bien plus simple à gérer que le couple mouseover/mouseout.

    C'est trop gros ;p

    faut ce qu'il faut :) Et puis une fois mis dans un fichier externe, celui-ci est mis en cache.

    J'ai pas bien saisi à quoi servait navigator.onLine. C'est quoi ?

  13. Pas d'équivalent de <script> à ma connaissance.

    Tu peux déclarer l'espace de nom de xhtml et utiliser la balise <script> dans ton fichier xml, ça devrait marcher.

    <baliseracine xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://mynamespace.org/">
    <xhtml:script xhtml:type="text/javascript" xhtml:src="monfichier.js"/>
    ...
    </baliseracine>

    Je pense que ça devrait être bon (pas sùr que l'espace de nom soit nécessaire pour les attributs de la balise <script>).

    C'est vrai qu'une instruction de traitement plus générique, genre:

    <?xml-resource type="..." href="..."?>

    serait plus pratique.

×
×
  • Créer...