Estoy intentando crear un complemento FF que aporte algunos datos XML de un sitio web. Pero no puedo encontrar una forma de analizar mi RESPUESTA. En primer lugar he usado DOMParser pero me sale este error:Cómo analizar una cadena XML en un complemento de Firefox usando Add-on SDK
ReferenceError: DOMParser is not defined.
Alguien sugirió usar XMLHttpRequest, debido a que el análisis se realiza de forma automática, pero luego me sale este otro error:
Error: An exception occurred. Traceback (most recent call last):
File "resource://jid0-a23vmnhgidl8wlymvolsst4ca98-at-jetpack/api-utils/lib/cuddlefish.js", line 208, in require let module, manifest = this.manifest[base], requirer = this.modules[base]; TypeError: this.manifest is undefined
Realmente no sé qué otra cosa hacer. Debo señalar que estoy usando AddOn Builder para lograr esto.
Debajo del código que parece que no funciona.
Opción 1:
exports.main = function() {
require("widget").Widget({
id: "widgetID1",
label: "My Mozilla Widget",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function(event) {
var Request = require("request").Request;
var goblecontent = Request({
url: "http://www.myexperiment.org/search.xml?query=goble",
onComplete: function (response) {
var parser = new DOMParser();
var xml = parser.parseFromString(response.text, "application/xml");
var packs = xml.getElementsByTagName("packs");
console.log(packs);
}
});
goblecontent.get();
}
});
};
Opción 2:
exports.main = function() {
require("widget").Widget({
id: "widgetID1",
label: "My Mozilla Widget",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function(event) {
var request = new require("xhr").XMLHttpRequest();
request.open("GET", "http://www.myexperiment.org/search.xml?query=goble", false);
request.send(null);
if (request.status === 200) {
console.log(request.responseText);
}
}
});
};
+1 por el bien de sus usuarios, evite el acceso sincrónico a la red de cualquier tipo. – canuckistani
@canuckistani: Ahora si solo 'xhr' implementara las propiedades' onload' y 'onevent' adecuadas;) Los desarrolladores web podrían ser utilizados para' onreadystatechange', pero considero que es una solución desagradable. –
@Wladimir Palant. La solución DOMParse funcionó muy bien. Sin embargo, la solución XMLHttpRequest me arrojó el mismo mensaje de error.Terminé haciendo algo similar a lo que me recomendó con DOMParse: 'var {Cc, Ci} = require (" chrome "); var request = Cc ["@ mozilla.org/xmlextras/xmlhttprequest;1"]. createInstance (Ci.nsIXMLHttpRequest); '¡y funcionó !. Gracias – kriztean