2012-12-06 7 views
5

chrome.contextMenusのための唯一の4つの方法があります。Chrome拡張機能でコンテキストメニューアイテムが既に作成されているかどうかをトラッキングするにはどうすればよいですか?

create 
update 
remove 
removeAll 

は、私は私が1つのメニューがすでに作成されているかどうかをチェックしますか疑問に思って?

私はこの試みた:

try { 
    chrome.contextMenus.update("byname", {}); 
} catch (e) { 
// doesn't exist 
} 

をしかし、エラーがキャッチ(しかし、コンソールに表示)することができないようです。

ありがとうございました!

+0

'.update()'呼び出しが非同期で、[chrome.contextMenu.create()docs]のようにコールバック内からのみエラー状態を取得できるため、 'catch'が機能しなかったようです。 (https://developer.chrome.com/extensions/contextMenus#method-create):「作成中にエラーが発生した場合、作成コールバックが起動するまで、エラーが見つからないことがあります(詳細はchrome.runtimeになります)。 lastError)。 " –

答えて

3

chrome.contextMenus.create呼び出しは一意の識別子を返します。これらの識別子を配列またはハッシュに格納して、それらを追跡します。

+0

ありがとうございますが、IDが既にcontextMenuItemにバインドされているかどうかを確認するにはどうすればよいですか?たとえば、ユーザがオプションページ内のボタンをクリックすると、カスタマイズされたコンテキストメニュー項目を作成できますが、ユーザが2つのオプションページを開いてボタンを2回クリックすると、2つのコンテキストメニュー項目が作成されます。重要なのは、そのアイテムが既に存在していたかどうかをチェックすることです。そうであれば、新しいアイテムを作成する必要はありません。しかし、私の現在の問題は、私はそれを確認する方法を知らないということです。ありがとう! –

+0

@AwQiruiGuo IDを背景ページ( 'chrome.runtime.getBackgroundPage()'](http://developer.chrome.com/extensions/runtime.html#method-getBackgroundPage)と共有することができます(イベントを使用している場合はページ)または['chrome.extension.getBackgroundPage()'](http://developer.chrome.com/extensions/extension.html#method-getBackgroundPage) –

+0

はい。私はそれを知っています。 IDがすでに作成されているかどうかを知ることができますか?たとえば、新しいアイテムを作成してID 5を返すと、もう1つ作成すると#5がすでに存在しているかどうかを確認します。 –

関連する問題