0
私はウェブサイトからデータを正しく取得していますが、popup.jsに送信する方法はありますか?私はexecuteScriptのコールバックを試みたが、それは私のために働くdoesnt。Webサイトから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"]
}
}
}
EDIT: 1.データを取得するには、配列を追加した後でexecuteScriptを使用します。 getdata.jsの最後にあります。
- アレイの送信方法。 popup.js/getdata.jsからloaddata.jsに移動しますか?
ので
、
executeScript
のコールバックを使用する代わりにconsole.log(array)
を使用しての、「スクリプトの結果は最後に評価文がある」documentationによると
ありがとうございます!それは動作し、私はpopup.jsの私のコンソールログで配列の値を見ることができます。しかし、私は別の問題がある、私はそれらの配列から送信する必要があります。 popup.jsから私のloaddata.jsへ(私はloadData()とloaddata.jsを私の質問に追加しました) – icedoutxcv
getdata.jsからコールバックを取得すると、配列を変数background.jsに格納できます。次に、loaddata.jsを挿入するときに、そのスクリプトで拡張機能にchrome.runtime.sendMessageを実行させます。ドキュメントで確認してください。バックグラウンドスクリプトでは、メッセージのリスナーを設定し、loaddataからメッセージを受け取ったら、配列変数を返すだけです。それは理にかなっていますか? – maxpaj
ある時点で、どこから始めるべきかわかりません。それは私の最初の拡張です、私は今chrome.tabsなどのような基本的なものだけです。あなたはこのステップのすべてを私に説明することができますか? – icedoutxcv