从Javascript调用Google Chrome扩展程序

5

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

2个回答

6
您不能在网页中调用扩展的任何方法。但是,可以将内容脚本注入到网页中,并使用sendMessageonMessage,或onConnectconnect
要编辑扩展程序:访问chrome://extensions页面,并启用开发者模式。解压缩扩展程序并/或访问扩展程序目录。编辑manifest.json文件,并添加必要的行(请参见这里)。
在后台页面添加事件监听器。在内容脚本中添加轮询器,例如:
// 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();
    }
});

另请参阅

  • Chrome扩展-检索Gmail的原始消息 - 使用DOM事件在页面和扩展之间进行通信(推荐)
  • MDN:postMessage - 它可用于在页面和扩展之间进行通信(当页面本身也使用message事件时,此方法可能会导致冲突)。

参考资料:


5

只有当扩展程序提供接口时,才能实现此操作。扩展程序在隔离环境中运行,因此您无法直接访问其任何功能。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接