我已经尝试了很多来自stackoverflow的建议解决方案,但是都没有用,我怀疑这可能与Cookie或新版本有关,所以我不得不最后问一遍:
我正在尝试在我的firefox Web扩展中使用Google(特别是Sheets)API,并且我已经下载了此文件:https://apis.google.com/js/api.js 并将其添加到我自己的脚本之前的“背景”-“脚本”下的我的manifest.json中,如下面的源代码所示。 这是本教程: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append
我的整个项目太大,所以我以较小的规模重新创建了这个问题:
test.js:
function onCreated() {
if (browser.runtime.lastError) { console.log(`Error: ${browser.runtime.lastError}`); }
else { console.log("Item created successfully"); }
gapi.client.setApiKey('testkey'); //This is the line that doesn't work
}
browser.contextMenus.create({
id: "testlbl",
title: "TEST LABEL - CLICK ME",
contexts: ["all"]
}, onCreated);
browser.contextMenus.onClicked.addListener((info, tab) => {
if(info.menuItemId == "testlbl") {
console.log("ACTION TRIGGERED");
console.log("JQUERY RESULT: "+$(location).attr('href'));
}
});
manifest.json:
{
"manifest_version": 2,
"name": "Testing",
"description": "Random stuff",
"version": "1.0",
"default_locale": "en",
"background": {
"scripts": ["api.js", "jquery-3.3.1.min.js", "test.js"]
},
"permissions": [
"contextMenus",
"activeTab"
]
}
messages.json:
{
"extensionName": {
"message": "TestLabel",
"description": "Name of the extension."
}
}
文件夹结构(如果需要对其进行测试):
mainFolder
--- test.js
--- api.js
--- jquery-3.3.1.min.js
--- manifest.json
--- _locales
------ en
--------- messages.json
我尝试以与您看到的相同的方式添加JQuery,只是为了确保我正确添加了脚本,并且效果很好。我从这里下载的: https://code.jquery.com/jquery-3.3.1.min.js
建议将下载作为解决方案:https://developer.chrome.com/extensions/contentSecurityPolicy#resourceLoading
问题是我在浏览器控制台中收到“ gapi.client未定义”,因此没有任何反应。我只输入了gapi.client.setApiKey('testkey');
行以测试Google API并缩小问题范围。