Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome extension抛出“a”;无法将未定义或null转换为object“;错误_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript Chrome extension抛出“a”;无法将未定义或null转换为object“;错误

Javascript Chrome extension抛出“a”;无法将未定义或null转换为object“;错误,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在构建一个扩展,该扩展将存储来自chrome选项卡的令牌(一旦您完成加载该特定选项卡,它将获取该令牌)。 当运行扩展时(通过按下按钮运行),它应该“获取”令牌并使用它创建ajax调用 这是对其作用的简单解释;代码如下: background.js: chrome.runtime.onInstalled.addListener(function() { chrome.declarativeContent.onPageChanged.removeRules(undefined, func

我正在构建一个扩展,该扩展将存储来自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
}
和popup.js(按钮激活功能):

我在devTools中得到以下错误,单击按钮后会发出undefined警报,我还使用StorageAreaExtension检查了扩展的存储区域,它显示扩展具有我试图获取的值

当我调试它时,在storage.local.get函数中,它抛出以下错误:

extension.binding的延迟要求未设置绑定字段 extensions::lastError:82:未捕获类型错误:无法转换未定义的 或null到对象{TypeError:无法将未定义或null转换为 反对


你知道为什么吗?我在过去几天里查阅了google,但没有找到任何可靠的修复方法。

chrome.*可以接受函数回调的API方法是异步的,因此实际工作是在当前代码上下文完成时执行的,因此
get
set
实际设置之前开始查找值(存储访问在内部有几个异步步骤)。此外,您已经声明了在所有页面上注入的内容脚本,而不管PageStateMatcher如何。我遇到了此异常,尽管令牌甚至没有被清除,并且自上次运行以来一直存在。因此,我发现您的解释有点欠缺,它唯一没有引发异常的时间是在我清除以前的数据之后。。但是..由于一些奇怪的原因,它的行为不一致。嗯,我的评论也适用于弹出窗口:您试图显示回调之外尚未检索到的值。事实就是这样。异步JavaScript就是这样工作的。请参阅chrome。*可能接受函数回调的API方法是异步的,因此实际工作是异步的当当前代码上下文完成时,因此
get
set
实际设置值之前开始查找该值(存储访问在内部有几个异步步骤)。此外,您已经声明了在所有页面上注入的内容脚本,而不管PageStateMatcher如何。我遇到了此异常,尽管令牌甚至没有被清除,并且自上次运行以来一直存在。因此,我发现您的解释有点欠缺,它唯一没有引发异常的时间是在我清除以前的数据之后。。但是..由于一些奇怪的原因,它的行为不一致。嗯,我的评论也适用于弹出窗口:您试图显示回调之外尚未检索到的值。事实就是这样。异步JavaScript就是这样工作的。请参阅
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);
        });
   }
$(function () {
    $('#btnGetHtml').click(function () {
        var token;
        chrome.storage.local.get('HrmsTkn', function (items) {
             if(items){
                token = items.HrmsTkn;  
             }
        });
    try {
            alert(token);
        }
    catch(e) {
        }
   });
});