无法在Firefox扩展名中解析xmlHttpRequest responseText

|| 我正在构建一个firefox扩展,并且在扩展中,我正在发出一个ajax请求,该请求返回一个responseText,现在我想解析js中的responseText,但是我无法解析该请求。 请注意,如果我在网络服务器上运行相同的代码,则可以正常运行。下面是代码
var myHTML = XHR.responseText;
var tempDiv = document.createElement(\'div\');

tempDiv.innerHTML = myHTML;
tempDiv.childNodes;
tempDiv.getElementsByTagName(\'a\'); // etc. etc.
如果我在网络服务器上使用此代码,则可以解析childNodes并检索其值,但如果我在firefox扩展中使用此代码,则即使我在使用时可以看到responseText,也无法访问childNodes。在Firefox扩展中。 我对同一代码的这种无关紧要的行为感到困惑,请帮帮我。     
已邀请:
        最好不要将从远程服务器收到的HTML代码直接插入特权文档中-这是一个安全漏洞。即使您控制服务器,并且绝对确定服务器也不会被黑客入侵,但数据可能已经被篡改了。通过使用innerHTML,您可以运行与HTML代码一起发送的JavaScript代码,并且该JavaScript代码将以扩展名的特权执行(这意味着它几乎可以执行任何操作)。 您应该改为创建“ 1”,并确保文档和该框架之间存在安全边界(type = \“ content \”可以做到这一点)。像这样:
var myHTML = XHR.responseText;
var tempFrame = document.createElement(\"iframe\");
tempFrame.setAttribute(\"type\", \"content\");
tempFrame.setAttribute(\"src\", \"data:text/html;charset=utf-8,\" + encodeURIComponent());
document.documentElement.appendChild(tempFrame);
tempFrame.contentWindow.addEventListener(\"load\", function()
{
    tempFrame.contentDocument.documentElement;
    tempFrame.contentDocument.getElementsByTagName(\'a\');
    ...
    tempFrame.parentNode.removeChild(tempFrame);
}, false);
如果您具有格式正确的XML,那么事情当然会更容易。然后解析它只是一个问题:
var doc = new DOMParser().parseFromString(XHR.responseText, \"text/xml\");
doc.documentElement;
doc.getElementsByTagName(\'a\');
编辑:在我写完这篇文章后,事情发生了变化-从Firefox 10开始,对于格式不正确的HTML代码,您还可以使用ѭ4use。因此,如果您只需要从一段HTML代码中提取一些数据,则不应该使用框架,而应使用“ 5”。     
        “ 6”设置器的行为取决于您所使用的文档类型。Firefoxchrome是XML文档,因此在上面的代码段中,“ 7”字符串将被解析为XML。在网页中,您可能正在编写HTML,而不是XML,因此需要进行HTML解析。您的字符串是否恰好是HTML而不是格式正确的XML?     

要回复问题请先登录注册