从Firefox扩展XML扩展的XMLHttpRequest响应

时间:2014-06-10 21:42:50

标签: firefox xmlhttprequest firefox-addon domparser

我在将某些代码迁移到我的Firefox for Android扩展程序时遇到问题。我需要从请求中提取一些信息,例如this fiddle,但是在移动设备中(我将响应放在var中,因为相同的原始策略,以便从WebPage重现类似的特征)。

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

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

1 个答案:

答案 0 :(得分:0)

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

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