我正在开发一个简单的 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"
}
]
}