如何将数据从弹出脚本发送到crossrider中的background.js?

时间:2014-01-09 10:30:57

标签: javascript browser-extension crossrider

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

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

1 个答案:

答案 0 :(得分:2)

在回答直接问题时,您可以使用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员工]