CINXE.COM

Hintergrundskripte - Mozilla | MDN

<!doctype html><html lang="en-US" prefix="og: https://ogp.me/ns#"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="https://developer.mozilla.org/favicon-48x48.bc390275e955dacb2e65.png"/><link rel="apple-touch-icon" href="https://developer.mozilla.org/apple-touch-icon.528534bba673c38049c2.png"/><meta name="theme-color" content="#ffffff"/><link rel="manifest" href="https://developer.mozilla.org/manifest.f42880861b394dd4dc9b.json"/><link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="MDN Web Docs"/><title>Hintergrundskripte - Mozilla | MDN</title><link rel="alternate" title="Background scripts" href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Background_scripts" hrefLang="en"/><link rel="alternate" title="Hintergrundskripte" href="https://developer.mozilla.org/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts" hrefLang="de"/><link rel="preload" as="font" type="font/woff2" href="/static/media/Inter.var.c2fe3cb2b7c746f7966a.woff2" crossorigin=""/><link rel="alternate" type="application/rss+xml" title="MDN Blog RSS Feed" href="https://developer.mozilla.org/en-US/blog/rss.xml" hrefLang="en"/><meta name="robots" content="noindex, follow"/><meta name="description" content="Hintergrundskripte oder eine Hintergrundseite ermöglichen es Ihnen, Ereignisse im Browser zu überwachen und darauf zu reagieren, wie z. B. das Navigieren zu einer neuen Seite, das Entfernen eines Lesezeichens oder das Schließen eines Tabs."/><meta property="og:url" content="https://developer.mozilla.org/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts"/><meta property="og:title" content="Hintergrundskripte - Mozilla | MDN"/><meta property="og:type" content="website"/><meta property="og:locale" content="de"/><meta property="og:description" content="Hintergrundskripte oder eine Hintergrundseite ermöglichen es Ihnen, Ereignisse im Browser zu überwachen und darauf zu reagieren, wie z. B. das Navigieren zu einer neuen Seite, das Entfernen eines Lesezeichens oder das Schließen eines Tabs."/><meta property="og:image" content="https://developer.mozilla.org/mdn-social-share.d893525a4fb5fb1f67a2.png"/><meta property="og:image:type" content="image/png"/><meta property="og:image:height" content="1080"/><meta property="og:image:width" content="1920"/><meta property="og:image:alt" content="The MDN Web Docs logo, featuring a blue accent color, displayed on a solid black background."/><meta property="og:site_name" content="MDN Web Docs"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="MozDevNet"/><link rel="canonical" href="https://developer.mozilla.org/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts"/><style media="print">.article-actions-container,.document-toc-container,.language-menu,.main-menu-toggle,.on-github,.page-footer,.place,.sidebar,.top-banner,.top-navigation-main,ul.prev-next{display:none!important}.main-page-content,.main-page-content pre{padding:2px}.main-page-content pre{border-left-width:2px}</style><script src="/static/js/gtag.js" defer=""></script><script defer="" src="/static/js/main.5e889624.js"></script><link href="/static/css/main.26c64ea7.css" rel="stylesheet"/></head><body><script>if(document.body.addEventListener("load",(t=>{t.target.classList.contains("interactive")&&t.target.setAttribute("data-readystate","complete")}),{capture:!0}),window&&document.documentElement){const t={light:"#ffffff",dark:"#1b1b1b"};try{const e=window.localStorage.getItem("theme");e&&(document.documentElement.className=e,document.documentElement.style.backgroundColor=t[e]);const o=window.localStorage.getItem("nop");o&&(document.documentElement.dataset.nop=o)}catch(t){console.warn("Unable to read theme from localStorage",t)}}</script><div id="root"><ul id="nav-access" class="a11y-nav"><li><a id="skip-main" href="#content">Skip to main content</a></li><li><a id="skip-search" href="#top-nav-search-input">Skip to search</a></li><li><a id="skip-select-language" href="#languages-switcher-button">Skip to select language</a></li></ul><div class="page-wrapper document-page"><div class="top-banner loading"><section class="place top container"></section></div><div class="sticky-header-container"><header class="top-navigation "><div class="container "><div class="top-navigation-wrap"><a href="/de/" class="logo" aria-label="MDN homepage"><svg id="mdn-docs-logo" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 694.9 104.4" style="enable-background:new 0 0 694.9 104.4" xml:space="preserve" role="img"><title>MDN Web Docs</title><path d="M40.3 0 11.7 92.1H0L28.5 0h11.8zm10.4 0v92.1H40.3V0h10.4zM91 0 62.5 92.1H50.8L79.3 0H91zm10.4 0v92.1H91V0h10.4z" class="logo-m"></path><path d="M627.9 95.6h67v8.8h-67v-8.8z" class="logo-_"></path><path d="M367 42h-4l-10.7 30.8h-5.5l-10.8-26h-.4l-10.5 26h-5.2L308.7 42h-3.8v-5.6H323V42h-6.5l6.8 20.4h.4l10.3-26h4.7l11.2 26h.5l5.7-20.3h-6.2v-5.6H367V42zm34.9 20c-.4 3.2-2 5.9-4.7 8.2-2.8 2.3-6.5 3.4-11.3 3.4-5.4 0-9.7-1.6-13.1-4.7-3.3-3.2-5-7.7-5-13.7 0-5.7 1.6-10.3 4.7-14s7.4-5.5 12.9-5.5c5.1 0 9.1 1.6 11.9 4.7s4.3 6.9 4.3 11.3c0 1.5-.2 3-.5 4.7h-25.6c.3 7.7 4 11.6 10.9 11.6 2.9 0 5.1-.7 6.5-2 1.5-1.4 2.5-3 3-4.9l6 .9zM394 51.3c.2-2.4-.4-4.7-1.8-6.9s-3.8-3.3-7-3.3c-3.1 0-5.3 1-6.9 3-1.5 2-2.5 4.4-2.8 7.2H394zm51 2.4c0 5-1.3 9.5-4 13.7s-6.9 6.2-12.7 6.2c-6 0-10.3-2.2-12.7-6.7-.1.4-.2 1.4-.4 2.9s-.3 2.5-.4 2.9h-7.3c.3-1.7.6-3.5.8-5.3.3-1.8.4-3.7.4-5.5V22.3h-6v-5.6H416v27c1.1-2.2 2.7-4.1 4.7-5.7 2-1.6 4.8-2.4 8.4-2.4 4.6 0 8.4 1.6 11.4 4.7 3 3.2 4.5 7.6 4.5 13.4zm-7.7.6c0-4.2-1-7.4-3-9.5-2-2.2-4.4-3.3-7.4-3.3-3.4 0-6 1.2-8 3.7-1.9 2.4-2.9 5-3 7.7V57c0 3 1 5.6 3 7.7s4.5 3.1 7.6 3.1c3.6 0 6.3-1.3 8.1-3.9 1.8-2.7 2.7-5.9 2.7-9.6zm69.2 18.5h-13.2v-7.2c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2 5.7 0 9.8 2.2 12.3 6.5V22.3h-8.6v-5.6h15.8v50.6h6v5.5zM493.2 56v-4.4c-.1-3-1.2-5.5-3.2-7.3s-4.4-2.8-7.2-2.8c-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zm53.1-1.4c0 5.6-1.8 10.2-5.3 13.7s-8.2 5.3-13.9 5.3-10.1-1.7-13.4-5.1c-3.3-3.4-5-7.9-5-13.5 0-5.3 1.6-9.9 4.7-13.7 3.2-3.8 7.9-5.7 14.2-5.7s11 1.9 14.1 5.7c3 3.7 4.6 8.1 4.6 13.3zm-7.7-.2c0-4-1-7.2-3-9.5s-4.8-3.5-8.2-3.5c-3.6 0-6.4 1.2-8.3 3.7s-2.9 5.6-2.9 9.5c0 3.7.9 6.8 2.8 9.4 1.9 2.6 4.6 3.9 8.3 3.9 3.6 0 6.4-1.3 8.4-3.8 1.9-2.6 2.9-5.8 2.9-9.7zm45 5.8c-.4 3.2-1.9 6.3-4.4 9.1-2.5 2.9-6.4 4.3-11.8 4.3-5.2 0-9.4-1.6-12.6-4.8-3.2-3.2-4.8-7.7-4.8-13.7 0-5.5 1.6-10.1 4.7-13.9 3.2-3.8 7.6-5.7 13.2-5.7 2.3 0 4.6.3 6.7.8 2.2.5 4.2 1.5 6.2 2.9l1.5 9.5-5.9.7-1.3-6.1c-2.1-1.2-4.5-1.8-7.2-1.8-3.5 0-6.1 1.2-7.7 3.7-1.7 2.5-2.5 5.7-2.5 9.6 0 4.1.9 7.3 2.7 9.5 1.8 2.3 4.4 3.4 7.8 3.4 5.2 0 8.2-2.9 9.2-8.8l6.2 1.3zm34.7 1.9c0 3.6-1.5 6.5-4.6 8.5s-7 3-11.7 3c-5.7 0-10.6-1.2-14.6-3.6l1.2-8.8 5.7.6-.2 4.7c1.1.5 2.3.9 3.6 1.1s2.6.3 3.9.3c2.4 0 4.5-.4 6.5-1.3 1.9-.9 2.9-2.2 2.9-4.1 0-1.8-.8-3.1-2.3-3.8s-3.5-1.3-5.8-1.7-4.6-.9-6.9-1.4c-2.3-.6-4.2-1.6-5.7-2.9-1.6-1.4-2.3-3.5-2.3-6.3 0-4.1 1.5-6.9 4.6-8.5s6.4-2.4 9.9-2.4c2.6 0 5 .3 7.2.9 2.2.6 4.3 1.4 6.1 2.4l.8 8.8-5.8.7-.8-5.7c-2.3-1-4.7-1.6-7.2-1.6-2.1 0-3.7.4-5.1 1.1-1.3.8-2 2-2 3.8 0 1.7.8 2.9 2.3 3.6 1.5.7 3.4 1.2 5.7 1.6 2.2.4 4.5.8 6.7 1.4 2.2.6 4.1 1.6 5.7 3 1.4 1.6 2.2 3.7 2.2 6.6zM197.6 73.2h-17.1v-5.5h3.8V51.9c0-3.7-.7-6.3-2.1-7.9-1.4-1.6-3.3-2.3-5.7-2.3-3.2 0-5.6 1.1-7.2 3.4s-2.4 4.6-2.5 6.9v15.6h6v5.5h-17.1v-5.5h3.8V51.9c0-3.8-.7-6.4-2.1-7.9-1.4-1.5-3.3-2.3-5.6-2.3-3.2 0-5.5 1.1-7.2 3.3-1.6 2.2-2.4 4.5-2.5 6.9v15.8h6.9v5.5h-20.2v-5.5h6V42.4h-6.1v-5.6h13.4v6.4c1.2-2.1 2.7-3.8 4.7-5.2 2-1.3 4.4-2 7.3-2s5.3.7 7.5 2.1c2.2 1.4 3.7 3.5 4.5 6.4 1.1-2.5 2.7-4.5 4.9-6.1s4.8-2.4 7.9-2.4c3.5 0 6.5 1.1 8.9 3.3s3.7 5.6 3.7 10.2v18.2h6.1v5.5zm42.5 0h-13.2V66c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2s9.8 2.2 12.3 6.5V22.7h-8.6v-5.6h15.8v50.6h6v5.5zm-13.3-16.8V52c-.1-3-1.2-5.5-3.2-7.3s-4.4-2.8-7.2-2.8c-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zm61.5 16.8H269v-5.5h6V51.9c0-3.7-.7-6.3-2.2-7.9-1.4-1.6-3.4-2.3-5.7-2.3-3.1 0-5.6 1-7.4 3s-2.8 4.4-2.9 7v15.9h6v5.5h-19.3v-5.5h6V42.4h-6.2v-5.6h13.6V43c2.6-4.6 6.8-6.9 12.7-6.9 3.6 0 6.7 1.1 9.2 3.3s3.7 5.6 3.7 10.2v18.2h6v5.4h-.2z" class="logo-text"></path></svg></a><button title="Open main menu" type="button" class="button action has-icon main-menu-toggle" aria-haspopup="menu" aria-label="Open main menu" aria-expanded="false"><span class="button-wrap"><span class="icon icon-menu "></span><span class="visually-hidden">Open main menu</span></span></button></div><div class="top-navigation-main"><nav class="main-nav" aria-label="Main menu"><ul class="main-menu nojs"><li class="top-level-entry-container "><button type="button" id="references-button" class="top-level-entry menu-toggle" aria-controls="references-menu" aria-expanded="false">References</button><a href="/de/docs/Web" class="top-level-entry">References</a><ul id="references-menu" class="submenu references hidden inline-submenu-lg" aria-labelledby="references-button"><li class="apis-link-container mobile-only "><a href="/de/docs/Web" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview / Web Technology</div><p class="submenu-item-description">Web technology reference for developers</p></div></a></li><li class="html-link-container "><a href="/de/docs/Web/HTML" class="submenu-item "><div class="submenu-icon html"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTML</div><p class="submenu-item-description">Structure of content on the web</p></div></a></li><li class="css-link-container "><a href="/de/docs/Web/CSS" class="submenu-item "><div class="submenu-icon css"></div><div class="submenu-content-container"><div class="submenu-item-heading">CSS</div><p class="submenu-item-description">Code used to describe document style</p></div></a></li><li class="javascript-link-container "><a href="/de/docs/Web/JavaScript" class="submenu-item "><div class="submenu-icon javascript"></div><div class="submenu-content-container"><div class="submenu-item-heading">JavaScript</div><p class="submenu-item-description">General-purpose scripting language</p></div></a></li><li class="http-link-container "><a href="/de/docs/Web/HTTP" class="submenu-item "><div class="submenu-icon http"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTTP</div><p class="submenu-item-description">Protocol for transmitting web resources</p></div></a></li><li class="apis-link-container "><a href="/de/docs/Web/API" class="submenu-item "><div class="submenu-icon apis"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web APIs</div><p class="submenu-item-description">Interfaces for building web applications</p></div></a></li><li class="apis-link-container "><a href="/de/docs/Mozilla/Add-ons/WebExtensions" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web Extensions</div><p class="submenu-item-description">Developing extensions for web browsers</p></div></a></li><li class="apis-link-container desktop-only "><a href="/de/docs/Web" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web Technology</div><p class="submenu-item-description">Web technology reference for developers</p></div></a></li></ul></li><li class="top-level-entry-container "><button type="button" id="guides-button" class="top-level-entry menu-toggle" aria-controls="guides-menu" aria-expanded="false">Guides</button><a href="/de/docs/Learn" class="top-level-entry">Guides</a><ul id="guides-menu" class="submenu guides hidden inline-submenu-lg" aria-labelledby="guides-button"><li class="apis-link-container mobile-only "><a href="/de/docs/Learn" class="submenu-item "><div class="submenu-icon learn"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview / MDN Learning Area</div><p class="submenu-item-description">Learn web development</p></div></a></li><li class="apis-link-container desktop-only "><a href="/de/docs/Learn" class="submenu-item "><div class="submenu-icon learn"></div><div class="submenu-content-container"><div class="submenu-item-heading">MDN Learning Area</div><p class="submenu-item-description">Learn web development</p></div></a></li><li class="html-link-container "><a href="/de/docs/Learn/HTML" class="submenu-item "><div class="submenu-icon html"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTML</div><p class="submenu-item-description">Learn to structure web content with HTML</p></div></a></li><li class="css-link-container "><a href="/de/docs/Learn/CSS" class="submenu-item "><div class="submenu-icon css"></div><div class="submenu-content-container"><div class="submenu-item-heading">CSS</div><p class="submenu-item-description">Learn to style content using CSS</p></div></a></li><li class="javascript-link-container "><a href="/de/docs/Learn/JavaScript" class="submenu-item "><div class="submenu-icon javascript"></div><div class="submenu-content-container"><div class="submenu-item-heading">JavaScript</div><p class="submenu-item-description">Learn to run scripts in the browser</p></div></a></li><li class=" "><a href="/de/docs/Web/Accessibility" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Accessibility</div><p class="submenu-item-description">Learn to make the web accessible to all</p></div></a></li></ul></li><li class="top-level-entry-container "><button type="button" id="mdn-plus-button" class="top-level-entry menu-toggle" aria-controls="mdn-plus-menu" aria-expanded="false">Plus</button><a href="/de/plus" class="top-level-entry">Plus</a><ul id="mdn-plus-menu" class="submenu mdn-plus hidden inline-submenu-lg" aria-labelledby="mdn-plus-button"><li class=" "><a href="/de/plus" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview</div><p class="submenu-item-description">A customized MDN experience</p></div></a></li><li class=" "><a href="/de/plus/ai-help" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">AI Help</div><p class="submenu-item-description">Get real-time assistance and support</p></div></a></li><li class=" "><a href="/de/plus/updates" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Updates</div><p class="submenu-item-description">All browser compatibility updates at a glance</p></div></a></li><li class=" "><a href="/en-US/plus/docs/features/overview" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Documentation</div><p class="submenu-item-description">Learn how to use MDN Plus</p></div></a></li><li class=" "><a href="/en-US/plus/docs/faq" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">FAQ</div><p class="submenu-item-description">Frequently asked questions about MDN Plus</p></div></a></li></ul></li><li class="top-level-entry-container "><a class="top-level-entry menu-link" href="/en-US/curriculum/">Curriculum <sup class="new">New</sup></a></li><li class="top-level-entry-container "><a class="top-level-entry menu-link" href="/en-US/blog/">Blog</a></li><li class="top-level-entry-container "><button type="button" id="tools-button" class="top-level-entry menu-toggle" aria-controls="tools-menu" aria-expanded="false">Tools</button><ul id="tools-menu" class="submenu tools hidden inline-submenu-lg" aria-labelledby="tools-button"><li class=" "><a href="/de/play" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Playground</div><p class="submenu-item-description">Write, test and share your code</p></div></a></li><li class=" "><a href="/en-US/observatory" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTTP Observatory</div><p class="submenu-item-description">Scan a website for free</p></div></a></li><li class=" "><a href="/en-US/plus/ai-help" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">AI Help</div><p class="submenu-item-description">Get real-time assistance and support</p></div></a></li></ul></li></ul></nav><div class="header-search"><form action="/de/search" class="search-form search-widget" id="top-nav-search-form" role="search"><label id="top-nav-search-label" for="top-nav-search-input" class="visually-hidden">Search MDN</label><input aria-activedescendant="" aria-autocomplete="list" aria-controls="top-nav-search-menu" aria-expanded="false" aria-labelledby="top-nav-search-label" autoComplete="off" id="top-nav-search-input" role="combobox" type="search" class="search-input-field" name="q" placeholder="   " required="" value=""/><button type="button" class="button action has-icon clear-search-button"><span class="button-wrap"><span class="icon icon-cancel "></span><span class="visually-hidden">Clear search input</span></span></button><button type="submit" class="button action has-icon search-button"><span class="button-wrap"><span class="icon icon-search "></span><span class="visually-hidden">Search</span></span></button><div id="top-nav-search-menu" role="listbox" aria-labelledby="top-nav-search-label"></div></form></div><div class="theme-switcher-menu"><button type="button" class="button action has-icon theme-switcher-menu small" aria-haspopup="menu"><span class="button-wrap"><span class="icon icon-theme-os-default "></span>Theme</span></button></div><ul class="auth-container"><li><a href="/users/fxa/login/authenticate/?next=%2Fde%2Fdocs%2FMozilla%2FAdd-ons%2FWebExtensions%2FBackground_scripts" class="login-link" rel="nofollow">Log in</a></li><li><a href="/users/fxa/login/authenticate/?next=%2Fde%2Fdocs%2FMozilla%2FAdd-ons%2FWebExtensions%2FBackground_scripts" target="_self" rel="nofollow" class="button primary mdn-plus-subscribe-link"><span class="button-wrap">Sign up for free</span></a></li></ul></div></div></header><div class="article-actions-container"><div class="container"><button type="button" class="button action has-icon sidebar-button" aria-label="Expand sidebar" aria-expanded="false" aria-controls="sidebar-quicklinks"><span class="button-wrap"><span class="icon icon-sidebar "></span></span></button><nav class="breadcrumbs-container" aria-label="Breadcrumb"><ol typeof="BreadcrumbList" vocab="https://schema.org/" aria-label="breadcrumbs"><li property="itemListElement" typeof="ListItem"><a href="/de/docs/Mozilla" class="breadcrumb" property="item" typeof="WebPage"><span property="name">Mozilla</span></a><meta property="position" content="1"/></li><li property="itemListElement" typeof="ListItem"><a href="/de/docs/Mozilla/Add-ons" class="breadcrumb" property="item" typeof="WebPage"><span property="name">Add-ons</span></a><meta property="position" content="2"/></li><li property="itemListElement" typeof="ListItem"><a href="/de/docs/Mozilla/Add-ons/WebExtensions" class="breadcrumb" property="item" typeof="WebPage"><span property="name">Browsererweiterungen</span></a><meta property="position" content="3"/></li><li property="itemListElement" typeof="ListItem"><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts" class="breadcrumb-current-page" property="item" typeof="WebPage"><span property="name">Hintergrundskripte</span></a><meta property="position" content="4"/></li></ol></nav><div class="article-actions"><button type="button" class="button action has-icon article-actions-toggle" aria-label="Article actions"><span class="button-wrap"><span class="icon icon-ellipses "></span><span class="article-actions-dialog-heading">Article Actions</span></span></button><ul class="article-actions-entries"><li class="article-actions-entry"><div class="languages-switcher-menu open-on-focus-within"><button id="languages-switcher-button" type="button" class="button action small has-icon languages-switcher-menu" aria-haspopup="menu"><span class="button-wrap"><span class="icon icon-language "></span>Deutsch<span title="Diese Übersetzung ist Teil eines Experiments."><span class="icon icon-experimental "></span></span></span></button><div class="hidden"><ul class="submenu language-menu " aria-labelledby="language-menu-button"><li class=" "><form class="submenu-item locale-redirect-setting"><div class="group"><label class="switch"><input type="checkbox" name="locale-redirect"/><span class="slider"></span><span class="label">Remember language</span></label><a href="https://github.com/orgs/mdn/discussions/739" rel="external noopener noreferrer" target="_blank" title="Enable this setting to automatically switch to this language when it&#x27;s available. (Click to learn more.)"><span class="icon icon-question-mark "></span></a></div></form></li><li class=" "><a data-locale="en-US" href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Background_scripts" class="button submenu-item"><span>English (US)</span></a></li></ul></div></div></li></ul></div></div></div></div><div class="container"><div class="notecard experimental localized-content-note"><p><a href="https://github.com/orgs/mdn/discussions/741" class="external"><strong>Experiment</strong>: Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.</a></p></div></div><div class="main-wrapper"><div class="sidebar-container"><aside id="sidebar-quicklinks" class="sidebar" data-macro="AddonSidebar"><button type="button" class="button action backdrop" aria-label="Collapse sidebar"><span class="button-wrap"></span></button><nav aria-label="Related Topics" class="sidebar-inner"><header class="sidebar-actions"><section class="sidebar-filter-container"><div class="sidebar-filter "><label id="sidebar-filter-label" class="sidebar-filter-label" for="sidebar-filter-input"><span class="icon icon-filter"></span><span class="visually-hidden">Filter sidebar</span></label><input id="sidebar-filter-input" autoComplete="off" class="sidebar-filter-input-field false" type="text" placeholder="Filter" value=""/><button type="button" class="button action has-icon clear-sidebar-filter-button"><span class="button-wrap"><span class="icon icon-cancel "></span><span class="visually-hidden">Clear filter input</span></span></button></div></section></header><div class="sidebar-inner-nav"><div class="in-nav-toc"><div class="document-toc-container"><section class="document-toc"><header><h2 class="document-toc-heading">In diesem Artikel</h2></header><ul class="document-toc-list"><li class="document-toc-item "><a class="document-toc-link" href="#hintergrundskript-umgebung">Hintergrundskript-Umgebung</a></li><li class="document-toc-item "><a class="document-toc-link" href="#implementierung_von_hintergrundskripten">Implementierung von Hintergrundskripten</a></li><li class="document-toc-item "><a class="document-toc-link" href="#konvertieren_zu_nicht-persistent">Konvertieren zu nicht-persistent</a></li></ul></section></div></div><div class="sidebar-body"> <ol> <li class="section"><a href="/de/docs/Mozilla/Add-ons/WebExtensions">Browsererweiterungen</a></li> <li> <details> <summary>Erste Schritte</summary> <ol> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions">Was sind Erweiterungen?</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension">Ihre erste Erweiterung</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension">Ihre zweite Erweiterung</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">Anatomie einer Erweiterung</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Examples">Beispielerweiterungen</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/What_next">Was nun?</a></li> </ol> </details> </li> <li> <details open=""> <summary>Konzepte</summary> <ol> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API">JavaScript-APIs</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Content scripts</a></li> <li><em><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts" aria-current="page">Hintergrundskripte</a></em></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">Match patterns</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Working_with_files">Arbeiten mit Dateien</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Internationalization">Internationalisierung</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">Native messaging</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Differences_between_API_implementations">Unterschiede zwischen API-Implementierungen</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities">Chrome-Inkompatibilitäten</a></li> </ol> </details> </li> <li> <details> <summary>Benutzeroberfläche</summary> <ol> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface">Benutzeroberfläche</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Toolbar_button">Toolbar-Button</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions">Adressleisten-Schaltfläche</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars">Seitenleisten</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items">Kontextmenüelemente</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">Options page</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">Erweiterungsseiten</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications">Notifications</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox">Address bar suggestions</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels">devtools panels</a></li> </ol> </details> </li> <li> <details> <summary>Anleitungen</summary> <ol> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests">HTTP-Anfragen abfangen</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page">Eine Webseite modifizieren</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page">Externe Inhalte einfügen</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Sharing_objects_with_page_scripts">Objekte mit Seitenskripts teilen</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">Einen Button zur Toolbar hinzufügen</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page">Implementieren einer Einstellungsseite</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API">Arbeiten mit der Tabs-API</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API">Arbeiten mit der Bookmarks API</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Cookies_API">Arbeiten mit der Cookies-API</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Work_with_contextual_identities">Arbeiten mit kontextbezogenen Identitäten</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard">Interagieren mit der Zwischenablage</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">Erweiterung der Entwicklerwerkzeuge</a></li> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Build_a_cross_browser_extension">Erstellen Sie eine plattformübergreifende Browser-Erweiterung</a></li> </ol> </details> </li> <li> <details> <summary>JavaScript-APIs</summary> <ol><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Browser support for JavaScript APIs</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/action">action</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/alarms">alarms</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks">bookmarks</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings">browserSettings</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/browsingData">browsingData</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/captivePortal">captivePortal</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/clipboard">clipboard</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/commands">commands</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts">contentScripts</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities">contextualIdentities</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/cookies">cookies</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest">declarativeNetRequest</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/devtools">devtools</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/dns">dns</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/dom">dom</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/downloads">downloads</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/events">events</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/extension">extension</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/extensionTypes">extensionTypes</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/find">find</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/history">history</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/identity">identity</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/idle">idle</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/management">management</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/menus">menus</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/notifications">notifications</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/omnibox">omnibox</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/permissions">permissions</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/pkcs11">pkcs11</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/privacy">privacy</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/proxy">proxy</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime">runtime</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/scripting">scripting</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/search">search</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/sessions">sessions</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction">sidebarAction</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/theme">theme</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/topSites">topSites</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/types">types</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/userScripts">userScripts</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation">webNavigation</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/windows">windows</a></li></ol> </details> </li> <li> <details> <summary>Manifest-Schlüssel</summary> <ol> <li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a></li> </ol> <ol><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/action">action</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/author">author</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background">background</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides">chrome_url_overrides</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands">commands</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/declarative_net_request">declarative_net_request</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/default_locale">default_locale</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/description">description</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/developer">developer</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/dictionaries">dictionaries</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/externally_connectable">externally_connectable</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/host_permissions">host_permissions</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons">icons</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/incognito">incognito</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name">name</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/offline_enabled">offline_enabled</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/omnibox">omnibox</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_host_permissions">optional_host_permissions</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_page">options_page</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers">protocol_handlers</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/short_name">short_name</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/storage">storage</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme_experiment">theme_experiment</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version">version</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version_name">version_name</a></li><li><a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a></li></ol> </details> </li> <li> <details> <summary>Erweiterungs-Workshop</summary> <ol> <li><a href="https://extensionworkshop.com/documentation/develop/">Entwickeln</a></li> <li><a href="https://extensionworkshop.com/documentation/publish/">Veröffentlichen</a></li> <li><a href="https://extensionworkshop.com/documentation/manage/">Verwalten</a></li> <li><a href="https://extensionworkshop.com/documentation/enterprise/">Unternehmen</a></li> </ol> </details> </li> <li class="section"><a href="/de/docs/Mozilla/Add-ons/Contact_us">Kontaktieren Sie uns</a></li> <li> <details> <summary>Kanäle</summary> <ol> <li><a href="https://blog.mozilla.org/addons">Add-ons Blog</a></li> <li><a href="https://discourse.mozilla.org/c/add-ons">Add-ons Forum</a></li> <li><a href="https://chat.mozilla.org/#/room/%23addons:mozilla.org">Add-ons Chat</a></li> </ol> </details> </li> </ol> </div></div><section class="place side"></section></nav></aside><div class="toc-container"><aside class="toc"><nav><div class="document-toc-container"><section class="document-toc"><header><h2 class="document-toc-heading">In diesem Artikel</h2></header><ul class="document-toc-list"><li class="document-toc-item "><a class="document-toc-link" href="#hintergrundskript-umgebung">Hintergrundskript-Umgebung</a></li><li class="document-toc-item "><a class="document-toc-link" href="#implementierung_von_hintergrundskripten">Implementierung von Hintergrundskripten</a></li><li class="document-toc-item "><a class="document-toc-link" href="#konvertieren_zu_nicht-persistent">Konvertieren zu nicht-persistent</a></li></ul></section></div></nav></aside><section class="place side"></section></div></div><main id="content" class="main-content "><article class="main-page-content" lang="de"><header><h1>Hintergrundskripte</h1></header><div class="section-content"><p>Hintergrundskripte oder eine Hintergrundseite ermöglichen es Ihnen, Ereignisse im Browser zu überwachen und darauf zu reagieren, wie z. B. das Navigieren zu einer neuen Seite, das Entfernen eines Lesezeichens oder das Schließen eines Tabs.</p> <p>Hintergrundskripte oder eine Seite sind:</p> <ul> <li>Persistent – geladen, wenn die Erweiterung gestartet wird und entladen, wenn die Erweiterung deaktiviert oder deinstalliert wird.</li> <li>Nicht persistent (auch bekannt als Ereignisseiten) – nur geladen, wenn sie benötigt werden, um auf ein Ereignis zu reagieren, und entladen, wenn sie inaktiv werden. Eine Hintergrundseite wird jedoch nicht entladen, bis alle sichtbaren Ansichten und Nachrichtenkanäle geschlossen sind. Das Öffnen einer Ansicht verursacht nicht das Laden der Hintergrundseite, verhindert jedoch deren Schließung.</li> </ul> <div class="notecard note"> <p><strong>Hinweis:</strong> In Firefox, wenn der Erweiterungsprozess abstürzt:</p> <ul> <li>persistente Hintergrundskripte, die zum Zeitpunkt des Absturzes ausgeführt werden, werden automatisch neu geladen.</li> <li>nicht-persistente Hintergrundskripte (auch bekannt als "Ereignisseiten"), die zum Zeitpunkt des Absturzes ausgeführt werden, werden nicht neu geladen. Sie werden jedoch automatisch neu gestartet, wenn Firefox einen ihrer WebExtensions-API-Ereignislistener aufruft.</li> <li> Erweiterungsseiten, die zum Zeitpunkt des Absturzes in Tabs geladen sind, werden nicht automatisch wiederhergestellt. Eine Warnmeldung in jedem Tab informiert den Benutzer, dass die Seite abgestürzt ist und ermöglicht es dem Benutzer, den Tab zu schließen oder wiederherzustellen. <img src="/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts/your-tab-crashed-screenshot.png" alt="Browserfenster, das die Benutzerbenachrichtigung anzeigt, dass eine Seite abgestürzt ist, mit den Optionen, den Tab zu schließen oder neu zu starten" width="719" height="488" loading="lazy"> Sie können diese Bedingung testen, indem Sie einen neuen Tab öffnen und zu <code>about:crashextensions</code> navigieren, was stillschweigend einen Absturz des Erweiterungsprozesses auslöst. </li> </ul> </div> <p>In Manifest V2 können Hintergrundskripte oder eine Seite persistent oder nicht persistent sein. Nicht-persistente Hintergrundskripte werden empfohlen, da sie die Ressourcenkosten Ihrer Erweiterung reduzieren. In Manifest V3 werden nur nicht-persistente Hintergrundskripte oder eine Seite unterstützt.</p> <p>Wenn Sie persistente Hintergrundskripte oder eine Seite in Manifest V2 haben und Ihre Erweiterung auf die Migration zu Manifest V3 vorbereiten möchten, bietet <a href="#konvertieren_zu_nicht-persistent">Konvertieren zu nicht-persistent</a> Ratschläge zum Übergang der Skripte oder Seite zum nicht-persistenten Modell.</p></div><section aria-labelledby="hintergrundskript-umgebung"><h2 id="hintergrundskript-umgebung"><a href="#hintergrundskript-umgebung">Hintergrundskript-Umgebung</a></h2><div class="section-content"></div></section><section aria-labelledby="dom-apis"><h3 id="dom-apis"><a href="#dom-apis">DOM-APIs</a></h3><div class="section-content"><p>Hintergrundskripte laufen im Kontext einer speziellen Seite, die als Hintergrundseite bezeichnet wird. Dies verleiht ihnen ein globales <a href="/de/docs/Web/API/Window"><code>window</code></a> und alle Standard-DOM-APIs, die von diesem Objekt bereitgestellt werden.</p> <div class="notecard warning"> <p><strong>Warnung:</strong> In Firefox unterstützen Hintergrundseiten nicht die Verwendung von <a href="/de/docs/Web/API/Window/alert"><code>alert()</code></a>, <a href="/de/docs/Web/API/Window/confirm"><code>confirm()</code></a> oder <a href="/de/docs/Web/API/Window/prompt"><code>prompt()</code></a>.</p> </div></div></section><section aria-labelledby="webextension-apis"><h3 id="webextension-apis"><a href="#webextension-apis">WebExtension-APIs</a></h3><div class="section-content"><p>Hintergrundskripte können alle <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API">WebExtension-APIs</a> verwenden, solange ihre Erweiterung die notwendigen <a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">Berechtigungen</a> hat.</p></div></section><section aria-labelledby="cross-origin-zugriff"><h3 id="cross-origin-zugriff"><a href="#cross-origin-zugriff">Cross-Origin-Zugriff</a></h3><div class="section-content"><p>Hintergrundskripte können XHR-Anfragen an Hosts stellen, für die sie <a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">Host-Berechtigungen</a> haben.</p></div></section><section aria-labelledby="web-inhalte"><h3 id="web-inhalte"><a href="#web-inhalte">Web-Inhalte</a></h3><div class="section-content"><p>Hintergrundskripte haben keinen direkten Zugriff auf Webseiten. Sie können jedoch <a href="/de/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Inhaltsskripte</a> in Webseiten laden und <a href="/de/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#communicating_with_background_scripts">mit diesen Inhaltsskripten über eine Nachrichtenübermittlung-API kommunizieren</a>.</p></div></section><section aria-labelledby="content_security_policy"><h3 id="content_security_policy"><a href="#content_security_policy">Content Security Policy</a></h3><div class="section-content"><p>Hintergrundskripte sind durch eine Content Security Policy von bestimmten potenziell gefährlichen Operationen, wie der Verwendung von <a href="/de/docs/Web/JavaScript/Reference/Global_Objects/eval"><code>eval()</code></a>, ausgeschlossen.</p> <p>Weitere Details finden Sie unter <a href="/de/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a>.</p></div></section><section aria-labelledby="implementierung_von_hintergrundskripten"><h2 id="implementierung_von_hintergrundskripten"><a href="#implementierung_von_hintergrundskripten">Implementierung von Hintergrundskripten</a></h2><div class="section-content"><p>Dieser Abschnitt beschreibt, wie man ein nicht-persistentes Hintergrundskript implementiert.</p></div></section><section aria-labelledby="hintergrundskripte_spezifizieren"><h3 id="hintergrundskripte_spezifizieren"><a href="#hintergrundskripte_spezifizieren">Hintergrundskripte spezifizieren</a></h3><div class="section-content"><p>In Ihrer Erweiterung fügen Sie ein Hintergrundskript oder Skripte ein, wenn Sie diese benötigen, indem Sie den Schlüssel <a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background"><code>"background"</code></a> in <code>manifest.json</code> verwenden. Für Erweiterungen in Manifest V2 muss die <code>persistent</code>-Eigenschaft auf <code>false</code> gesetzt werden, um ein nicht-persistentes Skript zu erstellen. Für Erweiterungen in Manifest V3 kann es weggelassen werden oder muss auf <code>false</code> gesetzt werden, da Skripte in Manifest V3 immer nicht-persistent sind. Die Einbeziehung von <code>"type": "module"</code> lädt die Hintergrundskripte als ES-Module.</p> <div class="code-example"><div class="example-header"><span class="language-name">json</span></div><pre class="brush: json notranslate"><code>"background": { "scripts": ["background-script.js"], "persistent": false, "type": "module" } </code></pre></div> <p>Diese Skripte werden in der Hintergrundseite der Erweiterung ausgeführt, so dass sie im gleichen Kontext wie in eine Webseite geladene Skripte operieren.</p> <p>Wenn Sie jedoch bestimmte Inhalte in der Hintergrundseite benötigen, können Sie eine festlegen. Sie geben dann Ihr Skript von der Seite an, anstatt die <code>"scripts"</code>-Eigenschaft zu verwenden. Vor der Einführung der <code>"type"</code>-Eigenschaft zum <code>"background"</code>-Schlüssel war dies die einzige Möglichkeit, ES-Module einzufügen. Sie legen eine Hintergrundseite so fest:</p> <ul> <li> <p>manifest.json</p> <div class="code-example"><div class="example-header"><span class="language-name">json</span></div><pre class="brush: json notranslate"><code>"background": { "page": "background-page.html", "persistent": false } </code></pre></div> </li> <li> <p>background-page.html</p> <div class="code-example"><div class="example-header"><span class="language-name">html</span></div><pre class="brush: html notranslate"><code>&lt;!doctype html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="utf-8" /&gt; &lt;script type="module" src="background-script.js"&gt;&lt;/script&gt; &lt;/head&gt; &lt;/html&gt; </code></pre></div> </li> </ul> <p>Sie können keine Hintergrundskripte und eine Hintergrundseite gleichzeitig spezifizieren.</p></div></section><section aria-labelledby="die_erweiterung_initialisieren"><h3 id="die_erweiterung_initialisieren"><a href="#die_erweiterung_initialisieren">Die Erweiterung initialisieren</a></h3><div class="section-content"><p>Hören Sie zu <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onInstalled"><code>runtime.onInstalled</code></a>, um eine Erweiterung bei der Installation zu initialisieren. Verwenden Sie dieses Ereignis, um einen Zustand festzulegen oder für die einmalige Initialisierung.</p> <p>Für Erweiterungen mit Ereignisseiten ist dies der Ort, wo zustandsbehaftete APIs, wie ein mit <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/menus/create"><code>menus.create</code></a> erstelltes Kontextmenü, verwendet werden sollten. Dies liegt daran, dass zustandsbehaftete APIs nicht bei jedem Neuladen der Ereignisseite ausgeführt werden müssen; sie müssen nur ausgeführt werden, wenn die Erweiterung installiert wird.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onInstalled.addListener(() =&gt; { browser.contextMenus.create({ id: "sampleContextMenu", title: "Sample Context Menu", contexts: ["selection"], }); }); </code></pre></div></div></section><section aria-labelledby="listener_hinzufügen"><h3 id="listener_hinzufügen"><a href="#listener_hinzufügen">Listener hinzufügen</a></h3><div class="section-content"><p>Strukturieren Sie Hintergrundskripte um Ereignisse, auf die die Erweiterung angewiesen ist. Die Definition relevanter Ereignisse ermöglicht es Hintergrundskripten, inaktiv zu bleiben, bis diese Ereignisse ausgelöst werden, und verhindert, dass die Erweiterung wesentliche Auslöser verpasst.</p> <p>Listener müssen synchron vom Start der Seite aus registriert werden.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onInstalled.addListener(() =&gt; { browser.contextMenus.create({ id: "sampleContextMenu", title: "Sample Context Menu", contexts: ["selection"], }); }); // This will run when a bookmark is created. browser.bookmarks.onCreated.addListener(() =&gt; { // do something }); </code></pre></div> <p>Registrieren Sie keine Listener asynchron, da sie nicht ordnungsgemäß ausgelöst werden. Anstatt:</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js example-bad notranslate"><code>window.onload = () =&gt; { // WARNING! This event is not persisted, and will not restart the event page. browser.bookmarks.onCreated.addListener(() =&gt; { // do something }); }; </code></pre></div> <p>Machen Sie dies:</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.tabs.onUpdated.addListener(() =&gt; { // This event is run in the top level scope of the event page, and will persist, allowing // it to restart the event page if necessary. }); </code></pre></div> <p>Erweiterungen können Listener aus ihren Hintergrundskripten entfernen, indem sie <code>removeListener</code> aufrufen, wie z. B. mit <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage"><code>runtime.onMessage</code></a> <code>removeListener</code>. Wenn alle Listener für ein Ereignis entfernt werden, lädt der Browser das Hintergrundskript der Erweiterung für dieses Ereignis nicht mehr.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onMessage.addListener( function messageListener(message, sender, sendResponse) { browser.runtime.onMessage.removeListener(messageListener); }, ); </code></pre></div></div></section><section aria-labelledby="ereignisse_filtern"><h3 id="ereignisse_filtern"><a href="#ereignisse_filtern">Ereignisse filtern</a></h3><div class="section-content"><p>Verwenden Sie APIs, die Ereignisfilter unterstützen, um Listener auf die Fälle zu beschränken, die für die Erweiterung von Bedeutung sind. Wenn eine Erweiterung <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated"><code>tabs.onUpdated</code></a> überwacht, verwenden Sie stattdessen das Ereignis <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation/onCompleted"><code>webNavigation.onCompleted</code></a> mit Filtern, da die Tabs-API keine Filter unterstützt.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.webNavigation.onCompleted.addListener( () =&gt; { console.log("This is my favorite website!"); }, { url: [{ urlMatches: "https://www.mozilla.org/" }] }, ); </code></pre></div></div></section><section aria-labelledby="auf_listener_reagieren"><h3 id="auf_listener_reagieren"><a href="#auf_listener_reagieren">Auf Listener reagieren</a></h3><div class="section-content"><p>Listener existieren, um Funktionalität auszulösen, sobald ein Ereignis ausgelöst wurde. Um auf ein Ereignis zu reagieren, strukturieren Sie die gewünschte Reaktion innerhalb des Listener-Ereignisses.</p> <p>Beim Reagieren auf Ereignisse im Kontext eines bestimmten Tabs oder einer bestimmten Frame verwenden Sie <code>tabId</code> und <code>frameId</code> aus den Ereignisdaten, anstatt sich auf den "aktuellen Tab" zu verlassen. Die Spezifikation des Ziels stellt sicher, dass Ihre Erweiterung keine Erweiterungs-API auf das falsche Ziel aufruft, wenn sich der "aktuelle Tab" ändert, während die Ereignisseite geweckt wird.</p> <p>Zum Beispiel kann <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage"><code>runtime.onMessage</code></a> auf Aufrufe von <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage"><code>runtime.sendMessage</code></a> wie folgt antworten:</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onMessage.addListener((message, sender, sendResponse) =&gt; { if (message.data === "setAlarm") { browser.alarms.create({ delayInMinutes: 5 }); } else if (message.data === "runLogic") { browser.scripting.executeScript({ target: { tabId: sender.tab.id, frameIds: [sender.frameId], }, files: ["logic.js"], }); } else if (message.data === "changeColor") { browser.scripting.executeScript({ target: { tabId: sender.tab.id, frameIds: [sender.frameId], }, func: () =&gt; { document.body.style.backgroundColor = "orange"; }, }); } }); </code></pre></div></div></section><section aria-labelledby="hintergrundskripte_entladen"><h3 id="hintergrundskripte_entladen"><a href="#hintergrundskripte_entladen">Hintergrundskripte entladen</a></h3><div class="section-content"><p>Daten sollten periodisch gespeichert werden, um wichtige Informationen nicht zu verlieren, falls eine Erweiterung abstürzt, ohne <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend"><code>runtime.onSuspend</code></a> zu empfangen. Verwenden Sie die Speicher-API, um dabei zu helfen.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>// Or storage.session if the variable does not need to persist pass browser shutdown. browser.storage.local.set({ variable: variableInformation }); </code></pre></div> <p>Nachrichtenkanäle können nicht verhindern, dass eine Ereignisseite heruntergefahren wird. Wenn eine Erweiterung die Nachrichtenübermittlung verwendet, werden die Kanäle geschlossen, wenn die Ereignisseite inaktiv ist. Das Lauschen auf <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port"><code>runtime.Port</code></a> <code>onDisconnect</code> ermöglicht es Ihnen, zu entdecken, wann offene Kanäle geschlossen werden, allerdings hat der Listener die gleichen Zeitbeschränkungen wie <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend"><code>runtime.onSuspend</code></a>.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onConnect.addListener((port) =&gt; { port.onMessage.addListener((message) =&gt; { if (message === "hello") { let response = { greeting: "welcome!" }; port.postMessage(response); } else if (message === "goodbye") { console.log("Disconnecting port from this end"); port.disconnect(); } }); port.onDisconnect.addListener(() =&gt; { console.log("Port was disconnected from the other end"); }); }); </code></pre></div> <p>Hintergrundskripte werden nach wenigen Sekunden Inaktivität entladen. Wenn jedoch während der Aussetzung eines Hintergrundskripts ein anderes Ereignis das Hintergrundskript weckt, wird <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspendCanceled"><code>runtime.onSuspendCanceled</code></a> aufgerufen und das Hintergrundskript läuft weiter. Falls Aufräumarbeiten erforderlich sind, hören Sie auf <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend"><code>runtime.onSuspend</code></a>.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onSuspend.addListener(() =&gt; { console.log("Unloading."); browser.browserAction.setBadgeText({ text: "" }); }); </code></pre></div> <p>Es sollte jedoch bevorzugt werden, Daten zu speichern, anstatt sich auf <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend"><code>runtime.onSuspend</code></a> zu verlassen. Es erlaubt nicht so viel Aufräumarbeiten, wie möglicherweise benötigt werden und hilft nicht im Falle eines Absturzes.</p></div></section><section aria-labelledby="konvertieren_zu_nicht-persistent"><h2 id="konvertieren_zu_nicht-persistent"><a href="#konvertieren_zu_nicht-persistent">Konvertieren zu nicht-persistent</a></h2><div class="section-content"><p>Wenn Sie ein persistentes Hintergrundskript haben, bietet dieser Abschnitt Anweisungen zur Umstellung auf das nicht-persistente Modell.</p></div></section><section aria-labelledby="ihre_manifest.json-datei_aktualisieren"><h3 id="ihre_manifest.json-datei_aktualisieren"><a href="#ihre_manifest.json-datei_aktualisieren">Ihre manifest.json-Datei aktualisieren</a></h3><div class="section-content"><p>Ändern Sie in der <code>manifest.json</code>-Datei Ihrer Erweiterung die persistente Eigenschaft des <a href="/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background"><code>"background"</code></a>-Schlüssels auf <code>false</code> für Ihr Skript oder Ihre Seite.</p> <div class="code-example"><div class="example-header"><span class="language-name">json</span></div><pre class="brush: json notranslate"><code>"background": { …, "persistent": false } </code></pre></div></div></section><section aria-labelledby="ereignislistener_verschieben"><h3 id="ereignislistener_verschieben"><a href="#ereignislistener_verschieben">Ereignislistener verschieben</a></h3><div class="section-content"><p>Listener müssen auf der obersten Ebene sein, um das Hintergrundskript zu aktivieren, wenn ein Ereignis ausgelöst wird. Registrierte Listener müssen möglicherweise zu einem synchronen Muster umstrukturiert und auf die oberste Ebene verschoben werden.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onStartup.addListener(() =&gt; { // run startup function }); </code></pre></div></div></section><section aria-labelledby="zustandsänderungen_aufzeichnen"><h3 id="zustandsänderungen_aufzeichnen"><a href="#zustandsänderungen_aufzeichnen">Zustandsänderungen aufzeichnen</a></h3><div class="section-content"><p>Skripte öffnen und schließen jetzt nach Bedarf. Verlassen Sie sich daher nicht auf globale Variablen.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js example-bad notranslate"><code>var count = 101; browser.runtime.onMessage.addListener((message, sender, sendResponse) =&gt; { if (message === "count") { ++count; sendResponse(count); } }); </code></pre></div> <p>Verwenden Sie stattdessen die Speicher-API, um Zustände und Werte zu setzen und zurückzugeben:</p> <ul> <li>Verwenden Sie <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/storage/session"><code>storage.session</code></a> für In-Memory-Speicher, der gelöscht wird, wenn die Erweiterung oder der Browser heruntergefahren wird. Standardmäßig ist <code>storage.session</code> nur für Erweiterungskontexte und nicht für Inhaltsskripte verfügbar.</li> <li>Verwenden Sie <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/storage/local"><code>storage.local</code></a> für einen größeren Speicherbereich, der über Neustarts von Browser und Erweiterung hinaus besteht.</li> </ul> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onMessage.addListener(async (message, sender) =&gt; { if (message === "count") { let items = await browser.storage.session.get({ myStoredCount: 101 }); let count = items.myStoredCount; ++count; await browser.storage.session.set({ myStoredCount: count }); return count; } }); </code></pre></div> <p> Das vorherige Beispiel <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage#sending_an_asynchronous_response_using_a_promise">sendet eine asynchrone Antwort unter Verwendung eines Versprechens</a>, was in Chrome nicht unterstützt wird, bis <a href="https://crbug.com/1185241" class="external" target="_blank">Chrome-Bug 1185241</a> behoben ist. Eine cross-browser Alternative ist <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage#sending_an_asynchronous_response_using_sendresponse">true zurückzugeben und <code>sendResponse</code> zu verwenden</a>. </p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.runtime.onMessage.addListener((message, sender, sendResponse) =&gt; { if (message === "count") { browser.storage.session.get({ myStoredCount: 101 }).then(async (items) =&gt; { let count = items.myStoredCount; ++count; await browser.storage.session.set({ myStoredCount: count }); sendResponse(count); }); return true; } }); </code></pre></div></div></section><section aria-labelledby="timer_in_alarme_umwandeln"><h3 id="timer_in_alarme_umwandeln"><a href="#timer_in_alarme_umwandeln">Timer in Alarme umwandeln</a></h3><div class="section-content"><p>DOM-basierte Timer, wie <a href="/de/docs/Web/API/Window/setTimeout"><code>setTimeout()</code></a>, bleiben nach dem Inaktivwerden einer Ereignisseite nicht aktiv. Verwenden Sie stattdessen die <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/alarms"><code>alarms</code></a> API, wenn Sie einen Timer benötigen, um eine Ereignisseite zu wecken.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.alarms.create({ delayInMinutes: 3.0 }); </code></pre></div> <p>Fügen Sie dann einen Listener hinzu.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>browser.alarms.onAlarm.addListener(() =&gt; { alert("Hello, world!"); }); </code></pre></div></div></section><section aria-labelledby="aufrufe_für_hintergrundskriptfunktionen_aktualisieren"><h3 id="aufrufe_für_hintergrundskriptfunktionen_aktualisieren"><a href="#aufrufe_für_hintergrundskriptfunktionen_aktualisieren">Aufrufe für Hintergrundskriptfunktionen aktualisieren</a></h3><div class="section-content"><p>Erweiterungen hosten häufig ihre Hauptfunktionalität im Hintergrundskript. Einige Erweiterungen greifen auf Funktionen und Variablen zu, die in der Hintergrundseite über das <code>window</code> definiert sind, das von <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/extension/getBackgroundPage"><code>extension.getBackgroundPage</code></a> zurückgegeben wird. Die Methode gibt <code>null</code> zurück, wenn:</p> <ul> <li>Erweiterungsseiten isoliert sind, wie z. B. Erweiterungsseiten im Privaten Fenster-Modus oder Containertabs.</li> <li>die Hintergrundseite nicht läuft. Dies ist bei persistenten Hintergrundseiten selten, aber sehr wahrscheinlich bei Verwendung einer Ereignisseite, da eine Ereignisseite angehalten werden kann.</li> </ul> <div class="notecard note"> <p> <strong>Hinweis:</strong> Der empfohlene Weg, um Funktionalität im Hintergrundskript aufzurufen, ist die Kommunikation über <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage"><code>runtime.sendMessage()</code></a> oder <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/connect"><code>runtime.connect()</code></a>. Die in diesem Abschnitt diskutierten <code>getBackgroundPage()</code>-Methoden können in einer cross-browser Erweiterung nicht verwendet werden, da Manifest Version 3 Erweiterungen in Chrome keine Hintergrund- oder Ereignisseiten verwenden können. </p> </div> <p> Wenn Ihre Erweiterung einen Verweis auf das <code>window</code> der Hintergrundseite benötigt, verwenden Sie <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/getBackgroundPage"><code>runtime.getBackgroundPage</code></a> um sicherzustellen, dass die Ereignisseite ausgeführt wird. Falls der Aufruf optional ist (d. h. nur benötigt wird, wenn die Ereignisseite am Leben ist), verwenden Sie <a href="/de/docs/Mozilla/Add-ons/WebExtensions/API/extension/getBackgroundPage"><code>extension.getBackgroundPage</code></a>. </p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js example-bad notranslate"><code>document.getElementById("target").addEventListener("click", async () =&gt; { let backgroundPage = browser.extension.getBackgroundPage(); // Warning: backgroundPage is likely null. backgroundPage.backgroundFunction(); }); </code></pre></div> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>document.getElementById("target").addEventListener("click", async () =&gt; { // runtime.getBackgroundPage() wakes up the event page if it was not running. let backgroundPage = await browser.runtime.getBackgroundPage(); backgroundPage.backgroundFunction(); }); </code></pre></div></div></section></article><aside class="article-footer"><div class="article-footer-inner"><div class="svg-container"><svg xmlns="http://www.w3.org/2000/svg" width="162" height="162" viewBox="0 0 162 162" fill="none" role="none"><mask id="b" fill="#fff"><path d="M97.203 47.04c8.113-7.886 18.004-13.871 28.906-17.492a78 78 0 0 1 33.969-3.39c11.443 1.39 22.401 5.295 32.024 11.411s17.656 14.28 23.476 23.86c5.819 9.579 9.269 20.318 10.083 31.385a69.85 69.85 0 0 1-5.387 32.44c-4.358 10.272-11.115 19.443-19.747 26.801-8.632 7.359-18.908 12.709-30.034 15.637l-6.17-21.698c7.666-2.017 14.746-5.703 20.694-10.773 5.948-5.071 10.603-11.389 13.606-18.467a48.14 48.14 0 0 0 3.712-22.352c-.561-7.625-2.938-15.025-6.948-21.625s-9.544-12.226-16.175-16.44-14.181-6.904-22.065-7.863a53.75 53.75 0 0 0-23.405 2.336c-7.513 2.495-14.327 6.62-19.918 12.053z"></path></mask><path stroke="url(#a)" stroke-dasharray="6, 6" stroke-width="2" d="M97.203 47.04c8.113-7.886 18.004-13.871 28.906-17.492a78 78 0 0 1 33.969-3.39c11.443 1.39 22.401 5.295 32.024 11.411s17.656 14.28 23.476 23.86c5.819 9.579 9.269 20.318 10.083 31.385a69.85 69.85 0 0 1-5.387 32.44c-4.358 10.272-11.115 19.443-19.747 26.801-8.632 7.359-18.908 12.709-30.034 15.637l-6.17-21.698c7.666-2.017 14.746-5.703 20.694-10.773 5.948-5.071 10.603-11.389 13.606-18.467a48.14 48.14 0 0 0 3.712-22.352c-.561-7.625-2.938-15.025-6.948-21.625s-9.544-12.226-16.175-16.44-14.181-6.904-22.065-7.863a53.75 53.75 0 0 0-23.405 2.336c-7.513 2.495-14.327 6.62-19.918 12.053z" mask="url(#b)" style="stroke:url(#a)" transform="translate(-63.992 -25.587)"></path><ellipse cx="8.066" cy="111.597" fill="var(--background-tertiary)" rx="53.677" ry="53.699" transform="matrix(.71707 -.697 .7243 .6895 0 0)"></ellipse><g clip-path="url(#c)" transform="translate(-63.992 -25.587)"><path fill="#9abff5" d="m144.256 137.379 32.906 12.434a4.41 4.41 0 0 1 2.559 5.667l-9.326 24.679a4.41 4.41 0 0 1-5.667 2.559l-8.226-3.108-2.332 6.17c-.466 1.233-.375 1.883-1.609 1.417l-2.253-.527c-.411-.155-.95-.594-1.206-1.161l-4.734-10.484-12.545-4.741a4.41 4.41 0 0 1-2.559-5.667l9.325-24.679a4.41 4.41 0 0 1 5.667-2.559m9.961 29.617 8.227 3.108 3.264-8.638-.498-6.768-4.113-1.555.548 7.258-4.319-1.632zm-12.339-4.663 8.226 3.108 3.264-8.637-.498-6.769-4.113-1.554.548 7.257-4.319-1.632z"></path></g><g clip-path="url(#d)" transform="translate(-63.992 -25.587)"><path fill="#81b0f3" d="M135.35 60.136 86.67 41.654c-3.346-1.27-7.124.428-8.394 3.775L64.414 81.938c-1.27 3.347.428 7.125 3.774 8.395l12.17 4.62-3.465 9.128c-.693 1.826-1.432 2.457.394 3.15l3.014 1.625c.609.231 1.637.274 2.477-.104l15.53-6.983 18.56 7.047c3.346 1.27 7.124-.428 8.395-3.775l13.862-36.51c1.27-3.346-.428-7.124-3.775-8.395M95.261 83.207l-12.17-4.62 4.852-12.779 7.19-7.017 6.085 2.31-7.725 7.51 6.389 2.426zm18.255 6.93-12.17-4.62 4.852-12.778 7.189-7.017 6.085 2.31-7.725 7.51 6.39 2.426z"></path></g><defs><clipPath id="c"><path fill="#fff" d="m198.638 146.586-65.056-24.583-24.583 65.057 65.056 24.582z"></path></clipPath><clipPath id="d"><path fill="#fff" d="m66.438 14.055 96.242 36.54-36.54 96.243-96.243-36.54z"></path></clipPath><linearGradient id="a" x1="97.203" x2="199.995" y1="47.04" y2="152.793" gradientUnits="userSpaceOnUse"><stop stop-color="#086DFC"></stop><stop offset="0.246" stop-color="#2C81FA"></stop><stop offset="0.516" stop-color="#5497F8"></stop><stop offset="0.821" stop-color="#80B0F6"></stop><stop offset="1" stop-color="#9ABFF5"></stop></linearGradient></defs></svg></div><h2>MDN-Feedback-Box</h2><fieldset class="feedback"><label>War diese Übersetzung hilfreich?</label><div class="button-container"><button type="button" class="button primary has-icon yes"><span class="button-wrap"><span class="icon icon-thumbs-up "></span>Ja</span></button><button type="button" class="button primary has-icon no"><span class="button-wrap"><span class="icon icon-thumbs-down "></span>Nein</span></button></div></fieldset><p class="last-modified-date">Diese Seite wurde automatisch aus dem Englischen übersetzt.</p><div id="on-github" class="on-github"><a href="https://github.com/mdn/translated-content-de/blob/main/files/de/mozilla/add-ons/webextensions/background_scripts/index.md?plain=1" title="Folder: de/mozilla/add-ons/webextensions/background_scripts (Opens in a new tab)" target="_blank" rel="noopener noreferrer">Übersetzung auf GitHub anzeigen</a> <!-- -->•<!-- --> <a href="https://github.com/mdn/translated-content-de/issues/new?template=page-report-de.yml&amp;mdn-url=https%3A%2F%2Fdeveloper.mozilla.org%2Fde%2Fdocs%2FMozilla%2FAdd-ons%2FWebExtensions%2FBackground_scripts&amp;metadata=%3C%21--+Do+not+make+changes+below+this+line+--%3E%0A%3Cdetails%3E%0A%3Csummary%3EPage+report+details%3C%2Fsummary%3E%0A%0A*+Folder%3A+%60de%2Fmozilla%2Fadd-ons%2Fwebextensions%2Fbackground_scripts%60%0A*+MDN+URL%3A+https%3A%2F%2Fdeveloper.mozilla.org%2Fde%2Fdocs%2FMozilla%2FAdd-ons%2FWebExtensions%2FBackground_scripts%0A*+GitHub+URL%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Ftranslated-content-de%2Fblob%2Fmain%2Ffiles%2Fde%2Fmozilla%2Fadd-ons%2Fwebextensions%2Fbackground_scripts%2Findex.md%0A*+Last+commit%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Ftranslated-content-de%2Fcommit%2Fnull%0A*+Document+last+modified%3A+*date+not+known*%0A%0A%3C%2Fdetails%3E" title="This will take you to GitHub to file a new issue." target="_blank" rel="noopener noreferrer">Fehler mit dieser Übersetzung melden</a></div></div></aside></main></div></div><footer id="nav-footer" class="page-footer"><div class="page-footer-grid"><div class="page-footer-logo-col"><a href="/" class="mdn-footer-logo" aria-label="MDN homepage"><svg width="48" height="17" viewBox="0 0 48 17" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="mdn-footer-logo-svg">MDN logo</title><path d="M20.04 16.512H15.504V10.416C15.504 9.488 15.344 8.824 15.024 8.424C14.72 8.024 14.264 7.824 13.656 7.824C12.92 7.824 12.384 8.064 12.048 8.544C11.728 9.024 11.568 9.64 11.568 10.392V14.184H13.008V16.512H8.472V10.416C8.472 9.488 8.312 8.824 7.992 8.424C7.688 8.024 7.232 7.824 6.624 7.824C5.872 7.824 5.336 8.064 5.016 8.544C4.696 9.024 4.536 9.64 4.536 10.392V14.184H6.6V16.512H0V14.184H1.44V8.04H0.024V5.688H4.536V7.32C5.224 6.088 6.32 5.472 7.824 5.472C8.608 5.472 9.328 5.664 9.984 6.048C10.64 6.432 11.096 7.016 11.352 7.8C11.992 6.248 13.168 5.472 14.88 5.472C15.856 5.472 16.72 5.776 17.472 6.384C18.224 6.992 18.6 7.936 18.6 9.216V14.184H20.04V16.512Z" fill="currentColor"></path><path d="M33.6714 16.512H29.1354V14.496C28.8314 15.12 28.3834 15.656 27.7914 16.104C27.1994 16.536 26.4154 16.752 25.4394 16.752C24.0154 16.752 22.8954 16.264 22.0794 15.288C21.2634 14.312 20.8554 12.984 20.8554 11.304C20.8554 9.688 21.2554 8.312 22.0554 7.176C22.8554 6.04 24.0634 5.472 25.6794 5.472C26.5594 5.472 27.2794 5.648 27.8394 6C28.3994 6.352 28.8314 6.8 29.1354 7.344V2.352H26.9754V0H32.2314V14.184H33.6714V16.512ZM29.1354 11.04V10.776C29.1354 9.88 28.8954 9.184 28.4154 8.688C27.9514 8.176 27.3674 7.92 26.6634 7.92C25.9754 7.92 25.3674 8.176 24.8394 8.688C24.3274 9.2 24.0714 10.008 24.0714 11.112C24.0714 12.152 24.3114 12.944 24.7914 13.488C25.2714 14.032 25.8394 14.304 26.4954 14.304C27.3114 14.304 27.9514 13.96 28.4154 13.272C28.8954 12.584 29.1354 11.84 29.1354 11.04Z" fill="currentColor"></path><path d="M47.9589 16.512H41.9829V14.184H43.4229V10.416C43.4229 9.488 43.2629 8.824 42.9429 8.424C42.6389 8.024 42.1829 7.824 41.5749 7.824C40.8389 7.824 40.2709 8.056 39.8709 8.52C39.4709 8.968 39.2629 9.56 39.2469 10.296V14.184H40.6869V16.512H34.7109V14.184H36.1509V8.04H34.5909V5.688H39.2469V7.344C39.9669 6.096 41.1269 5.472 42.7269 5.472C43.7509 5.472 44.6389 5.776 45.3909 6.384C46.1429 6.992 46.5189 7.936 46.5189 9.216V14.184H47.9589V16.512Z" fill="currentColor"></path></svg></a><p>Your blueprint for a better internet.</p><ul class="social-icons"><li><a href="https://mozilla.social/@mdn" target="_blank" rel="me noopener noreferrer"><span class="icon icon-mastodon"></span><span class="visually-hidden">MDN on Mastodon</span></a></li><li><a href="https://twitter.com/mozdevnet" target="_blank" rel="noopener noreferrer"><span class="icon icon-twitter-x"></span><span class="visually-hidden">MDN on X (formerly Twitter)</span></a></li><li><a href="https://github.com/mdn/" target="_blank" rel="noopener noreferrer"><span class="icon icon-github-mark-small"></span><span class="visually-hidden">MDN on GitHub</span></a></li><li><a href="/en-US/blog/rss.xml" target="_blank"><span class="icon icon-feed"></span><span class="visually-hidden">MDN Blog RSS Feed</span></a></li></ul></div><div class="page-footer-nav-col-1"><h2 class="footer-nav-heading">MDN</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a href="/en-US/about">About</a></li><li class="footer-nav-item"><a href="/en-US/blog/">Blog</a></li><li class="footer-nav-item"><a href="https://www.mozilla.org/en-US/careers/listings/?team=ProdOps" target="_blank" rel="noopener noreferrer">Careers</a></li><li class="footer-nav-item"><a href="/en-US/advertising">Advertise with us</a></li></ul></div><div class="page-footer-nav-col-2"><h2 class="footer-nav-heading">Support</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="https://support.mozilla.org/products/mdn-plus">Product help</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/de/docs/MDN/Community/Issues">Report an issue</a></li></ul></div><div class="page-footer-nav-col-3"><h2 class="footer-nav-heading">Our communities</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="/en-US/community">MDN Community</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="https://discourse.mozilla.org/c/mdn/236" target="_blank" rel="noopener noreferrer">MDN Forum</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/discord" target="_blank" rel="noopener noreferrer">MDN Chat</a></li></ul></div><div class="page-footer-nav-col-4"><h2 class="footer-nav-heading">Developers</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="/de/docs/Web">Web Technologies</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/de/docs/Learn">Learn Web Development</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/de/plus">MDN Plus</a></li><li class="footer-nav-item"><a href="https://hacks.mozilla.org/" target="_blank" rel="noopener noreferrer">Hacks Blog</a></li></ul></div><div class="page-footer-moz"><a href="https://www.mozilla.org/" class="footer-moz-logo-link" target="_blank" rel="noopener noreferrer"><svg width="112" height="32" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="mozilla-footer-logo-svg">Mozilla logo</title><path d="M41.753 14.218c-2.048 0-3.324 1.522-3.324 4.157 0 2.423 1.119 4.286 3.29 4.286 2.082 0 3.447-1.678 3.447-4.347 0-2.826-1.522-4.096-3.413-4.096Zm54.89 7.044c0 .901.437 1.618 1.645 1.618 1.427 0 2.949-1.024 3.044-3.352-.649-.095-1.365-.185-2.02-.185-1.426-.005-2.668.397-2.668 1.92Z" fill="currentColor"></path><path d="M0 0v32h111.908V0H0Zm32.56 25.426h-5.87v-7.884c0-2.423-.806-3.352-2.39-3.352-1.924 0-2.702 1.365-2.702 3.324v4.868h1.864v3.044h-5.864v-7.884c0-2.423-.806-3.352-2.39-3.352-1.924 0-2.702 1.365-2.702 3.324v4.868h2.669v3.044H6.642v-3.044h1.863v-7.918H6.642V11.42h5.864v2.11c.839-1.489 2.3-2.39 4.252-2.39 2.02 0 3.878.963 4.566 3.01.778-1.862 2.361-3.01 4.566-3.01 2.512 0 4.812 1.522 4.812 4.84v6.402h1.863v3.044h-.005Zm9.036.307c-4.314 0-7.296-2.635-7.296-7.106 0-4.096 2.484-7.481 7.514-7.481s7.481 3.38 7.481 7.29c0 4.472-3.228 7.297-7.699 7.297Zm22.578-.307H51.942l-.403-2.11 7.7-8.846h-4.376l-.621 2.17-2.888-.313.498-4.907h12.294l.313 2.11-7.767 8.852h4.533l.654-2.172 3.167.308-.872 4.908Zm7.99 0h-4.191v-5.03h4.19v5.03Zm0-8.976h-4.191v-5.03h4.19v5.03Zm2.618 8.976 6.054-21.358h3.945l-6.054 21.358h-3.945Zm8.136 0 6.048-21.358h3.945l-6.054 21.358h-3.939Zm21.486.307c-1.863 0-2.887-1.085-3.072-2.792-.805 1.427-2.232 2.792-4.498 2.792-2.02 0-4.314-1.085-4.314-4.006 0-3.447 3.323-4.253 6.518-4.253.778 0 1.584.034 2.3.124v-.465c0-1.427-.034-3.133-2.3-3.133-.84 0-1.488.061-2.143.402l-.453 1.578-3.195-.34.549-3.224c2.45-.996 3.692-1.27 5.992-1.27 3.01 0 5.556 1.55 5.556 4.75v6.083c0 .805.314 1.085.963 1.085.184 0 .375-.034.587-.095l.034 2.11a5.432 5.432 0 0 1-2.524.654Z" fill="currentColor"></path></svg></a><ul class="footer-moz-list"><li class="footer-moz-item"><a href="https://www.mozilla.org/privacy/websites/" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Website Privacy Notice</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/privacy/websites/#cookies" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Cookies</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/about/legal/terms/mozilla" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Legal</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/about/governance/policies/participation/" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Community Participation Guidelines</a></li></ul></div><div class="page-footer-legal"><p id="license" class="page-footer-legal-text">Visit<!-- --> <a href="https://www.mozilla.org" target="_blank" rel="noopener noreferrer">Mozilla Corporation’s</a> <!-- -->not-for-profit parent, the<!-- --> <a target="_blank" rel="noopener noreferrer" href="https://foundation.mozilla.org/">Mozilla Foundation</a>.<br/>Portions of this content are ©1998–<!-- -->2024<!-- --> by individual mozilla.org contributors. Content available under<!-- --> <a href="/de/docs/MDN/Writing_guidelines/Attrib_copyright_license">a Creative Commons license</a>.</p></div></div></footer></div><script type="application/json" id="hydration">{"url":"/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts","doc":{"isMarkdown":true,"isTranslated":true,"isActive":true,"flaws":{},"title":"Hintergrundskripte","mdn_url":"/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts","locale":"de","native":"Deutsch","sidebarHTML":"\n <ol>\n <li class=\"section\"><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions\">Browsererweiterungen</a></li>\n <li>\n <details>\n <summary>Erste Schritte</summary>\n <ol>\n <li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions\">Was sind Erweiterungen?</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension\">Ihre erste Erweiterung</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension\">Ihre zweite Erweiterung</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension\">Anatomie einer Erweiterung</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Examples\">Beispielerweiterungen</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/What_next\">Was nun?</a></li>\n </ol>\n </details>\n </li>\n <li>\n <details open=\"\">\n <summary>Konzepte</summary>\n <ol>\n <li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API\">JavaScript-APIs</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Content_scripts\">Content scripts</a></li>\n<li><em><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts\" aria-current=\"page\">Hintergrundskripte</a></em></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Match_patterns\">Match patterns</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Working_with_files\">Arbeiten mit Dateien</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Internationalization\">Internationalisierung</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy\">Content Security Policy</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Native_messaging\">Native messaging</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Differences_between_API_implementations\">Unterschiede zwischen API-Implementierungen</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities\">Chrome-Inkompatibilitäten</a></li>\n </ol>\n </details>\n </li>\n <li>\n <details>\n <summary>Benutzeroberfläche</summary>\n <ol>\n <li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface\">Benutzeroberfläche</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Toolbar_button\">Toolbar-Button</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions\">Adressleisten-Schaltfläche</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars\">Seitenleisten</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items\">Kontextmenüelemente</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages\">Options page</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages\">Erweiterungsseiten</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications\">Notifications</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox\">Address bar suggestions</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels\">devtools panels</a></li>\n </ol>\n </details>\n </li>\n <li>\n <details>\n <summary>Anleitungen</summary>\n <ol>\n <li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests\">HTTP-Anfragen abfangen</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page\">Eine Webseite modifizieren</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page\">Externe Inhalte einfügen</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Sharing_objects_with_page_scripts\">Objekte mit Seitenskripts teilen</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar\">Einen Button zur Toolbar hinzufügen</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page\">Implementieren einer Einstellungsseite</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API\">Arbeiten mit der Tabs-API</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API\">Arbeiten mit der Bookmarks API</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Cookies_API\">Arbeiten mit der Cookies-API</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Work_with_contextual_identities\">Arbeiten mit kontextbezogenen Identitäten</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard\">Interagieren mit der Zwischenablage</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools\">Erweiterung der Entwicklerwerkzeuge</a></li>\n<li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Build_a_cross_browser_extension\">Erstellen Sie eine plattformübergreifende Browser-Erweiterung</a></li>\n </ol>\n </details>\n </li>\n <li>\n <details>\n <summary>JavaScript-APIs</summary>\n <ol><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs\">Browser support for JavaScript APIs</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/action\">action</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/alarms\">alarms</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks\">bookmarks</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/browserAction\">browserAction</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings\">browserSettings</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/browsingData\">browsingData</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/captivePortal\">captivePortal</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/clipboard\">clipboard</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/commands\">commands</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts\">contentScripts</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities\">contextualIdentities</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/cookies\">cookies</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest\">declarativeNetRequest</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/devtools\">devtools</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/dns\">dns</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/dom\">dom</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/downloads\">downloads</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/events\">events</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/extension\">extension</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/extensionTypes\">extensionTypes</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/find\">find</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/history\">history</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/i18n\">i18n</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/identity\">identity</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/idle\">idle</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/management\">management</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/menus\">menus</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/notifications\">notifications</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/omnibox\">omnibox</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/pageAction\">pageAction</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/permissions\">permissions</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/pkcs11\">pkcs11</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/privacy\">privacy</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/proxy\">proxy</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime\">runtime</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/scripting\">scripting</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/search\">search</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/sessions\">sessions</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction\">sidebarAction</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/storage\">storage</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/tabs\">tabs</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/theme\">theme</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/topSites\">topSites</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/types\">types</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/userScripts\">userScripts</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation\">webNavigation</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/webRequest\">webRequest</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/windows\">windows</a></li></ol>\n </details>\n </li>\n <li>\n <details>\n <summary>Manifest-Schlüssel</summary>\n <ol>\n <li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json\">manifest.json</a></li>\n </ol>\n <ol><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/action\">action</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/author\">author</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background\">background</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action\">browser_action</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings\">browser_specific_settings</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides\">chrome_settings_overrides</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides\">chrome_url_overrides</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands\">commands</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts\">content_scripts</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy\">content_security_policy</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/declarative_net_request\">declarative_net_request</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/default_locale\">default_locale</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/description\">description</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/developer\">developer</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page\">devtools_page</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/dictionaries\">dictionaries</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/externally_connectable\">externally_connectable</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url\">homepage_url</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/host_permissions\">host_permissions</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons\">icons</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/incognito\">incognito</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version\">manifest_version</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name\">name</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/offline_enabled\">offline_enabled</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/omnibox\">omnibox</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_host_permissions\">optional_host_permissions</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions\">optional_permissions</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_page\">options_page</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui\">options_ui</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action\">page_action</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions\">permissions</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers\">protocol_handlers</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/short_name\">short_name</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action\">sidebar_action</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/storage\">storage</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme\">theme</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme_experiment\">theme_experiment</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts\">user_scripts</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version\">version</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version_name\">version_name</a></li><li><a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources\">web_accessible_resources</a></li></ol>\n </details>\n </li>\n <li>\n <details>\n <summary>Erweiterungs-Workshop</summary>\n <ol>\n <li><a href=\"https://extensionworkshop.com/documentation/develop/\">Entwickeln</a></li>\n <li><a href=\"https://extensionworkshop.com/documentation/publish/\">Veröffentlichen</a></li>\n <li><a href=\"https://extensionworkshop.com/documentation/manage/\">Verwalten</a></li>\n <li><a href=\"https://extensionworkshop.com/documentation/enterprise/\">Unternehmen</a></li>\n </ol>\n </details>\n </li>\n <li class=\"section\"><a href=\"/de/docs/Mozilla/Add-ons/Contact_us\">Kontaktieren Sie uns</a></li>\n <li>\n <details>\n <summary>Kanäle</summary>\n <ol>\n <li><a href=\"https://blog.mozilla.org/addons\">Add-ons Blog</a></li>\n <li><a href=\"https://discourse.mozilla.org/c/add-ons\">Add-ons Forum</a></li>\n <li><a href=\"https://chat.mozilla.org/#/room/%23addons:mozilla.org\">Add-ons Chat</a></li>\n </ol>\n </details>\n </li>\n </ol>\n","sidebarMacro":"AddonSidebar","body":[{"type":"prose","value":{"id":null,"title":null,"isH3":false,"content":"<p>Hintergrundskripte oder eine Hintergrundseite ermöglichen es Ihnen, Ereignisse im Browser zu überwachen und darauf zu reagieren, wie z. B. das Navigieren zu einer neuen Seite, das Entfernen eines Lesezeichens oder das Schließen eines Tabs.</p>\n<p>Hintergrundskripte oder eine Seite sind:</p>\n<ul>\n <li>Persistent – geladen, wenn die Erweiterung gestartet wird und entladen, wenn die Erweiterung deaktiviert oder deinstalliert wird.</li>\n <li>Nicht persistent (auch bekannt als Ereignisseiten) – nur geladen, wenn sie benötigt werden, um auf ein Ereignis zu reagieren, und entladen, wenn sie inaktiv werden. Eine Hintergrundseite wird jedoch nicht entladen, bis alle sichtbaren Ansichten und Nachrichtenkanäle geschlossen sind. Das Öffnen einer Ansicht verursacht nicht das Laden der Hintergrundseite, verhindert jedoch deren Schließung.</li>\n</ul>\n<div class=\"notecard note\">\n <p><strong>Hinweis:</strong> In Firefox, wenn der Erweiterungsprozess abstürzt:</p>\n <ul>\n <li>persistente Hintergrundskripte, die zum Zeitpunkt des Absturzes ausgeführt werden, werden automatisch neu geladen.</li>\n <li>nicht-persistente Hintergrundskripte (auch bekannt als \"Ereignisseiten\"), die zum Zeitpunkt des Absturzes ausgeführt werden, werden nicht neu geladen. Sie werden jedoch automatisch neu gestartet, wenn Firefox einen ihrer WebExtensions-API-Ereignislistener aufruft.</li>\n <li>\n Erweiterungsseiten, die zum Zeitpunkt des Absturzes in Tabs geladen sind, werden nicht automatisch wiederhergestellt. Eine Warnmeldung in jedem Tab informiert den Benutzer, dass die Seite abgestürzt ist und ermöglicht es dem Benutzer, den Tab zu schließen oder wiederherzustellen.\n \n <img src=\"/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts/your-tab-crashed-screenshot.png\" alt=\"Browserfenster, das die Benutzerbenachrichtigung anzeigt, dass eine Seite abgestürzt ist, mit den Optionen, den Tab zu schließen oder neu zu starten\" width=\"719\" height=\"488\" loading=\"lazy\">\n Sie können diese Bedingung testen, indem Sie einen neuen Tab öffnen und zu <code>about:crashextensions</code> navigieren, was stillschweigend einen Absturz des Erweiterungsprozesses auslöst.\n </li>\n </ul>\n</div>\n<p>In Manifest V2 können Hintergrundskripte oder eine Seite persistent oder nicht persistent sein. Nicht-persistente Hintergrundskripte werden empfohlen, da sie die Ressourcenkosten Ihrer Erweiterung reduzieren. In Manifest V3 werden nur nicht-persistente Hintergrundskripte oder eine Seite unterstützt.</p>\n<p>Wenn Sie persistente Hintergrundskripte oder eine Seite in Manifest V2 haben und Ihre Erweiterung auf die Migration zu Manifest V3 vorbereiten möchten, bietet <a href=\"#konvertieren_zu_nicht-persistent\">Konvertieren zu nicht-persistent</a> Ratschläge zum Übergang der Skripte oder Seite zum nicht-persistenten Modell.</p>"}},{"type":"prose","value":{"id":"hintergrundskript-umgebung","title":"Hintergrundskript-Umgebung","isH3":false,"content":""}},{"type":"prose","value":{"id":"dom-apis","title":"DOM-APIs","isH3":true,"content":"<p>Hintergrundskripte laufen im Kontext einer speziellen Seite, die als Hintergrundseite bezeichnet wird. Dies verleiht ihnen ein globales <a href=\"/de/docs/Web/API/Window\"><code>window</code></a> und alle Standard-DOM-APIs, die von diesem Objekt bereitgestellt werden.</p>\n<div class=\"notecard warning\">\n <p><strong>Warnung:</strong> In Firefox unterstützen Hintergrundseiten nicht die Verwendung von <a href=\"/de/docs/Web/API/Window/alert\"><code>alert()</code></a>, <a href=\"/de/docs/Web/API/Window/confirm\"><code>confirm()</code></a> oder <a href=\"/de/docs/Web/API/Window/prompt\"><code>prompt()</code></a>.</p>\n</div>"}},{"type":"prose","value":{"id":"webextension-apis","title":"WebExtension-APIs","isH3":true,"content":"<p>Hintergrundskripte können alle <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API\">WebExtension-APIs</a> verwenden, solange ihre Erweiterung die notwendigen <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions\">Berechtigungen</a> hat.</p>"}},{"type":"prose","value":{"id":"cross-origin-zugriff","title":"Cross-Origin-Zugriff","isH3":true,"content":"<p>Hintergrundskripte können XHR-Anfragen an Hosts stellen, für die sie <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions\">Host-Berechtigungen</a> haben.</p>"}},{"type":"prose","value":{"id":"web-inhalte","title":"Web-Inhalte","isH3":true,"content":"<p>Hintergrundskripte haben keinen direkten Zugriff auf Webseiten. Sie können jedoch <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Content_scripts\">Inhaltsskripte</a> in Webseiten laden und <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#communicating_with_background_scripts\">mit diesen Inhaltsskripten über eine Nachrichtenübermittlung-API kommunizieren</a>.</p>"}},{"type":"prose","value":{"id":"content_security_policy","title":"Content Security Policy","isH3":true,"content":"<p>Hintergrundskripte sind durch eine Content Security Policy von bestimmten potenziell gefährlichen Operationen, wie der Verwendung von <a href=\"/de/docs/Web/JavaScript/Reference/Global_Objects/eval\"><code>eval()</code></a>, ausgeschlossen.</p>\n<p>Weitere Details finden Sie unter <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy\">Content Security Policy</a>.</p>"}},{"type":"prose","value":{"id":"implementierung_von_hintergrundskripten","title":"Implementierung von Hintergrundskripten","isH3":false,"content":"<p>Dieser Abschnitt beschreibt, wie man ein nicht-persistentes Hintergrundskript implementiert.</p>"}},{"type":"prose","value":{"id":"hintergrundskripte_spezifizieren","title":"Hintergrundskripte spezifizieren","isH3":true,"content":"<p>In Ihrer Erweiterung fügen Sie ein Hintergrundskript oder Skripte ein, wenn Sie diese benötigen, indem Sie den Schlüssel <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background\"><code>\"background\"</code></a> in <code>manifest.json</code> verwenden. Für Erweiterungen in Manifest V2 muss die <code>persistent</code>-Eigenschaft auf <code>false</code> gesetzt werden, um ein nicht-persistentes Skript zu erstellen. Für Erweiterungen in Manifest V3 kann es weggelassen werden oder muss auf <code>false</code> gesetzt werden, da Skripte in Manifest V3 immer nicht-persistent sind. Die Einbeziehung von <code>\"type\": \"module\"</code> lädt die Hintergrundskripte als ES-Module.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">json</span></div><pre class=\"brush: json notranslate\"><code>\"background\": {\n \"scripts\": [\"background-script.js\"],\n \"persistent\": false,\n \"type\": \"module\"\n}\n</code></pre></div>\n<p>Diese Skripte werden in der Hintergrundseite der Erweiterung ausgeführt, so dass sie im gleichen Kontext wie in eine Webseite geladene Skripte operieren.</p>\n<p>Wenn Sie jedoch bestimmte Inhalte in der Hintergrundseite benötigen, können Sie eine festlegen. Sie geben dann Ihr Skript von der Seite an, anstatt die <code>\"scripts\"</code>-Eigenschaft zu verwenden. Vor der Einführung der <code>\"type\"</code>-Eigenschaft zum <code>\"background\"</code>-Schlüssel war dies die einzige Möglichkeit, ES-Module einzufügen. Sie legen eine Hintergrundseite so fest:</p>\n<ul>\n <li>\n <p>manifest.json</p>\n <div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">json</span></div><pre class=\"brush: json notranslate\"><code>\"background\": {\n \"page\": \"background-page.html\",\n \"persistent\": false\n}\n</code></pre></div>\n </li>\n <li>\n <p>background-page.html</p>\n <div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">html</span></div><pre class=\"brush: html notranslate\"><code>&lt;!doctype html&gt;\n&lt;html lang=\"en\"&gt;\n &lt;head&gt;\n &lt;meta charset=\"utf-8\" /&gt;\n &lt;script type=\"module\" src=\"background-script.js\"&gt;&lt;/script&gt;\n &lt;/head&gt;\n&lt;/html&gt;\n</code></pre></div>\n </li>\n</ul>\n<p>Sie können keine Hintergrundskripte und eine Hintergrundseite gleichzeitig spezifizieren.</p>"}},{"type":"prose","value":{"id":"die_erweiterung_initialisieren","title":"Die Erweiterung initialisieren","isH3":true,"content":"<p>Hören Sie zu <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onInstalled\"><code>runtime.onInstalled</code></a>, um eine Erweiterung bei der Installation zu initialisieren. Verwenden Sie dieses Ereignis, um einen Zustand festzulegen oder für die einmalige Initialisierung.</p>\n<p>Für Erweiterungen mit Ereignisseiten ist dies der Ort, wo zustandsbehaftete APIs, wie ein mit <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/menus/create\"><code>menus.create</code></a> erstelltes Kontextmenü, verwendet werden sollten. Dies liegt daran, dass zustandsbehaftete APIs nicht bei jedem Neuladen der Ereignisseite ausgeführt werden müssen; sie müssen nur ausgeführt werden, wenn die Erweiterung installiert wird.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onInstalled.addListener(() =&gt; {\n browser.contextMenus.create({\n id: \"sampleContextMenu\",\n title: \"Sample Context Menu\",\n contexts: [\"selection\"],\n });\n});\n</code></pre></div>"}},{"type":"prose","value":{"id":"listener_hinzufügen","title":"Listener hinzufügen","isH3":true,"content":"<p>Strukturieren Sie Hintergrundskripte um Ereignisse, auf die die Erweiterung angewiesen ist. Die Definition relevanter Ereignisse ermöglicht es Hintergrundskripten, inaktiv zu bleiben, bis diese Ereignisse ausgelöst werden, und verhindert, dass die Erweiterung wesentliche Auslöser verpasst.</p>\n<p>Listener müssen synchron vom Start der Seite aus registriert werden.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onInstalled.addListener(() =&gt; {\n browser.contextMenus.create({\n id: \"sampleContextMenu\",\n title: \"Sample Context Menu\",\n contexts: [\"selection\"],\n });\n});\n\n// This will run when a bookmark is created.\nbrowser.bookmarks.onCreated.addListener(() =&gt; {\n // do something\n});\n</code></pre></div>\n<p>Registrieren Sie keine Listener asynchron, da sie nicht ordnungsgemäß ausgelöst werden. Anstatt:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js example-bad notranslate\"><code>window.onload = () =&gt; {\n // WARNING! This event is not persisted, and will not restart the event page.\n browser.bookmarks.onCreated.addListener(() =&gt; {\n // do something\n });\n};\n</code></pre></div>\n<p>Machen Sie dies:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.tabs.onUpdated.addListener(() =&gt; {\n // This event is run in the top level scope of the event page, and will persist, allowing\n // it to restart the event page if necessary.\n});\n</code></pre></div>\n<p>Erweiterungen können Listener aus ihren Hintergrundskripten entfernen, indem sie <code>removeListener</code> aufrufen, wie z. B. mit <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage\"><code>runtime.onMessage</code></a> <code>removeListener</code>. Wenn alle Listener für ein Ereignis entfernt werden, lädt der Browser das Hintergrundskript der Erweiterung für dieses Ereignis nicht mehr.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onMessage.addListener(\n function messageListener(message, sender, sendResponse) {\n browser.runtime.onMessage.removeListener(messageListener);\n },\n);\n</code></pre></div>"}},{"type":"prose","value":{"id":"ereignisse_filtern","title":"Ereignisse filtern","isH3":true,"content":"<p>Verwenden Sie APIs, die Ereignisfilter unterstützen, um Listener auf die Fälle zu beschränken, die für die Erweiterung von Bedeutung sind. Wenn eine Erweiterung <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated\"><code>tabs.onUpdated</code></a> überwacht, verwenden Sie stattdessen das Ereignis <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation/onCompleted\"><code>webNavigation.onCompleted</code></a> mit Filtern, da die Tabs-API keine Filter unterstützt.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.webNavigation.onCompleted.addListener(\n () =&gt; {\n console.log(\"This is my favorite website!\");\n },\n { url: [{ urlMatches: \"https://www.mozilla.org/\" }] },\n);\n</code></pre></div>"}},{"type":"prose","value":{"id":"auf_listener_reagieren","title":"Auf Listener reagieren","isH3":true,"content":"<p>Listener existieren, um Funktionalität auszulösen, sobald ein Ereignis ausgelöst wurde. Um auf ein Ereignis zu reagieren, strukturieren Sie die gewünschte Reaktion innerhalb des Listener-Ereignisses.</p>\n<p>Beim Reagieren auf Ereignisse im Kontext eines bestimmten Tabs oder einer bestimmten Frame verwenden Sie <code>tabId</code> und <code>frameId</code> aus den Ereignisdaten, anstatt sich auf den \"aktuellen Tab\" zu verlassen. Die Spezifikation des Ziels stellt sicher, dass Ihre Erweiterung keine Erweiterungs-API auf das falsche Ziel aufruft, wenn sich der \"aktuelle Tab\" ändert, während die Ereignisseite geweckt wird.</p>\n<p>Zum Beispiel kann <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage\"><code>runtime.onMessage</code></a> auf Aufrufe von <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage\"><code>runtime.sendMessage</code></a> wie folgt antworten:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onMessage.addListener((message, sender, sendResponse) =&gt; {\n if (message.data === \"setAlarm\") {\n browser.alarms.create({ delayInMinutes: 5 });\n } else if (message.data === \"runLogic\") {\n browser.scripting.executeScript({\n target: {\n tabId: sender.tab.id,\n frameIds: [sender.frameId],\n },\n files: [\"logic.js\"],\n });\n } else if (message.data === \"changeColor\") {\n browser.scripting.executeScript({\n target: {\n tabId: sender.tab.id,\n frameIds: [sender.frameId],\n },\n func: () =&gt; {\n document.body.style.backgroundColor = \"orange\";\n },\n });\n }\n});\n</code></pre></div>"}},{"type":"prose","value":{"id":"hintergrundskripte_entladen","title":"Hintergrundskripte entladen","isH3":true,"content":"<p>Daten sollten periodisch gespeichert werden, um wichtige Informationen nicht zu verlieren, falls eine Erweiterung abstürzt, ohne <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend\"><code>runtime.onSuspend</code></a> zu empfangen. Verwenden Sie die Speicher-API, um dabei zu helfen.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>// Or storage.session if the variable does not need to persist pass browser shutdown.\nbrowser.storage.local.set({ variable: variableInformation });\n</code></pre></div>\n<p>Nachrichtenkanäle können nicht verhindern, dass eine Ereignisseite heruntergefahren wird. Wenn eine Erweiterung die Nachrichtenübermittlung verwendet, werden die Kanäle geschlossen, wenn die Ereignisseite inaktiv ist. Das Lauschen auf <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port\"><code>runtime.Port</code></a> <code>onDisconnect</code> ermöglicht es Ihnen, zu entdecken, wann offene Kanäle geschlossen werden, allerdings hat der Listener die gleichen Zeitbeschränkungen wie <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend\"><code>runtime.onSuspend</code></a>.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onConnect.addListener((port) =&gt; {\n port.onMessage.addListener((message) =&gt; {\n if (message === \"hello\") {\n let response = { greeting: \"welcome!\" };\n port.postMessage(response);\n } else if (message === \"goodbye\") {\n console.log(\"Disconnecting port from this end\");\n port.disconnect();\n }\n });\n port.onDisconnect.addListener(() =&gt; {\n console.log(\"Port was disconnected from the other end\");\n });\n});\n</code></pre></div>\n<p>Hintergrundskripte werden nach wenigen Sekunden Inaktivität entladen. Wenn jedoch während der Aussetzung eines Hintergrundskripts ein anderes Ereignis das Hintergrundskript weckt, wird <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspendCanceled\"><code>runtime.onSuspendCanceled</code></a> aufgerufen und das Hintergrundskript läuft weiter. Falls Aufräumarbeiten erforderlich sind, hören Sie auf <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend\"><code>runtime.onSuspend</code></a>.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onSuspend.addListener(() =&gt; {\n console.log(\"Unloading.\");\n browser.browserAction.setBadgeText({ text: \"\" });\n});\n</code></pre></div>\n<p>Es sollte jedoch bevorzugt werden, Daten zu speichern, anstatt sich auf <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend\"><code>runtime.onSuspend</code></a> zu verlassen. Es erlaubt nicht so viel Aufräumarbeiten, wie möglicherweise benötigt werden und hilft nicht im Falle eines Absturzes.</p>"}},{"type":"prose","value":{"id":"konvertieren_zu_nicht-persistent","title":"Konvertieren zu nicht-persistent","isH3":false,"content":"<p>Wenn Sie ein persistentes Hintergrundskript haben, bietet dieser Abschnitt Anweisungen zur Umstellung auf das nicht-persistente Modell.</p>"}},{"type":"prose","value":{"id":"ihre_manifest.json-datei_aktualisieren","title":"Ihre manifest.json-Datei aktualisieren","isH3":true,"content":"<p>Ändern Sie in der <code>manifest.json</code>-Datei Ihrer Erweiterung die persistente Eigenschaft des <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background\"><code>\"background\"</code></a>-Schlüssels auf <code>false</code> für Ihr Skript oder Ihre Seite.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">json</span></div><pre class=\"brush: json notranslate\"><code>\"background\": {\n …,\n \"persistent\": false\n}\n</code></pre></div>"}},{"type":"prose","value":{"id":"ereignislistener_verschieben","title":"Ereignislistener verschieben","isH3":true,"content":"<p>Listener müssen auf der obersten Ebene sein, um das Hintergrundskript zu aktivieren, wenn ein Ereignis ausgelöst wird. Registrierte Listener müssen möglicherweise zu einem synchronen Muster umstrukturiert und auf die oberste Ebene verschoben werden.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onStartup.addListener(() =&gt; {\n // run startup function\n});\n</code></pre></div>"}},{"type":"prose","value":{"id":"zustandsänderungen_aufzeichnen","title":"Zustandsänderungen aufzeichnen","isH3":true,"content":"<p>Skripte öffnen und schließen jetzt nach Bedarf. Verlassen Sie sich daher nicht auf globale Variablen.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js example-bad notranslate\"><code>var count = 101;\nbrowser.runtime.onMessage.addListener((message, sender, sendResponse) =&gt; {\n if (message === \"count\") {\n ++count;\n sendResponse(count);\n }\n});\n</code></pre></div>\n<p>Verwenden Sie stattdessen die Speicher-API, um Zustände und Werte zu setzen und zurückzugeben:</p>\n<ul>\n <li>Verwenden Sie <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/storage/session\"><code>storage.session</code></a> für In-Memory-Speicher, der gelöscht wird, wenn die Erweiterung oder der Browser heruntergefahren wird. Standardmäßig ist <code>storage.session</code> nur für Erweiterungskontexte und nicht für Inhaltsskripte verfügbar.</li>\n <li>Verwenden Sie <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/storage/local\"><code>storage.local</code></a> für einen größeren Speicherbereich, der über Neustarts von Browser und Erweiterung hinaus besteht.</li>\n</ul>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onMessage.addListener(async (message, sender) =&gt; {\n if (message === \"count\") {\n let items = await browser.storage.session.get({ myStoredCount: 101 });\n let count = items.myStoredCount;\n ++count;\n await browser.storage.session.set({ myStoredCount: count });\n return count;\n }\n});\n</code></pre></div>\n<p>\n Das vorherige Beispiel <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage#sending_an_asynchronous_response_using_a_promise\">sendet eine asynchrone Antwort unter Verwendung eines Versprechens</a>, was in Chrome nicht unterstützt wird, bis <a href=\"https://crbug.com/1185241\" class=\"external\" target=\"_blank\">Chrome-Bug 1185241</a> behoben ist.\n Eine cross-browser Alternative ist <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage#sending_an_asynchronous_response_using_sendresponse\">true zurückzugeben und <code>sendResponse</code> zu verwenden</a>.\n</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.runtime.onMessage.addListener((message, sender, sendResponse) =&gt; {\n if (message === \"count\") {\n browser.storage.session.get({ myStoredCount: 101 }).then(async (items) =&gt; {\n let count = items.myStoredCount;\n ++count;\n await browser.storage.session.set({ myStoredCount: count });\n sendResponse(count);\n });\n return true;\n }\n});\n</code></pre></div>"}},{"type":"prose","value":{"id":"timer_in_alarme_umwandeln","title":"Timer in Alarme umwandeln","isH3":true,"content":"<p>DOM-basierte Timer, wie <a href=\"/de/docs/Web/API/Window/setTimeout\"><code>setTimeout()</code></a>, bleiben nach dem Inaktivwerden einer Ereignisseite nicht aktiv. Verwenden Sie stattdessen die <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/alarms\"><code>alarms</code></a> API, wenn Sie einen Timer benötigen, um eine Ereignisseite zu wecken.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.alarms.create({ delayInMinutes: 3.0 });\n</code></pre></div>\n<p>Fügen Sie dann einen Listener hinzu.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>browser.alarms.onAlarm.addListener(() =&gt; {\n alert(\"Hello, world!\");\n});\n</code></pre></div>"}},{"type":"prose","value":{"id":"aufrufe_für_hintergrundskriptfunktionen_aktualisieren","title":"Aufrufe für Hintergrundskriptfunktionen aktualisieren","isH3":true,"content":"<p>Erweiterungen hosten häufig ihre Hauptfunktionalität im Hintergrundskript. Einige Erweiterungen greifen auf Funktionen und Variablen zu, die in der Hintergrundseite über das <code>window</code> definiert sind, das von <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/extension/getBackgroundPage\"><code>extension.getBackgroundPage</code></a> zurückgegeben wird. Die Methode gibt <code>null</code> zurück, wenn:</p>\n<ul>\n <li>Erweiterungsseiten isoliert sind, wie z. B. Erweiterungsseiten im Privaten Fenster-Modus oder Containertabs.</li>\n <li>die Hintergrundseite nicht läuft. Dies ist bei persistenten Hintergrundseiten selten, aber sehr wahrscheinlich bei Verwendung einer Ereignisseite, da eine Ereignisseite angehalten werden kann.</li>\n</ul>\n<div class=\"notecard note\">\n <p>\n <strong>Hinweis:</strong> Der empfohlene Weg, um Funktionalität im Hintergrundskript aufzurufen, ist die Kommunikation über <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage\"><code>runtime.sendMessage()</code></a> oder <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/connect\"><code>runtime.connect()</code></a>.\n Die in diesem Abschnitt diskutierten <code>getBackgroundPage()</code>-Methoden können in einer cross-browser Erweiterung nicht verwendet werden, da Manifest Version 3 Erweiterungen in Chrome keine Hintergrund- oder Ereignisseiten verwenden können.\n </p>\n</div>\n<p>\n Wenn Ihre Erweiterung einen Verweis auf das <code>window</code> der Hintergrundseite benötigt, verwenden Sie <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/runtime/getBackgroundPage\"><code>runtime.getBackgroundPage</code></a> um sicherzustellen, dass die Ereignisseite ausgeführt wird.\n Falls der Aufruf optional ist (d. h. nur benötigt wird, wenn die Ereignisseite am Leben ist), verwenden Sie <a href=\"/de/docs/Mozilla/Add-ons/WebExtensions/API/extension/getBackgroundPage\"><code>extension.getBackgroundPage</code></a>.\n</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js example-bad notranslate\"><code>document.getElementById(\"target\").addEventListener(\"click\", async () =&gt; {\n let backgroundPage = browser.extension.getBackgroundPage();\n // Warning: backgroundPage is likely null.\n backgroundPage.backgroundFunction();\n});\n</code></pre></div>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>document.getElementById(\"target\").addEventListener(\"click\", async () =&gt; {\n // runtime.getBackgroundPage() wakes up the event page if it was not running.\n let backgroundPage = await browser.runtime.getBackgroundPage();\n backgroundPage.backgroundFunction();\n});\n</code></pre></div>"}}],"toc":[{"text":"Hintergrundskript-Umgebung","id":"hintergrundskript-umgebung"},{"text":"Implementierung von Hintergrundskripten","id":"implementierung_von_hintergrundskripten"},{"text":"Konvertieren zu nicht-persistent","id":"konvertieren_zu_nicht-persistent"}],"summary":"Hintergrundskripte oder eine Hintergrundseite ermöglichen es Ihnen, Ereignisse im Browser zu überwachen und darauf zu reagieren, wie z. B. das Navigieren zu einer neuen Seite, das Entfernen eines Lesezeichens oder das Schließen eines Tabs.","popularity":0,"modified":null,"other_translations":[{"locale":"en-US","title":"Background scripts","native":"English (US)"}],"pageType":"unknown","source":{"folder":"de/mozilla/add-ons/webextensions/background_scripts","github_url":"https://github.com/mdn/translated-content/blob/main/files/de/mozilla/add-ons/webextensions/background_scripts/index.md","last_commit_url":"https://github.com/mdn/translated-content/commit/null","filename":"index.md"},"short_title":"Hintergrundskripte","parents":[{"uri":"/de/docs/Mozilla","title":"Mozilla"},{"uri":"/de/docs/Mozilla/Add-ons","title":"Add-ons"},{"uri":"/de/docs/Mozilla/Add-ons/WebExtensions","title":"Browsererweiterungen"},{"uri":"/de/docs/Mozilla/Add-ons/WebExtensions/Background_scripts","title":"Hintergrundskripte"}],"pageTitle":"Hintergrundskripte - Mozilla | MDN","noIndexing":false}}</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10