2013-09-28 27 views
0

我正在使用javascript來設置內容窗格.attr('href,'...') This作品,並盡職盡責地呈現html,就像IFRAME一樣,呈現的HTML包含一種表單,它在提交時需要返回一個可以替換整個窗口_top(而不僅僅是contentpane/href區域)的響應......太多就像使用window.top.location.href來取代iframe一樣。html/javascript響應dijit/layout/contentpane的href需要替換整個窗口(_top)而不僅僅是內容頁面

我無法得到響應能夠突破contentpane/href並重繪_top。有什麼建議麼?另外,關於在contentpane/href中設置來自javascript的變量的建議,其中目標變量位於其他內容窗格或部分_top頁面中(這也可能幫助我解決問題)。

謝謝。

回答

0

dijit/layout/ContentPane就像模塊名稱本身已經說過:一個窗格可以放入內容。它並不意味着像您希望覆蓋整個頁面(除非您的頁面只包含一個ContentPane)。

如果您想用自己的外部網頁替換整個頁面,那麼您將不得不使用dojo/request/xhr模塊並自行替換頁面。

例如:

xhr.get("myExternalPage.html", { 
    handleAs: "html" 
}).then(function(html) { 
    query("body").empty().addContent(html); 
}); 

這樣做什麼是很簡單的,它加載"myExternalPage.html",並指定它應該DOM節點(handleAs: "html")進行處理。在then()函數中,您將收到生成的HTML DOM節點,然後您可以使用這些新的HTML內容實際替換您的正文。我使用empty()來清除現有內容,並使用addContent()來添加DOM節點。

我也做了一個JSFiddle來演示。

+0

我在發佈的問題的細節上犯了一個錯誤 - 嘗試了太多選擇後,情況變得混亂。我的問題應該正確的是如何對IFRAME的響應替換_top而不是iframe(基於響應內容)。我錯誤地將其與內容面板相關聯 - 實際上內容面板HREF一直替換_top並且甚至不能運行它自己的JavaScript。無論如何,我通過回覆運行onLoad的一段簡單html來做到window.open到_top來克服這個問題。也許不是最佳的,但工程。 – steve

+0

並感謝Dimitri爲您提供非常豐富的回覆。我當然可以在項目的不同領域使用這種幫助。 :) – steve

相關問題