2013-10-29 38 views
0

我正在使用dojo編寫單頁網站。教程描述瞭如何使用dojo /請求發出ajax請求。我可以簡單地提出請求,接收html內容並將其插入到內容面板(div元素)中。樣品中也證明了這一點。如何使用dojo加載內容?

當我開始加載具有某些所需功能的真實內容時,我還需要將腳本元素添加到ajax調用請求的內容中。問題是沒有執行使用ajax內容接收的腳本。

我試過使用contentNode.innerHTML = data;domConstruct.place(data, contentNode, "only"); 在這兩種情況下都顯示內容,但內容中的腳本未執行。

據我所知,還有一個dijit.layout.ContentPane這是更適合在設計時加載內容,而不是運行時。

我無法在加載內容之前執行該腳本,因爲在每個頁面中都有一些我需要處理的元素,並且在加載主頁面時它們很簡單不可用。例如,我需要更改表單提交行爲。

那麼我能做些什麼來使加載的腳本執行?

回答

1

有一個dojox.layout.ContentPane提供了從加載的內容執行腳本的能力。

查看官方文檔here。如果您需要執行JavaScript的內容窗格中,用 DojoX中/佈局/ contentPane中,而不是的dijit /佈局/ contentPane中,並設置 executeScripts =」 true」,可以excplicitly滿足你的使用情況

。實際上,executeScripts的默認值爲「true」,但 可能會成爲您爲何使用 dojox/layout/ContentPane的視覺提示。

+1

但是,不應該從服務器發送腳本來響應這樣的Ajax請求來執行腳本。服務器應該提供* data *,然後客戶端應該使用已經加載的代碼來響應和處理數據。 –

+0

@CSnover那麼這樣做的正確方法是什麼?我想你並不是建議我爲頁面中的每個鏈接編寫一個單獨的函數?每個點擊結果加載一些內容和腳本必須執行,例如日曆文本框,提交處理等... – rosencreuz

+0

@Lucas:我已經提到,ContentPane不適合多次更改內容,它的目的是加載某些內容一次在頁面加載後。如果你不同意,你可以更具體嗎? – rosencreuz