2017-03-25 155 views
1

我已经通过MDN上的webextension文档。我知道信息API用于从content_scriptbackground script进行通信。但是,我想从popup script to background script进行沟通。firefox webextension从弹出脚本到后台脚本消息

我的使用情况是:

如何以background script从与popup.html页面的脚本进行通信。

比方说,manifest.json

{ 

    "description": "Demonstrating toolbar buttons", 
    "manifest_version": 2, 
    "name": "button-demo", 
    "version": "1.0", 
    "permissions" : ["activeTab","currentWindow"],// 

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

    "browser_action": { 
    "browser_style": true, 
    "default_popup": "popup.html", 
    "default_icon": { 
    "16": "icons/page-16.png", 
    "32": "icons/page-32.png" 
    } 
} 
} 

background.js

//background script is listening to 
browser.runtime.onMessage.addListener((sentMesssage) => 
{ 
    console.log('got the message: ',sentMessage.actualMessage); 
}); 

popup.html是

<html> 
    <body> 
    <script src = 'popup.js'></script> 
    </body> 
    <html> 

popup.js

我的问题站在这里。从以下选项使用哪种方法:

browser.runtime.sendMessage({"actualMessage":"some message"}); 

OR

var tabQ = browser.tabs.query({ 
    currentWindow: true, 
    active: true 
}); 

tabQ.then((tabs)=>{ 

browser.tabs.sentMessage(tab[0].id , {'actualMessage' : "some message"}); 

});

+2

的[在后台背景脚本之间的通信(背景脚本,浏览器操作,页面操作,选项页,等等。)可能的复制( http://stackoverflow.com/questions/41420528/communicate-between-scripts-in-the-background-context-background-script-browse) – Makyen

+0

请[edit]要成为话题的问题:include a [mcve]这是重复的问题。对于Chrome扩展程序或Firefox WebExtensions,这通常意味着包含您的* manifest.json *以及一些背景,内容和/或弹出式脚本/ HTML。寻求调试帮助的问题(“为什么代码不按我想要的方式工作?”)必须包括:(1)期望的行为,(2)特定问题或错误,以及(3)重现它所需的最短代码*在问题本身*。另请参阅:[我可以在这里询问什么主题?](http://stackoverflow.com/help/on-topic)和[问]。 – Makyen

+0

您的问题太宽泛。您在一个问题中涉及多个问题,Stack Overflow更关注每个问题的一个问题。您的文章包含一般问题,您没有提供[mcve]的多个调试问题,以及一些更具体的问题。请将您的问题集中在一件事上。 – Makyen

回答

0

我的问题站在这里。哪种方法来从下面的选项使用:

您使用browser.runtime.sendMessage({"actualMessage":"some message"});

+1

**来自复查队列**:我可以请求您请您在答案中添加更多的上下文。仅有代码的答案很难理解。如果您可以在帖子中添加更多信息,它可以帮助提问者和未来的读者。 – RBT

相关问题