Javascript 为什么DOMParser.parseFromString()返回未初始化的文档?
因为我是一个爱尴尬的人,所以在关于JavaScript合成文档的一系列愚蠢问题中,我还有另一个问题 下面是:Javascript 为什么DOMParser.parseFromString()返回未初始化的文档?,javascript,dom,Javascript,Dom,因为我是一个爱尴尬的人,所以在关于JavaScript合成文档的一系列愚蠢问题中,我还有另一个问题 下面是:createDocument,createHTMLDocument,newdocument()和DOMParser.parseFromString()都返回新文档。前三个都返回完整的文档,而DOMParser.parseFromString()返回的文档未初始化。知道为什么吗?(我打赌我会犯一些愚蠢的JavaScript错误。) 如果您想测试,下面是一些代码: <script>
createDocument
,createHTMLDocument
,newdocument()
和DOMParser.parseFromString()
都返回新文档。前三个都返回完整的文档,而DOMParser.parseFromString()
返回的文档未初始化。知道为什么吗?(我打赌我会犯一些愚蠢的JavaScript错误。)
如果您想测试,下面是一些代码:
<script>
function doit() {
var doc1 = document.implementation.createDocument (null, 'html', null);
console.log(doc1.readyState); // complete
var doc2 = document.implementation.createHTMLDocument("HTML Doc");
console.log(doc2.readyState); // complete
var doc3 = new Document();
console.log(doc3.readyState); // complete
var parser = new DOMParser;
var doc4 = parser.parseFromString("<!doctype html>", "text/html");
console.log(doc4.readyState); // uninitialized
}
window.onload = doit;
</script>
函数doit(){
var doc1=document.implementation.createDocument(null,'html',null);
console.log(doc1.readyState);//完成
var doc2=document.implementation.createHTMLDocument(“HTML文档”);
console.log(doc2.readyState);//完成
var doc3=新文档();
console.log(doc3.readyState);//完成
var parser=新的DOMParser;
var doc4=parser.parseFromString(“,“text/html”);
console.log(doc4.readyState);//未初始化
}
window.onload=doit;
ETA:以上是Firefox上的结果。Chrome返回“interactive”。仍然不确定原因。只是猜测,但字符串可能包含需要异步加载的元素,如
,在加载之前它不会准备就绪。本例中的字符串是“”,因此我不确定这是否是问题所在。但它可能包含其他内容。因此,接口总是返回一个未完成的文档。更让人困惑的是,它看起来像是doc4.readyState
在IE11中是“完整的”。