我正确地从网站获取数据但是如何将其发送到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的末尾。
答案 0 :(得分:0)
“脚本的结果是最后一次评估的语句”
因此,请使用executeScript
的回调,但不要在getdata.js中使用console.log(array)
,请尝试只添加一行:
array;
作为最后一行。