Chrome扩展程序注入当前标签页

StealthRT

您好,我正在创建一个Chrome扩展程序,并且在将一些JS注入到用户当前所在的页面标签中时遇到问题。

我有一个popup.html / .js文件和一个按钮:

popup.HTML:

<!doctype html>
<html>
<head>
<title></title>
  <link rel="stylesheet" href="/css/bootstrap.min.css" />
  <link rel="stylesheet" href="/css/jquery.nok.min.css" />
  <link rel="stylesheet" href="/css/materialize.min.css" />
  <link rel="stylesheet" href="/css/messagebox.min.css" />
  <link rel="stylesheet" href="/css/options.css" />
  <link rel="stylesheet" href="/css/style.css" />
  
  <script src="/js/jQuery.js"></script>
  <script src="/js/popup.js"></script>
  <script src="/js/inject.js"></script>
  <script src="/js/loadingoverlay.min.js"></script>
  <script src="/js/jquery.nok.min.js"></script>
  <script src="/js/content.js"></script>
</head>
<body style="width: 335px; height: 55px;">
  <div class="btn" id="injectIT_">Submit</div>
 </body>
</html>

popup.JS:

document.addEventListener('DOMContentLoaded', function (dcle) {
    $("#injectIT_").click(function() {
        callInject();
    }); 
});

Manifest.json:

{
  "name"                    : "Blah Extention",
  "version"                 : "11.17.2020",
  "manifest_version"        : 2,
  "author"                  : "David",
  "description"             : "Blah Extention",
  "options_page"            : "/html/options.html",
  "offline_enabled"         : true,
  "options_ui"              : {
    "page"                      : "/html/options.html",
    "chrome_style"              : true,
    "open_in_tab"               : true
  },
  "icons"                   : {
    "16"                        : "/img/16j.png",
    "48"                        : "/img/48j.png",
    "128"                       : "/img/128j.png"
  },
  "background"              : {
        "scripts"               : [ "/js/jQuery.js", "/js/background.js" ],
        "persistent"            : false
  },
  "browser_action"          : {
        "default_icon"          : "/img/16jD.png",
        "default_popup"         : "/html/popup.html",
        "default_title"         : "Push this to start"
  },
  "web_accessible_resources" : [ "/img/*", "/js/*", "/css/*", "/html/*" ],
  "content_scripts"          : [ {
        "matches"               : [ "http://*/*", "https://*/*" ],
        "all_frames"            : true,
        "run_at"                : "document_idle",
        "css"                   : [ "/css/messagebox.min.css", "/css/jquery.nok.min.css" ],
        "js"                    : [ "/js/jQuery.js", "/js/content.js", "/js/messagebox.min.js", 
                                   "/js/jquery.nok.min.js", "/js/loadingoverlay.min.js", "/js/popup.js" ]
  } ],
  "content_security_policy"  : "script-src 'self' 'unsafe-eval'; object-src 'self';",
  "permissions"              : ["http://*/", "https://*/", "file:///*/*", "storage", "tabs", "declarativeContent", "activeTab", "debugger", "downloads", "notifications", "unlimitedStorage", "contextMenus", "cookies", "webRequestBlocking", "nativeMessaging", "identity", "clipboardWrite"
  ]
}

background.JS:

...[more js code here]
chrome.runtime.onMessage.addListener(function(request,sender,sendResponse){
  if(request.message == 'Test')
    console.log('Got message');
    chrome.tabs.executeScript(null, { file: "/js/inject.js" }, function() {
        console.log("injected!");
    });
});
...[more js code here]

content.JS:

chrome.runtime.sendMessage({ "message": "Test" });

inject.JS:

function callInject() {
    var t       = "14774123",
        a       = "qtest",
        l       = "Rule",
    ...[more js code here]
};

当我单击图标时,弹出窗口显示我点击了按钮。没有任何反应,没有错误。

我想要它做的就是将JS注入到当前页面中,并继续执行inject.js文件中的js函数。

有人可以在这里发现我的错误操作吗?

齐夫·阿德勒(Ziv Adler)

查看您的日志

当您说没有错误时..您可能只查看了DOM日志,但是您也可以获得后台脚本日志,这将向您显示错误。

要查看后台脚本日志,请转到:chrome:// extensions /启用开发人员模式切换在右上角点击“检查视图:后台页面”

后台脚本控制台日志和调试器

代码修复

当我运行您的代码时,对我来说,问题是chrome.tabs.executeScript函数中的“ null”参数,null用于activetab,但是此时从chrome:// extensions / activetab加载扩展时间实际上是chrome:// extensions /

为了解决这个问题,我遍历了所有选项卡,并查看了具有URL popup.html且仅注入该选项卡的选项卡。您是否同时检查了DOM日志和后台页面日志?

manifest.json

      {
  "name"                    : "Blah Extension",
  "version"                 : "11.17.2020",
  "manifest_version"        : 2,
  "author"                  : "David",
  "description"             : "Blah Extension",
  "options_ui"              : {
        "chrome_style"              : true,
        "open_in_tab"               : true
  },
  "background"              : {
        "scripts"               : [ "js/background.js" ],
        "persistent"            : false
  },
  "browser_action"          : {
        "default_title"         : "Push this to start"
  },
  "content_scripts"          : [ 
        {
        "matches"               : [ "http://*/*", "https://*/*", "file://*/*" ],
        "all_frames"            : true,
        "run_at"                : "document_end",
        "js"                    : [ "js/content.js", "js/inject.js" ]
        }
        ],
  "permissions" : [
        "<all_urls>", 
        "tabs"
  ]
  }

