Google Chrome 拡張機能を作成しました。今は問題なく動作しますが、この拡張機能は 2 つのドメインでのみ使用できるようにしたいと考えています。しかありcontext menu
ません。今のところ、右上隅にポップアップやアクション ボタンさえありません (デフォルトでは非表示)。どうすればこれを達成できますか?
私の現在のmanifest.json :
{
"manifest_version": 2,
"background": {
"scripts": ["scripts/jquery.min.js", "scripts/background.js"]
},
"name": "Export Entries",
"description": "some descriptions here",
"version": "1.0",
"icons": {
"16": "images/logo.png",
"48": "images/logo.png",
"128": "images/logo.png"
},
"permissions": ["downloads", "tabs", "contextMenus", "http://my-own-domain-accessed-via-ajax-for-creating-some-files-there.com/*"],
"content_scripts": [{
"matches": ["*://allowed-domain1.com/*", "*://allowed-domain2.com/*"],
"css": ["styles/style.css"],
"js": ["scripts/jquery.min.js", "scripts/popup.js", "scripts/background.js"],
"run_at": "document_end"
}],
"web_accessible_resources": [
"images/logo.png"
]
}
拡張機能を完全に無効にすることはできないと理解しているため、そのプロセスは再びバックグラウンドで実行されます。しかし、それは問題ではありません。コンテキスト メニュー項目を他の Web サイトに表示したくないだけです。
background.jsはコンテキスト メニュー項目を作成し、そのクリック イベントを処理します。
function exportEntries(info, tab) {
if (info['linkUrl'].indexOf('domain1.com/user/') > -1) {
var user = info['linkUrl'].substr('27');
} else {
var user = null; // export all entries from this topic
}
$.ajax({
url: 'http://my-own-domain-which-creates-the-file.eu/exportEntries/create.php',
method: 'POST',
data: {
topic: tab.url,
user: user
}
}).done(function(url) {
forceDownload(url);
});
}
function forceDownload(url) {
var filename = url.replace(/^.*\/|\.[^.]*$/g, '');
chrome.downloads.download({
url: url,
saveAs: true
}, // options array
function(id) {
// callback function
}
);
};
document.addEventListener('DOMContentLoaded', function() {
chrome.contextMenus.create({
'title': 'Export Entries',
'contexts': ['link'],
'onclick': function(info, tab) {
exportEntries(info, tab);
}
});
});
create.phpは自分のドメインにあります。現在のページの URL とユーザーのニックネームを取得するだけです。次に、指定されたユーザーの指定されたトピック (つまり、ページ URL) からすべてのエントリをエクスポートし、ファイル (.txt、.pdf など) を作成して、ファイルをダウンロードするための URL を返信します。
popup.html、popup.js、css ファイルなどは今のところ使用されていません。