感谢您的查询。您的问题有几个方面,我将尝试以一般方式回答每个方面。
登录:在appAPI.browserAction.onClick回调中,在保存书签之前,如果用户未登录,您当然可以添加代码以显示登录弹出窗口。您可以通过以下几种方式之一使用向用户显示的表单来实现此目的就像使用我们的侧边栏插件或 jQUEyUI 一样。
Tab Url:由于我假设您使用扩展按钮来触发书签保存,因此您将需要在定义按钮回调的背景范围内的 URL。实现这一点的最简单方法是使用appAPI.tabs.onTabSelectionChanged方法跟踪活动选项卡,例如:
背景.js:
appAPI.ready(function() {
var activeTab = null;
appAPI.tabs.onTabSelectionChanged(function(tabInfo) {
activeTab = tabInfo.tabUrl;
});
});
所以把这两个想法放在一起,你的代码可能看起来像:
背景.js:
appAPI.ready(function() {
var activeTabURL = null;
// Keep track of activeTabs URL
appAPI.tabs.onTabSelectionChanged(function(tabInfo) {
activeTabURL = tabInfo.tabUrl;
});
// Configure button
appAPI.browserAction.setResourceIcon('icon.png');
appAPI.browserAction.onClick(function() {
// Code to check if user is logged in
if (!userLoggedIn) {
// Send message to extension scope to display login form
appAPI.message.toActiveTab({action:'userLogin', bookmarkURL: activeTabURL});
return;
}
// User already logged in, save activeTab's URL
saveBookmark(activeTabURL);
});
// Listen for message that user has logged in and save bookmarkURL
appAPI.message.addListener(function(msg) {
if (msg.action === 'saveBookmark') saveBookmark(msg.bookmarkURL);
});
// Common function to save bookmark URL
function saveBookmark(bookmarkURL) {
// Your bookmark save function
}
});
扩展.js:
appAPI.ready(function($) {
appAPI.message.addListener(function($) {
if (msg.action === 'userLogin') {
// your code for user login
...
// Once user logged in send message to background to save bookmarkURL
if (userLoggedIn) {
appAPI.message,toBackground({action:'saveBookmark', boomarkURL:msg.bookmarkURL});
return;
}
}
});
});