お問い合わせいただきありがとうございます。質問にはいくつかの側面があり、それぞれに一般的な方法で答えようとします。
ログイン: appAPI.browserAction.onClickコールバックで、ブックマークを保存する前に、ユーザーがログインしていない場合にログイン ポップアップを表示するコードを追加できます。サイドバー プラグインまたは jQUEryUI を使用するように。
タブの URL: 拡張ボタンを使用してブックマークの保存をトリガーしていると想定しているため、ボタンのコールバックが定義されているバックグラウンド スコープで URL が必要になります。これを実現する最も簡単な方法は、 appAPI.tabs.onTabSelectionChangedメソッドを使用してアクティブなタブを追跡することです。次に例を示します。
background.js :
appAPI.ready(function() {
var activeTab = null;
appAPI.tabs.onTabSelectionChanged(function(tabInfo) {
activeTab = tabInfo.tabUrl;
});
});
したがって、両方のアイデアをまとめると、コードは次のようになります。
background.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
}
});
extension.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;
}
}
});
});