我想在 Chrome 扩展程序中提供一些高级功能。这个想法是,只要用户通过 PayPal 捐赠了一定金额,就可以使用后者的附加功能。
目前,我的策略如下:
1/. 用户填写 PayPal 表格。
2/. 提交表单后,会生成一个返回 URL,其中包含一些关键参数,例如用户 ID、请求时间、捐赠金额。一切都通过 base64 编码。例如:
var returnURL = 'https://subdomain.main.com/?params=';
// On Form Submission
function SubmitForm(type) {
var paramURL = '?user=' + userID + '&time=' + now + '&type=' + ptype;
// base64 encoding via btoa
$('#donate [name=return]').val( returnURL + btoa(paramURL) );
// Reday to submit form
$('#PayPalForm').submit();
}
Run Code Online (Sandbox Code Playgroud)
3/. Paypal 捐赠完成,用户被重定向到启用了 https 的扩展网站的子域。
4/. 进入我的网站后,一些 PHP 代码会检查引荐来源网址(即用户是否来自 PayPal?),如果引荐来源网址看起来不错,它会解码 base64 字符串并获取参数(id、时间、类型...)。例如:
// Retrieve URL parameters
$paramURL = parse_url(base64_decode($_GET['a']));
parse_str($paramURL['query'], $query); …Run Code Online (Sandbox Code Playgroud) 这是我的问题:我正在为Gmail开发Chrome扩展程序,并且需要在更新扩展程序时应用一些更改.
例如,我想确保在扩展程序更新后,扩展程序会在Gmail中显示警告对话框.这意味着要检查Gmail在更新时是否已在Chrome窗口中打开,如果没有创建侦听器以便等待将来加载Gmail,然后再显示警告对话框.
下面的代码就是这样.但是,当发现新的Gmail选项卡时,我无法删除侦听器(chrome.tabs.onUpdated.removeListener?).
background.js
// [...] code before
// Reload Tabs where Gmail is active
function reloadTab(order) {
chrome.windows.getCurrent(function(win) {
var cwin = win.id;
chrome.tabs.query({windowId: cwin}, function(tabs) {
var countGmailTabs = 0;
for (var i = 0; i < tabs.length; i++) {
var t = tabs[i].url;
if (t.match('mail.google.com')) {
countGmailTabs += 1;
if (order === 'set') {
chrome.tabs.reload(tabs[i].id);
} else if (order !== 'set') {
var GmailTab = tabs[i];
NewGmailURL(order, GmailTab);
return;
}
}
}
// Gmail not …Run Code Online (Sandbox Code Playgroud) 我想在Chrome扩展程序中以编程方式为标准Gmail用户创建Gmail过滤器(阅读非Google App).目前,由于这两个(过时的)资源:
我设法开发了一个早期的原型,能够创建一个过滤器,自动存档("cf2_ar = true")在某个电子邮件地址("cf1_to =")收到的电子邮件.但是,似乎Gmail使用的任何其他"cf2"参数都不再有效.例如,应用带有参数"cf2_cat ="或"cf2_sel ="的标签不起作用.
我知道Gmail的代码在应用程序或扩展程序开发方面不是非常友好和开放但如果您有些人对Gmail用于创建过滤器的当前参数有任何想法,建议或更新,我将不胜感激,特别是(s)用于对邮件应用标签.
script.js (DOM结束)
// Inject API into Gmail DOM
var s = document.createElement('script');
s.src = chrome.runtime.getURL('js/lib/api.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
s.parentNode.removeChild(s);
};
document.addEventListener('Demo_connectExtension', function(e) {
if(e.detail) {
// Gmail GLOBALS : DATA
DATA = e.detail;
user_data[0] = DATA[9]; // Id (ik)
user_data[1] = DATA[10]; // Email
user_data[2] = DATA[17][9][8]; // Locale
user_data[3] = DATA[7]; // Gmail inbox
var emailarr = user_data[1].split('@');
user_data[4] = emailarr[0] + '+do@' + …Run Code Online (Sandbox Code Playgroud) 我目前正在将Chrome扩展程序转换为Firefox附加组件,并希望复制chrome.storage.sync功能.
但是,无论何时加载项的用户登录到Firefox Sync,我都无法查找使用简单存储的Firefox加载项存储的数据是否会自动同步.
鉴于通过后一种方法存储的所有数据都可以在用户配置文件中找到,我认为只要加法可以在https://addons.mozilla.org上找到它?
任何有关该主题的信息将不胜感激.
我想检索我的Firefox插件的当前版本.
插件是使用Firefox SDK开发的.目前,我的main.js文件看起来像这样:
/*=== SDK INIT ===*/
var pageMod = require("sdk/page-mod"),
tabs = require("sdk/tabs"),
data = require("sdk/self").data,
prefs = require("sdk/simple-prefs"),
{ Cu, Cc, Ci } = require("chrome");
// Get Addon version
let AddonManager = Cu.import("resource://gre/modules/AddonManager.jsm").AddonManager;
var version = AddonManager.getAddonByID("< MY_GUID >", function(addon) { return addon.version; });
// [...]
Run Code Online (Sandbox Code Playgroud)
其中"MY_GUID"是我的扩展程序的GUID.但这根本不起作用!任何帮助赞赏.