2017-01-25 41 views
1

我有以下的javascript代碼:如何使用Javascript呈現字符串中的HTML?

var html = '<div class="col-lg-4 col-references" idreference="'+response+'"><span class="optionsRefer"><i class="glyphicon glyphicon-remove delRefer" style="color:red; cursor:pointer;" data-toggle="modal" data-target="#modalDel"></i><i class="glyphicon glyphicon-pencil editRefer" data-toggle="modal" data-target="#modalRefer" style="cursor:pointer;"></i></span><div id="contentRefer'+response+'">'+refer_summary+'</div><span id="nameRefer'+response+'">'+refer_name+'</span></div>'; 
$("#references").append(html); 

運行此代碼時,該refer_summary變量實際上包含了可能包含HTML標籤,例如<b><i>等,但是,這些標籤顯示在頁面上的繩子而不是渲染他們的行爲。

例如,在頁面上它將顯示<b>,而實際上使內容變爲粗體。

如何在附加值時渲染HTML標記?

在我的Django模板中,我使用了{% autoescape off %}{{content}}{% endautoescape %},所以當我第一次加載頁面時,內容用粗體等正確呈現。但是如何在從javascript附加html時做同樣的事情?

感謝您的幫助!

+1

聽起來像XSS攻擊等待發生。 –

回答

0

可以使用document.write()的渲染HTML

document.write('<html><body><h2>HTML</h2></body></html>'); 

但追加現有的HTML字符串,你需要得到一個你要插入你的HTML字符串節點/標籤的ID 。

有兩種方法,通過它可以實現可能是:

  1. 使用DOM -

    VAR TAG_ID =的document.getElementById( '標籤識別'); var newNode = document.createElement('p'); newNode.appendChild(document.createTextNode('html string')); node.appendChild(newNode);

  2. 使用的innerHTML -

變種TAG_ID =的document.getElementById( '標籤識別'); tag_id.innerHTML('HTML string');

我希望這會幫助你。謝謝

0

使用$ .parseHTML前追加HTML等作爲

var html = '<div class="col-lg-4 col-references" idreference="'+response+'"><span class="optionsRefer"><i class="glyphicon glyphicon-remove delRefer" style="color:red; cursor:pointer;" data-toggle="modal" data-target="#modalDel"></i><i class="glyphicon glyphicon-pencil editRefer" data-toggle="modal" data-target="#modalRefer" style="cursor:pointer;"></i></span><div id="contentRefer'+response+'">'+refer_summary+'</div><span id="nameRefer'+response+'">'+refer_name+'</span></div>'; 
html = $.parseHTML(html); 
$("#references").append(html); 
0

您需要分配一個特定的div一個ID,然後處理/改變UI在特定格設置相應。

鑑於here是一個很好的解釋。

相關問題