私は、オリジナルのポストと同じことを達成するために探している、としました。いくつかのメッセージを渡して動作させることができます。それが悪い習慣であるかどうかにかかわらず、有効な(true/false)contextMenuプロパティを使用してコンテキストメニューオプションを残しましたが、グレー表示されました。
私はコンテキストメニューを作成しました。重要な特性はIDです。残りの部分は動的に変更されるため、ほとんど任意です。 content.js background.jsで
//This event listener will determine if the context menu should be updated
//based on if the right-button was clicked and if there is a selection or not
document.addEventListener("mousedown", function(event){
if (event.button !== 2) {
return false;
}
var selected = window.getSelection().toString();
if(event.button == 2 && selected != '') {
//get selected text and send request to bkgd page to create menu
chrome.extension.sendMessage({
'message': 'updateContextMenu',
'selection': true});
} else {
chrome.extension.sendMessage({
'message': 'updateContextMenu',
'selection': false});
}
}, true);
で
:
//add a message listener that will modify the context menu however you see fit
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.message == 'updateContextMenu') {
if (request.selection) {
chrome.contextMenus.update('contextMenuId',{
'title': 'New Title',
'enabled': true,
"contexts": ["all"],
'onclick': someFunction
});
} else {
chrome.contextMenus.update('contextMenuId',{
'title': 'Select some text first',
'enabled': false,
"contexts": ["all"]
});
}
} else {
sendResponse({});
}
});
//The original context menu. The important property is the id. The rest is mostly
//arbitrary because it will be changed dynamically by the listener above.
chrome.contextMenus.create({
'id': 'contextMenuId',
'enabled': false,
'title': 'Some Title',
"contexts": ["all"]
});
が無効になって "いくつかのテキストを選択し、" オプションが混乱して持ちます。 text_is_が選択されているときに、単に "Display it"オプションを持たないのはなぜですか? – Bojangles
デザインチームが決定したのはそれでした。私はただのチームのアマチュア開発者です:P – Jon
私は彼らのロジックは、私たちの拡張機能を使用するためにいくつかのテキストを選択する必要があることをユーザーに知らせることだと思います。 – Jon