首页 > 解决方案 > chorme 扩展错误:未捕获的 ReferenceError:未定义窗口

问题描述

我正在开发一个 Chrome 扩展程序(没有太多经验),我有以下代码:

window.onload = function () {
    validateCNPJ();
};

function validateCNPJ() {
    document.querySelector('div[data-field-name="CNPJ"] > input').addEventListener('keydown', (bla) => {
        let ble = bla.target.value;
        console.log(ble.length)
        if (ble.length > 17) {
            bla.preventDefault()
            bla.stopPropagation()
            return
        }

        ble = ble.replace(/\D/g, "")
        ble = ble.replace(/^(\d{2})(\d)/, "$1.$2")
        ble = ble.replace(/^(\d{2}).(\d{3})(\d)/, "$1.$2.$3")
        ble = ble.replace(/.(\d{3})(\d)/, ".$1/$2")
        ble = ble.replace(/(\d{4})(\d)/, "$1-$2")
        bla.target.value = ble;
    })
}

我添加了 window.load 以便在页面加载时激活 validateCNPJ 功能。该功能实时验证表单中的特定字段。

问题是,当我上传扩展程序时,它会显示一条错误消息:

Uncaught ReferenceError: window is not defined

我在浏览器的控制台中测试了函数 validateCPNJ 中的代码,它工作正常。

清单文件是这样的:

{
    "name": "CRM Validation Extension",
    "description": "Extension that validate fields of a opportunity",
    "version": "0.1",
    "manifest_version": 3,
    "background": {
        "service_worker": "background.js"
    }
}

我能做些什么来解决这个问题?

谢谢!

标签: javascriptgoogle-chrome-extension

解决方案


我设法解决了这个问题。以前我的 manifest.json 是这样的:

{
    "name": "CRM Validation Extension",
    "description": "Extension that validate fields of a opportunity",
    "version": "0.1",
    "manifest_version": 3,
    "background": {
        "service_worker": "background.js"
    }
}

我更改了背景对象并替换为以下内容:

"content_scripts":[
        {
            "matches": [
                "<all_urls>"
            ],
            "js": ["background.js"]
        }
    ]

这解决了我遇到的问题。


推荐阅读