chrome.action

Açıklama

Google Chrome araç çubuğundaki uzantı simgesini kontrol etmek için chrome.action API'sini kullanın.

İşlem simgeleri, tarayıcı araç çubuğunda omnibox'ın yanında gösterilir. Yükleme işleminden sonra bu uzantılar, uzantılar menüsünde (yapboz parçası simgesi) görünür. Kullanıcılar, uzantı simgenizi araç çubuğuna sabitleyebilir.

Kullanılabilirlik

Chrome 88+ MV3+

Manifest

Bu API'yi kullanmak için aşağıdaki anahtarlar manifest dosyasında beyan edilmelidir.

"action"

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   () => { /* ... */ }, ); 

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

Chrome 99 veya daha yeni bir sürüm

Ö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

Chrome 91 veya daha yeni bir sürüm

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

Chrome 130 veya daha yeni bir sürüm

Ö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

İadeler

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

İadeler

  • Promise<string>

getBadgeTextColor()

Chrome 110 veya daha yeni bir sürüm
chrome.action.getBadgeTextColor(
  details: TabDetails,
)
: Promise<extensionTypes.ColorArray>

İşlemin metin rengini alır.

Parametreler

İadeler

getPopup()

chrome.action.getPopup(
  details: TabDetails,
)
: Promise<string>

Bu işlem için pop-up olarak ayarlanan HTML dokümanını alır.

Parametreler

İadeler

  • Promise<string>

getTitle()

chrome.action.getTitle(
  details: TabDetails,
)
: Promise<string>

İşlemin başlığını alır.

Parametreler

İadeler

  • Promise<string>

getUserSettings()

Chrome 91 veya daha yeni bir sürüm
chrome.action.getUserSettings(): Promise<UserSettings>

Bir uzantının işlemiyle ilgili kullanıcı tarafından belirtilen ayarları döndürür.

İadeler

isEnabled()

Chrome 110 veya daha yeni bir sürüm
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 127 ve sonraki sürümler
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 ve text boşsa belirtilen sekmenin metni temizlenir ve varsayılan olarak genel rozet metni kullanılır.

İadeler

  • Promise<void>

setBadgeTextColor()

Chrome 110 veya daha yeni bir sürüm
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 ise scale * 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 ise scale * 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

onUserSettingsChanged

Chrome 130 veya daha yeni bir sürüm
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