javascript - 如何在 Chrome 扩展中从本地存储读取和写入 div 的内容?

标签 javascript google-chrome-extension local-storage

我正在尝试构建一个扩展,允许用户将一些参数放入弹出窗口中的文本框中,使用该信息生成一个链接并将其添加到所述弹出窗口中。我已经完成了所有工作,但不用说,每次用户重新打开扩展程序时它都会被刷新。我希望保留其中的信息,但似乎无法使其发挥作用。这是我到目前为止所得到的:

ma​​nifest.json

{
  "manifest_version": 2,
  "name": "Test",
  "description": "Test Extension",
  "version": "1.0",

  "permissions": [
    "http://*/*", 
    "https://*/*"
  ],

  "browser_action": {
    "default_title": "This is a test",
    "default_popup": "popup.html"
  }
}

popup.html

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="linkContainer"/>
<input type="text" id="catsList"/>
<button type="button" id="addToList">Add</button>
<script src="popup.js"></script>
</body>
</html>

popup.js

function addCats() 
{
    var a = document.createElement('a');
    a.appendChild(document.createTextNode(document.getElementById('catsList').value));
    a.setAttribute('href', 'http://google.com');
    var p = document.createElement('p');
    p.appendChild(a)
    document.getElementById('linkContainer').appendChild(p);
    indexLinks()
}

function indexLinks() 
{
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) 
    {
        (function () 
        {
            var ln = links[i];
            var location = ln.href;
            ln.onclick = function () 
            {
                chrome.tabs.create({active: true, url: location});
            };
        })();
    }
};

document.getElementById('addToList').onclick = addCats;

我的猜测是我需要类似的东西

localStorage['cointainer'] = document.getElementById('linkContainer');

在 addCats() 的末尾并调用类似的内容

function loadLocalStorage()
{
    var container = document.getElementById('linkContainer');
    container.innerHTML = localStorage['container'];
}

一开始,但是这样做并没有成功。不确定出了什么问题。

此外,如果有不同的方式来保存用户添加的内容,我会乐意接受。

最佳答案

localStorage仅支持存储字符串值。您无法存储整个 HMTL 元素。

localStorage['foo'] = 'bar';
localStorage['foo'] = JSON.stringify({'bar': 'baz'});
localStorage['foo'] = JSON.stringify(['bar', 'baz', 'qux']);

您必须迭代要保存的元素列表,将字符串值放入数组中,并在将其保存到 localStorage 之前使用 JSON.stringify 。然后在加载时,您从 localStorage 中提取值,JSON.parse 它,并为数组中的每个值创建新的 HTML 元素。

关于javascript - 如何在 Chrome 扩展中从本地存储读取和写入 div 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23965555/

相关文章:

javascript - localStorage 在 IE9 和 Firefox 中不工作

javascript - 如何在 mailto 函数中格式化文本

javascript - 单击 CSS 框加载另一个网页。 CSS 还是 JS?

google-chrome-extension - 发生错误 : Failed to process your item

json - 如何运行react(使用webpack)作为chrome扩展

javascript - 删除多个 localStorage 项

javascript - 如何在下一个 js 中使用本地或 session 存储

javascript - Webpack-merge 和 Object.assign() 有什么区别?

javascript - 如何使用类似映射的函数创建数组的浅拷贝?

javascript - 对 URL 的异步调用