从Android扩展解析Firefox的XMLHttpRequest响应

从Android扩展解析Firefox的XMLHttpRequest响应

问题描述:

我在将某些代码迁移到适用于Android扩展的Firefox时出现问题。我需要从请求中提取一些信息,例如this fiddle,但是在移动设备中(为了从WebPage中重现相似的特性,我将响应放在var中,因为它们的起源策略相同)。从Android扩展解析Firefox的XMLHttpRequest响应

我知道代码工作正常,因为小提琴的作品。但是,当迁移到Android版Firefox时,它不起作用。

var parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser); 

//ERROR IN NEXT STEP (DOESN'T THROW ANY MESSAGE - CONTROL FLOW JUST DISSAPPEARS) 
var parsedXml = parser.parseFromString(response, "text/xml");  
var xpathExpression = "//td[contains(.,'Raw text')]/../td[2]/pre"; 

var res = document.evaluate(xpathExpression, parsedXml, null, window.XPathResult.STRING_TYPE , null); 

我调试了扩展,但没有错误消息,既没有例外。所以我在第一行(var parser = ...)中放置了一个断点,我可以看到正在创建的解析器,但是在下一步中,流控制消失了,并且以下所有代码都不会被执行。一切都在try-catch语句中,所以没有理由消失。

我真的不明白发生了什么事。你可以帮我吗?

adb logcat说:JavaScript错误:“WrongDocumentError:节点不能用于创建它的文档以外的文档”{file:“resource://gre/modules/addons/XPIProvider.jsm

解决方法是用parsedXml替换文档:

var res = parsedXml.evaluate(xpathExpression, parsedXml, null, window.XPathResult.STRING_TYPE , null);