2011-01-20 29 views
1

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

有没有我可以用来做到这一点的控制?似乎呈现HTML的唯一东西是从URL输入他们的输入,我需要它以某种方式来自JavaScript变量。

* 编辑:发布后找到了答案分钟,对不起*

+0

即使您已经找到答案,这仍然是一个值得质疑的问题。在StackOverflow上有答案可以使下一个尝试搜索答案的人更容易找到答案。 – MatrixFrog 2011-01-20 05:02:44

回答

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

意味着我可以把它加载到一个iframe,其中Firefox将呈现它。直接从Mozilla Developer Center

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 tabpanel中。

在XUL接口插入HTML: http://www.xul.fr/tutorial/html.html

+0

它特别将responseText呈现为我感兴趣的HTML。 – 2011-01-20 04:13:25