【发布时间】:2023-03-28 06:50:02
【问题描述】:
我正在尝试构建一个扩展,允许用户将一些参数放入弹出窗口的文本框中,使用该信息生成链接并将其添加到所述弹出窗口。我已经完成了所有这些工作,但不用说,每次用户重新打开扩展程序时它都会被刷新。我希望保留在那里的信息,但似乎无法让它发挥作用。到目前为止,这是我所拥有的:
manifest.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'];
}
一开始,但这样做并没有奏效。不知道出了什么问题。
另外,如果有不同的方法来保存用户的添加,我会向他们开放。
【问题讨论】:
-
出于好奇,您为什么在
for循环中使用IIFE? -
@Qantas94Heavy aha!干杯人。
标签: javascript google-chrome-extension local-storage