Tôi đang cố gắng tạo một FF AddOn để mang một số dữ liệu XML từ một trang web. Nhưng tôi không thể tìm cách phân tích RESPONSE của tôi. Trước tiên tôi sử dụng DOMParser nhưng tôi nhận được lỗi này:Cách phân tích cú pháp chuỗi XML trong Firefox addon bằng cách sử dụng Add-on SDK
ReferenceError: DOMParser is not defined.
Có người đề nghị sử dụng XMLHttpRequest, bởi vì các phân tích được thực hiện tự động nhưng sau đó tôi nhận được lỗi khác này:
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
Tôi thực sự không biết còn cần phải làm gì nữa. Tôi phải lưu ý rằng tôi đang sử dụng AddOn Builder để đạt được điều này.
Bên dưới mã có vẻ không hoạt động.
Lựa chọ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();
}
});
};
Phương á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 vì lợi ích của người dùng của bạn, hãy tránh truy cập mạng đồng bộ dưới bất kỳ hình thức nào! – canuckistani
@canuckistani: Bây giờ nếu chỉ 'xhr' thực hiện các thuộc tính' onload' và 'onevent' đúng;) Các nhà phát triển web có thể được sử dụng để' onreadystatechange' nhưng tôi coi đó là một giải pháp xấu xí. –
@Wladimir Palant. Giải pháp DOMParse hoạt động rất tốt. Tuy nhiên, giải pháp XMLHttpRequest đã ném cho tôi cùng một thông báo lỗi.Tôi đã làm một cái gì đó tương tự như những gì bạn đề nghị tôi với DOMParse: 'var {Cc, Ci} = require (" chrome "); var request = Cc ["@ mozilla.org/xmlextras/xmlhttprequest;1"]. createInstance (Ci.nsIXMLHttpRequest); 'và nó hoạt động !. Cảm ơn bạn – kriztean