微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular 如何使用谷歌存储 API

如何解决Angular 如何使用谷歌存储 API

我不会使用 chrome 的存储扩展。我不断收到:chrome.storage 未定义。

即使我得到错误,它仍然存储我想要存储的数组。 这个块以某种方式工作:

<div id="content">
  <p>להאמית קרהשק this000 as well סכעיט דז מא,מנכם</p>
  <p>טיק מונופץ קליר,בנפת נפקט</p>
  <p>ת צשחמי צש בליא,מנסוטו צמלח</p>
  <p>סילקרגשח. <a href="http://google.com">ותלברו חשלו text וחאית נו</a> עמחליף לורם איפסום</p>
  <p>בעריר גק ליץ,ושבעגט more text here ליבם סולגק</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</div>
<div id="result">

</div>

我有一个清单文件,其中包含以下内容

  chrome.storage.local.set({'projectsToNotif': projectsForNotif},function() {
                        console.log('Projects to be notified are marked');
                    });

解决方法

我知道问题出在哪里,你的 manifest.json 文件中缺少一些字段,用这些新字段更新它们。

{
  "manifest_version": 2,"name": "Juju Web App","description": "App for internal use.","display": "standalone","version": "1.0","browser_action": {
  "default_icon": "icon.png","default_popup": "index.html"
  },"permissions": [
    "storage"
  ],"content_security_policy": "script-src ‘self’ ‘unsafe-eval’; object-src ‘self’","web_accessible_resources": [
  "assets/css/* ","assets/js/*","assets/fonts/*"
  ]
 }

现在对于访问 chrome 存储,我建议构建一个可以处理它的服务,这里是将处理 chrome 存储 API 的基本服务。

如果您不想构建自己的服务,可以使用此包 ng2-chrome-storage

import { Injectable,NgZone,Optional } from '@angular/core';

export class Settings {
    storeKey: string = 'hhappsettings';  // identifier to be used as a key for storage
    data: any = {};
  }

@Injectable({
    providedIn: 'root'
})
export class ChromeStorageService {

    storeKey = ''; // chrome storage key
    config: any;     // holds settings

    constructor(private zone: NgZone,@Optional() _settings: Settings) {
        let usethisSettings = (_settings)? _settings : new Settings();
        this.config = usethisSettings.data;
        this.storeKey = usethisSettings.storeKey;
      }

      // to be used inside a resolver
  load() {
    return this.getChrome(this.storeKey,this.config).then((data: any) => {
      this.config = data;
      return data;
    });
  }


   // remove a key
   remove(key: string): Promise<boolean> {
    return new Promise((resolve,reject) => {
      if (window['chrome'] !== undefined && window['chrome'].storage !== undefined) {
        window['chrome'].storage.sync.remove(/* String or Array */key,() => this.zone.run(() => {
          resolve(true);
        }));
      } else {
        localStorage.removeItem(key);
        resolve(true);
      }
    });
  }


  getChrome(key: string,defaults = {}): Promise<any> {
    return new Promise((resolve,reject) => {
      if (window['chrome'] !== undefined && window['chrome'].storage !== undefined) {
        let saveObj = {};
        saveObj[key] = defaults;
        window['chrome'].storage.sync.get(/* String or Array */saveObj,(data) => this.zone.run(() => {
         resolve(data[key]);
        }));
      } else {
        let object =  (localStorage.getItem(key) === null) ? defaults : JSON.parse(localStorage.getItem(key));
        resolve(object);
      }
    });
  }

}

希望这能回答你的问题:)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?