为什么HIERARCHY_REQUEST_ERR(3)在IE上添加div到div

时间:2011-04-21 02:10:29

标签: jquery ajax internet-explorer

我正在使用jQuery 1.5.2尝试将div从一个源动态加载到容器文档中的div中。当我在Firefox 4上加载文档时,文档会加载消息“Got it!”,但是当我在IE9上加载它时,当它尝试{1}将一个div放到另一个div时,我得到一个HIERARCHY_REQUEST_ERROR。 p>

这是容器:

.append()

这是线束脚本:

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script>
  <script type="text/javascript" src="/static/harness-script.js"></script>
</head>
<body>

  <div id="main_cont">
  </div>

</body>
</html>

widget.xhtml非常简单:

function load_stuff(widget_source) {
    var node = $(widget_source.documentElement).clone();
    // add the node to the main content
    $('#main_cont').append(node);
}

// Load and init the widget
$(document).ready(function() {
    resp = $.get(
        '/static/widget.xhtml',
        load_stuff
    );
});

如何重新编写它以使其跨浏览器工作?

1 个答案:

答案 0 :(得分:0)

jQuery团队的官方回答是loading XHTML into a DOM is not possible under IE

我找到的唯一解决方案是进行服务器端浏览器检测,并在浏览器为IE时将内容传输为“text / html”而不是“application / xhtml + xml”。

我想也可以编写一个客户端处理程序,它将不在IE上附加节点,并在IE上显式构建一个DOM,但是这对我来说不值得,因为我有权访问到服务器端。