[英]Get value from localStorage to use in popup.html
我正在创建我的第一个chrome扩展程序,现在已经到了我似乎无法弄清的阶段。
基本上,我可以选择保存,但是我不知道如何在popup.html中检索值以使用它
这是我的代码:
的manifest.json
{
"manifest_version": 2,
"name": "My Extension",
"options_page": "options.html",
"permissions": [
"storage"
],
"description": "My Extension",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
options.js
// Save options to localStorage.
function save_options()
{
localStorage["url"] = document.getElementById("url").value;
// Let the user know the options were saved.
var status = document.getElementById("status");
status.innerHTML = "Saved OK";
setTimeout( function() { status.innerHTML = ""; }, 5000 );
}
// Populate options from from localStorage.
function load_options()
{
var url = localStorage["url"];
if (url == null) { url = ""; }
document.getElementById("url").value = url;
}
// call load_options top populate the GUI when the DOM has loaded
document.addEventListener('DOMContentLoaded', load_options);
// call save_options when the user clicks the save button
document.getElementById("save").addEventListener('click', save_options);
options.html
<html>
<head>
<head><title>My Options</title></head>
<body>
<div class="container">
<label for="url">
<p>My URL</p>
<input type="text" id="url" />
<button id="save">Save</button>
</label>
</div>
<div id="status"></div>
</body>
<script src="options.js"></script>
</html>
popup.html
<html>
<head>
</head>
<body>
<iframe src="myURL" id="myURL" name="myURL" width="200" height="200"></iframe>
</body>
</html>
这可以正常工作,在选项中,您可以保存您放入url字段中的所有内容。 现在,我想获取该保存的值,并使其成为popup.html中iframe的src(myURL)
示例:因此,在选项中,如果您输入并保存了http://www.google.com,则在popup.html中,iframe为:
<iframe src="http://www.google.com" id="myURL" name="myURL" width="200" height="200"></iframe>
任何帮助表示赞赏。
基本问题,可是您去了。
显然,要执行此操作,您需要JavaScript代码。 Chrome的内容安全政策禁止使用内联代码,因此该代码必须放入单独的.js
文件(例如popup.js
)中,并包含在HTML中:
<html> <head> <script src="popup.js"> </head> <body> <iframe id="myURL" name="myURL" width="200" height="200"></iframe> </body> </html>
该代码应:
一种。 从localStroage
读取值
湾 在页面上找到元素
C。 分配其src
属性。
// Read the value var url = localStorage.url; // or = localStorage["url"]; // or = localStorage.get("url"); // Find the element var element = document.getElementById("myUrl"); // Assign the property element.src = url; // or .setAttribute("src", url);
当然,通过删除临时变量url
和element
(请参见下文),可以将所有这些压缩为一行代码。
但是,这有一个问题。 读取<script>
元素时将执行代码-在读取#myURL
元素之前。 因此,它将失败,因为将找不到element
并且该element
将是未定义的。
有两种解决方法:
一种。 将<script>
标记移动到它所引用的元素下方,就像在options.html
所做的那样
湾 将代码包装在侦听器中,以了解页面已完全解析并准备就绪的事件。 我更喜欢这种解决方案。
document.addEventListener("DOMContentLoaded", function() { document.getElementById("myUrl").src = localStorage.url; });
进一步阅读:
DOMContentLoaded
事件 chrome.storage
API 。 要获取本地存储值,您可以执行以下操作
savedURL = localStorage.get('url') ;
然后在jQuery中是这样的
$('#myURL').attr('src',savedURL)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.