Я выручил друга, выполнив для него небольшую веб-работу. Часть того, что ему было нужно, - это простой способ изменить пару фрагментов текста на своем сайте. Вместо того, чтобы он редактировал HTML, я решил предоставить XML-файл с сообщениями в нем, и я использовал jQuery, чтобы извлечь их из файла и вставить на страницу.
Отлично работает ... В Firefox и Chrome не так уж хорошо в IE7. Я надеялся, что один из вас скажет мне, почему. Я сделал честно, но погуглил, но не смог найти то, что искал.
Вот XML:
<?xml version="1.0" encoding="utf-8" ?>
<messages>
<message type="HeaderMessage">
This message is put up in the header area.
</message>
<message type="FooterMessage">
This message is put in the lower left cell.
</message>
</messages>
А вот мой вызов jQuery:
<script type="text/javascript">
$(document).ready(function() {
$.get('messages.xml', function(d) {
//I have confirmed that it gets to here in IE
//and it has the xml loaded.
//alert(d); gives me a message box with the xml text in it
//alert($(d).find('message')); gives me "[object Object]"
//alert($(d).find('message')[0]); gives me "undefined"
//alert($(d).find('message').Length); gives me "undefined"
$(d).find('message').each(function() {
//But it never gets to here in IE
var $msg = $(this);
var type = $msg.attr("type");
var message = $msg.text();
switch (type) {
case "HeaderMessage":
$("#HeaderMessageDiv").html(message);
break;
case "FooterMessage":
$("#footermessagecell").html(message);
break;
default:
}
});
});
});
</script>
Есть ли что-то, что мне нужно сделать по-другому в IE? Основываясь на окне сообщения с [object Object], я предполагаю, что .find работал в IE, но так как я не могу проиндексировать массив с помощью [0] или проверить его длину, я предполагаю, что это означает, что .find не возвращая любые результаты. Любая причина, почему это прекрасно работает в Firefox и Chrome, но не работает в IE?
Я новичок в jQuery, так что я надеюсь, что не сделал глупости. Этот код был вычеркнут из форума и изменен в соответствии с моими потребностями. Поскольку jQuery является кроссплатформенным, я решил, что мне не придется иметь дело с этим беспорядком.
Редактировать: Я обнаружил, что если я загружаю страницу в Visual Studio 2008 и запускаю ее, она будет работать в IE. Так что получается, что он всегда работает при запуске через веб-сервер разработки. Теперь я думаю, что IE просто не нравится делать .find в XML, загруженном с моего локального диска, поэтому, возможно, когда он находится на реальном веб-сервере, он будет работать нормально.
Я подтвердил, что он работает нормально при просмотре с веб-сервера. Должно быть особенность IE. Я предполагаю, что это потому, что веб-сервер устанавливает тип mime для передачи файла данных xml, и без этого IE не может правильно проанализировать xml.