【问题标题】:Returning the innerHTML from a URL从 URL 返回 innerHTML
【发布时间】:2018-01-06 12:57:16
【问题描述】:

我正在尝试从 URL 中获取 innerHTML 元素,我正在使用以下代码:

var getHTML = function (url, callback) {
    if (!window.XMLHttpRequest) return;

    var xhr = new XMLHttpRequest();
    xhr.onload = function() {
        if (callback && typeof(callback) === 'function') {
            callback(this.responseXML);
        }
    }

    xhr.open('GET', url);
    xhr.responseType = 'document';
    xhr.send();
}

getHTML('http://www.example.com/page', (response) => {
    var pageContents = document.querySelector(root).innerHTML;
})

运行程序时出现以下错误:

if (!window.XMLHttpRequest) return;
^

ReferenceError: window is not defined

我该如何解决这个问题?

【问题讨论】:

  • 您在哪个页面上尝试?
  • 请记住,许多网站不允许来自外部页面的 AJAX 请求。
  • 你是在 node.js 上运行这个吗?因为显然 node.js 没有 window 变量,但浏览器版本有。
  • 为什么不使用 jQuery ajax 而不是 javascript XMLHttpRequest?
  • 您是否在浏览器中运行此脚本?你使用任何模块系统吗?

标签: javascript html node.js httprequest


【解决方案1】:

好的,所以您正在使用 Node.js。 Node.js 没有任何称为窗口的东西,因为浏览器 javascript 上下文中的窗口就是浏览器窗口。

Node.js 没有它,因为它运行在服务器上,要通过 node.js 发出 http 请求,您可以使用以下模块:

  1. node-fetch
  2. axios
  3. request

只需执行 npm install [modulename] 即可安装它们。你可以在 npmjs.org 上找到它们的文档

【讨论】:

    猜你喜欢
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多