jquery iframe rte

jquery escuchar eventos en un iframe



rte (2)

Una de las cosas más molestas de javascript es que document.frames ["frameID"] devuelve un objeto diferente de document.getElementById ("frameID"). (que es lo que obtienes cuando usas $ ("# frameID"))

Esta distinción es probablemente la razón por la que te encuentras con problemas entre navegadores. Es probable que necesite perder el tiempo con diferentes formas de acceder a los contenidos del iframe hasta que encuentre uno que funcione correctamente.

Estoy haciendo un editor de texto enriquecido muy simple usando jquery ... No quiero usar un tercero.

Necesito escuchar eventos dentro de un iframe (el mismo dominio, etc.), comenzando con el tipeo. Aparentemente necesitaré bind () mucho.

Esto es lo que tengo en este momento, que funciona bien en IE8 (sorprendentemente) pero no en Chrome.

<script> $(function() { $(''#text'').contents().bind("keyup keydown keypress", function(e) { var code = e.keyCode || e.which; alert(code); return false; }); }); </script> <body> <iframe id="text" name="text" src="edit.html"></iframe> </body>

En el evento de pulsación de tecla anterior, también querré obtener el valor actual de ''edit.html'' y actualizar un área de texto con ese valor ...

Cualquier ayuda sería MUCHO apreciada :)

Muchas gracias

EDITAR: para seguir explicando, edit.html es un archivo editable usando "document.body.contentEditable = true;"

-

EDICION 2:

edit.html =

<script language="javascript"> function InitializeIFrame() { document.body.contentEditable = true; } </script> <html> <body onload="InitializeIFrame();"> </body> </html>


Parece que recuerdo haber tenido un problema cuando intentaba comunicarme con un iframe (el mismo dominio, etc.). El truco que encontré es hacer el enlace dentro del marco y enlazar a las funciones en la ventana principal. Algo como esto (en edit.html):

<script> $(''body'').bind("keyup keydown keypress", function(e) { window.parent && window.parent.funcKey && window.parent.funcKey(e); }); </script>

y luego en la página principal algo así como:

<script> function funcKey(e) { var code = e.keyCode || e.which; alert(code); return false; } </script>

Me doy cuenta de que esto no encaja exactamente en la forma en que trataste de hacerlo, pero se logra el mismo efecto. Por lo que entiendo de javascript e iframes, en la práctica es más fácil comunicarse con un padre que comunicarse con un iframe. Si realmente necesita una comunicación bidireccional, puede (siguiendo el ejemplo anterior) usar el valor de retorno de la función funcKey () para pasar los datos nuevamente al iframe.