Как лучше всего обрабатывать теги стиля при загрузке HTML с помощью AJAX в IE 6 или 7?

Наша структура AJAX работает так, что отправляет обратно фрагмент HTML, который может содержать тег. Затем мы берем этот фрагмент HTML и устанавливаем его как innerHTML элемента. В IE 6/7 теги игнорируются, поэтому возвращаемый HTML-код не оформлен должным образом.

Мне интересно, сталкивались ли другие люди с подобными проблемами, и если да, то как они с ними справлялись. Я знаю, что могу использовать библиотеку javascript (мы используем YUI) для динамического получения внешних таблиц стилей, чтобы я мог преобразовать их во внешнюю таблицу стилей. Просто интересно, есть ли другие способы исправить это.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
134
3

Ответы 3

Конечно, лучший метод - это чистое решение DOM, то есть использовать document.createElement для генерации всех элементов, возвращаемых сервером.

Тем не менее, есть (конечно) взлом IE, чтобы обойти некоторые проблемы, представленные innertHTML. Вместо того, чтобы вставлять ответ прямо в DOM, сначала создайте элемент, добавьте его innerHTML, а затем прикрепите его к DOM.

function responseHandler(response) {
    var div = document.createElement('div');
    div.innertHTML = response.responseText
    document.getElementById('ZE_ELEMENT').appendChild(div);
}

Однозначно самый надежный способ, особенно если речь идет о дальнейших манипуляциях. IE 6/7 вообще не выполняет innerHTML для таблиц. Кроме того, innertHTML? Это то, что использует Yahoo?

Mike Robinson 23.01.2009 00:24

Теги встроенного стиля должны распознаваться. Блок таблицы стилей не будет, поскольку они загружаются во время первоначального рендеринга страницы.

Вы можете динамически добавлять классы в существующую таблицу стилей, но вам нужно будет проанализировать свой HTML-фрагмент, чтобы захватить то, что есть, и сделать это в скрипте.

см .: Полностью Pwn CSS с Javascript

Вы можете попробовать jquery empty().append() вместо использования html() или innerHTML для IE 6 - IE 8. Он работает для меня, загружая полный html-документ со встроенным стилем. Вот пример кода.

var url = "inline.html";
$.ajax({
    url: url,
    success: function (html) {
        $('#content').empty();
        $('#content').append(html);
    },
    error: function () { return null; }
});

Для получения дополнительной информации проверьте ссылку в блоге Решение: проблема со встроенным CSS и вызов Ajax с IE6 на IE8

Другие вопросы по теме