需要帮助来更好地理解chrome扩展

时间:2017-05-05 06:26:47

标签: javascript google-chrome-extension

我刚刚完成了一个chrome扩展的alpha版本,它可以从字典网页解析日文并将其显示为闪存卡。它是传递DOM并解析所有类型数据的单个js。

现在,扩展程序正在网页内创建一个div元素来存储所有数据,我想将其从我的扩展程序移动到弹出窗口。

所以我添加一个弹出窗口并点击图标

  "browser_action": {
"default_icon": "icon19.png",
"default_title": "Tangorin extention is active",
"popup": "popup.html"

}

什么都没发生,所以我认为可能是因为我告诉他在我的eventHandler上打开一个特定的页面,所以我需要一些能告诉它打开弹出窗口的东西。我向外看,发现了一些东西,它会在你的扩展程序中调用消息连接。

所以我跟着google guild并在我的eventHandler

中做了类似的事情
chrome.browserAction.onClicked.addListener(function(activeTab)
{
    var newURL = "http://tangorin.com/examples/";
    chrome.tabs.create({ url: newURL });
});

chrome.runtime.onMessageExternal.addListener(
  function(request, sender, sendResponse) {
    console.log(sender.tab ?
                "from a content script:" + sender.tab.url :
                "from the extension");
    if (request.greeting == "hello")
      console.log("message");
  });

此外,我认为这称为从网页发送消息,因此我添加了权限以及将在我的脚本上调用它的内容。

  "externally_connectable": {
    "matches": ["*://*.tangorin.com/examples/*"]
  }

会在我的剧本上调用它。

function print_results() {
  //bla bla
  chrome.runtime.sendMessage({greeting: "hello"});
}

没有任何反应,chrome.runtime.sendMessage没有在eventHandler中触发该函数。

我是否在正确的轨道上?或者有更好的方法让它打开弹出窗口? 我还不太了解扩展开发,但我设法让它工作到现在。

提前致谢, 或

编辑:也许我可以在用户点击内容脚本创建的对象时打开默认弹出窗口?

1 个答案:

答案 0 :(得分:1)

  1. 列表项
  2. 创建后台脚本background.js。
  3. 下一步加入你的minifet.json:
  4.   

    "background": { "scripts":["background.js"] }

    1. 在你的background.js脚本中添加:

      chrome.runtime.onMessage.addListener(
            function(request, sender, sendResponse) {
              if (request.greeting == "hello"){
                 console.log("message");
                 sendResponse({status:"Message delivered success!"});
              }          
      });
      
    2. 在popup.html中添加脚本main.js,代码为:

         function print_results() {
            //bla bla
            chrome.runtime.sendMessage({greeting: "hello"});
          }
      
    3. 并查看此内容以便更好地理解https://developer.chrome.com/extensions/messaging。 希望它有所帮助。