VSCode 报错 之 运行 js 文件报错 ReferenceError: document is not defined

1. 背景

持续学习ing

2. 遇到的问题

在VSCode 右键 code runner js 文件报错 ReferenceError: document is not defined

eg:

js 复制代码
// 为每个按钮添加点击事件监听器
document.querySelectorAll('button').forEach(function (button) {
    button.addEventListener('click', function () {
        // 获取当前按钮的data-phone和data-password属性值
        const phone = this.getAttribute('data-phone');
        const password = this.getAttribute('data-password');

        // 获取当前活动的标签页
        chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
            // 在当前标签页中注入并执行脚本
            chrome.scripting.executeScript({
                target: { tabId: tabs[0].id },
                function: login,
                args: [0, phone, password]
            });
        });

    });

报错的提醒:

3. 问题的原因

  1. js 脚本的运行环境有浏览器环境和 Node.js 两种,根据 Node.js 官方网站的介绍,Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.
  2. 上述代码调用了 Document 类型提供的方法 document.querySelectorAll('button').forEach(function (button),属于 DOM 的应用,但是对于 DOM 和 BOM 的操作只有在浏览器环境下才能进行,
  3. 在 VSCode 这里我用插件 Code Runner 来运行 js 脚本的,Code Runner 的配置是 Node.js
    环境,如果操作 DOM 就会报错。

4. DOM 和 BOM区别参考文章

https://blog.csdn.net/qq_52736131/article/details/123563321

相关推荐
kyriewen1 小时前
别再这样写条件渲染了——你的React组件里藏着这5种定时炸弹
前端·javascript·react.js
梦想CAD控件2 小时前
网页端CAD的图形选择、编辑与夹点操作教程
前端·javascript·node.js
月月大王的3D日记2 小时前
Three.js 入门系列(8):六种光源全解析 —— 关灯了,开光!
前端·javascript
自然 醒3 小时前
v-tooltip自定义指令封装
前端·javascript·vue.js
其美杰布-富贵-李5 小时前
第 10 篇:灯光与阴影
javascript·three.js
小高0077 小时前
🔥🔥🔥TypeScript 7 正式版来了:别只看 10 倍速度,这 4 个迁移坑更值得注意
前端·javascript·面试
di24k24k7 小时前
多个 el-form 共用同一 ref 导致表单校验部分失效
前端·javascript·vue.js·elementui
JKooll8 小时前
WPS 表格 DISPIMG 函数实战:用 JavaScript 将图片真正嵌入单元格
javascript·wps
晴天168 小时前
Rust 快速入门 (从 JavaScript 开发者视角)-Day09
开发语言·javascript·rust
其美杰布-富贵-李9 小时前
第 6 篇:相机与 OrbitControls
前端·javascript·three.js