Başlarken

Uzantılar farklı ancak birbirine bağlı bileşenlerden oluşur. Bileşenler; arka plan komut dosyaları, içerik komut dosyaları, bir seçenekler sayfası, kullanıcı arayüzü öğeleri ve çeşitli mantık dosyalarını içerebilir. Uzantı bileşenleri web geliştirme teknolojileriyle oluşturulur: HTML, CSS ve JavaScript. Bir uzantının bileşenleri, işlevselliğine bağlıdır ve her seçeneği gerektirmeyebilir.

Bu eğitim, kullanıcının developer.chrome.com adresindeki herhangi bir sayfanın arka plan rengini değiştirmesine olanak tanıyan bir uzantı oluşturur. Bu uzantı, kullanıcı ilişkilerine giriş niteliğinde bir gösterim sunmak için birçok temel bileşenden yararlanır.

Uzantının dosyalarını barındıracak yeni bir dizin oluşturarak başlayın.

Doldurduğunuz uzantıyı burada bulabilirsiniz.

Manifest dosyasını oluşturma

Uzantılar manifest ile başlar. manifest.json adlı bir dosya oluşturun ve aşağıdaki kodu ekleyin.

{
  "name": "Getting Started Example",
  "version": "1.0",
  "description": "Build an Extension!",
  "manifest_version": 2
}

Manifest dosyasını içeren dizin, geliştirici modunda geçerli durumunda bir uzantı olarak eklenebilir.

  1. chrome://extensions adresine giderek Uzantı Yönetimi sayfasını açın.
    • Uzantı Yönetimi sayfasını ayrıca Chrome menüsü tıklanarak, fareyle Diğer Araçlar'ın üzerine getirilerek ve Uzantılar'ı seçilerek de açılabilir.
  2. Geliştirici modu'nun yanındaki açma/kapatma düğmesini tıklayarak Geliştirici Modu'nu etkinleştirin.
  3. PAKETİ KALDIRILMADI düğmesini tıklayıp uzantı dizinini seçin.

Uzantıyı Yükle

İşte burada! Uzantı başarıyla yüklendi. Manifest dosyasında simge içermediğinden, uzantı için genel bir araç çubuğu simgesi oluşturulur.

Talimat ekle

Uzantı yüklenmiş ancak herhangi bir talimat içermiyor. background.js başlıklı bir dosya oluşturup bu dosyayı uzantı dizinine yerleştirerek bir arka plan komut dosyası kullanın.

Arka plan komut dosyaları ve diğer önemli bileşenler manifest'te kayıtlı olmalıdır. Manifest'e bir arka plan komut dosyası kaydetmek, uzantıya hangi dosyaya başvuruda bulunacağını ve o dosyanın nasıl davranması gerektiğini bildirir.

{
  "name": "Getting Started Example",
  "version": "1.0",
  "description": "Build an Extension!",
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "manifest_version": 2
}

Uzantı artık kalıcı olmayan bir arka plan komut dosyası içerdiğinin farkındadır ve kayıtlı dosyayı dinlemesi gereken önemli etkinlikler için tarar.

Bu uzantı yüklenir yüklenmez kalıcı bir değişkenden bilgi alması gerekir. Arka plan komut dosyasına runtime.onInstalled için bir dinleme etkinliği ekleyerek başlayın. Uzantı, onInstalled işleyicinin içinde storage API'yi kullanarak bir değer ayarlar. Bu sayede birden fazla uzantı bileşeni bu değere erişebilir ve değeri güncelleyebilir.

chrome.runtime.onInstalled.addListener(function() {
  chrome.storage.sync.set({color: '#3aa757'}, function() {
    console.log("The color is green.");
  });
});

storage API dahil olmak üzere çoğu API'nin, uzantının bunları kullanabilmesi için manifest dosyasındaki "permissions" alanı altında kaydedilmesi gerekir.

{
  "name": "Getting Started Example",
  "version": "1.0",
  "description": "Build an Extension!",
  "permissions": ["storage"],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "manifest_version": 2
}

Uzantı yönetimi sayfasına geri dönün ve Yeniden yükle bağlantısını tıklayın. Görünümleri incele adlı yeni bir alan, mavi bir bağlantıyla (arka plan sayfası) kullanılabilir hale gelir.

Görünümleri İncele

Arka plan komut dosyasının konsol günlüğünü ("The color is green.") görüntülemek için bağlantıyı tıklayın

Kullanıcı arayüzünü tanıtın

Uzantılar birçok kullanıcı arayüzü biçiminde olabilir ancak bu arayüzde pop-up kullanılır. popup.html adlı bir dosya oluşturup dizine ekleyin. Bu uzantı, arka plan rengini değiştirmek için bir düğme kullanır.

