javascript insertBefore方法导致“NotFoundError:尝试在不存在的上下文中引用节点”。

时间:2013-12-18 12:49:30

标签: javascript

这是我的HTML:

<html><body>
page starts here
this is a test page
top:
<script id="invoc_code" type="text/javascript">
    window.onload = function() {
        var xhr;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else {
           xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xhr.onreadystatechange = function() {
            var body = document.body;                                       
            if (xhr.readyState == 4 && xhr.status == 200) {
                if(body.firstChild){
                    body.insertBefore(xhr.response, body.firstChild);
                } else {
                    body.appendChild(xhr.response);
                }
            }
       };
       xhr.open("GET", "http://google.com", true);
       xhr.send(); 
    };
</script>;

page ends here
</body></html>

body.insertBefore(xhr.response, body.firstChild);导致“NotFoundError:尝试在不存在的上下文中引用节点”。你能告诉我是什么原因吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

insertBefore方法需要DOM元素作为其第一个参数。如果XHR响应是HTML字符串,那么您需要使用此字符串创建一个。根据您所需的DOM输出,您可以执行以下操作:

var newElem = document.createElement("div");
newElem.innerHTML = xhr.response;
body.insertBefore(newElem, body.firstChild);