我正在尝试在我的 chrome 扩展中加载 OpenCV,但它显示为未定义,尽管其他库加载得很好。
manifest.json
{
"manifest_version": 3,
"name": "Screenshot App",
"version": "1.0",
"description": "This extension automatically takes screenshots of the screen",
"permissions": ["activeTab", "storage", "tabs","downloads"],
"web_accessible_resources": [
{
"resources": ["scripts/*"],
"matches": ["<all_urls>"],
"use_dynamic_url": true
}
],
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'self';"
},
"content_scripts": [
{
"js": ["scripts/content.js","scripts/html2canvas/html2canvas.js", "scripts/tessaract/tesseract.min.js","scripts/opencv/opencv.js"],
"matches": ["<all_urls>"]
}
],
"icons": {
"16": "camera.png",
"32": "camera.png",
"64": "camera.png",
"128": "camera.png"
},
"background": {
"service_worker": "scripts/service-worker.js"
},
"action": {
"default_popup": "popup.html"
}
}
我还尝试通过在网页本身中插入脚本来初始化它。 onload 函数被调用,当我尝试访问其中的 cv 时,它仍然抛出
ReferenceError: cv is not defined
内容.js
async function initializeCV() {
if (initializingCVPromise) {
return initializingCVPromise;
}
initializingCVPromise = new Promise(async (resolve, reject) => {
if (document.getElementById(CONSTANTS.scriptIdCV)) {
log("Already loaded script");
resolve();
} else {
const script = document.createElement("script");
script.id = CONSTANTS.scriptIdCV;
script.src = chrome.runtime.getURL("scripts/opencv/opencv.js");
(document.head || document.documentElement).appendChild(script);
script.onload = async function () {
log("Loaded OpenCV Script");
log(script.src);
onOpenCvLoaded();
resolve();
};
}
}).finally(() => {
});
return initializingCVPromise;
}
如何解决这个问题,我尝试了所有解决方案。