我正在使用crossrider开发浏览器扩展。我有一些资源页面,如popup.html和popup.js。在popup.html中,有一个表单,当用户提交表单时,我想将数据发送到我的服务器,这是直截了当的。但我也想发送活动标签页和表单数据。但我们只能在background.js中获取活动标签网址。 为此,我需要将表单数据发送到background.js,然后将它们发布到我的服务器。
所以我的问题是如何将数据从popup.js(弹出窗口)发送到background.js?
答案 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员工]