【问题标题】:How to send data from popup script to background.js in crossrider?如何将数据从弹出脚本发送到 crossrider 中的 background.js?
【发布时间】:2014-01-09 10:30:57
【问题描述】:

我正在使用 crossrider 开发浏览器扩展。我有一些资源页面,例如 popup.html 和 popup.js。在 popup.html 中,有一个表单,当用户提交表单时,我想将数据发送到我的服务器,这很简单。但我也想将活动标签 URL 与表单数据一起发送。但是我们只能在 background.js 中获取活动标签 url。 为此,我需要将表单数据发送到 background.js,然后将它们发布到我的服务器。

所以我的问题是如何将数据从 popup.js(弹出窗口)发送到 background.js ?

【问题讨论】:

    标签: javascript browser-extension crossrider


    【解决方案1】:

    在回答您的直接问题时,您可以使用appAPI.message.toBackground 将数据从弹出范围发送到后台范围。

    但是,我认为在打开弹出窗口时获取活动选项卡的 URL 会更有效,以便在提交表单时它在弹出窗口中可用。您可以通过直接从活动选项卡请求活动选项卡的 URL 并将响应保存在弹出范围内的 var 中来实现此目的,如下所示:

    popup.html

    function crossriderMain($) {
      // var to store active tab's URL
      var activeTabUrl = null;
    
      // Message listener for response from active tab
      appAPI.message.addListener(function(msg) {
        if (msg.type === 'active-tab-url') activeTabUrl = msg.url;
      });
    
      // Request URL from active tab
      appAPI.message.toActiveTab({type: 'active-tab-url'});
    
      // THE REST OF YOUR CODE
    }
    

    extension.js

    appAPI.ready(function($) {
      // Message listener
      appAPI.message.addListener(function(msg) {
        if (msg.type === 'active-tab-url')
          // Send active tab's URL to popup
          appAPI.message.toPopup({
            type: 'active-tab-url',
            url:encodeURIComponent(location.href)
          });
      });
    
      // THE REST OF YOUR CODE
    });
    

    [免责声明:我是 Crossrider 的员工]

    【讨论】:

    • 感谢您的回答..我试图这样做,但它不起作用。调试后发现在加载弹窗时extension.js中的函数没有被调用。
    • 请参阅您关于同一主题的其他问题的解决方案:stackoverflow.com/questions/21043684/…
    猜你喜欢
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2015-08-09
    • 2022-01-21
    • 2012-06-15
    相关资源
    最近更新 更多