Komut dosyalarını etkin sekmeye ekle

Uzantı araç çubuğu simgesini tıklayarak geçerli sayfanın stilini basitleştirin.

Genel Bakış

Bu eğitim, Chrome uzantısının stilini basitleştiren ve Chrome Web Mağazası doküman sayfaları.

Bu kılavuzda, aşağıdakileri nasıl yapacağınız açıklanmaktadır:

  • Uzantı hizmeti çalışanını etkinlik koordinatörü olarak kullanın.
  • "activeTab" izni ile kullanıcı gizliliğini koruyabilirsiniz.
  • Kullanıcı, uzantı araç çubuğu simgesini tıkladığında kod çalıştırın.
  • Komut Dosyası API'sını kullanarak bir stil sayfası ekleyin ve kaldırın.
  • Kodu yürütmek için klavye kısayolu kullanın.

Başlamadan önce

Bu kılavuzda, temel web geliştirme deneyiminiz olduğu varsayılır. Şu bölüme göz atmanızı öneririz: Uzantı geliştirme iş akışına giriş amaçlı bir Hello World sitesi.

Uzantıyı oluşturma

Başlamak için, uzantının dosyalarını içerecek focus-mode adında yeni bir dizin oluşturun. Şu durumda: isterseniz kaynak kodun tamamını GitHub'dan indirebilirsiniz.

1. Adım: Uzantı verilerini ve simgelerini ekleyin

manifest.json adında bir dosya oluşturun ve aşağıdaki kodu ekleyin.

{
  "manifest_version": 3,
  "name": "Focus Mode",
  "description": "Enable focus mode on Chrome's official Extensions and Chrome Web Store documentation.",
  "version": "1.0",
  "icons": {
    "16": "images/icon-16.png",
    "32": "images/icon-32.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  }
}

Bu manifest anahtarları hakkında daha fazla bilgi edinmek için "Run Komut dosyalarını her sekmede çalıştırma" konusuna bakın. uzantının meta verilerini ve simgelerini daha ayrıntılı açıklayan bir eğiticidir.

Bir images klasörü oluşturup simgeleri bu klasöre indirin.

2. Adım: Uzantıyı başlatın

Uzantılar, uzantının hizmetini kullanarak tarayıcı etkinliklerini arka planda izleyebilir çalışan ekleyin. Service Worker'lar, DMAIC ve PDCA gibi gerekli olmayan etkinlikler de sonlandırılır.

Hizmet çalışanını manifest.json dosyasına kaydederek başlayın:

{
  ...
  "background": {
    "service_worker": "background.js"
  },
  ...
}

background.js adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:

chrome.runtime.onInstalled.addListener(() => {
  chrome.action.setBadgeText({
    text: "OFF",
  });
});

Service Worker'ımızın ilk etkinliği şu şekildedir: runtime.onInstalled(). Bu yöntem, uzantının bir başlangıç noktası ayarlamasına olanak tanır veya yükleme sırasında bazı görevleri tamamlamanıza yardımcı olur. Uzantılar, Storage API'yi ve Uygulama durumunu depolamak için IndexedDB. Ancak bu örnekte yalnızca iki durumu ele aldığımızdan uzantının "AÇIK" olup olmadığını izlemek için işlemin rozet metnini kullanacağız. veya "KAPALI" olarak ayarlayın.

3. Adım: Uzantı işlemini etkinleştirin

Uzantı işlemi, uzantının araç çubuğu simgesini kontrol eder. Bu nedenle, kullanıcı uzantı simgesini görürseniz bir kod çalıştırır (bu örnekte olduğu gibi) veya bir pop-up görüntüler. URL'yi manifest.json dosyasında uzantı işlemini tanımlamak için aşağıdaki kodu kullanın:

{
  ...
  "action": {
    "default_icon": {
      "16": "images/icon-16.png",
      "32": "images/icon-32.png",
      "48": "images/icon-48.png",
      "128": "images/icon-128.png"
    }
  },
  ...
}

Kullanıcı gizliliğini korumak için ActiveTab iznini kullan

activeTab izni, uzantıya geçici kod yürütme izni verir tıklayın. Ayrıca verilerin hassas özelliklerine .

Bu izin, kullanıcı uzantıyı çağırdığında etkinleştirilir. Bu durumda, kullanıcı uzantı işlemini tıklayarak uzantınızı değiştirebilirsiniz.

💡 Kendi uzantımda ActiveTab izni bulunan diğer kullanıcı etkileşimleri nelerdir?

  • Bir klavye kısayolu kombinasyonuna basma.
  • İçerik menüsü öğesi seçme.
  • Çok amaçlı adres çubuğundan bir öneriyi kabul etme.
  • Bir uzantı pop-up'ı açılıyor.

"activeTab" izni, kullanıcıların kasıtlı olarak uzantıyı odaklanmış sekme Böylece kullanıcının gizliliğini korur. Başka bir faydası da izin uyarısı tetiklemek.

"activeTab" iznini kullanmak için manifestin izin dizisine ekleyin:

{
  ...
  "permissions": ["activeTab"],
  ...
}

4. Adım: Mevcut sekmenin durumunu izleyin

Kullanıcı uzantı işlemini tıkladıktan sonra uzantı, URL'nin belgeler sayfasını ziyaret edin. Ardından, mevcut sekmenin durumunu kontrol eder ve bir sonraki durumu ayarlar. URL'yi background.js adresine şu kodu ekleyin:

const extensions = 'https://developer.chrome.com/docs/extensions';
const webstore = 'https://developer.chrome.com/docs/webstore';

chrome.action.onClicked.addListener(async (tab) => {
  if (tab.url.startsWith(extensions) || tab.url.startsWith(webstore)) {
    // Retrieve the action badge to check if the extension is 'ON' or 'OFF'
    const prevState = await chrome.action.getBadgeText({ tabId: tab.id });
    // Next state will always be the opposite
    const nextState = prevState === 'ON' ? 'OFF' : 'ON';

    // Set the action badge to the next state
    await chrome.action.setBadgeText({
      tabId: tab.id,
      text: nextState,
    });
  }
});

5. Adım: Stil sayfasını ekleyin veya kaldırın

Şimdi sıra sayfanın düzenini değiştirmeye geldi. focus-mode.css adında bir dosya oluşturun ve şu kodu kullanabilirsiniz:

* {
  display: none !important;
}

html,
body,
*:has(article),
article,
article * {
  display: revert !important;
}

[role='navigation'] {
  display: none !important;
}

article {
  margin: auto;
  max-width: 700px;
}

Komut Dosyası API'sını kullanarak stil sayfasını ekleyin veya kaldırın. Başlangıç tarihi manifestte "scripting" iznini beyan etmek:

{
  ...
  "permissions": ["activeTab", "scripting"],
  ...
}

Son olarak, sayfa düzenini değiştirmek için background.js içine aşağıdaki kodu ekleyin:

  ...
    if (nextState === "ON") {
      // Insert the CSS file when the user turns the extension on
      await chrome.scripting.insertCSS({
        files: ["focus-mode.css"],
        target: { tabId: tab.id },
      });
    } else if (nextState === "OFF") {
      // Remove the CSS file when the user turns the extension off
      await chrome.scripting.removeCSS({
        files: ["focus-mode.css"],
        target: { tabId: tab.id },
      });
    }
  }
});

