如何使用executeScript将数据从网站发送到弹出窗口?

时间:2017-12-07 15:37:15

标签: javascript google-chrome google-chrome-extension

我正确地从网站获取数据但是如何将其发送到popup.js?我尝试过executeScript的回调,但它对我不起作用。

popup.js

function getData() {
    chrome.tabs.query({active: true, currentWindow: true},function(tabs) {
        chrome.tabs.executeScript(tabs[0].id,{
            file: 'getdata.js'
        });
    });
}
document.getElementById('clickme').addEventListener('click', getData);

 function loadData() {
            chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
              chrome.tabs.update(tabs[0].id, {url: tabs[0].url});
                chrome.tabs.executeScript(tabs[0].id,{
                    file: 'loaddata.js'
              });
             });
          }

document.getElementById('clickme2').addEventListener('click', loadData);

getdata.js

var div = document.querySelectorAll('div');
var array = [];
div.forEach(function(item) {
    item.getAttribute('data');
    array.push(item.getAttribute('data'));
});
console.log(array);

loaddata.js

         var div = document.querySelectorAll('div');
              div.forEach(function(item, i){
                            item.setAttribute('data', array[i]);
                        });

的manifest.json

{
    "manifest_version": 2,
    "name": "aa",
    "description": "bb",
    "version": "1.0",
    "icons": {
        "48": "icon.png"
    },
    "permissions": ["tabs", "<all_urls>", "contentSettings", "contextMenus", "unlimitedStorage"],
    "browser_action": {
        "default_icon": "icon.png",
        "default_popup": "popup.html"
    },
    "content_scripts": [
        {
            "js": ["jquery-3.2.1.min.js", "popup.js"]
        }
    }
}

编辑: 1.添加数组后,获取数据与executeScript一起使用;在getdata.js的末尾。

  1. 如何发送数组;从popup.js / getdata.js到loaddata.js?

1 个答案:

答案 0 :(得分:0)

根据documentation

  

“脚本的结果是最后一次评估的语句”

因此,请使用executeScript的回调,但不要在getdata.js中使用console.log(array),请尝试只添加一行:

array;

作为最后一行。