0

我正在开发一个简单的 Chrome 扩展程序。在内容脚本(称为script.js)中,我有以下代码:

(function() {
    "use strict";

    const buttonText = {
        enabled: "enabled",
        disabled: "disabled"
    }

    function inject() {
        if (window.location.search.includes(`&lc=`)) {
            var initialButtonText = buttonText.disabled //<-- POSSIBLE ERROR
        } else {
            var initialButtonText = buttonText.enabled //<-- POSSIBLE ERROR
        }

        //Do some more stuff...
    }

    document.addEventListener(`spfdone`, inject)
    inject();
})()

通常,此代码按预期工作。但是,有时它会在上面指出的两行之一引发错误script.js,说明buttonText未定义。在它抛出此错误之前,我已经能够在调试器中捕获它几次。在这些情况下,buttonText在顶级函数中定义但在内部不可见inject。我不知道在成功运行和产生错误的运行之间有什么变化。是否有众所周知的 JavaScript 或 Chrome 相关原因会发生这种情况?还是必须是我在代码中创建的问题?

这是扩展程序的清单,以防其相关:

{
    "manifest_version": 2,
    "name": "Title",

    "content_scripts": [
        {
            "matches": [
                "*://*.youtube.com/*"
            ],
            "css": [
                "styles.css"
            ],
            "run_at": "document_start"
        },
        {
            "matches": [
                "*://*.youtube.com/*"
            ],
            "js": [
                "script.js"
            ],
            "run_at": "document_end"
        }
    ]
}
4

0 回答 0