js / background.js

chrome.tabs.query({}, function(tabs) {
for (var i=0; i<tabs.length; ++i) {
    console.log(tabs[i].url);
    if (tabs[i].url.indexOf("popup.html") > 0)
        chrome.tabs.executeScript(tabs[i].id, {file: "js/inject.js", allFrames: true});
}});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chrome扩展程序是否可以关闭当前标签页?

来自分类Dev

Chrome 扩展程序:获取当前标签页 url

来自分类Dev

将Javascript注入Chrome扩展程序的新创建的标签页中

来自分类Dev

如何在Chrome扩展程序中重定向当前标签页的网址?

来自分类Dev

在browser_action Chrome扩展程序中设置当前标签页的window.location.href

来自分类Dev

从Chrome扩展程序获取Chrome标签页pid

来自分类Dev

如何使用Chrome扩展程序关闭当前的Chrome标签?

来自分类Dev

在新标签页上触发Chrome扩展程序

来自分类Dev

在新标签页中打开Chrome扩展程序

来自分类Dev

Google Chrome扩展程序可打开“新标签页”

来自分类Dev

Chrome扩展程序仅在新标签页中正常运行

来自分类Dev

Chrome扩展程序在新标签页中运行js

来自分类Dev

Chrome扩展程序在新标签页上打开新标签页

来自分类Dev

是否可以在当前标签页中模拟隐身模式?(chrome扩展名)

来自分类Dev

Chrome扩展程序注入iframe

来自分类Dev

Chrome如何获取当前标签页的ID?

来自分类Dev

Chrome扩展程序-查找所有打开的标签页,并在所有标签页上执行脚本

来自分类Dev

Chrome扩展程序创建新标签页,并将消息从popup.js发送到新标签页的内容脚本

来自分类Dev

扩展程序可以关闭标签页吗?

来自分类Dev

如何通过Chrome扩展程序将类应用于活动的标签页

来自分类Dev

Chrome扩展程序-在新标签页中打开捕获的屏幕截图

来自分类Dev

如何在新标签页的Chrome扩展程序的多功能框中窃取焦点?

来自分类Dev

Chrome扩展程序:如何在新标签页中显示背景图片

来自分类Dev

Chrome扩展程序:尝试获取标签页网址时出现Background.js“ Uncaught TypeError”

来自分类Dev

Chrome扩展程序:打开新标签页而不会失去弹出窗口焦点

来自分类Dev

将邮件从devtools面板发送到Chrome扩展程序中的新标签页

来自分类Dev

每当我的Chrome扩展程序的标签页处于活动状态时,如何激活该功能

来自分类Dev

Chrome扩展程序可将多个标签页移动到新窗口

来自分类Dev

我怎么知道我的Chrome扩展程序是从“新标签页”页面调用的?

Related 相关文章

  1. 1

    Chrome扩展程序是否可以关闭当前标签页?

  2. 2

    Chrome 扩展程序:获取当前标签页 url

  3. 3

    将Javascript注入Chrome扩展程序的新创建的标签页中

  4. 4

    如何在Chrome扩展程序中重定向当前标签页的网址?

  5. 5

    在browser_action Chrome扩展程序中设置当前标签页的window.location.href

  6. 6

    从Chrome扩展程序获取Chrome标签页pid

  7. 7

    如何使用Chrome扩展程序关闭当前的Chrome标签?

  8. 8

    在新标签页上触发Chrome扩展程序

  9. 9

    在新标签页中打开Chrome扩展程序

  10. 10

    Google Chrome扩展程序可打开“新标签页”

  11. 11

    Chrome扩展程序仅在新标签页中正常运行

  12. 12

    Chrome扩展程序在新标签页中运行js

  13. 13

    Chrome扩展程序在新标签页上打开新标签页

  14. 14

    是否可以在当前标签页中模拟隐身模式?(chrome扩展名)

  15. 15

    Chrome扩展程序注入iframe

  16. 16

    Chrome如何获取当前标签页的ID?

  17. 17

    Chrome扩展程序-查找所有打开的标签页,并在所有标签页上执行脚本

  18. 18

    Chrome扩展程序创建新标签页,并将消息从popup.js发送到新标签页的内容脚本

  19. 19

    扩展程序可以关闭标签页吗?

  20. 20

    如何通过Chrome扩展程序将类应用于活动的标签页

  21. 21

    Chrome扩展程序-在新标签页中打开捕获的屏幕截图

  22. 22

    如何在新标签页的Chrome扩展程序的多功能框中窃取焦点?

  23. 23

    Chrome扩展程序:如何在新标签页中显示背景图片

  24. 24

    Chrome扩展程序:尝试获取标签页网址时出现Background.js“ Uncaught TypeError”

  25. 25

    Chrome扩展程序:打开新标签页而不会失去弹出窗口焦点

  26. 26

    将邮件从devtools面板发送到Chrome扩展程序中的新标签页

  27. 27

    每当我的Chrome扩展程序的标签页处于活动状态时,如何激活该功能

  28. 28

    Chrome扩展程序可将多个标签页移动到新窗口

  29. 29

    我怎么知道我的Chrome扩展程序是从“新标签页”页面调用的?

热门标签

归档