diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
commit | a065e04d529da1d847b5062a12c46d916408bf32 (patch) | |
tree | fe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/de/mozilla/firefox | |
parent | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff) | |
download | translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2 translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip |
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/de/mozilla/firefox')
11 files changed, 0 insertions, 1093 deletions
diff --git a/files/de/mozilla/firefox/developer_edition/index.html b/files/de/mozilla/firefox/developer_edition/index.html deleted file mode 100644 index 41bacac01d..0000000000 --- a/files/de/mozilla/firefox/developer_edition/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Developer Edition -slug: Mozilla/Firefox/Developer_Edition -translation_of: Mozilla/Firefox/Developer_Edition ---- -<div>{{FirefoxSidebar}}</div><p><img alt="" src="https://mdn.mozillademos.org/files/9069/firefox-dev-ed_logo-only_1024.png" style="display: block; height: 256px; margin-left: auto; margin-right: auto; width: 256px;"></p> - -<p style="text-align: center;">Eine Version von Firefox, maßgeschneidert für Webentwickler.</p> - -<p><a href="https://www.mozilla.org/de-DE/firefox/developer/" style="width: 270px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox Developer Edition herunterladen</a></p> - -<hr> -<div class="column-container"> -<div class="column-half"> -<h3 id="Die_neuesten_Firefox-Features"><strong>Die neuesten Firefox-Features</strong></h3> - -<p>Firefox Developer Edition ersetzt den Aurora-Kanal im <a href="https://wiki.mozilla.org/Release_Management/Release_Process">Firefox Release-Prozess</a>. Wie bei Aurora werden Features alle sechs Wochen in die Developer Edition einfließen, nachdem sie in den Nightly-Builds stabilisiert wurden.</p> - -<p>Indem Sie die Developer Edition nutzen, erhalten Sie Zugriff auf Tools und Plattform-Features mindestens 12 Wochen, bevor sie den Firefox Release-Kanal erreichen.</p> - -<p><a href="/en-US/Firefox/Releases/35">Finden Sie heraus, was neu in der Developer Edition ist</a>.</p> -</div> - -<div class="column-half"> -<h3 id="Experimentelle_Entwickler-Tools"><strong>Experimentelle Entwickler-Tools</strong></h3> - -<p>Wir binden experimentelle Tools ein, die noch nicht für eine allgemeine Veröffentlichung bereit sind.</p> - -<p>Zum Beispiel enthält die Developer Edition den <a href="/en-US/docs/Tools/Firefox_Tools_Adapter">Firefox Tools-Adapter</a>, mit dem Sie die <a href="/en-US/docs/Tools">Firefox Tools für Webentwickler</a> mit anderen Browsern verbinden können, wie Chrome auf Android und Safari auf iOS.</p> -</div> -</div> - -<div class="column-container"> -<div class="column-half"> -<h3 id="Ein_unabhängiges_Profil"><strong>Ein unabhängiges Profil</strong></h3> - -<p>Firefox Developer Edition benutzt ein eigenes Profil, unabhängig von anderen Firefox-Versionen auf Ihrem Gerät. Das bedeutet, dass Sie die Developer Edition leicht neben Ihrer Release- oder Beta-Version von Firefox verwenden können.</p> -</div> - -<div class="column-half"> -<h3 id="Für_Webentwickler_eingestellt"><strong>Für Webentwickler eingestellt</strong></h3> - -<p>Wir haben die Standard-Einstellungswerte für Webentwickler zugeschnitten. Zum Beispiel sind Chrome- und Remote-Debugging standardmäßig aktiviert.</p> -</div> -</div> - -<div class="column-container"> -<div class="column-half"> -<h3 id="Ein_eigenständiges_Theme"><strong>Ein eigenständiges Theme</strong></h3> - -<p>Dies beinhaltet schnelleren Zugriff auf die Entwicklertools.</p> -</div> - -<div class="column-half"> </div> -</div> - -<p> </p> diff --git a/files/de/mozilla/firefox/developer_edition/zurückkehren/index.html b/files/de/mozilla/firefox/developer_edition/zurückkehren/index.html deleted file mode 100644 index 7e5b838c6c..0000000000 --- a/files/de/mozilla/firefox/developer_edition/zurückkehren/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Zurückkehren -slug: Mozilla/Firefox/Developer_Edition/Zurückkehren -translation_of: Mozilla/Firefox/Developer_Edition/Reverting ---- -<div>{{FirefoxSidebar}}</div><h2 id="Vom_Developer_Edition_Theme_zurück_wechseln">Vom Developer Edition Theme zurück wechseln</h2> - -<p><br> - Wenn Sie die Developer Edition nutzen wollen, aber das 'Australis'-Aussehen von Firefox und Firefox Beta bevorzugen, können Sie auf das normale Firefox Design umschalten: Öffnen Sie dazu lediglich das "Anpassen"-Feld und klicken sie die Schaltfläche "Use Firefox Developer Edition Theme" an.</p> - -<p>{{EmbedYouTube("OvJwofTjsNg")}}</p> - -<p>Bitte beachten Sie, dass das Developer Edition Design noch nicht mit minimalistischen Designs kompatibel ist. Wenn Sie also ein minimalistisches Theme verwenden wollen, so werden Sie zum Australis-Design zurück wechseln müssen.</p> - -<h2 id="Zurückkehren_zu_Firefox_Aurora">Zurückkehren zu Firefox Aurora</h2> - -<p><br> - Wenn Sie alle vor-Beta Funktionen in Firefox Developer Edition nutzen wollen, aber keine der anderen Änderungen, dann können Sie zu einer Art Firefox Aurora zurückkehren. Das ist ein Prozess in zwei Schritten, es ist wichtig, dass Sie die Reihenfolge der Anweisungen befolgen:</p> - -<ol> - <li>Öffnen Sie die Einstellungen der Developer Edition und entfernen Sie den Haken bei "Allow Firefox Developer Edition and Firefox to run at the same time". Sie werden aufgefordert, den Browser neu zu starten.</li> - <li>Nach dem Neustart können Sie vom Developer Edition Design zurückkehren, indem Sie das "Anpassen"-Feld öffnen und die Schaltfläche "Use Firefox Developer Edition Theme" anklicken.</li> -</ol> - -<p>{{EmbedYouTube("0Ofq-vlw8Qw")}}</p> diff --git a/files/de/mozilla/firefox/headless-mode/index.html b/files/de/mozilla/firefox/headless-mode/index.html deleted file mode 100644 index a2c3c424ee..0000000000 --- a/files/de/mozilla/firefox/headless-mode/index.html +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Headless mode -slug: Mozilla/Firefox/Headless-Mode -tags: - - Automaisierung - - Firefox - - Flag - - Flagge - - Headless Modus - - Kopflos - - Mozilla - - QA - - Testautomatisierung - - Testen - - headless - - headless mode - - node.js -translation_of: Mozilla/Firefox/Headless_mode ---- -<div>{{FirefoxSidebar}}</div> - -<p class="summary">Der Headless-Mode ist eine sehr nützliche Weise auf dem der Firefox betrieben werden kann — dabei funktioniert Firefox normal, nur dass die Oberfläche nicht sichtbar ist. Das erscheint nicht besonder sinnvoll, wenn man im Web surfen möchte, aber es ist sehr nützlich für automatisierte Tests. Dieser Artikel gibt dir alle Infos, die du brauchst um Firefox im Headless-Mode laufen zu lassen.</p> - -<h2 id="Den_Headless-Mode_verwenden">Den Headless-Mode verwenden</h2> - -<p>Dieser Bereich bietet eine grunsätzliche Anleitung wie man den Headless-Mode verwendet.</p> - -<h3 id="Grundsätzliche_Verwendung">Grundsätzliche Verwendung</h3> - -<p>Auf der Komandozeile kannst du Firefox im Headless-Mode starten indem du das <code>-headless</code> Flag anhängst. Zum Beispiel:</p> - -<pre class="brush: bash">/path/to/firefox -headless</pre> - -<h3 id="Screenshots_aufnehmen">Screenshots aufnehmen</h3> - -<p>Seit Firefox 57 ermöglicht es das <code>-screenshot</code> Flag auf Webseiten im Headless-Mode Screenshots aufzunehmen. Grundsätzlich sieht das dann so aus:</p> - -<pre class="brush: bash">/path/to/firefox -headless -screenshot https://developer.mozilla.org/</pre> - -<p>Das erzeugt einen Screenshot in voller Höhe von <code>https://developer.mozilla.com</code> in das aktuelle Verzeichnis mit dem Dateinamen <code>screenshot.png</code>, mit einer Viewport-Breite von 800px.</p> - -<p>Beachte, dass du <code>-headless</code> weg lassen kannst, wenn du <code>-screenshot</code> angibst— es ist implizit enthalten.</p> - -<pre class="brush: bash">/path/to/firefox -screenshot https://developer.mozilla.org/</pre> - -<p>Um die Default-Werte, die oben angegeben sind, zu überschreiben,kannst du folgende <code>Flags/Features</code> verwenden<code>:</code></p> - -<ul> - <li><code>-screenshot name url</code> — Setze einen beliebigen Dateinamen für den Screenshot indem du zwischen dem <code>-screenshot</code> Flag und der URL diesen angibst. Beachte, dass du auch weitere web-kompatible Bildformate wie z.B. <code>.jpg</code>, <code>.bmp</code>, etc.</li> - <li><code>--window-size=x,y</code> — Setze eine beliebige Bildbreite und -höhe für den Screenshot.</li> -</ul> - -<p>Zum Beispiel erzeugt der folgende Befehl einen Screenshot von <code>https://developer.mozilla.com </code>im aktuellen Verzeichnis mit Dateinamen <code>test.jpg</code>, mit einer Breite von 800px und einer Höhe von 1000px:</p> - -<pre class="brush: bash">/path/to/firefox -screenshot test.jpg https://developer.mozilla.org/ --window-size=480,1000</pre> - -<h3 id="Browser_support">Browser support</h3> - -<p>Headless Firefox works on Fx55+ on Linux, and 56+ on Windows/Mac.</p> - -<h2 id="Automated_testing_with_headless_mode">Automated testing with headless mode</h2> - -<p>The most useful way to use headless Firefox is to run automated tests with it, meaning that you can make your testing process much more efficient.</p> - -<h3 id="Selenium_in_Node.js">Selenium in Node.js</h3> - -<p>Here we'll create a <a href="http://www.seleniumhq.org/">Selenium</a> test using <a href="https://nodejs.org/">Node.js</a> and the <code><a href="https://www.npmjs.com/package/selenium-webdriver">selenium-webdriver</a></code> package. For this guide we'll assume that you already have basic familiarity with Selenium, Webdriver, and Node, and that you already have a testing environment set up. If you don't, work through our <a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a> guide first, then come back.</p> - -<p>First, of all, make sure you've got Node installed on your system, and the <code>selenium-webdriver</code> package installed, then create a new file called <code>selenium-test.js</code> and follow the steps below to populate it with test code.</p> - -<div class="note"> -<p><strong>Note</strong>: Alternatively, you could clone our <a href="https://github.com/mdn/headless-examples">headless-examples repo</a>; this also includes a package file so you can just use <code>npm install</code> to install necessary dependencies.</p> -</div> - -<ol> - <li> - <p>Let's add some code. Inside this file, start by importing the main <code>selenium-webdriver</code> module, and the <code>firefox</code> submodule:</p> - - <pre class="brush: js">var webdriver = require('selenium-webdriver'), - By = webdriver.By, - until = webdriver.until; - -var firefox = require('selenium-webdriver/firefox');</pre> - </li> - <li> - <p>Next, we will create a new <code>binary</code> object representing Firefox Nightly, and add the <code>-headless</code> argument to it so that it will be run in headless mode:</p> - - <pre class="brush: js">var binary = new firefox.Binary(firefox.Channel.NIGHTLY); -binary.addArguments("-headless");</pre> - </li> - <li> - <p>Now let's create a new driver instance for Firefox, and use <code>setFirefoxOptions()</code> to include an options object that specifies that we want to run the test using the binary we created above (this step will be unnecessary on Linux, and after headless mode lands in the release channel on Windows/Mac, but it is still useful if you want to test a Nightly-specific feature):</p> - - <pre class="brush: js">var driver = new webdriver.Builder() - .forBrowser('firefox') - .setFirefoxOptions(new firefox.Options().setBinary(binary)) - .build();</pre> - </li> - <li> - <p>Finally, add the following code, which performs a simple test on the Google search homepage:</p> - - <pre class="brush: js">driver.get('https://www.google.com'); -driver.findElement(By.name('q')).sendKeys('webdriver'); - -driver.sleep(1000).then(function() { - driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB); -}); - -driver.findElement(By.name('btnK')).click(); - -driver.sleep(2000).then(function() { - driver.getTitle().then(function(title) { - if(title === 'webdriver - Google Search') { - console.log('Test passed'); - } else { - console.log('Test failed'); - } - }); -}); - -driver.quit();</pre> - </li> - <li> - <p>Finally, run your test with following command:</p> - - <pre class="brush: bash">node selenium-test</pre> - </li> -</ol> - -<p>That's it! After a few seconds, you should see the message "Test passed" returned in the console.</p> - -<p><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a> by Myk Melez contains additional useful tips and tricks for running Node.js Selenium tests with headless mode.</p> - -<h3 id="Selenium_in_Java">Selenium in Java</h3> - -<div class="note"> -<p><strong>Note</strong>: Thanks a lot to nicholasdipiazza for writing these instructions!</p> -</div> - -<p>This guide assumes that you already have Geckodriver on your machine, as explained in our <a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a> guide, and that you have an IDE set up that supports Gradle projects.</p> - -<ol> - <li> - <p>Download our <a href="https://github.com/mdn/headless-examples/blob/master/headlessfirefox-gradle.zip">headlessfirefox-gradle.zip</a> archive (<a href="https://github.com/mdn/headless-examples/tree/master/headlessfirefox-gradle">see the source here</a>), extract it, and import the headlessfirefox folder into your IDE as a gradle project.</p> - </li> - <li> - <p>Edit the <code>build.gradle</code> file to set selenium to a later version if needed. At the time of writing, we used 3.5.3.</p> - - <pre class="brush: java">group 'com.mozilla' -version '1.0' - -apply plugin: 'java' - -sourceCompatibility = 1.8 - -repositories { - mavenCentral() -} - -dependencies { - compile('org.seleniumhq.selenium:selenium-api:3.5.3') - compile('org.seleniumhq.selenium:selenium-remote-driver:3.5.3') - compile('org.seleniumhq.selenium:selenium-server:3.5.3') - - testCompile group: 'junit', name: 'junit', version: '4.12' -}</pre> - </li> - <li> - <p>Edit the <code>webdriver.gecko.driver</code> property in the HeadlessFirefoxSeleniumExample.java file to equal the path where you installed geckodriver (see line 15 below).</p> - - <pre class="brush: java">package com.mozilla.example; - -import org.openqa.selenium.By; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.firefox.FirefoxBinary; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.firefox.FirefoxOptions; - -import java.util.concurrent.TimeUnit; - -public class HeadlessFirefoxSeleniumExample { - public static void main(String [] args) { - FirefoxBinary firefoxBinary = new FirefoxBinary(); - firefoxBinary.addCommandLineOptions("--headless"); - System.setProperty("webdriver.gecko.driver", "/opt/geckodriver"); - FirefoxOptions firefoxOptions = new FirefoxOptions(); - firefoxOptions.setBinary(firefoxBinary); - FirefoxDriver driver = new FirefoxDriver(firefoxOptions); - try { - driver.get("http://www.google.com"); - driver.manage().timeouts().implicitlyWait(4, - TimeUnit.SECONDS); - WebElement queryBox = driver.findElement(By.name("q")); - queryBox.sendKeys("headless firefox"); - WebElement searchBtn = driver.findElement(By.name("btnK")); - searchBtn.click(); - WebElement iresDiv = driver.findElement(By.id("ires")); - iresDiv.findElements(By.tagName("a")).get(0).click(); - System.out.println(driver.getPageSource()); - } finally { - driver.quit(); - } - } -}</pre> - </li> - <li> - <p>Run the java class and you should see the HTML content of this page printed in your console/terminal.</p> - </li> -</ol> - -<h3 id="Other_testing_solutions">Other testing solutions</h3> - -<ul> - <li>Slimerjs has Firefox support built in on Linux, with Mac and Windows support coming soon. See <a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a> by Brendan Dahl for more details.</li> - <li><a href="https://github.com/DevExpress/testcafe">TestCafe</a> (v.0.18.0 and higher) also supports testing in headless Firefox out of the box. See <a href="https://devexpress.github.io/testcafe/blog/testcafe-v0-18-0-released.html#testing-in-headless-firefox">the documentation</a> for the details.</li> -</ul> - -<p>In addition, you will be able to use headless Firefox to run automated tests written in most other popular testing apps, as long as they allow you to set environment variables.</p> - -<h2 id="Troubleshooting_and_further_help">Troubleshooting and further help</h2> - -<p>If you are having trouble getting headless mode to work, then do not worry — we are here to help. This section is designed to be added to as more questions arise and answers are found.</p> - -<ul> - <li>On Linux, certain libraries are currently required on your system even though headless mode doesn't use them — because Firefox links against them. See {{bug(1372998)}} for more details and progress towards a fix.</li> -</ul> - -<p>If you want to ask the engineers a question, the best place to go is the <code>#headless</code> channel on <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a>. If you are pretty sure you've found a bug, file it on <a href="https://bugzilla.mozilla.org/">Mozilla Bugzilla</a>.</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="https://intoli.com/blog/running-selenium-with-headless-firefox/">Using Selenium with Headless Firefox (on Windows)</a> by Andre Perunicic (uses Python)</li> - <li><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a> by Myk Melez</li> - <li><a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a> by Brendan Dahl</li> - <li><a href="http://blog.rousek.name/2017/09/08/going-headless-with-firefox-since-55/">Using Selenium with Headless Firefox on Travis-CI</a> by Josef Rousek</li> -</ul> diff --git a/files/de/mozilla/firefox/multiprocess_firefox/index.html b/files/de/mozilla/firefox/multiprocess_firefox/index.html deleted file mode 100644 index b21a7228c1..0000000000 --- a/files/de/mozilla/firefox/multiprocess_firefox/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Multiprozess-Firefox -slug: Mozilla/Firefox/Multiprocess_Firefox -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Firefox/Multiprocess_Firefox ---- -<div>{{FirefoxSidebar}}</div><p>In den aktuellen Desktop-Versionen des Firefox läuft der gesamte Browser in einem einzigen Betriebssystem-Prozess. Insbesondere läuft der JavaScript-Code, welcher die Browser-Benutzeroberfläche (auch "chrome code" bekannt) ausführt, im selben Prozess wie der Code von Webseiten (auch "Content" oder "Web Content" genannt).</p> - -<p>Zukünftige Versionen von Firefox werden die Browser-Benutzeroberfläche in einem vom Web Content separaten Prozess ausführen. In der ersten Iteration dieser Architektur werden alle Browser-Tabs im selben Prozess laufen, getrennt vom Prozess, in dem die Browser-Benutzeroberfläche ausgeführt wird. In zukünftigen Iterationen wollen wir mehr als einen Prozess verwenden, um die Inhalte von Webseiten darzustellen. Das Projekt, welches den Multiprozess-Firefox abliefern soll, nennt sich Electrolysis (manchmal abgekürzt als e10s).</p> - -<p>Normale Webseiten bleiben vom Multiprozess-Firefox unberührt. Die Menschen, die an Firefox selbst arbeiten sowie die Add-On-Entwickler werden von der Änderung nur beeinflusst sein, wenn ihr Code auf der Fähigkeit basiert, direkt auf Web Content zuzugreifen.</p> - -<p>Anstatt direkt auf Content zuzugreifen, muss das chrome JavaScript den <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager</a> nutzen, um auf Content zuzugreifen. Um den Übergang zu erleichtern, haben wir <a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a> implementiert und einige <a href="/en-US/Firefox/Multiprocess_Firefox/Compatibility_shims">Kompabilitäts-Shims für Add-On-Entwickler</a> zur Verfügung gestellt. Falls du ein Add-On-Entwickler bist und dich fragst, ob du davon betroffen bist, siehe auch den <a href="/en-US/Add-ons/Working_with_multiprocess_Firefox">Guide zur Arbeit mit dem Multiprozess-Firefox</a>.</p> - -<p>Multiprozess-Firefox ist momentan in der <a class="external external-icon" href="https://www.mozilla.org/firefox/developer/">Developer Edition</a> standardmäßig aktiviert.</p> - -<hr> -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Technical_overview">Technische Übersicht</a></dt> - <dd>Ein sehr abstrakter Überbllick über die Implementierung des Multiprozess-Firefox.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox/Web_content_compatibility">Web Content Kompatibilitätsanleitung</a></dt> - <dd>Leitlinien und details zu potentiellen Web-Seiten-Kompatibilitätsproblemen, die durch den Übergang entstehen könnten. Tip: Es gibt nicht sehr viele!</dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Glossary">Glossar</a></dt> - <dd>Ein Nachschlagewerk für den Jargon, der in Multiprozess-Firefox benutzt wird.</dd> - <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Message_Manager">Message manager</a></dt> - <dd>Vollständiger Guide zu den Objekten, die für die Kommunikation zwischen Chrome (Benutzeroberfläche) und Content (Webseiten Code) benutzt werden.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Mozilla/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">SDK basierte Add-ons</a></dt> - <dd>Wie Add-ons, die mit dem Add-on SDK entwickelt wurden, migriert werden können.</dd> - <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Which_URIs_load_where">Welche URIs laden wo</a></dt> - <dd>Eine schnelle Einführung darüber, welche URIs (chrome:, about:, file:, resource:), in welchem prozess laden.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Motivation">Motivation</a></dt> - <dd>Die Gründe, wieso wir den Multiprozess-Firefox implementieren: Performanz, Sicherheit und Stabilität.</dd> - <dt><a href="https://developer.mozilla.org/Mozilla/Add-ons/Working_with_multiprocess_Firefox">Add-on migrations Anleitung</a></dt> - <dd>Wenn du ein Add-on-Entwickler bist, finde heraus, ob du betroffen bist und wie du deinen Code aktuallisieren kannst.</dd> - <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a></dt> - <dd>Cross Process Object Wrappers sind eine Migrationshilfe, die Chrome Code synchronen zugriff auf Content erlaubt.</dd> - <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">Debugging von Content-Prozessen</a></dt> - <dd>Wie Code, der im Content-Prozess läuft (einschließlich Frame- und Prozessskripte), debugt werden kann.</dd> - <dt><a href="https://developer.mozilla.org/docs/Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox">Tab auswahl in Multiprozess-Firefox</a></dt> - <dd>Wie Tab-Wechsel funktioniert in Multiprozess-Firefox.</dd> -</dl> -</div> -</div> - -<hr> -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">Einschränkungen von Chrome-Skripten</a></dt> - <dd>Praktiken, die in Chrome-Code nicht mehr funktionieren und wie man dies behebt.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">Einschränkungen von Frame-Skripten</a></dt> - <dd>Praktiken, die innerhalb von Frame-Skripten nicht funktionieren werden und was stattdessen zutun ist.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Kontaktiere_uns">Kontaktiere uns</h2> - -<p>Finde mehr über das Projekt heraus, mach mit oder frag uns etwas.</p> - -<ul> - <li><strong>Electrolysis Projektseite</strong>: <a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li> - <li><strong>IRC</strong>: #e10s auf <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a></li> - <li><strong>Mailing-List</strong>: <a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li> -</ul> diff --git a/files/de/mozilla/firefox/multiprocess_firefox/technical_overview/index.html b/files/de/mozilla/firefox/multiprocess_firefox/technical_overview/index.html deleted file mode 100644 index f0de7c5457..0000000000 --- a/files/de/mozilla/firefox/multiprocess_firefox/technical_overview/index.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Technical overview -slug: Mozilla/Firefox/Multiprocess_Firefox/Technical_overview -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Technical_overview ---- -<div>{{FirefoxSidebar}}</div><div class="note"> -<p>Diese Seite ist ein bearbeiteter Auszug aus Bill McCloskey's Blogbeitrag Multiprozess Firefox:(engl) <a class="external external-icon" href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p> -</div> - -<p><span id="result_box" lang="de"><span class="hps">Auf einer sehr hohen</span> <span class="hps">Ebene arbeitet</span> <span class="hps">Multiprozess</span> <span class="hps">Firefox</span> <span class="hps">wie folgt.</span> <span class="hps">Der</span> <span class="alt-edited hps">Prozess, der</span> <span class="hps">beginnt, wenn</span> <span class="hps">Firefox</span> <span class="hps">startet</span><span class="alt-edited"> wird </span><span class="alt-edited hps">übergeordneter Prozess</span><span> genannt.</span> <span class="hps">Zunächst</span> <span class="hps">arbeitet</span> <span class="hps">dieses Verfahren</span> <span class="hps">ähnlich wie</span> <span class="alt-edited hps">Einzelprozess.</span> <span class="alt-edited hps">Es</span> <span class="alt-edited hps">wird ein Firefox Fenster geöffnet</span><span class="alt-edited">, das</span> <span class="hps">alle wichtigen</span> <span class="hps">Elemente der Benutzeroberfläche für</span> <span class="hps">Firefox</span> <span class="hps">enthält</span> (</span> <span id="result_box" lang="de"><span class="hps">browser.xul</span></span><span lang="de">)<span class="alt-edited hps">.</span> <span class="hps">Firefox</span> <span class="hps">hat eine flexibles</span> <span class="hps">GUI</span>-<span class="hps">Toolkit namens</span> <span class="hps">XUL</span><span>, das </span><span class="hps">GUI-Elemente</span> <span class="hps">deklarativ</span> <span class="hps">beschreibt</span><span>, ähnlich wie bei</span> <span class="hps">Web-Content</span><span>.</span> <span class="hps">Genau wie</span> <span class="hps">Web-Inhalte</span><span>, hat das</span> <span class="hps">Firefox</span><span>-UI</span> <span class="hps">ein Fenster</span><span>-Objekt, das</span> <span class="hps">eine Dokumenteigenschaft</span> <span class="hps">hat</span><span>,</span> <span class="hps">und dieses Dokument</span> <span class="hps">enthält alle</span> <span class="hps">XML-Elemente</span> <span class="hps">aus</span> der <span class="hps">browser.xul</span><span>.</span> <span class="hps">Alle</span> <span class="hps">Firefox</span> <span class="hps">Menüs, Symbolleisten</span><span>, Seitenleisten</span> <span class="hps">und</span> <span class="hps">Tabs sind</span> <span class="hps">XML-Elemente</span> <span class="hps">in diesem Dokument.</span> <span class="hps">Jedes Register</span> <span class="hps">enthält ein</span> <span class="hps"><browser</span><span>> -Element</span> um<span class="hps"> Web-Inhalte</span> <span class="hps">anzuzeigen.</span><br> - <br> - <span class="hps">Die erste Stelle</span><span class="hps">, an der</span> <span class="hps">Multiprozess</span> <span class="hps">Firefox</span> <span class="alt-edited hps">von</span> <span class="atn hps">Single-</span><span class="alt-edited">Prozess</span> <span class="hps">Firefox</span> <span class="alt-edited hps">abweicht ist, dass jedes</span> <span class="hps"><browser</span><span>></span> <span class="alt-edited hps">Element ein</span> <span class="alt-edited hps">remote</span> <span class="hps">= "true"</span> <span class="alt-edited hps">-Attribut besitzt.</span> <span class="alt-edited hps">Wenn ein solches</span> <span class="hps">Browser</span> <span class="hps">Element</span> <span class="hps">in das Dokument eingefügt</span> <span class="alt-edited hps">wird, wird ein</span> <span class="alt-edited hps">neuer Inhaltsprozess</span> <span class="hps">gestartet</span><span>.</span> <span class="hps">Dieser Prozess wird als</span> <span class="alt-edited hps">ein untergeordneter Prozess bezeichnet</span><span>.</span> <span class="hps">Ein</span> <span class="hps">IPC-Kanal</span> <span class="alt-edited hps">erstellt, der die</span> <span class="atn hps">Eltern-Kind-</span><span class="alt-edited">Prozesse</span> <span class="hps">verknüpft</span><span>.</span> <span class="hps">Anfangs zeigt</span> <span class="hps">das Kind</span> <span class="hps">about: blank</span><span>, aber die</span> <span class="hps">Eltern können</span> <span class="hps">dem Kind einen</span> <span class="hps">Befehl</span> <span class="hps">senden, um</span> <span class="hps">an anderer Stelle</span> <span class="hps">zu navigieren.</span></span></p> - -<h2 id="Zeichnen"><span class="short_text" id="result_box" lang="de"><span class="alt-edited hps">Zeichnen</span></span></h2> - -<p>Somehow, displayed web content needs to get from the child process to the parent and then to the screen. Multiprocess Firefox depends on a new Firefox feature called <a href="http://benoitgirard.wordpress.com/2012/05/15/off-main-thread-compositing-omtc-and-why-it-matters/"><em>off main thread compositing</em></a> (OMTC). In brief, each Firefox window is broken into a series of <em>layers</em>, somewhat similar to layers in Photoshop. Each time Firefox draws, these layers are submitted to a compositor thread that clips and translates the layers and combines them together into a single image that is then drawn.</p> - -<p>Layers are structured as a tree. The root layer of the tree is responsible for the entire Firefox window. This layer contains other layers, some of which are responsible for drawing the menus and tabs. One subtree displays all the web content. Web content itself may be broken into multiple layers, but they’re all rooted at a single “content” layer.</p> - -<p>In multiprocess Firefox, the content layer subtree is actually a shim. Most of the time, it contains a placeholder node that simply keeps a reference to the IPC link with the child process. The content process retains the actual layer tree for web content. It builds and draws to this layer tree. When it’s done, it sends the structure of its layer tree to the parent process via IPC. Backing buffers are shared with the parent either through shared memory or GPU memory. References to this memory are sent as part of the layer tree. When the parent receives the layer tree, it removes its placeholder content node and replaces it with the actual tree from content. Then it composites and draws as normal. When it’s done, it puts the placeholder back.</p> - -<p>The basic architecture of how OMTC works with multiple processes has existed for some time, since it is needed for Firefox OS. However, Matt Woodrow and David Anderson have done a lot of work to get everything working properly on Windows, Mac, and Linux. One of the big challenges for multiprocess Firefox will be getting OMTC enabled on all platforms. Right now, only Macs use it by default.</p> - -<h2 id="User_input"><strong id="input">User input</strong></h2> - -<p>Events in Firefox work the same way as they do on the web. Namely, there is a DOM tree for the entire window, and events are threaded through this tree in capture and bubbling phases. Imagine that the user clicks on a button on a web page. In single-process Firefox, the root DOM node of the Firefox window gets the first chance to process the event. Then, nodes lower down in the DOM tree get a chance. The event handling proceeds down through to the XUL <code><browser></code> element. At this point, nodes in the web page’s DOM tree are given a chance to handle the event, all the way down to the button. The bubble phase follows, running in the opposite order, all the way back up to the root node of the Firefox window.</p> - -<p>With multiple processes, event handling works the same way until the <code><browser></code> element is hit. At that point, if the event hasn’t been handled yet, it gets sent to the child process by IPC, where handling starts at the root of the content DOM tree. The parent process then waits to run its bubbling phase until the content process has finished handling the event.</p> - -<h2 id="Inter-process_communication"><strong id="ipc">Inter-process communication</strong></h2> - -<p>All IPC happens using the Chromium IPC libraries. Each child process has its own separate IPC link with the parent. Children cannot communicate directly with each other. To prevent deadlocks and to ensure responsiveness, the parent process is not allowed to sit around waiting for messages from the child. However, the child is allowed to block on messages from the parent.</p> - -<p>Rather than directly sending packets of data over IPC as one might expect, we use code generation to make the process much nicer. The IPC protocol is defined in <a href="https://wiki.mozilla.org/IPDL">IPDL</a>, which sort of stands for “inter-* protocol definition language”. A typical IPDL file is <code><a href="http://mxr.mozilla.org/mozilla-central/source/netwerk/ipc/PNecko.ipdl">PNecko.ipdl</a></code>. It defines a set messages and their parameters. Parameters are serialized and included in the message. To send a message <code>M</code>, C++ code just needs to call the method <code>SendM</code>. To receive the message, it implements the method <code>RecvM</code>.</p> - -<p>IPDL is used in all the low-level C++ parts of Gecko where IPC is required. In many cases, IPC is just used to forward actions from the child to the parent. This is a common pattern in Gecko:</p> - -<pre class="brush: cpp">void AddHistoryEntry(param) { - if (XRE_GetProcessType() == GeckoProcessType_Content) { - // If we're in the child, ask the parent to do this for us. - SendAddHistoryEntry(param); - return; - } - - // Actually add the history entry... -} - -bool RecvAddHistoryEntry(param) { - // Got a message from the child. Do the work for it. - AddHistoryEntry(param); - return true; -} -</pre> - -<p>When <code>AddHistoryEntry</code> is called in the child, we detect that we’re inside the child process and send an IPC message to the parent. When the parent receives that message, it calls <code>AddHistoryEntry</code> on its side.</p> - -<p>For a more realistic illustration, consider the Places database, which stores visited URLs for populating the awesome bar. Whenever the user visits a URL in the content process, we call <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/components/places/History.cpp?rev=8b9687f6c602#2326">this code</a>. Notice the content process check followed by the <code>SendVisitURI</code> call and an immediate return. The message is received <a href="http://mxr.mozilla.org/mozilla-central/source/dom/ipc/ContentParent.cpp?rev=fecda5f4a0df#2666">here</a>; this code just calls <code>VisitURI</code> in the parent.</p> - -<p>The code for IndexedDB, the places database, and HTTP connections all runs in the parent process, and they all use roughly the same proxying mechanism in the child.</p> - -<h2 id="Frame_scripts"><strong id="contentscripts">Frame scripts</strong></h2> - -<p>IPDL takes care of passing messages in C++, but much of Firefox is actually written in JavaScript. Instead of using IPDL directly, JavaScript code relies on <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">the message manager</a> to communicate between processes. To use the message manager in JS, you need to get hold of a message manager object. There is a global message manager, message managers for each Firefox window, and message managers for each <code><browser></code> element. A message manager can be used to load JS code into the child process and to exchange messages with it.</p> - -<p>As a simple example, imagine that we want to be informed every time a <code>load</code> event triggers in web content. We’re not interested in any particular browser or window, so we use the global message manager. The basic process is as follows:</p> - -<pre class="brush: js">// Get the global message manager. -let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"]. - getService(Ci.nsIMessageListenerManager); - -// Wait for load event. -mm.addMessageListener("GotLoadEvent", function (msg) { - dump("Received load event: " + <span class="skimlinks-unlinked">msg.data.url</span> + "\n"); -}); - -// Load code into the child process to listen for the event. -mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true); -</pre> - -<p>For this to work, we also need to have a file <code>content-script.js</code>:</p> - -<pre class="brush: js">// Listen for the load event. -addEventListener("load", function (e) { - // Inform the parent process. - let docURL = content.document.documentURI; - sendAsyncMessage("GotLoadEvent", {url: docURL}); -}, false); -</pre> - -<p>This file is called a <em>frame script</em>. When the <code>loadFrameScript</code> function call runs, the code for the script is run once for each <code><browser></code> element. This includes both remote browsers and regular ones. If we had used a per-window message manager, the code would only be run for the browser elements in that window. Any time a new browser element is added, the script is run automatically (this is the purpose of the <code>true</code> parameter to <code>loadFrameScript</code>). Since the script is run once per browser, it can access the browser’s window object and docshell via the <code>content</code> and <code>docShell</code> globals.</p> - -<p>The great thing about frame scripts is that they work in both single-process and multiprocess Firefox. To learn more about the message manager, see the <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager guide</a>.</p> - -<h2 id="Cross-process_APIs"><strong id="shims">Cross-process APIs</strong></h2> - -<p>There are a lot of APIs in Firefox that cross between the parent and child processes. An example is the <code>webNavigation</code> property of XUL <code><browser></code> elements. The <code>webNavigation</code> property is an object that provides methods like <code>loadURI</code>, <code>goBack</code>, and <code>goForward</code>. These methods are called in the parent process, but the actions need to happen in the child. First I’ll cover how these methods work in single-process Firefox, and then I’ll describe how we adapted them for multiple processes.</p> - -<p>The <code>webNavigation</code> property is defined using the XML Binding Language (XBL). XBL is a declarative language for customizing how XML elements work. Its syntax is a combination of XML and JavaScript. Firefox uses XBL extensively to customize XUL elements like <code><browser></code> and <code><tabbrowser></code>. The <code><browser></code> customizations reside in <code><a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd">browser.xml</a></code>. <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd#262">Here</a> is how <code>browser.webNavigation</code> is defined:</p> - -<pre class="brush: xml"><field name="_webNavigation">null</field> - -<property name="webNavigation" readonly="true"> - <getter> - <![CDATA[ - if (!this._webNavigation) - this._webNavigation = this.docShell.QueryInterface(Components.interfaces.nsIWebNavigation); - return this._webNavigation; - ]]> - </getter> -</property> -</pre> - -<p>This code is invoked whenever JavaScript code in Firefox accesses <code>browser.webNavigation</code>, where <code>browser</code> is some <code><browser></code> element. It checks if the result has already been cached in the <code>browser._webNavigation</code> field. If it hasn’t been cached, then it fetches the navigation object based off the browser’s <em>docshell</em>. The docshell is a Firefox-specific object that encapsulates a lot of functionality for loading new pages, navigating back and forth, and saving page history. In multiprocess Firefox, the docshell lives in the child process. Since the <code>webNavigation</code> accessor runs in the parent process, <code>this.docShell</code> above will just return null. As a consequence, this code will fail completely.</p> - -<p>One way to fix this problem would be to create a fake docshell in C++ that could be returned. It would operate by sending IPDL messages to the real docshell in the child to get work done. We may eventually take this route in the future. We decided to do the message passing in JavaScript instead, since it’s easier and faster to prototype things there. Rather than change every docshell-using accessor to test if we’re using multiprocess browsing, we decided to create a new XBL binding that applies only to remote <code><browser></code> elements. It is called <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/remote-browser.xml?rev=9583bd3099ae"><code>remote-browser.xml</code></a>, and it extends the existing <code>browser.xml</code> binding.</p> - -<p>The <code>remote-browser.xml</code> binding returns a JavaScript <em>shim object</em> whenever anyone uses <code>browser.webNavigation</code> or other similar objects. The shim object is implemented <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/modules/RemoteWebNavigation.jsm">in its own JavaScript module</a>. It uses the message manager to send messages like <code>"WebNavigation:LoadURI"</code> to <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/browser-child.js?rev=9583bd3099ae#107">a content script loaded by <code>remote-browser.xml</code></a>. The content script performs the actual action.</p> - -<p>The shims we provide emulate their real counterparts imperfectly. They offer enough functionality to make Firefox work, but add-ons that use them may find them insufficient. I’ll discuss strategies for making add-ons work in more detail later.</p> - -<h2 id="Cross-process_object_wrappers"><strong id="cpows">Cross-process object wrappers</strong></h2> - -<p>The message manager API does not allow the parent process to call <code>sendSyncMessage</code>; that is, the parent is not allowed to wait for a response from the child. It’s detrimental for the parent to wait on the child, since we don’t want the browser UI to be unresponsive because of slow content. However, converting Firefox code to be asynchronous (i.e., to use <code>sendAsyncMessage</code> instead) can sometimes be onerous. As an expedient, we’ve introduced a new primitive that allows code in the parent process to access objects in the child process synchronously.</p> - -<p>These objects are called cross-process object wrappers, frequently abbreviated to CPOWs. They’re created using the message manager. Consider this example content script:</p> - -<pre class="brush: js">addEventListener("load", function (e) { - let doc = content.document; - sendAsyncMessage("GotLoadEvent", <strong>{}, {document: doc}</strong>); -}, false); -</pre> - -<p>In this code, we want to be able to send a reference to the document to the parent process. We can’t use the second parameter to <code>sendAsyncMessage</code> to do this: that argument is converted to JSON before it is sent up. The optional third parameter allows us to send object references. Each property of this argument becomes accessible in the parent process as a CPOW. Here’s what the parent code might look like:</p> - -<pre class="brush: js">let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"]. - getService(Ci.nsIMessageListenerManager); - -mm.addMessageListener("GotLoadEvent", function (msg) { - let uri = <strong>msg.objects.document.documentURI</strong>; - dump("Received load event: " + uri + "\n"); -}); -mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true); -</pre> - -<p>It’s important to realize that we’re send object <em>references</em>. The <code>msg.objects.document</code> object is only a wrapper. The access to its <code>documentURI</code> property sends a synchronous message down to the child asking for the value. The dump statement only happens after a reply has come back from the child.</p> - -<p>Because every property access sends a message, CPOWs can be slow to use. There is no caching, so 1,000 accesses to the same property will send 1,000 messages.</p> - -<p>Another problem with CPOWs is that they violate some assumptions people might have about message ordering. Consider this code:</p> - -<pre class="brush: js">mm.addMessageListener("GotLoadEvent", function (msg) { - mm.sendAsyncMessage("ChangeDocumentURI", {newURI: "<span class="skimlinks-unlinked">hello.com</span>"}); - let uri = <strong>msg.objects.document.documentURI</strong>; - dump("Received load event: " + uri + "\n"); -}); -</pre> - -<p>This code sends a message asking the child to change the current document URI. Then it accesses the current document URI via a CPOW. You might expect the value of <code>uri</code> to come back as <code>"hello.com"</code>. But it might not. In order to avoid deadlocks, CPOW messages can bypass normal messages and be processed first. It’s possible that the request for the <code>documentURI</code> property will be processed before the <code>"ChangeDocumentURI"</code> message, in which case <code>uri</code> will have some other value.</p> - -<p>For this reason, it’s best not to mix CPOWs with normal message manager messages. It’s also a bad idea to use CPOWs for anything security-related, since you may not get results that are consistent with surrounding code that might use the message manager.</p> - -<p>Despite these problems, we’ve found CPOWs to be useful for converting certain parts of Firefox to be multiprocess-compatible. It’s best to use them in cases where users are less likely to notice poor responsiveness. As an example, we use CPOWs to implement the context menu that pops up when users right-click on content elements. Whether this code is asynchronous or synchronous, the menu cannot be displayed until content has responded with data about the element that has been clicked. The user is unlikely to notice if, for example, tab animations don’t run while waiting for the menu to pop up. Their only concern is for the menu to come up as quickly as possible, which is entirely gated on the response time of the content process. For this reason, we chose to use CPOWs, since they’re easier than converting the code to be asynchronous.</p> - -<p>It’s possible that CPOWs will be phased out in the future. Asynchronous messaging using the message manager gives a user experience that is at least as good as, and often strictly better than, CPOWs. We strongly recommend that people use the message manager over CPOWs when possible. Nevertheless, CPOWs are sometimes useful.</p> diff --git a/files/de/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html b/files/de/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html deleted file mode 100644 index 1a25906f9e..0000000000 --- a/files/de/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Web content compatibility -slug: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility -tags: - - Electrolysis - - Firefox - - Guide - - Multiprocess - - e10s -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility ---- -<div>{{FirefoxSidebar}}</div><p><span class="seoSummary">While the introduction of multi-process capabilities to Firefox should be seamless and invisible to Web content, there are some exceptions and subtle changes from past behavior. This article discusses the known differences you may encounter.</span></p> - -<h2 id="Events">Events</h2> - -<p>Here you'll find information about events whose behaviors have changed due to multiprocess Firefox's implementation.</p> - -<h3 id="No_bubbling_of_events_from_<option>_to_<select>">No bubbling of events from <code><option></code> to <code><select></code></h3> - -<p>Historically, Firefox has allowed keyboard and mouse events to bubble up from the <code><option></code> element to the parent {{HTMLElement("select")}} element. This doesn't happen in Chrome, however, although this behavior is inconsistent across many browsers. For better Web compatibility (and for technical reasons), when Firefox is in multi-process mode and the <code><select></code> element is displayed as a drop-down list. This behavior is unchanged if the <code><select></code> is presented inline and it has either the <code>multiple</code> attribute defined or a <code>size</code> attribute set to more than 1.</p> - -<p>Rather than watching <code><option></code> elements for events, you should watch for {event("change")}} events on {{HTMLElement("select")}}. See {{bug(1090602)}} for details.</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li>Multiprocess Firefox</li> - <li>{{HTMLElement("option")}}</li> - <li>{{HTMLElement("select")}}</li> - <li>{{domxref("HTMLOptionElement")}}</li> - <li>{{domxref("HTMLSelectElement")}}</li> -</ul> diff --git a/files/de/mozilla/firefox/nutzung_in_unternehmen/index.html b/files/de/mozilla/firefox/nutzung_in_unternehmen/index.html deleted file mode 100644 index bb01035bad..0000000000 --- a/files/de/mozilla/firefox/nutzung_in_unternehmen/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Firefox in einem Unternehmen nutzen -slug: Mozilla/Firefox/Nutzung_in_Unternehmen -tags: - - Administratoren - - Anleitung - - Bereitstellung - - Firefox - - Unternehmen -translation_of: Mozilla/Firefox/Enterprise_deployment_before_60 ---- -<div>{{FirefoxSidebar}}</div> - -<p>Diese Seite versucht zu dokumentieren, wie Mozilla Firefox für Windows und Mac in einem Unternehmen genutzt werden kann. Falls Sie Fragen haben, kontaktieren Sie bitte <a href="https://mail.mozilla.org/listinfo/enterprise">enterprise@mozilla.org</a>.</p> - -<h2 id="Die_richtige_Variante">Die richtige Variante</h2> - -<h3 id="RR_(Rapid_Release)">RR (Rapid Release)</h3> - -<p>Mozilla veröffentlicht alle sechs Wochen (und, je nach Bedarf, weitere Sicherheitsupdates dazwischen) neue Versionen mit höheren Versionsnummern, neuen Features und Fehlerbehebungen. Am Tag, an dem ein großes Update veröffentlicht wird, wird Mozilla in den meisten Fällen (Ausnahme, siehe unten) die Veröffentlichung von Fehlerbehebungen für die vorherige Version einstellen.</p> - -<p>Die geplanten Veröffentlichungen finden Sie in der Spalte "release date" in der <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">Future branch dates</a> tabelle in der Mozilla wiki (Englisch).</p> - -<h3 id="ESR_(Extended_Support_Release)">ESR (Extended Support Release)</h3> - -<p>Jede siebte veröffentlichte Hauptversion von Firefox ist ein Extended Support Release. Diese Versionen werden für 54 Wochen (neun der sechswöchigen Veröffentlichungszyklen) sehr stark auf Probleme hin überprüft. Es überlappen sich 12 Wochen (zwei Veröffentlichungszyklen) zwischen zwei aufeinanderfolgenden ESR-Veröffentlichungen, in denen beide ESR-Versionen gleichzeitig überprüft werden.</p> - -<p>Die ESR-Veröffentlichungen waren bisher die Versionen 10, 17, 24, und 31. </p> - -<p>Viele Unternehmen und Organisationen mit zentral organisierten Netzwerksystemen bevorzugen die ESR-Version von Firefox, weil sie dann nicht alle 6 Wochen sondern nur noch alle 42 Wochen die Kompatibilität prüfen müssen. Desweiteren haben sie 12 Wochen mehr Zeit (der Überlappungszeitraum zwischen zwei ESR-Veröffentlichungen) eine Lösung für Probleme zu finden (zusätzlich zu den 6 Wochen die sie bekommen indem sie die Betaversion testen), falls Probleme auftreten.</p> - -<p>Nehmen Sie zur Kenntnis, dass unerwünschte Nebeneffekte auftreten können wenn Sie von einer RR-Version zu einer früheren ESR-Version wechseln, wie zum Beispiel von Version 26-RR zurück zu Version 24.2-ESR, selbst wenn sie am gleichen Tag veröffentlicht wurden. Der Grund dafür ist, dass oft neue Features in die RR-Versionen eingebaut werden, auch wenn sie noch unvollendet und deshalb deaktiviert sind. Schlussendlich entscheidet Mozilla die Features in einer bestimmten Version zu aktivieren. Wenn Sie dann auf eine vorherige, ältere Version wechseln, behalten alle Nutzer ihre letzten Einstellungen in ihren Profilordnern. So bleibt die Option nun angestellt, obwohl das Feature noch nicht komplett fehlerfrei läuft. Wenn Sie also von RR auf ESR wechsel wollen, sollten Sie auf eine neue ESR-Version warten.</p> - -<h2 id="Installation">Installation</h2> - -<ol> - <li>Den kompletten, weiterverteilbaren Installer bekommen Sie von <a href="http://www.mozilla.org/firefox/all/">http://www.mozilla.org/firefox/all/</a> (RR) oder <a href="https://www.mozilla.org/firefox/organizations/all.html">https://www.mozilla.org/firefox/organizations/all.html</a> (ESR).</li> - <li>Installieren Sie ihre Version, in dem Sie die Softwareverteilungsmethode ihrer Wahl nutzen. Die Kommand-Zeile für eine stille Installation ist <code>-ms</code>. </li> - <li>Optional können Sie eine INI-Datei spezifizieren, um beispielsweise die Nutzung von Tastenkürzeln und die Installation vom MaintenanceService zu verhindern. Nutzen Sie dafür <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">Installer Command Line Arguments</a>.</li> -</ol> - -<h2 id="Konfiguration">Konfiguration</h2> - -<ol> - <li>Finden Sie den Firefox <strong>Programmverzeichnis</strong> in dem Firefox' ausführende Datei liegt. In Windows7x64 ist er meist <code>C:\Program Files (x86)\Mozilla Firefox</code>; in OSX 10.8 zumeist <code>/Applications/Firefox.app/Contents/MacOS</code>. Unterordner die unten genannt werden sind abhängig von diesem Pfad. </li> - <li>Erstellen Sie eine Javascript Datei in <code>defaults/pref</code> (für gewöhlich, <code>autoconfig.js</code> - andere Dateinamen funktionieren gleicherweise, doch um beste Resultate zu erzielen sollte es am Anfang des Alphabets stehen.) Der Inhalt dieser Datei zeigt Firefox, wo die konfigurierende Datei zu finden ist (siehe auch <a href="http://mike.kaply.com/2012/03/15/customizing-firefox-default-preference-files/">Customizing Firefox default preference files/</a>). - <p>Die zwei Zeilen die Sie brauchen sind:</p> - - <pre class="brush: js">pref("general.config.obscure_value", 0); -pref("general.config.filename", "mozilla.cfg");</pre> - </li> - <li>Erstellen Sie eine .cfg Datei (für gewöhlich, <code>mozilla.cfg</code> — es kann wirklich jeder Name sein; es muss nur zu dem passen, was in <code>general.config.filename</code> zuvor spezifiziert wurde) im Programmverzeichnis. Überspringen Sie die erste Zeile oder kommentieren Sie sie aus und fangen Sie an ihre Einstellungen vorzunehmen. Um herauszufinden welche Einstellungen Sie nutzen müssen, nutzen Sie about:config in einer Kopie von Firefox, die Sie korrekt eingestellt haben und suchen Sie alle Einstellungen die vom Nutzer eingestellt sind, oder sehen Sie sich das folgende Beispiel an. Jede Einstellung die in about:config auftaucht (und noch einige andere) können mit eine der folgenden Funktionen eingestellt werden: - <dl> - <dt><strong>pref </strong></dt> - <dd>nimmt eine Einstellung vor, als hätte der Benutzer sie eingestellt, jedes Mal wenn der Browser gestartet wird. Nutzer können zwar Änderungen an den Einstellungen vornehmen, jedoch werden diese beim nächsten Start überschrieben. Wenn Sie auf diese Weise Einstellungen vornehmen, wird die Einstellung in about:config als "<strong>vom Benutzer eingestellt</strong>" angezeigt.</dd> - <dt><strong>defaultPref</strong></dt> - <dd>wird gebraucht um die Standardeinstellung zu ändern, jedoch kann jeder Nutzer die Einstellungen ändern. Die Einstellungen werden zwischen Sitzungen gespeichert. Sollten alle Werte auf ihren Ursprung zurückgesetzt werden, werden die so geänderten Einstellungen auf den von Ihnen gesetzten Wert geändert. Taucht in about:config als "standard" auf.</dd> - <dt><strong>lockPref</strong></dt> - <dd>wird genutzt um Einstellungen zu blockieren, sodass sie nicht mehr vom Nutzer umgestellt werden können, weder über die Einstellungen, noch über about:config. Das Fenster mit den Einstellungen wird sich ändern um dies zu reflektieren, indem es nicht verstellbare Optionen weglässt oder grau färbt.Taucht in about:config auf als "<strong>blockiert</strong>". <span class="author-g-fer323ku83ypu55t">Manche Einstellungen benötigen <strong>lockPref</strong> um geändert zu werden, wie beispielsweise <strong>app.update.enabled</strong>. Es funktioniert nicht, wenn es nur mit <strong>pref</strong> geändert wird.</span></dd> - <dt><span class="author-g-fer323ku83ypu55t">clearPref</span></dt> - <dd><span class="author-g-fer323ku83ypu55t">kann benutzt werden um einige Einstellungen auszublenden. Dies kann nützlich sein, um einige Funktionen zu deaktivieren, die darauf basieren Versionsnummern zu vergleichen.</span></dd> - </dl> - </li> -</ol> - -<p>Sehen Sie sich auch <a href="http://mike.kaply.com/2012/03/16/customizing-firefox-autoconfig-files/">Firefox' autoconfig-Dateien ändern</a> und <a href="http://mike.kaply.com/2012/03/20/customizing-firefox-autoconfig-files-continued/">Firefox' autoconfig-Dateien ändern (Fortführung)</a> an, um mehr zu erfahren. Für tiefergehende Einstellungen, wie beispielsweise das Ausschalten bestimmter Elemente der graphischen Benutzeroberfläche, können Sie die <a href="http://mike.kaply.com/cck2/">CCK2</a>-Extension nutzen.</p> - -<h3 id="Beispiel_für_eine_config-Datei">Beispiel für eine config-Datei</h3> - -<p>Ihnen mag der Bezug auf "komplexe Einstellungen" auffallen, die in einer anderen Art und Weise eingestellt werden müssen; seit FF31 scheinen alle Einstellungen auf normalem Wege änderbar zu sein, ähnlich wie im folgenden Beispiel. Für genauere Informationen zu individuellen Einstellungen, durchsuchen Sie die <a href="http://kb.mozillazine.org/Knowledge_Base">Wissensdatenbank</a>.</p> - -<pre class="brush: js"><span class="brush: js">// Deaktiviert den Updater -lockPref("app.update.enabled", false); -// Stellt sicher dass er tatsächlich abgestellt ist -lockPref("app.update.auto", false); -lockPref("app.update.mode", 0); -lockPref("app.update.service.enabled", false); - -// Deaktiviert die Kompatbilitätsprüfung der Add-ons -clearPref("extensions.lastAppVersion"); - -// Deaktiviert 'Kenne deine Rechte' beim ersten Start -pref("browser.rights.3.shown", true); - -// Versteckt 'Was ist neu?' beim ersten Start nach jedem Update -pref("browser.startup.homepage_override.mstone","ignore"); - -// Stellt eine Standard-Homepage ein - Nutzer können sie ändern -defaultPref("browser.startup.homepage", "http://home.example.com"); - -// Deaktiviert den internen PDF-Viewer -pref("pdfjs.disabled", true); - -// Deaktiviert den Flash zu JavaScript Converter -pref("shumway.disabled", true); - -// Verhindert die Frage nach der Installation des Flash Plugins -pref("plugins.notifyMissingFlash", false); - -//Deaktiviert das 'plugin checking' -lockPref("plugins.hide_infobar_for_outdated_plugin", true); -clearPref("plugins.update.url"); - -// Deaktiviert den 'health reporter' -lockPref("datareporting.healthreport.service.enabled", false); - -</span>// Disable all data upload (Telemetry and FHR) -lockPref("datareporting.policy.dataSubmissionEnabled", false); -<span class="brush: js"> -// Deaktiviert den 'crash reporter' -lockPref("toolkit.crashreporter.enabled", false); -Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;</span><em> </em> -</pre> - -<h2 id="Packaging_Extensions">Packaging Extensions</h2> - -<ol> - <li>Installieren Sie die Erweiterung auf einem Rechner zu Testzwecken. Sehen Sie in about:support unter Extensions nach um die GUID zu fnden. </li> - <li>Sehen Sie im <a href="https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data">Profilverzeichnis</a> (z.B.: <code>%APPDATA%\Mozilla\Firefox\Profiles</code> auf Win7; um diesen zu finden, klicken Sie auf <strong>Ordner anzeigen</strong> in about:support), dann unter "extensions" nach dem Add-On dass Sie suchen. Beachten Sie dass es entweder eine einzelne .xpi Datei (wie eine zip Datei) oder extrahiert zu einem Ordner mit mehreren Dateien.</li> - <li>Entscheiden Sie wie Sie sie nutzen wollen. Die einfachste Methode ist, die .xpi Datei oder den Ordner in <strong>Programm<code>verzeichnis</code></strong><code>/distribution/extensions</code> zu legen, jedoch funktioniert dies nur für Profile die Installiert wurden nachdem die Erweiterung installiert wurde. Außerdem, wenn Sie Firefox manuell updaten indem Sie das Programm erneut installieren, wird dieser Programmverzeichnis gelöscht. Vergewissern SIe sich dann, ob Sie die Erweiterung ebenfalls manuell erneut installiert haben. Sehen Sie sich auch <a href="http://mike.kaply.com/2012/02/09/integrating-add-ons-into-firefox/">Integrating add-ons into Firefox/</a> (Englisch) an, um alternative Methoden zu lernen.</li> -</ol> - -<p>Beachten Sie auch: <a href="http://mike.kaply.com/2013/05/03/add-on-scopes-redux/">Add-on scopes redux/</a> (Englisch)</p> - -<h2 id="Änderungen_mit_der_Zeit">Änderungen mit der Zeit</h2> - -<h3 id="Änderungen_in_der_Verzeichnisstruktur">Änderungen in der Verzeichnisstruktur</h3> - -<p>Die Verzeichnisstruktur des Programmpfades wurde zweimal geändert. Sollten Sie einer Anleitung für eine Firefox-Version <strong>vor</strong> Version 21 folgen, dann müssen Sie vermutlich diese Änderungen beachten:</p> - -<ul> - <li>Seit Version 14, funktionieren einige der pref Einstellungen nicht mehr wenn sie in einer Datei geändert werden, die im Pfad <code>defaults/pref</code> liegt. Sie können das Problem beheben, indem Sie den Pfad <code>defaults/preferences</code> erstellen und die Datei dort ablegen.</li> - <li>Seit Version 21 wurde der neue Ordner <code>browser</code> erstellt. Die Datei <code>override.ini</code> und die Pfade <code>defaults/preferences</code>, <code>defaults/profile</code>, <code>extensions</code>, <code>plugins</code>, und <code>searchplugins</code> wurden dorthinein verlegt. Plug-ins im Ordner <code>plugins</code> können reaktiviert werden, indem die Einstellung <code>plugins.load_appdir_plugins</code> zu <strong>true</strong> geändert wird.</li> -</ul> - -<p>Die Einstellungen preferences <code>general.config.filename</code> und <code>general.config.obscure_value</code> zur AutoConfiguration können immer noch in <code>defaults/pref</code> vorgenommen werden, jedoch sollte der Dateiname mit dem Buchstaben 'a' beginnen, wie zum Beispiel <code>autoconfig.js</code>.</p> - -<p>Sollte es in <code>defaults/pref</code> in einer zuünftigen Version von Firefox nicht mehr funktionieren, probieren Sie <code>browser/defaults/preferences</code> als den wahrscheinlichsten Platz für die Datei.</p> - -<h3 id="Änderungen_in_ESR_24.x_mit_Adobe_PDF_Files">Änderungen in ESR 24.x mit Adobe PDF Files</h3> - -<p>Firefox RR 19.x änderte den Standard-Viewer für Adobe PDF Dateien zu dem internen PDF Viewer. Diese Änderung betrifft nun die ESR Versionen seit 24.x, und wird (auf Windows) angewandt, wenn von 17.x auf eine höhere Version geupgradet wird, <em>selbst wenn ein externer Viewer bereits eingestellt wurde</em>. Der Name des Dateitypes wurde von <strong>Adobe Acrobat Document</strong> zu <strong>Portable Document Format (PDF)</strong> geändert, was die Lokalisierung durch die Tools-, Options- oder Applications-Tabs erschwert. Um dies abzustellen, ändern Sie <code>pdfjs.disabled</code> zu true wie auch im oben genannten Beispiel.</p> diff --git a/files/de/mozilla/firefox/privacy/index.html b/files/de/mozilla/firefox/privacy/index.html deleted file mode 100644 index c6a9e69b09..0000000000 --- a/files/de/mozilla/firefox/privacy/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Privacy -slug: Mozilla/Firefox/Privacy -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Firefox/Privacy ---- -<div>{{FirefoxSidebar}}</div><p>{{ ListSubpages () }}</p> diff --git a/files/de/mozilla/firefox/privacy/tracking_protection/index.html b/files/de/mozilla/firefox/privacy/tracking_protection/index.html deleted file mode 100644 index 7ebf5f19da..0000000000 --- a/files/de/mozilla/firefox/privacy/tracking_protection/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Verfolgungsschutz -slug: Mozilla/Firefox/Privacy/Tracking_Protection -tags: - - Privacy - - Privat - - Private browsing - - Privates Surfen - - blocking - - tracker - - tracking -translation_of: Mozilla/Firefox/Privacy/Tracking_Protection ---- -<div>{{FirefoxSidebar}}</div> - -<h2 id="Was_ist_Verfolgungsschutz">Was ist Verfolgungsschutz?</h2> - -<p>Beginnend mit Version 42 beinhalten Firefox Desktop und Firefox für Android einen eingebauten Schutz gegen Verfolgung. In privaten Browserfenstern (Tabs, in Firefox für Android) wird Firefox Inhalte, die von Domains geladen werden, die Nutzer über Seiten verfolgen, blockieren.</p> - -<p>Einige dieser blockierten Inhalte sind Teil des Seitenlayouts, weswegen Nutzer Probleme mit diesem haben können. Ist das Seitenraster so angepasst, dass andere Elemente die Lücken der blockierten Inhalte füllen, merken Nutzer keinen Unterschied.</p> - -<p>Wenn Firefox Inhalte blockiert, wird die folgende Nachricht ausgegeben:</p> - -<pre><span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">Die Ressource auf "https://some/url" wurde blockiert, weil das Blockieren von Seitenelementen aktiviert ist.</span></span></span></pre> - -<div class="blockIndicator note"> -<p>Die Ausgaben auf der Konsole in Firefox für Android können über den Remote Debugger angezeigt werden.</p> -</div> - -<p>Das Firefox Benutzerinterface zeigt Nutzern an wenn Inhalte blockiert wurden und ermöglicht es ihnen diese für die Dauer der Sitzung zu entblocken. Nutzer können sich auch entscheiden, den Trackingschutz auch dauerthaft abzuschalten.</p> - -<h2 id="Wie_entscheidet_Firefox_was_blockiert_wird">Wie entscheidet Firefox was blockiert wird?</h2> - -<p>Inhalte werden auf Basis der Domain blockiert, von der sie geladen werden.</p> - -<p>Firefox kommt mit einer Liste von Seiten, die Nutzer über Seiten hinweg verfolgen. Wenn der Verfolgungschutz aktiv ist, wird Firefox Inhalte von Seiten auf dieser Liste blockieren</p> - -<p>Seiten die User tracken sind hauptsächlich externe Werbe- und Analyseseiten</p> - -<h2 id="Was_bedeutet_das_für_deine_Webseite">Was bedeutet das für deine Webseite?</h2> - -<p>Zuerst einmal bedeutet das offensichtlich, dass wenn der Trackingschutz aktiviert ist:</p> - -<ul> - <li>Inhalte die von externen Trackern bereit gestellt werden sind für User nicht sichtbar</li> - <li>deine Seite wird externe Werbe- und Analyseservices, die tracken, nicht nutzen können</li> -</ul> - -<p>Weniger offensichtlich, falls Teile deiner Seite davon abhänging sind, dass Tracker geladen werden, werden diese Teile nicht funktionieren, wenn der Trackingschutz aktiv is. Beinhaltet deine Seite beispielsweise einen Callback, der ausgeführt wird, wenn Inhalte von einer Trackingseite geladen wurde, so wird dieser Callback nicht ausgeführt.</p> - -<p>Zum Beispiel solltest du Google Analytics nicht so verwenden:</p> - -<pre class="brush:html example-bad"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> -<script> -function trackLink(url,event) { - event.preventDefault(); - ga('send', 'event', 'outbound', 'click', url, { - 'transport': 'beacon', - 'hitCallback': function() { - document.location = url; - } - }); -} -</script></pre> - -<p>Stattdessen solltest du den Fall berücksichtigen, dass Google Analytics fehlt, in dem du überprüftst ob das <code>ga</code> Objekt initialisiert wurde.</p> - -<pre class="brush:html example-good"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> -<script> -function trackLink(url,event) { - event.preventDefault(); - if (window.ga && <span class="pl-smi">ga</span>.loaded) { - ga('send', 'event', 'outbound', 'click', url, { - 'transport': 'beacon', - 'hitCallback': function() { document.location = url; } - }); - } else { - document.location = url; - } -} -</script> -</pre> - -<p>Mehr Informationen zu dieser Technik ist verfügbar auf <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">Google Analytics, Privacy, and Event Tracking</a>.</p> - -<div class="blockIndicator note"> -<p>Sich auf externe Services zu verlassen ist so oder so kein guter Stil: Es bedeutet deine Seite funktioniert nicht, wenn der Service langsam oder nicht verfügbar ist oder der Tracker von einem Addon blockiert wird.</p> -</div> diff --git a/files/de/mozilla/firefox/the_about_protocol/index.html b/files/de/mozilla/firefox/the_about_protocol/index.html deleted file mode 100644 index 5225af8915..0000000000 --- a/files/de/mozilla/firefox/the_about_protocol/index.html +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Firefox und das "about"-Protokoll -slug: Mozilla/Firefox/The_about_protocol -tags: - - Einstellungen - - Firefox - - Guide - - Protokolle - - Referenz - - 'about:' -translation_of: Mozilla/Firefox/The_about_protocol ---- -<div>{{FirefoxSidebar}}</div> - -<div class="syntaxbox">Es gibt eine Menge wichtiger Informationen über Firefox, die sich hinter dem <code>about:</code> URL-Protokoll verbergen. Am wichtigsten ist die URL <code>about:config</code>, die Einstellungen anzeigt, die sich dort betrachten und ändern lassen. Hier ist eine komplette Liste mit allen URLs des <code>about:</code>-Pseudo-Protokolls::</div> - -<div class="syntaxbox"> </div> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col"><code>about:</code> Seite</th> - <th scope="col">Beschriebung</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>about:</code></td> - <td>Zeigt die Versionsnummer, Buildinformationen, Links zu den Beitragenden, Lizenzinformationen und Einstellungen zur Build-Konfiguration an.</td> - </tr> - <tr> - <td><code>about:about</code></td> - <td>Zeigt einen Überblick über alle about:-Seiten an.</td> - </tr> - <tr> - <td><code>about:accounts</code></td> - <td>Zeigt Informationen zur <a href="https://www.mozilla.org/en-US/firefox/sync/">Sync-Funktion </a>an.</td> - </tr> - <tr> - <td><code>about:addons</code></td> - <td>Öffnet den Add-ons-Manager</td> - </tr> - <tr> - <td><code>about:app-manager</code></td> - <td>Öffnet den App-Manager</td> - </tr> - <tr> - <td><code>about:buildconfig</code></td> - <td>Zeigt die für die Version von Firefox verwendete Konfiguration und Plattform an.</td> - </tr> - <tr> - <td><code>about:cache</code></td> - <td>Zeigt Informationen zum Speicher, Speichermedium und Arbeitsspeicher an.</td> - </tr> - <tr> - <td><code>about:compartments</code></td> - <td> - <div class="note"> - <p>Seit Firefox 26 können diese Informationen unter "Other Measurements" in about:memory gefunden werden.</p> - </div> - - <p>Zeigt Informationen zu einzelnen "<a href="/en-US/docs/SpiderMonkey/SpiderMonkey_compartments">Compartments"</a>.</p> - </td> - </tr> - <tr> - <td><code>about:config</code></td> - <td>Bietet eine Möglichkeit, Einstellungen in Firefox zu untersuchen und zu ändern.</td> - </tr> - <tr> - <td><code>about:crashes</code></td> - <td>Listet alle Abstürze, die während der gesamten Lebenszeit von Firefox passierten, auf.</td> - </tr> - <tr> - <td><code>about:credits</code></td> - <td>Listet alle Ünterstützer und Mitwirkenden des Firefox-Projektes auf.</td> - </tr> - <tr> - <td><code>about:customizing</code></td> - <td>Wechselt zur Anpassungsseite, die Anpassungen der Benutzeroberfläche von Firefox erlaubt.</td> - </tr> - <tr> - <td><code>about:downloads</code></td> - <td>Listet alle Downloads von Firefox aus auf.</td> - </tr> - <tr> - <td><code>about:healthreport</code></td> - <td>Zeigt Leistungsinformationen von Firefox an (nur wenn der Nutzer dies aktiviert hat).</td> - </tr> - <tr> - <td><code>about:home</code></td> - <td>Öffnet die Startseite, die beim Öffnen eines neuen Fensters erscheint.</td> - </tr> - <tr> - <td><code>about:license</code></td> - <td>Zeigt Lizenzinformationen an.</td> - </tr> - <tr> - <td><code>about:logo</code></td> - <td>Zeigt das Firefox-Logo an.</td> - </tr> - <tr> - <td><a href="/en-US/docs/Mozilla/Performance/about%3Amemory">about:memory</a></td> - <td>Bietet eine Möglichkeit, die Speicherverwendung anzuzeigen, als Bericht zu speichern oder GC und CC auszuführen.</td> - </tr> - <tr> - <td><code>about:mozilla</code></td> - <td>Diese Sonderseite zeigt eine Nachricht aus dem "The Book of Mozilla".</td> - </tr> - <tr> - <td><code>about:networking</code></td> - <td>Zeigt Netzwerk-Informationen an.</td> - </tr> - <tr> - <td><code>about:newtab</code></td> - <td>Öffnet die Startseite für einen neuen Tab.</td> - </tr> - <tr> - <td><code>about:permissions</code></td> - <td> - <div class="warning"> - <p>Wurde mit Firefox 45 entfernt. ({{bug(933917)}})</p> - </div> - - <p>Bietet eine Möglichkeit, Berechtigungen anzuzeigen und verwalten zu lassen.</p> - </td> - </tr> - <tr> - <td><code>about:plugins</code></td> - <td>Zeigt Informationen zu installierten Plugins an.</td> - </tr> - <tr> - <td><code>about:preferences</code></td> - <td>Öffnet die Einstellungen zu Firefox (auch erreichbar über das Firefox-Menü > <em>Optionen</em>)</td> - </tr> - <tr> - <td><code>about:privatebrowsing</code></td> - <td>Öffnet die Startseite, die beim Öffnen eines privaten Tabs angezeigt wird.</td> - </tr> - <tr> - <td><code>about:profiles</code></td> - <td>Zeigt und verwaltet Firefox-Profile.</td> - </tr> - <tr> - <td><code>about:rights</code></td> - <td>Zeigt rechtliche Informationen an.</td> - </tr> - <tr> - <td><code>about:robots</code></td> - <td>Diese Sonderseite zeigt Informationen zu Robots an.</td> - </tr> - <tr> - <td><code>about:serviceworkers</code></td> - <td>Zeigt aktuell laufende Service Workers an.</td> - </tr> - <tr> - <td><code>about:sessionrestore</code></td> - <td>Öffnet die Sitzungswiederherstellungsseite (wird nach einem Absturz angezeigt).</td> - </tr> - <tr> - <td><code>about:support</code></td> - <td>Öffnet die Fehlerbehebungsseite (auch erreichbar über das Firefox-Menü > <em>? (Fragezeichen)</em> > <em>Informationen zur Fehlerbehebung</em>)</td> - </tr> - <tr> - <td><code>about:sync-log</code></td> - <td>Zeigt ein Synchronisations-Protokoll bezogen auf die <a href="https://www.mozilla.org/en-US/firefox/sync/">Sync</a>-Funktion an.</td> - </tr> - <tr> - <td><code>about:sync-progress</code></td> - <td>Zeigt die Seite, die nach der Einrichtung der <a href="https://www.mozilla.org/en-US/firefox/sync/">Sync</a>-Funktion aufgerufen wird.</td> - </tr> - <tr> - <td><code>about:sync-tabs</code></td> - <td>Zeigt synchronisierbare Tabs an (für die <a href="https://www.mozilla.org/en-US/firefox/sync/">Sync</a>-Funktion).</td> - </tr> - <tr> - <td><code>about:telemetry</code></td> - <td>Zeigt die von Firefox gesammelten und an Mozilla gesendeten telemetrischen Daten an (nur wenn der Nutzer Telemetrie aktiviert hat).</td> - </tr> - <tr> - <td><code>about:webrtc</code></td> - <td>Zeigt Informationen zur Verwendung von WebRTC an.</td> - </tr> - <tr> - <td><code>about:welcomeback</code></td> - <td>Zeigt die Seite, die nach einer Zurücksetzung aufgerufen wird.</td> - </tr> - </tbody> -</table> - -<p>Diese URLs wurden in {{source("docshell/base/nsAboutRedirector.cpp")}} innerhalb des <code>kRedirMap</code>-Arrays definiert. Der Array zeigt die meisten der URLs, wie <code>config</code> in URLs im <code>chrome:</code>-Pseudo-Protokoll, wie <code>chrome://global/content/config.xul an</code>. Der Ort der about:-Informationen wurde aus {{source("docshell/build/nsDocShellModule.cpp")}} kopiert..</p> diff --git a/files/de/mozilla/firefox/updating_add-ons_for_firefox_5/index.html b/files/de/mozilla/firefox/updating_add-ons_for_firefox_5/index.html deleted file mode 100644 index f57ae8a1fc..0000000000 --- a/files/de/mozilla/firefox/updating_add-ons_for_firefox_5/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Updating add-ons for Firefox 5 -slug: Mozilla/Firefox/Updating_add-ons_for_Firefox_5 -translation_of: Mozilla/Firefox/Releases/5/Updating_add-ons ---- -<div>{{FirefoxSidebar}}</div><p>This article provides an overview of the changes you may need to make to your add-ons in order for them to work properly in Firefox 5. You can find a complete list of developer-related changes in Firefox 5 in <a href="/en/Firefox_5_for_developers" title="en/Firefox 5 for developers">Firefox 5 for developers</a>.</p> - -<h2 id="Do_you_need_to_do_anything_at_all">Do you need to do anything at all?</h2> - -<p>If your add-on is distributed on <a class="external" href="http://addons.mozilla.org" title="http://addons.mozilla.org/">addons.mozilla.org</a> (AMO), it's been checked by an automated compatibility verification tool. Add-ons that don't use APIs that changed in Firefox 5, and have no binary components (which <a href="/En/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="En/Developer Guide/Interface Compatibility#Binary Interfaces">need to be recompiled for every major Firefox release</a>), have automatically been updated on AMO to indicate that they work in Firefox 5.</p> - -<p>So you should start by visiting AMO and looking to see if your add-on needs any work done at all.</p> - -<div class="note"><strong>Note:</strong> You should still test your add-on on Firefox 5, even if it's been automatically upgraded. There are edge cases that may not be automatically detected.</div> - -<p>Once you've confirmed that you need to make changes, come on back to this page and read on.</p> - -<h2 id="User_interface_related_changes">User interface related changes</h2> - -<p>Due to the short development cycle (even for our rapid release cycle; Firefox 5 was on an extra-short schedule for timing reasons), there are very few UI related changes in Firefox 5.</p> - -<h3 id="Determining_the_UI_language">Determining the UI language</h3> - -<p>In the past, the {{ domxref("window.navigator.language") }} DOM property reflected the language of Firefox's user interface. This is no longer the case; instead, it reflects the value of the <code>Accept-Language</code> header for the current document. If you need to detect the UI language, you should instead look at the value of the <code>general.useragent.locale</code> preference.</p> - -<h2 id="DOM_changes">DOM changes</h2> - -<p>The behaviors of {{ domxref("window.setTimeout()") }} and {{ domxref("window.setInterval()") }} have changed; the minimum allowed time has changed, and <a href="/En/Window.setTimeout#Minimum_delay_and_timeout_nesting" title="En/Window.setTimeout#Minimum delay and timeout nesting">varies depending on the situation</a>. In addition, timeouts and intervals are clamped to one per second in inactive tabs (that is, tabs the user isn't currently looking at).</p> - -<h2 id="JavaScript_changes">JavaScript changes</h2> - -<p>The following keywords are now reserved in JavaScript, even when you're not in <a href="/en/JavaScript/Strict_mode" title="en/JavaScript/Strict mode">strict mode</a>:</p> - -<ul> - <li><code>class</code></li> - <li><code>enum</code></li> - <li><code>export</code></li> - <li><code>extends</code></li> - <li><code>import</code></li> - <li><code>super</code></li> -</ul> - -<p>Don't use those keywords anywhere in your code, even as object property names.</p> - -<div class="note"><strong>Note:</strong> This is one of those things that AMO's automatically upgrade tool may not always catch, so check your code for these if your add-on was automatically upgraded but is still not working properly.</div> - -<h2 id="Interface_changes">Interface changes</h2> - -<p>Instantiating certain services, including the {{ interface("nsICertOverrideService") }}, at startup can make Firefox unusable ({{ bug(650858) }}. This happens only if you try to instantiate a service before the <code>load</code> event is fired.</p> - -<p>To fix this, simply move your instantiation of these services into your <code>load</code> event handler:</p> - -<pre class="brush: js">var MyObject = { - comp : null, - init: function() { - this.comp = Components.classes[...].getService(...); - }, - ... -} -window.addEventListener("load", function() { MyObject.init(); }, false); -</pre> - -<p>An even better solution, of course, is to follow <a href="/en/Extensions/Performance_best_practices_in_extensions" title="en/Extensions/Performance best practices in extensions">performance best practices</a> and to not instantiate services until you need to use them.</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en/Firefox_5_for_developers" title="en/Firefox 5 for developers">Firefox 5 for developers</a></li> -</ul> |