javascript - 在 nodejs 中使用 Document 对象

标签 javascript html css node.js macos

我还是 javascript 和 node.js 的新手,正在尝试完成一些事情,但我遇到了错误 ReferenceError: Document not defined

在单独的文件中给出以下代码:

索引.html:

<!DOCTYPE html>
<html>
<head>
    <title>My Test Website</title>
    <script type="text/javascript" src="script.js"></script>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <p id="para1"> Some text here</p>
</body>
</html>

和 script.js:

function getParagraphContents() {
    var paragraph = document.getElementById("para1");
    var temp = paragraph.textContent;
    console.log(temp);
}

所以我的问题是我希望能够从命令行运行命令 node script.js 但不断收到错误消息。我一直在阅读其他答案和文档,但似乎没有什么是正确的答案。有什么建议么?附言我在 mac osx 上使用终端并正确安装了 Node 和 npm。

谢谢。

最佳答案

script.js 是一个设计用于在浏览器中运行的脚本,而不是在 node.js 中。它旨在对当前网页进行操作,并使用 document 对象来访问该页面。

node.js 执行环境与浏览器不同。例如,没有像浏览器中那样的“当前页面”的概念,因此也没有像浏览器中那样的全局 documentwindow 对象.

所以,这一切都解释了为什么尝试运行 node script.js 不起作用。没有全局 document 对象,因此您的脚本会迅速生成错误并退出。


如果您只是不真正理解在浏览器中运行脚本与在 node.js 环境中运行脚本之间的区别,那么我们无法从您的问题中真正分辨出来,这就是您需要解释的全部内容,或者您​​是否真的了解想在 node.js 中操作 HTML 文档?

可以在 node.js 中操作 HTML 页面。通常的做法是获取像 jsdom 这样的 HTML 解析库。然后,您可以使用该库加载一些 HTML 页面,它将创建一个模拟的浏览器 DOM,并使诸如 document 对象之类的东西对您可用,这样您就可以在 HTML 文档上执行类似浏览器的脚本。

关于javascript - 在 nodejs 中使用 Document 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38748996/

相关文章:

html - 粘性页脚在横向方向中断

Safari 6 边框在设置边框半径后悬停后挥之不去

javascript - 在 Internet Explorer 11/Edge 中使用谷歌按钮登录

javascript - 自定义光标随着窗口滚动而移动

html - 影响文本的CSS不透明度过渡

html - 链接图像的 html 列表中不需要的填充或间隙

javascript - Swiper-slide 垂直显示而不是水平显示

javascript - 停止对话框中的默认 onOK 关闭 CKEDITOR 对话框

java - 发送字符串到php服务器

javascript - jQuery 脚本在控制台中运行,但不在文件中运行