我的目标是从HTML文档中获取文本,该文档不会调用.jsp
文件中的任何函数。
我环顾四周,我认为我找到了问题的答案,但它似乎没有起作用,其他答案包括使用jQuery(我不熟悉并且不允许使用)。
到目前为止,这是我的代码:
function getText(divID) {
var w = window.open("test.html");
var body = w.document.body;
var div = document.getElementById(divID);
var textContent = body.textContent || body.innerText;
console.log(textContent);
//div.appendChild(document.createTextNode(textContent));
}
正如您所看到的,我正在尝试获取一个HTML文档的正文并将其显示在另一个HTML文档中。我在正确的轨道上吗?
编辑:好的,所以我似乎让我的问题很混乱。我在名为html.html
的HTML文档中调用该函数,但我希望从test.html
获取文本,然后将其显示在html.html
中。它必须是这样的,因为我不能假设我想要读取的HTML文档将包含我的.jsp
文件。
目前我收到以下错误。
未捕获的TypeError:无法读取未定义的属性“body”
答案 0 :(得分:1)
另一个document.body
window
中undefined
的原因是window
,原因是其他onload
尚未加载并呈现文档。
一种解决方案是等待function getText(divID) {
var w = window.open("test.html");
w.addEventListener("load", function() {
var body = w.document.body;
var div = document.getElementById(divID);
var textContent = body.textContent || body.innerText;
console.log(textContent);
});
}
事件。
getText
确保您在点击等用户事件上运行window.open
功能,否则function getText(divID) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 ) {
var body = xhr.response.body;
var div = document.getElementById(divID);
var textContent = body.textContent || body.innerText;
console.log(textContent);
}
};
xhr.open("GET", "test.html", true);
xhr.responseType = "document";
xhr.send();
}
将失败。
如果您只想获取其他窗口的内容,那么使用AJAX可能是更好的选择。
{{1}}