我正在尝试加载外部html文件并对正文中的内容进行字符串化,但似乎无法在不产生不良结果的情况下执行此操作。有没有办法做到这一点?
var xhr = new XMLHttpRequest();
function loadFile(){
xhr.open("GET", 'index.html');
xhr.responseType = "document";
xhr.send();
}
xhr.onload = function(data) {
myData = data;
myString = JSON.stringify(myData.srcElement.responseXML.body.children);
console.log(myString)
//logs: {"0":{},"length":1}
}
loadFile();
但我需要加载的是实际的div内容,例如:
//log: '<div id ='mydiv'>...</div>
我做错了什么?
答案 0 :(得分:0)
你的问题不是很清楚,但我想尝试一下。灵感来自那里:https://stackoverflow.com/a/7539198/1636522。演示:http://jsfiddle.net/wared/fezc6tnt/。
function string2dom (html) {
var iframe, doc;
iframe = document.createElement('iframe');
iframe.style.display = 'none';
document.body.appendChild(iframe);
doc = iframe.contentDocument || iframe.contentWindow.document;
iframe.parentNode.removeChild(iframe);
doc.open();
doc.write(html);
doc.close();
return doc;
}
var dom = string2dom(''
+ '<html>'
+ '<head>'
+ '<title>test</title>'
+ '</head>'
+ '<body>'
+ '<div id="test">allo la <b>terre</b></div>'
+ '</body>'
+ '</html>'
);
document.body.innerHTML = (
dom.getElementById('test').innerHTML
);
答案 1 :(得分:0)
我能够通过将响应类型更改为“DOMString”来解决这个问题:
function buildAd(file){
xhr.open("GET", file);
xhr.responseType = "DOMString";
xhr.send();
}