I would like to store user data for my chrome extension, I can use either storage.sync or storage.local.
When using storage.sync, the stored data will automatically be synced to any Chrome browser that the user is logged into, provided the user has sync enabled.
In the following example, I will utilize storage.sync to fulfill this requirement
How-To
Steps are as bellows:
1. Add options_page and storage permissions in manifest.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { "manifest_version": 2, "name": "Build Chrome Extension With AngularJS", "description": "利用 AngularJS 建置 Chrome Extension ", "version": "1.0", "permissions": [ "activeTab", "storage"], "browser_action": { "default_icon": "img/icon.png", "default_popup": "todo.html", "default_title": "Build Chrome Extension With AngularJS" }, "commands": { "_execute_browser_action": { "suggested_key": { "default": "Alt+Shift+D" } } }, "options_page": "options.html" } |
2. Add options.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!DOCTYPE html> <html> <head> <title>設定初始工作</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="js/angular.min.js"></script> <script src="js/bootstrap.min.js"></script> <link href="css/bootstrap.min.css" rel="stylesheet" media="screen"> <script src="js/options.js"></script> </head> <body> <div ng-app="optionsApp" ng-controller="optionController" class="container" > <div class="row"> <label>inital task:</label> <input id="initialTask" name="initialTask" ng-model='initialTask' autofocus="true"> <button id="save" class="btn btn-primary btn-md" ng-click="addInitialTask()"> <i class="glyphicon glyphicon-pencil"></i> </button> </div> </div> </body> </html> |
3. Add options.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | angular.module('optionsApp', []) .controller('optionController', function($scope) { $scope.initialTask = ''; $scope.addInitialTask = function () { var initialTask = $scope.initialTask; // Save data using the Chrome extension storage API. chrome.storage.sync.set({ 'initialTask' : initialTask }, function () { alert("設定成功!"); }); } }); function init(){ // Get data using the Chrome extension storage API. chrome.storage.sync.get( 'initialTask' , function(data) { document.getElementById('initialTask').value = data.initialTask; }); } // call init function as page loaded document.addEventListener('DOMContentLoaded', init); |
4. Reload extension and do test
Reference
[1] https://developer.chrome.com/extensions/storage
No comments:
Post a Comment