【问题标题】:Sending message to chrome extension from a web app从网络应用程序向 chrome 扩展发送消息
【发布时间】:2021-07-15 20:20:15
【问题描述】:

我正在将一些数据从我的 Angular Web 应用程序发送到 chrome 扩展程序。我正在使用此代码:

chrome.runtime.sendMessage(extensionId,
{
    data: { name: name }
});

当我登录到我的 Angular 应用程序时,该代码应该向 chrome 扩展发送一些数据。 这有效,但仅当扩展程序在登录时打开时才有效。

如果我打开扩展程序并单击检查,然后登录到我的 Angular 应用程序,则在单击登录之前,消息传递有效。但是,如果我不打开扩展程序,然后单击登录,然后检查扩展程序,它不会显示相关数据。

谁能告诉我为什么会发生这种情况或我错过了什么。

这是我在 chrome extn 中捕获消息传递的方式:

chrome.runtime.onMessageExternal.addListener(
    function (request, sender, sendResponse) {
        var email = request.data.name;
        console.log(email);
});

此控制台日志仅在我在扩展程序打开时登录时才有效。

欢迎提出任何建议。

【问题讨论】:

  • 这可能意味着您的听众被添加到错误的地方。它应该在您的后台脚本中(通过 manifest.json 中的“background”键声明),并且应该放置在顶部范围内(而不是在异步函数内,而不是在另一个事件侦听器内,等等)。
  • 哦该死的。我已将其添加到 background.js 但位置错误。谢谢。 @wOxxOm

标签: angular google-chrome google-chrome-extension


【解决方案1】:

正如@wOxxOm 所建议的,在后台js 的开头添加chrome.runtime.onMessageExternal.addListener 后,它现在可以正常工作了。

【讨论】:

    猜你喜欢
    • 2012-07-10
    • 1970-01-01
    • 2012-08-16
    • 2014-11-03
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多