2013-05-06 103 views
4

在我的網站上,我加載了html,它在服務器(nodejs)中呈現,並將它插入到正確的位置(大部分時間是一個帶有id內容的div)。用javascript加載部分html

我該如何在客戶端插入收到的html,以便包含的腳本標籤被執行?

我在客戶端使用下劃線和句柄。但是當然,vanillajs也是可能的。

PS:這裏是顯示jQuery.html()之間的差別的例子,設置innerHTML - 特性:

http://jsfiddle.net/waxolunist/VDYgU/3/

+0

你可以參考http://stackoverflow.com/questions/8825804/nodejs-ejs-partials-with-scripts-in-the-head和res.Render在HTTP ://expressjs.com/api.html#req.xhr – DeveloperBuddy 2013-05-06 18:45:28

+0

你能詳細說明一下嗎?我不明白。 – Christian 2013-05-06 18:52:22

+0

您可以使用回調響應呈現html。 res.render('sometemplate',{layout:false}); – DeveloperBuddy 2013-05-06 19:06:29

回答

3

與jQuery

$('div#content').html(loaded_html); 

無:

getElementById('content').innerHTML = loaded_html; 

雖然可能按照你的方式來做,一個更好的主意可能是發送json和渲染pag es在瀏覽器中使用您(可能)在服務器中使用的相同模板。我正在使用doT,我認爲它是所有基於JavaScript的模板(如EJS,下劃線)中最好的。

+0

是的,我已經回答了jquery,然後再回答您的問題。它的工作原理不同,所以腳本得到執行。 InnerHTML不適用於我(Chrome 26)。儘管我接受你的回答。我只在某些情況下不提供html服務器端。在我使用的客戶端上,取決於用例句柄。 – Christian 2013-05-10 15:15:50

0

你可以利用jQuery來做到這一點。 只是

$ .load( 「#divname」)負載(URL)

http://api.jquery.com/load/

+0

我已經得到了html。如何插入html? – Christian 2013-05-06 19:36:01

+0

它將數據加載到DIV(innerHTML)中。這是一種糖 – 2013-05-06 19:49:52

+0

我在客戶端上已經有了html。源代碼沒有任何網址。我通過websocket加載內容。 – Christian 2013-05-06 20:15:18

0

您的角色轉義存在一些問題,請使用jshint。否則,它是非常簡單的使用像

var script1 = "content for jQuery"; 
var script2 = "content for javascript"; 

$(document).ready(function(){ 
    $('#content1').html(script1); 
    document.getElementById('content2').innerHTML = script2; 
})