从 Javascript 调用 Google Chrome 扩展

发布于 2024-12-06 21:56:15 字数 188 浏览 0 评论 0原文

有一个名为 Blipshot 的出色扩展页面截图。我需要使用页面级 JavaScript 调用扩展,而不是单击其图标。这可能吗?

There is an excellent extension called Blipshot which takes page screenshots. I need to invoke the extension with page level javascript, instead of clicking its icon. Is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半暖夏伤 2024-12-13 21:56:15

您不能从网页内调用扩展的任何方法。但是,可以将内容脚本注入网页,并使用 sendMessageonMessageonConnectconnect.

要编辑扩展程序:访问 chrome://extensions 页面,然后启用开发者模式。解压扩展和/或访问扩展的目录。编辑 manifest.json 文件,然后添加必要的行(请参阅此处)。

在后台页面添加event事件监听器。在内容脚本中添加轮询器,例如:

// Content script
var poller = window.setInterval(function() {
   if (document.documentElement.getAttribute('extensionCalled')) {
       chrome.extension.sendMessage({"anyname": "anything"}, function() {
           /*optional callback function.*/alert("Something happened")
       });
       clearInterval(poller);
   }
}, 200);

// Background
chrome.extension.onMessage.addListener(function(request, sender, callback) {
    if (request.anyname == "anything") {
        function_logic_here();
        //Optionally, callback:
        callback();
    }
});

另请参阅

参考资料:

You cannot invoke any methods of an extension from within a web page. However, it's possible to inject a content script into the web page, and use sendMessage and onMessage, or onConnect and connect.

To edit an extension: Visit chrome://extensions page, and enable the Developer mode. Unpack an extension and/or visit the extension's directory. Edit the manifest.json file, and add the necessary lines (see here).

Add an event event listener at the background page. Add a poller in the content script, eg:

// Content script
var poller = window.setInterval(function() {
   if (document.documentElement.getAttribute('extensionCalled')) {
       chrome.extension.sendMessage({"anyname": "anything"}, function() {
           /*optional callback function.*/alert("Something happened")
       });
       clearInterval(poller);
   }
}, 200);

// Background
chrome.extension.onMessage.addListener(function(request, sender, callback) {
    if (request.anyname == "anything") {
        function_logic_here();
        //Optionally, callback:
        callback();
    }
});

See also

References:

时光与爱终年不遇 2024-12-13 21:56:15

只有当扩展提供一个接口来执行此操作时,这才是可能的。扩展在隔离环境中运行,因此您无法直接访问它们的任何功能。

他们得到的最接近的是内容脚本,它可以访问 DOM。因此,您可以使用事件进行通信,但显然扩展需要为它们设置事件处理程序,因此它完全取决于扩展。

It would only be possible if the extension provides an interface to do it. Extensions run in an isolated environment, so you don't have direct access to any of their functions.

The closest they get is content scripts, which have access to the DOM. Because of that, you can communicate using events, but obviously the extension would need to set up event handlers for them, so it completely depends on the extension.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文