我向可以返回HTML內容的服務發送nsIXMLHttpRequest。我可以在多行文本框中顯示原始HTML,但我希望能夠在我的插件中顯示呈現的HTML(最好在xul tabpanel中)。如何在firefox插件中從nsIXMLHttpRequest呈現HTML?
有沒有我可以用來做到這一點的控制?似乎呈現HTML的唯一東西是從URL輸入他們的輸入,我需要它以某種方式來自JavaScript變量。
* 編輯:發佈後找到了答案分鐘,對不起*
我向可以返回HTML內容的服務發送nsIXMLHttpRequest。我可以在多行文本框中顯示原始HTML,但我希望能夠在我的插件中顯示呈現的HTML(最好在xul tabpanel中)。如何在firefox插件中從nsIXMLHttpRequest呈現HTML?
有沒有我可以用來做到這一點的控制?似乎呈現HTML的唯一東西是從URL輸入他們的輸入,我需要它以某種方式來自JavaScript變量。
* 編輯:發佈後找到了答案分鐘,對不起*
iframe.setAttribute("src", "data:text/html," + encodeURIComponent(xmlHttpRequest.responseText));
意味着我可以把它加載到一個iframe,其中Firefox將呈現它。直接從Mozilla Developer Center。
你其實並不需要使用接口,JavaScript的XMLHttpRequest的實現將工作得很好:
有一個例子在這裏: https://developer.mozilla.org/En/Using_XMLHttpRequest#Example.3a_Asynchronous_request
var req = new XMLHttpRequest();
req.open('GET', 'http://www.mozilla.org/', true);
req.onreadystatechange = function (aEvt) {
if (req.readyState == 4) {
if(req.status == 200)
dump(req.responseText); // your HTML is in this variable
// since the element is an HTML element, you can use HTML DOM methods
document.getElementById("container").innerHTML = req.responseText;
else
dump("Error loading page\n");
}
};
req.send(null);
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml"
...
<tabbox>
<tabs>
<tab label="Mail"/>
<tab label="News"/>
</tabs>
<tabpanels>
<tabpanel id="mailtab">
<checkbox label="Automatically check for mail"/>
</tabpanel>
<tabpanel id="newstab">
<!-- HTML div container embedded in XUL -->
<html:div id="container"></html:div>
</tabpanel>
</tabpanels>
</tabbox>
而且,看到這個帖子,因爲這是一個重複的問題: Ajax In Firefox Plugin
編輯:我做了一些調整,以進一步定位您關於在tabpanel中嵌入HTML的問題。假設您的XUL中有一個HTML DIV容器,可以使用綁定到窗口元素的HTML名稱空間來完成。
您現在可以使用HTML DOM方法將您的HTML注入到XUL tabpanel中。
在XUL接口插入HTML: http://www.xul.fr/tutorial/html.html
它特別將responseText呈現爲我感興趣的HTML。 – 2011-01-20 04:13:25
即使您已經找到答案,這仍然是一個值得質疑的問題。在StackOverflow上有答案可以使下一個嘗試搜索答案的人更容易找到答案。 – MatrixFrog 2011-01-20 05:02:44