Açıklama
Google Chrome'un bağlam menüsüne öğe eklemek için chrome.contextMenus
API'yi kullanın. İçerik menüsü eklemelerinizin resim, köprü ve sayfa gibi nesne türleri için geçerli olup olmayacağını seçebilirsiniz.
İzinler
contextMenus
API'yi kullanmak için uzantınızın manifest dosyasında "contextMenus"
iznini beyan etmeniz gerekir. Ayrıca, menü öğenizin yanında gösterilecek 16x16 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'lerine sahip olanlar da dahil olmak üzere herhangi bir dokümanda (veya doküman içindeki bir ç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 olduğu kadar bağlam menüsü öğesi oluşturabilirsiniz. Ancak uzantınızdan birden fazlası aynı anda görünürse Google Chrome bunları otomatik olarak tek bir üst menüye sığar.
Ö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ün belirtilmesi, "başlatıcı" hariç diğer tüm bağlamların birleşimine eşdeğerdir. "Başlatıcı" bağlamı yalnızca uygulamalar tarafından desteklenir ve başlatıcı/görev çubuğu/yerleşim vb. içindeki uygulama simgesi tıklandığında görünen içerik menüsüne menü öğeleri eklemek için kullanılır. Farklı platformlar, başlatıcı içerik menüsünde gerçekten nelerin destekleneceğine dair sınırlamalar getirebilir.
Enum
"all"
"page"
"frame"
"selection"
"link"
"editable"
"image"
"video"
"audio"
"launcher"
"browser_action"
"page_action"
"işlem"
CreateProperties
Yeni içerik menüsü öğesinin özellikleri.
Özellikler
-
işaretli
boole isteğe bağlı
Bir onay kutusunun veya radyo düğmesinin ilk durumu: Seçili için
true
, seçilmemiş 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ı
Öğeyi yalnızca URL'si belirtilen kalıplardan biriyle eşleşen dokümanlar veya çerçeveler için geçerli olacak şekilde kısıtlar. Kalıp biçimleri hakkında ayrıntılı bilgi için Eşleşme Kalıpları başlıklı makaleyi inceleyin.
-
etkin
boole isteğe bağlı
Bu içerik menüsü öğesinin etkin veya devre dışı olup olmadığını belirtir. Varsayılan olarak
true
değ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ı
Üst menü öğesinin kimliği. Bu, öğeyi daha önce eklenen bir öğenin alt öğesi yapar.
-
targetUrlPatterns
string[] isteğe bağlı
documentUrlPatterns
'e benzer şekilde,img
,audio
vevideo
etiketlerininsrc
özelliğine vea
etiketlerininhref
özelliğine dayalı filtreler. -
title
dize isteğe bağlı
Öğede gösterilecek metin.
type
separator
olmadığı sürece bu zorunludur. Bağlamselection
olduğunda, seçili metni göstermek için dize içinde%s
kullanın. Örneğin, bu parametrenin değeri "'%s'yi Pig Latin'e çevir" ise ve kullanıcı "cool" kelimesini seçerse seçimin bağlam menüsü öğesi "'cool'u Pig Latin'e çevir" olur. -
tür
ItemType isteğe bağlı
Menü öğesinin türü. Varsayılan olarak
normal
değerine ayarlanır. -
görünür
boole isteğe bağlı
Öğenin menüde görünür olup olmadığı.
-
onclick
void isteğe bağlı
Menü öğesi tıklandığında geri çağrılan bir işlev. Bu işlev, hizmet çalışanı içinde kullanılamaz. Bunun yerine
contextMenus.onClicked
için bir dinleyici kaydetmeniz gerekir.onclick
iş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 bilgi.
-
sekmesinden
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
Bağlam menüsü öğesi tıklandığında gönderilen bilgiler.
Özellikler
-
işaretli
boole isteğe bağlı
Bir onay kutusunun veya radyo öğesinin tıklandıktan sonraki durumunu belirten işaret.
-
düzenlenebilir
boolean
Öğenin düzenlenebilir olup olmadığını (metin girişi, metin alanı vb.) belirten bir işaret.
-
frameId
number isteğe bağlı
Chrome 51 ve sonraki sürümlerİçerik menüsünün tıklandığı öğenin (kadrajdaysa) kadrajının kimliği.
-
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ı
Bu öğe türlerinden birinde içerik menüsü etkinleştirildiyse "resim", "video" veya "ses" seçeneklerinden 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, mevcut sayfanın olmadığı bir bağlamda (ör. başlatıcı bağlam menüsünde) gerçekleştiyse bu mülk ayarlanmaz.
-
parentMenuItemId
dize | sayı isteğe bağlı
Tıklanan öğenin (varsa) üst öğe kimliği.
-
selectionText
dize isteğe bağlı
Varsa bağlam seçiminin metni.
-
srcUrl
dize isteğe bağlı
"src" URL'si olan öğeler için mevcuttur.
-
wasChecked
boole 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şlemi bağlam menüsüne eklenebilecek maksimum üst düzey uzantı öğesi sayısı. Bu sınırı aşan öğeler yok sayılır.
Değer
6
Yöntemler
create()
chrome.contextMenus.create(
createProperties: CreateProperties,
callback?: function,
)
Yeni bir içerik menüsü öğesi oluşturur. Oluşturma sırasında bir hata oluşursa bu hata, oluşturma geri çağırma işlevi tetiklenene kadar algılanmayabilir. Ayrıntılar runtime.lastError
içinde yer alır.
Parametreler
-
createProperties
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
sayı | dize
Yeni oluşturulan öğenin kimliği.
remove()
chrome.contextMenus.remove(
menuItemId: string | number,
callback?: function,
)
Bir içerik menüsü öğesini kaldırır.
Parametreler
-
dize | sayı
Kaldırılacak içerik menüsü öğesinin kimliği.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Promise<void>
Chrome 123+Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.
removeAll()
chrome.contextMenus.removeAll(
callback?: function,
)
Bu uzantı tarafından eklenen tüm içerik menüsü öğelerini kaldırır.
Parametreler
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Promise<void>
Chrome 123+Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.
update()
chrome.contextMenus.update(
id: string | number,
updateProperties: object,
callback?: function,
)
Daha önce oluşturulmuş bir içerik menüsü öğesini günceller.
Parametreler
-
id
dize | sayı
Güncellenecek öğenin kimliği.
-
updateProperties
nesne
Güncellenecek tesisler.
contextMenus.create
işleviyle aynı değerleri kabul eder.-
işaretli
boole isteğe bağlı
-
bağlamlar
[ContextType, ...ContextType[]] isteğe bağlı
-
documentUrlPatterns
string[] isteğe bağlı
-
etkin
boole isteğe bağlı
-
parentId
dize | sayı isteğe bağlı
Bu öğenin üst öğesi olacak öğenin kimliği. Not: Bir öğeyi kendi alt öğesinin alt öğesi olacak şekilde ayarlayamazsınız.
-
targetUrlPatterns
string[] isteğe bağlı
-
title
dize isteğe bağlı
-
tür
ItemType isteğe bağlı
-
görünür
boole isteğe bağlı
Chrome 62 ve üzeri sürümlerÖğenin menüde görünür olup olmadığı.
-
onclick
void isteğe bağlı
onclick
işlevi şu şekilde görünür:(info: OnClickData, tab: Tab) => {...}
-
bilgiChrome 44 ve sonraki sürümler
-
sekmesindenChrome 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.
-
-
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Promise<void>
Chrome 123+Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.
Etkinlikler
onClicked
chrome.contextMenus.onClicked.addListener(
callback: function,
)
Bir içerik menüsü öğesi tıklandığında tetiklenir.
Parametreler
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:(info: OnClickData, tab?: tabs.Tab) => void
-
bilgi
-
sekmesinden
tabs.Tab isteğe bağlı
-