javascript - 使用executeScript获取站点变量

标签 javascript google-chrome-extension

我有一个网站,其中有一个对象存储在 javascript 变量中,当我从 Web 控制台运行 images 时,这是输出:

Object {123: Array[3], 444: Array[3], 654: Array[3]}

我需要将此变量添加到我的扩展中。

我尝试使用此代码但没有成功:

content.js:

function exeecuteCode(tab, code, callback) {
    chrome.tabs.executeScript(tab.id, {code}, response => {
        debugger;
    });
}

index.js:

(function() {
    document.addEventListener('DOMContentLoaded', () => {
        chrome.tabs.getSelected(null, tab => {
            executeCode(tab, "if (typeof images !== 'undefined') document.getElementsByTagName('body')[0].setAttribute('tmp_images', JSON.stringify(images));\n";);
        });
    }, false);
}());

我的manifest.json包含content.js文件,如下所示。

manifest.json:

"content_scripts": [
    {
        "matches": ["<all_urls>"],
        "js": ["content.js"]
    }
]

我知道如何在将属性添加到 body 元素后检索回来。

唯一不起作用的是上面的代码。我没有收到任何错误,如果我在选项卡控制台中运行代码,它就会工作。

预先感谢您的帮助!

最佳答案

  1. chrome.tabs.executeScript 无法在内容脚本中调用,您需要将其移至后台页面
  2. 默认情况下,内容脚本将在 document_idle 运行。 ,这意味着在注入(inject)脚本之前已触发 DOMContentLoaded。您可以在调用 chrome.tabs.executeScript 时添加 runAt: 'document_start'或者只是删除外部 DOMContentLoaded 处理程序,这取决于您的需求。

关于javascript - 使用executeScript获取站点变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38565391/

相关文章:

javascript - 正则表达式:无法检查一行是否不以单词结尾

javascript - position:fixed 用于 float 的 div

javascript - 将表单输入传递给 highcharts 然后重建图表

Javascript:仅当找到标签时才剥离标签

javascript - 内容脚本与 bg 页面通信 [同步]

javascript - Ratchet PHP - 推送消息服务

javascript - 如何检查 chrome.storage 中是否设置了 key ?

javascript - 使用 Chrome 扩展修改 HTTP 请求的响应体

css - 新扩展可能需要许可?

popup - Chrome 扩展弹出页面链接不起作用