<!DOCTYPE html>
<html>
  <head>
    <style>
      button {
        height: 30px;
        width: 30px;
        outline: none;
      }
    </style>
  </head>
  <body>
    <button id="changeColor"></button>
  </body>
</html>

Arka plan komut dosyası gibi bu dosyanın da manifest dosyasında page_action altında pop-up olarak tanımlanması gerekir.

{
  "name": "Getting Started Example",
  "version": "1.0",
  "description": "Build an Extension!",
  "permissions": ["storage"],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "page_action": {
    "default_popup": "popup.html"
  },
  "manifest_version": 2
}

Araç çubuğu simgeleri için tanımlama da default_icons alanındaki page_action altında yer alır. Resimler klasörünü buradan indirin, sıkıştırmasını açın ve uzantı dizinine yerleştirin. Uzantının görüntüleri nasıl kullanacağını bilmesi için manifest dosyasını güncelleyin.

{
  "name": "Getting Started Example",
  "version": "1.0",
  "description": "Build an Extension!",
  "permissions": ["storage"],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "page_action": {
    "default_popup": "popup.html",
    "default_icon": {
      "16": "images/get_started16.png",
      "32": "images/get_started32.png",
      "48": "images/get_started48.png",
      "128": "images/get_started128.png"
    }
  },
  "manifest_version": 2
}

Uzantılar ayrıca uzantı yönetimi sayfasında, izin uyarısında ve site simgesinde resimler de gösterir. Bu görüntüler, manifest dosyasında icons kapsamında belirtilir.

{
  "name": "Getting Started Example",
  "version": "1.0",
  "description": "Build an Extension!",
  "permissions": ["storage"],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "page_action": {
    "default_popup": "popup.html",
    "default_icon": {
      "16": "images/get_started16.png",
      "32": "images/get_started32.png",
      "48": "images/get_started48.png",
      "128": "images/get_started128.png"
    }
  },
  "icons": {
    "16": "images/get_started16.png",
    "32": "images/get_started32.png",
    "48": "images/get_started48.png",
    "128": "images/get_started128.png"
  },
  "manifest_version": 2
}

Uzantı bu aşamada yeniden yüklenirse gri tonlamalı bir simge içerir ancak işlev farklılıkları gösterilmez. page_action manifest'te tanımlandığından, tarayıcıya kullanıcının popup.html ile ne zaman etkileşimde bulunabileceğini bildirmek uzantıya bağlıdır.

Bildirilen kuralları, runtime.onInstalled işleyici etkinliği içinde declarativeContent API ile arka plan komut dosyasına ekleyin.

chrome.runtime.onInstalled.addListener(function() {
  chrome.storage.sync.set({color: '#3aa757'}, function() {
    console.log('The color is green.');
  });
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([{
      conditions: [new chrome.declarativeContent.PageStateMatcher({
        pageUrl: {hostEquals: 'developer.chrome.com'},
      })
      ],
          actions: [new chrome.declarativeContent.ShowPageAction()]
    }]);
  });
});

Uzantının, manifest dosyasındaki declarativeContent API'ye erişmek için izin alması gerekir.

{
  "name": "Getting Started Example",
...
  "permissions": ["declarativeContent", "storage"],
...
}

Pop-up

Kullanıcılar "developer.chrome.com" içeren bir URL'ye gittiğinde tarayıcı artık tarayıcı araç çubuğunda tam renkli bir sayfa işlemi simgesi gösterir. Simge tam renkli olduğunda kullanıcılar popup.html'yi görüntülemek için simgeyi tıklayabilir.

Pop-up kullanıcı arayüzünün son adımı, düğmeye renk eklemektir. popup.js adlı bir dosya oluşturup aşağıdaki kodu kullanarak uzantı dizinine ekleyin.

let changeColor = document.getElementById('changeColor');

chrome.storage.sync.get('color', function(data) {
  changeColor.style.backgroundColor = data.color;
  changeColor.setAttribute('value', data.color);
});

Bu kod, düğmeyi popup.html öğesinden alır ve depolama alanından renk değerini ister. Daha sonra, rengi düğmenin arka planı olarak uygular. popup.html içine popup.js öğesine bir komut dosyası etiketi ekleyin.

<!DOCTYPE html>
<html>
...
  <body>
    <button id="changeColor"></button>
    <script src="popup.js"></script>
  </body>
</html>

Yeşil düğmeyi görüntülemek için uzantıyı yeniden yükleyin.

Katman mantığı

Uzantı artık pop-up'ın developer.chrome.com adresindeki kullanıcılar tarafından kullanılması gerektiğini biliyor ve renkli bir düğme gösteriyor ancak daha fazla kullanıcı etkileşimi için mantığa ihtiyacı var. popup.js öğesini aşağıdaki kodu içerecek şekilde güncelleyin.

