2012-06-04 67 views
0

我正在構建一個擴展,它首先獲得與HTTPRequest相關聯的窗口,如解釋here所述。哪個類相當於GWT中的Javascript對象window.document?

文檔中有一個div元素,它具有來自外部網站的src。我基本上取消了請求並獲得了關聯的窗口。
現在說我想用字符串「Hello World」填充該窗口的文檔。

使用以下在JavaScript(JSNI)的作品(即,它會替換而正常情況下,從外部源中的數據將是字符串):

window.document.write("Hello World"); 

但我真的需要做的是在Java中,而不是通過JSNI。

我使用類文件通過從JSNI使呼叫作爲對象嘗試:該方法被定義爲

@[package].[class]::populateBox(Lcom/google/gwt/dom/client/Document)(window.document); 

public static void populateBox(Document doc){ 
    doc.getBody().setInnerHTML("Hello World); 
} 

該代碼,而不是在DIV替換文本請求被加載的位置將替換html文檔的頂級主體。

這裏有什麼問題?文檔是否在這裏使用了錯誤的類?

回答

0

有您的代碼沒有問題:

window.document援建的第Document

doc.getBody()將是文檔的完整體。

doc.getBody().setInnerHTML("");將會取消完整的內容並將主體設置爲新的值。

我認爲你正在尋找appendChild

DOM.appentChild(doc.getBody(), new HTML('Hello World!').getElement()); 
+2

的HTML類是一個小部件,而不是元素,所以不能直接追加。 JSNI代碼也可以寫成'$ doc.innerHTML =「Hello World」'。但是添加一個小部件可以更好地表達爲'RootPanel.get()。add(new HTML(「Hello world」))''。 –

相關問題