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

相关推荐
非优秀程序员12 小时前
第07章 孙德良的阳谋|《互联网产品恩仇录》
javascript·后端
程序员大阳16 小时前
HTML+CSS+JS对话式实战(5)-活动管理页之查看报名名单的实现
javascript·css·html·查看报名名单
新*18 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
OpsEye19 小时前
别再挨个充会员了:多模型编码,最麻烦的从来不是选模型
javascript·ai编程
学以智用21 小时前
jsencrypt.js 完整详解
javascript
Hilaku1 天前
你们公司有 35 岁以上的前端吗?
前端·javascript·程序员
鸿蒙开发1 天前
小程序存档写到一半怎么办?双槽保存与损坏恢复实战
前端·javascript·react.js
知忆_IS1 天前
TerriaMap 开发实战04:MVT数据自定义符号化 - terriajs源码修改
javascript·webgis·terriamap·terriajs
云上工程笔记1 天前
SRT字幕一键转手绘动画:srt-whiteboard-animation的复刻实录
大数据·开发语言·javascript·人工智能·机器学习
独隅1 天前
WebStorm macOS 安装部署与高效调优完全指南
ide·macos·webstorm