Chrome 扩展 - 如何将所做的更改保存到存储中?
Chrome extention - How to save changes that were made into storage?
我是编码新手,目前我正在尝试构建一个 chrome 扩展,它可以充当一个小笔记本并可以在里面存储东西。我已经完成了一个非常原始的例子,但它工作得很好。目前最大的障碍是如何在关闭弹出窗口和浏览器后保存更改。我做了一些研究,发现我可以使用 localStorage
来存储数据。然而我有点迷茫,不知道从哪里开始以及如何使用它。
这就是我所有的东西
manifest.json
{
"name": "1st extension",
"description": "Try to build an extention",
"version": "0.1",
"manifest_version": 3,
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html",
"default_title": "This is my first chrome extention",
},
"permissions": ["storage"],
"options_page": "options.html"
}
popup.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="button.css">
</head>
<body>
<p>Type in something and save it below!</p>
<textarea id="mytext" style="width: 300px;"></textarea>
<button id="submit">Submit</button>
<button id="clear">Clear</button>
<ul id="items"></ul>
<script src="popup.js"></script>
</body>
</html>
popup.js
var myButton1 = document.getElementById("submit");
var myButton2 = document.getElementById("clear");
var itemList = document.getElementById('items');
itemList.addEventListener('click', removeItem);
//add new element into the list
function addItem(input) {
// new element
var li = document.createElement("li");
// new delete button
var deletebutton = document.createElement("button");
//add classes to btn
deletebutton.className = "delete";
// text in the delete buttion
deletebutton.appendChild(document.createTextNode('Delete'))
// text in the new element
li.appendChild(document.createTextNode(input));
// combine text and the delete button
li.appendChild(deletebutton);
// conbine the element to the list
itemList.appendChild(li);
}
//remove item from the list
function removeItem(element){
itemList.removeChild(element.target.parentElement);
}
//clear the textarea
function clear(){
document.getElementById('mytext').value = "";
};
myButton1.onclick = function() {
var myText = document.getElementById('mytext').value;
addItem(myText);
clear();
}
myButton2.onclick = function() {
clear();
}
使用存储很容易...
localStorage.setItem('Phone','1234-5678');
然后回读...
var Phone=localStorage.getItem('Phone');
但我希望您知道数据不会以隐身模式存在 windows 而且...有些浏览器(至少是我的浏览器)无论如何都会在您退出浏览器后清除所有存储空间.
所以这是一个非常不稳定的解决方案,如果您正在寻找永久保存到硬盘上,则不适合。
让我检查一下 Google API,看看他们还有什么可以保存到 HD。
这是一种方法,但是处理斑点不适合新手...
https://developers.google.com/web/updates/2011/08/Saving-generated-files-on-the-client-side
我是编码新手,目前我正在尝试构建一个 chrome 扩展,它可以充当一个小笔记本并可以在里面存储东西。我已经完成了一个非常原始的例子,但它工作得很好。目前最大的障碍是如何在关闭弹出窗口和浏览器后保存更改。我做了一些研究,发现我可以使用 localStorage
来存储数据。然而我有点迷茫,不知道从哪里开始以及如何使用它。
这就是我所有的东西
manifest.json
{
"name": "1st extension",
"description": "Try to build an extention",
"version": "0.1",
"manifest_version": 3,
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html",
"default_title": "This is my first chrome extention",
},
"permissions": ["storage"],
"options_page": "options.html"
}
popup.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="button.css">
</head>
<body>
<p>Type in something and save it below!</p>
<textarea id="mytext" style="width: 300px;"></textarea>
<button id="submit">Submit</button>
<button id="clear">Clear</button>
<ul id="items"></ul>
<script src="popup.js"></script>
</body>
</html>
popup.js
var myButton1 = document.getElementById("submit");
var myButton2 = document.getElementById("clear");
var itemList = document.getElementById('items');
itemList.addEventListener('click', removeItem);
//add new element into the list
function addItem(input) {
// new element
var li = document.createElement("li");
// new delete button
var deletebutton = document.createElement("button");
//add classes to btn
deletebutton.className = "delete";
// text in the delete buttion
deletebutton.appendChild(document.createTextNode('Delete'))
// text in the new element
li.appendChild(document.createTextNode(input));
// combine text and the delete button
li.appendChild(deletebutton);
// conbine the element to the list
itemList.appendChild(li);
}
//remove item from the list
function removeItem(element){
itemList.removeChild(element.target.parentElement);
}
//clear the textarea
function clear(){
document.getElementById('mytext').value = "";
};
myButton1.onclick = function() {
var myText = document.getElementById('mytext').value;
addItem(myText);
clear();
}
myButton2.onclick = function() {
clear();
}
使用存储很容易...
localStorage.setItem('Phone','1234-5678');
然后回读...
var Phone=localStorage.getItem('Phone');
但我希望您知道数据不会以隐身模式存在 windows 而且...有些浏览器(至少是我的浏览器)无论如何都会在您退出浏览器后清除所有存储空间.
所以这是一个非常不稳定的解决方案,如果您正在寻找永久保存到硬盘上,则不适合。
让我检查一下 Google API,看看他们还有什么可以保存到 HD。
这是一种方法,但是处理斑点不适合新手...
https://developers.google.com/web/updates/2011/08/Saving-generated-files-on-the-client-side