Javascript 如何从chrome存储中获取所有项目
我正在进行小型镀铬扩展。在这里,我想说: 1) 当用户单击“我的扩展名”时,当前选项卡url将保存到浏览器的本地存储中。我使用以下代码执行此操作:Javascript 如何从chrome存储中获取所有项目,javascript,google-chrome,iframe,google-chrome-extension,Javascript,Google Chrome,Iframe,Google Chrome Extension,我正在进行小型镀铬扩展。在这里,我想说: 1) 当用户单击“我的扩展名”时,当前选项卡url将保存到浏览器的本地存储中。我使用以下代码执行此操作: **popup.html** <body> <input type="url" id="urlfield" value=""> <button class="submit">Save</button> <script src="popup.js"></sc
**popup.html**
<body>
<input type="url" id="urlfield" value="">
<button class="submit">Save</button>
<script src="popup.js"></script>
</body>
**popup.js**
var storage = chrome.storage.local;
chrome.tabs.query({'active': true}, function (tabs) {
var url = tabs[0].url;
document.getElementById('urlfield').value = res;
});
var submitButton = document.querySelector('button.submit');
submitButton.addEventListener('click', saveChanges);
function saveChanges() {
var result=document.getElementById('urlfield').value ;
if (!result) {
message('No Url specified');
return;
}
// Save it using the Chrome extension storage API.
storage.set({'urlname': result}, function(all) {
// Notify that we saved.
//alert(result);
});
**popup.html**
拯救
**popup.js**
var存储=chrome.storage.local;
chrome.tabs.query({'active':true},函数(tabs){
var url=tabs[0].url;
document.getElementById('urlfield')。value=res;
});
var submitButton=document.querySelector('button.submit');
submitButton.addEventListener('单击',保存更改);
函数saveChanges(){
var result=document.getElementById('urlfield')。值;
如果(!结果){
消息(“未指定Url”);
返回;
}
//使用Chrome扩展存储API保存它。
storage.set({'urlname':result},函数(all){
//通知我们已保存。
//警报(结果);
});
这很好用
2) 现在,我试图在选项页面上以iframe的形式显示存储在本地存储中的所有url。
我使用以下代码执行此操作:
**options.html**
<body>
<iframe id="link" src=""></iframe>
<script type="text/javascript" src="options.js"></script>
</body>
**options.js**
var storage = chrome.storage.local;
loadChanges();
function loadChanges() {
storage.get(null, function(items) {
document.getElementById('link').src =items.urlname;
});
}
**options.html**
**options.js**
var存储=chrome.storage.local;
loadChanges();
函数loadChanges(){
storage.get(null,函数(项){
document.getElementById('link').src=items.urlname;
});
}
从上面看,只有一个url显示为iframe。我想显示存储中保存的所有url。您能建议我如何从存储中获取所有内容。使用storage.set({'urlname':result}
将结果
保存在storage.local中的键urlname
下,并覆盖存储在同一键下的上一个值
如果要保留URL列表,可以将其保存在数组中:
function saveChanges() {
...
// Save it using the Chrome extension storage API.
// First fetch the array of saved URLs
storage.get({ urlList: [] }, function (items) {
// Push the new URL in it.
// You should also check that it is not already saved.
items.urlList.push(result);
// Save the array back
storage.set({ urlList: items.urlList }, function () {
if (chrome.runtime.lastError) {
alert('ERROR: ' + chrome.runtime.lastError.message);
} else {
alert('Operation completed successfully !');
}
});
});
}
function loadChanges() {
// Retrieve the whole list
storage.get({ urlList: [] }, function (items) {
// Process the URLs one-by-one
for (var i = 0; i < items.urlList.length; i++) {
var url = items.urlList[i];
// Do something with this URL, e.g. create an iframe:
var iframe = document.createElement('iframe');
iframe.src = url;
document.body.appendChild(iframe);
}
});
}
函数saveChanges(){
...
//使用Chrome扩展存储API保存它。
//首先获取保存的URL数组
storage.get({urlist:[]},函数(项){
//在其中推送新的URL。
//您还应该检查它是否尚未保存。
items.urlist.push(结果);
//将数组保存回去
storage.set({urlist:items.urlist},函数(){
if(chrome.runtime.lastError){
警报('ERROR:'+chrome.runtime.lastError.message);
}否则{
警报(“操作已成功完成!”);
}
});
});
}
函数loadChanges(){
//检索整个列表
storage.get({urlist:[]},函数(项){
//逐个处理URL
对于(var i=0;i
我以这种方式使用了您的解决方案:document.getElementById('link')).src=url;若要将每个url显示为iframe,但它仍然只显示一个iframe,我是否做错了?是的。您只有一个iframe,只需更改此iframe中显示的url。请查看我的更新答案。谢谢!它可以工作。使用javascript appendChild显示DOM未定义错误。使用jquery将子项添加到为我工作。我在那行有一个输入错误。我用的是'iframe'
而不是iframe
(现已修复)。谢谢提醒。很高兴这有帮助。