Açıklama
Google Chrome'un bağlam menüsüne öğe eklemek için chrome.contextMenus API'sini kullanın. Bağlam menüsü eklemelerinizin hangi tür nesneler için geçerli olacağını (ör. resimler, köprüler ve sayfalar) seçebilirsiniz.
İzinler
contextMenusAPI'yi kullanmak için uzantınızın manifest dosyasında "contextMenus" iznini beyan etmeniz gerekir. Ayrıca, menü öğenizin yanında gösterilecek 16 x 16 piksel boyutunda bir simge belirtmeniz gerekir. Örneğin:
{
"name": "My extension",
...
"permissions": [
"contextMenus"
],
"icons": {
"16": "icon-bitty.png",
"48": "icon-small.png",
"128": "icon-large.png"
},
...
}
Kavramlar ve kullanım
Bağlam menüsü öğeleri, file:// veya chrome:// URL'leri olanlar da dahil olmak üzere herhangi bir dokümanda (veya doküman içindeki çerçevede) görünebilir. Öğelerinizin hangi dokümanlarda görünebileceğini kontrol etmek için create() veya update() yöntemlerini çağırırken documentUrlPatterns alanını belirtin.
İhtiyacınız kadar çok bağlam menüsü öğesi oluşturabilirsiniz ancak uzantınızdan birden fazla öğe aynı anda görünürse Google Chrome bunları otomatik olarak tek bir üst menüde daraltır.
Bu sayfanın büyük bir bölümünde, bu API'nin üyeleriyle ilgili referans bilgileri yer alır. API'yi kullanma talimatları için Bağlam menüsü oluşturma başlıklı makaleyi inceleyin.
Örnekler
Bu API'yi denemek için chrome-extension-samples deposundan contextMenus API örneğini yükleyin.
Türler
ContextType
Bir menünün görünebileceği farklı bağlamlar. "Tümü"nü belirtmek, "başlatıcı" dışındaki tüm diğer bağlamların kombinasyonuna eşdeğerdir. "Başlatıcı" bağlamı yalnızca uygulamalar tarafından desteklenir ve başlatıcıda/görev çubuğunda/dock'ta vb. uygulama simgesi tıklandığında görünen bağlam menüsüne menü öğeleri eklemek için kullanılır. Farklı platformlar, başlatıcı bağlam menüsünde gerçekten desteklenen öğeler konusunda sınırlamalar getirebilir.
Enum
"all"
"page"
"frame"
"selection"
"link"
"editable"
"image"
"video"
"audio"
"launcher"
"browser_action"
"page_action"
"action"
"tab"
CreateProperties
Yeni bağlam menüsü öğesinin özellikleri.
Özellikler
-
işaretli
boolean isteğe bağlı
Onay kutusunun veya radyo düğmesinin ilk durumu: Seçili için
true, seçili değil içinfalse. Belirli bir grupta aynı anda yalnızca bir radyo düğmesi seçilebilir. -
bağlamlar
[ContextType, ...ContextType[]] isteğe bağlı
Bu menü öğesinin görüneceği bağlamların listesi. Varsayılan olarak
['page']değerine ayarlanır. -
documentUrlPatterns
string[] isteğe bağlı
Öğenin yalnızca URL'si belirtilen kalıplardan biriyle eşleşen dokümanlar veya çerçeveler için geçerli olmasını sağlar. Kalıp biçimleri hakkında ayrıntılı bilgi için Eşleşme Kalıpları başlıklı makaleyi inceleyin.
-
etkin
boolean isteğe bağlı
Bu bağlam menüsü öğesinin etkin veya devre dışı olup olmadığı. Varsayılan olarak
truedeğerine ayarlanır. -
id
dize isteğe bağlı
Bu öğeye atanacak benzersiz kimlik. Etkinlik sayfaları için zorunludur. Bu uzantı için başka bir kimlikle aynı olamaz.
-
parentId
dize | sayı isteğe bağlı
Bir üst menü öğesinin kimliği. Bu, öğeyi daha önce eklenen bir öğenin alt öğesi yapar.
-
targetUrlPatterns
string[] isteğe bağlı
documentUrlPatterns'ya benzer şekilde,img,audiovevideoetiketlerininsrcözelliğine veaetiketlerininhrefözelliğine göre filtreler. -
title
dize isteğe bağlı
Öğede gösterilecek metin.
type,separatorolmadığı sürece bu özellik zorunludur. Bağlamselectionolduğunda, seçili metni göstermek için dize içinde%skullanın. Örneğin, bu parametrenin değeri "%s'yi Domuz Latincesi'ne çevir" ise ve kullanıcı "cool" kelimesini seçerse seçim için bağlam menüsü öğesi "cool'u Domuz Latincesi'ne çevir" olur. -
tür
ItemType isteğe bağlıdır.
Menü öğesinin türü. Varsayılan olarak
normaldeğerine ayarlanır. -
görünür
boolean isteğe bağlı
Öğenin menüde görünür olup olmadığı.
-
onclick
void optional
Menü öğesi tıklandığında geri çağrılan bir işlev. Bu, bir hizmet çalışanı içinde kullanılamaz. Bunun yerine,
contextMenus.onClickediçin bir dinleyici kaydetmeniz gerekir.onclickişlevi şu şekilde görünür:(info: OnClickData, tab: Tab) => {...}
-
bilgi
Tıklanan öğe ve tıklamanın gerçekleştiği bağlam hakkında bilgiler.
-
sekme
Tıklamanın gerçekleştiği sekmenin ayrıntıları. Bu parametre, platform uygulamaları için mevcut değildir.
-
ItemType
Menü öğesinin türü.
Enum
"normal"
"checkbox"
"radio"
"separator"
OnClickData
Bir bağlam menüsü öğesi tıklandığında gönderilen bilgiler.
Özellikler
-
işaretli
boolean isteğe bağlı
Bir onay kutusu veya radyo öğesi tıklandıktan sonraki durumunu gösteren işaret.
-
düzenlenebilir
boole
Öğenin düzenlenebilir olup olmadığını (metin girişi, metin alanı vb.) gösteren işaret.
-
frameId
number isteğe bağlı
Chrome 51 ve sonraki sürümlerBağlam menüsünün tıklandığı öğenin çerçeve kimliği (çerçeve içindeyse).
-
frameUrl
dize isteğe bağlı
İçerik menüsünün tıklandığı öğenin çerçevesinin URL'si (çerçeve içindeyse).
-
linkUrl
dize isteğe bağlı
Öğe bir bağlantıysa yönlendirdiği URL.
-
mediaType
dize isteğe bağlı
Bağlam menüsü bu tür öğelerden birinde etkinleştirildiyse "image" (resim), "video" veya "audio" (ses) değerlerinden biri.
-
dize | sayı
Tıklanan menü öğesinin kimliği.
-
pageUrl
dize isteğe bağlı
Menü öğesinin tıklandığı sayfanın URL'si. Tıklama, başlatıcı bağlam menüsü gibi geçerli sayfanın olmadığı bir bağlamda gerçekleştiyse bu özellik ayarlanmaz.
-
parentMenuItemId
dize | sayı isteğe bağlı
Tıklanan öğenin varsa üst kimliği.
-
selectionText
dize isteğe bağlı
Bağlam seçimi için metin (varsa).
-
srcUrl
dize isteğe bağlı
"src" URL'si olan öğeler için gösterilir.
-
wasChecked
boolean isteğe bağlı
Bir onay kutusunun veya radyo öğesinin tıklanmadan önceki durumunu gösteren işaret.
Özellikler
ACTION_MENU_TOP_LEVEL_LIMIT
Bir uzantı işlem bağlam menüsüne eklenebilecek maksimum üst düzey uzantı öğesi sayısı. Bu sınırın üzerindeki öğeler yoksayılır.
Değer
6
Yöntemler
create()
chrome.contextMenus.create(
createProperties: CreateProperties,
callback?: function,
): number | string
Yeni bir bağlam menüsü öğesi oluşturur. Oluşturma sırasında bir hata oluşursa bu hata, oluşturma geri çağırma işlemi tetiklenene kadar algılanamayabilir. Ayrıntılar runtime.lastError içinde yer alır.
Parametreler
-
createProperties
-
callback
işlev isteğe bağlı
callbackparametresi şu şekilde görünür:() => void
İadeler
-
number | string
Yeni oluşturulan öğenin kimliği.
remove()
chrome.contextMenus.remove(
menuItemId: string | number,
): Promise<void>
Bağlam menüsü öğesini kaldırır.
Parametreler
-
dize | sayı
Kaldırılacak bağlam menüsü öğesinin kimliği.
İadeler
-
Promise<void>
Chrome 123+Bağlam menüsü kaldırıldığında çözülür.
removeAll()
chrome.contextMenus.removeAll(): Promise<void>
Bu uzantının eklediği tüm bağlam menüsü öğelerini kaldırır.
İadeler
-
Promise<void>
Chrome 123+Kaldırma işlemi tamamlandığında çözülür.
update()
chrome.contextMenus.update(
id: string | number,
updateProperties: object,
): Promise<void>
Daha önce oluşturulmuş bir bağlam menüsü öğesini günceller.
Parametreler
-
id
dize | sayı
Güncellenecek öğenin kimliği.
-
updateProperties
nesne
Güncellenecek özellikler.
contextMenus.createişleviyle aynı değerleri kabul eder.-
işaretli
boolean isteğe bağlı
-
bağlamlar
[ContextType, ...ContextType[]] isteğe bağlı
-
documentUrlPatterns
string[] isteğe bağlı
-
etkin
boolean isteğe bağlı
-
parentId
dize | sayı isteğe bağlı
Bu öğenin üst öğesi yapılacak öğenin kimliği. Not: Bir öğeyi kendi alt öğesinin alt öğesi olarak ayarlayamazsınız.
-
targetUrlPatterns
string[] isteğe bağlı
-
title
dize isteğe bağlı
-
tür
ItemType isteğe bağlıdır.
-
görünür
boolean isteğe bağlı
Chrome 62 veya daha yeni sürümlerÖğenin menüde görünür olup olmadığı.
-
onclick
void optional
onclickişlevi şu şekilde görünür:(info: OnClickData, tab: Tab) => {...}
-
bilgiChrome 44 ve sonraki sürümler
-
sekmeChrome 44 ve sonraki sürümler
Tıklamanın gerçekleştiği sekmenin ayrıntıları. Bu parametre, platform uygulamaları için mevcut değildir.
-
-
İadeler
-
Promise<void>
Chrome 123+Bağlam menüsünün güncellenmesiyle ilgili sorun düzeltildi.
Etkinlikler
onClicked
chrome.contextMenus.onClicked.addListener(
callback: function,
)
Bir bağlam menüsü öğesi tıklandığında tetiklenir.
Parametreler
-
callback
işlev
callbackparametresi şu şekilde görünür:(info: OnClickData, tab?: tabs.Tab) => void
-
bilgi
-
sekme
tabs.Tab isteğe bağlı
-