2009-10-14 9 views
17

Je crée un éditeur HTML dans le navigateur. J'utilise la syntaxe surligneur appelée Code Mirror qui est très bonne.Insérer du code HTML dans iframe

Ma configuration est une iframe qui contient une vue de la page en cours de modification et une zone de texte que le texte brut HTML modifie et que l'utilisateur modifie.

J'essaie d'insérer le HTML édité de la zone de texte dans l'iframe qui affiche qu'ils ont rendu HTML.

Est-ce possible? Je l'ai essayé ce qui suit:

configuration HTML:

<iframe id="render"> 

</iframe> 

<textarea id="code"> 
HTML WILL BE 

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

JQuery Configuration:

$('#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) 
}) 

Cela ne semble pas charger le code HTML dans le iframe, est-il une méthode spéciale pour insérer du code HTML dans un iframe ou n'est-ce pas possible?

Vive

Eef

+1

duplication possible de [mettre du HTML dans un iframe (en utilisant javascript)] (http://stackoverflow.com/questions/620881/putting-html-inside-an-iframe-using-javascript) –

Répondre

2

essayer

iframe[0].documentElement.innerHTML = code; 

En supposant que l'URL pour l'iframe est du même domaine que la page Web.

27

Ce problème me mis sur écoute aussi et fina J'ai trouvé une solution.

Il est en retard, mais ajoutera de la valeur aux autres visiteurs qui pourraient avoir besoin d'une solution appropriée.

<!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

pourquoi créer l'iframe en javascript? cela semble être une façon si terrible de le faire ... – Jesus

10

Vous pouvez le faire sur une seule ligne avec jquery

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

Voir la démo travailler ici http://jsfiddle.net/dWpvf/972/

Remplacer "iframe" par "#render" pour votre exemple. Je suis parti dans "iframe" pour que les autres utilisateurs puissent référencer la réponse.

+0

Je ne sais pas pourquoi la réponse acceptée a été downvoted, mais pour les futurs spectateurs à cette question, cette méthode est brillante et fonctionne :) – mickburkejnr

Questions connexes