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 :

[POO] pb de POO ..


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [POO] pb de POO ..
    Bonjour à tous !

    J'ai commencé la programmation d'un éditeur wysiwyg en JS. Jusque là tout va bien.
    Mon éditeur commençant à grossir, je me suis décider à le passer en POO.. mais apparemment j'ai des difficultés pour le faire fonctionner.

    Je n'ai jamais fais de POO sous JS.. je dois avoir rater un truc. Je vous donne mon code, en espérant que quelqu'un reperera l'erreur (trouvez charlie !).

    Pour info, je n'ai aucune erreur JS affichée dans mon explorateur (firefox), et la version non POO marchait sans pb.
    Dans la version POO, mon iframe d'édition apparait bien mais impossible de l'éditer (le curseur d'édition ne s'affiche pas..)

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    <html>
    <head>
    <title> Using execCommand to bold text </title>
    <script language="JavaScript">
    function Editeur(){
    	this.nomNav;
    	this.menu;
    	this.zoneTexte;
    	this.Init=initEditeur;
    	this.InitIE=editeurInitIE;
    	this.InitGecko=editeurInitGecko;
    }
     
    function initEditeur(){
    	this.nomNav = navigator.appName;
    	this.menu = new Menu();
    	this.zoneTexte = new ZoneTexte();
    	this.menu.Init(this,this.zoneTexte);
    	this.zoneTexte.Init(this,this.menu);
     
    	if (this.nomNav == "Microsoft Internet Explorer"){
    		this.InitIE();
    		this.zoneTexte.iv.execCommand('liveresize',false,true);
    	}
    	else{
    		this.InitGecko();
    	}
    }
    function Menu(){
    	this.entree;
    	this.myDivString;
    	this.posX;
    	this.posY;
    	this.linktabbtn;
    	this.myDiv; // a renommer > div du tableau dynamique
    	this.zoneTexte;
    	this.editeur;
    	this.Init=initMenu;
    }
    function initMenu(ed,zt){
    	this.entree = true;
    	this.posX = 0;
    	this.posY = 0;
    	this.linktabbtn = new Image();
    	this.linktabbtn.src = "linktabblue.jpg";
    	this.myDiv = document.getElementById('tableDyn');
    	this.ed=ed;
    	this.zt=zt;
    }
     
    function ZoneTexte(){
    	this.iv;
    	this.ifr;
    	this.viewMode;
    	this.editeur;
    	this.Init=initZoneTexte;
    	this.BoldIt=ZTBoldIt;
    }
    function initZoneTexte(ed,mn){
    	this.viewMode = 1; // WYSIWYG
    	this.ed=ed;
    	this.mn=mn;
    }
     
    function editeurInitGecko(){
    	this.zoneTexte.ifr = document.getElementById('iView');
    	//alert(this.zoneTexte.ifr+" : zoneTexte.ifr");
    	this.zoneTexte.iv = this.zoneTexte.ifr.contentDocument;
    	//alert(this.zoneTexte.iv+" : zoneTexte.iv");
    	this.zoneTexte.iv.designMode = 'On';
    	//alert(document.getElementById('iView').contentDocument.designMode+" : zoneTexte.iv.designMode");
    }
    function editeurInitIE(){
    	this.zoneTexte.ifr = iView;
    	this.zoneTexte.iv = this.zoneTexte.ifr.document;
    	this.zoneTexte.iv.designMode = 'On';
    }
     
    function ZTBoldIt(){
    	this.iv.execCommand('bold', false, null);
    }
    </script>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <iframe id="iView" style="width: 600px; height:400px" src="moniframe.html"></iframe>
    <br><br>
    <input type="button" onClick="myEd.zoneTexte.BoldIt()" value="B" />
    <div id="tableDyn">
    </div>
    <script language="javascript">
    	var myEd = new Editeur();
    	myEd.Init();
    	alert(document.getElementById('iView').contentDocument.designMode);
    	document.getElementById('iView').contentDocument.body.innerHTML="haha!";
    </script>
    </body>
    </html>
    Voila.. si vous voulez tester pour mieux vous rendre compte, il vous faudra creer une page moniframe.html vide (<html><head></head><body></body></html>)

  2. #2
    Membre confirmé Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Points : 452
    Points
    452
    Par défaut
    Dans la console javascript de firefox, j'ai l'erreur suivante :

    Erreur : uncaught exception: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIDOMNSHTMLDocument.execCommand]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: file:///C:/.../test6.html :: ZTBoldIt :: line 80" data: no]
    la ligne 80 étant : this.iv.execCommand('bold', false, null);
    dans la fonction ZTBoldIt().

    Mais malheureusement je ne sais pas comment résoudre le problème. Peut-être que quelqu'un a déjà rencontré ce genre d'erreur ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    je viens de rajouter les 2 pages allégées en fichiers joints.. pourrais-tu les tester sur IE et firefox stp ? Moi firefox ne me fait pas d'erreur JS.. alors ton exception m'intrigue...

    Merci
    Fichiers attachés Fichiers attachés

  4. #4
    Membre confirmé Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Points : 452
    Points
    452
    Par défaut
    Pour IE, ça marche ! bien joué
    Et pour Firefox, j'ai la même erreur. Dans firefox, tu fais Outils/Console javascript et tu pourras voir les erreurs.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    alors normalement maintenant ca marche
    Firefox a l air de prendre plus de temps que IE pour creer l'iframe.. et donc j'appelais l'initialisation de mon éditeur avant que la page n'ait créé l'iframe.

    J'ai mis un setTimeout sur mon initialisation et ca marche sur firefox

    Si tu veux tester remplace
    myEd.Init();
    par
    setTimeout("myEd.Init()",200);

    Voila voila, ca devrait marcher chez toi aussi

    Merci pour l'aide en tt cas

  6. #6
    Membre confirmé Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Points : 452
    Points
    452
    Par défaut
    Bien joué ça marche aussi chez moi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] requête en POO
    Par maysa dans le forum Langage
    Réponses: 7
    Dernier message: 27/02/2007, 11h50
  2. [POO] Tutaux pour POO ?
    Par Invité dans le forum Langage
    Réponses: 1
    Dernier message: 18/08/2006, 16h22
  3. [POO] Débutant en POO
    Par iomega dans le forum Langage
    Réponses: 6
    Dernier message: 05/05/2006, 17h01
  4. [POO] Mysql et POO
    Par MetaLyck dans le forum Langage
    Réponses: 5
    Dernier message: 22/03/2006, 01h58
  5. [POO] Débutant en POO, class mysql php5
    Par ouafouaf dans le forum Langage
    Réponses: 9
    Dernier message: 06/02/2006, 09h21

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