Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从chrome存储中获取所有项目_Javascript_Google Chrome_Iframe_Google Chrome Extension - Fatal编程技术网

Javascript 如何从chrome存储中获取所有项目

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

我正在进行小型镀铬扩展。在这里,我想说:

1) 当用户单击“我的扩展名”时,当前选项卡url将保存到浏览器的本地存储中。我使用以下代码执行此操作:

   **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
(现已修复)。谢谢提醒。很高兴这有帮助。