如何在firefox插件中从nsIXMLHttpRequest呈现HTML?

时间:2011-01-20 03:59:12

标签: firefox-addon

我正在向可以返回HTML内容的服务发送nsIXMLHttpRequest。我可以在多行文本框中显示原始HTML,但我希望能够在我的插件中显示呈现的HTML(最好在xul tabpanel内)。

我可以用它来控制吗?似乎只呈现HTML的东西从URL获取输入,我需要它以某种方式来自javascript变量。

* 编辑:发布后发现答案分钟,抱歉*

2 个答案:

答案 0 :(得分:1)

iframe.setAttribute("src", "data:text/html," + encodeURIComponent(xmlHttpRequest.responseText));

意味着我可以将其加载到firefox将呈现它的iframe中。直接从Mozilla Developer Center

答案 1 :(得分:0)

您实际上不需要使用这些接口,因为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选项卡面板。

在XUL界面中插入HTML: http://www.xul.fr/tutorial/html.html