我正在构建一个扩展程序,该扩展程序将存储来自Chrome选项卡的令牌(一旦您完成加载该特定选项卡,它将获取令牌)。 当运行扩展程序时(通过按下按钮运行它),它应该"得到"令牌并使用它来创建一个ajax调用。
这是对它的作用的简单解释;这是代码:
background.js:
chrome.runtime.onInstalled.addListener(function() {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { urlContains: 'h' }
})
],
actions: [new chrome.declarativeContent.ShowPageAction()]
}]);
});
});
清单:
{
"name": "Page action by URL",
"version": "1.0",
"description": "Shows a page action for urls which have the letter 'g' in them.",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"page_action": {
"default_icon": "images/icon32.png",
"default_title": "linkedin URL!",
"default_popup": "popup.html"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js" : ["getToken.js"],
"run_at":"document_end"
}
],
"permissions": [
"storage",
"activeTab",
"tabs",
"<all_urls>",
"cookies",
"declarativeContent",
"http://*/*",
"https://*/*"
],
"icons" : {
"48" : "images/icon32.png",
"128" : "images/icon32.png"
},
"manifest_version": 2
}
getToken.js:[内容脚本]
if(document.getElementById('HrmsTkn')){
chrome.storage.local.set({ 'HrmsTkn': document.getElementById('HrmsTkn').value});
chrome.storage.local.get('HrmsTkn', function(result){
alert('Got it' + result.HrmsTkn);
});
}
和popup.js(按钮激活功能):
$(function () {
$('#btnGetHtml').click(function () {
var token;
chrome.storage.local.get('HrmsTkn', function (items) {
if(items){
token = items.HrmsTkn;
}
});
try {
alert(token);
}
catch(e) {
}
});
});
我在devTools中收到以下错误,并且在单击按钮时收到未定义的警告,我还使用StorageAreaExtension检查了扩展的存储区域,其中显示扩展名具有我尝试获取的值。
当我调试它时,在storage.local.get函数中,它会抛出以下错误:
延迟要求extension.binding没有设置绑定字段 extensions :: lastError:82:未捕获TypeError:无法转换undefined 或null to object {TypeError:无法将undefined或null转换为 对象
任何想法为什么?过去几天我一直在谷歌上搜索,但没有找到任何可靠的修复方法。