簡體   English   中英

如何使用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的末尾。

  1. 如何發送數組; 從popup.js / getdata.js到loaddata.js?

根據文檔

“腳本的結果是最后計算的語句”

因此,請使用executeScript的回調,但不要在getdata.js中使用console.log(array) ,而是嘗試僅添加一行:

array;

作為最后一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM