11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'espère que ce probleme n'a pas déja été résolu. J'ai cherché pendant une heure et n'ai rien trouvé. Il n'y a pas la possibilité de faire une recherche sur le forum?

Sinon mon probleme c'est que je n'arrive pas a utiliser la commande execCommand avec bold,italic,alignLeft et tout le tralala sur IE ( c pour faire un editeur de texte Smiley confused ). Sur Firefox ca passe très bien.
Mon code est le suivant :
this.getWindow = function()
{
	return document.getElementById(this.objname + "-iframe").contentWindow;
};

this.iniEditor = function()
{
  var win = self.getWindow();
  var doc = win.document;

  try{ doc.designMode = 'On';}
  catch(ex){
    setTimeout(function(){self.iniEditor();},50);
  }
};//iniEditor

self.bold = function()
{
    var win = self.getWindow();
    var doc = win.document;

  try
  {
     doc.execCommand("bold", false, null);
  }
  catch(ex){alert(ex["message"]);}
  win.focus();//met la fenetre en premier plan
};


Je cherche aussi a déclencher un evenement onclick lorsque je clique dans mon iframe mais ca ne marche pas. J'ai tenté sur le document puis sur le body du document de mon iframe mais pas moyen! Smiley fache

Si qqn a une tite astuce...
Merci encore pour vos futures réponses

Si qqn a des suggestions je le remercie d'avance.
Modifié par allen.shezar (11 May 2006 - 16:19)
Pour le onclick, as-tu essayé sur le contentDocument ?
Pour le reste, je ne puis pas t'aider.

P.S. La recherche sur le forum est disponible ici. Tu n'aurais normalement pas dû la louper, elle est dans le menu principal !
Merci pour ta réponse quentinC mais j'ai déja tenté le contentDocument qui entre parenthèses, ne crée pas d'objet document lorsque je regarde dans le javascript debugger de FF.
Qqn a-t-il déja réussi à mettre des events sur une iframe? j'ai tenté également de le mettre sur le body du document mais pas moyen, rien ne se passe, pas meme un alert.
Mon code est le suivant :
 
var self=this;
var w = this.getWindow();
var d = w.document;

// Crée les event mouse  -------------------------------------------------------*
      addEventListener(d.body, "click", self.OnClick);
      addEventListener(d.body, "mouseover", self.OnMouseOver);
		  addEventListener(d.body, "mouseout", self.OnMouseOut);


this.getWindow = function()
{
	return document.getElementById(this.objname + "-iframe").contentWindow;
};

self.OnClick = function(e)
{
alert("test");
// Envoie un message Close
      scManager.sendMessage("Close", " ");

};


Une question, vu que je suis pas non plus un crac du JS, on peut accrocher un evenement sur un document?une window? un body? Smiley biggol

Merci

Re:
Normalement oui?
J'ai tt essayé, du script directement dans le document de la frame ainsi que les appels de mes events sur l'iframe, son document, son body et sa fenetre. Pas moyen!
Mon code actuel:

var d = this.getWindow().document;
d.attachEvent("onfocus", self.OnClick);


Re de re (dites le si vous trouvez que je spam)
J'ai tenté un test simple d'event en dehors de mon application, voila le code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <style>
      html, body {background-color:#ffffff;}
    </style>    
    <script language = "Javascript">
    
    function init()
    {
    var iframe                    = document.createElement("iframe");
    iframe.id                     = "iframe";
    iframe.style.position         = "absolute";
    iframe.style.display          = "none";
    iframe.style.width            = 500 + "px";
    iframe.style.height           = 300 + "px";
    iframe.style.top              = 20  + "px";
    iframe.style.left             = 20  + "px";
    iframe.style.border           = "1px solid black";
    iframe.src                    = "iframe.htm";
    iframe.marginwidth            = "0 px";
    iframe.marginheight           = "0 px";
    iframe.style.overflow         = "auto";
    iframe.style.display = "block";
    document.body.appendChild(iframe);
    getWindow().document.onclick = OnClick;
    }
    
    function getWindow()
    {
	    return document.getElementById("iframe").contentWindow;
    }
    
     function OnClick()
    {
      alert("ça m'enerve !!!");
    }
    
    window.onload = init;
    
    </script>
  </head>
  <body>
  </body>
</html>

Document source de l'iframe :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html>
  <head>
    <style>
      html, body {background-color:#ffffff;}
    </style>
  </head>
  <body>
  </body>
</html>


Alors ca fonctionne sur IE mais pas sur FF!!! Why?


Re : Merci
Modifié par allen.shezar (10 May 2006 - 22:09)