Vol*_*ike 4 javascript ipc google-chrome-extension
我已阅读并重新阅读此页面,以及运行示例:
http://code.google.com/chrome/extensions/background_pages.html
但我似乎没有掌握如何在background.html,popup.html和content.js之间进行背景通信.我想发送消息来触发函数,获取响应并处理这些响应.地图样本有点接近帮助我,但我只是需要一些超级简单而且不需要所有地图的东西.(注意,我知道jQuery以及Javascript,所以如果你愿意,可以随意混合一些jQuery.)
Moh*_*our 17
所有扩展页面(后台页面,弹出窗口,信息栏,页面操作都在同一个扩展程序中运行.将其视为具有一个域的网页.该域名是您的扩展ID.这些扩展页面中的每一个都像常规页面(在开发网站时类似).
所有扩展页面(如上所述)都可以轻松地相互通信,您有多种方式可以这样做:
chrome.extension.getBackgroundPage()
你直接做到了!我尽可能地使用这种方法.在我看来它更干净.
var bkg = chrome.extension.getBackgroundPage();`
bkg.ping();`
Run Code Online (Sandbox Code Playgroud)chrome.extension.onRequest.addListener和chrome.extension.sendRequest
如下所示,您还可以使用扩展消息传递来传递信息.当我希望它是面向事件时,我使用这种方法.我很少在扩展页面中使用它.
popup.html
chrome.extension.sendRequest({method: 'ping'}, function(response) {
// response.result
});
Run Code Online (Sandbox Code Playgroud)
background_page.html
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == 'ping') {
sendResponse({result: 'pong'});
}
});
Run Code Online (Sandbox Code Playgroud)现在"扩展页面"和" 内容脚本 " 之间存在差异.请仔细阅读该文档以了解它.内容脚本不是扩展页面,您无法执行扩展页面的操作.您无法直接与上述任何页面进行通信.内容脚本是在网页上下文中运行的JavaScript文件,而不是扩展页面.认识到这是一个重要的区别.
因此,为了在扩展页面和内容脚本之间进行通信,您需要使用Messaging.那个页面有很多信息,我强烈建议你阅读它.它与我们使用消息传递的方式非常相似(上面的步骤2),但唯一不同的是您发送请求的方式.您需要使用chrome.tabs.sendRequest,因为您需要从扩展页面(背景,弹出窗口,页面等)向内容脚本发送单个请求.您需要知道选项卡的ID才能执行此操作.有关详细信息,请查看Tab API.
如果您的扩展程序经常与您的内容脚本通信,您可以使用Long Lived连接,这在我上面喜欢的Messaging部分中得到了很好的解释.
关于类似的问题,我也回答过很多问题和其他人.由于您在JavaScript方面经验丰富,我强烈建议您阅读文档,它拥有您需要的一切.阅读API,我希望您现在了解内容脚本和扩展页面之间的区别,它们之间的通信是通过Extension Messaging进行的.
归档时间: |
|
查看次数: |
3133 次 |
最近记录: |