在IE6或IE7中使用AJAX加载HTML时,处理样式标记的最佳方法是什么?

在IE6或IE7中使用AJAX加载HTML时,处理样式标记的最佳方法是什么?,html,css,ajax,Html,Css,Ajax,我们的AJAX框架的工作原理是,它发回可能包含标记的HTML片段。然后,我们将该HTML片段设置为元素的innerHTML。在IE6/7中,它似乎忽略了标记,因此返回的HTML样式不正确 我想知道其他人是否遇到过类似的问题,如果是,他们是如何处理的。我知道我可以使用javascript库(我们使用YUI)动态获取外部样式表,因此我可以将其转换为外部样式表。只是想知道是否还有其他方法可以解决这个问题。当然,最好的方法是纯DOM解决方案,即使用document.createElement生成服务器返

我们的AJAX框架的工作原理是,它发回可能包含标记的HTML片段。然后,我们将该HTML片段设置为元素的innerHTML。在IE6/7中,它似乎忽略了标记,因此返回的HTML样式不正确


我想知道其他人是否遇到过类似的问题,如果是,他们是如何处理的。我知道我可以使用javascript库(我们使用YUI)动态获取外部样式表,因此我可以将其转换为外部样式表。只是想知道是否还有其他方法可以解决这个问题。

当然,最好的方法是纯DOM解决方案,即使用
document.createElement
生成服务器返回的所有元素

然而,(当然)有一个IE黑客可以解决
innertHTML
提出的一些问题。首先创建一个元素,将其
innerHTML
,然后将其附加到DOM,而不是将响应直接粘贴到DOM中

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

应该识别内联样式标记。不会显示Stylesheet块,因为它们是在页面的初始渲染时加载的

您可以在现有样式表中动态添加类,但您必须解析HTML片段以获取其中的内容并在脚本中执行


请参阅:

您可以尝试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; }
});

有关更多详细信息,请查看博客链接

这绝对是最可靠的方式,尤其是在涉及进一步操作时。IE 6/7根本不在表上使用innerHTML。还有,innertHTML?这就是雅虎使用的吗?