Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/09/2007, 10:42
iPunto
 
Fecha de Ingreso: noviembre-2004
Mensajes: 92
Antigüedad: 20 años, 5 meses
Puntos: 0
Eventos controlados desde un objeto

Tengo el siguiente objeto en javascript:

Código:
function oEditor (aNombreEditor) {
	
  this.Nombre=aNombreEditor
  this.Navegador=new oNavegador();
  this.Contenido="";
  this.ContenidoHTML="";
  this.LineaActual=0;
  this.ColumnaActual=0;
  this.SelectorActual="";
	
  //Métodos
  this.OnTecla = OnTecla;
  this.ActivarEditor= ActivarEditor;

  //Ver si es editable
  if (document.getElementById && document.designMode && !this.Navegador.esSafari && !this.Navegador.esKonqueror) {
    this.esEditable= true;
  } else {
		this.esEditable= false;
	}
	
	//Incluir iframe con el Editor
  if(this.esEditable){			
    document.writeln('<div id="iVerLineas" style="float:left;"></div>');
    document.writeln('<iframe id="' + aNombreEditor + '"></iframe>');
  }else{
	 //No funciona el aplicativo. LLamar a página de error.
  }
El cual creo del siguiente modo:

Código:
...
<body>
<script language= "JavaScript" type= "text/javascript" src= "Aplicacion.js" ></script>
<script language= "JavaScript" type= "text/javascript" >
    Ed= new oEditor("iEditor");
    Ed.ActivarEditor();
</script>
</body>
...
En el método ActivarEditor pongo el iframe en modo edición, y le intento asignar un evento para cuando se pulsa una tecla.

Código:
function ActivarEditor() {
  //Pasar a modo diseño 
  if (this.Navegador.esIE) {
    Ed = document.getElementById(this.Nombre).contentWindow.document;
    Ed.write('<html><head></head><body></body></html>');				
    Ed.designMode = "on" ;  
    Ed.attachEvent('onkeyup', this.OnTecla);	
  }
  else {
    Ed = document.getElementById(this.Nombre).contentDocument;
    Ed.write('<html><head></head><body></body></html>');				
    Ed.designMode = "on" ;	
    Ed.addEventListener("keyup", this.OnTecla, true);
  }	 	
}

function OnTecla() {
...  
}

...
El problema lo tengo en el 'this.OnTecla' ya que parece que el this no se refiere al objeto sino al contentdocument del iframe (visto desde Firefox).

¿Como puedo hacer para que sea el objeto el que controle los eventos que se produzcan en el iframe?.

Gracias.