2012-12-06 10 views
5

Istnieją tylko cztery sposoby chrome.contextMenus:Jak mogę śledzić, czy element menu kontekstowego jest już utworzony przez moje rozszerzenie do Chrome?

create 
update 
remove 
removeAll 

Zastanawiam się w jaki sposób mogę sprawdzić, czy jedno menu jest już utworzony?

Próbowałem to:

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

Ale wydaje się, że błąd nie może zostać złapany (ale pokazane w konsoli).

Dzięki za porady!

+0

Wygląda na to, że twoje 'catch' nie zadziałało, ponieważ wywołanie' .update() 'jest asynchroniczne i możesz uzyskać status błędu tylko wewnątrz wywołania zwrotnego, zgodnie z [chrome.contextMenu.create() docs] (https://developer.chrome.com/extensions/contextMenus#method-create): "Zwróć uwagę, że jeśli wystąpi błąd podczas tworzenia, możesz nie dowiedzieć się, dopóki nie uruchomi się wywołanie zwrotne tworzenia (szczegóły będą w chrome.runtime. lastError). " –

Odpowiedz

3

Każde wywołanie chrome.contextMenus.create zwraca unikalny identyfikator. Przechowuj te identyfikatory w tablicy lub hash, aby je śledzić.

+0

Dzięki, ale jak sprawdzić, czy identyfikator jest już powiązany z contextMenuItem? Na przykład, gdy użytkownik kliknie przycisk na stronie opcji, może utworzyć dostosowany element menu kontekstowego, ale jeśli użytkownik otworzy dwie strony opcji i kliknie dwa razy przycisk, utworzy dwa elementy menu kontekstowego. Myślę, że ważne jest, aby sprawdzić, czy przedmiot już istniał, jeśli tak, to nie ma potrzeby tworzenia nowego. Ale obecny problem dla mnie to, że nie wiem jak to sprawdzić. Dzięki! –

+0

@AwQiruiGuo Możesz udostępniać identyfikatory ze stroną w tle ('chrome.runtime.getBackgroundPage()'] (http://developer.chrome.com/extensions/runtime.html#method-getBackgroundPage) (jeśli używasz wydarzenia strony) lub ['chrome.extension.getBackgroundPage()'] (http://developer.chrome.com/extensions/extension.html#method-getBackgroundPage) –

+0

Tak, wiem, moje pytanie jest po prostu proste, jak czy wiem, czy identyfikator został już utworzony? Na przykład: tworzę nowy element, a system zwraca mi identyfikator 5, a kiedy utworzę inny, chcę sprawdzić, czy istnieje już numer # 5: –

Powiązane problemy