0

自分のサイト内で自分のChrome拡張機能によって作成されたコンテキストメニュー項目を無効にするにはどうすればよいですか?Chrome拡張機能のコンテンツスクリプトにはexcludes_matchesオプションがありますが、コンテキストメニューに同等のものがないようです。

ユーザーが自分のサイトにいるときに、追加するコンテキストメニュー項目を表示したくないだけです。

アップデート

人々は私がしていることについて混乱しているようですので、ここにコードがあります。「background_page」で、次のようにコンテキストメニューに項目を追加します。

chrome.contextMenus.create(
{
    "title": "My Context Menu Item",
    "contexts": ["link"],
    "onclick": myContextItemClicked
});

<a>ユーザーが期待どおりにタグを右クリックすると、アイテムが表示されます。私がやりたいのは、ユーザーが自分のサイト内にいるときに表示されないようにすることです。

4

1 に答える 1

1

mousedownすべてのページに挿入されたコンテンツスクリプトのイベントでメニュー作成をトリガーすることで、同様の問題を解決しました。何かのようなもの:

コンテンツスクリプト:

document.addEventListener("mousedown", function(event){
        if(event.button == 2) {
                chrome.extension.sendRequest({"createMenu"});
        }
}, true); 

背景ページ:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
        if(request === "createMenu") {
                chrome.contextMenus.removeAll(function() {
                        if(sender.tab.url != "http://mysite.com") {
                            chrome.contextMenus.create({...});
                        }
                });
        }
});

あまり効果的に見えませんが、afaikを回避する他の方法はありません。ただし、非常にスムーズに機能するため、表示する前にメニューを再作成していることをユーザーが確認することはできません。

于 2012-06-06T23:43:21.173 に答える