💡 Kod eklemek için stil sayfası yerine Scripting API'yi kullanabilir miyim?

Evet. JavaScript eklemek için scripting.executeScript() kullanabilirsiniz.

İsteğe bağlı: Klavye kısayolu atayın

Sadece eğlence amaçlı olarak, odak modunu etkinleştirmeyi veya devre dışı bırakmayı kolaylaştıracak bir kısayol ekleyin. URL'yi Manifest dosyasının "commands" anahtarını ekleyin.

{
  ...
  "commands": {
    "_execute_action": {
      "suggested_key": {
        "default": "Ctrl+B",
        "mac": "Command+B"
      }
    }
  }
}

"_execute_action" anahtarı, action.onClicked() etkinliğiyle aynı kodu çalıştırır. Bu nedenle, ek kodunu girmeniz gerekir.

Çalışıp çalışmadığını test etme

Projenizin dosya yapısının şu şekilde göründüğünü doğrulayın:

Odak modu klasörünün içeriği: manifest.json, background.js, odak-mode.css ve images klasörü.

Uzantınızı yerel olarak yükleme

Paketlenmemiş bir uzantıyı geliştirici modunda yüklemek için Hello World bölümündeki adımları uygulayın.

Uzantıyı bir dokümanlar sayfasında test etme

İlk olarak aşağıdaki sayfalardan birini açın:

Ardından uzantı işlemini tıklayın. Klavye kısayolu oluşturduysanız Ctrl + B veya Cmd + B tuşuna basarak bu kısayolu test edebilirsiniz.

URL şu şekilde görünmelidir:

Konsantrasyon Modu uzantısı KAPALI
Konsantrasyon Modu uzantısı kapalı

Buna:

Konsantrasyon Modu uzantısı AÇIK
Konsantrasyon Modu uzantısı açık

🎯 Olası geliştirmeler

Bugün öğrendiklerinizi temel alarak aşağıdakilerden birini yapmaya çalışın:

  • CSS stil sayfasını iyileştirin.
  • Farklı bir klavye kısayolu atayın.
  • Favori blogunuzun veya doküman sitenizin düzenini değiştirin.

Kanalınızı geliştirin.

Tebrikler! Bu eğitimi tamamladınız 🎉. Diğer görevleri tamamlayarak becerilerinizi geliştirmeye devam edin daha fazla bilgi edinin:

Uzantı Öğrenecekleriniz
Okuma süresi Belirli bir sayfa grubuna otomatik olarak öğe eklemek için kullanılır.
Sekme Yöneticisi Tarayıcı sekmelerini yöneten bir pop-up oluşturmak için.

Keşfetmeye devam et

Bu Chrome uzantısını oluşturmaktan keyif aldığınızı ve uzantınızı kullanmaya devam etmekten keyif aldığınızı umuyoruz öğrenme yolculuğunuzu anlatabilirsiniz. Aşağıdaki öğrenme rotalarını öneririz:

  • Geliştirici kılavuzunda düzinelerce ek belge bağlantısı bulunmaktadır. gelişmiş uzantı oluşturma ile ilgili.
  • Uzantıların, açık web'de bulunanların ötesinde güçlü API'lere erişimi vardır. Chrome API'leri dokümanları her bir API'de adım adım açıklanmıştır.