javascript - 从外部 HTML 文档获取文本

标签 javascript html

我的目标是从 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 文件。

目前我收到以下错误。

Uncaught TypeError: Cannot read property 'body' of undefined

最佳答案

另一个窗口中的document.body之所以未定义,是因为另一个窗口还没有尚未加载并渲染文档。

一种解决方案是等待 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 将失败。

如果您只想获取另一个窗口的内容,那么使用 AJAX 可能是更好的选择。

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();
}

关于javascript - 从外部 HTML 文档获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413663/

相关文章:

javascript - 防止向上/向下箭头键更改焦点选择的选择

javascript - 如何在javascript中从本地PC获取目录的内容

jquery - 将 Prev 和 Next 按钮调整到表格的 Angular 落

javascript - Angular : passing index of object array from ng-repeat to access object data

javascript - 在sails.js 中停止模式的自动迁移

javascript - 使用ajax将数组数据从浏览器中的javascript传递到spring mvc Controller

javascript - 如何执行div悬停显示另一个div,但两个div的形式不同?

javascript - 嵌入页面时为什么要包含脚本的版本号?

javascript - 在reactjs中离开页面后将值保存在表单中

javascript - Twitter bootstrap 顶部导航栏中的奇怪间距