let changeColor = document.getElementById('changeColor');
...
changeColor.onclick = function(element) {
  let color = element.target.value;
  chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    chrome.tabs.executeScript(
        tabs[0].id,
        {code: 'document.body.style.backgroundColor = "' + color + '";'});
  });
};

Güncellenen kod, düğmeye bir onclick etkinliği ekler. Bu etkinlik, programatik olarak yerleştirilmiş bir içerik komut dosyasını tetikler. Bu işlem, sayfanın arka plan rengini düğmeyle aynı renge dönüştürür. Programatik yerleştirmenin kullanılması, web sayfalarına otomatik olarak istenmeyen kod eklemek yerine, kullanıcı tarafından çağrılan içerik komut dosyalarının kullanılmasına olanak tanır.

Uzantının tabs API'ye geçici olarak erişmesine izin vermek için manifest dosyasının activeTab iznine ihtiyacı vardır. Bu, uzantının tabs.executeScript kodunu çağırmasını sağlar.

{
  "name": "Getting Started Example",
...
  "permissions": ["activeTab", "declarativeContent", "storage"],
...
}

Uzantı artık tamamen işlevseldir. Uzantıyı yeniden yükleyin, bu sayfayı yenileyin, pop-up'ı açın ve yeşile dönmesi için düğmeyi tıklayın! Ancak, bazı kullanıcılar arka planı farklı bir renkle değiştirmek isteyebilir.

Kullanıcılara seçenekler sunun

Uzantı şu anda kullanıcıların arka planı yalnızca yeşil renkle değiştirmesine izin veriyor. Seçenekler sayfası eklemek, kullanıcılara uzantının işlevleri üzerinde daha fazla kontrol sağlar ve göz atma deneyimlerini daha da özelleştirerek kullanıcılara kolaylık sağlar.

options.html adlı dizinde bir dosya oluşturarak başlayın ve aşağıdaki kodu ekleyin.

<!DOCTYPE html>
<html>
  <head>
    <style>
      button {
        height: 30px;
        width: 30px;
        outline: none;
        margin: 10px;
      }
    </style>
  </head>
  <body>
    <div id="buttonDiv">
    </div>
    <div>
      <p>Choose a different background color!</p>
    </div>
  </body>
  <script src="options.js"></script>
</html>

Ardından, manifest dosyasında seçenekler sayfasını kaydedin ve

{
  "name": "Getting Started Example",
  ...
  "options_page": "options.html",
  ...
  "manifest_version": 2
}

Uzantıyı yeniden yükleyin ve AYRINTILAR'ı tıklayın.

Görünümleri İncele

Ayrıntılar sayfasını aşağı kaydırın ve seçenekler sayfasını görüntülemek için Uzantı seçenekleri'ni belirleyin, ancak şu anda boş görünür.

Uzantı Seçenekleri

Son adım, seçenekler mantığını eklemektir. Aşağıdaki kodu kullanarak uzantı dizininde options.js adlı bir dosya oluşturun.

let page = document.getElementById('buttonDiv');
const kButtonColors = ['#3aa757', '#e8453c', '#f9bb2d', '#4688f1'];
function constructOptions(kButtonColors) {
  for (let item of kButtonColors) {
    let button = document.createElement('button');
    button.style.backgroundColor = item;
    button.addEventListener('click', function() {
      chrome.storage.sync.set({color: item}, function() {
        console.log('color is ' + item);
      })
    });
    page.appendChild(button);
  }
}
constructOptions(kButtonColors);

Dört renk seçeneği sağlanır ve daha sonra seçenekler sayfasında, tıklama etkinlik işleyicilerle düğme olarak oluşturulur. Kullanıcı bir düğmeyi tıkladığında, uzantının global depolama alanındaki renk değeri güncellenir. Uzantının tüm dosyaları global depolamadan renk bilgilerini aldığından, başka hiçbir değerin güncellenmesine gerek yoktur.

Bir sonraki adımı atın

Tebrikler! Dizin artık çok basit olsa da tam işlevsel bir Chrome uzantısına sahip.

Sonraki adım

  • Chrome Uzantısına Genel Bakış, biraz yedekler, genel olarak Uzantı mimarisi hakkında birçok ayrıntı verir ve geliştiricilerin öğrenmek isteyeceği bazı belirli kavramlar içerir.
  • Uzantılarda hata ayıklama için kullanılabilecek seçeneklerle ilgili bilgileri hata ayıklama eğiticisinde bulabilirsiniz.
  • Chrome Uzantıları, açık web'de bulunanların ötesinde güçlü API'lere erişim sağlar. Chrome.* API belgelerinde her API adım adım açıklanmıştır.
  • Geliştirici kılavuzunda, gelişmiş uzantı oluşturmayla ilgili belgelere ait düzinelerce ek bağlantı bulunmaktadır.