在Chrome内容脚本和弹出脚本之间共享redux存储
Sharing a redux store between Chrome content script and popup script
如何在Chrome扩展的内容脚本和弹出脚本之间同步Redux存储?它们在两个独立的环境中运行。我知道Chrome中有消息传递功能可以进行通信。
我想知道该如何将其与Redux商店集成。或者我应该只使用Chrome的存储来帮助同步Redux商店吗?
刚刚遇到这个问题,想让未来的访问者知道有一个更新的包(因为这个问题被问到了),它是一个使用React和Redux构建Chrome扩展的基本实用程序库。。。在最高级别,它充当"代理存储",在UI组件和后台页面之间传递操作和状态更改。在OP的场景中可能有用。https://github.com/tshaddix/react-chrome-redux/wiki/Introduction
如果您想在不同的作用域之间重用任何东西,您需要在一个作用域中声明它,并使用与其他作用域之间的消息传递。
manifest.json
{
"name": "Foo",
"description": "Bar",
"version": "2.0",
"content_scripts": [{
"js": ["content.js"],
"matches": "<all_urls>"
}],
"background": {
"scripts": [
"background.js"
],
},
"browser_action": {
"default_popup": "popup.html"
},
"manifest_version": 2
}
popup.html
<!DOCTYPE html>
<html>
<head>
<script type="application/x-javascript" src="./popup.js"></script>
</head>
</html>
background.js
var store = createStore(...);
// <...>
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.action === 'dispatch') {
store.dispatch(request.arg);
sendResponse('success');
}
});
popup.js
var BG = chrome.extension.getBackgroundPage();
var store = BG.store;
// <...>
content.js
var msg = { action: 'dispatch', arg: { type: 'INCREMENT' }};
chrome.runtime.sendMessage(msg, function(response) {
console.log(response) // 'success'
});
有关范围隔离和消息传递,请参阅指导视频。
相关文章:
- 如何在弹出脚本到内容脚本之间发送消息并返回
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- 函数在两个或多个脚本之间进行访问
- 在这种特殊情况下,在PHP脚本之间传递值
- Chrome扩展:在后台页面和网站页面脚本之间进行通信的最佳方法
- 如何在Chrome扩展弹出窗口和内容脚本之间发送消息
- 从java脚本到C#的回调,C#和java脚本之间的异步编程
- 不了解插件和脚本之间的区别
- 原型:这两个脚本之间的区别
- 应用程序与 Web 视图中注入的脚本之间的通信
- 执行套件时脚本之间的超时 - 量角器非角度
- Chrome 扩展程序:无法让消息传递在后台脚本和内容脚本之间正常工作
- 在Chrome内容脚本和弹出脚本之间共享redux存储
- 带类型的<脚本>标记和不带类型的<脚本>之间的区别
- 使用jquery.on()方法处理同一元素(选项标记)的两个脚本之间的冲突
- 如何在Chrome扩展中的内容脚本之间重复使用代码
- 这些脚本之间的效率有差异吗
- 在两个独立的脚本之间共享变量
- chrome扩展中的可变范围,尤其是在背景页和内容脚本之间
- Chrome DevTools和扩展中的内容脚本之间的通信