[英]Communicate data from popup to content script injected by popup with executeScript()
[英]How to send data from website to popup with executeScript?
我從網站上正確獲取數據,但如何將其發送到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的末尾。
根據文檔 ,
“腳本的結果是最后計算的語句”
因此,請使用executeScript
的回調,但不要在getdata.js中使用console.log(array)
,而是嘗試僅添加一行:
array;
作為最后一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.