2017-05-05 86 views
0

我刚写完一个chrome扩展的Alpha,它从字典网页解析日语并将其呈现为闪存卡。它是传递DOM并解析所有类型数据的单个js。需要帮助才能更好地理解chrome扩展

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

所以我添加了一个弹出式窗口,点击该图标

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

}

什么都没有发生,所以我认为这可能是因为我告诉他我的点击事件处理程序打开一个特定的页面,所以我需要的东西会告诉它打开弹出窗口。我望向外面,发现一些信息要在你的扩展内部进行连接。

所以我也跟着谷歌公会和不喜欢的东西,在我的事件处理程序

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中的函数。

我在正确的轨道上吗?或者有更好的方法来打开弹出窗口? 我对扩展dev还不是很了解,但是直到现在我才设法让它工作。

由于提前, 或者

编辑:也许不是我可以打开默认弹出时,由于被内容脚本创建的对象,在用户点击?

+0

什么都在开发人员工具控制台来表明任何问题? –

+0

Chrome扩展程序是您希望在页面加载时运行的额外脚本。在将脚本作为扩展运行之前,先在chrome脚本栏上运行脚本以查看日志和错误。 – Vinayk93

+0

@ Vinayk93除了消息部分外,所有脚本都可以工作。 –

回答

1
  1. 列表项
  2. 创建背景脚本background.js。
  3. 添加在您的minifet.json未来:

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

  • 在你background.js脚本添加:

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

    function print_results() { 
         //bla bla 
         chrome.runtime.sendMessage({greeting: "hello"}); 
        } 
    
  • 并检查这对于更好地理解https://developer.chrome.com/extensions/messaging。 希望它有帮助。

    +0

    谢谢,我用这个链接为例。我的eventHandler是在minifet.json'“background”中注册的:{“commands”:[“eventsHandler.js”], “persistent”:false',并且看起来不像消息触发的东西。 –

    +0

    另外popup.html还不存在,我使用注册运行的js,当我进入网站 –

    +0

    也许我可以打开默认弹出窗口,当用户点击 –