2009-10-14 26 views
17

Estoy creando un editor HTML en el navegador. Estoy usando el marcador de sintaxis llamado Code Mirror, que es muy bueno.Insertar HTML en iframe

Mi configuración es un iframe que contiene una vista de la página que se está editando y un área de texto donde se encuentra el texto sin formato HTML que el usuario edita.

Estoy tratando de insertar el HTML editado desde el área de texto en el iframe que muestra que han renderizado HTML.

¿Esto es posible? He intentado lo siguiente: Configuración

HTML:

<iframe id="render"> 

</iframe> 

<textarea id="code"> 
HTML WILL BE 

HERE 
</textarea> 
<input type="submit" id="edit_button" value="Edit" /> 

jQuery Configuración:

$('#edit_button').click(function(){ 
    var code = editor.getCode(); // editor.getCode() is a codemirror function which gets the HTML from the text area 
    var iframe = $('#render'); 
    iframe.html(code) 
}) 

Esto no parece cargar el HTML en el iframe, ¿existe un método especial para insertar HTML en un iframe o esto no es posible?

Saludos

Eef

+1

posible duplicado de [poner html dentro de un iframe (usando javascript)] (http://stackoverflow.com/questions/620881/putting-html-inside-an-iframe-using-javascript) –

Respuesta

2

tratan

iframe[0].documentElement.innerHTML = code; 

Suponiendo que la url para el iframe es del mismo dominio que la página web.

27

Este problema me molestó demasiado y Fina lly encontró solución.

Es tarde pero agregará valor a otros visitantes que puedan necesitar la solución adecuada.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
<html lang="en"> 
<head> 
    <title>Iframe test</title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"> 
    </script> 
    <script type="text/javascript"> 
     $(function() { 
      var $frame = $('<iframe style="width:200px; height:100px;">'); 
      $('body').html($frame); 
      setTimeout(function() { 
       var doc = $frame[0].contentWindow.document; 
       var $body = $('body',doc); 
       $body.html('<h1>Test</h1>'); 
      }, 1); 
     }); 
    </script> 
</head> 
<body> 
</body> 
</html> 
+0

¿por qué crearías el iframe en javascript? eso parece una manera tan terrible de hacerlo ... – Jesus

10

Puede hacerlo todo en una línea con jQuery

$("iframe").contents().find('html').html("Your new HTML"); 

Ver demostración trabajar aquí http://jsfiddle.net/dWpvf/972/

Reemplazar "iframe" con "#render" por su ejemplo. Lo dejé en "iframe" para que otros usuarios puedan hacer referencia a la respuesta.

+0

No estoy seguro de por qué la respuesta aceptada ha sido downvoted, pero para los futuros espectadores a esta pregunta, este método es brillante y funciona :) – mickburkejnr

Cuestiones relacionadas