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 :

Fonction javascript et 100%


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut Fonction javascript et 100%
    Bonjour.

    J'ai une fonction javascript comme ceci.

    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
    19
    20
    21
    initialize: function(element, options) {
    		this.options = Object.extend({
    			width:				'300px',
    			height:				'200px',
    			changeTransition:	Fx.Transitions.Bounce.easeOut,
    			duration:			1000,
    			mouseOverClass:		'active',
    			activateOnLoad:		'first',
    			useAjax: 			false,
    			ajaxUrl: 			'',
    			ajaxOptions: 		{method:'get'},
    			ajaxLoadingText: 	'Loading...'
    		}, options || {});
     
    		this.el = $(element);
    		this.elid = element;
     
    		this.el.setStyles({
    			height: this.options.height,
    			width: this.options.width
    		});
    Sous firefox si je lui passe du 100% en width et height tout marche bien, mais sous IE6, de mettre du 100% fait que cela n'affiche plus rien et génère une erreur.

    Comment faire du 100% dans une fonction javascript et sous IE6 donc?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Es-tu sur que l'erreur en question est liée à la valeur en % ?

    Arrives-tu à reproduire l'erreur sous IE sans prototype avec
    juste un js qui aurait:

    document.getElementById('...').style.width = '100%';
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  3. #3
    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
    merci de préciser que tu utilise la librairie prototype ???

    as tu essayé d'echapper le % ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Merci à vous deux pour vos réponses mais je ne suis pas doué en javascript.
    Pour étayer mon problème.

    Quand je crée un objet de la classe avec des % sous IE rien ne s'affiche alors que dès que je me met en pixel cela s'affiche bien.

    Sinon j'utilise mootols couplé à mootabs http://www.silverscripting.com/mootabs/

    Si vous voulez d'autres renseignements n'hésitez pas.

  5. #5
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Salut.

    Quelques points de détail concernant ce genre de problèmes avec IE6 (et 7 aussi, au passage).
    - en utilisant pour les dimensions d'un objet dans la feuille de style un pourcentage, ou en l'affectant dynamiquement en JS, le résultat est identique, pas besoin d'un objet créé en JavaScript : lors de l'affichage initial, tout marche quasiment Ok.
    EN REVANCHE, si la taille de l'objet doit être dynamiquement modifiée à cause de l'ajout/modification d'un autre objet dont la taille interagit sur l'objet qu'on observe, le comportement devient très étrange.
    exemple :
    Supposons une page assez simple :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
      <head>...</head>
      <body>
        <table>
          <tr><td><img src="__.png" id="monImage" alt="---"></td></tr>
        </table>
      </body>
    </html>
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #monImage {
      border: 1px solid red; /* for debug purpose */
      background: yellow;
      width: 100%;
      height: 32px;
    }
    En ajoutant un autre <td/> à la ligne, la taille du conteneur de l'image s'adapte bien (le cadre de mon image prend les bonnes dimensions), mais le contenu, lui prend ses proportions par défaut, prenant pour référence de taille la hauteur ici donnée en pixels et le reste du cadre rempli par la couleur de fond.

    Devant ce problème, j'utilise donc une fonction qui doit me redimensionner systématiquement les images concernée lorsque celà est nécessaire.

    ATTENTION, IE ne fait rien si on lui assigne comme nouvelle valeur la même que l'ancienne. Il est donc nécessaire d'opérer en deux phases, tout d'abord, donner une taille différente de la taille voulue aux éléments, puis leur assigner à nouveau la taille souhaitée.

    En essayant, j'ai remarqué que IE ne faisait que le premier redimensionnement si je ne mettais pas un "alert('')" entre les deux instructions. Si cette solution est envisageable pour débugger les pages, elle ne me semble pas l'être pour un environnement de recette/production. Peut-être MSIE doit-il effectuer un redraw complet avant de pouvoir modifier à nouveau les valeurs ?

    Merci à tous ceux qui pourront apporter d'autres précisions dont je serais preneur

Discussions similaires

  1. Appel de fonction javascript
    Par lepierre dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/11/2004, 14h28
  2. Réponses: 5
    Dernier message: 13/08/2004, 15h40
  3. Réponses: 4
    Dernier message: 02/06/2004, 16h35
  4. Réponses: 11
    Dernier message: 10/05/2004, 10h49
  5. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 06/05/2003, 14h24

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