Chrome扩展程序后台页面和内容脚本同步

丹尼达姆

假设我的Chrome扩展程序的后台页面中包含以下代码。

var opts;
chrome.storage.local.get(options, function(result) {
    opts = result[options];
});

chrome.runtime.onMessage.addListener(function(request, sender, response) {
    if (request.message === 'getOpts')
        response(opts);
});

在内容脚本中,我opts通过消息传递进行访问

chrome.runtime.sendMessage({'message': 'getOpts'}, function(response) {
    console.log(opts);
});

是否有任何保证可以在运行内容脚本之前定义选项?例如,启动浏览器时,后台页面将运行,并且chrome.storage.local.get要添加的回调可能被添加到后台页面的消息队列中。Chrome会在注入内容脚本之前完成对该队列的处理吗?

我可以从内容脚本中调用chrome.storage.local.get,但是我的问题更为笼统,因为我的后台页面中还有其他异步处理功能。目前,我的内容脚本会与后台页面进行检查,以确保一切都准备就绪(使用间隔进行检查),但是我不确定是否需要进行此类检查。

数十杏仁

即使在测试中,也不要依赖已定义的变量。通常,由于正常的时间安排,您的var应该在收到消息的时间进行设置,但是请确保在后台onMessage中进行检查。我通过在全局范围内记住是否已经初始化了扩展名并在需要时从onMessage中进行初始化来解决此问题。xan的答案显示了在异步初始化完成后如何在这种情况下使用“返回真”来处理消息。

我的chrome扩展程序上查看此示例(搜索bCalled

在那里,您可以看到我有一个sendResponse方法,该方法负责检测是否已经调用了回调,如果没有,则返回true(假设正在进行异步操作,稍后将调用回调)

您还可以通过伪装加载该var的后台代码中的延迟来进行实验和测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用背景页面和内容脚本的Chrome扩展程序

来自分类Dev

Chrome扩展程序后台页面以编程方式注入的内容脚本多次注入

来自分类Dev

无法在Chrome扩展程序中从后台页面向内容脚本发送消息

来自分类Dev

如何从Chrome扩展程序后台脚本访问页面变量

来自分类Dev

Chrome扩展程序:后台脚本捕获网络和HTTP错误

来自分类Dev

Chrome扩展程序:后台脚本捕获网络和HTTP错误

来自分类Dev

Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

来自分类Dev

Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

来自分类Dev

Chrome扩展程序后台页面状态

来自分类Dev

Chrome扩展程序后台脚本中的AngularJS

来自分类Dev

Chrome扩展程序内容脚本:click()和异步结果

来自分类Dev

Chrome通知未从Chrome扩展程序后台页面显示

来自分类Dev

Chrome通知未从Chrome扩展程序后台页面显示

来自分类Dev

在Chrome扩展程序中停止内容脚本

来自分类Dev

Chrome扩展程序内容脚本未插入大多数页面

来自分类Dev

Chrome扩展程序-用于在任何页面上运行js的简单内容脚本

来自分类Dev

刷新页面后,Chrome扩展程序内容脚本才会加载

来自分类Dev

是否可以在查看源页面上的Chrome扩展程序中运行内容脚本?

来自分类Dev

在chrome扩展程序中,如何使用内容脚本注入Vue页面

来自分类Dev

Chrome扩展程序内容脚本未插入大多数页面

来自分类Dev

刷新页面后才加载Chrome扩展程序内容脚本

来自分类Dev

在Chrome扩展程序的背景页面的onClick事件上将消息发送到内容脚本

来自分类Dev

Chrome扩展程序内容脚本访问扩展程序框架

来自分类Dev

Chrome扩展程序中内容脚本和弹出脚本之间的消息传递

来自分类Dev

如何从Chrome扩展程序的后台js访问页面元素

来自分类Dev

弹出式窗口中的Chrome扩展程序后台页面

来自分类Dev

Chrome扩展程序后台脚本不起作用

来自分类Dev

Google Chrome扩展程序中有多个后台脚本吗?

来自分类Dev

Chrome扩展程序:如何使后台等待执行脚本?

Related 相关文章

  1. 1

    使用背景页面和内容脚本的Chrome扩展程序

  2. 2

    Chrome扩展程序后台页面以编程方式注入的内容脚本多次注入

  3. 3

    无法在Chrome扩展程序中从后台页面向内容脚本发送消息

  4. 4

    如何从Chrome扩展程序后台脚本访问页面变量

  5. 5

    Chrome扩展程序:后台脚本捕获网络和HTTP错误

  6. 6

    Chrome扩展程序:后台脚本捕获网络和HTTP错误

  7. 7

    Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

  8. 8

    Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

  9. 9

    Chrome扩展程序后台页面状态

  10. 10

    Chrome扩展程序后台脚本中的AngularJS

  11. 11

    Chrome扩展程序内容脚本:click()和异步结果

  12. 12

    Chrome通知未从Chrome扩展程序后台页面显示

  13. 13

    Chrome通知未从Chrome扩展程序后台页面显示

  14. 14

    在Chrome扩展程序中停止内容脚本

  15. 15

    Chrome扩展程序内容脚本未插入大多数页面

  16. 16

    Chrome扩展程序-用于在任何页面上运行js的简单内容脚本

  17. 17

    刷新页面后,Chrome扩展程序内容脚本才会加载

  18. 18

    是否可以在查看源页面上的Chrome扩展程序中运行内容脚本?

  19. 19

    在chrome扩展程序中,如何使用内容脚本注入Vue页面

  20. 20

    Chrome扩展程序内容脚本未插入大多数页面

  21. 21

    刷新页面后才加载Chrome扩展程序内容脚本

  22. 22

    在Chrome扩展程序的背景页面的onClick事件上将消息发送到内容脚本

  23. 23

    Chrome扩展程序内容脚本访问扩展程序框架

  24. 24

    Chrome扩展程序中内容脚本和弹出脚本之间的消息传递

  25. 25

    如何从Chrome扩展程序的后台js访问页面元素

  26. 26

    弹出式窗口中的Chrome扩展程序后台页面

  27. 27

    Chrome扩展程序后台脚本不起作用

  28. 28

    Google Chrome扩展程序中有多个后台脚本吗?

  29. 29

    Chrome扩展程序:如何使后台等待执行脚本?

热门标签

归档