具有持久数据的Chrome扩展程序(数据存储)

时间:2016-03-04 08:55:56

标签: javascript google-chrome google-chrome-extension

我目前正试图让我的第一个Chrome扩展程序运行。学习一些Javascript和管理一些数据是一个非常简单的应用程序。我已经设法让我的简单扩展程序运行,但问题是如果我关闭扩展程序或单击页面上的其他位置,扩展程序中的数据将丢失。所以我想每次点击图标时都会重新启动扩展程序。   但我希望数据保留在我的扩展名中,即使我切换到另一个页面或关闭扩展名的stake窗口。

如何在扩展程序的运行时间内管理数据存储?

这是我的应用程序的代码。此时,按钮只会向{ "manifest_version": 2, "name": "Betting Extension", "description": "This extension will analyze your account history", "version": "1.0", "browser_action": { "default_icon": "icon.png", "default_popup": "popup.html" }, "permissions": [ "activeTab" ] } 元素添加5,以查看是否存储了值。

的manifest.json

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Tipico Analyzer</title>
        <script src="popup.js"></script>
        <link rel="stylesheet" href="Style.css">
    </head>

    <body style="width: 100px">
        <p>stake: <span id="stake">0</span>€</p>
        <p>profit: <span id="profit">0</span> €</p>
        <p>winning: <span id="winning">0</span> €</p>
        <button id="addPage">Add page</button>
    </body>
</html>

popup.html

document.addEventListener('DOMContentLoaded', function(){

    var checkPageButton = document.getElementById('addPage');
    checkPageButton.addEventListener('click', function(){

        d = document;
        var stake = parseFloat(d.getElementById('stake').innerHTML);


        document.getElementById('stake').innerHTML = stake + 5;

    }, false);


}, false);

popup.js

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    SFSafariViewController *vc = [[SFSafariViewController alloc] initWithURL:[NSURL URLWithString:@"https://www.google.com"]];
    self.window.rootViewController = vc;
    return YES;
}

1 个答案:

答案 0 :(得分:2)

在扩展程序的运行期间,有三种方法可以存储数据。

  1. background page中设置变量:通过在"persistent": true中设置manifest.json,后台页面将在您的扩展程序的运行时间内运行。
  2. 使用chrome.storage:您可以使用此API来存储,撤消和跟踪数据更改。 chrome.storage中的数据即使在重新启动后也可用,但如果您的扩展程序已卸载,则会丢失。

    chrome.storage.local.get([key], function (result) {
     var value = result[key];
    });
    chrome.storage.local.set({key: val});
    
  3. 使用localStorage

    var value = localStorage.getItem(key);
    localStorage.setItem(key, value);