IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Tracer un trait à l'event 'load' par-dessus un contenu HTML.


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Tracer un trait à l'event 'load' par-dessus un contenu HTML.
    Bonjour à tous, et merci à ceux qui voudront bien me lire.

    Je vous expose la situation que je rencontre :

    1) j'ai une page web avec un contenu HTML / JavaScript
    2) je veux tracer un trait sur le tout, dans une fonction de l'évènement load
    3) j'ai une fonction drawLine() qui permet de tracer un trait

    Voici la façon dont je m'y suis pris jusqu'à présent :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <body>	
    	<div id="trait">
    	         <!-- trait tracé dynamiquement par une fonction JavaScript -->
    	<div />
            <div id="conteneurPrincipal">
                     <!-- éléments HTML contenu -->
            </div>
    </body>

    La balise d'id trait est placée en position absolute dans le CSS. L'idée générale, était de générer une page HTML par les voix traditionnelles, avec un div absolute (trait) sorti du flux et placé en position (0,0). Immédiatement après chargement, l'évènement 'load' devait déclencher un appel à la fonction drawLine(paramètres), et le trait être tracé par-dessus les autres éléments de la page, par : document.getElementById("trait").innerHTML= leTrait; où leTrait contient un ensemble de div qui forment un trait.

    Que se passe-t-il sur ma page? Le trait est bien tracé et au bon endroit, mais il vient écraser l'ensemble des éléments de la page, il se trace donc à la place des éléments HTML de la page, qui ne sont même pas décalés vers le bas mais qui tout simplement disparaissent.

    Lorsque je fais le test de supprimer le innerHTML de la fonction drawLine, bien sûr la charge est chargée normalement (sans le trait), et lorsqu'en plus, je place du texte dans le div d'id trait, le texte s'affiche sur la page en décalant les éléments HTML vers le bas, ce qui me laisse penser que le div trait n'est pas considéré comme absolute, pourtant pour m'en assurer, j'ai directement mis l'attribut :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            <div id="trait" style="position: absolute">		
     
    	<div />

    Quelqu'un a-t-il une idée qui pourrait m'aider à résoudre mon problème? Quelqu'un a-t-il déjà rencontré ce cas de figure?

    D'avance merci, et si vous avez besoin de précisions, n'hésitez pas à les demander.

    PS : la fonction drawLine() est une fonction répandue, j'utilise cette version :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function drawLine(x1,y1,x2,y2,color,espacementPointille,divId)
    {
    	if(espacementPointille<1) { espacementPointille=1; }
            var lg=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
     
    	var nbPointCentraux=Math.ceil(lg/espacementPointille)-1;
            var stepX=(x2-x1)/(nbPointCentraux+0);
    	var stepY=(y2-y1)/(nbPointCentraux+0);
     
            var strNewPoints='';
    	for(var i=1 ; i<nbPointCentraux ; i++)
    	{
    		strNewPoints+='<div style="font-size:1px; width:1px; heigth:1px; background-color:'+color+'; position:absolute; top:'+Math.round(y1+i*stepY)+'px; left:'+Math.round(x1+i*stepX)+'px; ">&nbsp;</div>';
    	}
     
    	var myContainer=document.getElementById(divId);
    	myContainer.innerHTML = strNewPoints;
    }
    mais comme le trait se trace bien, je pense que le problème est situé en amont

    Voici également la fonction évènement 'load' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var barreLogo = document.getElementById("barreLogo");
    var partSignature = document.getElementById("partSignature");
     
    window.addEventListener('load', function() {					
     
    drawLine(barreLogo.offsetWidth,partSignature.offsetTop,barreLogo.offsetWidth+100,partSignature.offsetTop-100,"red",1,"trait");
     
    }, true);
    où barreLogo et partSignature font parti du contenu (écrasé par le innerHTML) de la page web,

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    le document.ready ne te convient pas ?

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonjour,
    erreur de code HTML
    <body>	
      <div id="trait">
        <!-- trait tracé dynamiquement par une fonction JavaScript -->
      <div /> <!-- DIV NON FERMEE -->
      <div id="conteneurPrincipal">
        <!-- éléments HTML contenu -->
      </div>
    </body>

Discussions similaires

  1. Affichage d'un div par-dessus le contenu au passage de la souris
    Par jbidou88 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 05/04/2011, 15h44
  2. Réponses: 4
    Dernier message: 15/08/2009, 14h07
  3. [W3C] Est-il possible d'afficher un div par dessus une applet ?
    Par drinkmilk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/02/2005, 10h22
  4. Réponses: 1
    Dernier message: 16/02/2005, 12h04
  5. Mettre du texte sur une vidéo(ou par dessus un tmediaplayer)
    Par souch dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/07/2004, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo