当用户将扩展程序安装到他的浏览器时,有什么办法可以将值(存储在服务器变量上)存储到在 crossrider 上创建的扩展程序中?这是用户启动浏览器插件安装时的事情!
假设这样的情况:我做了一个浏览器扩展,并在我的网站上显示下载和安装扩展的链接。现在我需要存储一个取自 php 的值并将其存储在本地扩展中的某个位置,除非卸载扩展本身,否则用户无法删除该值。
当用户将扩展程序安装到他的浏览器时,有什么办法可以将值(存储在服务器变量上)存储到在 crossrider 上创建的扩展程序中?这是用户启动浏览器插件安装时的事情!
假设这样的情况:我做了一个浏览器扩展,并在我的网站上显示下载和安装扩展的链接。现在我需要存储一个取自 php 的值并将其存储在本地扩展中的某个位置,除非卸载扩展本身,否则用户无法删除该值。
只要可以使用 URL 获取服务器变量(例如,创建一个简单地返回服务器变量值的 php 页面),您就可以在扩展中执行此操作。
步骤1
根据您是否需要处理返回的数据,您可以使用以下方法之一来获取和保存值。
注意:我建议在您的文件中实施此步骤,background.js
以便在扩展首次运行时仅执行一次。
方法一【响应不需要处理】:使用appAPI.db.setFromRemote()方法获取值并保存。
var serverVar = appAPI.db.get('serverVar');
if (!serverVar) {
appAPI.db.setFromRemote(
"<URL>", // URL to fetch the server variable
'serverVar' // Name of key to use for saving the value
);
}
方法二【响应确实需要处理】:使用appAPI.request.get()方法取值,处理响应,然后使用appAPI.db.set()方法【更多信息见http:// docs.crossrider.com/#!/api/appAPI.db-method-set] 保存值:
var serverVar = appAPI.db.get('serverVar');
if (!serverVar) {
appAPI.request.get(
"<URL>", // URL to fetch the server variable
function(response, headers) { // onSuccess callback function
// process the reponse as required
// e.g. trim leading and trailing spaces
var myProcessedData = response.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
// save data to local db
appAPI.db.set('serverVar', myProcessedData);
});
}
第2步
将服务器变量保存到本地数据库后,可以使用 appAPI.db.get() 方法从扩展后台范围或页面范围内检索它 [有关更多信息,请参阅 http://docs.crossrider.com/ #!/api/appAPI.db-method-get],如下:
var serverVar = appAPI.db.get("serverVar");