Açıklama
Google Chrome araç çubuğundaki uzantı simgesini kontrol etmek için chrome.action
API'sini kullanın.
Kullanılabilirlik
Manifest
chrome.action
API'sini kullanmak için 3
"manifest_version"
değerini belirtin ve manifest dosyanıza "action"
anahtarını ekleyin.
{ "name": "Action Extension", ... "action": { "default_icon": { // optional "16": "images/icon16.png", // optional "24": "images/icon24.png", // optional "32": "images/icon32.png" // optional }, "default_title": "Click Me", // optional, shown in tooltip "default_popup": "popup.html" // optional }, ... }
"action"
anahtarı (alt öğeleriyle birlikte) isteğe bağlıdır. Bu simge dahil edilmediğinde, uzantı menüsüne erişim sağlamak için uzantınız araç çubuğunda gösterilmeye devam eder. Bu nedenle, her zaman en azından "action"
ve "default_icon"
anahtarlarını eklemenizi öneririz.
Kavramlar ve kullanım
Kullanıcı arayüzünün bölümleri
Simge
Simge, uzantınızın araç çubuğundaki ana resimdir ve manifest dosyanızın "action"
anahtarındaki "default_icon"
anahtarıyla ayarlanır. Simgeler 16 cihazdan bağımsız piksel (DIP) genişliğinde ve yüksekliğinde olmalıdır.
"default_icon"
anahtarı, resim yollarının boyutlarının sözlüğüdür. Chrome, hangi resim ölçeğinin kullanılacağını seçmek için bu simgeleri kullanır. Tam eşleşme bulunamazsa Chrome, mevcut en yakın eşleşmeyi seçer ve resmi bu eşleşmeye uyacak şekilde ölçeklendirir. Bu durum, resim kalitesini etkileyebilir.
1,5x veya 1,2x gibi daha az yaygın ölçek faktörlerine sahip cihazlar daha yaygın hale geldiğinden simgeleriniz için birden fazla boyut sağlamanızı öneririz. Bu, uzantınızın gelecekteki olası simge görüntüleme boyutu değişikliklerine karşı da korunmasını sağlar. Ancak yalnızca tek bir boyut sağlanıyorsa "default_icon"
anahtarı, sözlük yerine tek bir simgenin yolunu içeren bir dize olarak da ayarlanabilir.
Farklı bir resim yolu belirterek veya HTML canvas öğesini kullanarak dinamik olarak oluşturulmuş bir simge sağlayarak ya da uzantı hizmeti çalışanı üzerinden ayarlıyorsanız offscreen canvas API'sini kullanarak uzantınızın simgesini programatik olarak ayarlamak için action.setIcon()
işlevini de çağırabilirsiniz.
const canvas = new OffscreenCanvas(16, 16); const context = canvas.getContext('2d'); context.clearRect(0, 0, 16, 16); context.fillStyle = '#00FF00'; // Green context.fillRect(0, 0, 16, 16); const imageData = context.getImageData(0, 0, 16, 16); chrome.action.setIcon({imageData: imageData}, () => { /* ... */ });
Paketlenmiş uzantılar (bir .crx dosyasından yüklenenler) için resimler, PNG, JPEG, BMP, ICO ve diğerleri dahil olmak üzere Blink oluşturma motorunun gösterebileceği çoğu biçimde olabilir. SVG desteklenmez. Paketi açılmış uzantılar PNG resimlerini kullanmalıdır.
İpucu (başlık)
İpucu veya başlık, kullanıcı fare işaretçisini araç çubuğundaki uzantı simgesinin üzerine getirdiğinde görünür. Bu metin, düğme odaklandığında ekran okuyucular tarafından okunan erişilebilir metne de dahil edilir.
Varsayılan ipucu, manifest.json
içindeki "action"
anahtarının "default_title"
alanı kullanılarak ayarlanır. action.setTitle()
işlevini çağırarak da programatik olarak ayarlayabilirsiniz.
Rozet
İşlemler isteğe bağlı olarak "rozet" gösterebilir. Rozet, simgenin üzerine yerleştirilmiş bir metin parçasıdır. Bu sayede, uzantının durumuyla ilgili az miktarda bilgi (ör. sayaç) gösterecek şekilde işlemi güncelleyebilirsiniz. Rozette bir metin bileşeni ve arka plan rengi bulunur. Alan sınırlı olduğundan rozet metninde en fazla dört karakter kullanmanızı öneririz.
Rozet oluşturmak için action.setBadgeBackgroundColor()
ve action.setBadgeText()
işlevlerini çağırarak rozeti programatik olarak ayarlayın. Manifest dosyasında varsayılan rozet ayarı yoktur. Rozet rengi değerleri, rozetin RGBA rengini oluşturan 0 ile 255 arasında dört tam sayıdan oluşan bir dizi veya CSS renk değerine sahip bir dize olabilir.
chrome.action.setBadgeBackgroundColor( {color: [0, 255, 0, 0]}, // Green () => { /* ... */ }, ); chrome.action.setBadgeBackgroundColor( {color: '#00FF00'}, // Also green () => { /* ... */ }, ); chrome.action.setBadgeBackgroundColor( {color: 'green'}, // Also, also green () => { /* ... */ }, );
Pop-up
Kullanıcı, araç çubuğundaki uzantının işlem düğmesini tıkladığında işlemin pop-up'ı gösterilir. Pop-up, istediğiniz HTML içeriklerini barındırabilir ve içeriğine uyacak şekilde otomatik olarak boyutlandırılır. Pop-up'ın boyutu 25x25 ile 800x600 piksel arasında olmalıdır.
Pop-up, başlangıçta manifest.json
dosyasındaki "action"
anahtarında bulunan "default_popup"
özelliğiyle ayarlanır. Bu özellik varsa uzantı dizinindeki göreli bir yolu göstermelidir. Ayrıca, action.setPopup()
yöntemi kullanılarak farklı bir göreli yolu işaret edecek şekilde dinamik olarak da güncellenebilir.
Kullanım alanları
Sekme başına durum
Uzantı işlemleri, her sekme için farklı durumlara sahip olabilir. Tek bir sekme için değer ayarlamak üzere action
API'sinin ayar yöntemlerinde tabId
özelliğini kullanın. Örneğin, belirli bir sekmenin rozet metnini ayarlamak için aşağıdakine benzer bir işlem yapın:
function getTabId() { /* ... */} function getTabBadge() { /* ... */} chrome.action.setBadgeText( { text: getTabBadge(tabId), tabId: getTabId(), }, () => { ... } );
tabId
özelliği atlanırsa ayar, genel ayar olarak değerlendirilir. Sekmeye özgü ayarlar, genel ayarlara göre önceliklidir.
Etkinleştirme durumu
Varsayılan olarak, araç çubuğu işlemleri her sekmede etkindir (tıklanabilir). Bu varsayılan ayarı, manifest dosyasının action
anahtarında default_state
özelliğini ayarlayarak değiştirebilirsiniz. default_state
"disabled"
olarak ayarlanırsa işlem varsayılan olarak devre dışıdır ve tıklanabilir olması için programatik olarak etkinleştirilmesi gerekir. default_state
, "enabled"
(varsayılan) olarak ayarlanırsa işlem varsayılan olarak etkinleştirilir ve tıklanabilir.
Durumu action.enable()
ve action.disable()
yöntemlerini kullanarak programatik olarak kontrol edebilirsiniz. Bu yalnızca pop-up'ın (varsa) veya action.onClicked
etkinliğinin uzantınıza gönderilip gönderilmeyeceğini etkiler. İşlemin araç çubuğundaki varlığını etkilemez.
Örnekler
Aşağıdaki örneklerde, işlemlerin uzantılarda yaygın olarak kullanılan bazı yöntemleri gösterilmektedir. Bu API'yi denemek için chrome-extension-samples deposundan Action API örneğini yükleyin.
Pop-up gösterme
Kullanıcı, uzantının işlem düğmesini tıkladığında uzantının pop-up göstermesi yaygın bir durumdur. Bunu kendi uzantınızda uygulamak için manifest.json
dosyanızda pop-up'ı bildirin ve Chrome'un pop-up'ta göstermesi gereken içeriği belirtin.
// manifest.json { "name": "Action popup demo", "version": "1.0", "manifest_version": 3, "action": { "default_title": "Click to view a popup", "default_popup": "popup.html" } }
<!-- popup.html --> <!DOCTYPE html> <html> <head> <style> html { min-height: 5em; min-width: 10em; background: salmon; } </style> </head> <body> <p>Hello, world!</p> </body> </html>
Tıklama üzerine içerik komut dosyası yerleştirme
Uzantılar için yaygın bir model, birincil özelliklerini uzantının işlemiyle kullanıma sunmaktır. Aşağıdaki örnekte bu kalıp gösterilmektedir. Kullanıcı işlemi tıkladığında uzantı, mevcut sayfaya bir içerik komut dosyası yerleştirir. Ardından içerik komut dosyası, her şeyin beklendiği gibi çalıştığını doğrulamak için bir uyarı gösterir.
// manifest.json { "name": "Action script injection demo", "version": "1.0", "manifest_version": 3, "action": { "default_title": "Click to show an alert" }, "permissions": ["activeTab", "scripting"], "background": { "service_worker": "background.js" } }
// background.js chrome.action.onClicked.addListener((tab) => { chrome.scripting.executeScript({ target: {tabId: tab.id}, files: ['content.js'] }); });
// content.js alert('Hello, world!');
declarativeContent ile işlemleri taklit etme
Bu örnekte, bir uzantının arka plan mantığının (a) bir işlemi varsayılan olarak nasıl devre dışı bırakabileceği ve (b) belirli sitelerde işlemi etkinleştirmek için declarativeContent'in nasıl kullanılabileceği gösterilmektedir.
// service-worker.js // Wrap in an onInstalled callback to avoid unnecessary work // every time the service worker is run chrome.runtime.onInstalled.addListener(() => { // Page actions are disabled by default and enabled on select tabs chrome.action.disable(); // Clear all rules to ensure only our expected rules are set chrome.declarativeContent.onPageChanged.removeRules(undefined, () => { // Declare a rule to enable the action on example.com pages let exampleRule = { conditions: [ new chrome.declarativeContent.PageStateMatcher({ pageUrl: {hostSuffix: '.example.com'}, }) ], actions: [new chrome.declarativeContent.ShowAction()], }; // Finally, apply our new array of rules let rules = [exampleRule]; chrome.declarativeContent.onPageChanged.addRules(rules); }); });
Türler
OpenPopupOptions
Özellikler
- windowId
number isteğe bağlı
İşlem pop-up'ının açılacağı pencerenin kimliği. Belirtilmezse varsayılan olarak şu anda etkin olan pencere kullanılır.
TabDetails
Özellikler
- tabId
number isteğe bağlı
Durumu sorgulanacak sekmenin kimliği. Sekme belirtilmezse sekmeye özgü olmayan durum döndürülür.
UserSettings
Bir uzantının işlemiyle ilgili kullanıcı tarafından belirtilen ayarların derlemesi.
Özellikler
- isOnToolbar
boolean
Uzantının işlem simgesinin tarayıcı pencerelerinin üst düzey araç çubuğunda görünür olup olmadığı (yani uzantının kullanıcı tarafından "sabitlenip sabitlenmediği").
UserSettingsChange
Özellikler
- isOnToolbar
boolean isteğe bağlı
Uzantının işlem simgesinin tarayıcı pencerelerinin üst düzey araç çubuğunda görünür olup olmadığı (yani uzantının kullanıcı tarafından "sabitlenip sabitlenmediği").
Yöntemler
disable()
chrome.action.disable(
tabId?: number,
): Promise<void>
Bir sekme için işlemi devre dışı bırakır.
Parametreler
- tabId
number isteğe bağlı
İşlemi değiştirmek istediğiniz sekmenin kimliği.
İadeler
-
Promise<void>
enable()
chrome.action.enable(
tabId?: number,
): Promise<void>
Bir sekme için işlemi etkinleştirir. İşlemler varsayılan olarak etkindir.
Parametreler
- tabId
number isteğe bağlı
İşlemi değiştirmek istediğiniz sekmenin kimliği.
İadeler
-
Promise<void>
getBadgeBackgroundColor()
chrome.action.getBadgeBackgroundColor(
details: TabDetails,
): Promise<extensionTypes.ColorArray>
İşlemin arka plan rengini alır.
Parametreler
- ayrıntılar
İadeler
-
Promise<extensionTypes.ColorArray>
getBadgeText()
chrome.action.getBadgeText(
details: TabDetails,
): Promise<string>
İşlemin rozet metnini alır. Sekme belirtilmezse sekmeye özgü olmayan rozet metni döndürülür. displayActionCountAsBadgeText etkinse declarativeNetRequestFeedback izni yoksa veya sekmeye özel rozet metni sağlanmamışsa yer tutucu metin döndürülür.
Parametreler
- ayrıntılar
İadeler
-
Promise<string>
getBadgeTextColor()
chrome.action.getBadgeTextColor(
details: TabDetails,
): Promise<extensionTypes.ColorArray>
İşlemin metin rengini alır.
Parametreler
- ayrıntılar
İadeler
-
Promise<extensionTypes.ColorArray>
getPopup()
chrome.action.getPopup(
details: TabDetails,
): Promise<string>
Bu işlem için pop-up olarak ayarlanan HTML dokümanını alır.
Parametreler
- ayrıntılar
İadeler
-
Promise<string>
Parametreler
- ayrıntılar
İadeler
-
Promise<string>
getUserSettings()
chrome.action.getUserSettings(): Promise<UserSettings>
Bir uzantının işlemiyle ilgili kullanıcı tarafından belirtilen ayarları döndürür.
İadeler
-
Promise<UserSettings>
isEnabled()
chrome.action.isEnabled(
tabId?: number,
): Promise<boolean>
Uzantı işleminin bir sekme için (veya tabId
sağlanmamışsa genel olarak) etkinleştirilip etkinleştirilmediğini belirtir. Yalnızca declarativeContent
kullanılarak etkinleştirilen işlemler her zaman yanlış (false) değerini döndürür.
Parametreler
- tabId
number isteğe bağlı
Etkinleştirilmiş durumu kontrol etmek istediğiniz sekmenin kimliği.
İadeler
-
Promise<boolean>
openPopup()
chrome.action.openPopup(
options?: OpenPopupOptions,
): Promise<void>
Uzantının pop-up'ını açar. Chrome 118 ile Chrome 126 arasında bu özellik yalnızca politika tarafından yüklenen uzantılarda kullanılabilir.
Parametreler
- seçenekler
OpenPopupOptions isteğe bağlı
Pop-up'ı açma seçeneklerini belirtir.
İadeler
-
Promise<void>
setBadgeBackgroundColor()
chrome.action.setBadgeBackgroundColor(
details: object,
): Promise<void>
Rozetin arka plan rengini ayarlar.
Parametreler
- ayrıntılar
nesne
- renk
dize | ColorArray
Rozetin RGBA rengini oluşturan [0,255] aralığında dört tam sayıdan oluşan bir dizi. Örneğin, opak kırmızı
[255, 0, 0, 255]
'dır. Ayrıca, opak kırmızı için#FF0000
veya#F00
değerini içeren bir dize de olabilir. - tabId
number isteğe bağlı
Değişikliği belirli bir sekme seçildiğinde geçerli olacak şekilde sınırlar. Sekme kapatıldığında otomatik olarak sıfırlanır.
-
İadeler
-
Promise<void>
setBadgeText()
chrome.action.setBadgeText(
details: object,
): Promise<void>
İşlem için rozet metnini ayarlar. Rozet, simgenin üzerinde gösterilir.
Parametreler
- ayrıntılar
nesne
- tabId
number isteğe bağlı
Değişikliği belirli bir sekme seçildiğinde geçerli olacak şekilde sınırlar. Sekme kapatıldığında otomatik olarak sıfırlanır.
- text (metin)
dize isteğe bağlı
İstenen sayıda karakter iletilebilir ancak alana yalnızca yaklaşık dört karakter sığabilir. Boş bir dize (
''
) iletilirse rozet metni temizlenir.tabId
belirtilir vetext
boşsa belirtilen sekmenin metni temizlenir ve varsayılan olarak genel rozet metni kullanılır.
-
İadeler
-
Promise<void>
setBadgeTextColor()
chrome.action.setBadgeTextColor(
details: object,
): Promise<void>
Rozetin metin rengini ayarlar.
Parametreler
- ayrıntılar
nesne
- renk
dize | ColorArray
Rozetin RGBA rengini oluşturan [0,255] aralığında dört tam sayıdan oluşan bir dizi. Örneğin, opak kırmızı
[255, 0, 0, 255]
'dır. Ayrıca, opak kırmızı için#FF0000
veya#F00
değerini içeren bir dize de olabilir. Bu değer ayarlanmadığında, metnin görünür olması için rozetin arka plan rengiyle kontrast oluşturacak bir renk otomatik olarak seçilir. Alfa değerleri 0'a eşit olan renkler ayarlanmaz ve hata döndürür. - tabId
number isteğe bağlı
Değişikliği belirli bir sekme seçildiğinde geçerli olacak şekilde sınırlar. Sekme kapatıldığında otomatik olarak sıfırlanır.
-
İadeler
-
Promise<void>
setIcon()
chrome.action.setIcon(
details: object,
): Promise<void>
İşlem için simge ayarlar. Simge, bir resim dosyasının yolu, bir tuval öğesinden alınan piksel verileri veya bu ikisinden birinin sözlüğü olarak belirtilebilir. path veya imageData özelliği belirtilmelidir.
Parametreler
- ayrıntılar
nesne
- imageData
ImageData | object isteğe bağlı
ImageData nesnesi veya ayarlanacak simgeyi temsil eden bir sözlük {size -> ImageData}. Simge sözlük olarak belirtilmişse kullanılacak gerçek resim, ekranın piksel yoğunluğuna göre seçilir. Bir ekran alanı birimine sığan görüntü piksellerinin sayısı
scale
isescale
* n boyutundaki görüntü seçilir. Burada n, kullanıcı arayüzündeki simgenin boyutudur. En az bir resim belirtilmelidir. "details.imageData = foo" ifadesinin "details.imageData = {'16': foo}" ifadesine eşdeğer olduğunu unutmayın. - yol
dize | nesne isteğe bağlı
Ayarlanacak simgeye işaret eden göreli bir resim yolu veya {size -> relative image path} sözlüğü. Simge sözlük olarak belirtilmişse kullanılacak gerçek resim, ekranın piksel yoğunluğuna göre seçilir. Bir ekran alanı birimine sığan görüntü piksellerinin sayısı
scale
isescale
* n boyutundaki görüntü seçilir. Burada n, kullanıcı arayüzündeki simgenin boyutudur. En az bir resim belirtilmelidir. "details.path = foo" ifadesinin "details.path = {'16': foo}" ifadesine eşdeğer olduğunu unutmayın. - tabId
number isteğe bağlı
Değişikliği belirli bir sekme seçildiğinde geçerli olacak şekilde sınırlar. Sekme kapatıldığında otomatik olarak sıfırlanır.
-
İadeler
-
Promise<void>
Chrome 96 veya daha yeni bir sürüm
setPopup()
chrome.action.setPopup(
details: object,
): Promise<void>
Kullanıcı işlemin simgesini tıkladığında açılacak HTML belgesini pop-up olarak ayarlar.
Parametreler
- ayrıntılar
nesne
- pop-up
dize
Pop-up'ta gösterilecek HTML dosyasının göreli yolu. Boş dize (
''
) olarak ayarlanırsa pop-up gösterilmez. - tabId
number isteğe bağlı
Değişikliği belirli bir sekme seçildiğinde geçerli olacak şekilde sınırlar. Sekme kapatıldığında otomatik olarak sıfırlanır.
-
İadeler
-
Promise<void>
setTitle()
chrome.action.setTitle(
details: object,
): Promise<void>
İşlemin başlığını ayarlar. Bu, ipucunda gösterilir.
Parametreler
- ayrıntılar
nesne
- tabId
number isteğe bağlı
Değişikliği belirli bir sekme seçildiğinde geçerli olacak şekilde sınırlar. Sekme kapatıldığında otomatik olarak sıfırlanır.
- title
dize
Fareyle üzerine gelindiğinde işlemin göstereceği dize.
-
İadeler
-
Promise<void>
Etkinlikler
onClicked
chrome.action.onClicked.addListener(
callback: function,
)
Bir işlem simgesi tıklandığında tetiklenir. İşlemde pop-up varsa bu etkinlik tetiklenmez.
Parametreler
- callback
işlev
callback
parametresi şu şekilde görünür:(tab: tabs.Tab) => void
- sekmesinden
-
onUserSettingsChanged
chrome.action.onUserSettingsChanged.addListener(
callback: function,
)
Bir uzantının işlemiyle ilgili kullanıcı tarafından belirtilen ayarlar değiştiğinde tetiklenir.
Parametreler
- callback
işlev
callback
parametresi şu şekilde görünür:(change: UserSettingsChange) => void
- değiştir
-