如何解决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> </p>
<p> </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 举报,一经查实,本站将立刻删除。