Modèles de messagerie à sens unique
Mettez en œuvre une communication simple à sens unique entre les scripts de contenu et les travailleurs de service en arrière-plan, et inversement.
Modèles de messagerie à sens unique est une leçon Browser Extensions Development (Chrome & Edge) gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Browser Extensions Development (Chrome & Edge), et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Browser Extensions Development (Chrome & Edge) comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
One-Way Messaging Intro
Welcome! In this lesson, we'll explore one-way communication in browser extensions. This is how different parts of your extension can talk to each other, like a content script sending data to your background service worker, or vice versa.
Think of it like sending a message without expecting an immediate reply.
Isolated Extension Worlds
Browser extensions are designed with security in mind. This means different components of your extension (like content scripts and background service workers) live in their own isolated JavaScript environments.
- Content Scripts: Run directly on web pages.
- Background Service Worker: Runs in the background, handling events and persistent logic.
They can't directly access each other's variables or functions. Messaging is the bridge!
CS to BG: Sending Messages
To send a one-way message from a content script to your background service worker, you use the chrome.runtime.sendMessage() method.
You pass an object (your message) as the first argument. This object can contain any data you want to send.
Content Script Sender Example
Here's a simple content script that sends a message to the background service worker when the page is clicked. Imagine tracking user interactions!
/* content.js */
document.addEventListener('click', () => {
chrome.runtime.sendMessage({
action: "userClicked",
data: "The document was clicked!"
});
console.log("Message sent from content script.");
});BG to CS: Receiving Messages
In your background service worker, you need to set up a listener to receive messages from content scripts (or other parts of your extension). You use chrome.runtime.onMessage.addListener() for this.
The listener function receives the message itself, sender info, and a sendResponse function (which we won't use for one-way).
Background Listener Example
This background script listens for messages. When it receives a message with action: "userClicked", it logs the data.
/* background.js */
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === "userClicked") {
console.log("Received from content script:", message.data);
// No sendResponse() for one-way communication
}
});BG to CS: Sending Messages
Now, let's look at sending a message from your background service worker to a content script. This is slightly different because you need to specify *which* tab's content script should receive the message.
You use chrome.tabs.sendMessage(tabId, message), where tabId identifies the target tab.
Background Sender Example
This example shows a background script sending a message to the active tab's content script when the extension's icon is clicked. The message tells the content script to change the page's background.
/* background.js (continued) */
chrome.action.onClicked.addListener((tab) => {
// Send a message to the content script in the clicked tab
chrome.tabs.sendMessage(tab.id, {
action: "changeBackground",
color: "#E0FFFF" // Light Cyan
});
console.log("Message sent to content script in tab:", tab.id);
});CS to BG: Receiving Messages
Just like background scripts, content scripts also use chrome.runtime.onMessage.addListener() to listen for incoming messages.
When a background script sends a message using chrome.tabs.sendMessage() to a specific tab, only the content scripts injected into that tab will receive it.
Content Script Receiver Example
This content script snippet listens for the "changeBackground" action and updates the body's background color. This allows your background script to control aspects of the webpage.
/* content.js (continued) */
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === "changeBackground") {
document.body.style.backgroundColor = message.color;
console.log("Page background changed to:", message.color);
}
});Check Your Understanding
Which of the following are key components or methods used for one-way message passing between a content script and a background service worker?
Recap: One-Way Messaging
Great job! You've learned the fundamentals of one-way messaging in browser extensions.
- Isolated Environments: Extension components operate independently.
chrome.runtime.sendMessage(): Used to send messages from content scripts to background or other parts.chrome.tabs.sendMessage(): Used by background scripts to send messages to specific content scripts.chrome.runtime.onMessage.addListener(): Used by both content scripts and background scripts to listen for incoming messages.
This is a crucial skill for building interactive and robust extensions!
Questions Fréquemment Posées
La leçon « Modèles de messagerie à sens unique » est-elle gratuite ?
Oui — le texte complet de « Modèles de messagerie à sens unique » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Browser Extensions Development (Chrome & Edge), passe à CoddyKit PRO. Le cours Browser Extensions Development (Chrome & Edge) comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Modèles de messagerie à sens unique » ?
Mettez en œuvre une communication simple à sens unique entre les scripts de contenu et les travailleurs de service en arrière-plan, et inversement. Tu pratiques Browser Extensions Development (Chrome & Edge) avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Browser Extensions Development (Chrome & Edge) ?
Aucune expérience préalable n'est requise. Browser Extensions Development (Chrome & Edge) sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Modèles de messagerie à sens unique » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Browser Extensions Development (Chrome & Edge) ?
Oui. Chaque leçon Browser Extensions Development (Chrome & Edge) inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Modèles de messagerie à sens unique
- Messagerie bidirectionnelle entre les composants
- Utiliser l’API Chrome Storage
- Stockage synchronisé ou local et quotas