Hãy xem xét điều này:khác biệt trong jQuery với namespace XML và xhr.responseXML giữa Opera và Firefox
<!DOCTYPE HTML>
<html><head><title>XML-problem</title>
<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('<p/>').load("text.xml", function(responseText, textStatus, xhr) {
var xml = $(xhr.responseXML);
var x_txt = xml.find('atom\\:x').text();
$(this).text(x_txt).appendTo('#container');
});
});
</script>
</head><body><div id="container" /></body></html>
kịch bản này nên tải text.xml khi tài liệu đã được tải. text.xml trông như thế này:
<xml xmlns:atom="http://www.w3.org/2005/Atom">
<atom:x>Text</atom:x>
</xml>
Khi tập tin này đã được kích hoạt, nội dung văn bản của atom:x
-node sẽ được nối vào tài liệu. Tôi có thể thấy "Văn bản" trong cửa sổ trình duyệt của mình.
Điều này hoạt động như mong đợi trong Firefox. Tuy nhiên, nó không hoạt động trong Opera trừ khi tôi thay đổi truy vấn từ 'atom\\:x'
thành chỉ 'x'
. Trong trường hợp này nó hoạt động trong Opera, nhưng không phải Firefox.
Tôi đã phát hiện ra giải pháp thay thế, cụ thể là thay đổi truy vấn thành 'atom\\:x, x'
, nhưng tôi muốn nhận được phần cuối của điều này.
Bây giờ cho các thay đổi vui nhộn: Tôi có thể inline xml trực tiếp thay vì nhận được nó từ XHR bằng cách thay đổi
var xml = $(xhr.responseXML);
vào
var xml = $('<xml xmlns:atom="http://www.w3.org/2005/Atom"><atom:x>Text</atom:x></xml>');
Trong trường hợp này một truy vấn của 'atom\\:x'
sẽ cung cấp kết quả mong muốn trong cả hai trình duyệt và chỉ 'x'
sẽ không cho kết quả nào trong cả hai trình duyệt.
Sự kiện này hoạt động khác trong Opera khiến tôi kết luận rằng hành vi cũ là lỗi trong Opera. Đây có phải là một kết luận hợp lý không? Tôi có thể chỉ ra tiêu chuẩn nào mô tả cách thức hoạt động của nó?
Tóm lại:
- các công việc ở quanh thay thế cho vấn đề này là gì? Có tốt hơn cái tôi tìm thấy không?
- Đây có phải là lỗi trong Opera không? Nếu có, tiêu chuẩn nào nói như vậy?
Hy vọng bạn có thể giúp :)
Trông giống như một lỗi đã lưu ý. http://thompson-web.blogspot.com/2009/03/jquery-xml-and-namespaces.html http://dev.jquery.com/ticket/155 –
@Stefan: Vì vậy, jQuery nên cho tôi kết quả khi chỉ truy vấn 'x', bất kể trình duyệt là gì? –
Tại sao bạn sử dụng 'tải'? Tải phải là html, không phải xml. Nó có hoạt động với 'ajax' hay' get' không? – Kobi