Я помог другу, сделав для него небольшую работу в Интернете. Часть того, что ему нужно, это простой способ изменить пару фрагментов текста на своем сайте. Вместо того, чтобы его редактировать 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] я предполагаю, что .find работал в IE, но поскольку я не могу индексировать в массив с помощью [0] или проверять длину, я предполагаю, что это означает .find is not возвращая любые результаты. Любая причина, почему это отлично работает в Firefox и Chrome, но не работает в IE?
Я полный новичок с jQuery, поэтому надеюсь, что я просто не сделал что-то глупое. Этот код выше был очищен от форума и изменен в соответствии с моими потребностями. Поскольку jQuery является кросс-платформенным, я решил, что мне не придется иметь дело с этим беспорядком.
Изменить: я обнаружил, что если я загружу страницу в Visual Studio 2008 и запустил ее, она будет работать в IE. Таким образом, оказывается, что он всегда работает при запуске веб-сервера разработки. Теперь я думаю, что IE просто не нравится делать .find в XML, загруженном с моего локального диска, поэтому, возможно, когда это будет на реальном веб-сервере, он будет работать нормально.
Я подтвердил, что он отлично работает при просмотре с веб-сервера. Должна быть особенность IE. Я предполагаю это, потому что веб-сервер устанавливает тип mime для передачи файла данных xml и без этого IE не анализирует xml правильно.