Próbuję utworzyć dodatek FF, który przynosi niektóre dane XML ze strony internetowej. Ale nie mogę znaleźć sposobu na przeanalizowanie mojego ODPOWIEDZI. Pierwszy użyłem DOMParser ale otrzymuję ten błąd:Jak analizować łańcuch XML w dodatku Firefox przy użyciu dodatku SDK
ReferenceError: DOMParser is not defined.
Ktoś zasugerował, aby użyć XMLHttpRequest, gdyż parsowanie jest wykonywane automatycznie, ale potem się ten drugi błąd:
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
ja naprawdę nie wiem co jeszcze zrobić. Muszę zauważyć, że używam narzędzia AddOn Builder, aby to osiągnąć.
Poniżej kodu, który wydaje się nie działać.
Opcja 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();
}
});
};
Opcja 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 ze względu na użytkowników, należy unikać synchronicznego dostępu do sieci jakiegokolwiek rodzaju! – canuckistani
@canuckistani: Teraz, jeśli tylko 'xhr' zaimplementował odpowiednie właściwości' onload' i 'onevent';) Twórcy stron WWW mogą być wykorzystani do' onreadystatechange', ale uważam to za brzydkie rozwiązanie. –
@Wladimir Palant. Rozwiązanie DOMParse działało świetnie. Jednak rozwiązanie XMLHttpRequest rzuciło na mnie ten sam komunikat o błędzie.W efekcie zrobiłem coś podobnego do tego, co poleciłeś mi z DOMParse: 'var {Cc, Ci} = require (" chrome "); var request = Cc ["@ mozilla.org/xmlextras/xmlhttprequest;1"]. createInstance (Ci.nsIXMLHttpRequest); 'i zadziałało !. Dziękuję – kriztean