2009-10-14 52 views
17

Tôi đang tạo trình chỉnh sửa HTML trong trình duyệt. Tôi đang sử dụng highlighter cú pháp được gọi là Code Mirror rất tốt.Chèn HTML vào iframe

Thiết lập của tôi là khung nội tuyến chứa chế độ xem trang đang được chỉnh sửa và văn bản thuần HTML văn bản thuần túy mà người dùng chỉnh sửa.

Tôi đang cố gắng chèn HTML đã chỉnh sửa từ vùng văn bản vào iframe hiển thị chúng đã hiển thị HTML.

Điều này có khả thi không? Tôi đã thử như sau: thiết lập

HTML:

<iframe id="render"> 

</iframe> 

<textarea id="code"> 
HTML WILL BE 

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

JQuery Setup:

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

này dường như không để nạp mã HTML vào khung nội tuyến, là có một phương pháp đặc biệt để chèn HTML vào iframe hoặc điều này là không thể?

Cheers

Eef

+1

bản sao có thể có của [đưa html vào iframe (sử dụng javascript)] (http://stackoverflow.com/questions/620881/putting-html-inside-an-iframe-using-javascript) –

Trả lời

2

thử

iframe[0].documentElement.innerHTML = code; 

Giả sử rằng các url vào iframe là từ cùng một tên miền như các trang web.

27

Vấn đề này nghe trộm tôi quá và fina lly tìm thấy giải pháp.

Cuối năm nhưng sẽ thêm giá trị cho những khách truy cập khác có thể cần sửa chữa phù hợp.

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

tại sao bạn tạo iframe trong javascript? có vẻ như một cách khủng khiếp như vậy để làm điều đó ... – Jesus

10

Bạn có thể làm điều đó trên cùng một dòng với jquery

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

Xem bản demo làm việc ở đây http://jsfiddle.net/dWpvf/972/

Thay thế "iframe" với "#render" ví dụ của bạn. Tôi đã để lại trong "iframe" để những người dùng khác có thể tham khảo câu trả lời.

+0

Không chắc chắn tại sao câu trả lời được chấp nhận đã được giảm giá, nhưng đối với người xem trong tương lai đối với câu hỏi này, phương pháp này thật tuyệt vời và hoạt động :) – mickburkejnr

Các vấn đề liên quan