From a065e04d529da1d847b5062a12c46d916408bf32 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 21:46:22 -0500 Subject: update based on https://github.com/mdn/yari/issues/2028 --- files/de/_wikihistory.json | 14744 ------------------- files/de/archive/add-ons/index.html | 11 - files/de/archive/add-ons/seamonkey_2/index.html | 281 - files/de/archive/apps/index.html | 35 - .../b2g_os/anwendungsentwicklung/index.html | 12 - files/de/archive/b2g_os/api/index.html | 156 - files/de/archive/b2g_os/api/navigator/index.html | 19 - .../api/navigator/requestwakelock/index.html | 37 - .../index.html" | 48 - files/de/archive/b2g_os/apps/index.html | 50 - .../arbeiten_mit_dem_b2g_desktop_client/index.html | 135 - .../b2g_os/benutzung_des_app_managers/index.html | 264 - files/de/archive/b2g_os/building/index.html | 268 - .../compatible_devices/index.html | 357 - .../firefox_os_build_overview/index.html | 155 - .../building_and_installing_firefox_os/index.html | 45 - .../b2g_os/debugging/developer_settings/index.html | 197 - files/de/archive/b2g_os/debugging/index.html | 80 - .../b2g_os/debugging/installing_adb/index.html | 70 - .../index.html" | 41 - .../filing_bugs_against_firefox_os/index.html | 183 - .../b2g_os/developing_firefox_os/index.html | 26 - .../firefox_os_build_prerequisites/index.html | 446 - files/de/archive/b2g_os/firefox_os_faq/index.html | 41 - files/de/archive/b2g_os/gaia/gaia_apps/index.html | 86 - files/de/archive/b2g_os/gaia/hacking/index.html | 181 - files/de/archive/b2g_os/gaia/index.html | 56 - .../b2g_os/gaia/introduction_to_gaia/index.html | 35 - .../gaia_entwickeln/build_system_primer/index.html | 190 - .../customizing_build-time_apps/index.html | 117 - .../durchfuehrung_der_gaia_codebase/index.html | 71 - files/de/archive/b2g_os/gaia_entwickeln/index.html | 52 - .../making_gaia_code_changes/index.html | 85 - files/de/archive/b2g_os/index.html | 163 - .../installing_on_a_mobile_device/index.html | 81 - files/de/archive/b2g_os/introduction/index.html | 84 - .../phone_guide/alcatel_one_touch_fire/index.html | 102 - .../de/archive/b2g_os/phone_guide/flame/index.html | 39 - .../b2g_os/phone_guide/geeksphone/index.html | 202 - files/de/archive/b2g_os/phone_guide/index.html | 44 - .../b2g_os/phone_guide/phone_specs/index.html | 800 - .../b2g_os/phone_guide/zte_open_c/index.html | 82 - .../b2g_os/platform/app_architektur/index.html | 29 - .../archive/b2g_os/platform/architektur/index.html | 740 - files/de/archive/b2g_os/platform/index.html | 81 - .../b2g_os/quickstart/deine_erste_app/index.html | 339 - .../quickstart/einfuerung_zu_firefox_os/index.html | 13 - .../quickstart/for_mobile_developers/index.html | 40 - files/de/archive/b2g_os/quickstart/index.html | 49 - .../open_web_apps_and_web_standards/index.html | 38 - files/de/archive/b2g_os/releases/1.4/index.html | 71 - files/de/archive/b2g_os/releases/2.0/index.html | 112 - files/de/archive/b2g_os/releases/index.html | 24 - files/de/archive/b2g_os/simulator/index.html | 86 - files/de/archive/b2g_os/troubleshooting/index.html | 44 - files/de/archive/css3/index.html | 976 -- files/de/archive/index.html | 21 - files/de/archive/mdn/index.html | 20 - files/de/archive/mozilla/index.html | 10 - .../de/archive/mozilla/marketplace/apis/index.html | 46 - .../de/archive/mozilla/marketplace/faq/index.html | 30 - files/de/archive/mozilla/marketplace/index.html | 126 - .../archive/mozilla/marketplace/index/index.html | 107 - .../mozilla/marketplace/marktplatz_apis/index.html | 109 - .../options/open_web_apps_for_android/index.html | 142 - .../mozilla/marketplace/publishing/index.html | 6 - .../publishing/packaged_apps/index.html | 184 - .../publishing/publish_options/index.html | 67 - .../marketplace/publishing/submit/index.html | 10 - .../publishing/updating_apps/index.html | 27 - .../mozilla/marketplace/submission/index.html | 9 - .../marketplace_review_criteria/index.html | 79 - .../marketplace/ver\303\266ffentlichen/index.html" | 106 - files/de/archive/mozilla/xul/action/index.html | 86 - .../archive/mozilla/xul/arrowscrollbox/index.html | 134 - files/de/archive/mozilla/xul/assign/index.html | 115 - .../mozilla/xul/attribute/accesskey/index.html | 24 - .../xul/attribute/activetitlebarcolor/index.html | 14 - .../archive/mozilla/xul/attribute/align/index.html | 37 - .../mozilla/xul/attribute/allowevents/index.html | 17 - .../attribute/allownegativeassertions/index.html | 11 - .../archive/mozilla/xul/attribute/color/index.html | 14 - .../archive/mozilla/xul/attribute/cols/index.html | 14 - .../mozilla/xul/attribute/decimalplaces/index.html | 14 - .../mozilla/xul/attribute/disabled/index.html | 28 - .../archive/mozilla/xul/attribute/empty/index.html | 14 - .../mozilla/xul/attribute/emptytext/index.html | 14 - .../archive/mozilla/xul/attribute/expr/index.html | 14 - .../xul/attribute/hidespinbuttons/index.html | 10 - files/de/archive/mozilla/xul/attribute/index.html | 11 - .../archive/mozilla/xul/attribute/label/index.html | 32 - .../mozilla/xul/attribute/onchange/index.html | 14 - .../mozilla/xul/attribute/prefpane.src/index.html | 25 - .../archive/mozilla/xul/attribute/src/index.html | 34 - .../mozilla/xul/attribute/treecell.src/index.html | 17 - .../mozilla/xul/attribute/treecol.src/index.html | 17 - .../archive/mozilla/xul/attribute/var/index.html | 14 - files/de/archive/mozilla/xul/bbox/index.html | 87 - files/de/archive/mozilla/xul/binding/index.html | 89 - files/de/archive/mozilla/xul/box/index.html | 101 - .../de/archive/mozilla/xul/colorpicker/index.html | 77 - .../archive/mozilla/xul/eigenschaften/index.html | 14 - files/de/archive/mozilla/xul/events/index.html | 464 - files/de/archive/mozilla/xul/grippy/index.html | 88 - files/de/archive/mozilla/xul/iframe/index.html | 161 - files/de/archive/mozilla/xul/index.html | 83 - .../archive/mozilla/xul/method/geticon/index.html | 15 - .../mozilla/xul/method/gettabforbrowser/index.html | 15 - files/de/archive/mozilla/xul/method/index.html | 14 - .../adding_menus_and_submenus/index.html | 99 - .../die_grundlagen_einer_erweiterung/index.html | 454 - .../index.html | 161 - .../xul/school_tutorial/einleitung/index.html | 44 - .../index.html | 75 - .../archive/mozilla/xul/school_tutorial/index.html | 70 - files/de/archive/mozilla/xul/separator/index.html | 123 - files/de/archive/mozilla/xul/spacer/index.html | 94 - files/de/archive/mozilla/xul/splitter/index.html | 173 - files/de/archive/mozilla/xul/style/index.html | 11 - .../mozilla/xul/style/treecol-image/index.html | 13 - files/de/archive/mozilla/xul/tab/index.html | 195 - files/de/archive/mozilla/xul/tabbox/index.html | 77 - files/de/archive/mozilla/xul/tabpanels/index.html | 100 - files/de/archive/mozilla/xul/tabs/index.html | 123 - files/de/archive/mozilla/xul/textbox/index.html | 334 - files/de/archive/mozilla/xul/treecol/index.html | 262 - files/de/archive/mozilla/xul/vbox/index.html | 100 - files/de/archive/mozilla/xul/window/index.html | 209 - .../de/archive/mozilla/xul/xul_referenz/index.html | 15 - .../xul/xul_tutorial/die_chrome_url/index.html | 39 - .../xul_tutorial/ein_fenster_erzeugen/index.html | 111 - .../xul/xul_tutorial/einfuehrung/index.html | 33 - .../de/archive/mozilla/xul/xul_tutorial/index.html | 57 - .../xul_tutorial/installations-skripte/index.html | 96 - .../xul/xul_tutorial/lokalisierung/index.html | 270 - .../positionierung_von_elementen/index.html | 259 - .../xul/xul_tutorial/xul_struktur/index.html | 154 - .../index.html" | 44 - files/de/archive/mozilla/xulrunner/index.html | 81 - files/de/archive/rss/index.html | 13 - files/de/archive/themes/index.html | 11 - files/de/archive/web-standards/index.html | 69 - .../web-standards/rdf_in_mozilla_faq/index.html | 264 - files/de/archive/web/index.html | 12 - .../web/javascript/arguments.caller/index.html | 55 - .../ecmascript_7_support_in_mozilla/index.html | 68 - files/de/archive/web/javascript/index.html | 12 - .../legacy_generator_function/index.html | 56 - files/de/bugzilla/index.html | 27 - files/de/bundles/index.html | 81 - files/de/codeschnipsel/cookies/index.html | 45 - files/de/codeschnipsel/index.html | 28 - files/de/codeschnipsel/on_page_load/index.html | 124 - files/de/codeschnipsel/scrollbar/index.html | 32 - files/de/codeschnipsel/tabbed_browser/index.html | 517 - files/de/codeschnipsel/tree/index.html | 69 - files/de/codeschnipsel/windows/index.html | 60 - files/de/e4x/index.html | 57 - files/de/e4x/processing_xml_with_e4x/index.html | 256 - .../index.html" | 102 - .../index.html | 469 - files/de/erweiterungen/index.html | 94 - files/de/erweiterungen_faq/index.html | 57 - files/de/firefox_addons_developer_guide/index.html | 15 - .../index.html | 46 - .../einf\303\274hrung/index.html" | 239 - files/de/gecko-dom-referenz/index.html | 65 - .../de/gecko_user_agent_string_referenz/index.html | 230 - files/de/installationsmanifest/index.html | 328 - files/de/installing_mercurial/index.html | 165 - .../list_of_mozilla-based_applications/index.html | 1265 -- files/de/lokalisierbaren_code_schreiben/index.html | 22 - .../index.html | 88 - .../index.html | 79 - files/de/mercurial/index.html | 36 - files/de/midas/index.html | 328 - files/de/midas/sicherheitseinstellungen/index.html | 73 - .../mozilla/add-ons/add-on_guidelines/index.html | 124 - files/de/mozilla/add-ons/amo/index.html | 9 - files/de/mozilla/add-ons/amo/policy/index.html | 19 - .../add-ons/bootstrapped_extensions/index.html | 243 - .../index.html | 156 - files/de/mozilla/add-ons/sdk/builder/index.html | 16 - .../add-ons/sdk/guides/content_scripts/index.html | 484 - files/de/mozilla/add-ons/sdk/guides/index.html | 154 - files/de/mozilla/add-ons/sdk/index.html | 83 - files/de/mozilla/add-ons/sdk/tools/index.html | 14 - files/de/mozilla/add-ons/sdk/tools/jpm/index.html | 497 - .../adding_a_button_to_the_toolbar/index.html | 100 - .../sdk/tutorials/getting_started/index.html | 214 - files/de/mozilla/add-ons/sdk/tutorials/index.html | 165 - .../add-ons/sdk/tutorials/installation/index.html | 134 - .../sdk/tutorials/mobile_development/index.html | 476 - .../index.html | 80 - .../de/mozilla/add-ons/themes/obsolete/index.html | 10 - .../\303\274berliegende_erweiterungen/index.html" | 54 - files/de/mozilla/chrome_registration/index.html | 48 - .../index.html | 105 - files/de/mozilla/css/index.html | 11 - .../mozilla/firefox/developer_edition/index.html | 57 - .../zur\303\274ckkehren/index.html" | 25 - files/de/mozilla/firefox/headless-mode/index.html | 237 - .../firefox/multiprocess_firefox/index.html | 80 - .../technical_overview/index.html | 164 - .../web_content_compatibility/index.html | 32 - .../firefox/nutzung_in_unternehmen/index.html | 142 - files/de/mozilla/firefox/privacy/index.html | 9 - .../firefox/privacy/tracking_protection/index.html | 88 - .../mozilla/firefox/the_about_protocol/index.html | 190 - .../updating_add-ons_for_firefox_5/index.html | 69 - .../compatibility_testing/index.html | 103 - files/de/mozilla/firefox_fuer_android/index.html | 64 - .../javascript_code_modules/deutsch/index.html | 197 - .../de/mozilla/javascript_code_modules/index.html | 102 - files/de/mozilla/localization/index.html | 25 - .../index.html | 137 - .../localization_content_best_practices/index.html | 324 - .../lokalisierung_mit_mercurial/index.html | 252 - .../lokalisierung_von_pontoon/index.html | 135 - .../lokalisierung_von_xliff-dateien/index.html | 59 - .../index.html" | 284 - files/de/mozilla/mathml_project/index.html | 72 - .../mathml_project/mathml_torture_test/index.html | 1323 -- files/de/mozilla/mathml_project/start/index.html | 95 - files/de/mozilla/mobile/index.html | 25 - .../de/mozilla/mobile/viewport_meta_tag/index.html | 86 - files/de/mozilla/performance/index.html | 145 - .../persona/bootstrapping_persona/index.html | 31 - files/de/mozilla/persona/branding/index.html | 42 - .../persona/browser_compatibility/index.html | 84 - files/de/mozilla/persona/index.html | 133 - .../mozilla/persona/protocol_overview/index.html | 61 - files/de/mozilla/persona/schnellstart/index.html | 201 - files/de/mozilla/persona/warum_persona/index.html | 31 - .../index.html | 10 - files/de/mozilla/preferences/index.html | 48 - files/de/mozilla/projects/deutsch/index.html | 35 - files/de/mozilla/projects/index.html | 14 - files/de/mozilla/projects/nss/index.html | 186 - .../projects/nss/nss_3.33_release_notes/index.html | 78 - .../projects/nss/nss_sample_code/index.html | 25 - files/de/mozilla/projects/nss/pkcs11/index.html | 20 - .../nss/pkcs11/module_installation/index.html | 32 - .../thunderbird_lokalisation/index.html | 98 - files/de/mozilla/qa/index.html | 70 - files/de/mozilla/tech/index.html | 14 - .../index.html | 56 - files/de/mozilla/tech/xpcom/guide/index.html | 13 - files/de/mozilla/tech/xpcom/reference/index.html | 27 - .../tech/xpcom/reference/interface/index.html | 19 - .../reference/interface/nsiloginmanager/index.html | 420 - .../using_nsiloginmanager/index.html | 212 - .../interface/nsixmlhttprequest/index.html | 89 - .../thunderbird/autokonfiguration/index.html | 146 - files/de/mozilla/thunderbird/index.html | 75 - .../building_a_thunderbird_extension/index.html | 57 - .../index.html | 61 - .../index.html | 58 - .../index.html | 24 - .../index.html | 24 - .../index.html | 43 - .../index.html | 31 - .../index.html | 44 - .../index.html | 53 - .../thunderbird/thunderbird_extensions/index.html | 138 - files/de/mozilla/verbinden/index.html | 94 - .../index.html" | 62 - .../index.html" | 24 - files/de/packen_von_erweiterungen/index.html | 42 - .../beispiele_und_testf\303\244lle/index.html" | 19 - files/de/plugins/index.html | 88 - files/de/preferences_system/index.html | 36 - files/de/profile_manager/index.html | 173 - .../stress_testing/index.html" | 12 - files/de/quickstart_lokalisierung/index.html | 43 - .../initial_setup/index.html | 84 - .../translation_phase/index.html | 122 - files/de/rdf/index.html | 12 - files/de/rhino/index.html | 14 - files/de/rhino_documentation/index.html | 115 - .../index.html | 147 - files/de/sandbox/index.html | 69 - files/de/social_api/index.html | 69 - .../de/spidermonkey/build_documentation/index.html | 239 - files/de/spidermonkey/index.html | 106 - files/de/theme_erstellen/contents.rdf/index.html | 47 - .../theme_erstellen/einf\303\274hrung/index.html" | 83 - files/de/theme_erstellen/index.html | 26 - files/de/theme_erstellen/install.rdf/index.html | 46 - files/de/theme_erstellen/uuid/index.html | 12 - files/de/themes/hintergrund/index.html | 98 - files/de/themes/index.html | 13 - files/de/toolkit_api/index.html | 36 - files/de/tools/debugger/settings/index.html | 57 - files/de/tools/scratchpad/index.html | 85 - files/de/tools/webide/index.html | 280 - .../tools/webide/probleml\303\266sung/index.html" | 165 - .../index.html" | 95 - .../de/web/api/l10n.language.direction/index.html | 63 - files/de/web/api/mozmobileconnection/index.html | 134 - .../selectnetworkautomatically/index.html | 57 - files/de/web/css/-moz-binding/index.html | 65 - .../web/css/-moz-border-bottom-colors/index.html | 134 - .../de/web/css/-moz-border-left-colors/index.html | 136 - .../de/web/css/-moz-border-right-colors/index.html | 88 - files/de/web/css/-moz-border-top-colors/index.html | 136 - files/de/web/css/-moz-stack-sizing/index.html | 59 - files/de/web/css/-moz-text-blink/index.html | 47 - files/de/web/css/-moz-window-shadow/index.html | 53 - .../_colon_-moz-full-screen-ancestor/index.html | 82 - .../css/_colon_-moz-lwtheme-brighttext/index.html | 22 - .../css/_colon_-moz-lwtheme-darktext/index.html | 23 - files/de/web/css/_colon_-moz-lwtheme/index.html | 26 - .../index.html | 19 - .../index.html | 25 - .../index.html | 73 - .../index.html | 73 - .../index.html | 73 - .../index.html | 73 - .../index.html | 73 - .../index.html | 73 - .../index.html | 65 - .../_colon_-moz-tree-cell-text(hover)/index.html | 20 - .../web/css/_colon_-moz-tree-cell-text/index.html | 30 - files/de/web/css/_colon_-moz-tree-cell/index.html | 38 - .../de/web/css/_colon_-moz-tree-column/index.html | 29 - .../css/_colon_-moz-tree-drop-feedback/index.html | 29 - files/de/web/css/_colon_-moz-tree-image/index.html | 34 - .../css/_colon_-moz-tree-indentation/index.html | 27 - files/de/web/css/_colon_-moz-tree-line/index.html | 25 - .../css/_colon_-moz-tree-progressmeter/index.html | 28 - .../web/css/_colon_-moz-tree-row(hover)/index.html | 20 - files/de/web/css/_colon_-moz-tree-row/index.html | 48 - .../web/css/_colon_-moz-tree-separator/index.html | 29 - .../de/web/css/_colon_-moz-tree-twisty/index.html | 30 - .../de/web/css/_doublecolon_-ms-browse/index.html | 79 - files/de/web/css/_doublecolon_-ms-check/index.html | 23 - .../web/css/_doublecolon_-ms-fill-lower/index.html | 90 - .../web/css/_doublecolon_-ms-fill-upper/index.html | 90 - files/de/web/css/_doublecolon_-ms-fill/index.html | 71 - .../de/web/css/_doublecolon_-ms-reveal/index.html | 24 - files/de/web/css/_doublecolon_-ms-thumb/index.html | 24 - files/de/web/css/overflow-clip-box/index.html | 97 - .../global_objects/array/observe/index.html | 91 - .../global_objects/array/unobserve/index.html | 88 - .../global_objects/arraybuffer/transfer/index.html | 84 - .../global_objects/date/tolocaleformat/index.html | 81 - .../global_objects/function/arity/index.html | 32 - .../global_objects/function/isgenerator/index.html | 56 - .../global_objects/number/tointeger/index.html | 52 - .../global_objects/object/observe/index.html | 199 - .../operators/array_comprehensions/index.html | 200 - .../operators/expression_closures/index.html | 76 - .../operators/generator_comprehensions/index.html | 172 - .../reference/statements/for_each...in/index.html | 122 - files/de/xml_web_services/index.html | 11 - .../de/xpcom/http_request_header_setzen/index.html | 216 - files/de/xpcom/index.html | 66 - files/de/xpi/index.html | 18 - files/de/xpinstall/index.html | 54 - .../index.html" | 32 - files/de/xul_explorer/index.html | 52 - files/de/zones/index.html | 53 - 363 files changed, 52722 deletions(-) delete mode 100644 files/de/_wikihistory.json delete mode 100644 files/de/archive/add-ons/index.html delete mode 100644 files/de/archive/add-ons/seamonkey_2/index.html delete mode 100644 files/de/archive/apps/index.html delete mode 100644 files/de/archive/b2g_os/anwendungsentwicklung/index.html delete mode 100644 files/de/archive/b2g_os/api/index.html delete mode 100644 files/de/archive/b2g_os/api/navigator/index.html delete mode 100644 files/de/archive/b2g_os/api/navigator/requestwakelock/index.html delete mode 100644 "files/de/archive/b2g_os/apps/eine_app_f\303\274r_firefox_os_schreiben/index.html" delete mode 100644 files/de/archive/b2g_os/apps/index.html delete mode 100644 files/de/archive/b2g_os/arbeiten_mit_dem_b2g_desktop_client/index.html delete mode 100644 files/de/archive/b2g_os/benutzung_des_app_managers/index.html delete mode 100644 files/de/archive/b2g_os/building/index.html delete mode 100644 files/de/archive/b2g_os/building_and_installing_firefox_os/compatible_devices/index.html delete mode 100644 files/de/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_overview/index.html delete mode 100644 files/de/archive/b2g_os/building_and_installing_firefox_os/index.html delete mode 100644 files/de/archive/b2g_os/debugging/developer_settings/index.html delete mode 100644 files/de/archive/b2g_os/debugging/index.html delete mode 100644 files/de/archive/b2g_os/debugging/installing_adb/index.html delete mode 100644 "files/de/archive/b2g_os/debugging/verbinden_eines_firefox_os_ger\303\244ts_mit_dem_rechner/index.html" delete mode 100644 files/de/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html delete mode 100644 files/de/archive/b2g_os/developing_firefox_os/index.html delete mode 100644 files/de/archive/b2g_os/firefox_os_build_prerequisites/index.html delete mode 100644 files/de/archive/b2g_os/firefox_os_faq/index.html delete mode 100644 files/de/archive/b2g_os/gaia/gaia_apps/index.html delete mode 100644 files/de/archive/b2g_os/gaia/hacking/index.html delete mode 100644 files/de/archive/b2g_os/gaia/index.html delete mode 100644 files/de/archive/b2g_os/gaia/introduction_to_gaia/index.html delete mode 100644 files/de/archive/b2g_os/gaia_entwickeln/build_system_primer/index.html delete mode 100644 files/de/archive/b2g_os/gaia_entwickeln/customizing_build-time_apps/index.html delete mode 100644 files/de/archive/b2g_os/gaia_entwickeln/durchfuehrung_der_gaia_codebase/index.html delete mode 100644 files/de/archive/b2g_os/gaia_entwickeln/index.html delete mode 100644 files/de/archive/b2g_os/gaia_entwickeln/making_gaia_code_changes/index.html delete mode 100644 files/de/archive/b2g_os/index.html delete mode 100644 files/de/archive/b2g_os/installing_on_a_mobile_device/index.html delete mode 100644 files/de/archive/b2g_os/introduction/index.html delete mode 100644 files/de/archive/b2g_os/phone_guide/alcatel_one_touch_fire/index.html delete mode 100644 files/de/archive/b2g_os/phone_guide/flame/index.html delete mode 100644 files/de/archive/b2g_os/phone_guide/geeksphone/index.html delete mode 100644 files/de/archive/b2g_os/phone_guide/index.html delete mode 100644 files/de/archive/b2g_os/phone_guide/phone_specs/index.html delete mode 100644 files/de/archive/b2g_os/phone_guide/zte_open_c/index.html delete mode 100644 files/de/archive/b2g_os/platform/app_architektur/index.html delete mode 100644 files/de/archive/b2g_os/platform/architektur/index.html delete mode 100644 files/de/archive/b2g_os/platform/index.html delete mode 100644 files/de/archive/b2g_os/quickstart/deine_erste_app/index.html delete mode 100644 files/de/archive/b2g_os/quickstart/einfuerung_zu_firefox_os/index.html delete mode 100644 files/de/archive/b2g_os/quickstart/for_mobile_developers/index.html delete mode 100644 files/de/archive/b2g_os/quickstart/index.html delete mode 100644 files/de/archive/b2g_os/quickstart/open_web_apps_and_web_standards/index.html delete mode 100644 files/de/archive/b2g_os/releases/1.4/index.html delete mode 100644 files/de/archive/b2g_os/releases/2.0/index.html delete mode 100644 files/de/archive/b2g_os/releases/index.html delete mode 100644 files/de/archive/b2g_os/simulator/index.html delete mode 100644 files/de/archive/b2g_os/troubleshooting/index.html delete mode 100644 files/de/archive/css3/index.html delete mode 100644 files/de/archive/index.html delete mode 100644 files/de/archive/mdn/index.html delete mode 100644 files/de/archive/mozilla/index.html delete mode 100644 files/de/archive/mozilla/marketplace/apis/index.html delete mode 100644 files/de/archive/mozilla/marketplace/faq/index.html delete mode 100644 files/de/archive/mozilla/marketplace/index.html delete mode 100644 files/de/archive/mozilla/marketplace/index/index.html delete mode 100644 files/de/archive/mozilla/marketplace/marktplatz_apis/index.html delete mode 100644 files/de/archive/mozilla/marketplace/options/open_web_apps_for_android/index.html delete mode 100644 files/de/archive/mozilla/marketplace/publishing/index.html delete mode 100644 files/de/archive/mozilla/marketplace/publishing/packaged_apps/index.html delete mode 100644 files/de/archive/mozilla/marketplace/publishing/publish_options/index.html delete mode 100644 files/de/archive/mozilla/marketplace/publishing/submit/index.html delete mode 100644 files/de/archive/mozilla/marketplace/publishing/updating_apps/index.html delete mode 100644 files/de/archive/mozilla/marketplace/submission/index.html delete mode 100644 files/de/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html delete mode 100644 "files/de/archive/mozilla/marketplace/ver\303\266ffentlichen/index.html" delete mode 100644 files/de/archive/mozilla/xul/action/index.html delete mode 100644 files/de/archive/mozilla/xul/arrowscrollbox/index.html delete mode 100644 files/de/archive/mozilla/xul/assign/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/accesskey/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/activetitlebarcolor/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/align/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/allowevents/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/allownegativeassertions/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/color/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/cols/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/decimalplaces/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/disabled/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/empty/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/emptytext/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/expr/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/hidespinbuttons/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/label/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/onchange/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/prefpane.src/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/src/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/treecell.src/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/treecol.src/index.html delete mode 100644 files/de/archive/mozilla/xul/attribute/var/index.html delete mode 100644 files/de/archive/mozilla/xul/bbox/index.html delete mode 100644 files/de/archive/mozilla/xul/binding/index.html delete mode 100644 files/de/archive/mozilla/xul/box/index.html delete mode 100644 files/de/archive/mozilla/xul/colorpicker/index.html delete mode 100644 files/de/archive/mozilla/xul/eigenschaften/index.html delete mode 100644 files/de/archive/mozilla/xul/events/index.html delete mode 100644 files/de/archive/mozilla/xul/grippy/index.html delete mode 100644 files/de/archive/mozilla/xul/iframe/index.html delete mode 100644 files/de/archive/mozilla/xul/index.html delete mode 100644 files/de/archive/mozilla/xul/method/geticon/index.html delete mode 100644 files/de/archive/mozilla/xul/method/gettabforbrowser/index.html delete mode 100644 files/de/archive/mozilla/xul/method/index.html delete mode 100644 files/de/archive/mozilla/xul/school_tutorial/adding_menus_and_submenus/index.html delete mode 100644 files/de/archive/mozilla/xul/school_tutorial/die_grundlagen_einer_erweiterung/index.html delete mode 100644 files/de/archive/mozilla/xul/school_tutorial/eine_entwicklungsumgebung_einrichten_environment/index.html delete mode 100644 files/de/archive/mozilla/xul/school_tutorial/einleitung/index.html delete mode 100644 files/de/archive/mozilla/xul/school_tutorial/getting_started_with_firefox_extensions/index.html delete mode 100644 files/de/archive/mozilla/xul/school_tutorial/index.html delete mode 100644 files/de/archive/mozilla/xul/separator/index.html delete mode 100644 files/de/archive/mozilla/xul/spacer/index.html delete mode 100644 files/de/archive/mozilla/xul/splitter/index.html delete mode 100644 files/de/archive/mozilla/xul/style/index.html delete mode 100644 files/de/archive/mozilla/xul/style/treecol-image/index.html delete mode 100644 files/de/archive/mozilla/xul/tab/index.html delete mode 100644 files/de/archive/mozilla/xul/tabbox/index.html delete mode 100644 files/de/archive/mozilla/xul/tabpanels/index.html delete mode 100644 files/de/archive/mozilla/xul/tabs/index.html delete mode 100644 files/de/archive/mozilla/xul/textbox/index.html delete mode 100644 files/de/archive/mozilla/xul/treecol/index.html delete mode 100644 files/de/archive/mozilla/xul/vbox/index.html delete mode 100644 files/de/archive/mozilla/xul/window/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_referenz/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_tutorial/die_chrome_url/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_tutorial/ein_fenster_erzeugen/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_tutorial/einfuehrung/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_tutorial/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_tutorial/installations-skripte/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_tutorial/lokalisierung/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_tutorial/positionierung_von_elementen/index.html delete mode 100644 files/de/archive/mozilla/xul/xul_tutorial/xul_struktur/index.html delete mode 100644 "files/de/archive/mozilla/xul/\303\244nderungen_an_xul_f\303\274r_firefox_1.5/index.html" delete mode 100644 files/de/archive/mozilla/xulrunner/index.html delete mode 100644 files/de/archive/rss/index.html delete mode 100644 files/de/archive/themes/index.html delete mode 100644 files/de/archive/web-standards/index.html delete mode 100644 files/de/archive/web-standards/rdf_in_mozilla_faq/index.html delete mode 100644 files/de/archive/web/index.html delete mode 100644 files/de/archive/web/javascript/arguments.caller/index.html delete mode 100644 files/de/archive/web/javascript/ecmascript_7_support_in_mozilla/index.html delete mode 100644 files/de/archive/web/javascript/index.html delete mode 100644 files/de/archive/web/javascript/legacy_generator_function/index.html delete mode 100644 files/de/bugzilla/index.html delete mode 100644 files/de/bundles/index.html delete mode 100644 files/de/codeschnipsel/cookies/index.html delete mode 100644 files/de/codeschnipsel/index.html delete mode 100644 files/de/codeschnipsel/on_page_load/index.html delete mode 100644 files/de/codeschnipsel/scrollbar/index.html delete mode 100644 files/de/codeschnipsel/tabbed_browser/index.html delete mode 100644 files/de/codeschnipsel/tree/index.html delete mode 100644 files/de/codeschnipsel/windows/index.html delete mode 100644 files/de/e4x/index.html delete mode 100644 files/de/e4x/processing_xml_with_e4x/index.html delete mode 100644 "files/de/einrichten_einer_entwicklungsumgebung_f\303\274r_erweiterungen/index.html" delete mode 100644 files/de/erstellen_von_firefox_erweiterungen_mit_dem_mozilla_build_system/index.html delete mode 100644 files/de/erweiterungen/index.html delete mode 100644 files/de/erweiterungen_faq/index.html delete mode 100644 files/de/firefox_addons_developer_guide/index.html delete mode 100644 files/de/gecko-dom-referenz/dom_elemente_mittels_selektoren_ermitteln/index.html delete mode 100644 "files/de/gecko-dom-referenz/einf\303\274hrung/index.html" delete mode 100644 files/de/gecko-dom-referenz/index.html delete mode 100644 files/de/gecko_user_agent_string_referenz/index.html delete mode 100644 files/de/installationsmanifest/index.html delete mode 100644 files/de/installing_mercurial/index.html delete mode 100644 files/de/list_of_mozilla-based_applications/index.html delete mode 100644 files/de/lokalisierbaren_code_schreiben/index.html delete mode 100644 files/de/lokalisierung_von_erweiterungsbeschreibungen/index.html delete mode 100644 files/de/making_sure_your_theme_works_with_rtl_locales/index.html delete mode 100644 files/de/mercurial/index.html delete mode 100644 files/de/midas/index.html delete mode 100644 files/de/midas/sicherheitseinstellungen/index.html delete mode 100644 files/de/mozilla/add-ons/add-on_guidelines/index.html delete mode 100644 files/de/mozilla/add-ons/amo/index.html delete mode 100644 files/de/mozilla/add-ons/amo/policy/index.html delete mode 100644 files/de/mozilla/add-ons/bootstrapped_extensions/index.html delete mode 100644 files/de/mozilla/add-ons/performance_best_practices_in_extensions/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/builder/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/guides/content_scripts/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/guides/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/tools/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/tools/jpm/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/tutorials/getting_started/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/tutorials/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/tutorials/installation/index.html delete mode 100644 files/de/mozilla/add-ons/sdk/tutorials/mobile_development/index.html delete mode 100644 files/de/mozilla/add-ons/security_best_practices_in_extensions/index.html delete mode 100644 files/de/mozilla/add-ons/themes/obsolete/index.html delete mode 100644 "files/de/mozilla/add-ons/\303\274berliegende_erweiterungen/index.html" delete mode 100644 files/de/mozilla/chrome_registration/index.html delete mode 100644 files/de/mozilla/creating_a_spell_check_dictionary_add-on/index.html delete mode 100644 files/de/mozilla/css/index.html delete mode 100644 files/de/mozilla/firefox/developer_edition/index.html delete mode 100644 "files/de/mozilla/firefox/developer_edition/zur\303\274ckkehren/index.html" delete mode 100644 files/de/mozilla/firefox/headless-mode/index.html delete mode 100644 files/de/mozilla/firefox/multiprocess_firefox/index.html delete mode 100644 files/de/mozilla/firefox/multiprocess_firefox/technical_overview/index.html delete mode 100644 files/de/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html delete mode 100644 files/de/mozilla/firefox/nutzung_in_unternehmen/index.html delete mode 100644 files/de/mozilla/firefox/privacy/index.html delete mode 100644 files/de/mozilla/firefox/privacy/tracking_protection/index.html delete mode 100644 files/de/mozilla/firefox/the_about_protocol/index.html delete mode 100644 files/de/mozilla/firefox/updating_add-ons_for_firefox_5/index.html delete mode 100644 files/de/mozilla/firefox_fuer_android/compatibility_testing/index.html delete mode 100644 files/de/mozilla/firefox_fuer_android/index.html delete mode 100644 files/de/mozilla/javascript_code_modules/deutsch/index.html delete mode 100644 files/de/mozilla/javascript_code_modules/index.html delete mode 100644 files/de/mozilla/localization/index.html delete mode 100644 files/de/mozilla/localization/kodierung_fuer_lokalisierungs-dateien/index.html delete mode 100644 files/de/mozilla/localization/localization_content_best_practices/index.html delete mode 100644 files/de/mozilla/localization/lokalisierung_mit_mercurial/index.html delete mode 100644 files/de/mozilla/localization/lokalisierung_von_pontoon/index.html delete mode 100644 files/de/mozilla/localization/lokalisierung_von_xliff-dateien/index.html delete mode 100644 "files/de/mozilla/localization/programm\303\274bersetungen_mit_mercurial/index.html" delete mode 100644 files/de/mozilla/mathml_project/index.html delete mode 100644 files/de/mozilla/mathml_project/mathml_torture_test/index.html delete mode 100644 files/de/mozilla/mathml_project/start/index.html delete mode 100644 files/de/mozilla/mobile/index.html delete mode 100644 files/de/mozilla/mobile/viewport_meta_tag/index.html delete mode 100644 files/de/mozilla/performance/index.html delete mode 100644 files/de/mozilla/persona/bootstrapping_persona/index.html delete mode 100644 files/de/mozilla/persona/branding/index.html delete mode 100644 files/de/mozilla/persona/browser_compatibility/index.html delete mode 100644 files/de/mozilla/persona/index.html delete mode 100644 files/de/mozilla/persona/protocol_overview/index.html delete mode 100644 files/de/mozilla/persona/schnellstart/index.html delete mode 100644 files/de/mozilla/persona/warum_persona/index.html delete mode 100644 files/de/mozilla/preferences/eine_kurze_anleitung_zu_mozilla_einstellungen/index.html delete mode 100644 files/de/mozilla/preferences/index.html delete mode 100644 files/de/mozilla/projects/deutsch/index.html delete mode 100644 files/de/mozilla/projects/index.html delete mode 100644 files/de/mozilla/projects/nss/index.html delete mode 100644 files/de/mozilla/projects/nss/nss_3.33_release_notes/index.html delete mode 100644 files/de/mozilla/projects/nss/nss_sample_code/index.html delete mode 100644 files/de/mozilla/projects/nss/pkcs11/index.html delete mode 100644 files/de/mozilla/projects/nss/pkcs11/module_installation/index.html delete mode 100644 files/de/mozilla/projects/thunderbird/thunderbird_lokalisation/index.html delete mode 100644 files/de/mozilla/qa/index.html delete mode 100644 files/de/mozilla/tech/index.html delete mode 100644 files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html delete mode 100644 files/de/mozilla/tech/xpcom/guide/index.html delete mode 100644 files/de/mozilla/tech/xpcom/reference/index.html delete mode 100644 files/de/mozilla/tech/xpcom/reference/interface/index.html delete mode 100644 files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/index.html delete mode 100644 files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/using_nsiloginmanager/index.html delete mode 100644 files/de/mozilla/tech/xpcom/reference/interface/nsixmlhttprequest/index.html delete mode 100644 files/de/mozilla/thunderbird/autokonfiguration/index.html delete mode 100644 files/de/mozilla/thunderbird/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_3_colon__install_manifest/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_7_colon__installation/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_8_colon__packaging/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_9_colon__distributing/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/ein_thunderbird_addon_programmieren_5_colon__xul/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_2_colon__erweiterungs-dateisystem/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_4_colon__chrome_manifest/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_6_colon__javascript_hinzufuegen/index.html delete mode 100644 files/de/mozilla/thunderbird/thunderbird_extensions/index.html delete mode 100644 files/de/mozilla/verbinden/index.html delete mode 100644 "files/de/mozilla/\303\274ber_colon_omni.ja_(ehemals_omni.jar)/index.html" delete mode 100644 "files/de/neue_kompatibilit\303\244tstabellen_in_beta/index.html" delete mode 100644 files/de/packen_von_erweiterungen/index.html delete mode 100644 "files/de/plugins/beispiele_und_testf\303\244lle/index.html" delete mode 100644 files/de/plugins/index.html delete mode 100644 files/de/preferences_system/index.html delete mode 100644 files/de/profile_manager/index.html delete mode 100644 "files/de/qualit\303\244tssicherung/stress_testing/index.html" delete mode 100644 files/de/quickstart_lokalisierung/index.html delete mode 100644 files/de/quickstart_lokalisierung/initial_setup/index.html delete mode 100644 files/de/quickstart_lokalisierung/translation_phase/index.html delete mode 100644 files/de/rdf/index.html delete mode 100644 files/de/rhino/index.html delete mode 100644 files/de/rhino_documentation/index.html delete mode 100644 files/de/richtlinien_zum_schreiben_eines_bugreports/index.html delete mode 100644 files/de/sandbox/index.html delete mode 100644 files/de/social_api/index.html delete mode 100644 files/de/spidermonkey/build_documentation/index.html delete mode 100644 files/de/spidermonkey/index.html delete mode 100644 files/de/theme_erstellen/contents.rdf/index.html delete mode 100644 "files/de/theme_erstellen/einf\303\274hrung/index.html" delete mode 100644 files/de/theme_erstellen/index.html delete mode 100644 files/de/theme_erstellen/install.rdf/index.html delete mode 100644 files/de/theme_erstellen/uuid/index.html delete mode 100644 files/de/themes/hintergrund/index.html delete mode 100644 files/de/themes/index.html delete mode 100644 files/de/toolkit_api/index.html delete mode 100644 files/de/tools/debugger/settings/index.html delete mode 100644 files/de/tools/scratchpad/index.html delete mode 100644 files/de/tools/webide/index.html delete mode 100644 "files/de/tools/webide/probleml\303\266sung/index.html" delete mode 100644 "files/de/unterst\303\274tzung_von_internationalized_domain_names_(idn)_in_mozilla_browsern/index.html" delete mode 100644 files/de/web/api/l10n.language.direction/index.html delete mode 100644 files/de/web/api/mozmobileconnection/index.html delete mode 100644 files/de/web/api/mozmobileconnection/selectnetworkautomatically/index.html delete mode 100644 files/de/web/css/-moz-binding/index.html delete mode 100644 files/de/web/css/-moz-border-bottom-colors/index.html delete mode 100644 files/de/web/css/-moz-border-left-colors/index.html delete mode 100644 files/de/web/css/-moz-border-right-colors/index.html delete mode 100644 files/de/web/css/-moz-border-top-colors/index.html delete mode 100644 files/de/web/css/-moz-stack-sizing/index.html delete mode 100644 files/de/web/css/-moz-text-blink/index.html delete mode 100644 files/de/web/css/-moz-window-shadow/index.html delete mode 100644 files/de/web/css/_colon_-moz-full-screen-ancestor/index.html delete mode 100644 files/de/web/css/_colon_-moz-lwtheme-brighttext/index.html delete mode 100644 files/de/web/css/_colon_-moz-lwtheme-darktext/index.html delete mode 100644 files/de/web/css/_colon_-moz-lwtheme/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(images-in-menus)/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(mac-graphite-theme)/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(scrollbar-end-backward)/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(scrollbar-end-forward)/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(scrollbar-start-backward)/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(scrollbar-start-forward)/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(scrollbar-thumb-proportional)/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(touch-enabled)/index.html delete mode 100644 files/de/web/css/_colon_-moz-system-metric(windows-default-theme)/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-cell-text(hover)/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-cell-text/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-cell/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-column/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-drop-feedback/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-image/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-indentation/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-line/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-progressmeter/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-row(hover)/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-row/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-separator/index.html delete mode 100644 files/de/web/css/_colon_-moz-tree-twisty/index.html delete mode 100644 files/de/web/css/_doublecolon_-ms-browse/index.html delete mode 100644 files/de/web/css/_doublecolon_-ms-check/index.html delete mode 100644 files/de/web/css/_doublecolon_-ms-fill-lower/index.html delete mode 100644 files/de/web/css/_doublecolon_-ms-fill-upper/index.html delete mode 100644 files/de/web/css/_doublecolon_-ms-fill/index.html delete mode 100644 files/de/web/css/_doublecolon_-ms-reveal/index.html delete mode 100644 files/de/web/css/_doublecolon_-ms-thumb/index.html delete mode 100644 files/de/web/css/overflow-clip-box/index.html delete mode 100644 files/de/web/javascript/reference/global_objects/array/observe/index.html delete mode 100644 files/de/web/javascript/reference/global_objects/array/unobserve/index.html delete mode 100644 files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html delete mode 100644 files/de/web/javascript/reference/global_objects/date/tolocaleformat/index.html delete mode 100644 files/de/web/javascript/reference/global_objects/function/arity/index.html delete mode 100644 files/de/web/javascript/reference/global_objects/function/isgenerator/index.html delete mode 100644 files/de/web/javascript/reference/global_objects/number/tointeger/index.html delete mode 100644 files/de/web/javascript/reference/global_objects/object/observe/index.html delete mode 100644 files/de/web/javascript/reference/operators/array_comprehensions/index.html delete mode 100644 files/de/web/javascript/reference/operators/expression_closures/index.html delete mode 100644 files/de/web/javascript/reference/operators/generator_comprehensions/index.html delete mode 100644 files/de/web/javascript/reference/statements/for_each...in/index.html delete mode 100644 files/de/xml_web_services/index.html delete mode 100644 files/de/xpcom/http_request_header_setzen/index.html delete mode 100644 files/de/xpcom/index.html delete mode 100644 files/de/xpi/index.html delete mode 100644 files/de/xpinstall/index.html delete mode 100644 "files/de/xul_anwendungen_f\303\274r_firefox_1.5_anpassen/index.html" delete mode 100644 files/de/xul_explorer/index.html delete mode 100644 files/de/zones/index.html (limited to 'files/de') diff --git a/files/de/_wikihistory.json b/files/de/_wikihistory.json deleted file mode 100644 index 7085c26dd5..0000000000 --- a/files/de/_wikihistory.json +++ /dev/null @@ -1,14744 +0,0 @@ -{ - "Benutzen_des_Zwischenspeichers_in_Firefox_1.5_(caching)": { - "modified": "2019-03-24T00:04:22.542Z", - "contributors": [ - "wbamberg", - "fscholz", - "-=Renegade=-", - "Doozer" - ] - }, - "CSS3_Columns": { - "modified": "2019-03-24T00:05:49.925Z", - "contributors": [ - "SJW", - "fscholz", - "Mapag" - ] - }, - "DOM": { - "modified": "2019-03-24T00:03:18.662Z", - "contributors": [ - "TheNT87", - "Barfooz", - "ethertank", - "fscholz", - "Crash", - "Takenbot", - "M@d Man" - ] - }, - "DOM/Ueber_das_Document_Object_Model": { - "modified": "2019-12-23T07:48:22.460Z", - "contributors": [ - "Cerberooo", - "StevenS77", - "Barfooz" - ] - }, - "DOM_Inspector": { - "modified": "2020-07-16T22:36:24.131Z", - "contributors": [ - "wbamberg", - "nw520" - ] - }, - "DragDrop": { - "modified": "2019-03-23T23:26:04.264Z", - "contributors": [ - "drewp" - ] - }, - "Erweiterung_erstellen": { - "modified": "2019-03-24T00:04:52.753Z", - "contributors": [ - "tregagnon", - "fscholz", - "SeSchneider", - "Yozh88", - "Jules Papillon", - "Alopix", - "Pl4yer", - "Masterdschecker", - "Michael2402", - "Undertaker", - "Thomas147", - "Felix.Schwarz", - "Verruckt", - "Slosd", - "Philipp", - "Indigo", - "Jonny", - "Takenbot", - "Manuel Strehl", - "Ar-sch.de", - "DDSD", - "Dria" - ] - }, - "Erweiterungen_für_Firefox_3_aktualisieren": { - "modified": "2019-12-13T20:33:28.025Z", - "contributors": [ - "wbamberg", - "fscholz", - "Sheppy", - "Editmonkey", - "Jules Papillon" - ] - }, - "Farbverläufe_in_CSS": { - "modified": "2019-03-23T23:13:15.166Z", - "contributors": [ - "Bennyville", - "wizAmit", - "slayslot", - "Sebastianz", - "floEdelmann" - ] - }, - "Firefox_1.5_für_Entwickler": { - "modified": "2019-03-24T00:04:17.420Z", - "contributors": [ - "wbamberg", - "fscholz", - "Jules Papillon", - "Agoist", - "Umifa", - "Crash" - ] - }, - "Firefox_1.5_für_Entwickler/Changing_the_priority_of_HTTP_requests": { - "modified": "2019-10-30T20:00:38.264Z", - "contributors": [ - "sklicek" - ] - }, - "Firefox_3.5_für_Entwickler": { - "modified": "2019-03-24T00:04:29.361Z", - "contributors": [ - "wbamberg", - "Timmi", - "fscholz", - "niels" - ] - }, - "Firefox_3_für_Entwickler": { - "modified": "2019-03-24T00:04:33.617Z", - "contributors": [ - "wbamberg", - "fscholz", - "niels", - "Lukas Skywalker" - ] - }, - "Games": { - "modified": "2019-09-09T15:31:03.156Z", - "contributors": [ - "SphinxKnight", - "ctexxx", - "wbamberg", - "Ja3ar", - "RewoSiedge", - "fscholz", - "Chris-CR", - "wiegels", - "sonjaka", - "F6F" - ] - }, - "Glossary": { - "modified": "2020-10-07T11:07:28.731Z", - "contributors": [ - "peterbe", - "wbamberg", - "duckymirror", - "Siphalor", - "schwemmer", - "PercyGitarrist", - "Clijsters", - "Jeremie" - ] - }, - "Glossary/404": { - "modified": "2019-03-23T22:25:58.962Z", - "contributors": [ - "cob", - "SebinNyshkim", - "PercyGitarrist" - ] - }, - "Glossary/502": { - "modified": "2019-03-23T22:25:51.694Z", - "contributors": [ - "Siphalor", - "PercyGitarrist" - ] - }, - "Glossary/AJAX": { - "modified": "2019-09-29T09:22:43.314Z", - "contributors": [ - "StuNNixX", - "SebinNyshkim", - "Johann150", - "amelzer", - "Tyrandus", - "Siphalor", - "PeterMader" - ] - }, - "Glossary/API": { - "modified": "2019-01-17T01:20:03.588Z", - "contributors": [ - "GreenPepper", - "Tyrandus" - ] - }, - "Glossary/ARIA": { - "modified": "2019-03-18T21:25:14.758Z", - "contributors": [ - "timvancleef" - ] - }, - "Glossary/ARPA": { - "modified": "2019-09-26T16:01:34.595Z", - "contributors": [ - "StuNNixX" - ] - }, - "Glossary/ASCII": { - "modified": "2019-03-23T22:12:48.337Z", - "contributors": [ - "Tyrandus", - "Siphalor" - ] - }, - "Glossary/ATAG": { - "modified": "2019-07-16T20:07:08.739Z", - "contributors": [ - "christianheinrichs", - "Tyrandus" - ] - }, - "Glossary/Abstraktion": { - "modified": "2019-03-23T22:15:58.737Z", - "contributors": [ - "Sebastianz", - "ursingold", - "t1m0fej" - ] - }, - "Glossary/Accessibility": { - "modified": "2019-03-18T21:41:37.798Z", - "contributors": [ - "fhwfzfge" - ] - }, - "Glossary/Adobe_Flash": { - "modified": "2019-03-18T21:38:09.234Z", - "contributors": [ - "duckymirror" - ] - }, - "Glossary/Algorithmus": { - "modified": "2019-03-23T22:10:22.994Z", - "contributors": [ - "herbmaier", - "Tyrandus" - ] - }, - "Glossary/Anweisung": { - "modified": "2019-04-20T19:38:11.191Z", - "contributors": [ - "GreenPepper", - "Tyrandus" - ] - }, - "Glossary/Apple_Safari": { - "modified": "2019-03-23T22:12:52.875Z", - "contributors": [ - "Siphalor" - ] - }, - "Glossary/Argument": { - "modified": "2019-07-31T17:50:44.168Z", - "contributors": [ - "DavidBarke", - "Siphalor" - ] - }, - "Glossary/Asynchron": { - "modified": "2019-06-18T06:50:55.111Z", - "contributors": [ - "dbraun" - ] - }, - "Glossary/Attribute": { - "modified": "2019-03-23T22:12:44.567Z", - "contributors": [ - "CennoxX", - "Siphalor" - ] - }, - "Glossary/Bandbreite": { - "modified": "2019-03-23T22:08:37.747Z", - "contributors": [ - "sigoa", - "Rebecca70" - ] - }, - "Glossary/Block": { - "modified": "2019-03-23T22:10:15.560Z", - "contributors": [ - "Tyrandus" - ] - }, - "Glossary/Block/CSS": { - "modified": "2019-03-23T22:10:18.354Z", - "contributors": [ - "Tyrandus" - ] - }, - "Glossary/Block/Scripting": { - "modified": "2019-07-31T17:47:15.023Z", - "contributors": [ - "DavidBarke", - "Tyrandus" - ] - }, - "Glossary/Boolean": { - "modified": "2020-05-06T18:18:55.401Z", - "contributors": [ - "zuzuzu", - "Siphalor" - ] - }, - "Glossary/Bootstrap": { - "modified": "2020-04-26T05:37:23.217Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Browser": { - "modified": "2019-03-23T22:19:19.624Z", - "contributors": [ - "fhwfzfge", - "pixelwiese" - ] - }, - "Glossary/CDN": { - "modified": "2019-03-18T21:36:11.693Z", - "contributors": [ - "Sixl-Daniel" - ] - }, - "Glossary/CMS": { - "modified": "2019-07-09T09:57:48.292Z", - "contributors": [ - "marcelalmesberger" - ] - }, - "Glossary/CORS": { - "modified": "2019-03-18T21:25:15.532Z", - "contributors": [ - "timvancleef" - ] - }, - "Glossary/CORS-zugelassener-anfrage-header": { - "modified": "2020-01-30T18:28:06.437Z", - "contributors": [ - "TorbenKoehn" - ] - }, - "Glossary/CRLF": { - "modified": "2019-07-03T15:43:20.749Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/CSS": { - "modified": "2019-03-23T22:15:58.284Z", - "contributors": [ - "Johann150", - "42triangles", - "th1nk3th", - "Siphalor" - ] - }, - "Glossary/CSS_Praeprozessor": { - "modified": "2019-03-18T21:36:27.239Z", - "contributors": [ - "Sixl-Daniel" - ] - }, - "Glossary/Cache": { - "modified": "2019-03-18T21:14:43.666Z", - "contributors": [ - "inverted-hat" - ] - }, - "Glossary/CalDAV": { - "modified": "2019-07-16T22:22:01.791Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/Canvas": { - "modified": "2019-03-18T21:27:17.671Z", - "contributors": [ - "timvancleef", - "duckymirror" - ] - }, - "Glossary/Card_sorting": { - "modified": "2019-03-18T21:18:41.531Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/Character": { - "modified": "2019-07-16T20:34:30.794Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/Chrome": { - "modified": "2019-03-18T21:22:37.925Z", - "contributors": [ - "DanielNL" - ] - }, - "Glossary/Codec": { - "modified": "2019-07-03T15:06:19.710Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/Compile_time": { - "modified": "2019-07-16T20:23:03.824Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/Cookie": { - "modified": "2019-03-18T21:14:43.300Z", - "contributors": [ - "inverted-hat" - ] - }, - "Glossary/Crawler": { - "modified": "2019-03-18T21:16:18.027Z", - "contributors": [ - "pastparty" - ] - }, - "Glossary/DHTML": { - "modified": "2019-07-16T20:42:27.987Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/DNS": { - "modified": "2019-03-23T22:12:52.961Z", - "contributors": [ - "Siphalor" - ] - }, - "Glossary/DOM": { - "modified": "2019-03-18T21:32:34.579Z", - "contributors": [ - "axelrindle" - ] - }, - "Glossary/DOS_attack": { - "modified": "2019-03-23T22:12:27.718Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/DTD": { - "modified": "2019-07-04T23:44:01.071Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/Data_structure": { - "modified": "2019-07-16T20:37:24.466Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/Datenkapselung": { - "modified": "2020-09-30T06:05:42.392Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Denial_of_Service": { - "modified": "2019-01-17T02:56:58.052Z", - "contributors": [ - "ahmadnourallah" - ] - }, - "Glossary/Doctype": { - "modified": "2019-03-18T21:31:08.161Z", - "contributors": [ - "PlayLikeLars" - ] - }, - "Glossary/Domain_Name": { - "modified": "2019-03-23T22:09:23.052Z", - "contributors": [ - "Anonymous" - ] - }, - "Glossary/ECMA": { - "modified": "2019-03-23T22:38:22.610Z", - "contributors": [ - "Siphalor", - "manumiu" - ] - }, - "Glossary/ECMAScript": { - "modified": "2019-07-16T20:45:49.886Z", - "contributors": [ - "christianheinrichs", - "sigoa" - ] - }, - "Glossary/Element": { - "modified": "2019-03-18T21:32:38.372Z", - "contributors": [ - "axelrindle" - ] - }, - "Glossary/FTP": { - "modified": "2019-07-16T21:16:05.354Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/Falsy": { - "modified": "2020-04-04T11:10:35.168Z", - "contributors": [ - "axelrindle", - "Ryuno-Ki", - "sspringer82", - "Eiknheimer" - ] - }, - "Glossary/Firefox_OS": { - "modified": "2019-07-16T20:57:14.425Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/Flex": { - "modified": "2020-07-03T19:19:31.495Z", - "contributors": [ - "duckymirror" - ] - }, - "Glossary/Flexbox": { - "modified": "2020-04-28T14:38:18.338Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Funktion_erster-Klasse": { - "modified": "2019-03-18T21:30:30.219Z", - "contributors": [ - "king-tom" - ] - }, - "Glossary/GPU": { - "modified": "2019-01-17T02:50:36.393Z", - "contributors": [ - "duckymirror" - ] - }, - "Glossary/GZip_compression": { - "modified": "2019-03-18T21:16:18.586Z", - "contributors": [ - "pastparty" - ] - }, - "Glossary/Git": { - "modified": "2019-03-23T22:03:45.932Z", - "contributors": [ - "PeterMader" - ] - }, - "Glossary/Graceful_degradation": { - "modified": "2019-03-18T21:18:41.082Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/Grid": { - "modified": "2019-04-30T16:22:31.119Z", - "contributors": [ - "janklaeger" - ] - }, - "Glossary/Gutters": { - "modified": "2019-06-28T17:18:01.309Z", - "contributors": [ - "hellschu" - ] - }, - "Glossary/HTML": { - "modified": "2019-03-23T22:45:13.400Z", - "contributors": [ - "ursingold", - "GerhardStingl", - "jumpball", - "22samuelk" - ] - }, - "Glossary/HTML5": { - "modified": "2019-05-21T11:16:16.898Z", - "contributors": [ - "Exblosis" - ] - }, - "Glossary/HTTP": { - "modified": "2019-03-23T22:18:56.738Z", - "contributors": [ - "jens1o", - "cob" - ] - }, - "Glossary/Herstellerpräfix": { - "modified": "2019-03-23T22:29:22.756Z", - "contributors": [ - "Tyrandus", - "1903Daniel" - ] - }, - "Glossary/Hoisting": { - "modified": "2019-03-18T20:48:10.960Z", - "contributors": [ - "SebinNyshkim", - "eluchsinger" - ] - }, - "Glossary/Hyperlink": { - "modified": "2019-03-18T21:38:11.272Z", - "contributors": [ - "duckymirror" - ] - }, - "Glossary/IDE": { - "modified": "2020-04-27T12:50:30.779Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/IETF": { - "modified": "2019-07-16T22:29:20.265Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/IIFE": { - "modified": "2020-08-24T06:52:59.941Z", - "contributors": [ - "anme98" - ] - }, - "Glossary/IMAP": { - "modified": "2020-06-01T13:05:53.063Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/ISO": { - "modified": "2019-03-18T21:32:20.907Z", - "contributors": [ - "axelrindle" - ] - }, - "Glossary/Identifier": { - "modified": "2019-03-18T21:32:54.530Z", - "contributors": [ - "schlagi123" - ] - }, - "Glossary/IndexedDB": { - "modified": "2019-03-23T22:25:48.301Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/Informationsarchitektur": { - "modified": "2019-03-18T21:18:25.933Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/Internet": { - "modified": "2019-03-23T22:09:31.438Z", - "contributors": [ - "Anonymous" - ] - }, - "Glossary/JSON": { - "modified": "2019-07-31T17:39:12.065Z", - "contributors": [ - "DavidBarke", - "Siphalor" - ] - }, - "Glossary/Jank": { - "modified": "2019-03-23T22:07:46.052Z", - "contributors": [ - "sigoa", - "janakue" - ] - }, - "Glossary/JavaScript": { - "modified": "2020-01-08T09:15:04.165Z", - "contributors": [ - "pastparty", - "sigoa", - "amelzer", - "Siphalor" - ] - }, - "Glossary/Klasse": { - "modified": "2019-03-18T21:37:57.063Z", - "contributors": [ - "duckymirror" - ] - }, - "Glossary/Konstruktor": { - "modified": "2019-03-23T22:04:35.334Z", - "contributors": [ - "klug_mario" - ] - }, - "Glossary/Leeres_Element": { - "modified": "2019-03-18T21:32:36.396Z", - "contributors": [ - "axelrindle" - ] - }, - "Glossary/Local_scope": { - "modified": "2020-04-28T14:50:32.479Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Local_variable": { - "modified": "2020-04-30T14:20:25.467Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/MIME_type": { - "modified": "2019-03-18T21:19:21.810Z", - "contributors": [ - "DoDecaDence" - ] - }, - "Glossary/Middleware": { - "modified": "2020-08-20T08:17:41.343Z", - "contributors": [ - "a962017" - ] - }, - "Glossary/Mixin": { - "modified": "2019-03-18T21:42:40.394Z", - "contributors": [ - "CennoxX" - ] - }, - "Glossary/Mozilla_Firefox": { - "modified": "2019-03-23T22:12:18.078Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/Namespace": { - "modified": "2020-04-25T11:20:23.323Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Node.js": { - "modified": "2019-03-23T22:25:53.895Z", - "contributors": [ - "GreenPepper", - "PercyGitarrist" - ] - }, - "Glossary/Null": { - "modified": "2019-01-17T01:09:59.257Z", - "contributors": [ - "GreenPepper", - "sfraenkel" - ] - }, - "Glossary/Number": { - "modified": "2019-03-23T22:12:46.665Z", - "contributors": [ - "GreenPepper", - "Siphalor" - ] - }, - "Glossary/OOP": { - "modified": "2019-03-18T21:31:39.740Z", - "contributors": [ - "CloudMaker97" - ] - }, - "Glossary/Objekt": { - "modified": "2019-03-23T22:08:37.828Z", - "contributors": [ - "LazerPhil" - ] - }, - "Glossary/Operand": { - "modified": "2020-04-28T14:20:36.934Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Operator": { - "modified": "2020-04-28T14:35:42.540Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/PHP": { - "modified": "2019-03-23T22:40:22.272Z", - "contributors": [ - "Siphalor", - "BernhardRubow" - ] - }, - "Glossary/PNG": { - "modified": "2019-03-18T21:18:26.058Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/Polyfill": { - "modified": "2019-03-18T21:18:41.266Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/Progressive_Enhancement": { - "modified": "2019-03-18T21:18:33.079Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/Protokoll": { - "modified": "2019-03-23T22:09:31.349Z", - "contributors": [ - "Anonymous" - ] - }, - "Glossary/Prototype": { - "modified": "2020-07-08T01:49:32.204Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Prototype-based_programming": { - "modified": "2020-09-20T06:51:43.983Z", - "contributors": [ - "ThomasSpornraft", - "Klingohle" - ] - }, - "Glossary/REST": { - "modified": "2019-10-21T09:12:57.318Z", - "contributors": [ - "GR_Fuchs" - ] - }, - "Glossary/RGB": { - "modified": "2019-04-04T19:03:47.057Z", - "contributors": [ - "aaarichter" - ] - }, - "Glossary/RSS": { - "modified": "2020-04-28T03:21:36.086Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Regular_expression": { - "modified": "2019-03-23T22:32:07.829Z", - "contributors": [ - "trideon3" - ] - }, - "Glossary/Repo": { - "modified": "2019-03-23T22:22:59.067Z", - "contributors": [ - "schwemmer" - ] - }, - "Glossary/Responsive_web_design": { - "modified": "2020-04-26T12:37:06.892Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Robots.txt": { - "modified": "2020-10-15T22:23:51.763Z", - "contributors": [ - "LoVo666" - ] - }, - "Glossary/SQL": { - "modified": "2019-03-18T21:39:17.726Z", - "contributors": [ - "Dieter2019" - ] - }, - "Glossary/SVG": { - "modified": "2019-03-23T22:07:22.255Z", - "contributors": [ - "Claas", - "th1nk3th" - ] - }, - "Glossary/Scope": { - "modified": "2020-08-21T16:14:18.225Z", - "contributors": [ - "steevn", - "jewuma" - ] - }, - "Glossary/Server": { - "modified": "2019-03-23T22:08:18.228Z", - "contributors": [ - "axelrindle", - "Siphalor" - ] - }, - "Glossary/Sloppy_mode": { - "modified": "2019-03-18T20:48:46.771Z", - "contributors": [ - "SebinNyshkim", - "sigoa" - ] - }, - "Glossary/Slug": { - "modified": "2020-04-25T11:40:48.940Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Specification": { - "modified": "2019-07-18T11:06:17.494Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/String": { - "modified": "2019-03-18T20:53:19.356Z", - "contributors": [ - "GreenPepper", - "Shidigital" - ] - }, - "Glossary/Symbol": { - "modified": "2019-03-23T22:34:59.987Z", - "contributors": [ - "schwemmer", - "wirmar" - ] - }, - "Glossary/TCP": { - "modified": "2019-07-16T23:18:48.078Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/TLS": { - "modified": "2019-03-18T21:46:43.987Z", - "contributors": [ - "vssn" - ] - }, - "Glossary/Tag": { - "modified": "2020-04-29T16:59:11.235Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Truthy": { - "modified": "2019-03-18T20:48:41.042Z", - "contributors": [ - "ctexxx", - "Shiryk" - ] - }, - "Glossary/Typ": { - "modified": "2020-04-04T13:54:03.839Z", - "contributors": [ - "axelrindle" - ] - }, - "Glossary/Type_Conversion": { - "modified": "2020-04-04T13:56:57.290Z", - "contributors": [ - "axelrindle" - ] - }, - "Glossary/UI": { - "modified": "2020-04-25T12:00:27.819Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/URI": { - "modified": "2019-07-05T05:49:16.810Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/URL": { - "modified": "2019-09-29T13:23:24.583Z", - "contributors": [ - "StuNNixX", - "Anonymous" - ] - }, - "Glossary/UX": { - "modified": "2019-03-18T21:18:40.937Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/User_agent": { - "modified": "2020-05-06T18:06:41.662Z", - "contributors": [ - "zuzuzu", - "Laubersheini" - ] - }, - "Glossary/Validator": { - "modified": "2020-04-29T17:05:25.109Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/Value": { - "modified": "2019-03-18T20:53:19.213Z", - "contributors": [ - "GreenPepper", - "Siphalor" - ] - }, - "Glossary/Variable": { - "modified": "2019-03-23T22:12:40.993Z", - "contributors": [ - "schlagi123", - "Siphalor" - ] - }, - "Glossary/Viewport": { - "modified": "2019-07-05T01:01:06.329Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/Visual_Viewport": { - "modified": "2019-07-05T00:40:39.361Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/VoIP": { - "modified": "2019-07-05T00:15:51.322Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Glossary/W3C": { - "modified": "2019-03-23T22:08:17.042Z", - "contributors": [ - "Johann150", - "Siphalor" - ] - }, - "Glossary/WAI": { - "modified": "2019-03-18T21:41:34.671Z", - "contributors": [ - "fhwfzfge" - ] - }, - "Glossary/WebDAV": { - "modified": "2019-07-16T22:18:47.130Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/WebRTC": { - "modified": "2020-11-06T01:48:25.235Z", - "contributors": [ - "Technikhighknee" - ] - }, - "Glossary/WebSockets": { - "modified": "2019-03-23T22:55:04.865Z", - "contributors": [ - "Siphalor", - "Clijsters", - "Nys" - ] - }, - "Glossary/Wrapper": { - "modified": "2020-04-27T17:16:28.102Z", - "contributors": [ - "Klingohle" - ] - }, - "Glossary/XML": { - "modified": "2019-03-23T22:12:27.346Z", - "contributors": [ - "duckymirror", - "Siphalor", - "PercyGitarrist" - ] - }, - "Glossary/array": { - "modified": "2019-08-22T07:09:45.701Z", - "contributors": [ - "devtarek", - "SebinNyshkim", - "Shidigital" - ] - }, - "Glossary/buffer": { - "modified": "2019-03-18T21:31:44.605Z", - "contributors": [ - "CloudMaker97" - ] - }, - "Glossary/einfache_datenelemente": { - "modified": "2019-03-23T22:46:44.221Z", - "contributors": [ - "Siphalor", - "andreas_inkoeln" - ] - }, - "Glossary/firewall": { - "modified": "2019-07-16T21:05:22.003Z", - "contributors": [ - "christianheinrichs" - ] - }, - "Glossary/gif": { - "modified": "2019-03-18T21:38:05.982Z", - "contributors": [ - "tschach", - "duckymirror" - ] - }, - "Glossary/https": { - "modified": "2019-03-18T21:37:59.410Z", - "contributors": [ - "duckymirror" - ] - }, - "Glossary/jpeg": { - "modified": "2019-03-18T21:18:26.401Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/undefined": { - "modified": "2019-03-23T22:12:50.044Z", - "contributors": [ - "Siphalor" - ] - }, - "Glossary/verbotener_header_name": { - "modified": "2019-03-23T22:03:16.612Z", - "contributors": [ - "timmyRS" - ] - }, - "Glossary/webm": { - "modified": "2019-03-18T21:18:37.955Z", - "contributors": [ - "tschach" - ] - }, - "Glossary/webp": { - "modified": "2019-03-18T21:18:22.556Z", - "contributors": [ - "tschach" - ] - }, - "Learn": { - "modified": "2020-08-11T06:37:37.645Z", - "contributors": [ - "Towdo", - "hrfischer1983", - "methodx", - "SphinxKnight", - "Shidigital", - "babylinda1973", - "sigoa", - "makobasuri", - "Ayaka", - "LeBasti", - "wittmern", - "kscarfone" - ] - }, - "Learn/Accessibility": { - "modified": "2020-07-16T22:39:56.105Z", - "contributors": [ - "lkreimann", - "Dschubba", - "marcschoeni" - ] - }, - "Learn/Accessibility/Accessibility_troubleshooting": { - "modified": "2020-07-16T22:40:34.377Z", - "contributors": [ - "marcelalmesberger" - ] - }, - "Learn/CSS": { - "modified": "2020-07-16T22:25:32.758Z", - "contributors": [ - "Johann150", - "optimus-yarnspinner" - ] - }, - "Learn/CSS/Building_blocks": { - "modified": "2020-07-16T22:28:07.153Z", - "contributors": [ - "GiovanniHD201E" - ] - }, - "Learn/CSS/Building_blocks/Organizing": { - "modified": "2020-11-22T15:02:52.846Z", - "contributors": [ - "hellschu" - ] - }, - "Learn/CSS/Building_blocks/Werten_Einheiten": { - "modified": "2020-07-16T22:28:56.210Z", - "contributors": [ - "GiovanniHD201E" - ] - }, - "Learn/CSS/CSS_layout": { - "modified": "2020-08-05T14:18:54.916Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Learn/CSS/CSS_layout/Flexbox": { - "modified": "2020-08-05T14:18:57.862Z", - "contributors": [ - "getthepoint" - ] - }, - "Learn/CSS/First_steps": { - "modified": "2020-09-03T14:11:36.912Z", - "contributors": [ - "wm75" - ] - }, - "Learn/CSS/Styling_text": { - "modified": "2020-09-05T15:36:12.926Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Learn/Common_questions": { - "modified": "2020-07-16T22:35:21.824Z" - }, - "Learn/Common_questions/Upload_files_to_a_web_server": { - "modified": "2020-07-16T22:35:41.440Z", - "contributors": [ - "christianheinrichs", - "LH-10" - ] - }, - "Learn/Common_questions/Wie_das_Internet_funktioniert": { - "modified": "2020-07-16T22:35:36.371Z", - "contributors": [ - "frankwinter", - "NetiHeft" - ] - }, - "Learn/Getting_started_with_the_web": { - "modified": "2020-11-24T12:50:40.168Z", - "contributors": [ - "FrederikWeitz", - "GiovanniHD201E", - "DavidBarke", - "PercyGitarrist", - "Dschubba", - "cookiekoenig", - "sigoa", - "Aryx", - "Shidigital", - "sbruder", - "greasan", - "d_jan" - ] - }, - "Learn/Getting_started_with_the_web/CSS_basics": { - "modified": "2020-07-16T22:34:56.746Z", - "contributors": [ - "urewig", - "jess-e-bee", - "Aryx", - "Shidigital", - "sbruder", - "AlexanderZiegler" - ] - }, - "Learn/Getting_started_with_the_web/HTML_basics": { - "modified": "2020-11-24T12:59:37.280Z", - "contributors": [ - "FrederikWeitz", - "blopesfo", - "nitramrelpmur", - "Aryx", - "Shidigital", - "sbruder", - "Bissmarc", - "AndreasL", - "dobra", - "janjo", - "maybe" - ] - }, - "Learn/Getting_started_with_the_web/Installing_basic_software": { - "modified": "2020-11-24T12:58:01.692Z", - "contributors": [ - "FrederikWeitz", - "Dschubba", - "Aryx", - "Shidigital", - "Oliver_Schafeld", - "spiotro", - "Fl0tallicA", - "d_jan" - ] - }, - "Learn/Getting_started_with_the_web/JavaScript_basis": { - "modified": "2020-07-16T22:35:08.850Z", - "contributors": [ - "jorgemontoyab", - "urewig", - "loicyondjeu", - "ilonaherr", - "SaschaHeyer", - "fxmt", - "Shidigital", - "hapeit", - "danielsimon1", - "nuracubeTranslations", - "QuaGS", - "monja-schreppel", - "Purple-Vampire" - ] - }, - "Learn/Getting_started_with_the_web/Publishing_your_website": { - "modified": "2020-07-16T22:34:23.783Z", - "contributors": [ - "KadirTopal", - "metafon", - "Shidigital" - ] - }, - "Learn/Getting_started_with_the_web/What_will_your_website_look_like": { - "modified": "2020-11-24T12:45:53.560Z", - "contributors": [ - "FrederikWeitz", - "michaelhochleitner", - "Aryx", - "Shidigital", - "Bissmarc", - "AndreasL", - "d_jan" - ] - }, - "Learn/Getting_started_with_the_web/Wie_das_Internet_funktioniert": { - "modified": "2020-07-16T22:33:59.338Z", - "contributors": [ - "Shidigital" - ] - }, - "Learn/Getting_started_with_the_web/dateien_nutzen": { - "modified": "2020-07-16T22:34:32.214Z", - "contributors": [ - "michaelhochleitner", - "Aryx", - "vosspl", - "Shidigital", - "Bissmarc", - "janjo", - "d_jan" - ] - }, - "Learn/HTML": { - "modified": "2020-07-16T22:22:15.700Z", - "contributors": [ - "sigoa", - "Shidigital", - "Christian2507", - "urshensler", - "Marlonzockt", - "Trollderim" - ] - }, - "Learn/HTML/Einführung_in_HTML": { - "modified": "2020-07-16T22:22:45.948Z", - "contributors": [ - "PercyGitarrist", - "mprofitl", - "LeifMensing", - "Shidigital" - ] - }, - "Learn/HTML/Einführung_in_HTML/Der_Kopf_Metadaten_in_HTML": { - "modified": "2020-07-16T22:23:17.212Z", - "contributors": [ - "Shidigital" - ] - }, - "Learn/HTML/Einführung_in_HTML/Document_and_website_structure": { - "modified": "2020-07-16T22:24:03.053Z", - "contributors": [ - "DiscW0rld", - "fdeberle", - "Shidigital", - "Woehe2010", - "fataly01" - ] - }, - "Learn/HTML/Einführung_in_HTML/Einfache_Textformatierung_in_HTML": { - "modified": "2020-07-16T22:23:30.695Z", - "contributors": [ - "Hofei", - "Shidigital" - ] - }, - "Learn/HTML/Einführung_in_HTML/Erstellen_von_Hyperlinks": { - "modified": "2020-07-16T22:23:43.017Z", - "contributors": [ - "Shidigital" - ] - }, - "Learn/HTML/Einführung_in_HTML/Fehlersuche_in_HTML": { - "modified": "2020-07-16T22:24:11.946Z", - "contributors": [ - "LeniTastic", - "Shidigital" - ] - }, - "Learn/HTML/Einführung_in_HTML/Fortgeschrittene_Textformatierung": { - "modified": "2020-07-16T22:23:51.933Z", - "contributors": [ - "Shidigital" - ] - }, - "Learn/HTML/Einführung_in_HTML/Lerne_HTML_kennen": { - "modified": "2020-11-19T12:58:27.172Z", - "contributors": [ - "fiji-flo", - "Kometheus", - "nitramrelpmur", - "Shidigital" - ] - }, - "Learn/HTML/Einführung_in_HTML/Marking_up_a_letter": { - "modified": "2020-07-16T22:23:11.514Z", - "contributors": [ - "DiscW0rld", - "LeniTastic", - "msifrt" - ] - }, - "Learn/HTML/Einführung_in_HTML/Structuring_a_page_of_content": { - "modified": "2020-07-16T22:24:17.990Z", - "contributors": [ - "DiscW0rld" - ] - }, - "Learn/HTML/Forms": { - "modified": "2020-07-16T22:20:54.604Z", - "contributors": [ - "Ryuno-Ki", - "PercyGitarrist", - "F.nn" - ] - }, - "Learn/HTML/Multimedia_and_embedding": { - "modified": "2020-10-08T13:45:43.288Z", - "contributors": [ - "Reinhard_Welsing", - "DiscW0rld" - ] - }, - "Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page": { - "modified": "2020-07-16T22:25:06.237Z", - "contributors": [ - "DiscW0rld" - ] - }, - "Learn/HTML/Tables": { - "modified": "2020-07-16T22:25:10.661Z", - "contributors": [ - "PercyGitarrist" - ] - }, - "Learn/HTML/Tables/Grund_tabelle_HTML": { - "modified": "2020-07-16T22:25:19.143Z", - "contributors": [ - "GiovanniHD201E" - ] - }, - "Learn/JavaScript": { - "modified": "2020-07-16T22:29:37.369Z", - "contributors": [ - "ManfredHTML", - "DrunkenTaunt" - ] - }, - "Learn/JavaScript/Bausteine": { - "modified": "2020-07-16T22:31:06.733Z", - "contributors": [ - "Osslack" - ] - }, - "Learn/JavaScript/Bausteine/Ereignisse": { - "modified": "2020-07-16T22:31:36.524Z", - "contributors": [ - "kaip-e", - "GiovanniHD201E" - ] - }, - "Learn/JavaScript/First_steps": { - "modified": "2020-07-16T22:29:48.847Z", - "contributors": [ - "CruzR", - "Elllenn" - ] - }, - "Learn/JavaScript/First_steps/Erster_Blick": { - "modified": "2020-07-16T22:30:16.778Z", - "contributors": [ - "GiovanniHD201E", - "Thomas-Zenkel" - ] - }, - "Learn/JavaScript/First_steps/Useful_string_methods": { - "modified": "2020-07-16T22:30:45.510Z", - "contributors": [ - "Mugges" - ] - }, - "Learn/JavaScript/First_steps/Variables": { - "modified": "2020-07-16T22:29:58.071Z", - "contributors": [ - "felix23.fn", - "mermolaev" - ] - }, - "Learn/JavaScript/First_steps/Was_ist_JavaScript": { - "modified": "2020-09-29T09:38:57.543Z", - "contributors": [ - "Devoryo", - "mchoeti", - "GreenPepper", - "hpawe01", - "Bissmarc", - "woiddale", - "JorisGutjahr" - ] - }, - "Learn/JavaScript/First_steps/lustige_geschichten_generator": { - "modified": "2020-07-16T22:31:00.101Z", - "contributors": [ - "Strubinator" - ] - }, - "Learn/JavaScript/Objects": { - "modified": "2020-07-16T22:31:47.973Z", - "contributors": [ - "CloudMaker97", - "Ch0coL8te" - ] - }, - "Learn/JavaScript/Objects/Basics": { - "modified": "2020-08-25T16:52:03.284Z", - "contributors": [ - "steevn", - "Timbuktu1982", - "22tcp" - ] - }, - "Learn/JavaScript/Objects/Inheritance": { - "modified": "2020-07-16T22:32:11.988Z", - "contributors": [ - "MrFootwork" - ] - }, - "Learn/JavaScript/Objects/JSON": { - "modified": "2020-07-16T22:32:24.377Z", - "contributors": [ - "MuellerRi", - "DirkMassmann" - ] - }, - "Learn/JavaScript/Objects/Object-oriented_JS": { - "modified": "2020-07-16T22:32:04.669Z", - "contributors": [ - "Timbuktu1982", - "bluefor2" - ] - }, - "Learn/JavaScript/Objects/Object_prototypes": { - "modified": "2020-07-16T22:32:18.828Z", - "contributors": [ - "Timbuktu1982" - ] - }, - "Learn/Mitarbeiten": { - "modified": "2020-07-16T22:33:42.823Z", - "contributors": [ - "SphinxKnight", - "1000eyes", - "der_rofler" - ] - }, - "Learn/Server-side": { - "modified": "2020-07-16T22:35:55.694Z", - "contributors": [ - "LeifMensing", - "PercyGitarrist" - ] - }, - "Learn/Server-side/Erste_Schritte": { - "modified": "2020-07-16T22:36:07.662Z", - "contributors": [ - "LeifMensing", - "Dschubba" - ] - }, - "Learn/Server-side/Erste_Schritte/Introduction": { - "modified": "2020-07-16T22:36:12.624Z", - "contributors": [ - "NetiHeft", - "Dschubba" - ] - }, - "Learn/Server-side/Express_Nodejs": { - "modified": "2020-07-16T22:37:51.185Z", - "contributors": [ - "Oliver_Schafeld", - "Steffen1998" - ] - }, - "Learn/Server-side/Express_Nodejs/mongoose": { - "modified": "2020-07-16T22:38:19.573Z", - "contributors": [ - "Chorris" - ] - }, - "Learn/Tools_and_testing": { - "modified": "2020-07-16T22:38:53.810Z", - "contributors": [ - "Skasi", - "alex_hammerschmied" - ] - }, - "Learn/Tools_and_testing/Cross_browser_testing": { - "modified": "2020-07-16T22:38:59.366Z", - "contributors": [ - "wbamberg" - ] - }, - "Lokalisierung": { - "modified": "2019-03-24T00:15:25.257Z", - "contributors": [ - "taralushi", - "fscholz", - "WayneSchlegel", - "DirkS", - "maik666", - "René Schwarz", - "Ak120" - ] - }, - "MDN": { - "modified": "2019-09-10T15:39:15.802Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "GeMine", - "Jeremie", - "sbarthel", - "teoli", - "fscholz", - "Sheppy" - ] - }, - "MDN/Community": { - "modified": "2019-06-15T16:58:37.273Z", - "contributors": [ - "sklicek", - "rs-github", - "wbamberg", - "BavarianMax", - "Jeremie", - "SvenSaarland", - "msebastian100", - "Stefan_hr4u" - ] - }, - "MDN/Community/Bleibe_auf_dem_Laufenden": { - "modified": "2019-03-23T23:27:28.266Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "UweDirk" - ] - }, - "MDN/Contribute": { - "modified": "2019-03-23T23:20:05.396Z", - "contributors": [ - "wbamberg", - "matze", - "sbarthel", - "Sheppy" - ] - }, - "MDN/Contribute/Feedback": { - "modified": "2020-11-28T23:34:47.349Z", - "contributors": [ - "chrisdavidmills", - "jswisher", - "SphinxKnight", - "Streamities", - "wbamberg", - "Sebastianz" - ] - }, - "MDN/Contribute/Getting_started": { - "modified": "2020-09-30T17:09:44.157Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "Kairyon", - "matze", - "sbarthel" - ] - }, - "MDN/Contribute/Howto": { - "modified": "2019-03-23T23:17:41.242Z", - "contributors": [ - "wbamberg", - "sbarthel", - "Sheppy" - ] - }, - "MDN/Contribute/Howto/Convert_code_samples_to_be_live": { - "modified": "2019-01-16T23:07:11.407Z", - "contributors": [ - "wbamberg", - "lmoench", - "Tutz" - ] - }, - "MDN/Contribute/Howto/Do_a_technical_review": { - "modified": "2019-01-16T19:26:44.220Z", - "contributors": [ - "wbamberg", - "jordylol2006", - "Sebastianz" - ] - }, - "MDN/Contribute/Howto/Do_an_editorial_review": { - "modified": "2019-01-16T19:26:12.299Z", - "contributors": [ - "wbamberg", - "sigoa", - "Sebastianz" - ] - }, - "MDN/Contribute/Howto/Document_a_CSS_property": { - "modified": "2020-02-19T18:56:54.852Z", - "contributors": [ - "jswisher", - "SphinxKnight", - "wbamberg", - "teoli" - ] - }, - "MDN/Contribute/Howto/ERstellung_eines_MDN_Profils": { - "modified": "2019-07-28T03:19:41.741Z", - "contributors": [ - "wbamberg", - "darkfeile", - "lutzip0", - "Dev201", - "jumpball", - "jogi23", - "Clonkh" - ] - }, - "MDN/Contribute/Howto/Schlagwörter_für_JavaScript_Seiten": { - "modified": "2019-01-16T21:20:05.744Z", - "contributors": [ - "wbamberg", - "hictox" - ] - }, - "MDN/Contribute/Howto/Set_the_summary_for_a_page": { - "modified": "2019-01-16T19:16:53.470Z", - "contributors": [ - "wbamberg", - "githubsvc", - "4680", - "maxsu" - ] - }, - "MDN/Contribute/Howto/Tag": { - "modified": "2019-07-04T23:25:18.289Z", - "contributors": [ - "PercyGitarrist", - "wbamberg", - "Sixl-Daniel", - "vssn", - "hictox", - "ichlebelangeweb.de", - "drillmeister", - "clone" - ] - }, - "MDN/Contribute/Localize": { - "modified": "2019-01-16T18:27:04.795Z", - "contributors": [ - "wbamberg", - "matze", - "sbarthel", - "Sheppy" - ] - }, - "MDN/Contribute/Localize/Translating_pages": { - "modified": "2019-12-08T20:42:59.132Z", - "contributors": [ - "DavidBarke", - "wbamberg", - "fhwfzfge", - "PercyGitarrist", - "yckart", - "skl", - "Jeremie", - "Econ", - "jlelse4ever", - "jokofox", - "RalphSchwarz", - "rausven24" - ] - }, - "MDN/Contribute/zu_tun_im_MDN": { - "modified": "2019-01-16T20:30:11.342Z", - "contributors": [ - "wbamberg", - "dario.bloch" - ] - }, - "MDN/Guidelines": { - "modified": "2020-09-30T15:28:44.297Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "Jeremie", - "Sheppy" - ] - }, - "MDN/Guidelines/Style_guide": { - "modified": "2020-09-30T15:28:44.875Z", - "contributors": [ - "chrisdavidmills", - "stephanduesterhoeft", - "jswisher", - "Dschubba", - "wbamberg", - "Jeremie", - "PaddyKfg", - "Montana7755" - ] - }, - "MDN/Kuma": { - "modified": "2020-04-22T10:45:47.041Z", - "contributors": [ - "clemens.klapp", - "SphinxKnight", - "wbamberg", - "JorisGutjahr", - "Jeremie", - "Sheppy" - ] - }, - "MDN/Kuma/Beheben_von_KumaScript_Fehlern": { - "modified": "2019-01-16T21:24:01.701Z", - "contributors": [ - "wbamberg", - "rolandm" - ] - }, - "MDN/Structures": { - "modified": "2020-09-30T09:04:48.225Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "SphinxKnight", - "hartmann2012" - ] - }, - "MDN/Structures/Kompatibilitaets_Tabellen": { - "modified": "2020-10-15T22:06:38.248Z", - "contributors": [ - "chrisdavidmills", - "thunderhook", - "wbamberg", - "jogemu" - ] - }, - "MDN/nutzer_leitfaden": { - "modified": "2019-03-23T22:50:19.741Z", - "contributors": [ - "wbamberg", - "jezdez", - "LeindK" - ] - }, - "MDN/Über": { - "modified": "2019-09-10T08:51:50.833Z", - "contributors": [ - "SphinxKnight", - "Streamities", - "wbamberg", - "rs-github" - ] - }, - "MDN/Über/Link_zu_MDN": { - "modified": "2019-01-17T03:01:28.772Z", - "contributors": [ - "wbamberg", - "sklicek" - ] - }, - "MDN_at_ten": { - "modified": "2019-03-23T22:49:50.216Z", - "contributors": [ - "1000eyes", - "stephaniehobson", - "Evotopid", - "Sheppy" - ] - }, - "MDN_at_ten/History_of_MDN": { - "modified": "2019-03-23T22:49:53.083Z", - "contributors": [ - "stephaniehobson", - "Sebastianz" - ] - }, - "MDN_at_ten/Zum_MDN_beitragen": { - "modified": "2020-02-19T18:50:24.408Z", - "contributors": [ - "jswisher", - "1000eyes" - ] - }, - "Mozilla": { - "modified": "2019-03-23T23:36:50.960Z", - "contributors": [ - "lucago", - "ethertank", - "ziyunfei" - ] - }, - "Mozilla/Add-ons": { - "modified": "2020-05-31T03:10:31.630Z", - "contributors": [ - "hellerdave1983", - "SphinxKnight", - "schlagi123", - "DeniseHenni", - "icarus1966", - "survivalluc", - "Trollderim", - "schenja885", - "Denise.", - "PaddyKfg", - "Croydon", - "antiphp", - "Basu8179", - "Luccie", - "ata.sah", - "Tinchen977", - "Sven2405", - "thorstochter1488", - "fscholz", - "aleks607", - "Angel", - "astoriaedde" - ] - }, - "Mozilla/Add-ons/WebExtensions": { - "modified": "2019-03-18T21:06:43.476Z", - "contributors": [ - "rs-github", - "Artist-sumo", - "SphinxKnight", - "Bodo1445", - "Clown77", - "Abro" - ] - }, - "Mozilla/Add-ons/WebExtensions/API": { - "modified": "2019-11-26T22:20:15.387Z", - "contributors": [ - "wbamberg", - "andrewtruongmoz" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/Lesezeich.": { - "modified": "2020-10-15T21:55:55.060Z", - "contributors": [ - "wbamberg", - "nw520", - "matschibatschi" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/browserAction": { - "modified": "2020-10-15T22:26:32.419Z" - }, - "Mozilla/Add-ons/WebExtensions/API/browserAction/setPopup": { - "modified": "2020-10-15T22:26:30.812Z", - "contributors": [ - "DJM" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/commands": { - "modified": "2020-10-15T22:08:08.658Z", - "contributors": [ - "wbamberg", - "Sorbzilla" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/downloads": { - "modified": "2020-10-15T22:18:21.095Z", - "contributors": [ - "ErichWilli" - ] - }, - "Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension": { - "modified": "2019-03-18T21:02:49.105Z", - "contributors": [ - "Asozialist" - ] - }, - "Mozilla/Add-ons/WebExtensions/Arbeiten_mit_Taps_API": { - "modified": "2019-06-11T16:28:12.442Z", - "contributors": [ - "Patrick5555" - ] - }, - "Mozilla/Add-ons/WebExtensions/Beispiele": { - "modified": "2019-03-18T21:04:08.698Z", - "contributors": [ - "StefanM" - ] - }, - "Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs": { - "modified": "2020-10-15T20:55:14.782Z", - "contributors": [ - "frido1973" - ] - }, - "Mozilla/Add-ons/WebExtensions/Deine_erste_WebErweiterung": { - "modified": "2019-07-04T07:03:49.181Z", - "contributors": [ - "trych", - "SyntaxCacao", - "HillOTech", - "Asozialist", - "twizzz", - "serv-inc", - "Draphar", - "flosommerfeld" - ] - }, - "Mozilla/Add-ons/WebExtensions/Deine_zweite_Erweiterung": { - "modified": "2019-07-04T06:11:16.199Z", - "contributors": [ - "trych", - "Draphar" - ] - }, - "Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools": { - "modified": "2019-10-28T22:25:20.040Z", - "contributors": [ - "LoVo666" - ] - }, - "Mozilla/Add-ons/WebExtensions/Match_patterns": { - "modified": "2020-10-15T22:26:32.716Z", - "contributors": [ - "gyz678" - ] - }, - "Mozilla/Add-ons/WebExtensions/What_are_WebExtensions": { - "modified": "2019-03-18T21:06:04.054Z", - "contributors": [ - "Asozialist", - "SphinxKnight", - "Sebastianz", - "Artist-sumo", - "Stefanius67" - ] - }, - "Mozilla/Add-ons/WebExtensions/manifest.json": { - "modified": "2020-10-15T21:57:12.603Z", - "contributors": [ - "RaspberryPiFan", - "wbamberg", - "DaysieDuck", - "andrewtruongmoz" - ] - }, - "Mozilla/Add-ons/WebExtensions/manifest.json/commands": { - "modified": "2020-10-15T22:08:08.705Z", - "contributors": [ - "wbamberg", - "Sorbzilla" - ] - }, - "Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page": { - "modified": "2020-10-15T21:57:09.587Z", - "contributors": [ - "wbamberg", - "modding-dreams" - ] - }, - "Mozilla/Add-ons/WebExtensions/manifest.json/theme": { - "modified": "2020-10-15T22:32:55.534Z", - "contributors": [ - "zogger" - ] - }, - "Mozilla/Developer_guide": { - "modified": "2019-03-24T00:04:47.887Z", - "contributors": [ - "chrisdavidmills", - "SJW", - "tessarakt3", - "fscholz", - "Lukas Skywalker", - "Jules Papillon", - "Ak120", - "PowerToaster" - ] - }, - "Mozilla/Developer_guide/Quelltexte": { - "modified": "2019-03-24T00:04:33.890Z", - "contributors": [ - "chrisdavidmills", - "fscholz", - "Anonymous", - "gamemaster7riesen" - ] - }, - "Mozilla/Developer_guide/firefox_erfolgreich_erstellt": { - "modified": "2019-03-23T22:13:23.971Z", - "contributors": [ - "chrisdavidmills", - "friedger" - ] - }, - "Mozilla/Firefox": { - "modified": "2020-01-18T12:42:37.514Z", - "contributors": [ - "leela52452", - "SphinxKnight", - "wbamberg", - "dario.bloch", - "Chrisgamma", - "loki", - "fscholz", - "LarsS", - "pollti", - "Timmi" - ] - }, - "Mozilla/Firefox/Releases": { - "modified": "2019-03-23T23:27:18.715Z", - "contributors": [ - "wbamberg", - "ziyunfei" - ] - }, - "Mozilla/Firefox/Releases/16": { - "modified": "2019-03-23T23:24:48.916Z", - "contributors": [ - "wbamberg", - "mrstork", - "Micky261" - ] - }, - "Mozilla/Firefox/Releases/27": { - "modified": "2019-03-23T23:24:54.141Z", - "contributors": [ - "wbamberg", - "globalavocado", - "schlagi123", - "Micky261" - ] - }, - "Mozilla/Firefox/Releases/28": { - "modified": "2019-03-18T21:31:27.153Z", - "contributors": [ - "globalavocado" - ] - }, - "Mozilla/Firefox/Releases/3.6": { - "modified": "2019-12-13T20:33:15.876Z", - "contributors": [ - "wbamberg", - "SphinxKnight", - "Timmi" - ] - }, - "Mozilla/Firefox/Releases/34": { - "modified": "2019-03-23T23:08:51.454Z", - "contributors": [ - "wbamberg", - "schlagi123", - "barning" - ] - }, - "Mozilla/Firefox/Releases/47": { - "modified": "2019-03-23T22:30:31.890Z", - "contributors": [ - "wbamberg", - "kdex", - "Schwarzer-Bob" - ] - }, - "Mozilla/Firefox/Releases/5": { - "modified": "2020-11-20T04:48:59.432Z", - "contributors": [ - "wbamberg" - ] - }, - "Mozilla/Firefox/Releases/56": { - "modified": "2019-03-23T22:08:20.554Z", - "contributors": [ - "wbamberg", - "equakaralad04" - ] - }, - "Mozilla/Firefox/Releases/57": { - "modified": "2019-03-23T22:07:56.031Z", - "contributors": [ - "wbamberg", - "equakaralad04" - ] - }, - "Mozilla/Firefox/Releases/58": { - "modified": "2019-03-23T22:02:48.354Z", - "contributors": [ - "wbamberg", - "FredIde" - ] - }, - "Mozilla/Firefox/Releases/60": { - "modified": "2019-03-18T21:37:55.301Z", - "contributors": [ - "wbamberg", - "mario.p" - ] - }, - "Mozilla/Firefox/Releases/68": { - "modified": "2019-06-21T08:05:41.440Z", - "contributors": [ - "Conzz" - ] - }, - "OpenSearch_Plugin_für_Firefox_erstellen": { - "modified": "2019-03-24T00:04:54.552Z", - "contributors": [ - "fscholz", - "Lexhawkins" - ] - }, - "Plugins/Flash-Aktivierung:_Browser-Vergleich": { - "modified": "2019-03-23T22:03:23.868Z", - "contributors": [ - "Artist-sumo", - "Sheppy", - "HoLuLuLu" - ] - }, - "Tools": { - "modified": "2020-07-16T22:44:14.027Z", - "contributors": [ - "SphinxKnight", - "schlampa7", - "marcaltmann", - "wbamberg", - "rugk", - "maximelore", - "Artist-sumo", - "devSchnitzel", - "alberts+", - "suriyaa", - "TRoskop", - "Langer39", - "VJSchneid", - "Tim_Lehmann", - "sympatovit", - "fscholz", - "teoli", - "Jolo", - "Mozilla-fan", - "snopy234", - "AlexPl" - ] - }, - "Tools/3D_untersuchung": { - "modified": "2020-07-16T22:34:25.058Z", - "contributors": [ - "wbamberg", - "pollti", - "SJW" - ] - }, - "Tools/Add-ons": { - "modified": "2020-07-16T22:36:23.223Z", - "contributors": [ - "wbamberg", - "mfluehr" - ] - }, - "Tools/Barrierefreiheits_inspektor": { - "modified": "2020-07-16T22:36:39.466Z", - "contributors": [ - "hrfischer1983", - "hellschu" - ] - }, - "Tools/Browser_Console": { - "modified": "2020-07-16T22:35:42.070Z", - "contributors": [ - "wbamberg", - "atze79" - ] - }, - "Tools/Browser_Werkzeuge": { - "modified": "2020-07-16T22:35:55.309Z", - "contributors": [ - "wbamberg", - "res60", - "Dev_Falko", - "Microgamer" - ] - }, - "Tools/Debugger": { - "modified": "2020-07-16T22:35:04.001Z", - "contributors": [ - "jewuma", - "wbamberg", - "Andi21", - "achimbode", - "Nostra", - "fscholz", - "Hecky77", - "AngelSankturio", - "isoewa", - "hexefatale" - ] - }, - "Tools/Debugger/How_to": { - "modified": "2020-07-16T22:35:07.165Z", - "contributors": [ - "wbamberg" - ] - }, - "Tools/Debugger/How_to/Open_the_debugger": { - "modified": "2020-07-16T22:35:08.927Z", - "contributors": [ - "Drachenfrucht1" - ] - }, - "Tools/Debugger/How_to/Use_a_source_map": { - "modified": "2020-07-16T22:35:12.233Z", - "contributors": [ - "flyhighmartin" - ] - }, - "Tools/Debugger/Source_map_errors": { - "modified": "2020-07-16T22:35:19.061Z", - "contributors": [ - "clemens.klapp" - ] - }, - "Tools/Firefox_OS_1.1_Simulator": { - "modified": "2020-07-16T22:35:57.569Z", - "contributors": [ - "wbamberg", - "aquorange", - "MaleCat", - "Kbaby", - "Andi85er", - "AngelSankturio" - ] - }, - "Tools/Index": { - "modified": "2020-07-16T22:36:02.468Z", - "contributors": [ - "wbamberg", - "fscholz" - ] - }, - "Tools/JSON_viewer": { - "modified": "2020-07-16T22:36:31.343Z", - "contributors": [ - "tobiasdegen" - ] - }, - "Tools/Keyboard_shortcuts": { - "modified": "2020-07-16T22:35:45.057Z", - "contributors": [ - "Djfe", - "wbamberg", - "robert7k", - "maybe", - "mkohler", - "Coce" - ] - }, - "Tools/Page_Inspector/How_to": { - "modified": "2020-07-16T22:34:30.881Z", - "contributors": [ - "GiovanniHD201E", - "wbamberg", - "sidgan" - ] - }, - "Tools/Page_Inspector/How_to/Event_Listener_untersuchen": { - "modified": "2020-07-16T22:34:35.556Z", - "contributors": [ - "wbamberg", - "Sebastianz" - ] - }, - "Tools/Page_Inspector/How_to/Raster_Layout_untersuchen": { - "modified": "2020-07-16T22:34:46.944Z", - "contributors": [ - "oolong32", - "wbamberg", - "Micky261" - ] - }, - "Tools/Page_Inspector/How_to/Schriftarten_Bearbeitung": { - "modified": "2020-08-13T20:23:50.743Z", - "contributors": [ - "cama240601", - "GiovanniHD201E" - ] - }, - "Tools/Paint_Flashing_Tool": { - "modified": "2020-07-16T22:35:43.400Z", - "contributors": [ - "wbamberg", - "marioszymanski", - "dawide2010" - ] - }, - "Tools/Performance": { - "modified": "2020-07-16T22:36:12.453Z", - "contributors": [ - "SebinNyshkim", - "wbamberg", - "hackbart" - ] - }, - "Tools/Remote_Debugging": { - "modified": "2020-07-16T22:35:37.082Z", - "contributors": [ - "wbamberg", - "Micky261", - "Ilka25", - "Zander29", - "Coerlin-C-83", - "fscholz", - "mkohler", - "cube1988", - "Allie71", - "eedenharter" - ] - }, - "Tools/Remote_Debugging/Debugging_Firefox_Desktop": { - "modified": "2020-10-11T07:49:13.330Z", - "contributors": [ - "kateBorderline" - ] - }, - "Tools/Remote_Debugging/Firefox_for_Android": { - "modified": "2020-07-16T22:35:38.869Z", - "contributors": [ - "wbamberg", - "EikeKre", - "mkohler", - "popeye007" - ] - }, - "Tools/Seiten_Inspektor": { - "modified": "2020-07-16T22:34:26.882Z", - "contributors": [ - "wbamberg", - "maybe", - "mozjan", - "One", - "MikeWalde", - "libelle17" - ] - }, - "Tools/Seiten_Inspektor/Tastenkombinationen": { - "modified": "2020-07-16T22:34:50.445Z", - "contributors": [ - "GiovanniHD201E" - ] - }, - "Tools/Shader-Editor": { - "modified": "2020-07-16T22:35:54.224Z", - "contributors": [ - "wbamberg", - "olhaar", - "cgtom" - ] - }, - "Tools/Storage_Inspector": { - "modified": "2020-07-16T22:36:09.538Z", - "contributors": [ - "hennr", - "Borgitowner", - "Nuzoo" - ] - }, - "Tools/Storage_Inspector/Cache_Storage": { - "modified": "2020-07-16T22:36:11.182Z", - "contributors": [ - "ColadaMDNWebDocs" - ] - }, - "Tools/Storage_Inspector/Cookies": { - "modified": "2020-12-04T12:52:15.534Z", - "contributors": [ - "MDN_David", - "ColadaMDNWebDocs" - ] - }, - "Tools/Storage_Inspector/IndexedDB": { - "modified": "2020-07-16T22:36:11.541Z", - "contributors": [ - "ColadaMDNWebDocs" - ] - }, - "Tools/Storage_Inspector/Local_Storage_Session_Storage": { - "modified": "2020-07-16T22:36:11.347Z", - "contributors": [ - "ColadaMDNWebDocs" - ] - }, - "Tools/Style_Editor": { - "modified": "2020-07-16T22:34:59.759Z", - "contributors": [ - "hellschu", - "wbamberg", - "maba001", - "maybe", - "Kbaby", - "fscholz", - "Helmcke42" - ] - }, - "Tools/WebIDE_clone": { - "modified": "2019-03-23T23:03:21.499Z", - "contributors": [ - "wbamberg", - "VJSchneid", - "maybe", - "AARADEANCA" - ] - }, - "Tools/Web_Konsole": { - "modified": "2020-07-16T22:34:04.628Z", - "contributors": [ - "Loilo", - "SphinxKnight", - "talikanews", - "wbamberg", - "realsplatscream", - "kleinegnomfee", - "maybe", - "PsychoMg", - "mozjan" - ] - }, - "Tools/Web_Konsole/Hilfe": { - "modified": "2020-07-16T22:34:11.469Z", - "contributors": [ - "wbamberg", - "AlexFunk", - "mherczegh" - ] - }, - "Tools/about:debugging": { - "modified": "2020-08-16T17:45:15.524Z", - "contributors": [ - "papacemal" - ] - }, - "Tools/bildschirmgroessen-testen": { - "modified": "2020-07-16T22:35:21.080Z", - "contributors": [ - "wbamberg", - "mozjan" - ] - }, - "Tools/netzwerkanalyse": { - "modified": "2020-07-16T22:35:29.556Z", - "contributors": [ - "wbamberg", - "ThomasLendo" - ] - }, - "Updating_web_applications_for_Firefox_3": { - "modified": "2019-03-24T00:04:30.175Z", - "contributors": [ - "wbamberg", - "Sheppy", - "fscholz", - "niels" - ] - }, - "Web": { - "modified": "2019-09-19T09:01:12.041Z", - "contributors": [ - "GanJix91", - "tirein", - "Ninomilani", - "schlagi123", - "Beder3004", - "Simix2017", - "AxelK", - "ascii4rt", - "axelrindle", - "sbarthel", - "j.bjbb", - "Pascal", - "petzichen", - "Sheppy" - ] - }, - "Web/API": { - "modified": "2019-03-23T23:27:33.499Z", - "contributors": [ - "schlagi123", - "jswisher", - "TheNT87", - "Novo1987", - "inselmensch", - "ethertank" - ] - }, - "Web/API/AesCbcParams": { - "modified": "2019-06-14T14:42:07.860Z", - "contributors": [ - "1siegi" - ] - }, - "Web/API/AnimationEvent": { - "modified": "2019-03-23T22:44:28.627Z", - "contributors": [ - "fscholz", - "teoli", - "Sheppy" - ] - }, - "Web/API/AudioContext": { - "modified": "2019-03-23T22:41:23.906Z", - "contributors": [ - "suedsaft", - "mwalter" - ] - }, - "Web/API/AudioContext/decodeAudioData": { - "modified": "2019-03-23T22:38:20.001Z", - "contributors": [ - "Thalhammer" - ] - }, - "Web/API/AudioDestinationNode": { - "modified": "2019-03-23T22:30:19.717Z", - "contributors": [ - "fl1p" - ] - }, - "Web/API/AudioNode": { - "modified": "2019-03-23T22:29:50.278Z", - "contributors": [ - "fl1p" - ] - }, - "Web/API/AudioTrack": { - "modified": "2020-10-15T22:12:54.347Z", - "contributors": [ - "Germling" - ] - }, - "Web/API/Battery_Status_API": { - "modified": "2020-10-15T22:19:51.134Z", - "contributors": [ - "1siegi" - ] - }, - "Web/API/Blob": { - "modified": "2019-03-23T23:01:44.965Z", - "contributors": [ - "Anonymous", - "XChrome", - "HendrikRunte", - "manni66", - "omniskop", - "fscholz" - ] - }, - "Web/API/Body": { - "modified": "2020-10-15T22:15:22.404Z", - "contributors": [ - "fmeyertoens" - ] - }, - "Web/API/Body/arrayBuffer": { - "modified": "2020-10-15T22:15:22.326Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/Body/blob": { - "modified": "2020-10-15T22:15:22.311Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/Body/body": { - "modified": "2020-10-15T22:15:22.169Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/Body/bodyUsed": { - "modified": "2020-10-15T22:15:22.317Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/Body/formData": { - "modified": "2020-10-15T22:15:22.274Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/Body/json": { - "modified": "2020-10-15T22:15:23.782Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/Body/text": { - "modified": "2020-10-15T22:15:23.627Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/CSS": { - "modified": "2020-10-15T22:34:59.314Z", - "contributors": [ - "Wind1808" - ] - }, - "Web/API/CSS/escape": { - "modified": "2020-10-15T22:34:58.253Z", - "contributors": [ - "vssn" - ] - }, - "Web/API/CSSMediaRule": { - "modified": "2019-03-23T22:44:07.681Z", - "contributors": [ - "Sebastianz", - "HenryZeitler" - ] - }, - "Web/API/CSSPageRule": { - "modified": "2019-03-23T23:10:58.894Z", - "contributors": [ - "fscholz", - "Sebastianz" - ] - }, - "Web/API/CSSRule": { - "modified": "2019-03-23T23:01:40.917Z", - "contributors": [ - "fscholz" - ] - }, - "Web/API/CSSRule/cssText": { - "modified": "2019-03-23T23:11:11.321Z", - "contributors": [ - "fscholz", - "Sebastianz" - ] - }, - "Web/API/CSS_Painting_API": { - "modified": "2020-11-24T15:05:28.361Z", - "contributors": [ - "estelle" - ] - }, - "Web/API/CSS_Painting_API/Guide": { - "modified": "2020-11-28T04:24:11.006Z", - "contributors": [ - "FrederikWeitz" - ] - }, - "Web/API/Cache": { - "modified": "2019-03-23T22:25:01.147Z", - "contributors": [ - "jpmedley" - ] - }, - "Web/API/Cache/add": { - "modified": "2020-10-15T22:26:45.761Z", - "contributors": [ - "lucas-walter" - ] - }, - "Web/API/Cache/addAll": { - "modified": "2019-03-23T22:25:02.546Z", - "contributors": [ - "ChrisEbner" - ] - }, - "Web/API/CanvasRenderingContext2D": { - "modified": "2020-10-15T21:35:31.419Z", - "contributors": [ - "Dschubba", - "ksm2", - "Aloso", - "aisnjo" - ] - }, - "Web/API/CanvasRenderingContext2D/canvas": { - "modified": "2020-10-15T22:34:43.014Z", - "contributors": [ - "PlumChaos" - ] - }, - "Web/API/CanvasRenderingContext2D/fillRect": { - "modified": "2019-03-23T22:46:53.534Z", - "contributors": [ - "marco-a", - "t.krapp" - ] - }, - "Web/API/CanvasRenderingContext2D/getImageData": { - "modified": "2019-03-23T22:18:42.586Z", - "contributors": [ - "modev" - ] - }, - "Web/API/CanvasRenderingContext2D/isPointInPath": { - "modified": "2019-03-23T22:41:50.769Z", - "contributors": [ - "obama" - ] - }, - "Web/API/CanvasRenderingContext2D/scale": { - "modified": "2019-03-18T21:47:04.467Z", - "contributors": [ - "SimonBuxx" - ] - }, - "Web/API/CanvasRenderingContext2D/setLineDash": { - "modified": "2019-01-17T00:14:20.097Z", - "contributors": [ - "Xenoage" - ] - }, - "Web/API/CanvasRenderingContext2D/textAlign": { - "modified": "2020-10-15T22:05:18.597Z", - "contributors": [ - "marco-a" - ] - }, - "Web/API/ChildNode": { - "modified": "2019-03-23T22:06:18.037Z", - "contributors": [ - "stevenwdv" - ] - }, - "Web/API/ChildNode/remove": { - "modified": "2020-10-15T22:05:03.102Z", - "contributors": [ - "sv3m0r" - ] - }, - "Web/API/Console": { - "modified": "2020-10-15T21:47:34.377Z", - "contributors": [ - "SebinNyshkim", - "Claas", - "nilsding" - ] - }, - "Web/API/Console/assert": { - "modified": "2020-10-15T21:53:31.494Z", - "contributors": [ - "SebinNyshkim", - "amlang" - ] - }, - "Web/API/Console/clear": { - "modified": "2020-10-15T22:03:59.269Z", - "contributors": [ - "SebinNyshkim", - "Claas" - ] - }, - "Web/API/Console/count": { - "modified": "2020-10-15T22:03:54.713Z", - "contributors": [ - "SebinNyshkim", - "Claas" - ] - }, - "Web/API/Console/debug": { - "modified": "2020-10-15T22:15:25.961Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/Console/dir": { - "modified": "2020-10-15T21:47:32.910Z", - "contributors": [ - "SebinNyshkim", - "fl1p" - ] - }, - "Web/API/Console/log": { - "modified": "2019-03-18T21:45:58.072Z", - "contributors": [ - "mikoMK" - ] - }, - "Web/API/Console/table": { - "modified": "2019-03-23T22:03:53.765Z", - "contributors": [ - "jewuma" - ] - }, - "Web/API/Console/time": { - "modified": "2020-10-15T22:15:52.847Z", - "contributors": [ - "Drachenfrucht1" - ] - }, - "Web/API/Console/timeEnd": { - "modified": "2020-10-15T22:15:53.315Z", - "contributors": [ - "Drachenfrucht1" - ] - }, - "Web/API/Console/warn": { - "modified": "2019-03-23T22:22:21.546Z", - "contributors": [ - "occcy" - ] - }, - "Web/API/Crypto": { - "modified": "2020-10-15T22:16:58.486Z", - "contributors": [ - "MonsieurLeSuisse" - ] - }, - "Web/API/CustomElementRegistry": { - "modified": "2020-10-15T22:22:33.015Z" - }, - "Web/API/CustomElementRegistry/define": { - "modified": "2020-10-15T22:22:28.920Z", - "contributors": [ - "vssn" - ] - }, - "Web/API/DOMError": { - "modified": "2019-03-23T22:50:32.748Z", - "contributors": [ - "MatthiasRubin" - ] - }, - "Web/API/DOMParser": { - "modified": "2019-03-31T11:19:33.896Z", - "contributors": [ - "flying-sheep", - "michaeljaekel", - "wskc", - "pinguin0815" - ] - }, - "Web/API/DOMString": { - "modified": "2019-06-02T12:14:00.624Z", - "contributors": [ - "RAnders00", - "rkeller1" - ] - }, - "Web/API/DOMTokenList": { - "modified": "2019-03-18T20:54:26.903Z", - "contributors": [ - "WaldemarEnns", - "StevenS77" - ] - }, - "Web/API/DOMTokenList/add": { - "modified": "2020-10-15T22:14:47.337Z", - "contributors": [ - "WaldemarEnns" - ] - }, - "Web/API/DedicatedWorkerGlobalScope": { - "modified": "2020-10-15T22:07:36.059Z", - "contributors": [ - "Jonafran" - ] - }, - "Web/API/DedicatedWorkerGlobalScope/message_event": { - "modified": "2020-10-15T22:30:43.733Z", - "contributors": [ - "peterneverland" - ] - }, - "Web/API/Document": { - "modified": "2020-10-21T11:20:23.142Z", - "contributors": [ - "MooMoo1971", - "wif10", - "fscholz", - "khalid32", - "Crash" - ] - }, - "Web/API/Document/Document": { - "modified": "2020-12-03T12:10:02.784Z", - "contributors": [ - "Gismo1337" - ] - }, - "Web/API/Document/URL": { - "modified": "2019-03-18T21:19:32.388Z", - "contributors": [ - "termoyer" - ] - }, - "Web/API/Document/adoptNode": { - "modified": "2019-03-23T22:05:48.291Z", - "contributors": [ - "wbamberg", - "amelzer" - ] - }, - "Web/API/Document/alinkColor": { - "modified": "2020-10-15T22:00:36.438Z", - "contributors": [ - "SphinxKnight", - "MuellerRi" - ] - }, - "Web/API/Document/body": { - "modified": "2019-03-18T21:43:52.106Z", - "contributors": [ - "Maugo", - "MuellerRi" - ] - }, - "Web/API/Document/createAttribute": { - "modified": "2019-03-23T22:44:53.939Z", - "contributors": [ - "frhd" - ] - }, - "Web/API/Document/createDocumentFragment": { - "modified": "2019-08-29T05:25:49.142Z", - "contributors": [ - "mwallnoefer", - "n4nos", - "dennissterzenbach" - ] - }, - "Web/API/Document/createElement": { - "modified": "2020-10-15T21:21:30.716Z", - "contributors": [ - "Ryuno-Ki", - "Lyian", - "Johann150", - "jakobpack", - "StevenS77", - "Johann", - "fscholz", - "jsx", - "MikeSierra" - ] - }, - "Web/API/Document/createElementNS": { - "modified": "2019-03-23T22:05:31.821Z", - "contributors": [ - "Univream", - "mrm2m" - ] - }, - "Web/API/Document/createTextNode": { - "modified": "2019-03-23T22:13:09.431Z", - "contributors": [ - "R-Steffens" - ] - }, - "Web/API/Document/createTreeWalker": { - "modified": "2019-03-18T21:15:37.770Z", - "contributors": [ - "bbarnickel" - ] - }, - "Web/API/Document/dir": { - "modified": "2019-03-23T22:16:28.287Z", - "contributors": [ - "StevenS77" - ] - }, - "Web/API/Document/documentElement": { - "modified": "2019-03-23T23:10:21.581Z", - "contributors": [ - "Padarom", - "clemenshelm", - "kensanata", - "Okimoka", - "fscholz", - "Hasilt", - "conradk" - ] - }, - "Web/API/Document/fullscreenchange_event": { - "modified": "2019-03-23T21:59:50.017Z", - "contributors": [ - "irenesmith", - "fscholz", - "axelrindle" - ] - }, - "Web/API/Document/getElementById": { - "modified": "2019-03-23T22:48:39.836Z", - "contributors": [ - "helmrich" - ] - }, - "Web/API/Document/getElementsByClassName": { - "modified": "2019-03-23T22:39:59.051Z", - "contributors": [ - "Ctwx" - ] - }, - "Web/API/Document/head": { - "modified": "2020-10-15T22:05:22.313Z", - "contributors": [ - "Maugo" - ] - }, - "Web/API/Document/importNode": { - "modified": "2020-10-15T21:56:58.261Z", - "contributors": [ - "fscholz", - "wbamberg", - "amelzer" - ] - }, - "Web/API/Document/querySelector": { - "modified": "2020-10-15T21:34:44.215Z", - "contributors": [ - "SebinNyshkim", - "StevenS77", - "Xan2063", - "rillig", - "cqcumber" - ] - }, - "Web/API/Document/querySelectorAll": { - "modified": "2020-10-15T21:36:31.203Z", - "contributors": [ - "Cerberooo", - "SebinNyshkim", - "basteyy" - ] - }, - "Web/API/Document/readyState": { - "modified": "2019-03-23T22:50:12.472Z", - "contributors": [ - "mdnde", - "NHoeller", - "felixbarny" - ] - }, - "Web/API/Document/referrer": { - "modified": "2020-10-15T22:05:23.720Z", - "contributors": [ - "ssgl", - "Maugo" - ] - }, - "Web/API/Document/registerElement": { - "modified": "2019-03-23T22:05:54.510Z", - "contributors": [ - "istvank", - "amelzer" - ] - }, - "Web/API/Document/title": { - "modified": "2020-10-15T22:30:18.787Z", - "contributors": [ - "dmitrijkiltau" - ] - }, - "Web/API/Document/width": { - "modified": "2019-03-18T21:44:04.786Z", - "contributors": [ - "MuellerRi" - ] - }, - "Web/API/Document/write": { - "modified": "2019-03-18T21:40:02.182Z", - "contributors": [ - "Johann150", - "AlexWayhill" - ] - }, - "Web/API/Document/writeln": { - "modified": "2020-11-13T09:58:09.106Z", - "contributors": [ - "sklicek" - ] - }, - "Web/API/DocumentFragment": { - "modified": "2019-03-23T22:08:16.482Z", - "contributors": [ - "dennissterzenbach" - ] - }, - "Web/API/DragEvent": { - "modified": "2019-03-23T22:49:37.460Z", - "contributors": [ - "fscholz", - "ulrobin" - ] - }, - "Web/API/Element": { - "modified": "2019-03-18T21:09:00.608Z", - "contributors": [ - "fscholz", - "jsx", - "Crash" - ] - }, - "Web/API/Element/classList": { - "modified": "2020-08-13T04:39:26.061Z", - "contributors": [ - "andi-hda", - "lupus92", - "GuidoJansen", - "macjohnny", - "ygoe", - "Heblkraft", - "StevenS77" - ] - }, - "Web/API/Element/className": { - "modified": "2019-03-18T21:37:02.027Z", - "contributors": [ - "BamBamXXL", - "Frexeptabel" - ] - }, - "Web/API/Element/getBoundingClientRect": { - "modified": "2020-10-15T21:37:23.206Z", - "contributors": [ - "napengam", - "SphinxKnight", - "phlmn", - "screeny05", - "giffeler", - "danieldiekmeier", - "jens-duttke", - "ohlupo" - ] - }, - "Web/API/Element/hasAttribute": { - "modified": "2019-03-23T22:09:30.403Z", - "contributors": [ - "JhonnyJason" - ] - }, - "Web/API/Element/innerHTML": { - "modified": "2020-10-15T21:48:27.953Z", - "contributors": [ - "SebinNyshkim", - "SphinxKnight", - "StevenS77", - "sfraenkel" - ] - }, - "Web/API/Element/insertAdjacentHTML": { - "modified": "2019-03-23T22:07:41.635Z", - "contributors": [ - "Oliver_Schafeld" - ] - }, - "Web/API/Element/querySelector": { - "modified": "2019-03-23T23:07:46.285Z", - "contributors": [ - "Wombosvideo", - "fscholz", - "NikxDa" - ] - }, - "Web/API/Element/querySelectorAll": { - "modified": "2019-05-03T00:57:19.062Z", - "contributors": [ - "wbamberg", - "Wombosvideo" - ] - }, - "Web/API/Element/removeAttribute": { - "modified": "2019-03-23T22:56:58.413Z", - "contributors": [ - "Harleqin" - ] - }, - "Web/API/Element/requestFullScreen": { - "modified": "2019-03-23T22:03:55.933Z", - "contributors": [ - "axelrindle" - ] - }, - "Web/API/Element/scrollIntoView": { - "modified": "2020-10-15T21:45:57.703Z", - "contributors": [ - "webwelten", - "movedoa", - "denssle", - "petacat" - ] - }, - "Web/API/Element/scrollLeft": { - "modified": "2020-10-15T21:53:34.546Z", - "contributors": [ - "SphinxKnight", - "floheller" - ] - }, - "Web/API/Element/scrollWidth": { - "modified": "2020-10-15T21:37:53.393Z", - "contributors": [ - "SphinxKnight", - "ureimers" - ] - }, - "Web/API/Element/setAttribute": { - "modified": "2019-03-23T22:57:40.120Z", - "contributors": [ - "mw76", - "ConnyOnny" - ] - }, - "Web/API/Event": { - "modified": "2020-02-29T22:13:32.369Z", - "contributors": [ - "HeroicKatora", - "rpozarickij" - ] - }, - "Web/API/Event/Event": { - "modified": "2020-10-15T21:56:14.330Z", - "contributors": [ - "fscholz", - "Sharian" - ] - }, - "Web/API/Event/bubbles": { - "modified": "2019-03-23T22:07:43.481Z", - "contributors": [ - "Sharian" - ] - }, - "Web/API/EventListener": { - "modified": "2019-03-23T22:39:43.594Z", - "contributors": [ - "skanne", - "StevenS77", - "Ctwx" - ] - }, - "Web/API/EventSource": { - "modified": "2019-09-20T07:55:13.564Z", - "contributors": [ - "Locour", - "nexus511" - ] - }, - "Web/API/EventTarget": { - "modified": "2019-03-23T22:15:39.970Z", - "contributors": [ - "kamoroso94" - ] - }, - "Web/API/FederatedCredential": { - "modified": "2019-03-23T22:07:15.338Z", - "contributors": [ - "amelzer" - ] - }, - "Web/API/Fetch_API": { - "modified": "2020-10-15T22:15:21.740Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/File": { - "modified": "2019-03-23T23:01:44.475Z", - "contributors": [ - "marjot", - "fscholz" - ] - }, - "Web/API/File/Typ": { - "modified": "2020-10-15T22:20:09.678Z", - "contributors": [ - "sklicek" - ] - }, - "Web/API/File/Zugriff_auf_Dateien_von_Webapplikationen": { - "modified": "2019-03-18T20:49:17.436Z", - "contributors": [ - "Holger.Persch", - "MatthiasApsel", - "gunnarbittersmann", - "chrisdavidmills", - "icy", - "matschu" - ] - }, - "Web/API/File/fileName": { - "modified": "2019-03-23T23:33:53.570Z", - "contributors": [ - "fscholz", - "nothine" - ] - }, - "Web/API/File/fileSize": { - "modified": "2019-03-23T23:33:53.208Z", - "contributors": [ - "fscholz", - "nothine" - ] - }, - "Web/API/File/getAsText": { - "modified": "2019-03-23T23:33:47.440Z", - "contributors": [ - "fscholz", - "nothine" - ] - }, - "Web/API/File/name": { - "modified": "2019-03-23T23:33:48.935Z", - "contributors": [ - "rehne93", - "fscholz", - "nothine" - ] - }, - "Web/API/FileReader": { - "modified": "2019-03-23T22:50:30.774Z", - "contributors": [ - "migg24", - "S0mmerD", - "nlang", - "MatthiasRubin" - ] - }, - "Web/API/FileReader/onload": { - "modified": "2019-03-23T22:41:15.437Z", - "contributors": [ - "rehne93", - "Stoffo" - ] - }, - "Web/API/FormData": { - "modified": "2020-10-15T21:49:26.043Z", - "contributors": [ - "kaljak", - "niorad", - "amelzer", - "Craeckerffm", - "ageiss", - "julidau" - ] - }, - "Web/API/FormData/FormData": { - "modified": "2019-03-23T22:15:29.095Z", - "contributors": [ - "DenisSabo", - "Xerus" - ] - }, - "Web/API/FormData/get": { - "modified": "2019-03-23T22:14:12.132Z", - "contributors": [ - "ageiss" - ] - }, - "Web/API/FormData/getAll": { - "modified": "2020-10-15T22:14:40.601Z", - "contributors": [ - "marjot" - ] - }, - "Web/API/FullscreenOptions": { - "modified": "2020-10-15T22:20:23.450Z", - "contributors": [ - "Gerak842" - ] - }, - "Web/API/GainNode": { - "modified": "2019-03-23T22:30:22.800Z", - "contributors": [ - "fl1p" - ] - }, - "Web/API/Gamepad_API": { - "modified": "2020-10-15T22:22:10.242Z", - "contributors": [ - "jogemu" - ] - }, - "Web/API/Geolocation": { - "modified": "2020-10-15T22:29:39.241Z", - "contributors": [ - "sideshowbarker" - ] - }, - "Web/API/Geolocation/getCurrentPosition": { - "modified": "2020-10-15T22:29:40.838Z", - "contributors": [ - "zuzuzu" - ] - }, - "Web/API/GlobalEventHandlers": { - "modified": "2019-03-23T22:40:26.306Z", - "contributors": [ - "matschibatschi", - "AFBarstow" - ] - }, - "Web/API/GlobalEventHandlers/onclick": { - "modified": "2019-03-23T22:40:31.019Z", - "contributors": [ - "patrickGold", - "MrTroble" - ] - }, - "Web/API/GlobalEventHandlers/onload": { - "modified": "2019-03-23T22:09:19.030Z", - "contributors": [ - "Anonymous" - ] - }, - "Web/API/GlobalEventHandlers/onresize": { - "modified": "2019-03-23T22:10:57.097Z", - "contributors": [ - "mecograph" - ] - }, - "Web/API/HTMLCanvasElement": { - "modified": "2019-03-23T22:34:59.417Z", - "contributors": [ - "Aloso" - ] - }, - "Web/API/HTMLCanvasElement/toDataURL": { - "modified": "2019-03-18T20:33:40.334Z", - "contributors": [ - "bubens", - "frth", - "rkeller1" - ] - }, - "Web/API/HTMLCanvasElement/webglcontextcreationerror_event": { - "modified": "2019-03-18T20:55:30.956Z", - "contributors": [ - "fscholz", - "XChrome" - ] - }, - "Web/API/HTMLCanvasElement/webglcontextlost_event": { - "modified": "2019-03-18T20:55:30.751Z", - "contributors": [ - "fscholz", - "XChrome" - ] - }, - "Web/API/HTMLCanvasElement/webglcontextrestored_event": { - "modified": "2019-03-18T20:55:30.549Z", - "contributors": [ - "fscholz", - "XChrome" - ] - }, - "Web/API/HTMLCollection": { - "modified": "2019-03-23T22:51:48.387Z", - "contributors": [ - "Dargmuesli" - ] - }, - "Web/API/HTMLFormElement": { - "modified": "2019-03-23T22:03:37.984Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/API/HTMLFormElement/elements": { - "modified": "2020-12-04T04:24:55.583Z", - "contributors": [ - "Gismo1337", - "grandmalovesyou" - ] - }, - "Web/API/HTMLFormElement/submit_event": { - "modified": "2019-04-12T00:15:26.183Z", - "contributors": [ - "estelle", - "fscholz", - "Silv3rFlame" - ] - }, - "Web/API/HTMLInputElement": { - "modified": "2020-10-15T22:24:07.999Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/API/HTMLInputElement/select": { - "modified": "2020-10-15T22:23:56.047Z", - "contributors": [ - "bluefireoly" - ] - }, - "Web/API/HTMLSlotElement": { - "modified": "2020-10-15T22:06:32.529Z", - "contributors": [ - "fscholz" - ] - }, - "Web/API/HTMLSlotElement/assignedNodes": { - "modified": "2020-10-15T22:06:32.229Z", - "contributors": [ - "td8" - ] - }, - "Web/API/HTMLTableElement": { - "modified": "2020-10-15T22:32:18.729Z", - "contributors": [ - "jyasskin" - ] - }, - "Web/API/HTMLTableElement/createCaption": { - "modified": "2020-10-15T22:32:16.249Z", - "contributors": [ - "Rolf_B" - ] - }, - "Web/API/HTMLTableElement/insertRow": { - "modified": "2020-10-15T22:32:17.952Z", - "contributors": [ - "Rolf_B" - ] - }, - "Web/API/HTMLUnknownElement": { - "modified": "2020-11-01T23:01:21.360Z", - "contributors": [ - "sgadola" - ] - }, - "Web/API/IndexedDB_API": { - "modified": "2020-02-19T04:36:45.707Z", - "contributors": [ - "SanQu", - "chrisdavidmills", - "Oliver_Schafeld", - "jdoose", - "syncopation", - "braeutigamj", - "senk", - "tleilax", - "NiklasMerz", - "Patrick_St.", - "Huan" - ] - }, - "Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria": { - "modified": "2020-01-13T04:47:56.415Z", - "contributors": [ - "chrisdavidmills", - "StefanSurkamp", - "grubec" - ] - }, - "Web/API/IndexedDB_API/Grundkonzepte_hinter_IndexedDB": { - "modified": "2020-01-13T04:47:55.526Z", - "contributors": [ - "chrisdavidmills", - "gmagholder", - "Julini" - ] - }, - "Web/API/IndexedDB_API/IndexedDB_verwenden": { - "modified": "2020-01-13T04:47:56.201Z", - "contributors": [ - "chrisdavidmills", - "p.root", - "mdieblich", - "floheller", - "HendrikRunte", - "Nys", - "Julini" - ] - }, - "Web/API/KeyboardEvent": { - "modified": "2019-03-18T21:09:07.273Z", - "contributors": [ - "fscholz", - "wbamberg", - "th1nk3th" - ] - }, - "Web/API/KeyboardEvent/altKey": { - "modified": "2019-03-23T22:03:19.040Z", - "contributors": [ - "uki9" - ] - }, - "Web/API/KeyboardEvent/getModifierState": { - "modified": "2020-10-15T22:06:57.788Z", - "contributors": [ - "amlang" - ] - }, - "Web/API/KeyboardEvent/keyCode": { - "modified": "2020-10-15T22:11:25.377Z", - "contributors": [ - "bastiion" - ] - }, - "Web/API/LinkStyle": { - "modified": "2019-03-23T23:11:18.020Z", - "contributors": [ - "fscholz", - "Sebastianz" - ] - }, - "Web/API/MessageEvent": { - "modified": "2019-03-18T21:34:29.406Z", - "contributors": [ - "sv3m0r" - ] - }, - "Web/API/MouseEvent": { - "modified": "2019-03-18T21:46:34.463Z", - "contributors": [ - "vssn" - ] - }, - "Web/API/MutationObserver": { - "modified": "2019-10-29T08:01:54.030Z", - "contributors": [ - "Locour", - "fscholz", - "achimbode" - ] - }, - "Web/API/Navigator": { - "modified": "2019-03-23T23:01:44.074Z", - "contributors": [ - "wbamberg", - "fscholz" - ] - }, - "Web/API/Navigator/registerProtocolHandler": { - "modified": "2019-03-23T22:01:55.616Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/API/Navigator/registerProtocolHandler/Webbasierte_protokoll-handler": { - "modified": "2019-03-23T22:33:54.067Z", - "contributors": [ - "chrisdavidmills", - "Faibk" - ] - }, - "Web/API/Navigator/sendBeacon": { - "modified": "2019-03-23T22:27:50.837Z", - "contributors": [ - "Oliver_Schafeld" - ] - }, - "Web/API/Navigator/vibrate": { - "modified": "2019-05-12T10:32:06.632Z", - "contributors": [ - "jannnis", - "petzichen" - ] - }, - "Web/API/NavigatorOnLine": { - "modified": "2019-03-23T22:47:26.289Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/NavigatorOnLine/Online_and_offline_events": { - "modified": "2019-03-23T22:59:48.853Z", - "contributors": [ - "chrisdavidmills", - "terabaud" - ] - }, - "Web/API/NavigatorOnLine/onLine": { - "modified": "2019-03-23T22:47:22.054Z", - "contributors": [ - "TRoskop" - ] - }, - "Web/API/Node": { - "modified": "2019-10-07T12:42:22.118Z", - "contributors": [ - "fscholz", - "khalid32", - "wepunkt_empunkt" - ] - }, - "Web/API/Node/appendChild": { - "modified": "2020-05-05T11:21:55.640Z", - "contributors": [ - "Coding-Boss", - "prozax", - "saldor", - "yampus", - "StevenS77" - ] - }, - "Web/API/Node/childNodes": { - "modified": "2019-03-23T23:38:40.521Z", - "contributors": [ - "fscholz", - "AshfaqHossain", - "wepunkt_empunkt" - ] - }, - "Web/API/Node/cloneNode": { - "modified": "2019-03-23T23:21:01.873Z", - "contributors": [ - "martin_ti", - "Haftmann", - "Hativ3", - "fscholz", - "herom", - "pixunil" - ] - }, - "Web/API/Node/firstChild": { - "modified": "2019-03-23T23:38:33.888Z", - "contributors": [ - "marcows", - "fscholz", - "khalid32", - "wepunkt_empunkt" - ] - }, - "Web/API/Node/hasChildNodes": { - "modified": "2019-03-23T22:05:54.908Z", - "contributors": [ - "dekatko" - ] - }, - "Web/API/Node/innerText": { - "modified": "2019-03-23T22:05:48.154Z", - "contributors": [ - "dekatko" - ] - }, - "Web/API/Node/lastChild": { - "modified": "2019-03-23T23:38:33.584Z", - "contributors": [ - "fscholz", - "khalid32", - "wepunkt_empunkt" - ] - }, - "Web/API/Node/nextSibling": { - "modified": "2019-03-23T23:38:40.167Z", - "contributors": [ - "fscholz", - "Hasilt", - "wepunkt_empunkt" - ] - }, - "Web/API/Node/nodeValue": { - "modified": "2019-03-18T21:15:27.736Z", - "contributors": [ - "dekatko" - ] - }, - "Web/API/Node/normalize": { - "modified": "2019-03-23T22:38:55.076Z", - "contributors": [ - "jsiebern" - ] - }, - "Web/API/Node/parentNode": { - "modified": "2019-03-23T23:38:33.082Z", - "contributors": [ - "fscholz", - "khalid32", - "wepunkt_empunkt" - ] - }, - "Web/API/Node/previousSibling": { - "modified": "2019-03-23T23:38:39.575Z", - "contributors": [ - "fscholz", - "AshfaqHossain", - "wepunkt_empunkt" - ] - }, - "Web/API/Node/removeChild": { - "modified": "2019-03-23T22:50:31.643Z", - "contributors": [ - "funkhauscreative", - "opatut" - ] - }, - "Web/API/Node/replaceChild": { - "modified": "2019-09-29T03:47:24.159Z", - "contributors": [ - "grumpy-cat", - "fscholz", - "jsx", - "Jonas" - ] - }, - "Web/API/Node/setUserData": { - "modified": "2019-03-23T22:05:46.565Z", - "contributors": [ - "Nonononoki" - ] - }, - "Web/API/Node/textContent": { - "modified": "2020-10-15T21:19:51.146Z", - "contributors": [ - "kaljak", - "tordans", - "user-4", - "Tar-Minyatur", - "fscholz", - "wepunkt_empunkt" - ] - }, - "Web/API/Page_Visibility_API": { - "modified": "2019-03-23T22:13:05.174Z", - "contributors": [ - "dennissterzenbach" - ] - }, - "Web/API/Performance": { - "modified": "2020-10-15T21:56:24.244Z", - "contributors": [ - "fscholz", - "Sheppy" - ] - }, - "Web/API/Performance/now": { - "modified": "2019-03-23T22:07:09.095Z", - "contributors": [ - "mknospe", - "nylki", - "lionralfs", - "amelzer" - ] - }, - "Web/API/PushManager": { - "modified": "2019-09-30T11:38:12.645Z", - "contributors": [ - "Callahad" - ] - }, - "Web/API/PushManager/subscribe": { - "modified": "2019-03-23T22:37:33.601Z", - "contributors": [ - "f0rkB0mb" - ] - }, - "Web/API/Push_API": { - "modified": "2019-03-18T21:23:15.619Z", - "contributors": [ - "aquorange" - ] - }, - "Web/API/RTCIceCandidate": { - "modified": "2019-03-23T22:06:19.046Z", - "contributors": [ - "PixelSnake" - ] - }, - "Web/API/RTCPeerConnection": { - "modified": "2019-03-23T22:39:31.626Z", - "contributors": [ - "TheA13X" - ] - }, - "Web/API/RTCRtpTransceiver": { - "modified": "2020-10-15T22:26:06.821Z", - "contributors": [ - "Sheppy" - ] - }, - "Web/API/RTCRtpTransceiver/direction": { - "modified": "2020-10-15T22:26:02.417Z", - "contributors": [ - "NasskalteJuni" - ] - }, - "Web/API/Range": { - "modified": "2019-03-23T22:16:01.377Z", - "contributors": [ - "timdream" - ] - }, - "Web/API/Range/Range": { - "modified": "2019-03-23T22:16:05.966Z", - "contributors": [ - "StevenS77" - ] - }, - "Web/API/ReadableStream": { - "modified": "2020-10-15T21:56:17.020Z", - "contributors": [ - "Nerixyz", - "jcsahnwaldt", - "ksm2" - ] - }, - "Web/API/RenderingContext": { - "modified": "2020-11-02T01:51:10.279Z", - "contributors": [ - "sgadola" - ] - }, - "Web/API/Response": { - "modified": "2020-10-15T22:15:25.221Z", - "contributors": [ - "dritter", - "SebinNyshkim" - ] - }, - "Web/API/Response/Response": { - "modified": "2020-10-15T22:15:23.753Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/API/ServiceWorker": { - "modified": "2020-11-19T03:27:18.281Z", - "contributors": [ - "SphinxKnight", - "DieLokoMotive" - ] - }, - "Web/API/ServiceWorkerContainer": { - "modified": "2019-03-23T22:38:55.614Z", - "contributors": [ - "jsx" - ] - }, - "Web/API/ServiceWorkerContainer/register": { - "modified": "2019-03-23T22:38:49.419Z", - "contributors": [ - "Keviddle", - "SimonIT" - ] - }, - "Web/API/Service_Worker_API": { - "modified": "2020-12-02T13:46:48.121Z", - "contributors": [ - "daazb001", - "DavidVieweg", - "bitbruder", - "TobiDo", - "SimonIT" - ] - }, - "Web/API/Service_Worker_API/Using_Service_Workers": { - "modified": "2019-03-23T22:38:54.934Z", - "contributors": [ - "mattweb", - "wischi-chr", - "amelzer", - "pbdevch", - "nicam", - "sspringer82", - "SimonIT" - ] - }, - "Web/API/SharedWorker": { - "modified": "2020-10-15T22:22:26.754Z", - "contributors": [ - "ChristianReifberger" - ] - }, - "Web/API/SpeechSynthesis": { - "modified": "2020-10-15T22:08:29.021Z", - "contributors": [ - "rs-github" - ] - }, - "Web/API/Storage": { - "modified": "2019-03-23T22:16:52.557Z", - "contributors": [ - "mdnde2", - "RewoSiedge", - "mdnde" - ] - }, - "Web/API/Storage/clear": { - "modified": "2020-10-15T22:07:15.610Z", - "contributors": [ - "mdnde2" - ] - }, - "Web/API/Storage/getItem": { - "modified": "2020-10-15T22:04:15.816Z", - "contributors": [ - "mdnde2", - "RewoSiedge" - ] - }, - "Web/API/Storage/key": { - "modified": "2020-10-15T22:07:14.945Z", - "contributors": [ - "mdnde2" - ] - }, - "Web/API/Storage/length": { - "modified": "2020-10-15T22:07:13.917Z", - "contributors": [ - "mdnde2" - ] - }, - "Web/API/Storage/removeItem": { - "modified": "2020-10-15T22:07:15.302Z", - "contributors": [ - "mdnde2" - ] - }, - "Web/API/Storage/setItem": { - "modified": "2019-03-18T21:36:51.942Z", - "contributors": [ - "mdnde2", - "RewoSiedge" - ] - }, - "Web/API/Transferable": { - "modified": "2019-03-18T21:45:46.055Z", - "contributors": [ - "dennissterzenbach" - ] - }, - "Web/API/URL": { - "modified": "2019-03-23T22:53:00.444Z", - "contributors": [ - "myakura" - ] - }, - "Web/API/URL/createObjectURL": { - "modified": "2019-03-23T22:53:03.628Z", - "contributors": [ - "icy", - "mbolli", - "tuschcarsten" - ] - }, - "Web/API/URL/protocol": { - "modified": "2020-10-15T22:23:16.608Z", - "contributors": [ - "atopion" - ] - }, - "Web/API/URLSearchParams": { - "modified": "2019-03-23T22:08:03.108Z", - "contributors": [ - "Stefie", - "bendlas" - ] - }, - "Web/API/USVString": { - "modified": "2019-03-18T21:30:46.256Z", - "contributors": [ - "Keviddle" - ] - }, - "Web/API/Vollbild_API": { - "modified": "2019-07-07T13:00:37.918Z", - "contributors": [ - "wbamberg", - "lazercaveman", - "Johann150", - "axelrindle" - ] - }, - "Web/API/WebGLActiveInfo": { - "modified": "2019-03-23T22:35:02.340Z", - "contributors": [ - "firefligher" - ] - }, - "Web/API/WebGLProgram": { - "modified": "2019-03-23T22:35:02.729Z", - "contributors": [ - "firefligher" - ] - }, - "Web/API/WebGLRenderingContext": { - "modified": "2019-03-23T22:35:00.582Z", - "contributors": [ - "fscholz" - ] - }, - "Web/API/WebGLRenderingContext/canvas": { - "modified": "2020-10-15T22:08:19.734Z", - "contributors": [ - "JulianHilbers" - ] - }, - "Web/API/WebGLRenderingContext/getActiveAttrib": { - "modified": "2019-03-23T22:35:02.539Z", - "contributors": [ - "firefligher" - ] - }, - "Web/API/WebGLRenderingContext/getAttribLocation": { - "modified": "2020-10-15T22:08:19.909Z", - "contributors": [ - "JulianHilbers" - ] - }, - "Web/API/WebGL_API": { - "modified": "2019-03-24T00:05:46.812Z", - "contributors": [ - "XChrome", - "fscholz", - "Faldrian", - "teoli" - ] - }, - "Web/API/WebGL_API/Tutorial": { - "modified": "2019-03-23T22:52:40.621Z", - "contributors": [ - "fscholz" - ] - }, - "Web/API/WebGL_API/Tutorial/3D-Objekte_mit_WebGL_erstellen": { - "modified": "2019-03-24T00:04:47.020Z", - "contributors": [ - "fscholz", - "teoli" - ] - }, - "Web/API/WebGL_API/Tutorial/Animierte_Texturen_in_WebGL": { - "modified": "2019-03-24T00:04:47.741Z", - "contributors": [ - "fscholz", - "teoli" - ] - }, - "Web/API/WebGL_API/Tutorial/Beleuchtung_in_WebGL": { - "modified": "2019-03-24T00:04:49.766Z", - "contributors": [ - "fscholz", - "teoli" - ] - }, - "Web/API/WebGL_API/Tutorial/Einführung_in_WebGL": { - "modified": "2019-03-24T00:05:30.371Z", - "contributors": [ - "noxafy", - "Oliver_Schafeld", - "H3ndr1k", - "xhallix", - "manni66", - "fscholz", - "teoli" - ] - }, - "Web/API/WebGL_API/Tutorial/Farben_mittels_Shader_in_einen_WebGL-Kontext_hinzufügen": { - "modified": "2019-03-24T00:09:11.465Z", - "contributors": [ - "fscholz", - "teoli", - "WNC7" - ] - }, - "Web/API/WebGL_API/Tutorial/Hinzufügen_von_2D_Inhalten_in_einen_WebGL-Kontext": { - "modified": "2019-03-18T20:49:18.784Z", - "contributors": [ - "jsinge", - "noxafy", - "fscholz", - "teoli", - "TimN", - "WNC7" - ] - }, - "Web/API/WebGL_API/Tutorial/Objekte_mit_WebGL_animieren": { - "modified": "2019-03-18T21:15:16.400Z", - "contributors": [ - "fscholz", - "teoli" - ] - }, - "Web/API/WebGL_API/Tutorial/Texturen_in_WebGL_verwenden": { - "modified": "2019-03-24T00:04:48.015Z", - "contributors": [ - "fscholz", - "teoli" - ] - }, - "Web/API/WebSocket": { - "modified": "2019-10-02T19:29:23.339Z", - "contributors": [ - "BoyTheBoy", - "firefligher" - ] - }, - "Web/API/WebSocket/binaryType": { - "modified": "2020-10-15T22:23:15.714Z", - "contributors": [ - "axelrindle" - ] - }, - "Web/API/WebSocket/close": { - "modified": "2020-10-15T22:23:16.488Z", - "contributors": [ - "axelrindle" - ] - }, - "Web/API/WebSocket/extensions": { - "modified": "2020-10-15T22:23:14.946Z", - "contributors": [ - "axelrindle" - ] - }, - "Web/API/WebSocket/onclose": { - "modified": "2019-10-02T19:24:05.254Z", - "contributors": [ - "axelrindle" - ] - }, - "Web/API/WebSocket/protocol": { - "modified": "2020-10-15T22:23:16.820Z", - "contributors": [ - "axelrindle" - ] - }, - "Web/API/WebSocket/readyState": { - "modified": "2020-10-15T22:23:15.511Z", - "contributors": [ - "axelrindle" - ] - }, - "Web/API/WebSocket/url": { - "modified": "2020-10-15T22:23:17.351Z", - "contributors": [ - "axelrindle" - ] - }, - "Web/API/WebXR_Device_API": { - "modified": "2020-10-15T22:29:16.503Z", - "contributors": [ - "SphinxKnight", - "katjah4rms08" - ] - }, - "Web/API/Web_Animations_API": { - "modified": "2019-03-18T21:09:35.736Z", - "contributors": [ - "bitbruder" - ] - }, - "Web/API/Web_Storage_API": { - "modified": "2020-05-10T13:24:40.006Z", - "contributors": [ - "tobysoby", - "jswisher", - "mhash17" - ] - }, - "Web/API/Web_Workers_API": { - "modified": "2020-04-30T05:09:05.345Z", - "contributors": [ - "ustark", - "Guchen", - "daknuett" - ] - }, - "Web/API/Window": { - "modified": "2019-03-24T00:07:16.651Z", - "contributors": [ - "rowild", - "Eddcapone", - "fl1p", - "fscholz", - "khalid32", - "fryn", - "Crash" - ] - }, - "Web/API/Window/alert": { - "modified": "2019-03-23T23:14:26.063Z", - "contributors": [ - "Anonymous", - "fscholz", - "Fxedel" - ] - }, - "Web/API/Window/applicationCache": { - "modified": "2019-03-23T22:45:08.850Z", - "contributors": [ - "Hansschmucker" - ] - }, - "Web/API/Window/cancelAnimationFrame": { - "modified": "2020-10-15T21:37:50.737Z", - "contributors": [ - "thunderhook", - "rhulha" - ] - }, - "Web/API/Window/close": { - "modified": "2020-10-15T22:23:30.810Z", - "contributors": [ - "vssn" - ] - }, - "Web/API/Window/confirm": { - "modified": "2019-03-23T22:04:30.930Z", - "contributors": [ - "Aloso" - ] - }, - "Web/API/Window/console": { - "modified": "2019-06-13T07:23:43.074Z", - "contributors": [ - "AndreasWebdev" - ] - }, - "Web/API/Window/dump": { - "modified": "2019-03-23T23:34:35.263Z", - "contributors": [ - "fscholz", - "jsx", - "Jon_Deo" - ] - }, - "Web/API/Window/history": { - "modified": "2019-03-23T22:06:44.422Z", - "contributors": [ - "kilrogg" - ] - }, - "Web/API/Window/length": { - "modified": "2020-10-15T22:10:25.849Z", - "contributors": [ - "thunderhook" - ] - }, - "Web/API/Window/localStorage": { - "modified": "2020-10-15T21:37:58.478Z", - "contributors": [ - "thunderhook", - "mdnde", - "MirkoSbr" - ] - }, - "Web/API/Window/name": { - "modified": "2020-10-15T22:10:27.977Z", - "contributors": [ - "thunderhook" - ] - }, - "Web/API/Window/navigator": { - "modified": "2020-10-15T21:36:44.039Z", - "contributors": [ - "vssn", - "Hansschmucker", - "AdamNiezielinski" - ] - }, - "Web/API/Window/ondevicemotion": { - "modified": "2019-03-18T21:15:10.920Z", - "contributors": [ - "clepsydra", - "m9898" - ] - }, - "Web/API/Window/openDialog": { - "modified": "2020-11-15T17:34:16.679Z", - "contributors": [ - "arndissler", - "Schepp", - "fscholz", - "xuancanh", - "nurfz", - "j3s.ch" - ] - }, - "Web/API/Window/opener": { - "modified": "2019-03-23T22:31:18.645Z", - "contributors": [ - "frickth" - ] - }, - "Web/API/Window/performance": { - "modified": "2019-03-23T22:07:15.480Z", - "contributors": [ - "amelzer" - ] - }, - "Web/API/Window/print": { - "modified": "2020-10-15T21:39:45.899Z", - "contributors": [ - "nopeJS", - "Hansschmucker" - ] - }, - "Web/API/Window/prompt": { - "modified": "2019-03-23T22:28:55.418Z", - "contributors": [ - "Aloso", - "G3nadi" - ] - }, - "Web/API/Window/screenX": { - "modified": "2019-03-23T22:26:08.473Z", - "contributors": [ - "baumanno" - ] - }, - "Web/API/Window/scroll": { - "modified": "2019-03-23T22:51:52.606Z", - "contributors": [ - "Hansschmucker", - "Dargmuesli" - ] - }, - "Web/API/Window/scrollTo": { - "modified": "2020-10-15T22:20:10.130Z", - "contributors": [ - "bigjilm", - "AndreasWebdev" - ] - }, - "Web/API/Window/sessionStorage": { - "modified": "2020-10-15T21:44:31.143Z", - "contributors": [ - "thunderhook", - "mdnde", - "filecage", - "HendrikRunte", - "occcy" - ] - }, - "Web/API/Window/stop": { - "modified": "2019-03-23T22:48:41.577Z", - "contributors": [ - "Dargmuesli" - ] - }, - "Web/API/WindowBase64": { - "modified": "2019-03-23T22:50:32.909Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/WindowBase64/btoa": { - "modified": "2019-03-23T22:50:32.544Z", - "contributors": [ - "cami" - ] - }, - "Web/API/WindowEventHandlers": { - "modified": "2019-03-23T22:50:03.877Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/WindowEventHandlers/onafterprint": { - "modified": "2019-03-23T22:23:55.422Z", - "contributors": [ - "maxx-dev" - ] - }, - "Web/API/WindowEventHandlers/onhashchange": { - "modified": "2019-03-23T22:49:53.661Z", - "contributors": [ - "flosommerfeld", - "ulrobin" - ] - }, - "Web/API/WindowEventHandlers/onpopstate": { - "modified": "2019-03-23T22:35:53.667Z", - "contributors": [ - "checkdotdot", - "Oliver_Schafeld" - ] - }, - "Web/API/WindowTimers": { - "modified": "2019-03-23T23:01:42.969Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/WindowTimers/setTimeout": { - "modified": "2019-03-23T23:36:28.621Z", - "contributors": [ - "mdnde", - "Eschon", - "fscholz", - "c0ffm3k4r", - "wartab" - ] - }, - "Web/API/Worker": { - "modified": "2019-03-18T21:45:39.485Z", - "contributors": [ - "dennissterzenbach" - ] - }, - "Web/API/XMLHttpRequest": { - "modified": "2019-05-02T20:00:09.647Z", - "contributors": [ - "wbamberg", - "sebastianroming", - "fscholz", - "Sebastianz", - "ethertank", - "paul_thomann" - ] - }, - "Web/API/XMLHttpRequest/Using_XMLHttpRequest": { - "modified": "2020-10-15T22:34:13.485Z", - "contributors": [ - "Mellbabe" - ] - }, - "Web/API/notification": { - "modified": "2019-03-23T22:55:22.604Z", - "contributors": [ - "DonChef660", - "jukiki", - "DoomyTheFroomy", - "thomalow" - ] - }, - "Web/API/notification/permission": { - "modified": "2019-03-23T22:19:13.782Z", - "contributors": [ - "schlagi123", - "mwsh2005" - ] - }, - "Web/Accessibility/Understanding_WCAG": { - "modified": "2020-01-27T09:01:40.600Z" - }, - "Web/Accessibility/Understanding_WCAG/Perceivable": { - "modified": "2020-01-27T09:01:40.941Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/Barrierefreiheit": { - "modified": "2019-09-09T14:09:32.470Z", - "contributors": [ - "SphinxKnight", - "alippold", - "teoli", - "fscholz", - "Mgalpha" - ] - }, - "Web/Barrierefreiheit/ARIA": { - "modified": "2019-03-23T23:21:04.985Z", - "contributors": [ - "a.lippold", - "marc-se", - "iMeta", - "eminor", - "teoli" - ] - }, - "Web/Barrierefreiheit/ARIA/ARIA_Live_Regionen": { - "modified": "2019-03-23T23:15:24.210Z", - "contributors": [ - "teoli", - "eminor" - ] - }, - "Web/Barrierefreiheit/ARIA/ARIA_Techniken": { - "modified": "2019-03-18T21:43:56.504Z", - "contributors": [ - "juliankern" - ] - }, - "Web/Barrierefreiheit/An_overview_of_accessible_web_applications_and_widgets": { - "modified": "2019-03-23T23:17:39.742Z", - "contributors": [ - "juliankern", - "christophfink", - "teoli", - "eminor" - ] - }, - "Web/Barrierefreiheit/Tastaturgesteuerte_JavaScript_Komponenten": { - "modified": "2019-03-23T23:11:54.393Z", - "contributors": [ - "eminor" - ] - }, - "Web/Barrierefreiheit/Webentwicklung": { - "modified": "2019-03-18T20:35:27.144Z", - "contributors": [ - "chrisdavidmills", - "teoli", - "eminor" - ] - }, - "Web/CSS": { - "modified": "2020-12-03T15:50:42.872Z", - "contributors": [ - "Johuspect", - "duckymirror", - "SphinxKnight", - "prayash", - "Sebastianz", - "fscholz", - "bee8bit", - "SJW", - "ethertank", - "DavidWalsh", - "Michael2402", - "Takenbot", - "Yor.feix" - ] - }, - "Web/CSS/-moz-box-flex": { - "modified": "2020-10-15T21:40:01.205Z", - "contributors": [ - "chrisdavidmills", - "SJW", - "teoli", - "crasher666", - "Sebastianz" - ] - }, - "Web/CSS/-moz-box-ordinal-group": { - "modified": "2019-03-23T22:45:29.807Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-moz-box-pack": { - "modified": "2020-10-15T21:39:56.493Z", - "contributors": [ - "SJW", - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/-moz-cell": { - "modified": "2019-03-23T23:11:42.748Z", - "contributors": [ - "Sebastianz", - "teoli" - ] - }, - "Web/CSS/-moz-float-edge": { - "modified": "2019-03-23T22:44:51.739Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-moz-force-broken-image-icon": { - "modified": "2019-03-18T21:16:01.306Z", - "contributors": [ - "Sebastianz", - "teoli" - ] - }, - "Web/CSS/-moz-image-rect": { - "modified": "2019-03-23T22:43:51.533Z", - "contributors": [ - "mrstork", - "SphinxKnight", - "Sebastianz" - ] - }, - "Web/CSS/-moz-image-region": { - "modified": "2019-03-24T00:03:45.581Z", - "contributors": [ - "Sebastianz", - "teoli", - "fscholz", - "SJW", - "Lukas Skywalker" - ] - }, - "Web/CSS/-moz-orient": { - "modified": "2020-10-15T21:39:42.190Z", - "contributors": [ - "SJW", - "SphinxKnight", - "Sebastianz" - ] - }, - "Web/CSS/-moz-outline-radius": { - "modified": "2019-03-23T22:43:58.788Z", - "contributors": [ - "teoli", - "Simplexible", - "Prinz_Rana", - "Sebastianz" - ] - }, - "Web/CSS/-moz-outline-radius-bottomleft": { - "modified": "2019-03-23T22:44:02.081Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-moz-outline-radius-bottomright": { - "modified": "2019-03-23T22:44:02.996Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-moz-outline-radius-topleft": { - "modified": "2019-03-23T22:43:54.596Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-moz-outline-radius-topright": { - "modified": "2019-03-23T22:43:59.421Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-moz-user-focus": { - "modified": "2019-03-23T22:45:03.777Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/-moz-user-input": { - "modified": "2019-03-24T00:03:50.218Z", - "contributors": [ - "Sebastianz", - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/-moz-user-modify": { - "modified": "2019-03-24T00:04:27.330Z", - "contributors": [ - "teoli", - "Sebastianz", - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/-moz-user-select": { - "modified": "2019-03-24T00:03:51.678Z", - "contributors": [ - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/-webkit-box-reflect": { - "modified": "2019-03-23T22:45:19.920Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/-webkit-mask-origin": { - "modified": "2019-03-23T22:44:52.161Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-webkit-mask-position-x": { - "modified": "2019-03-18T21:41:43.515Z", - "contributors": [ - "teoli", - "felixhaeberle" - ] - }, - "Web/CSS/-webkit-mask-position-y": { - "modified": "2019-03-18T21:41:54.720Z", - "contributors": [ - "teoli", - "felixhaeberle" - ] - }, - "Web/CSS/-webkit-mask-repeat": { - "modified": "2019-03-23T22:45:10.485Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-webkit-mask-repeat-x": { - "modified": "2019-03-18T21:41:42.607Z", - "contributors": [ - "felixhaeberle" - ] - }, - "Web/CSS/-webkit-mask-repeat-y": { - "modified": "2019-03-18T21:41:44.223Z", - "contributors": [ - "felixhaeberle" - ] - }, - "Web/CSS/-webkit-overflow-scrolling": { - "modified": "2019-03-23T22:42:43.885Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/-webkit-print-color-adjust": { - "modified": "2019-03-23T22:42:45.125Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/-webkit-tap-highlight-color": { - "modified": "2019-03-18T21:41:41.637Z", - "contributors": [ - "felixhaeberle" - ] - }, - "Web/CSS/-webkit-text-fill-color": { - "modified": "2019-03-23T22:45:21.560Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/-webkit-text-stroke": { - "modified": "2020-11-09T04:48:13.997Z", - "contributors": [ - "sideshowbarker", - "codingdudecom", - "teoli", - "cachius", - "Sebastianz" - ] - }, - "Web/CSS/-webkit-text-stroke-color": { - "modified": "2019-03-23T22:44:44.432Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/-webkit-text-stroke-width": { - "modified": "2019-03-23T22:44:59.950Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/-webkit-touch-callout": { - "modified": "2019-03-23T22:44:02.217Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/:-moz-broken": { - "modified": "2019-03-18T21:16:55.826Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-drag-over": { - "modified": "2019-03-23T22:45:19.500Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-first-node": { - "modified": "2019-03-23T22:45:27.549Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-focusring": { - "modified": "2019-03-23T22:45:19.298Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/:-moz-handler-blocked": { - "modified": "2019-03-23T22:45:31.823Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-handler-crashed": { - "modified": "2019-03-23T22:45:39.224Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-handler-disabled": { - "modified": "2019-03-18T21:15:58.423Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-last-node": { - "modified": "2019-03-23T22:45:38.353Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-list-bullet": { - "modified": "2019-03-23T22:45:32.268Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-list-number": { - "modified": "2019-03-23T22:45:15.840Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-loading": { - "modified": "2019-03-23T22:45:32.162Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-locale-dir(ltr)": { - "modified": "2019-03-23T22:44:58.165Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-locale-dir(rtl)": { - "modified": "2019-03-23T22:44:55.227Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-only-whitespace": { - "modified": "2019-03-23T22:45:18.314Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-placeholder": { - "modified": "2019-03-23T23:11:34.619Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/:-moz-submit-invalid": { - "modified": "2020-10-15T21:39:39.769Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:-moz-suppressed": { - "modified": "2019-03-23T22:45:39.319Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-ui-invalid": { - "modified": "2019-03-23T22:42:35.620Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/:-moz-ui-valid": { - "modified": "2019-03-23T22:42:34.212Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/:-moz-user-disabled": { - "modified": "2019-03-23T22:44:53.355Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/:-moz-window-inactive": { - "modified": "2020-10-15T21:39:59.789Z", - "contributors": [ - "SJW", - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/:-webkit-autofill": { - "modified": "2019-03-23T22:43:43.075Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/::-moz-page": { - "modified": "2019-03-23T22:44:43.530Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/::-moz-page-sequence": { - "modified": "2019-03-23T22:45:17.973Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/::-moz-placeholder": { - "modified": "2019-03-23T23:08:23.797Z", - "contributors": [ - "teoli", - "Sebastianz", - "icy" - ] - }, - "Web/CSS/::-moz-progress-bar": { - "modified": "2019-03-23T22:44:41.295Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/::-moz-scrolled-page-sequence": { - "modified": "2019-03-18T21:15:12.656Z", - "contributors": [ - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/::after": { - "modified": "2020-10-15T21:29:20.506Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/::backdrop": { - "modified": "2020-10-15T21:40:01.051Z", - "contributors": [ - "SJW", - "ExE-Boss", - "marc-se", - "Sebastianz" - ] - }, - "Web/CSS/::before": { - "modified": "2020-10-15T21:26:19.550Z", - "contributors": [ - "stephanduesterhoeft", - "jhard", - "SJW", - "LevitatingOrange", - "Sebastianz", - "tim_kraut" - ] - }, - "Web/CSS/::placeholder": { - "modified": "2020-10-15T22:16:04.444Z", - "contributors": [ - "sklicek" - ] - }, - "Web/CSS/::selection": { - "modified": "2020-10-15T21:28:39.218Z", - "contributors": [ - "SJW", - "Sebastianz", - "iGadget" - ] - }, - "Web/CSS/:active": { - "modified": "2020-10-15T21:25:36.592Z", - "contributors": [ - "SJW", - "virtusmaior", - "jwhitlock", - "yckart", - "Sebastianz", - "webtobesocial" - ] - }, - "Web/CSS/:default": { - "modified": "2020-10-15T21:28:32.800Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:dir": { - "modified": "2020-10-15T21:40:13.117Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:disabled": { - "modified": "2020-10-15T21:29:29.796Z", - "contributors": [ - "SJW", - "Volker-E", - "klepek42", - "Sebastianz", - "gruntswilldie" - ] - }, - "Web/CSS/:empty": { - "modified": "2020-10-15T21:13:59.334Z", - "contributors": [ - "SJW", - "Sebastianz", - "Strongground", - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/:enabled": { - "modified": "2020-10-15T21:40:12.250Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:first": { - "modified": "2020-10-15T21:39:40.240Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:first-child": { - "modified": "2020-10-15T21:28:28.227Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:first-of-type": { - "modified": "2020-10-15T21:28:41.905Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:focus": { - "modified": "2020-10-15T21:25:43.461Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:fullscreen": { - "modified": "2020-10-15T21:25:34.953Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:hover": { - "modified": "2020-10-15T21:30:31.117Z", - "contributors": [ - "SJW", - "Sebastianz", - "felhe", - "Hecky77" - ] - }, - "Web/CSS/:in-range": { - "modified": "2020-10-15T22:05:48.695Z", - "contributors": [ - "danieldeichfuss" - ] - }, - "Web/CSS/:indeterminate": { - "modified": "2020-10-15T21:29:20.109Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:invalid": { - "modified": "2020-10-15T21:54:12.121Z", - "contributors": [ - "SJW", - "forrestkirby" - ] - }, - "Web/CSS/:lang": { - "modified": "2020-10-15T21:13:55.617Z", - "contributors": [ - "SJW", - "teoli", - "Sebastianz", - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/:last-child": { - "modified": "2020-10-15T21:26:43.574Z", - "contributors": [ - "SJW", - "Sebastianz", - "Florian_1990" - ] - }, - "Web/CSS/:last-of-type": { - "modified": "2020-10-15T21:28:37.047Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:link": { - "modified": "2020-10-15T21:25:36.539Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:not": { - "modified": "2020-10-15T21:25:38.458Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:nth-child": { - "modified": "2020-10-15T21:37:14.005Z", - "contributors": [ - "forrestkirby", - "SJW", - "Faldrian", - "DagmarTimmreck", - "teoli", - "Sebastianz", - "antonharald" - ] - }, - "Web/CSS/:only-child": { - "modified": "2020-10-15T21:28:16.690Z", - "contributors": [ - "SJW", - "RmnWtnkmp", - "HerrSerker" - ] - }, - "Web/CSS/:optional": { - "modified": "2020-10-15T21:25:35.468Z", - "contributors": [ - "SJW", - "schlagi123", - "Sebastianz" - ] - }, - "Web/CSS/:out-of-range": { - "modified": "2020-10-15T21:28:37.407Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:required": { - "modified": "2020-10-15T21:25:36.354Z", - "contributors": [ - "SJW", - "schlagi123", - "Sebastianz" - ] - }, - "Web/CSS/:root": { - "modified": "2020-10-15T21:29:10.328Z", - "contributors": [ - "bitbruder", - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/:visited": { - "modified": "2020-10-15T21:25:40.147Z", - "contributors": [ - "SJW", - "Sebastianz", - "teoli", - "felhe" - ] - }, - "Web/CSS/@charset": { - "modified": "2020-10-15T21:29:01.737Z", - "contributors": [ - "SJW", - "Krenair", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/@document": { - "modified": "2020-10-15T21:25:35.781Z", - "contributors": [ - "SJW", - "teoli", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/@import": { - "modified": "2020-10-15T21:13:54.228Z", - "contributors": [ - "SJW", - "Guillaume-Heras", - "mrstork", - "Sebastianz", - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/@keyframes": { - "modified": "2020-10-15T21:28:16.476Z", - "contributors": [ - "SJW", - "bermudaa", - "clone", - "Sebastianz", - "fscholz", - "danners", - "Sheppy", - "Fxedel" - ] - }, - "Web/CSS/@media": { - "modified": "2020-10-15T21:40:00.321Z", - "contributors": [ - "SJW", - "fscholz", - "cvrebert" - ] - }, - "Web/CSS/@media/any-pointer": { - "modified": "2020-10-15T21:39:58.352Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/@media/pointer": { - "modified": "2020-10-15T22:00:22.214Z", - "contributors": [ - "fscholz", - "schlesingermatthias" - ] - }, - "Web/CSS/@media/prefers-reduced-motion": { - "modified": "2020-10-15T22:33:51.417Z", - "contributors": [ - "DanielNL" - ] - }, - "Web/CSS/@media/width": { - "modified": "2020-10-15T21:46:53.407Z", - "contributors": [ - "SJW", - "HighTower79" - ] - }, - "Web/CSS/@page": { - "modified": "2020-10-15T21:39:37.782Z", - "contributors": [ - "chrisdavidmills", - "SJW", - "Prinz_Rana", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/@page/bleed": { - "modified": "2020-10-15T21:39:36.423Z", - "contributors": [ - "SJW", - "Prinz_Rana", - "Sebastianz" - ] - }, - "Web/CSS/@page/marks": { - "modified": "2020-10-15T21:29:09.846Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/@viewport": { - "modified": "2020-10-15T21:36:26.323Z", - "contributors": [ - "SJW", - "ExE-Boss", - "stefankahlau", - "fscholz", - "holgerjakobs" - ] - }, - "Web/CSS/Alias": { - "modified": "2019-03-23T22:43:38.581Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Alternative_style_sheets": { - "modified": "2019-03-23T22:43:32.591Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Angrenzende_Geschwisterselektoren": { - "modified": "2020-10-15T21:39:56.944Z", - "contributors": [ - "ExE-Boss", - "Sebastianz" - ] - }, - "Web/CSS/At-rule": { - "modified": "2019-03-23T22:44:51.883Z", - "contributors": [ - "Claas", - "Sebastianz" - ] - }, - "Web/CSS/Attributselektoren": { - "modified": "2020-10-15T21:25:18.388Z", - "contributors": [ - "SJW", - "Sebastianz", - "hansspiess", - "fscholz", - "iGadget", - "J5lx" - ] - }, - "Web/CSS/Aural": { - "modified": "2019-03-23T22:45:45.488Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Border-bottom-width": { - "modified": "2020-10-15T21:12:48.685Z", - "contributors": [ - "SJW", - "fscholz", - "Yuichiro", - "The Witcher" - ] - }, - "Web/CSS/Border-left-width": { - "modified": "2019-01-17T08:08:40.829Z", - "contributors": [ - "fscholz", - "Yuichiro", - "The Witcher" - ] - }, - "Web/CSS/Border-right-width": { - "modified": "2019-03-24T00:08:35.563Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "The Witcher" - ] - }, - "Web/CSS/Border-top-width": { - "modified": "2019-03-24T00:08:03.094Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "The Witcher" - ] - }, - "Web/CSS/Bottom": { - "modified": "2020-10-15T21:14:11.021Z", - "contributors": [ - "SJW", - "fscholz", - "The Witcher" - ] - }, - "Web/CSS/CSSOM_View": { - "modified": "2019-03-23T22:43:37.520Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Animations": { - "modified": "2020-10-15T21:40:15.062Z", - "contributors": [ - "SJW", - "teoli" - ] - }, - "Web/CSS/CSS_Animations/CSS_Animationen_nutzen": { - "modified": "2020-04-22T06:24:42.427Z", - "contributors": [ - "Ryuno-Ki", - "hamvocke", - "hudri", - "JorisGutjahr", - "awaigand", - "Honig", - "connexo", - "SphinxKnight", - "teoli", - "Simu" - ] - }, - "Web/CSS/CSS_Background_and_Borders": { - "modified": "2019-03-23T22:44:11.176Z", - "contributors": [ - "teoli" - ] - }, - "Web/CSS/CSS_Background_and_Borders/Border-image_generator": { - "modified": "2019-03-18T21:15:52.768Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Background_and_Borders/Border-radius_generator": { - "modified": "2019-03-23T22:43:49.105Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Background_and_Borders/Mehrere_Hintergründe_in_CSS_verwenden": { - "modified": "2019-03-23T23:02:41.693Z", - "contributors": [ - "terwortH", - "benmann", - "teoli", - "Sebastianz", - "srhjg" - ] - }, - "Web/CSS/CSS_Basic_User_Interface": { - "modified": "2019-03-18T21:18:47.038Z", - "contributors": [ - "SphinxKnight" - ] - }, - "Web/CSS/CSS_Boxmodell": { - "modified": "2019-03-23T22:43:35.662Z", - "contributors": [ - "Sebastianz", - "teoli" - ] - }, - "Web/CSS/CSS_Boxmodell/Box-shadow_generator": { - "modified": "2019-03-18T20:43:44.623Z", - "contributors": [ - "BychekRU", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Boxmodell/Einführung_in_das_CSS_Boxmodell": { - "modified": "2019-03-24T00:03:52.006Z", - "contributors": [ - "Sebastianz", - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/CSS_Boxmodell/Zusammenfallen_von_Außenabständen_meistern": { - "modified": "2019-03-23T22:41:18.965Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Charsets": { - "modified": "2020-10-15T21:40:18.836Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Colors": { - "modified": "2019-03-23T22:45:11.820Z", - "contributors": [ - "Sebastianz", - "teoli" - ] - }, - "Web/CSS/CSS_Colors/farbauswahl_werkzeug": { - "modified": "2019-03-23T22:45:05.902Z", - "contributors": [ - "22samuelk" - ] - }, - "Web/CSS/CSS_Columns": { - "modified": "2019-07-23T07:54:16.299Z", - "contributors": [ - "SphinxKnight", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Compositing_and_Blending": { - "modified": "2019-03-23T22:41:20.151Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Conditional_Rules": { - "modified": "2019-03-23T22:41:19.119Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Device_Adaptation": { - "modified": "2019-03-23T22:30:44.810Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout": { - "modified": "2019-03-23T22:43:45.116Z", - "contributors": [ - "fscholz" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container": { - "modified": "2020-10-01T01:42:20.706Z", - "contributors": [ - "Gerak842" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Flex_Elemente_Sortieren": { - "modified": "2020-10-26T12:12:41.192Z", - "contributors": [ - "Raqhael" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Grundlegende_Konzepte_der_Flexbox": { - "modified": "2019-03-18T21:33:01.162Z", - "contributors": [ - "prproksch", - "td8" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes": { - "modified": "2019-03-18T20:58:13.468Z", - "contributors": [ - "KadirTopal", - "wiegels", - "AccNeeder", - "rroehrig", - "thorsten.rinne", - "fscholz", - "elker", - "thandwerker", - "Honig" - ] - }, - "Web/CSS/CSS_Fonts": { - "modified": "2019-03-23T22:42:29.712Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Generated_Content": { - "modified": "2020-10-15T21:40:53.620Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Grid_Layout": { - "modified": "2019-03-23T22:03:28.993Z", - "contributors": [ - "hellschu", - "mfluehr" - ] - }, - "Web/CSS/CSS_Images": { - "modified": "2019-03-18T21:15:48.131Z", - "contributors": [ - "wizAmit", - "mrstork", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Images/Implementing_image_sprites_in_CSS": { - "modified": "2019-03-23T22:41:21.256Z", - "contributors": [ - "patrick-hintermayer", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Lists_and_Counters": { - "modified": "2019-03-23T22:42:24.617Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Lists_and_Counters/CSS_Zähler_verwenden": { - "modified": "2019-03-23T22:41:18.157Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Lists_and_Counters/Konsistente_Listeneinrückung": { - "modified": "2019-03-23T22:42:20.521Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Logical_Properties": { - "modified": "2019-03-23T22:42:21.102Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Masken": { - "modified": "2020-10-15T21:41:26.449Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Namensräume": { - "modified": "2020-10-15T21:41:25.833Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Positioning": { - "modified": "2020-11-24T17:04:06.334Z", - "contributors": [ - "wbamberg" - ] - }, - "Web/CSS/CSS_Positioning/Understanding_z_index": { - "modified": "2020-11-24T17:04:06.642Z", - "contributors": [ - "mfuji09" - ] - }, - "Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index": { - "modified": "2020-11-25T07:01:24.676Z", - "contributors": [ - "Johuspect" - ] - }, - "Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context": { - "modified": "2020-11-25T07:36:50.008Z", - "contributors": [ - "Johuspect" - ] - }, - "Web/CSS/CSS_Referenz": { - "modified": "2019-03-24T00:14:12.141Z", - "contributors": [ - "SJW", - "plathub", - "Claas", - "condottiero1985", - "Sebastianz", - "fscholz", - "tregagnon", - "Jürgen Jeka", - "The Witcher", - "Michael2402", - "Jech", - "Nathymig" - ] - }, - "Web/CSS/CSS_Ruby": { - "modified": "2019-03-23T22:43:34.576Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Selectors": { - "modified": "2019-08-13T05:55:17.230Z", - "contributors": [ - "vaxul", - "ExE-Boss", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Shapes": { - "modified": "2019-03-23T22:41:19.731Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Table": { - "modified": "2019-03-23T22:41:17.252Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Text": { - "modified": "2019-03-18T21:16:59.183Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Textdekoration": { - "modified": "2019-07-23T07:57:58.435Z", - "contributors": [ - "SphinxKnight", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Transforms": { - "modified": "2019-03-23T22:43:34.303Z", - "contributors": [ - "Sebastianz", - "Prinz_Rana", - "teoli" - ] - }, - "Web/CSS/CSS_Transforms/CSS_Transformationen_verwenden": { - "modified": "2019-03-23T22:43:37.336Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Transitions": { - "modified": "2019-03-23T22:43:32.259Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Typen": { - "modified": "2020-04-21T12:32:32.615Z", - "contributors": [ - "kleinesfilmroellchen", - "Claas" - ] - }, - "Web/CSS/CSS_User_Interface": { - "modified": "2019-03-23T22:43:34.455Z", - "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Writing_Modes": { - "modified": "2019-03-23T22:44:48.500Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Farben": { - "modified": "2020-10-15T21:14:08.521Z", - "contributors": [ - "Borgitowner", - "SJW", - "Sebastianz", - "Simplexible", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/ID-Selektoren": { - "modified": "2020-10-15T21:41:21.317Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/Index": { - "modified": "2019-01-16T19:56:04.663Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Initialwert": { - "modified": "2019-03-23T22:18:48.927Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Kindselektoren": { - "modified": "2020-10-15T21:41:20.031Z", - "contributors": [ - "SJW", - "iCON", - "Sebastianz" - ] - }, - "Web/CSS/Klassenselektoren": { - "modified": "2020-10-15T21:41:19.898Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/Kurzformat_Eigenschaft": { - "modified": "2020-11-22T12:51:55.372Z", - "contributors": [ - "Johuspect" - ] - }, - "Web/CSS/Layout_mode": { - "modified": "2019-03-23T22:43:30.465Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Left": { - "modified": "2020-10-15T21:14:00.888Z", - "contributors": [ - "SJW", - "fscholz", - "Simplexible", - "Prinz_Rana", - "Sebastianz", - "The Witcher" - ] - }, - "Web/CSS/Media_Queries": { - "modified": "2020-10-15T21:40:17.095Z", - "contributors": [ - "SJW", - "teoli" - ] - }, - "Web/CSS/Media_Queries/Using_media_queries": { - "modified": "2019-03-23T22:43:31.909Z", - "contributors": [ - "Sebastianz", - "mrstork", - "malayaleecoder", - "teoli" - ] - }, - "Web/CSS/Motion_Path": { - "modified": "2019-03-23T22:43:35.895Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Mozilla_Extensions": { - "modified": "2019-03-24T00:14:14.332Z", - "contributors": [ - "ExE-Boss", - "Sebastianz", - "Prinz_Rana", - "Saschlong", - "SJW", - "fscholz", - "ethertank", - "tregagnon" - ] - }, - "Web/CSS/Paged_Media": { - "modified": "2020-12-03T15:47:57.918Z", - "contributors": [ - "Johuspect", - "Sebastianz" - ] - }, - "Web/CSS/Property_Template": { - "modified": "2019-01-16T14:33:16.131Z", - "contributors": [ - "wbamberg", - "SphinxKnight", - "Sebastianz", - "fscholz", - "ethertank", - "The Witcher", - "Michael2402" - ] - }, - "Web/CSS/Pseudo-classes": { - "modified": "2019-03-23T23:23:46.291Z", - "contributors": [ - "Claas", - "Sebastianz", - "SJW" - ] - }, - "Web/CSS/Pseudo-elements": { - "modified": "2019-03-23T23:23:47.421Z", - "contributors": [ - "Sebastianz", - "nilssolanki", - "SJW" - ] - }, - "Web/CSS/Right": { - "modified": "2020-10-15T21:08:55.796Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz", - "FredB", - "The Witcher" - ] - }, - "Web/CSS/Spezifität": { - "modified": "2019-03-23T23:11:49.533Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Tools": { - "modified": "2019-03-23T22:43:38.676Z", - "contributors": [ - "Sebastianz", - "creativenitish" - ] - }, - "Web/CSS/Tools/Cubic_Bezier_Generator": { - "modified": "2019-03-23T22:43:38.857Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Tools/Linear-gradient_Generator": { - "modified": "2019-03-23T22:43:38.482Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/Top": { - "modified": "2020-10-15T21:14:05.827Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "The Witcher" - ] - }, - "Web/CSS/Tutorials": { - "modified": "2019-03-18T21:41:12.646Z", - "contributors": [ - "fhwfzfge" - ] - }, - "Web/CSS/Type_selectors": { - "modified": "2020-10-15T21:39:36.648Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/Universal_selectors": { - "modified": "2020-10-15T21:39:37.486Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/Vererbung": { - "modified": "2019-03-23T23:13:09.412Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/WebKit_Extensions": { - "modified": "2019-03-23T23:23:45.505Z", - "contributors": [ - "ExE-Boss", - "jlnr", - "SJW" - ] - }, - "Web/CSS/Wertdefinitionssyntax": { - "modified": "2019-03-23T23:11:56.504Z", - "contributors": [ - "Sebastianz", - "Prinz_Rana", - "Krenair", - "prayash" - ] - }, - "Web/CSS/align-content": { - "modified": "2020-10-15T21:29:16.776Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/align-items": { - "modified": "2020-10-15T21:29:16.055Z", - "contributors": [ - "SJW", - "d4rkne55", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/align-self": { - "modified": "2020-10-15T21:29:18.265Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/all": { - "modified": "2020-10-15T21:29:17.609Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "levito" - ] - }, - "Web/CSS/angle": { - "modified": "2020-10-15T21:25:35.659Z", - "contributors": [ - "kleinesfilmroellchen", - "SJW", - "JankingDE", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/angle-percentage": { - "modified": "2020-10-15T22:29:17.516Z", - "contributors": [ - "kleinesfilmroellchen" - ] - }, - "Web/CSS/animation": { - "modified": "2020-10-15T21:25:41.266Z", - "contributors": [ - "SJW", - "mrstork", - "Sebastianz" - ] - }, - "Web/CSS/animation-delay": { - "modified": "2020-10-15T21:28:29.055Z", - "contributors": [ - "SJW", - "beachespecially", - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/animation-direction": { - "modified": "2020-10-15T21:28:33.320Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/animation-duration": { - "modified": "2020-10-15T21:25:38.068Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/animation-fill-mode": { - "modified": "2020-10-15T21:25:33.173Z", - "contributors": [ - "SJW", - "teoli", - "Sebastianz", - "maxn" - ] - }, - "Web/CSS/animation-iteration-count": { - "modified": "2020-10-15T21:25:43.696Z", - "contributors": [ - "SJW", - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/animation-name": { - "modified": "2020-10-15T21:25:41.797Z", - "contributors": [ - "SJW", - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/animation-play-state": { - "modified": "2020-11-03T09:19:42.618Z", - "contributors": [ - "keckelt", - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/animation-timing-function": { - "modified": "2020-10-15T21:29:19.438Z", - "contributors": [ - "AlexWayhill", - "SJW", - "mrstork", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/appearance": { - "modified": "2019-03-23T23:20:00.251Z", - "contributors": [ - "ExE-Boss", - "wbamberg", - "teoli", - "Sebastianz", - "bee8bit" - ] - }, - "Web/CSS/attr()": { - "modified": "2020-11-04T08:51:28.043Z", - "contributors": [ - "chrisdavidmills", - "SJW", - "DerAppelt", - "mrstork", - "prayash", - "Sebastianz", - "screeny05" - ] - }, - "Web/CSS/auto": { - "modified": "2019-03-23T23:23:49.598Z", - "contributors": [ - "SJW" - ] - }, - "Web/CSS/backdrop-filter": { - "modified": "2020-10-15T21:39:39.277Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/backface-visibility": { - "modified": "2020-10-15T21:29:19.302Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/background": { - "modified": "2020-12-04T17:14:04.407Z", - "contributors": [ - "Johuspect", - "fscholz", - "SphinxKnight", - "Sebastianz", - "Yuichiro", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/background-attachment": { - "modified": "2020-12-04T17:12:16.200Z", - "contributors": [ - "Johuspect", - "SphinxKnight", - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/background-blend-mode": { - "modified": "2020-12-04T16:41:14.228Z", - "contributors": [ - "Johuspect", - "ExE-Boss", - "SJW", - "mrstork", - "Sebastianz", - "fscholz", - "kapep" - ] - }, - "Web/CSS/background-clip": { - "modified": "2019-05-01T09:47:01.419Z", - "contributors": [ - "fscholz", - "SJW", - "AickeSchulz" - ] - }, - "Web/CSS/background-color": { - "modified": "2020-10-15T21:12:31.914Z", - "contributors": [ - "Paulb-dev", - "SJW", - "Sebastianz", - "SphinxKnight", - "fscholz", - "ethertank", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/background-image": { - "modified": "2019-03-24T00:05:41.878Z", - "contributors": [ - "Oliver_Schafeld", - "splendid_twd", - "SphinxKnight", - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/background-origin": { - "modified": "2019-03-24T00:05:06.053Z", - "contributors": [ - "fscholz" - ] - }, - "Web/CSS/background-position": { - "modified": "2019-03-24T00:05:05.700Z", - "contributors": [ - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/background-repeat": { - "modified": "2019-03-24T00:05:04.054Z", - "contributors": [ - "SphinxKnight", - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/background-size": { - "modified": "2020-10-15T21:25:02.569Z", - "contributors": [ - "SJW", - "HolgerJeromin", - "fscholz", - "Simplexible", - "Prinz_Rana", - "Sebastianz", - "mikoMK", - "tyler" - ] - }, - "Web/CSS/basic-shape": { - "modified": "2020-10-15T21:28:55.443Z", - "contributors": [ - "kleinesfilmroellchen", - "SJW", - "ExE-Boss", - "Prinz_Rana", - "Simplexible", - "mrstork", - "Sebastianz" - ] - }, - "Web/CSS/berechneter_Wert": { - "modified": "2019-03-23T23:13:10.466Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/border": { - "modified": "2020-10-15T21:12:38.393Z", - "contributors": [ - "SJW", - "schlagi123", - "Sebastianz", - "fscholz", - "Yuichiro", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/border-bottom": { - "modified": "2020-10-15T21:12:37.622Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-bottom-color": { - "modified": "2020-10-15T21:12:47.340Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-bottom-left-radius": { - "modified": "2020-10-15T21:09:26.025Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "FredB", - "Yuichiro", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/border-bottom-right-radius": { - "modified": "2020-10-15T21:12:51.045Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "Yuichiro", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/border-bottom-style": { - "modified": "2020-10-15T21:12:48.275Z", - "contributors": [ - "SJW", - "fscholz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-collapse": { - "modified": "2020-11-24T04:57:52.157Z", - "contributors": [ - "Johuspect", - "SJW", - "fscholz", - "MattDiMu", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/border-color": { - "modified": "2020-10-15T21:12:46.664Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-image": { - "modified": "2020-10-15T21:28:30.192Z", - "contributors": [ - "SJW", - "d4rkne55", - "teoli", - "Sebastianz", - "tyrann0us" - ] - }, - "Web/CSS/border-image-outset": { - "modified": "2020-10-15T21:28:40.542Z", - "contributors": [ - "SJW", - "Simplexible", - "Sebastianz", - "Prinz_Rana", - "teoli" - ] - }, - "Web/CSS/border-image-repeat": { - "modified": "2020-10-15T21:29:19.620Z", - "contributors": [ - "SJW", - "iGadget", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/border-image-slice": { - "modified": "2020-10-15T21:28:59.381Z", - "contributors": [ - "SJW", - "d4rkne55", - "Sebastianz", - "fscholz", - "Simplexible", - "Prinz_Rana", - "tilman" - ] - }, - "Web/CSS/border-image-source": { - "modified": "2020-10-15T21:29:22.891Z", - "contributors": [ - "SJW", - "wizAmit", - "Sebastianz", - "teoli" - ] - }, - "Web/CSS/border-image-width": { - "modified": "2020-10-15T21:29:19.294Z", - "contributors": [ - "SJW", - "d4rkne55", - "Sebastianz", - "fscholz", - "supermueller" - ] - }, - "Web/CSS/border-left": { - "modified": "2019-03-24T00:08:38.506Z", - "contributors": [ - "fscholz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-left-color": { - "modified": "2019-03-18T21:16:13.487Z", - "contributors": [ - "fscholz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-left-style": { - "modified": "2019-03-24T00:08:38.236Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-radius": { - "modified": "2020-10-15T21:07:23.981Z", - "contributors": [ - "SJW", - "iGadget", - "Sebastianz", - "Prinz_Rana", - "fscholz", - "Matthias.Apsel", - "Yuichiro", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/border-right": { - "modified": "2019-03-24T00:08:39.783Z", - "contributors": [ - "fscholz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-right-color": { - "modified": "2019-03-18T21:16:13.299Z", - "contributors": [ - "fscholz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-right-style": { - "modified": "2019-03-24T00:08:32.792Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-spacing": { - "modified": "2020-12-04T16:23:27.298Z", - "contributors": [ - "Johuspect", - "jdus", - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/border-style": { - "modified": "2020-11-06T10:11:26.500Z", - "contributors": [ - "tim-we", - "SJW", - "fscholz", - "serv-inc", - "Sebastianz", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-top": { - "modified": "2019-03-24T00:07:48.019Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-top-color": { - "modified": "2019-03-24T00:08:39.066Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-top-left-radius": { - "modified": "2020-10-15T21:09:25.403Z", - "contributors": [ - "SJW", - "fscholz", - "FredB", - "Yuichiro", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/border-top-right-radius": { - "modified": "2020-10-15T21:09:23.128Z", - "contributors": [ - "SJW", - "fscholz", - "FredB", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/border-top-style": { - "modified": "2019-03-24T00:08:34.497Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/border-width": { - "modified": "2019-03-24T00:08:32.950Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/box-decoration-break": { - "modified": "2020-10-15T21:39:28.136Z", - "contributors": [ - "SJW", - "teoli" - ] - }, - "Web/CSS/box-shadow": { - "modified": "2020-10-15T21:13:28.481Z", - "contributors": [ - "SJW", - "wiegels", - "Sebastianz", - "Prinz_Rana", - "Eschon", - "supermueller", - "fscholz", - "Jürgen Jeka", - "The Witcher" - ] - }, - "Web/CSS/box-sizing": { - "modified": "2020-12-04T16:21:46.208Z", - "contributors": [ - "Johuspect", - "SJW", - "Volker-E", - "Sebastianz", - "tronsha", - "fscholz", - "maxstrebel" - ] - }, - "Web/CSS/break-after": { - "modified": "2020-10-15T21:38:17.962Z", - "contributors": [ - "SJW", - "tobias47n9e", - "fscholz", - "Sebastianz", - "spiegelp" - ] - }, - "Web/CSS/break-inside": { - "modified": "2020-10-15T22:19:22.072Z", - "contributors": [ - "bershanskiy", - "tonra" - ] - }, - "Web/CSS/calc()": { - "modified": "2020-11-04T09:07:46.370Z", - "contributors": [ - "chrisdavidmills", - "zuzuzu", - "SJW", - "giffeler", - "mrstork", - "prayash", - "teoli", - "hansspiess", - "dominikschreiber", - "fscholz" - ] - }, - "Web/CSS/caption-side": { - "modified": "2020-12-04T16:19:59.716Z", - "contributors": [ - "Johuspect", - "SJW", - "fscholz", - "Sebastianz", - "Sheppy" - ] - }, - "Web/CSS/clear": { - "modified": "2020-11-24T16:51:40.305Z", - "contributors": [ - "Johuspect", - "SJW", - "wbamberg", - "fscholz", - "Sebastianz", - "Michael2402" - ] - }, - "Web/CSS/clip": { - "modified": "2020-10-15T21:29:22.068Z", - "contributors": [ - "SJW", - "mrstork", - "Sebastianz" - ] - }, - "Web/CSS/clip-path": { - "modified": "2020-10-15T21:28:31.008Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/color": { - "modified": "2020-10-15T21:13:28.890Z", - "contributors": [ - "SJW", - "Sebastianz", - "wizAmit", - "slayslot", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/column-count": { - "modified": "2019-03-23T23:22:21.773Z", - "contributors": [ - "Sebastianz", - "fscholz", - "vaupeh", - "SJW" - ] - }, - "Web/CSS/column-fill": { - "modified": "2020-10-15T21:25:38.904Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/column-gap": { - "modified": "2020-10-15T21:25:43.274Z", - "contributors": [ - "SJW", - "Sebastianz", - "Prinz_Rana", - "fscholz" - ] - }, - "Web/CSS/column-rule": { - "modified": "2020-10-15T21:28:37.320Z", - "contributors": [ - "SJW", - "Sebastianz", - "Prinz_Rana", - "fscholz" - ] - }, - "Web/CSS/column-rule-color": { - "modified": "2020-10-15T21:28:41.960Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/column-rule-style": { - "modified": "2020-10-15T21:28:36.751Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/column-rule-width": { - "modified": "2020-10-15T21:28:34.842Z", - "contributors": [ - "duduindo", - "SJW", - "Prinz_Rana", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/column-span": { - "modified": "2020-10-15T21:25:41.497Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/column-width": { - "modified": "2020-10-15T21:25:50.342Z", - "contributors": [ - "SJW", - "Prinz_Rana", - "teoli", - "Sebastianz", - "eseifert" - ] - }, - "Web/CSS/columns": { - "modified": "2020-12-04T17:15:37.070Z", - "contributors": [ - "Johuspect", - "SJW", - "Sebastianz", - "Prinz_Rana", - "fscholz" - ] - }, - "Web/CSS/content": { - "modified": "2020-10-15T21:29:22.645Z", - "contributors": [ - "escattone", - "Editmonkey", - "SJW", - "Sebastianz", - "webdesignberlin" - ] - }, - "Web/CSS/counter-increment": { - "modified": "2020-10-15T21:29:17.920Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/counter-reset": { - "modified": "2020-10-15T21:29:21.512Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/cursor": { - "modified": "2020-10-15T21:13:40.945Z", - "contributors": [ - "nikcani", - "SJW", - "R0bin", - "Sebastianz", - "bee8bit", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/custom-ident": { - "modified": "2019-03-23T22:44:45.016Z", - "contributors": [ - "schlagi123", - "Guillaume-Heras", - "Sebastianz" - ] - }, - "Web/CSS/direction": { - "modified": "2020-10-15T21:42:48.562Z", - "contributors": [ - "SJW", - "Dev201" - ] - }, - "Web/CSS/display": { - "modified": "2020-10-15T21:14:06.910Z", - "contributors": [ - "felixhaeberle", - "SJW", - "Sebastianz", - "Volker-E", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/empty-cells": { - "modified": "2020-10-15T21:14:02.728Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/ersetztes_Element": { - "modified": "2019-03-23T22:00:32.824Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/filter": { - "modified": "2020-10-15T21:28:35.076Z", - "contributors": [ - "SJW", - "Univream", - "Sebastianz", - "Prinz_Rana", - "teoli" - ] - }, - "Web/CSS/flex-flow": { - "modified": "2020-10-15T21:25:37.797Z", - "contributors": [ - "SJW", - "udvlp", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/flex-grow": { - "modified": "2020-10-15T21:25:37.976Z", - "contributors": [ - "vssn", - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/flex-shrink": { - "modified": "2020-10-15T21:29:17.989Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/flex-wrap": { - "modified": "2020-10-15T21:25:39.113Z", - "contributors": [ - "SJW", - "brainscript", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/float": { - "modified": "2020-10-15T21:14:18.304Z", - "contributors": [ - "SJW", - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/font": { - "modified": "2019-03-25T11:07:06.420Z", - "contributors": [ - "KaiVolland", - "tim_kraut", - "MI5", - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/font-family": { - "modified": "2020-10-15T21:28:35.462Z", - "contributors": [ - "SJW", - "fscholz", - "dio", - "Sebastianz", - "timbernasley" - ] - }, - "Web/CSS/font-feature-settings": { - "modified": "2020-10-15T21:26:12.551Z", - "contributors": [ - "SJW", - "Guillaume-Heras", - "fscholz", - "Volker-E", - "elomatreb" - ] - }, - "Web/CSS/font-size": { - "modified": "2020-10-15T21:55:36.707Z", - "contributors": [ - "SJW", - "Anonymous" - ] - }, - "Web/CSS/font-style": { - "modified": "2020-10-15T22:29:43.767Z", - "contributors": [ - "zuzuzu" - ] - }, - "Web/CSS/font-variant": { - "modified": "2020-10-15T21:25:39.056Z", - "contributors": [ - "zuzuzu", - "cgebel", - "SJW", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/font-weight": { - "modified": "2020-10-15T21:25:38.147Z", - "contributors": [ - "zuzuzu", - "kaljak", - "SphinxKnight", - "fscholz", - "Sebastianz", - "dio", - "SJW" - ] - }, - "Web/CSS/frequency": { - "modified": "2019-03-23T23:23:30.111Z", - "contributors": [ - "Sebastianz", - "fscholz", - "SJW" - ] - }, - "Web/CSS/gradient": { - "modified": "2019-03-23T23:23:41.931Z", - "contributors": [ - "Sebastianz", - "fscholz", - "SJW" - ] - }, - "Web/CSS/grid": { - "modified": "2020-10-15T21:52:44.744Z", - "contributors": [ - "SJW", - "ksm2" - ] - }, - "Web/CSS/grid-gap": { - "modified": "2020-10-15T22:00:43.740Z", - "contributors": [ - "AlexWayhill", - "Craeckerffm" - ] - }, - "Web/CSS/grid-template-areas": { - "modified": "2020-10-15T22:02:47.559Z", - "contributors": [ - "hutattedonmyarm" - ] - }, - "Web/CSS/height": { - "modified": "2020-10-15T21:14:22.159Z", - "contributors": [ - "SJW", - "mrstork", - "Sebastianz", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/hyphens": { - "modified": "2020-10-15T21:23:04.048Z", - "contributors": [ - "michelbalzer", - "SJW", - "tobias47n9e", - "julianhirt", - "SphinxKnight", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/image": { - "modified": "2020-10-15T21:28:54.360Z", - "contributors": [ - "SJW", - "slayslot", - "mrstork", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/image-orientation": { - "modified": "2020-10-15T21:36:43.065Z", - "contributors": [ - "fscholz", - "prayash", - "Sebastianz", - "Dargmuesli" - ] - }, - "Web/CSS/image-rendering": { - "modified": "2020-10-15T21:32:42.453Z", - "contributors": [ - "SJW", - "Djfe", - "Sebastianz", - "Sheppy", - "robinboening", - "vale981" - ] - }, - "Web/CSS/inherit": { - "modified": "2020-10-15T21:29:21.425Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/initial": { - "modified": "2019-03-23T23:22:15.583Z", - "contributors": [ - "ralfstx", - "ansgar", - "SJW" - ] - }, - "Web/CSS/integer": { - "modified": "2020-10-15T21:25:43.258Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/justify-content": { - "modified": "2020-10-15T21:29:14.742Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/length": { - "modified": "2020-10-15T21:25:36.832Z", - "contributors": [ - "zuzuzu", - "kleinesfilmroellchen", - "SJW", - "mdnde", - "Sebastianz", - "supermueller", - "fscholz", - "Lucky42" - ] - }, - "Web/CSS/letter-spacing": { - "modified": "2020-10-15T21:40:15.968Z", - "contributors": [ - "SJW", - "tyrann0us", - "Prinz_Rana", - "teoli", - "Sebastianz" - ] - }, - "Web/CSS/line-break": { - "modified": "2020-10-15T21:39:35.382Z", - "contributors": [ - "SJW", - "ExE-Boss", - "Sebastianz" - ] - }, - "Web/CSS/linear-gradient()": { - "modified": "2020-11-16T08:56:43.415Z", - "contributors": [ - "chrisdavidmills", - "marcus-at-localhost", - "JuSchu", - "sahin", - "Sebastianz", - "prayash", - "auranvesdranor" - ] - }, - "Web/CSS/list-style": { - "modified": "2019-03-24T00:03:48.208Z", - "contributors": [ - "hansspiess", - "SphinxKnight", - "Aryx", - "teoli", - "screeny05", - "fscholz", - "SJW", - "ethertank", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/list-style-image": { - "modified": "2020-10-15T21:29:20.423Z", - "contributors": [ - "SJW", - "wizAmit", - "SphinxKnight", - "Sebastianz" - ] - }, - "Web/CSS/list-style-position": { - "modified": "2020-10-15T21:29:19.736Z", - "contributors": [ - "SJW", - "SphinxKnight", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/list-style-type": { - "modified": "2020-10-15T21:28:59.236Z", - "contributors": [ - "SJW", - "mdnde", - "Guillaume-Heras", - "Sebastianz", - "SphinxKnight" - ] - }, - "Web/CSS/margin": { - "modified": "2019-03-24T00:08:49.174Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/margin-bottom": { - "modified": "2019-03-24T00:08:42.855Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/margin-left": { - "modified": "2019-03-23T23:18:57.876Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/margin-right": { - "modified": "2019-03-24T00:08:48.817Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/margin-top": { - "modified": "2019-03-23T23:13:12.430Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/mask": { - "modified": "2020-10-15T21:29:04.125Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/max-height": { - "modified": "2020-10-15T21:14:01.543Z", - "contributors": [ - "SJW", - "Simplexible", - "Sebastianz", - "Prinz_Rana", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/max-width": { - "modified": "2019-03-18T21:16:49.107Z", - "contributors": [ - "fscholz", - "SJW", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/min-height": { - "modified": "2019-03-24T00:03:51.575Z", - "contributors": [ - "fscholz", - "SJW", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/min-width": { - "modified": "2019-03-24T00:03:50.944Z", - "contributors": [ - "fscholz", - "SJW", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/mix-blend-mode": { - "modified": "2020-10-15T21:37:36.115Z", - "contributors": [ - "ExE-Boss", - "SJW", - "Vainamo", - "Oliver_Schafeld", - "mrstork", - "Sebastianz", - "MaxKoehler" - ] - }, - "Web/CSS/none": { - "modified": "2019-03-23T23:23:49.504Z", - "contributors": [ - "SJW" - ] - }, - "Web/CSS/normal": { - "modified": "2019-03-23T23:23:47.885Z", - "contributors": [ - "dio", - "SJW" - ] - }, - "Web/CSS/number": { - "modified": "2020-10-15T21:25:33.936Z", - "contributors": [ - "duduindo", - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/object-fit": { - "modified": "2020-10-15T21:31:57.582Z", - "contributors": [ - "sp1r1t", - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/object-position": { - "modified": "2019-03-23T22:11:15.878Z", - "contributors": [ - "Craeckerffm" - ] - }, - "Web/CSS/opacity": { - "modified": "2020-10-15T21:09:12.150Z", - "contributors": [ - "SJW", - "MaxValue", - "Sebastianz", - "fscholz", - "FredB", - "Jürgen Jeka", - "j.j.", - "Michael2402" - ] - }, - "Web/CSS/order": { - "modified": "2020-10-15T21:29:16.145Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/orphans": { - "modified": "2020-12-04T16:16:08.297Z", - "contributors": [ - "Johuspect", - "SebinNyshkim" - ] - }, - "Web/CSS/outline": { - "modified": "2020-12-04T16:15:02.597Z", - "contributors": [ - "Johuspect" - ] - }, - "Web/CSS/outline-color": { - "modified": "2019-03-23T22:19:25.777Z", - "contributors": [ - "jmartsch" - ] - }, - "Web/CSS/overflow": { - "modified": "2020-10-15T21:13:53.383Z", - "contributors": [ - "SJW", - "KittMedia", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/overscroll-behavior": { - "modified": "2020-10-15T22:17:19.963Z", - "contributors": [ - "PPElite" - ] - }, - "Web/CSS/overscroll-behavior-y": { - "modified": "2020-10-15T22:24:50.460Z", - "contributors": [ - "jewuma" - ] - }, - "Web/CSS/padding": { - "modified": "2020-10-15T21:12:30.556Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz", - "Yuichiro", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/padding-bottom": { - "modified": "2019-03-24T00:08:49.006Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/padding-left": { - "modified": "2019-03-24T00:08:45.424Z", - "contributors": [ - "dio", - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/padding-right": { - "modified": "2019-03-24T00:08:45.285Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/padding-top": { - "modified": "2019-03-24T00:08:43.442Z", - "contributors": [ - "fscholz", - "SJW", - "Yuichiro", - "Michael2402" - ] - }, - "Web/CSS/page-break-after": { - "modified": "2019-03-24T00:04:28.971Z", - "contributors": [ - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/page-break-before": { - "modified": "2019-03-24T00:04:28.120Z", - "contributors": [ - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/page-break-inside": { - "modified": "2019-03-24T00:04:23.699Z", - "contributors": [ - "sibbl", - "wbamberg", - "fscholz", - "SJW", - "Michael2402" - ] - }, - "Web/CSS/percentage": { - "modified": "2020-10-15T21:28:53.357Z", - "contributors": [ - "SJW", - "Sebastianz", - "Prinz_Rana", - "fscholz" - ] - }, - "Web/CSS/pointer-events": { - "modified": "2019-03-23T22:46:26.785Z", - "contributors": [ - "burnaDLX", - "avalanche", - "HendrikRunte", - "OppaHeinz" - ] - }, - "Web/CSS/position": { - "modified": "2020-10-15T21:10:31.814Z", - "contributors": [ - "MeiKatz", - "SJW", - "rimace", - "Sebastianz", - "lfuelling", - "fscholz", - "facial", - "Michael2402" - ] - }, - "Web/CSS/position_value": { - "modified": "2020-10-15T21:41:09.046Z", - "contributors": [ - "SJW", - "mrstork", - "Sebastianz" - ] - }, - "Web/CSS/quotes": { - "modified": "2020-10-15T21:28:32.529Z", - "contributors": [ - "SJW", - "Krenair", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/ratio": { - "modified": "2020-10-15T21:25:37.478Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/resize": { - "modified": "2020-12-04T15:35:06.800Z", - "contributors": [ - "Johuspect", - "SJW", - "SphinxKnight", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/resolution": { - "modified": "2019-03-23T23:13:45.403Z", - "contributors": [ - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/row-gap": { - "modified": "2020-12-07T11:33:06.603Z", - "contributors": [ - "Borgitowner", - "hellschu" - ] - }, - "Web/CSS/ruby-align": { - "modified": "2020-10-15T21:39:35.553Z", - "contributors": [ - "SJW", - "Sebastianz" - ] - }, - "Web/CSS/scroll-behavior": { - "modified": "2020-10-15T22:01:09.546Z", - "contributors": [ - "Ryuno-Ki", - "jmartsch", - "diverent2", - "Goldfischpeter" - ] - }, - "Web/CSS/shape": { - "modified": "2020-10-15T21:28:32.233Z", - "contributors": [ - "SJW", - "Sebastianz", - "Prinz_Rana", - "fscholz" - ] - }, - "Web/CSS/string": { - "modified": "2020-10-15T21:39:38.004Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/tab-size": { - "modified": "2020-10-15T21:25:37.063Z", - "contributors": [ - "SJW", - "Sebastianz", - "Prinz_Rana" - ] - }, - "Web/CSS/table-layout": { - "modified": "2020-12-04T16:11:25.312Z", - "contributors": [ - "Johuspect" - ] - }, - "Web/CSS/tatsächlicher_Wert": { - "modified": "2019-03-23T22:43:32.481Z", - "contributors": [ - "schlagi123", - "Sebastianz" - ] - }, - "Web/CSS/text-align": { - "modified": "2020-12-04T16:04:32.676Z", - "contributors": [ - "Johuspect", - "SJW", - "wbamberg", - "Sebastianz", - "fscholz", - "Michael2402" - ] - }, - "Web/CSS/text-align-last": { - "modified": "2020-10-15T22:20:45.740Z", - "contributors": [ - "MichaelGellings" - ] - }, - "Web/CSS/text-decoration": { - "modified": "2020-10-15T21:14:00.052Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/text-decoration-color": { - "modified": "2019-03-23T23:33:25.614Z", - "contributors": [ - "Sebastianz", - "fscholz", - "Fxedel", - "ethertank", - "TheRojam" - ] - }, - "Web/CSS/text-decoration-line": { - "modified": "2020-10-15T21:28:36.449Z", - "contributors": [ - "SJW", - "teoli", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/text-indent": { - "modified": "2020-10-15T21:34:09.488Z", - "contributors": [ - "SJW", - "fscholz", - "Simplexible", - "Prinz_Rana", - "Sebastianz", - "nVentis" - ] - }, - "Web/CSS/text-justify": { - "modified": "2020-10-15T22:20:47.319Z", - "contributors": [ - "MichaelGellings" - ] - }, - "Web/CSS/text-overflow": { - "modified": "2020-10-15T21:27:57.701Z", - "contributors": [ - "SJW", - "Glogau", - "Guillaume-Heras", - "Sebastianz", - "DavidArndt" - ] - }, - "Web/CSS/text-rendering": { - "modified": "2020-10-15T21:27:06.900Z", - "contributors": [ - "SJW", - "Sebastianz", - "powerswitch" - ] - }, - "Web/CSS/text-shadow": { - "modified": "2020-10-15T21:13:25.181Z", - "contributors": [ - "SJW", - "Prinz_Rana", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/text-transform": { - "modified": "2019-10-21T08:20:30.891Z", - "contributors": [ - "decay42", - "fscholz", - "Sebastianz", - "nVentis", - "julian.weinert" - ] - }, - "Web/CSS/text-underline-position": { - "modified": "2020-10-15T21:28:31.332Z", - "contributors": [ - "SJW", - "Sebastianz", - "fscholz", - "Lucky42" - ] - }, - "Web/CSS/time": { - "modified": "2020-10-15T21:23:00.694Z", - "contributors": [ - "SJW", - "Sebastianz", - "Prinz_Rana", - "fscholz" - ] - }, - "Web/CSS/touch-action": { - "modified": "2020-10-15T21:34:13.763Z", - "contributors": [ - "SJW", - "fscholz", - "teoli", - "Sebastianz", - "fboes", - "chrros" - ] - }, - "Web/CSS/transform": { - "modified": "2020-10-15T21:31:19.370Z", - "contributors": [ - "LoVo666", - "SJW", - "wilmaedd", - "Sebastianz", - "fscholz", - "MatzeMarcel" - ] - }, - "Web/CSS/transform-origin": { - "modified": "2020-10-15T22:00:48.518Z", - "contributors": [ - "mack3457", - "spotbot2k" - ] - }, - "Web/CSS/transition": { - "modified": "2020-10-15T21:57:36.200Z", - "contributors": [ - "Ryuno-Ki", - "SJW", - "Kairyon" - ] - }, - "Web/CSS/transition-property": { - "modified": "2020-10-15T21:33:33.457Z", - "contributors": [ - "SJW", - "Sebastianz", - "felhe", - "StephenJB" - ] - }, - "Web/CSS/unicode-bidi": { - "modified": "2020-10-15T21:42:38.107Z", - "contributors": [ - "SJW", - "Dev201" - ] - }, - "Web/CSS/unset": { - "modified": "2020-10-15T21:37:37.480Z", - "contributors": [ - "SJW", - "seemann", - "Sebastianz" - ] - }, - "Web/CSS/url": { - "modified": "2020-10-15T22:01:29.787Z", - "contributors": [ - "valentinprotiuc" - ] - }, - "Web/CSS/vertical-align": { - "modified": "2020-10-15T21:14:21.203Z", - "contributors": [ - "nw520", - "iGadget", - "Artjom", - "fscholz", - "SJW", - "patpir", - "Michael2402" - ] - }, - "Web/CSS/visibility": { - "modified": "2020-10-15T21:14:04.715Z", - "contributors": [ - "SJW", - "fscholz", - "Sebastianz", - "Michael2402" - ] - }, - "Web/CSS/white-space": { - "modified": "2020-12-04T16:00:27.642Z", - "contributors": [ - "Johuspect", - "SJW", - "fscholz", - "Sebastianz", - "kelunik", - "bee8bit", - "Unity" - ] - }, - "Web/CSS/widows": { - "modified": "2020-12-03T14:57:27.603Z", - "contributors": [ - "Johuspect", - "SebinNyshkim", - "SJW", - "Sebastianz", - "fscholz" - ] - }, - "Web/CSS/width": { - "modified": "2020-10-15T21:14:05.278Z", - "contributors": [ - "PPElite", - "SJW", - "Simplexible", - "Prinz_Rana", - "Sebastianz", - "fscholz", - "Jürgen Jeka", - "Michael2402" - ] - }, - "Web/CSS/word-break": { - "modified": "2020-10-15T21:37:33.900Z", - "contributors": [ - "SJW", - "okj579", - "teoli", - "fscholz", - "Sebastianz" - ] - }, - "Web/CSS/word-spacing": { - "modified": "2020-10-15T21:39:36.068Z", - "contributors": [ - "SJW", - "Prinz_Rana", - "Sebastianz" - ] - }, - "Web/CSS/word-wrap": { - "modified": "2020-10-15T21:38:14.535Z", - "contributors": [ - "SJW", - "ksuess", - "screeny05", - "Clubfan22", - "fscholz", - "Sebastianz", - "spiegelp" - ] - }, - "Web/CSS/z-index": { - "modified": "2020-11-24T17:13:13.731Z", - "contributors": [ - "Johuspect", - "SJW", - "chrisdavidmills", - "steve-stnhbr", - "Sebastianz", - "fscholz", - "rwetzlmayr", - "axlwaii" - ] - }, - "Web/Demos_of_open_web_technologies": { - "modified": "2019-03-23T22:39:34.270Z", - "contributors": [ - "sigoa", - "pixelwiese", - "Dev201" - ] - }, - "Web/Events": { - "modified": "2019-09-15T10:58:54.372Z", - "contributors": [ - "grumpy-cat", - "wbamberg", - "StevenS77", - "teoli" - ] - }, - "Web/Events/DOMContentLoaded": { - "modified": "2019-04-30T14:16:07.184Z", - "contributors": [ - "wbamberg", - "timvancleef", - "forrestkirby", - "fscholz", - "Sewi", - "horlabs" - ] - }, - "Web/Events/change": { - "modified": "2019-03-23T23:08:15.170Z", - "contributors": [ - "fscholz", - "spiegelp" - ] - }, - "Web/Events/load": { - "modified": "2019-09-11T09:06:16.530Z", - "contributors": [ - "wbamberg", - "fscholz", - "LeoDecking" - ] - }, - "Web/Events/readystatechange": { - "modified": "2019-03-23T22:13:59.735Z", - "contributors": [ - "fscholz", - "mdnde", - "cussack", - "Lepstr" - ] - }, - "Web/Guide": { - "modified": "2019-03-23T23:28:10.493Z", - "contributors": [ - "olhaar", - "loki", - "Sheppy" - ] - }, - "Web/Guide/AJAX": { - "modified": "2019-03-24T00:04:53.836Z", - "contributors": [ - "chrisdavidmills", - "DineshMv", - "fscholz", - "hrctelekom", - "DavidWalsh", - "Locke", - "M@d Man" - ] - }, - "Web/Guide/AJAX/Erste_Schritte": { - "modified": "2020-08-11T10:37:53.338Z", - "contributors": [ - "merlincom" - ] - }, - "Web/Guide/CSS/Getting_started": { - "modified": "2019-03-24T00:05:49.642Z", - "contributors": [ - "teoli", - "fscholz", - "DavidWalsh" - ] - }, - "Web/Guide/CSS/Getting_started/Farbe": { - "modified": "2019-03-23T23:08:03.393Z", - "contributors": [ - "spiegelp", - "thkoch" - ] - }, - "Web/Guide/CSS/Getting_started/Kaskadierung_und_vererbung": { - "modified": "2019-03-23T22:49:16.030Z", - "contributors": [ - "spiegelp" - ] - }, - "Web/Guide/CSS/Getting_started/Lesbares_CSS": { - "modified": "2019-03-23T22:41:33.439Z", - "contributors": [ - "spiegelp" - ] - }, - "Web/Guide/CSS/Getting_started/Selektoren": { - "modified": "2019-03-23T23:11:23.467Z", - "contributors": [ - "woiddale", - "spiegelp", - "hpkainz" - ] - }, - "Web/Guide/CSS/Getting_started/Textstyles": { - "modified": "2019-03-23T22:49:16.242Z", - "contributors": [ - "spiegelp" - ] - }, - "Web/Guide/CSS/Getting_started/Was_ist_CSS": { - "modified": "2020-05-05T12:04:06.710Z", - "contributors": [ - "Helge-HH", - "fhwfzfge", - "msc1979", - "fscholz", - "Palmstroem", - "barning" - ] - }, - "Web/Guide/CSS/Getting_started/Why_use_CSS": { - "modified": "2019-03-23T22:57:29.159Z", - "contributors": [ - "fhwfzfge", - "Palmstroem" - ] - }, - "Web/Guide/CSS/Getting_started/Wie_CSS_funktioniert": { - "modified": "2019-03-23T22:57:04.436Z", - "contributors": [ - "Palmstroem" - ] - }, - "Web/Guide/CSS/Scaling_background_images": { - "modified": "2019-03-23T23:06:19.663Z", - "contributors": [ - "sos4nt", - "mrstork", - "webwirbel" - ] - }, - "Web/Guide/DOM": { - "modified": "2019-03-23T23:28:11.671Z", - "contributors": [ - "Sheppy" - ] - }, - "Web/Guide/DOM/Manipulating_the_browser_history": { - "modified": "2019-03-23T23:28:10.854Z", - "contributors": [ - "wanst", - "NiklasMerz", - "daniel-evers", - "Adowrath", - "serv-inc", - "Oliver_Schafeld", - "BugHunter2k", - "christian314159", - "darksider3" - ] - }, - "Web/Guide/Events": { - "modified": "2019-03-18T21:10:49.464Z", - "contributors": [ - "stef4412", - "gportioli" - ] - }, - "Web/Guide/Events/Creating_and_triggering_events": { - "modified": "2019-03-18T20:36:47.550Z", - "contributors": [ - "td8" - ] - }, - "Web/Guide/Graphics": { - "modified": "2019-03-23T23:05:58.536Z", - "contributors": [ - "mdschweda", - "Aloso", - "Cginybetty" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial": { - "modified": "2020-07-31T10:20:16.447Z", - "contributors": [ - "mgrubinger", - "sigoa", - "surferboy250", - "GeorgKern", - "Leun4m", - "medium-endian", - "manni66", - "pixunil" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial/Advanced_animations": { - "modified": "2019-03-23T22:48:52.383Z", - "contributors": [ - "teoli", - "jumpball" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial/Applying_styles_and_colors": { - "modified": "2019-10-10T16:33:46.525Z", - "contributors": [ - "Sebastianz", - "GeorgKern" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial/Basic_animations": { - "modified": "2019-03-18T21:45:29.279Z", - "contributors": [ - "RmnWtnkmp" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial/Bilder": { - "modified": "2019-03-23T23:12:04.746Z", - "contributors": [ - "sombrastudios", - "teoli", - "Leun4m", - "thedaft", - "pixunil" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial/Canvas_optimieren": { - "modified": "2019-03-18T21:47:09.896Z", - "contributors": [ - "SimonBuxx" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial/Drawing_text": { - "modified": "2019-03-18T21:38:17.565Z", - "contributors": [ - "Johann150" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial/Formen_zeichnen": { - "modified": "2019-10-06T12:20:20.273Z", - "contributors": [ - "I_I", - "oezpeda", - "Siphalor", - "teoli", - "Leun4m", - "thedaft", - "pixunil" - ] - }, - "Web/Guide/HTML/Canvas_Tutorial/Grundlagen": { - "modified": "2019-10-06T12:11:53.548Z", - "contributors": [ - "I_I", - "fheckl", - "FelixLehmann", - "P5ych0", - "teoli", - "Leun4m", - "medium-endian", - "pixunil" - ] - }, - "Web/Guide/HTML/Content_Editable": { - "modified": "2020-02-12T02:09:56.043Z", - "contributors": [ - "blackjack4494", - "lxdiamond" - ] - }, - "Web/Guide/HTML/Inhaltskategorien": { - "modified": "2020-07-16T11:12:55.534Z", - "contributors": [ - "matthiasulrich", - "Sebastianz", - "jumpball" - ] - }, - "Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document": { - "modified": "2019-03-18T20:37:20.242Z", - "contributors": [ - "SebinNyshkim", - "BlackRebell89" - ] - }, - "Web/HTML": { - "modified": "2019-09-10T15:19:11.194Z", - "contributors": [ - "SphinxKnight", - "NoldoArnion", - "Darkterror45", - "sigoa", - "lumberplumber", - "Draussenduscher", - "VJSchneid", - "skl", - "alippold", - "fscholz", - "kklein", - "LexAndreessen", - "Henry-usa", - "Timmi" - ] - }, - "Web/HTML/Applying_color": { - "modified": "2019-03-18T21:41:16.488Z", - "contributors": [ - "DasRudelndeRudel", - "fhwfzfge" - ] - }, - "Web/HTML/Attributes": { - "modified": "2020-08-17T16:24:34.561Z", - "contributors": [ - "Gitti039", - "steemit-halloworld", - "lkreimann", - "schlagi123", - "LazerPhil", - "Anonymous", - "StevenS77" - ] - }, - "Web/HTML/Block-level_elemente": { - "modified": "2020-05-07T06:16:30.382Z", - "contributors": [ - "zuzuzu", - "Loilo", - "mdschweda", - "drgn", - "VJSchneid", - "teoli", - "lukas.oppermann" - ] - }, - "Web/HTML/Canvas": { - "modified": "2019-03-23T23:16:11.989Z", - "contributors": [ - "sigoa", - "petacat", - "Aloso", - "barning", - "andreas.remdt" - ] - }, - "Web/HTML/Element": { - "modified": "2020-01-27T05:32:14.694Z", - "contributors": [ - "lucas-walter", - "PascalKlassen", - "SJW", - "schlagi123", - "denis.zygann@gmail.com", - "teoli", - "ethertank", - "adrianfischer", - "fscholz", - "Crash" - ] - }, - "Web/HTML/Element/Frame": { - "modified": "2020-10-15T22:10:35.778Z", - "contributors": [ - "thunderhook" - ] - }, - "Web/HTML/Element/Input": { - "modified": "2020-03-21T07:28:26.249Z", - "contributors": [ - "Ryuno-Ki", - "evayde", - "accessabilly", - "Skasi", - "JorisGutjahr", - "chrillek", - "yannick_versley", - "Sebastianz", - "dio", - "teoli", - "thaddeus" - ] - }, - "Web/HTML/Element/Input/button": { - "modified": "2020-01-04T13:22:17.254Z", - "contributors": [ - "use-x", - "Breaker222", - "Sebastianz", - "Sweapz" - ] - }, - "Web/HTML/Element/Input/checkbox": { - "modified": "2020-10-15T22:29:32.835Z", - "contributors": [ - "clemens.klapp" - ] - }, - "Web/HTML/Element/Shadow": { - "modified": "2019-04-09T10:21:03.813Z", - "contributors": [ - "nnscr", - "AndreasSchantl" - ] - }, - "Web/HTML/Element/a": { - "modified": "2019-03-23T23:13:37.609Z", - "contributors": [ - "dio", - "dhcgn", - "Abro", - "omicron81", - "Type-Style", - "Sebastianz", - "skl", - "Lucky42" - ] - }, - "Web/HTML/Element/abbr": { - "modified": "2020-10-15T21:28:46.526Z", - "contributors": [ - "SebinNyshkim", - "Sebastianz", - "fscholz" - ] - }, - "Web/HTML/Element/acronym": { - "modified": "2020-10-15T21:28:43.905Z", - "contributors": [ - "SebinNyshkim", - "kklein" - ] - }, - "Web/HTML/Element/address": { - "modified": "2019-03-23T23:13:25.598Z", - "contributors": [ - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/applet": { - "modified": "2019-03-23T23:13:28.644Z", - "contributors": [ - "kklein" - ] - }, - "Web/HTML/Element/area": { - "modified": "2020-10-15T21:34:00.314Z", - "contributors": [ - "fscholz", - "Sebastianz", - "spiegelp" - ] - }, - "Web/HTML/Element/article": { - "modified": "2020-10-15T21:28:44.586Z", - "contributors": [ - "SebinNyshkim", - "eluchsinger", - "Sebastianz" - ] - }, - "Web/HTML/Element/aside": { - "modified": "2020-10-15T21:28:45.868Z", - "contributors": [ - "fscholz", - "Qowyn", - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/b": { - "modified": "2019-03-24T00:12:26.873Z", - "contributors": [ - "Maugo", - "schlagi123", - "tobiasfabian", - "teoli", - "DD0101", - "fscholz", - "Crash" - ] - }, - "Web/HTML/Element/base": { - "modified": "2019-03-18T20:55:12.966Z", - "contributors": [ - "nerdbeere", - "fabsenet", - "marymar", - "Sebastianz", - "xomz", - "SJW" - ] - }, - "Web/HTML/Element/bdi": { - "modified": "2019-03-23T22:05:29.691Z", - "contributors": [ - "grandmalovesyou", - "Leun4m" - ] - }, - "Web/HTML/Element/bdo": { - "modified": "2019-03-23T23:13:23.713Z", - "contributors": [ - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/bgsound": { - "modified": "2019-03-23T23:08:23.063Z", - "contributors": [ - "MorningCrafter" - ] - }, - "Web/HTML/Element/big": { - "modified": "2019-03-23T23:13:20.974Z", - "contributors": [ - "kklein" - ] - }, - "Web/HTML/Element/blink": { - "modified": "2019-03-23T23:13:22.754Z", - "contributors": [ - "Aryx", - "kklein" - ] - }, - "Web/HTML/Element/blockquote": { - "modified": "2019-03-23T23:13:24.036Z", - "contributors": [ - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/body": { - "modified": "2019-03-23T23:06:05.733Z", - "contributors": [ - "Sebastianz", - "felhe", - "loki" - ] - }, - "Web/HTML/Element/br": { - "modified": "2019-03-23T23:37:55.770Z", - "contributors": [ - "schlagi123", - "dio", - "teoli", - "Sprottenwels" - ] - }, - "Web/HTML/Element/canvas": { - "modified": "2019-03-24T00:07:16.201Z", - "contributors": [ - "benediktp", - "teoli", - "pixunil", - "xaky", - "iab" - ] - }, - "Web/HTML/Element/caption": { - "modified": "2019-03-18T21:14:29.827Z", - "contributors": [ - "JustAnotherJavaProgrammer", - "RmnWtnkmp" - ] - }, - "Web/HTML/Element/center": { - "modified": "2019-03-23T23:13:30.135Z", - "contributors": [ - "kklein" - ] - }, - "Web/HTML/Element/cite": { - "modified": "2019-03-23T23:13:24.867Z", - "contributors": [ - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/code": { - "modified": "2019-09-16T08:58:23.052Z", - "contributors": [ - "ThomasSpornraft", - "Sebastianz", - "Slashcat", - "kklein" - ] - }, - "Web/HTML/Element/col": { - "modified": "2020-10-15T21:58:35.643Z", - "contributors": [ - "RmnWtnkmp", - "dio", - "grandmalovesyou" - ] - }, - "Web/HTML/Element/data": { - "modified": "2019-03-23T22:03:47.937Z", - "contributors": [ - "grandmalovesyou" - ] - }, - "Web/HTML/Element/datalist": { - "modified": "2020-10-15T21:21:57.425Z", - "contributors": [ - "rivalitaet", - "fscholz", - "mfranzke", - "Sebastianz", - "SJW", - "teoli", - "nothine" - ] - }, - "Web/HTML/Element/dd": { - "modified": "2019-03-23T23:13:01.544Z", - "contributors": [ - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/del": { - "modified": "2019-03-23T23:13:03.883Z", - "contributors": [ - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/details": { - "modified": "2020-10-15T21:28:48.213Z", - "contributors": [ - "chrisdavidmills", - "SJW", - "wbamberg", - "flying-sheep", - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/dialog": { - "modified": "2019-03-23T22:49:25.564Z", - "contributors": [ - "webD97", - "Sebastianz", - "kiloalphaindia" - ] - }, - "Web/HTML/Element/dir": { - "modified": "2019-03-23T23:13:01.665Z", - "contributors": [ - "kklein" - ] - }, - "Web/HTML/Element/div": { - "modified": "2020-05-07T06:47:07.777Z", - "contributors": [ - "zuzuzu", - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/dl": { - "modified": "2019-03-23T23:13:02.194Z", - "contributors": [ - "schlagi123", - "Sebastianz", - "ThomasLandauer", - "idmean", - "wtw", - "kklein" - ] - }, - "Web/HTML/Element/dt": { - "modified": "2019-03-23T23:12:59.924Z", - "contributors": [ - "tyrann0us", - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/em": { - "modified": "2019-03-23T22:44:49.981Z", - "contributors": [ - "grandmalovesyou", - "dio" - ] - }, - "Web/HTML/Element/embed": { - "modified": "2019-03-23T22:03:35.260Z", - "contributors": [ - "grandmalovesyou" - ] - }, - "Web/HTML/Element/fieldset": { - "modified": "2019-03-23T22:03:44.029Z", - "contributors": [ - "duncancumming", - "Cerberooo", - "grandmalovesyou" - ] - }, - "Web/HTML/Element/font": { - "modified": "2019-03-18T21:17:40.865Z", - "contributors": [ - "RmnWtnkmp" - ] - }, - "Web/HTML/Element/footer": { - "modified": "2020-10-15T21:28:59.142Z", - "contributors": [ - "fscholz", - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/h1-h6": { - "modified": "2019-03-24T00:04:35.426Z", - "contributors": [ - "schlagi123", - "teoli", - "fscholz" - ] - }, - "Web/HTML/Element/head": { - "modified": "2019-03-24T00:04:41.043Z", - "contributors": [ - "schlagi123", - "teoli", - "fscholz", - "Crash" - ] - }, - "Web/HTML/Element/header": { - "modified": "2019-03-23T23:12:58.526Z", - "contributors": [ - "Sebastianz", - "supermueller", - "kklein" - ] - }, - "Web/HTML/Element/hr": { - "modified": "2019-03-24T00:04:16.306Z", - "contributors": [ - "schlagi123", - "Shidigital", - "dio", - "teoli", - "fscholz", - "Crash" - ] - }, - "Web/HTML/Element/html": { - "modified": "2019-04-01T00:07:49.772Z", - "contributors": [ - "ToBeFree", - "giffeler", - "Sebastianz", - "Slashcat", - "AickeSchulz", - "teoli", - "fscholz", - "Crash" - ] - }, - "Web/HTML/Element/i": { - "modified": "2019-03-23T22:30:02.803Z", - "contributors": [ - "RmnWtnkmp" - ] - }, - "Web/HTML/Element/iframe": { - "modified": "2019-03-24T00:04:37.363Z", - "contributors": [ - "schlagi123", - "teoli", - "fscholz", - "Crocki" - ] - }, - "Web/HTML/Element/image": { - "modified": "2020-10-15T22:02:53.775Z", - "contributors": [ - "teoli", - "jackyscript" - ] - }, - "Web/HTML/Element/img": { - "modified": "2019-03-23T22:44:40.885Z", - "contributors": [ - "emanpresu", - "mdnde", - "jumpball" - ] - }, - "Web/HTML/Element/ins": { - "modified": "2019-03-23T23:10:24.798Z", - "contributors": [ - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/legend": { - "modified": "2020-10-15T22:04:07.283Z", - "contributors": [ - "annivin" - ] - }, - "Web/HTML/Element/li": { - "modified": "2019-06-06T11:33:12.993Z", - "contributors": [ - "humbapa", - "Sebastianz", - "jumpball", - "dio", - "teoli", - "Aybee", - "fscholz", - "Crash" - ] - }, - "Web/HTML/Element/link": { - "modified": "2019-03-23T23:03:06.561Z", - "contributors": [ - "hagbard42", - "Sebastianz", - "Rudi3" - ] - }, - "Web/HTML/Element/main": { - "modified": "2019-03-23T23:02:25.206Z", - "contributors": [ - "marymar", - "Sebastianz", - "MarauderXtreme", - "Slashcat", - "dennis_sari" - ] - }, - "Web/HTML/Element/map": { - "modified": "2020-10-15T21:31:08.460Z", - "contributors": [ - "fscholz", - "Sebastianz", - "RmnWtnkmp", - "nathankuechler" - ] - }, - "Web/HTML/Element/marquee": { - "modified": "2019-04-01T09:05:38.364Z", - "contributors": [ - "trollkotze", - "Scurch" - ] - }, - "Web/HTML/Element/nav": { - "modified": "2020-10-15T22:14:07.749Z", - "contributors": [ - "NoldoArnion" - ] - }, - "Web/HTML/Element/noembed": { - "modified": "2020-10-15T22:15:59.878Z", - "contributors": [ - "SebinNyshkim" - ] - }, - "Web/HTML/Element/noscript": { - "modified": "2020-10-15T21:24:04.151Z", - "contributors": [ - "schlagi123", - "Sebastianz", - "greiner", - "teoli", - "G_hi3" - ] - }, - "Web/HTML/Element/object": { - "modified": "2019-03-23T23:11:21.869Z", - "contributors": [ - "Sebastianz", - "isaraystanz" - ] - }, - "Web/HTML/Element/ol": { - "modified": "2019-03-24T00:04:15.805Z", - "contributors": [ - "somaGFX", - "schlagi123", - "dio", - "teoli", - "fscholz", - "Crash" - ] - }, - "Web/HTML/Element/optgroup": { - "modified": "2019-03-23T23:12:58.044Z", - "contributors": [ - "scherii", - "Sebastianz" - ] - }, - "Web/HTML/Element/option": { - "modified": "2019-03-23T23:05:53.035Z", - "contributors": [ - "Sebastianz", - "hschieck" - ] - }, - "Web/HTML/Element/p": { - "modified": "2020-10-15T21:13:54.778Z", - "contributors": [ - "zuzuzu", - "schlagi123", - "FlorianBrinkmann", - "dio", - "teoli", - "fscholz", - "ethertank", - "Crash" - ] - }, - "Web/HTML/Element/picture": { - "modified": "2020-10-15T21:41:41.688Z", - "contributors": [ - "SJW", - "tobias47n9e", - "tobiasfabian", - "ViciousPecan" - ] - }, - "Web/HTML/Element/pre": { - "modified": "2019-03-23T23:37:55.984Z", - "contributors": [ - "born2webdesign", - "schlagi123", - "teoli", - "Sprottenwels" - ] - }, - "Web/HTML/Element/progress": { - "modified": "2020-04-22T07:16:43.825Z", - "contributors": [ - "Breaker222", - "thuhh", - "Volker-E", - "wbamberg", - "phlppn", - "DrMabuse23", - "Sebastianz", - "teoli", - "Slashcat" - ] - }, - "Web/HTML/Element/q": { - "modified": "2019-03-18T21:14:29.591Z", - "contributors": [ - "JustAnotherJavaProgrammer", - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/s": { - "modified": "2019-03-23T23:11:49.678Z", - "contributors": [ - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/section": { - "modified": "2020-03-22T16:15:05.047Z", - "contributors": [ - "GiovanniHD201E", - "lkreimann", - "Sebastianz", - "wolfrabe" - ] - }, - "Web/HTML/Element/strong": { - "modified": "2019-03-24T00:04:39.876Z", - "contributors": [ - "schlagi123", - "Slashcat", - "teoli", - "fscholz", - "Crash" - ] - }, - "Web/HTML/Element/summary": { - "modified": "2020-10-15T21:28:58.977Z", - "contributors": [ - "SJW", - "wbamberg", - "kklein" - ] - }, - "Web/HTML/Element/table": { - "modified": "2019-03-23T23:17:42.079Z", - "contributors": [ - "Dev201", - "fscholz", - "Jublo-Solutions" - ] - }, - "Web/HTML/Element/td": { - "modified": "2020-10-15T22:21:01.174Z", - "contributors": [ - "colsceg" - ] - }, - "Web/HTML/Element/template": { - "modified": "2019-03-23T22:54:16.252Z", - "contributors": [ - "Metaa", - "Sebastianz", - "phil-schreiber" - ] - }, - "Web/HTML/Element/th": { - "modified": "2019-03-23T22:02:40.278Z", - "contributors": [ - "dio" - ] - }, - "Web/HTML/Element/time": { - "modified": "2019-03-23T23:21:37.890Z", - "contributors": [ - "Sebastianz", - "dennis_sari", - "teoli", - "tim_kraut" - ] - }, - "Web/HTML/Element/title": { - "modified": "2019-09-11T09:06:33.827Z", - "contributors": [ - "podarcis", - "Sebastianz", - "kklein" - ] - }, - "Web/HTML/Element/tr": { - "modified": "2019-03-23T23:03:57.305Z", - "contributors": [ - "Martin.Kraft", - "schlagi123", - "dio", - "skl" - ] - }, - "Web/HTML/Element/tt": { - "modified": "2019-03-23T23:09:07.482Z", - "contributors": [ - "RmnWtnkmp", - "mkuhn" - ] - }, - "Web/HTML/Element/u": { - "modified": "2019-03-23T23:02:37.406Z", - "contributors": [ - "skl" - ] - }, - "Web/HTML/Element/ul": { - "modified": "2019-03-24T00:04:22.186Z", - "contributors": [ - "dio", - "teoli", - "fscholz", - "ethertank", - "Crash" - ] - }, - "Web/HTML/Element/var": { - "modified": "2019-03-24T00:04:40.794Z", - "contributors": [ - "schlagi123", - "teoli", - "fscholz", - "ethertank", - "Crash" - ] - }, - "Web/HTML/Element/video": { - "modified": "2019-03-23T22:58:58.710Z", - "contributors": [ - "nylki", - "marc-se", - "Sebastianz", - "spiegelp" - ] - }, - "Web/HTML/Globale_Attribute": { - "modified": "2020-10-15T21:26:14.135Z", - "contributors": [ - "LoVo666", - "qjubic", - "pixunil" - ] - }, - "Web/HTML/Globale_Attribute/accesskey": { - "modified": "2020-10-15T22:03:59.818Z", - "contributors": [ - "Claas" - ] - }, - "Web/HTML/Globale_Attribute/autocapitalize": { - "modified": "2020-10-15T22:05:02.265Z", - "contributors": [ - "alaskaa" - ] - }, - "Web/HTML/Globale_Attribute/class": { - "modified": "2019-03-23T22:53:31.655Z", - "contributors": [ - "sigoa", - "lxdiamond" - ] - }, - "Web/HTML/Globale_Attribute/contenteditable": { - "modified": "2019-03-18T21:36:35.603Z", - "contributors": [ - "4223", - "Claas" - ] - }, - "Web/HTML/Globale_Attribute/dir": { - "modified": "2020-10-15T22:05:39.463Z", - "contributors": [ - "RewoSiedge" - ] - }, - "Web/HTML/Globale_Attribute/draggable": { - "modified": "2019-03-23T22:47:23.466Z", - "contributors": [ - "schlagi123", - "RmnWtnkmp", - "rstarke-dd" - ] - }, - "Web/HTML/Globale_Attribute/dropzone": { - "modified": "2020-10-15T21:40:11.332Z", - "contributors": [ - "kaljak", - "RmnWtnkmp" - ] - }, - "Web/HTML/Globale_Attribute/hidden": { - "modified": "2020-10-15T21:38:08.779Z", - "contributors": [ - "fscholz", - "Oliver_Schafeld", - "RmnWtnkmp", - "skl" - ] - }, - "Web/HTML/Globale_Attribute/id": { - "modified": "2019-03-18T21:47:05.388Z", - "contributors": [ - "BlaM", - "skl" - ] - }, - "Web/HTML/Globale_Attribute/inputmode": { - "modified": "2020-10-15T22:14:49.189Z", - "contributors": [ - "sklicek" - ] - }, - "Web/HTML/Globale_Attribute/is": { - "modified": "2020-10-15T22:23:53.794Z", - "contributors": [ - "LoVo666" - ] - }, - "Web/HTML/Globale_Attribute/kontextmenu": { - "modified": "2020-03-26T16:11:41.701Z", - "contributors": [ - "MarcusRiemer", - "SphinxKnight", - "ctexxx" - ] - }, - "Web/HTML/Globale_Attribute/lang": { - "modified": "2020-10-15T21:51:21.501Z", - "contributors": [ - "kaljak", - "RmnWtnkmp" - ] - }, - "Web/HTML/Globale_Attribute/style": { - "modified": "2020-08-18T11:36:01.283Z", - "contributors": [ - "FelixSchwarz", - "tairt", - "RmnWtnkmp" - ] - }, - "Web/HTML/Globale_Attribute/tabindex": { - "modified": "2020-10-15T22:17:29.883Z", - "contributors": [ - "Michael-1", - "vssn" - ] - }, - "Web/HTML/Globale_Attribute/title": { - "modified": "2019-03-23T22:32:47.288Z", - "contributors": [ - "alaskaa", - "klausinger", - "eluchsinger" - ] - }, - "Web/HTML/Globale_Attribute/translate": { - "modified": "2019-10-21T21:28:23.890Z", - "contributors": [ - "LoVo666" - ] - }, - "Web/HTML/HTML5": { - "modified": "2019-03-23T23:33:45.828Z", - "contributors": [ - "suriyaa", - "teoli", - "timausk", - "thorsten.rinne", - "matze", - "nothine" - ] - }, - "Web/HTML/HTML5/HTML5_element_list": { - "modified": "2019-03-23T23:37:56.525Z", - "contributors": [ - "gk-freiheit", - "rawcat", - "teoli", - "AickeSchulz", - "jwl" - ] - }, - "Web/HTML/Inline_elemente": { - "modified": "2019-03-23T23:18:01.940Z", - "contributors": [ - "Aryx", - "petergloor", - "teoli", - "lukas.oppermann" - ] - }, - "Web/HTML/Referenz": { - "modified": "2019-09-09T07:16:32.387Z", - "contributors": [ - "SphinxKnight", - "mprofitl", - "wbamberg", - "legalbit" - ] - }, - "Web/HTML/Using_the_application_cache": { - "modified": "2019-03-23T23:31:27.651Z", - "contributors": [ - "petzichen", - "freimuth82", - "fscholz", - "gr2m", - "teoli", - "fiona89" - ] - }, - "Web/HTTP": { - "modified": "2020-10-17T06:15:21.236Z", - "contributors": [ - "hpkainz", - "rs-github", - "stef4412", - "Claas", - "fscholz", - "Anoian", - "fulle81", - "groovecoder" - ] - }, - "Web/HTTP/Basics_of_HTTP": { - "modified": "2019-09-15T04:45:42.906Z" - }, - "Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web": { - "modified": "2019-09-15T13:08:30.896Z", - "contributors": [ - "reyemDarnok" - ] - }, - "Web/HTTP/CORS": { - "modified": "2020-10-15T22:10:02.077Z", - "contributors": [ - "Dschubba", - "htlvil-paulk", - "MauTauReen", - "ghayth.mkh" - ] - }, - "Web/HTTP/CORS/Errors": { - "modified": "2019-03-18T21:24:22.309Z", - "contributors": [ - "nchevobbe" - ] - }, - "Web/HTTP/CORS/Errors/CORSDidNotSucceed": { - "modified": "2019-05-16T11:43:09.527Z", - "contributors": [ - "vaupeh", - "scherii", - "quicksanddiver" - ] - }, - "Web/HTTP/CORS/Errors/CORSFehlenderAllowHeaderAusPreflight": { - "modified": "2020-03-31T09:46:01.871Z", - "contributors": [ - "cradloff" - ] - }, - "Web/HTTP/CORS/Errors/CORSFehltQuelleErlauben": { - "modified": "2019-07-24T08:48:05.259Z", - "contributors": [ - "kai-oswald", - "SAvB" - ] - }, - "Web/HTTP/CORS/Errors/CORSRequestNotHttp": { - "modified": "2019-05-21T09:09:00.472Z", - "contributors": [ - "EastFreezian" - ] - }, - "Web/HTTP/Caching_FAQ": { - "modified": "2019-03-23T23:05:15.113Z", - "contributors": [ - "jugmac00", - "Johann150", - "VoodooDS" - ] - }, - "Web/HTTP/Headers": { - "modified": "2019-05-30T17:47:25.618Z", - "contributors": [ - "King2500", - "SebinNyshkim", - "fl1p" - ] - }, - "Web/HTTP/Headers/Accept": { - "modified": "2020-10-15T22:26:49.610Z", - "contributors": [ - "TorbenKoehn" - ] - }, - "Web/HTTP/Headers/Age": { - "modified": "2020-10-15T21:59:14.135Z", - "contributors": [ - "zuzuzu", - "TimHi" - ] - }, - "Web/HTTP/Headers/Cache-Control": { - "modified": "2020-10-15T22:02:19.949Z", - "contributors": [ - "King2500", - "Univream", - "fawei" - ] - }, - "Web/HTTP/Headers/Connection": { - "modified": "2020-10-15T22:35:15.341Z", - "contributors": [ - "cheitmanntrade" - ] - }, - "Web/HTTP/Headers/Cookie": { - "modified": "2020-10-15T22:00:20.631Z", - "contributors": [ - "Wipster" - ] - }, - "Web/HTTP/Headers/DNT": { - "modified": "2020-10-15T21:58:41.249Z", - "contributors": [ - "timmyRS" - ] - }, - "Web/HTTP/Headers/Expect-CT": { - "modified": "2020-10-15T22:29:47.313Z", - "contributors": [ - "dennissterzenbach" - ] - }, - "Web/HTTP/Headers/Expires": { - "modified": "2020-10-15T22:09:33.622Z", - "contributors": [ - "ThomasHartz" - ] - }, - "Web/HTTP/Headers/Referer": { - "modified": "2020-10-15T22:13:36.881Z", - "contributors": [ - "bsotodo", - "Megamezzomixer" - ] - }, - "Web/HTTP/Headers/Server": { - "modified": "2020-10-15T21:58:46.872Z", - "contributors": [ - "timmyRS" - ] - }, - "Web/HTTP/Headers/Set-Cookie": { - "modified": "2020-12-03T07:50:32.705Z", - "contributors": [ - "hamishwillee" - ] - }, - "Web/HTTP/Headers/Set-Cookie/SameSite": { - "modified": "2020-12-03T07:50:35.793Z", - "contributors": [ - "dega" - ] - }, - "Web/HTTP/Headers/Tk": { - "modified": "2019-03-23T22:03:12.387Z", - "contributors": [ - "timmyRS" - ] - }, - "Web/HTTP/Headers/User-Agent": { - "modified": "2020-10-15T21:58:47.163Z", - "contributors": [ - "fscholz" - ] - }, - "Web/HTTP/Headers/X-Content-Type-Options": { - "modified": "2020-11-30T18:36:23.304Z", - "contributors": [ - "Johuspect", - "claui", - "AnthyG", - "peschuster", - "Joeatc" - ] - }, - "Web/HTTP/Headers/X-Frame-Options": { - "modified": "2020-10-15T21:53:15.450Z", - "contributors": [ - "fscholz", - "javafrog", - "Lars-Wunderlich" - ] - }, - "Web/HTTP/Methods": { - "modified": "2020-10-15T22:09:56.258Z", - "contributors": [ - "aichbauer" - ] - }, - "Web/HTTP/Methods/CONNECT": { - "modified": "2020-10-15T22:09:55.098Z", - "contributors": [ - "td8" - ] - }, - "Web/HTTP/Methods/DELETE": { - "modified": "2020-10-15T22:10:04.775Z", - "contributors": [ - "Dschubba", - "td8" - ] - }, - "Web/HTTP/Methods/GET": { - "modified": "2020-10-15T22:24:06.028Z", - "contributors": [ - "sklicek" - ] - }, - "Web/HTTP/Status": { - "modified": "2020-11-15T16:45:22.616Z", - "contributors": [ - "1elf-me", - "fscholz" - ] - }, - "Web/HTTP/Status/100": { - "modified": "2020-10-15T21:50:37.477Z", - "contributors": [ - "markobr", - "Marenthyu", - "SebinNyshkim" - ] - }, - "Web/HTTP/Status/200": { - "modified": "2020-10-15T22:09:04.712Z", - "contributors": [ - "markobr", - "Saebbi" - ] - }, - "Web/HTTP/Status/201": { - "modified": "2020-11-15T16:56:37.808Z", - "contributors": [ - "1elf-me" - ] - }, - "Web/HTTP/Status/302": { - "modified": "2020-10-15T21:56:04.030Z", - "contributors": [ - "markobr", - "RaisingAgent", - "DanielR92" - ] - }, - "Web/HTTP/Status/304": { - "modified": "2020-10-15T21:57:39.598Z", - "contributors": [ - "markobr", - "MGoelles24", - "TheHater21" - ] - }, - "Web/HTTP/Status/400": { - "modified": "2019-07-10T16:01:00.065Z", - "contributors": [ - "markobr", - "liltv.media" - ] - }, - "Web/HTTP/Status/401": { - "modified": "2020-10-15T22:09:12.130Z", - "contributors": [ - "markobr", - "liltv.media" - ] - }, - "Web/HTTP/Status/403": { - "modified": "2020-10-15T22:11:03.536Z", - "contributors": [ - "markobr", - "Meisterfuchs" - ] - }, - "Web/HTTP/Status/404": { - "modified": "2020-10-15T21:50:37.640Z", - "contributors": [ - "markobr", - "liltv.media", - "SebinNyshkim" - ] - }, - "Web/HTTP/Status/409": { - "modified": "2019-09-15T04:47:27.346Z", - "contributors": [ - "reyemDarnok" - ] - }, - "Web/HTTP/Status/410": { - "modified": "2020-10-15T21:50:37.425Z", - "contributors": [ - "markobr", - "Marenthyu", - "SebinNyshkim" - ] - }, - "Web/HTTP/Status/414": { - "modified": "2019-07-12T06:43:55.384Z", - "contributors": [ - "markobr" - ] - }, - "Web/HTTP/Status/418": { - "modified": "2020-10-15T22:11:00.109Z", - "contributors": [ - "markobr", - "Meisterfuchs" - ] - }, - "Web/HTTP/Status/500": { - "modified": "2020-10-15T21:50:37.325Z", - "contributors": [ - "markobr", - "SebinNyshkim" - ] - }, - "Web/HTTP/Status/503": { - "modified": "2020-10-15T22:21:06.347Z", - "contributors": [ - "markobr" - ] - }, - "Web/HTTP/Status/504": { - "modified": "2020-10-15T22:21:06.738Z", - "contributors": [ - "markobr" - ] - }, - "Web/HTTP/Status/505": { - "modified": "2019-07-10T13:40:21.212Z", - "contributors": [ - "markobr" - ] - }, - "Web/HTTP/Status/511": { - "modified": "2019-07-10T13:54:20.094Z", - "contributors": [ - "markobr" - ] - }, - "Web/JavaScript": { - "modified": "2020-09-16T15:12:04.337Z", - "contributors": [ - "steevn", - "Jonydaboy19", - "SphinxKnight", - "chrisdavidmills", - "ivan-pan", - "tirein", - "rs-github", - "schlagi123", - "dontbyte", - "Sixl-Daniel", - "sigoa", - "gjungb", - "Old-Lady", - "tieftoener", - "fscholz", - "Patrick_St.", - "mcweba", - "omniskop", - "loki", - "Airblader", - "eminor", - "ethertank", - "shapeshifta", - "Philipp" - ] - }, - "Web/JavaScript/About_JavaScript": { - "modified": "2020-03-12T19:39:49.162Z", - "contributors": [ - "schlagi123", - "judy55", - "loki" - ] - }, - "Web/JavaScript/Aufzählbarkeit_und_Zugehörigkeit_von_Eigenschaften": { - "modified": "2020-05-27T07:04:55.127Z", - "contributors": [ - "zuzuzu" - ] - }, - "Web/JavaScript/Closures": { - "modified": "2020-08-14T08:33:52.378Z", - "contributors": [ - "ManuelKiessling", - "m4con", - "tirein", - "MehrzahlVonKorn", - "_trng", - "schlagi123", - "cami", - "ChriBack", - "JohannesDienst", - "mbelas", - "Oliver_Schafeld", - "maybe", - "fscholz", - "AickeSchulz", - "eminor" - ] - }, - "Web/JavaScript/Datenstrukturen": { - "modified": "2020-03-12T19:40:01.103Z", - "contributors": [ - "BenjHawk", - "GR_Fuchs", - "fL03", - "schlagi123", - "twarncke", - "yampus", - "ChristianLuxem", - "nodexo", - "fscholz", - "siggi-heltau", - "FabianBeiner", - "spiegelp" - ] - }, - "Web/JavaScript/Eine_Wiedereinfuehrung_in_JavaScript": { - "modified": "2020-05-19T18:28:46.915Z", - "contributors": [ - "AlexanderLaska", - "Timbuktu1982", - "Dusty4848", - "Meiqian", - "Nikolai_Kucksdorf", - "kisjoke91", - "Space42", - "Univream", - "tomscholz", - "schlagi123", - "PinheadLarry", - "sigoa", - "acetous", - "martinhoffmann", - "Coke_and_Pepsi", - "ibafluss", - "creitiv", - "fscholz", - "eminor" - ] - }, - "Web/JavaScript/Einführung_in_den_Gebrauch_von_XPath_in_JavaScript": { - "modified": "2019-03-23T22:12:16.123Z", - "contributors": [ - "chrisdavidmills", - "QClonesClan" - ] - }, - "Web/JavaScript/EventLoop": { - "modified": "2020-03-12T19:41:21.053Z", - "contributors": [ - "chrkhl", - "schlagi123", - "HaayeHenricus", - "marymar", - "pkleindienst", - "clemens", - "Broetchen1234" - ] - }, - "Web/JavaScript/Guide": { - "modified": "2020-03-12T19:35:23.827Z", - "contributors": [ - "mschleeweiss", - "schlagi123", - "tieftoener", - "fscholz", - "eminor", - "teoli", - "marc971" - ] - }, - "Web/JavaScript/Guide/Ausdruecke_und_Operatoren": { - "modified": "2020-03-12T19:38:40.241Z", - "contributors": [ - "occcy", - "stefboll", - "HaayeHenricus", - "schlagi123", - "MelanieVeigl", - "Kevinci", - "fscholz", - "DavidWalsh", - "eminor" - ] - }, - "Web/JavaScript/Guide/Einführung": { - "modified": "2020-03-12T19:40:52.952Z", - "contributors": [ - "woiddale", - "schlagi123", - "aldec-dv", - "NedNisW", - "janjo", - "Chtheile", - "miniemuff", - "fscholz", - "Sir.Codewright" - ] - }, - "Web/JavaScript/Guide/Feinheiten_des_Objektmodells": { - "modified": "2020-10-03T02:52:53.149Z", - "contributors": [ - "c0dewalker", - "wbamberg", - "schlagi123", - "sigoa", - "DoctypeRosenthal", - "Venhaus", - "crasher666", - "IngoB", - "fscholz", - "eminor" - ] - }, - "Web/JavaScript/Guide/Funktionen": { - "modified": "2020-03-12T19:38:37.078Z", - "contributors": [ - "dmho", - "cami", - "loicyondjeu", - "stefboll", - "woiddale", - "schlagi123", - "b-lack", - "vetoCode", - "fscholz", - "eminor" - ] - }, - "Web/JavaScript/Guide/Grammatik_und_Typen": { - "modified": "2020-09-16T18:03:08.891Z", - "contributors": [ - "FFFutureflo", - "Tionran", - "schlagi123", - "TomasRiker", - "aldec-dv", - "SaschaHeyer", - "yampus", - "FocusCookie", - "Randomfinger", - "NedNisW", - "vetoCode", - "didierCH", - "baxstar", - "fscholz", - "siggi-heltau", - "eminor", - "NickRussler", - "Hans_Mueller" - ] - }, - "Web/JavaScript/Guide/Indexed_collections": { - "modified": "2020-03-12T19:46:38.832Z", - "contributors": [ - "G_hi3" - ] - }, - "Web/JavaScript/Guide/Keyed_collections": { - "modified": "2020-07-15T01:51:42.838Z", - "contributors": [ - "kre", - "Cerberooo", - "cami", - "Julian-B90", - "schlagi123" - ] - }, - "Web/JavaScript/Guide/Kontrollfluss_und_Fehlerbehandlung": { - "modified": "2020-03-12T19:37:55.717Z", - "contributors": [ - "cami", - "deklesen", - "woiddale", - "schlagi123", - "SaschaHeyer", - "PreCodeEU", - "StevenS77", - "jwhitlock", - "KarolineCat", - "fscholz", - "vsenol", - "eminor" - ] - }, - "Web/JavaScript/Guide/Meta_programming": { - "modified": "2020-03-12T19:47:40.641Z", - "contributors": [ - "mschleeweiss", - "schlagi123" - ] - }, - "Web/JavaScript/Guide/Mit_Objekten_arbeiten": { - "modified": "2020-03-12T19:38:32.446Z", - "contributors": [ - "schlagi123", - "Dr-Oetker", - "SphinxKnight", - "papper371", - "timosperisen", - "serv-inc", - "fw-zirkusdigitalo", - "fscholz", - "DavidWalsh", - "stephaniehobson", - "cyclodev", - "eminor" - ] - }, - "Web/JavaScript/Guide/Modules": { - "modified": "2020-10-15T22:29:06.922Z", - "contributors": [ - "christophbinner" - ] - }, - "Web/JavaScript/Guide/Numbers_and_dates": { - "modified": "2020-03-12T19:43:42.890Z", - "contributors": [ - "mrmoree", - "schlagi123", - "kdex" - ] - }, - "Web/JavaScript/Guide/Regular_Expressions": { - "modified": "2020-03-12T19:37:54.891Z", - "contributors": [ - "woiddale", - "SphinxKnight", - "0xflotus", - "hinzundcode", - "nextlevelshit", - "ddBenny", - "schlagi123", - "tyrasd", - "fscholz", - "eminor" - ] - }, - "Web/JavaScript/Guide/Textformatierung": { - "modified": "2020-03-12T19:46:53.213Z", - "contributors": [ - "schlagi123", - "patpir", - "SEBv15" - ] - }, - "Web/JavaScript/Guide/Using_promises": { - "modified": "2020-07-30T16:41:03.762Z", - "contributors": [ - "venven-de", - "scarcloud", - "matze19831211" - ] - }, - "Web/JavaScript/Guide/schleifen_und_iterationen": { - "modified": "2020-03-12T19:43:05.832Z", - "contributors": [ - "schlagi123", - "j0ck", - "moreadrenalin" - ] - }, - "Web/JavaScript/Inheritance_and_the_prototype_chain": { - "modified": "2020-03-12T19:41:37.015Z", - "contributors": [ - "Meiqian", - "trollkotze", - "sigoa", - "schlagi123", - "kdex", - "Semnodime", - "rocco", - "neekibo", - "antonharald" - ] - }, - "Web/JavaScript/Introduction_to_Object-Oriented_JavaScript": { - "modified": "2020-03-12T19:39:48.552Z", - "contributors": [ - "ant1d0t", - "nemo182", - "christianhegedues", - "BurnerPat", - "schlagi123", - "neverendingo", - "creitiv", - "DunklesBlut88", - "paesku", - "bricks", - "fabiankreutz", - "spiegelp" - ] - }, - "Web/JavaScript/JavaScript_technologieuebersicht": { - "modified": "2020-03-12T19:39:42.418Z", - "contributors": [ - "lesch", - "fl1p", - "spiegelp" - ] - }, - "Web/JavaScript/Language_Resources": { - "modified": "2020-03-12T19:38:27.478Z", - "contributors": [ - "schlagi123", - "hapeit", - "fscholz", - "Aurel" - ] - }, - "Web/JavaScript/Reference": { - "modified": "2020-03-12T19:38:00.390Z", - "contributors": [ - "schlagi123", - "Deppenapostroph", - "rbarisic", - "RaymondFleck", - "timbernasley", - "fscholz", - "ethertank" - ] - }, - "Web/JavaScript/Reference/About": { - "modified": "2020-03-12T19:39:52.145Z", - "contributors": [ - "schlagi123", - "andrehuf", - "Morbid2903", - "timbernasley" - ] - }, - "Web/JavaScript/Reference/Fehler": { - "modified": "2020-03-12T19:43:41.868Z", - "contributors": [ - "schlagi123", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Already_has_pragma": { - "modified": "2020-03-12T19:47:20.172Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Array_sort_argument": { - "modified": "2020-03-12T19:47:33.148Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Bad_octal": { - "modified": "2020-03-12T19:47:25.600Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Bad_radix": { - "modified": "2020-03-12T19:47:40.678Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Bad_regexp_flag": { - "modified": "2020-03-12T19:47:43.378Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Bad_return_or_yield": { - "modified": "2020-03-12T19:47:36.755Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Called_on_incompatible_type": { - "modified": "2020-03-12T19:47:23.087Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Cant_access_lexical_declaration_before_init": { - "modified": "2020-03-12T19:47:39.951Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Cant_access_property": { - "modified": "2020-03-12T19:48:57.195Z", - "contributors": [ - "micschwarz" - ] - }, - "Web/JavaScript/Reference/Fehler/Cant_define_property_object_not_extensible": { - "modified": "2020-03-12T19:47:37.913Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Cant_delete": { - "modified": "2020-03-12T19:47:33.700Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Cant_redefine_property": { - "modified": "2020-03-12T19:47:33.994Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Cyclic_object_value": { - "modified": "2020-03-12T19:47:32.067Z", - "contributors": [ - "martinr1604", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Dead_object": { - "modified": "2020-03-12T19:47:34.842Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Delete_in_strict_mode": { - "modified": "2020-03-12T19:47:47.727Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Deprecated_String_generics": { - "modified": "2020-03-12T19:47:17.153Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Deprecated_caller_or_arguments_usage": { - "modified": "2020-03-12T19:47:44.593Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Deprecated_expression_closures": { - "modified": "2020-03-12T19:47:23.525Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Deprecated_octal": { - "modified": "2020-03-12T19:47:46.456Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Deprecated_source_map_pragma": { - "modified": "2020-03-12T19:47:46.265Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Deprecated_toLocaleFormat": { - "modified": "2020-03-12T19:47:24.103Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Equal_as_assign": { - "modified": "2020-03-12T19:47:33.976Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/For-each-in_loops_are_deprecated": { - "modified": "2020-03-12T19:47:22.797Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Getter_only": { - "modified": "2020-03-12T19:47:33.589Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Identifier_after_number": { - "modified": "2020-03-12T19:47:39.577Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Illegal_character": { - "modified": "2020-03-12T19:47:40.583Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Invalid_array_length": { - "modified": "2020-03-12T19:43:36.993Z", - "contributors": [ - "schlagi123", - "yampus", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Invalid_assignment_left-hand_side": { - "modified": "2020-03-12T19:46:39.233Z", - "contributors": [ - "schlagi123", - "Cripi" - ] - }, - "Web/JavaScript/Reference/Fehler/Invalid_const_assignment": { - "modified": "2020-03-12T19:47:33.651Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Invalid_date": { - "modified": "2020-03-12T19:47:16.548Z", - "contributors": [ - "schlagi123", - "fire-stone" - ] - }, - "Web/JavaScript/Reference/Fehler/Invalid_for-in_initializer": { - "modified": "2020-03-12T19:47:50.395Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Invalid_for-of_initializer": { - "modified": "2020-03-12T19:47:46.412Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/JSON_bad_parse": { - "modified": "2020-03-12T19:47:34.652Z", - "contributors": [ - "schlagi123", - "Jannik99" - ] - }, - "Web/JavaScript/Reference/Fehler/Malformed_URI": { - "modified": "2020-05-11T08:04:02.475Z", - "contributors": [ - "Skasi", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Malformed_formal_parameter": { - "modified": "2020-03-12T19:43:43.986Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_bracket_after_list": { - "modified": "2020-03-12T19:46:42.895Z", - "contributors": [ - "schlagi123", - "Stolzenhain" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_colon_after_property_id": { - "modified": "2020-03-12T19:47:39.916Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_curly_after_function_body": { - "modified": "2020-03-12T19:47:34.109Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_curly_after_property_list": { - "modified": "2020-03-12T19:45:33.319Z", - "contributors": [ - "schlagi123", - "fire-stone" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_formal_parameter": { - "modified": "2020-03-12T19:47:38.482Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_initializer_in_const": { - "modified": "2020-03-12T19:47:35.587Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_name_after_dot_operator": { - "modified": "2020-03-12T19:47:35.523Z", - "contributors": [ - "sicLotus", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_parenthesis_after_argument_list": { - "modified": "2020-03-12T19:44:04.052Z", - "contributors": [ - "schlagi123", - "iimog", - "rolandbgd", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_parenthesis_after_condition": { - "modified": "2020-03-12T19:47:39.363Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Missing_semicolon_before_statement": { - "modified": "2020-03-12T19:44:24.631Z", - "contributors": [ - "flufflepuff91", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/More_arguments_needed": { - "modified": "2020-03-12T19:47:35.019Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Negative_repetition_count": { - "modified": "2020-03-12T19:47:46.475Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/No_non-null_object": { - "modified": "2020-03-12T19:47:33.684Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/No_properties": { - "modified": "2020-03-12T19:46:21.338Z", - "contributors": [ - "schlagi123", - "timosperisen" - ] - }, - "Web/JavaScript/Reference/Fehler/No_variable_name": { - "modified": "2020-03-12T19:47:35.139Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Non_configurable_array_element": { - "modified": "2020-03-12T19:47:37.860Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Not_a_codepoint": { - "modified": "2020-03-12T19:44:01.592Z", - "contributors": [ - "schlagi123", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Not_a_constructor": { - "modified": "2020-03-12T19:46:54.349Z", - "contributors": [ - "NiklasMerz", - "schlagi123", - "klug_mario" - ] - }, - "Web/JavaScript/Reference/Fehler/Not_a_function": { - "modified": "2020-03-12T19:45:23.396Z", - "contributors": [ - "flufflepuff91", - "schlagi123", - "fire-stone" - ] - }, - "Web/JavaScript/Reference/Fehler/Not_defined": { - "modified": "2020-03-12T19:44:11.129Z", - "contributors": [ - "flufflepuff91", - "schlagi123", - "BennoKieselstein", - "Bernd_L", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Precision_range": { - "modified": "2020-03-12T19:44:05.096Z", - "contributors": [ - "schlagi123", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Property_access_denied": { - "modified": "2020-03-12T19:44:01.071Z", - "contributors": [ - "schlagi123", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Read-only": { - "modified": "2020-03-12T19:47:33.685Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Redeclared_parameter": { - "modified": "2020-03-12T19:47:37.067Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Reduce_of_empty_array_with_no_initial_value": { - "modified": "2020-03-12T19:47:39.369Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Reserved_identifier": { - "modified": "2020-03-12T19:47:46.391Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Resulting_string_too_large": { - "modified": "2020-03-12T19:47:46.172Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Stmt_after_return": { - "modified": "2020-03-12T19:43:39.489Z", - "contributors": [ - "schlagi123", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Strict_Non_Simple_Params": { - "modified": "2020-03-12T19:47:45.620Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Too_much_recursion": { - "modified": "2020-03-12T19:43:58.453Z", - "contributors": [ - "schlagi123", - "olhaar", - "yampus", - "julmot", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Typed_array_invalid_arguments": { - "modified": "2020-03-12T19:47:33.971Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Undeclared_var": { - "modified": "2020-03-12T19:47:43.541Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Undefined_prop": { - "modified": "2020-03-12T19:44:10.591Z", - "contributors": [ - "schlagi123", - "ThomasFe", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Fehler/Unexpected_token": { - "modified": "2020-03-12T19:45:02.701Z", - "contributors": [ - "schlagi123", - "albasiba" - ] - }, - "Web/JavaScript/Reference/Fehler/Unexpected_type": { - "modified": "2020-03-12T19:45:54.249Z", - "contributors": [ - "schlagi123", - "thegeg", - "SusiHutzler", - "fire-stone", - "netalp" - ] - }, - "Web/JavaScript/Reference/Fehler/Unnamed_function_statement": { - "modified": "2020-03-12T19:47:45.907Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Unterminated_string_literal": { - "modified": "2020-03-12T19:47:34.534Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/Var_hides_argument": { - "modified": "2020-03-12T19:47:33.618Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/in_operator_no_object": { - "modified": "2020-03-12T19:47:34.037Z", - "contributors": [ - "matthias85", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/invalid_right_hand_side_instanceof_operand": { - "modified": "2020-03-12T19:47:33.003Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Fehler/is_not_iterable": { - "modified": "2020-03-12T19:48:02.116Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Functions": { - "modified": "2020-10-15T21:32:23.734Z", - "contributors": [ - "steevn", - "ibiBgOR", - "julianpollmann", - "schlagi123", - "P0lip" - ] - }, - "Web/JavaScript/Reference/Functions/Default_parameters": { - "modified": "2020-10-15T21:51:29.730Z", - "contributors": [ - "schlagi123", - "Eiknheimer", - "serv-inc", - "StevenS77", - "kdex", - "leonschwanitz" - ] - }, - "Web/JavaScript/Reference/Functions/Methoden_Definitionen": { - "modified": "2020-03-12T19:40:25.737Z", - "contributors": [ - "kdex", - "schlagi123", - "siggi-heltau" - ] - }, - "Web/JavaScript/Reference/Functions/Pfeilfunktionen": { - "modified": "2020-10-15T21:50:51.602Z", - "contributors": [ - "schlagi123", - "Sixl-Daniel", - "kdex", - "sja", - "Eiknheimer", - "GuidoSchweizer", - "mhash17" - ] - }, - "Web/JavaScript/Reference/Functions/arguments": { - "modified": "2020-10-15T21:32:34.952Z", - "contributors": [ - "tonitone", - "StefKrie", - "haveyaseen", - "schlagi123", - "niorad", - "a-ctor", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Functions/arguments/@@iterator": { - "modified": "2020-10-15T22:04:50.730Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Functions/arguments/callee": { - "modified": "2020-10-15T21:32:40.831Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Functions/arguments/length": { - "modified": "2020-10-15T21:32:35.168Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Functions/get": { - "modified": "2020-10-15T22:04:49.671Z", - "contributors": [ - "schlagi123", - "JPeer264" - ] - }, - "Web/JavaScript/Reference/Functions/rest_parameter": { - "modified": "2020-10-15T21:56:07.951Z", - "contributors": [ - "sonicdoe", - "schlagi123", - "Simmarith" - ] - }, - "Web/JavaScript/Reference/Functions/set": { - "modified": "2020-10-15T22:04:49.802Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects": { - "modified": "2020-03-12T19:38:16.835Z", - "contributors": [ - "jazevo", - "schlagi123", - "Deppenapostroph", - "SphinxKnight", - "timbernasley", - "fscholz", - "ziyunfei" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array": { - "modified": "2020-10-15T21:25:30.625Z", - "contributors": [ - "grumpy-cat", - "SebinNyshkim", - "schlagi123", - "henje", - "JayEn84", - "Eiknheimer", - "StevenS77", - "kdex", - "antonharald", - "fscholz", - "Airblader" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/@@iterator": { - "modified": "2020-10-15T22:01:02.252Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/@@species": { - "modified": "2020-10-15T22:01:02.767Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/@@unscopables": { - "modified": "2020-10-15T22:01:03.125Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/Prototypen": { - "modified": "2020-10-15T21:52:42.525Z", - "contributors": [ - "Stoeoeoe", - "schlagi123", - "StevenS77" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/Reduce": { - "modified": "2020-10-15T21:52:43.889Z", - "contributors": [ - "duckymirror", - "isnot2bad", - "NiklasMerz", - "schlagi123", - "molerat619", - "LeisureLarry", - "sol-idsnake", - "istvank", - "StevenS77" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/ReduceRight": { - "modified": "2020-10-15T21:52:47.826Z", - "contributors": [ - "schlagi123", - "StevenS77" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/concat": { - "modified": "2020-10-15T21:34:08.129Z", - "contributors": [ - "schlagi123", - "ghost23", - "pecoes", - "oliver-j", - "FelixSebastianLange" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/copyWithin": { - "modified": "2020-10-15T21:38:19.886Z", - "contributors": [ - "schlagi123", - "GR_Fuchs", - "Flummi", - "oliver-j" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/entries": { - "modified": "2020-10-15T21:38:18.243Z", - "contributors": [ - "Tharkun86", - "schlagi123", - "oliver-j", - "AndyTheDandy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/every": { - "modified": "2020-10-15T21:47:07.289Z", - "contributors": [ - "schlagi123", - "orion-z", - "longstone" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/fill": { - "modified": "2020-10-15T21:38:18.545Z", - "contributors": [ - "schlagi123", - "Andreas_Dyballa", - "oliver-j", - "AndyTheDandy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/filter": { - "modified": "2020-12-01T06:41:38.166Z", - "contributors": [ - "Gismo1337", - "caca123-nz", - "SebinNyshkim", - "michelgotta", - "schlagi123", - "xdevs23", - "midnightmare", - "oliver-j", - "occcy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/find": { - "modified": "2020-10-15T21:34:07.173Z", - "contributors": [ - "SebinNyshkim", - "schlagi123", - "mrkosim", - "psychotammi", - "mreu", - "db6edr", - "oliver-j", - "MelanieVeigl" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/findIndex": { - "modified": "2020-10-15T21:50:45.238Z", - "contributors": [ - "SebinNyshkim", - "schlagi123", - "psychotammi", - "sosnet", - "labcode-de" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/flat": { - "modified": "2020-10-15T22:01:54.920Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/flatMap": { - "modified": "2020-10-15T22:02:19.086Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/forEach": { - "modified": "2020-10-15T21:31:37.392Z", - "contributors": [ - "SebinNyshkim", - "schlagi123", - "Martin.Kraft", - "Anonymous", - "StevenS77", - "L15t3", - "langco", - "sudave", - "olastor" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/from": { - "modified": "2020-10-15T21:38:18.396Z", - "contributors": [ - "manfredkogler", - "schlagi123", - "Maugo", - "odysseuscm", - "kdex", - "oliver-j", - "stehefan" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/includes": { - "modified": "2020-10-15T21:39:40.373Z", - "contributors": [ - "oliver-gramberg", - "MichelBahl", - "mikakruschel", - "schlagi123", - "adabru" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/indexOf": { - "modified": "2020-10-15T21:39:59.907Z", - "contributors": [ - "SebinNyshkim", - "schlagi123", - "Athyrion" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/isArray": { - "modified": "2020-10-15T21:26:02.361Z", - "contributors": [ - "schlagi123", - "oliver-j", - "fscholz", - "yacchatta" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/join": { - "modified": "2020-10-15T21:32:45.888Z", - "contributors": [ - "SebinNyshkim", - "timlg07", - "schlagi123", - "wattafot", - "Saschlong", - "mieth" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/keys": { - "modified": "2020-10-15T21:55:10.261Z", - "contributors": [ - "jfi", - "schlagi123", - "Arlind" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf": { - "modified": "2020-10-15T21:55:15.610Z", - "contributors": [ - "schlagi123", - "Arlind" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/length": { - "modified": "2020-10-15T21:38:16.165Z", - "contributors": [ - "jfi", - "schlagi123", - "AndyTheDandy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/map": { - "modified": "2020-10-15T21:32:29.489Z", - "contributors": [ - "mwiehl", - "felix_geenen", - "SebinNyshkim", - "MerlindlH", - "schlagi123", - "kdex", - "FNGR2911", - "annnoo", - "StevenS77", - "schellmax", - "justb81", - "mexn", - "leMaik", - "derhagen", - "Arminmsg" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/of": { - "modified": "2020-10-15T21:38:18.269Z", - "contributors": [ - "schlagi123", - "dennissterzenbach", - "almai", - "mormahr", - "oliver-j" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/pop": { - "modified": "2020-10-15T21:25:28.942Z", - "contributors": [ - "schlagi123", - "maoberlehner", - "fscholz", - "Airblader" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/push": { - "modified": "2020-10-15T21:25:28.923Z", - "contributors": [ - "SebinNyshkim", - "schlagi123", - "k7sleeper", - "marzepani", - "yacchatta", - "Arminmsg", - "fscholz", - "Airblader" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/reverse": { - "modified": "2020-10-15T21:25:28.957Z", - "contributors": [ - "schlagi123", - "cepharum", - "vog", - "mieth", - "fscholz", - "Airblader" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/shift": { - "modified": "2020-10-15T21:25:29.071Z", - "contributors": [ - "schlagi123", - "OlegBr", - "HendrikRunte", - "fscholz", - "Airblader" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/slice": { - "modified": "2020-10-15T21:38:17.986Z", - "contributors": [ - "DATADEER", - "schlagi123", - "wiegels", - "OlegBr", - "oliver-j" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/some": { - "modified": "2020-10-15T21:51:10.415Z", - "contributors": [ - "schlagi123", - "Jumace", - "ddBenny", - "MaxKr", - "StevenS77", - "ThorstenHans" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/sort": { - "modified": "2020-10-15T21:50:45.209Z", - "contributors": [ - "SebinNyshkim", - "schlagi123", - "xerox", - "Huargh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/splice": { - "modified": "2020-10-15T21:30:49.791Z", - "contributors": [ - "montapro", - "Huegelkoenig", - "SebinNyshkim", - "leon-jasper", - "GateKeeper", - "Horitsu", - "Breaker222", - "schlagi123", - "ndresx", - "n4nos", - "valentinmanthei", - "Andorxor", - "rillke", - "cepharum", - "TMR", - "BlaM", - "shentschel", - "casarock", - "depoulo", - "rhulha" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/toLocaleString": { - "modified": "2020-10-15T21:59:23.526Z", - "contributors": [ - "schlagi123", - "SphinxKnight", - "vssn" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/toSource": { - "modified": "2020-10-15T22:01:02.840Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/toString": { - "modified": "2020-10-15T21:55:07.803Z", - "contributors": [ - "schlagi123", - "Arlind" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/unshift": { - "modified": "2020-10-15T21:47:41.247Z", - "contributors": [ - "schlagi123", - "stefanwimmer128" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/values": { - "modified": "2020-10-15T21:47:50.418Z", - "contributors": [ - "schlagi123", - "Semnodime" - ] - }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { - "modified": "2020-10-15T21:54:09.221Z", - "contributors": [ - "schlagi123", - "bpaetzold", - "Steinweber", - "ionree" - ] - }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species": { - "modified": "2020-10-15T22:01:09.595Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength": { - "modified": "2020-10-15T22:01:09.711Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView": { - "modified": "2020-10-15T22:01:15.297Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype": { - "modified": "2020-10-15T22:01:15.339Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice": { - "modified": "2020-10-15T22:01:09.307Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/AsyncFunction": { - "modified": "2020-10-15T22:01:12.299Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype": { - "modified": "2020-10-15T22:01:09.829Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics": { - "modified": "2020-10-15T22:01:14.609Z", - "contributors": [ - "Cortys", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/add": { - "modified": "2020-10-15T22:01:23.490Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/and": { - "modified": "2020-10-15T22:01:14.178Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange": { - "modified": "2020-10-15T22:01:23.524Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/exchange": { - "modified": "2020-10-15T22:01:23.804Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/isLockFree": { - "modified": "2020-10-15T22:01:23.367Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/load": { - "modified": "2020-10-15T22:01:23.437Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/or": { - "modified": "2020-10-15T22:01:12.332Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/store": { - "modified": "2020-10-15T22:01:23.350Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/sub": { - "modified": "2020-10-15T22:01:23.514Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/wait": { - "modified": "2020-10-15T22:01:24.450Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/wake": { - "modified": "2020-10-15T22:01:24.441Z", - "contributors": [ - "Cortys", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/xor": { - "modified": "2020-10-15T22:01:13.324Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean": { - "modified": "2020-10-15T21:34:05.047Z", - "contributors": [ - "schlagi123", - "FatihSyrox", - "rbarisic" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean/prototype": { - "modified": "2020-10-15T21:45:26.885Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean/toSource": { - "modified": "2020-10-15T21:45:27.090Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean/toString": { - "modified": "2020-10-15T21:45:27.278Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean/valueOf": { - "modified": "2020-10-15T21:45:25.930Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView": { - "modified": "2020-10-15T21:46:54.170Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/buffer": { - "modified": "2020-10-15T21:46:47.193Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/byteLength": { - "modified": "2020-10-15T21:47:07.178Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/byteOffset": { - "modified": "2020-10-15T21:47:08.642Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/getFloat32": { - "modified": "2020-10-15T21:47:06.658Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/getFloat64": { - "modified": "2020-10-15T21:47:05.154Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/getInt16": { - "modified": "2020-10-15T21:47:04.973Z", - "contributors": [ - "Univream", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/getInt32": { - "modified": "2020-10-15T21:47:05.070Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/getInt8": { - "modified": "2020-10-15T21:47:04.948Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/getUint16": { - "modified": "2020-10-15T21:47:05.220Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/getUint32": { - "modified": "2020-10-15T21:47:05.094Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/getUint8": { - "modified": "2020-10-15T21:47:05.304Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/prototype": { - "modified": "2020-10-15T21:46:53.689Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/setFloat32": { - "modified": "2020-10-15T21:47:06.918Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/setFloat64": { - "modified": "2020-10-15T21:47:05.889Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/setInt16": { - "modified": "2020-10-15T21:47:06.130Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/setInt32": { - "modified": "2020-10-15T21:47:06.080Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/setInt8": { - "modified": "2020-10-15T21:47:06.022Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/setUint16": { - "modified": "2020-10-15T21:47:06.573Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/setUint32": { - "modified": "2020-10-15T21:47:07.408Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView/setUint8": { - "modified": "2020-10-15T21:47:06.396Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date": { - "modified": "2020-10-15T21:26:50.406Z", - "contributors": [ - "Coding-Boss", - "pop1989bb", - "1siegi", - "Streamities", - "herbmaier", - "schlagi123", - "tweini", - "mreu", - "JohannesStadler", - "cedisupersoccer", - "xhronos", - "decatur", - "fscholz", - "teoli", - "IchMoritz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive": { - "modified": "2020-10-15T21:45:49.430Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/UTC": { - "modified": "2020-10-15T21:46:03.247Z", - "contributors": [ - "herbmaier", - "schlagi123", - "jaller94" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getDay": { - "modified": "2020-10-15T21:45:27.743Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getFullYear": { - "modified": "2020-10-15T21:45:26.276Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getHours": { - "modified": "2020-10-15T21:45:25.193Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds": { - "modified": "2020-10-15T21:45:26.861Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getMinutes": { - "modified": "2020-10-15T21:45:26.279Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getMonth": { - "modified": "2020-10-15T21:45:28.693Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getSeconds": { - "modified": "2020-10-15T21:45:29.298Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getTime": { - "modified": "2020-10-15T21:45:29.479Z", - "contributors": [ - "schlagi123", - "davidwittenbrink" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset": { - "modified": "2020-10-15T21:45:28.937Z", - "contributors": [ - "schlagi123", - "douira", - "ozcelebi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCDate": { - "modified": "2020-10-15T21:45:20.226Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCDay": { - "modified": "2020-10-15T21:45:21.504Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear": { - "modified": "2020-10-15T21:45:23.446Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCHours": { - "modified": "2020-10-15T21:45:19.205Z", - "contributors": [ - "dotperinch", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds": { - "modified": "2020-10-15T21:45:30.061Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes": { - "modified": "2020-10-15T21:45:24.536Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth": { - "modified": "2020-10-15T21:45:18.574Z", - "contributors": [ - "schlagi123", - "Artenuvielle" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds": { - "modified": "2020-10-15T21:45:22.596Z", - "contributors": [ - "schlagi123", - "HendrikRunte" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getYear": { - "modified": "2020-10-15T21:45:31.158Z", - "contributors": [ - "danieldiekmeier", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/now": { - "modified": "2020-10-15T21:29:19.444Z", - "contributors": [ - "Khazl", - "schlagi123", - "J000S", - "gurix", - "fscholz", - "LOK" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/parse": { - "modified": "2020-10-15T21:30:28.964Z", - "contributors": [ - "BuZZ-T", - "schlagi123", - "PapaBravo", - "GottZ", - "TheSuspiciousWombat", - "MrMartiniMo", - "danieldiekmeier", - "Drasive" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/prototype": { - "modified": "2020-10-15T21:45:25.297Z", - "contributors": [ - "schlagi123", - "Schollator" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setDate": { - "modified": "2020-10-15T21:45:35.204Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setFullYear": { - "modified": "2020-10-15T21:45:37.723Z", - "contributors": [ - "dritter", - "schlagi123", - "derhofbauer" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setHours": { - "modified": "2020-10-15T21:45:35.032Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds": { - "modified": "2020-10-15T21:45:36.061Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setMinutes": { - "modified": "2020-10-15T21:45:36.748Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setMonth": { - "modified": "2020-10-15T21:45:38.160Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setSeconds": { - "modified": "2020-10-15T21:45:36.906Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setTime": { - "modified": "2020-10-15T21:33:01.056Z", - "contributors": [ - "schlagi123", - "jhnnslschnr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCDate": { - "modified": "2020-10-15T21:45:41.852Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear": { - "modified": "2020-10-15T21:45:48.630Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCHours": { - "modified": "2020-10-15T21:45:48.619Z", - "contributors": [ - "schlagi123", - "stephtr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds": { - "modified": "2020-10-15T21:45:41.573Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes": { - "modified": "2020-10-15T21:45:41.649Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth": { - "modified": "2020-10-15T21:45:41.116Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds": { - "modified": "2020-10-15T21:45:41.484Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setYear": { - "modified": "2020-10-15T21:45:41.405Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toDateString": { - "modified": "2020-10-15T21:45:49.664Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toGMTString": { - "modified": "2020-10-15T21:45:51.459Z", - "contributors": [ - "schlagi123", - "bentzibentz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toISOString": { - "modified": "2020-10-15T21:45:50.222Z", - "contributors": [ - "NiklasMerz", - "schnellboot", - "botic", - "schlagi123", - "WikiMarc" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toJSON": { - "modified": "2020-10-15T21:42:32.875Z", - "contributors": [ - "schlagi123", - "Chips100" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString": { - "modified": "2020-10-15T21:45:58.511Z", - "contributors": [ - "schlagi123", - "gunnarbittersmann" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleString": { - "modified": "2020-10-15T21:45:59.947Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString": { - "modified": "2020-10-15T21:46:02.185Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toSource": { - "modified": "2020-10-15T21:45:56.411Z", - "contributors": [ - "teoli", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toString": { - "modified": "2020-10-15T21:45:57.842Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toTimeString": { - "modified": "2020-10-15T21:45:50.302Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toUTCString": { - "modified": "2020-10-15T21:45:55.020Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/valueOf": { - "modified": "2020-10-15T21:45:55.002Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error": { - "modified": "2020-10-15T21:46:20.812Z", - "contributors": [ - "Flur3x", - "nnals", - "schlagi123", - "jens1o", - "shaedrich", - "andreasf", - "AlexanderFradiani" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/Stack": { - "modified": "2020-10-15T21:48:37.021Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/columnNumber": { - "modified": "2020-10-15T21:46:22.573Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/fileName": { - "modified": "2020-10-15T21:46:29.467Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/lineNumber": { - "modified": "2020-10-15T21:46:24.762Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/message": { - "modified": "2020-10-15T21:46:22.605Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/name": { - "modified": "2020-10-15T21:46:26.394Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/prototype": { - "modified": "2020-10-15T21:46:17.159Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/toSource": { - "modified": "2020-10-15T21:46:53.703Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/toString": { - "modified": "2020-10-15T21:46:20.003Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/EvalError": { - "modified": "2020-10-15T22:01:27.828Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/EvalError/prototype": { - "modified": "2020-10-15T22:01:29.746Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Float32Array": { - "modified": "2020-10-15T22:01:33.350Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Float64Array": { - "modified": "2020-10-15T22:01:34.687Z", - "contributors": [ - "pastparty", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function": { - "modified": "2020-10-15T21:30:33.103Z", - "contributors": [ - "woiddale", - "schlagi123", - "TDesjardins", - "StevenS77", - "Mingun" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/apply": { - "modified": "2020-10-15T21:47:39.222Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/arguments": { - "modified": "2020-10-15T22:01:34.868Z", - "contributors": [ - "rossler123", - "trollkotze", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/bind": { - "modified": "2020-10-15T21:37:23.019Z", - "contributors": [ - "axelrindle", - "chikovanreuden", - "rendner", - "matz3", - "schlagi123", - "Leitschiff", - "roman.seidelsohn", - "sepastian" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/call": { - "modified": "2020-10-15T21:30:32.549Z", - "contributors": [ - "ffriedl89", - "alexander-heimbuch", - "schlagi123", - "Oekel", - "Abro", - "haryl", - "loki", - "nelf" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/caller": { - "modified": "2020-10-15T22:01:48.453Z", - "contributors": [ - "buschco", - "Obiwahn", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/displayName": { - "modified": "2020-10-15T22:01:52.215Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/length": { - "modified": "2020-10-15T21:34:09.689Z", - "contributors": [ - "schlagi123", - "Eiknheimer", - "timoweiss" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/name": { - "modified": "2020-10-15T21:37:34.115Z", - "contributors": [ - "BoyTheBoy", - "schlagi123", - "Eiknheimer", - "MoritzKn", - "DavidVollmers" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/prototype": { - "modified": "2020-10-15T22:01:36.587Z", - "contributors": [ - "xdevs23", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/toSource": { - "modified": "2020-10-15T22:01:47.277Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/toString": { - "modified": "2020-10-15T22:01:46.451Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Generator": { - "modified": "2020-10-15T22:01:57.503Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Generator/next": { - "modified": "2020-10-15T22:01:55.076Z", - "contributors": [ - "GarfieldKlon", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Generator/return": { - "modified": "2020-10-15T22:01:56.757Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Generator/throw": { - "modified": "2020-10-15T22:01:58.175Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/GeneratorFunction": { - "modified": "2020-10-15T22:02:04.667Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype": { - "modified": "2020-10-15T22:02:06.474Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Infinity": { - "modified": "2020-10-15T21:32:07.008Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Int16Array": { - "modified": "2020-10-15T22:01:32.923Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Int32Array": { - "modified": "2020-10-15T22:01:33.440Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Int8Array": { - "modified": "2020-10-15T22:01:34.152Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/InternalError": { - "modified": "2020-10-15T22:02:06.176Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/InternalError/prototype": { - "modified": "2020-10-15T22:02:05.813Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl": { - "modified": "2020-10-15T22:02:07.140Z", - "contributors": [ - "TorstenDittmann", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator": { - "modified": "2020-10-15T22:02:08.820Z", - "contributors": [ - "fscholz", - "schlagi123", - "wbamberg" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare": { - "modified": "2020-10-15T22:02:10.077Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype": { - "modified": "2020-10-15T22:02:09.634Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions": { - "modified": "2020-10-15T22:02:19.729Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf": { - "modified": "2020-10-15T22:02:18.509Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat": { - "modified": "2020-10-15T21:45:59.649Z", - "contributors": [ - "fscholz", - "gunnarbittersmann", - "BuZZ-T", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format": { - "modified": "2020-10-15T22:02:19.143Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts": { - "modified": "2020-10-15T22:02:19.130Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype": { - "modified": "2020-10-15T21:46:02.893Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions": { - "modified": "2020-10-15T22:03:23.205Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf": { - "modified": "2020-10-15T22:02:43.009Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat": { - "modified": "2020-10-15T21:45:21.440Z", - "contributors": [ - "fscholz", - "nw520", - "schlagi123", - "sdeitmer" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format": { - "modified": "2020-10-15T22:03:25.553Z", - "contributors": [ - "fscholz", - "apfelbox", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype": { - "modified": "2020-10-15T22:03:24.903Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf": { - "modified": "2020-10-15T22:02:57.962Z", - "contributors": [ - "fscholz", - "SebastianSpeitel", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/PluralRules": { - "modified": "2020-10-15T22:02:58.225Z", - "contributors": [ - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/supportedLocalesOf": { - "modified": "2020-10-15T22:02:59.909Z", - "contributors": [ - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales": { - "modified": "2020-10-15T22:02:08.681Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/JSON": { - "modified": "2020-10-15T21:34:42.140Z", - "contributors": [ - "schlagi123", - "RewoSiedge", - "Abro", - "markokr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/JSON/parse": { - "modified": "2020-10-15T21:34:37.174Z", - "contributors": [ - "schlagi123", - "mdnde", - "fscholz", - "ccoenen", - "maxkl", - "dguhl" - ] - }, - "Web/JavaScript/Reference/Global_Objects/JSON/stringify": { - "modified": "2020-10-15T21:38:21.975Z", - "contributors": [ - "duckymirror", - "powerpaul17", - "schlagi123", - "einfallstoll", - "sahin", - "DoctypeRosenthal", - "HighTower79", - "m3t4lukas", - "blub0hr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map": { - "modified": "2020-10-15T21:39:41.133Z", - "contributors": [ - "verij51", - "Streamities", - "kdex", - "Flonk", - "schlagi123", - "the-bluesnik", - "GinoHereIam", - "Chris-CR", - "Fearodin" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/@@iterator": { - "modified": "2020-10-15T22:01:27.148Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/@@species": { - "modified": "2020-10-15T22:01:26.820Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/@@toStringTag": { - "modified": "2020-10-15T22:01:26.636Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/clear": { - "modified": "2020-10-15T22:01:24.339Z", - "contributors": [ - "shaedrich", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/delete": { - "modified": "2020-10-15T22:01:25.242Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/entries": { - "modified": "2020-10-15T22:01:26.606Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/forEach": { - "modified": "2020-10-15T21:53:59.055Z", - "contributors": [ - "schlagi123", - "Techworker" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/get": { - "modified": "2020-10-15T22:01:25.184Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/has": { - "modified": "2020-10-15T22:01:25.655Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/keys": { - "modified": "2020-10-15T21:57:34.550Z", - "contributors": [ - "schlagi123", - "patpir" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/prototype": { - "modified": "2020-10-15T22:01:26.449Z", - "contributors": [ - "Morphbreed", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/set": { - "modified": "2020-10-15T22:01:24.339Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/size": { - "modified": "2020-10-15T22:01:24.292Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/values": { - "modified": "2020-10-15T22:01:25.714Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math": { - "modified": "2020-10-15T21:32:16.402Z", - "contributors": [ - "schlagi123", - "Artist-sumo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/E": { - "modified": "2020-10-15T21:32:14.403Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LN10": { - "modified": "2020-10-15T21:32:13.398Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LN2": { - "modified": "2020-10-15T21:32:14.601Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LOG10E": { - "modified": "2020-10-15T21:32:15.382Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LOG2E": { - "modified": "2020-10-15T21:32:15.299Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/PI": { - "modified": "2020-10-15T21:32:12.966Z", - "contributors": [ - "intxcc", - "schlagi123", - "JulianBuerger", - "KillerCodeMonkey" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2": { - "modified": "2020-10-15T21:32:13.657Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/SQRT2": { - "modified": "2020-10-15T21:32:13.993Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/acos": { - "modified": "2020-10-15T21:32:14.868Z", - "contributors": [ - "schlagi123", - "hictox" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/acosh": { - "modified": "2020-10-15T21:38:20.524Z", - "contributors": [ - "schlagi123", - "hictox" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/asin": { - "modified": "2020-10-15T21:38:20.385Z", - "contributors": [ - "schlagi123", - "hictox" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/asinh": { - "modified": "2020-10-15T21:38:17.929Z", - "contributors": [ - "schlagi123", - "hictox" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/atan": { - "modified": "2020-10-15T21:38:19.032Z", - "contributors": [ - "schlagi123", - "hictox" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/atan2": { - "modified": "2020-10-15T21:38:18.649Z", - "contributors": [ - "schlagi123", - "hictox" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/cbrt": { - "modified": "2020-10-15T21:38:16.861Z", - "contributors": [ - "itsdevdom", - "schlagi123", - "hictox" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/ceil": { - "modified": "2020-10-15T21:32:47.773Z", - "contributors": [ - "scor-ch", - "schlagi123", - "LuiSlacker", - "hictox", - "hanswer01" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/clz32": { - "modified": "2020-10-15T21:45:08.913Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/cos": { - "modified": "2020-10-15T21:45:11.097Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/cosh": { - "modified": "2020-10-15T21:45:13.156Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/exp": { - "modified": "2020-10-15T21:45:11.971Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/expm1": { - "modified": "2020-10-15T21:45:13.158Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/floor": { - "modified": "2020-10-15T21:40:05.734Z", - "contributors": [ - "schlagi123", - "mcmunder", - "flottokarotto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/fround": { - "modified": "2020-10-15T21:45:14.992Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/hypot": { - "modified": "2020-10-15T21:45:16.601Z", - "contributors": [ - "gunnarbittersmann", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/imul": { - "modified": "2020-10-15T21:45:04.964Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/log": { - "modified": "2020-10-23T10:19:29.166Z", - "contributors": [ - "sttzr", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/log10": { - "modified": "2020-10-15T21:45:15.451Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/log1p": { - "modified": "2020-10-15T21:45:15.457Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/log2": { - "modified": "2020-10-15T21:45:15.290Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/math.random": { - "modified": "2020-10-15T21:36:41.048Z", - "contributors": [ - "grumpy-cat", - "schlagi123", - "cami", - "serv-inc", - "Dargmuesli" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/max": { - "modified": "2020-10-15T21:37:55.703Z", - "contributors": [ - "tzimmermann", - "schlagi123", - "screeny05", - "Elytherion", - "ptitmouton" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/min": { - "modified": "2020-10-15T21:33:32.757Z", - "contributors": [ - "Stnieder", - "schlagi123", - "cedrichaase", - "SSchnitzler" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/pow": { - "modified": "2020-10-15T21:39:55.052Z", - "contributors": [ - "schlagi123", - "alice-wl" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/round": { - "modified": "2020-10-15T21:34:19.737Z", - "contributors": [ - "aserraric", - "schlagi123", - "RefToDev", - "Krayzeee92", - "DanMyshkin", - "michaelkoehne" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/sign": { - "modified": "2020-10-15T21:45:13.058Z", - "contributors": [ - "schlagi123", - "cedrichaase" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/sin": { - "modified": "2020-10-15T21:45:12.206Z", - "contributors": [ - "ModellbahnFreak", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/sinh": { - "modified": "2020-10-15T21:45:14.822Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/sqrt": { - "modified": "2020-10-15T21:45:14.468Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/tan": { - "modified": "2020-10-15T21:45:14.142Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/tanh": { - "modified": "2020-10-15T21:45:13.983Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/trunc": { - "modified": "2020-10-15T21:45:15.988Z", - "contributors": [ - "4typen", - "schlagi123", - "giffeler" - ] - }, - "Web/JavaScript/Reference/Global_Objects/NaN": { - "modified": "2020-10-15T21:24:05.253Z", - "contributors": [ - "schlagi123", - "boppy", - "SphinxKnight", - "fscholz", - "Jens_Verneuer" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number": { - "modified": "2020-10-15T21:26:52.848Z", - "contributors": [ - "schlagi123", - "mreu", - "StevenS77", - "mrcktz", - "fscholz", - "AngelSankturio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/EPSILON": { - "modified": "2020-10-15T21:26:52.886Z", - "contributors": [ - "mitch3ls", - "schlagi123", - "Steditor", - "Tilli81", - "fscholz", - "AngelSankturio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER": { - "modified": "2020-10-15T21:45:17.017Z", - "contributors": [ - "EpsilonBoo", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE": { - "modified": "2020-10-15T21:45:17.604Z", - "contributors": [ - "schlagi123", - "Fuzzyma" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER": { - "modified": "2020-10-15T21:45:17.586Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE": { - "modified": "2020-10-30T06:50:59.921Z", - "contributors": [ - "thefabicraft-github", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY": { - "modified": "2020-10-15T21:32:05.912Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/NaN": { - "modified": "2020-10-15T21:31:59.627Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY": { - "modified": "2020-10-15T21:32:00.956Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/isFinite": { - "modified": "2020-10-15T21:32:05.695Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/isInteger": { - "modified": "2020-10-15T21:45:17.315Z", - "contributors": [ - "schlagi123", - "MauriceAyasse" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/isNaN": { - "modified": "2020-10-15T21:32:02.637Z", - "contributors": [ - "schlagi123", - "mazilema", - "renemaas" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger": { - "modified": "2020-10-15T21:45:20.941Z", - "contributors": [ - "Frdnspnzr", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/parseFloat": { - "modified": "2020-10-15T21:45:17.199Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/parseInt": { - "modified": "2020-10-15T21:45:18.357Z", - "contributors": [ - "schlagi123", - "daugsbi", - "DennisAhaus" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/prototype": { - "modified": "2020-10-15T21:45:14.479Z", - "contributors": [ - "schlagi123", - "doeck" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toExponential": { - "modified": "2020-10-15T21:45:19.048Z", - "contributors": [ - "joebau0815", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toFixed": { - "modified": "2020-10-15T21:45:19.906Z", - "contributors": [ - "gunnarbittersmann", - "schlagi123", - "mack3457", - "mzur", - "phax" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toLocaleString": { - "modified": "2020-10-15T21:45:20.416Z", - "contributors": [ - "Hanmac", - "schlagi123", - "mreu", - "sdeitmer", - "PierreCorell" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toPrecision": { - "modified": "2020-10-15T21:45:20.364Z", - "contributors": [ - "schlagi123", - "phax" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toSource": { - "modified": "2020-10-15T21:45:18.319Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toString": { - "modified": "2020-10-15T21:45:18.952Z", - "contributors": [ - "schlagi123", - "giffeler" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/valueOf": { - "modified": "2020-10-15T21:45:19.158Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object": { - "modified": "2020-10-15T21:21:51.304Z", - "contributors": [ - "bobbor", - "wbamberg", - "fscholz", - "mholland1337" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__": { - "modified": "2019-03-23T22:08:08.241Z", - "contributors": [ - "Christian2507" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/assign": { - "modified": "2020-10-15T21:46:53.703Z", - "contributors": [ - "Stefie", - "schlagi123", - "Yogu", - "henrymoews", - "KuhnEDV" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/constructor": { - "modified": "2019-03-23T23:24:06.881Z", - "contributors": [ - "Olli64", - "fscholz", - "Airblader" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/create": { - "modified": "2019-03-23T23:03:06.202Z", - "contributors": [ - "arothweiler", - "peter30mar2017", - "fmsy", - "BurnerPat", - "Hendrikto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/defineProperty": { - "modified": "2019-07-01T07:52:37.430Z", - "contributors": [ - "JanSchuermannPH", - "Univream", - "tvormweg" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/entries": { - "modified": "2020-10-15T22:19:15.987Z", - "contributors": [ - "franca" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/freeze": { - "modified": "2020-10-15T21:33:52.609Z", - "contributors": [ - "SebinNyshkim", - "christophfriedrich", - "asilberschneider", - "clemenshelm", - "schlagi123", - "sbusch", - "in0x" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames": { - "modified": "2019-03-23T22:20:00.098Z", - "contributors": [ - "janbiasi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf": { - "modified": "2019-03-23T22:16:28.123Z", - "contributors": [ - "StevenS77", - "klausbx" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty": { - "modified": "2019-03-23T22:50:54.746Z", - "contributors": [ - "bambebituna", - "ilkercat", - "schlagi123", - "juicyarts" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/is": { - "modified": "2020-10-15T21:25:28.677Z", - "contributors": [ - "rioderelfte", - "SphinxKnight", - "kdex", - "level420", - "giffeler", - "StevenS77", - "fscholz", - "Airblader" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/isExtensible": { - "modified": "2019-03-23T22:15:34.012Z", - "contributors": [ - "dthdyver" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/isFrozen": { - "modified": "2020-10-15T22:20:16.815Z", - "contributors": [ - "bobbor" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/keys": { - "modified": "2019-03-23T23:05:44.528Z", - "contributors": [ - "p2k", - "kdex", - "schlagi123", - "cepharum", - "Bavragor" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/proto": { - "modified": "2019-04-16T09:05:23.152Z", - "contributors": [ - "barcmoehm", - "StevenS77" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/prototype": { - "modified": "2019-03-23T22:30:41.741Z", - "contributors": [ - "peter30mar2017", - "fl1p" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/toSource": { - "modified": "2019-03-23T22:08:15.191Z", - "contributors": [ - "teoli", - "Christian2507" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/valueOf": { - "modified": "2020-10-15T22:05:39.564Z", - "contributors": [ - "paulkoegel", - "dennissterzenbach" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/values": { - "modified": "2019-03-18T20:58:26.548Z", - "contributors": [ - "filmor", - "rhoio", - "andresattler" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise": { - "modified": "2020-09-11T07:37:54.436Z", - "contributors": [ - "sebenns", - "semmelbroesl", - "Dschubba", - "mrmoree", - "CorvusRohan", - "jnnkm", - "SphinxKnight", - "0xflotus", - "HendrikRunte", - "1blankz7" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/all": { - "modified": "2020-10-15T21:33:48.453Z", - "contributors": [ - "Dschubba", - "anniekao", - "SphinxKnight", - "kdex", - "davidrockt", - "Sharian" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/finally": { - "modified": "2020-10-15T22:05:15.072Z", - "contributors": [ - "tminich", - "wasabiNorman" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/race": { - "modified": "2020-10-15T22:04:13.810Z", - "contributors": [ - "pkimmlinger", - "cepharum", - "DaAitch" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/reject": { - "modified": "2020-10-15T21:53:18.040Z", - "contributors": [ - "ManuelKiessling", - "marco-a", - "modev" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/then": { - "modified": "2019-03-23T22:48:57.241Z", - "contributors": [ - "dbraun", - "SphinxKnight", - "kdex", - "DanielMSchmidt", - "florianb" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RangeError": { - "modified": "2019-03-23T22:12:22.680Z", - "contributors": [ - "jameshkramer" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RangeError/prototype": { - "modified": "2019-03-23T22:12:08.670Z", - "contributors": [ - "ThomasFe" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect": { - "modified": "2020-10-15T22:13:20.309Z", - "contributors": [ - "Tjerk-Haaye-Henricus" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect/apply": { - "modified": "2020-10-15T22:13:35.547Z", - "contributors": [ - "Tjerk-Haaye-Henricus" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect/construct": { - "modified": "2020-10-15T22:13:50.733Z", - "contributors": [ - "Tjerk-Haaye-Henricus" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp": { - "modified": "2020-08-17T16:16:42.469Z", - "contributors": [ - "MoPaMo", - "ModProg", - "D3rT1m", - "wbamberg", - "rmcproductions", - "Wiimm", - "doeck", - "StevenS77", - "Abro", - "Simmarith", - "fscholz", - "powerswitch", - "def00111", - "clone", - "lightspirit" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp/flags": { - "modified": "2020-10-15T22:08:09.837Z", - "contributors": [ - "vortami" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp/input": { - "modified": "2019-03-23T22:37:59.302Z", - "contributors": [ - "teoli", - "RewoSiedge", - "jumpball" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp/test": { - "modified": "2020-10-15T22:29:51.696Z", - "contributors": [ - "MrFootwork", - "jan.kaiser1952" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set": { - "modified": "2020-11-14T21:15:03.891Z", - "contributors": [ - "ottahe", - "MichaelGellings", - "cami", - "AndyLnd", - "mdnde2", - "Flonk", - "schlagi123", - "sspringer82" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/add": { - "modified": "2020-11-14T20:25:16.685Z", - "contributors": [ - "ottahe" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/delete": { - "modified": "2020-11-14T20:17:34.638Z", - "contributors": [ - "ottahe" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/has": { - "modified": "2019-03-23T22:10:20.086Z", - "contributors": [ - "mdnde2", - "psychotammi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String": { - "modified": "2020-10-15T21:30:10.579Z", - "contributors": [ - "kdex", - "Anonymous", - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/Trim": { - "modified": "2020-10-15T21:34:43.401Z", - "contributors": [ - "schlagi123", - "janpawellek", - "Codebryo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/TrimLeft": { - "modified": "2020-10-15T21:48:35.629Z", - "contributors": [ - "teoli", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/TrimRight": { - "modified": "2020-10-15T21:47:40.889Z", - "contributors": [ - "teoli", - "schlagi123", - "Zertrax" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/charAt": { - "modified": "2019-05-13T20:26:27.144Z", - "contributors": [ - "Huegelkoenig", - "PascalAOMS" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/concat": { - "modified": "2019-03-23T22:36:31.275Z", - "contributors": [ - "schlagi123", - "Saschlong" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/endsWith": { - "modified": "2019-03-23T22:28:08.246Z", - "contributors": [ - "THX138" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/fromCharCode": { - "modified": "2019-03-23T22:22:43.486Z", - "contributors": [ - "NielsNet", - "Huargh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/includes": { - "modified": "2020-10-15T21:49:46.614Z", - "contributors": [ - "vssn", - "kdex", - "PascalAOMS" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/indexOf": { - "modified": "2019-03-23T23:04:28.715Z", - "contributors": [ - "JohannesKuehnel", - "schlagi123", - "sroe", - "pascalhofmann", - "c4re" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/lastIndexOf": { - "modified": "2019-03-23T22:56:44.027Z", - "contributors": [ - "BenB", - "Chips100", - "flottokarotto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/length": { - "modified": "2020-10-15T21:34:41.966Z", - "contributors": [ - "Stuhl", - "schlagi123", - "labcode-de", - "flottokarotto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/match": { - "modified": "2020-10-15T21:54:33.157Z", - "contributors": [ - "alberts+", - "d4rkne55", - "Tosch110", - "afoeder", - "tobiasherber" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/prototype": { - "modified": "2020-10-15T22:24:44.810Z", - "contributors": [ - "Symtex99" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/raw": { - "modified": "2019-03-23T22:34:12.947Z", - "contributors": [ - "kdex", - "bfncs", - "schlagi123", - "cnu301" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/repeat": { - "modified": "2020-10-15T22:06:26.477Z", - "contributors": [ - "AlexWayhill" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/replace": { - "modified": "2019-11-20T12:28:26.785Z", - "contributors": [ - "fools-mate", - "danieldiekmeier", - "kkoop", - "HdHeiniDev", - "giffeler", - "TobiGe", - "fancyFranci", - "schlagi123", - "Saschlong", - "mower", - "tspaeth", - "fscholz", - "powerswitch" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/slice": { - "modified": "2019-03-23T22:18:04.121Z", - "contributors": [ - "napengam", - "didierCH", - "jay-bricksoft" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/split": { - "modified": "2020-10-15T21:34:44.394Z", - "contributors": [ - "SebinNyshkim", - "Ruupatt", - "shaedrich", - "virtusmaior", - "josephinepanda" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/startsWith": { - "modified": "2019-09-27T21:50:55.652Z", - "contributors": [ - "daluege", - "MWojt", - "kdex", - "Aaric", - "schlagi123", - "christ2go" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/substr": { - "modified": "2019-03-26T09:57:55.345Z", - "contributors": [ - "F4k3rzZ", - "schlagi123", - "jazzpi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/substring": { - "modified": "2019-05-22T10:50:37.923Z", - "contributors": [ - "DragonPerl", - "thebigbla", - "KillerCodeMonkey" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/suchen": { - "modified": "2020-10-15T22:11:40.635Z", - "contributors": [ - "tobipch", - "blackjack4494", - "Cr4zyG4m3rLP" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": { - "modified": "2020-10-15T21:37:54.853Z", - "contributors": [ - "schlagi123", - "Chips100" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toUpperCase": { - "modified": "2019-03-23T22:31:03.601Z", - "contributors": [ - "nextlevelshit", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/SyntaxError": { - "modified": "2020-10-15T21:46:23.938Z", - "contributors": [ - "schlagi123", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype": { - "modified": "2020-10-15T21:46:29.639Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/TypeError": { - "modified": "2020-10-15T21:51:09.089Z", - "contributors": [ - "schlagi123", - "Sheggy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/TypeError/prototype": { - "modified": "2020-10-15T21:58:39.373Z", - "contributors": [ - "schlagi123", - "Sheggy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly": { - "modified": "2020-10-15T22:14:29.365Z", - "contributors": [ - "vssn" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/compile": { - "modified": "2020-10-15T22:14:53.372Z", - "contributors": [ - "vssn" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming": { - "modified": "2020-10-15T22:15:11.252Z", - "contributors": [ - "vssn" - ] - }, - "Web/JavaScript/Reference/Global_Objects/decodeURIComponent": { - "modified": "2020-03-12T19:44:41.805Z", - "contributors": [ - "Saerdn" - ] - }, - "Web/JavaScript/Reference/Global_Objects/encodeURI": { - "modified": "2020-03-12T19:46:14.428Z", - "contributors": [ - "eras0r", - "knurzl" - ] - }, - "Web/JavaScript/Reference/Global_Objects/encodeURIComponent": { - "modified": "2020-03-12T19:42:09.480Z", - "contributors": [ - "giffeler", - "kaenganxt", - "dbohn", - "ViciousPecan" - ] - }, - "Web/JavaScript/Reference/Global_Objects/escape": { - "modified": "2020-03-12T19:44:36.899Z", - "contributors": [ - "gappeh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/globalThis": { - "modified": "2020-10-15T22:34:14.804Z", - "contributors": [ - "vssn" - ] - }, - "Web/JavaScript/Reference/Global_Objects/isFinite": { - "modified": "2020-10-15T21:32:05.093Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/isNaN": { - "modified": "2020-10-15T21:32:07.461Z", - "contributors": [ - "Steditor", - "schlagi123", - "SerkanSipahi", - "mazilema", - "zf2timo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/null": { - "modified": "2020-10-15T21:32:16.691Z", - "contributors": [ - "schlagi123", - "HolgerJeromin", - "cuatro" - ] - }, - "Web/JavaScript/Reference/Global_Objects/parseFloat": { - "modified": "2020-10-15T21:34:09.121Z", - "contributors": [ - "hellerim", - "schlagi123", - "bsotodo", - "crood" - ] - }, - "Web/JavaScript/Reference/Global_Objects/parseInt": { - "modified": "2020-10-15T21:45:22.117Z", - "contributors": [ - "schlagi123", - "giffeler", - "macahi", - "mazilema" - ] - }, - "Web/JavaScript/Reference/Global_Objects/undefined": { - "modified": "2020-10-15T21:32:16.777Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Global_Objects/unescape": { - "modified": "2020-03-12T19:41:42.907Z", - "contributors": [ - "thusslack" - ] - }, - "Web/JavaScript/Reference/Global_Objects/uneval": { - "modified": "2020-03-12T19:44:53.530Z", - "contributors": [ - "teoli", - "SamBrishes" - ] - }, - "Web/JavaScript/Reference/Iteration_protocols": { - "modified": "2020-03-12T19:47:50.502Z", - "contributors": [ - "P215W", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Klassen": { - "modified": "2020-03-12T19:41:32.478Z", - "contributors": [ - "schlagi123", - "Daniel_Sixl", - "Husi012", - "dehenne", - "DPangerl", - "jaller94", - "chiborg", - "akumagamo", - "neutr0nis", - "LevitatingOrange" - ] - }, - "Web/JavaScript/Reference/Klassen/constructor": { - "modified": "2020-03-12T19:43:34.404Z", - "contributors": [ - "kdex", - "schlagi123", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Klassen/extends": { - "modified": "2020-03-12T19:43:31.080Z", - "contributors": [ - "hporten", - "kdex", - "buboh", - "schlagi123", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Klassen/static": { - "modified": "2020-10-15T21:45:38.442Z", - "contributors": [ - "kdex", - "schlagi123", - "Nimelrian", - "jahe", - "marvhock", - "kannix", - "akumagamo" - ] - }, - "Web/JavaScript/Reference/Lexical_grammar": { - "modified": "2020-10-15T22:03:30.555Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators": { - "modified": "2020-10-15T21:31:28.975Z", - "contributors": [ - "schlagi123", - "fscholz", - "loki" - ] - }, - "Web/JavaScript/Reference/Operators/Addition": { - "modified": "2020-10-15T22:34:37.156Z", - "contributors": [ - "cs.schueler" - ] - }, - "Web/JavaScript/Reference/Operators/Bitwise_Operatoren": { - "modified": "2020-10-15T21:51:28.246Z", - "contributors": [ - "fscholz", - "kaljak", - "schlagi123", - "mizhac", - "MemoWalk" - ] - }, - "Web/JavaScript/Reference/Operators/Comma_Operator": { - "modified": "2020-10-15T21:59:30.294Z", - "contributors": [ - "schlagi123", - "vssn" - ] - }, - "Web/JavaScript/Reference/Operators/Conditional_Operator": { - "modified": "2020-10-15T21:41:29.204Z", - "contributors": [ - "Coding-Boss", - "nopeJS", - "Binnox", - "schlagi123", - "JWPapi", - "chauthai", - "terrluhr" - ] - }, - "Web/JavaScript/Reference/Operators/Dekrement": { - "modified": "2020-10-15T22:34:53.783Z", - "contributors": [ - "Klingohle" - ] - }, - "Web/JavaScript/Reference/Operators/Destrukturierende_Zuweisung": { - "modified": "2020-10-15T21:41:28.452Z", - "contributors": [ - "manner", - "ldtr89", - "Aoke87", - "apguru", - "schlagi123", - "himynameissteve", - "kdex", - "yampus", - "chaoran-chen", - "Alexa", - "sbusch" - ] - }, - "Web/JavaScript/Reference/Operators/Grouping": { - "modified": "2020-10-15T22:05:46.615Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators/Inkrement": { - "modified": "2020-10-15T22:34:54.059Z", - "contributors": [ - "Klingohle" - ] - }, - "Web/JavaScript/Reference/Operators/Logische_Operatoren": { - "modified": "2020-10-15T21:43:07.470Z", - "contributors": [ - "schlagi123", - "LeisureLarry", - "Webastronaut" - ] - }, - "Web/JavaScript/Reference/Operators/Modulo": { - "modified": "2020-10-15T22:34:54.665Z", - "contributors": [ - "Klingohle" - ] - }, - "Web/JavaScript/Reference/Operators/Objekt_Initialisierer": { - "modified": "2020-10-15T21:32:25.926Z", - "contributors": [ - "Callirius", - "fmeyertoens", - "schlagi123", - "JohannesDienst", - "nnmrts", - "kdex", - "siggi-heltau" - ] - }, - "Web/JavaScript/Reference/Operators/Operator_Precedence": { - "modified": "2020-03-12T19:43:04.570Z", - "contributors": [ - "oliver-gramberg", - "Heronils", - "schlagi123", - "Karpfador", - "dcodeIO", - "LK-Reichl-F", - "wLikeFish" - ] - }, - "Web/JavaScript/Reference/Operators/Optionale_Verkettung": { - "modified": "2020-10-15T22:26:51.885Z", - "contributors": [ - "TorbenKoehn" - ] - }, - "Web/JavaScript/Reference/Operators/Pipeline_operator": { - "modified": "2020-10-15T22:05:45.089Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators/Property_Accessors": { - "modified": "2020-10-15T21:55:35.876Z", - "contributors": [ - "schlagi123", - "timosperisen" - ] - }, - "Web/JavaScript/Reference/Operators/Spread_operator": { - "modified": "2020-03-12T19:42:35.849Z", - "contributors": [ - "developitz", - "mschleeweiss", - "kdex", - "theRealBaccata", - "schlagi123", - "sbusch", - "olhaar" - ] - }, - "Web/JavaScript/Reference/Operators/Spread_syntax": { - "modified": "2020-10-15T22:05:09.977Z", - "contributors": [ - "mischah", - "shaedrich", - "schlagi123", - "mschleeweiss" - ] - }, - "Web/JavaScript/Reference/Operators/Vergleichsoperatoren": { - "modified": "2020-10-15T21:37:40.074Z", - "contributors": [ - "Hocdoc", - "christophfriedrich", - "schlagi123", - "Elyasin", - "loki" - ] - }, - "Web/JavaScript/Reference/Operators/Zuweisungsoperator": { - "modified": "2020-10-15T21:48:40.239Z", - "contributors": [ - "wbamberg", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators/async_function": { - "modified": "2020-10-15T22:05:47.683Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators/await": { - "modified": "2020-10-15T22:05:59.887Z", - "contributors": [ - "joebau0815", - "saschbro", - "chrkhl", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators/class": { - "modified": "2020-03-12T19:42:53.976Z", - "contributors": [ - "kdex", - "Eiknheimer", - "schlagi123", - "terrluhr" - ] - }, - "Web/JavaScript/Reference/Operators/delete": { - "modified": "2020-10-15T21:38:04.252Z", - "contributors": [ - "kowarschick", - "schlagi123", - "pascaliske", - "enexusde", - "CaptainStone", - "olhaar" - ] - }, - "Web/JavaScript/Reference/Operators/function": { - "modified": "2020-10-15T21:56:30.909Z", - "contributors": [ - "m5yu", - "jakobpack", - "schlagi123", - "christianrhansen", - "vssn", - "amelzer" - ] - }, - "Web/JavaScript/Reference/Operators/function*": { - "modified": "2020-10-15T22:05:42.272Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators/in": { - "modified": "2020-10-15T21:39:06.431Z", - "contributors": [ - "mfranzke", - "schlagi123", - "kdex", - "xergon" - ] - }, - "Web/JavaScript/Reference/Operators/instanceof": { - "modified": "2020-10-15T21:39:26.955Z", - "contributors": [ - "schlagi123", - "HolgerJeromin", - "flipace", - "weedukind" - ] - }, - "Web/JavaScript/Reference/Operators/new": { - "modified": "2020-10-15T21:38:03.135Z", - "contributors": [ - "FelixSab", - "schlagi123", - "Maugo", - "michiruckstuhl", - "danbru1211" - ] - }, - "Web/JavaScript/Reference/Operators/new.target": { - "modified": "2020-10-15T22:05:44.821Z", - "contributors": [ - "hporten", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators/super": { - "modified": "2020-10-15T21:47:20.372Z", - "contributors": [ - "schlagi123", - "kdex", - "Skycro" - ] - }, - "Web/JavaScript/Reference/Operators/this": { - "modified": "2020-10-15T21:46:51.232Z", - "contributors": [ - "KratosAurion", - "schlagi123", - "kelthuzad", - "eluchsinger" - ] - }, - "Web/JavaScript/Reference/Operators/typeof": { - "modified": "2020-11-06T10:38:36.219Z", - "contributors": [ - "mschleeweiss", - "schlagi123", - "dmarku" - ] - }, - "Web/JavaScript/Reference/Operators/void": { - "modified": "2020-10-15T21:34:41.746Z", - "contributors": [ - "schlagi123", - "amelzer", - "JohannesDienst" - ] - }, - "Web/JavaScript/Reference/Operators/yield": { - "modified": "2020-10-15T22:05:44.303Z", - "contributors": [ - "kevinfoerster", - "ionxenia", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Operators/yield*": { - "modified": "2020-10-15T22:05:43.798Z", - "contributors": [ - "jborsch", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Statements": { - "modified": "2020-10-15T21:30:44.678Z", - "contributors": [ - "Galajda", - "schlagi123", - "JorisGutjahr", - "fscholz", - "SphinxKnight", - "timbernasley" - ] - }, - "Web/JavaScript/Reference/Statements/Empty": { - "modified": "2020-03-12T19:43:34.145Z", - "contributors": [ - "KuhnEDV" - ] - }, - "Web/JavaScript/Reference/Statements/async_function": { - "modified": "2020-10-15T22:13:51.356Z", - "contributors": [ - "Dodo-the-Coder", - "vssn", - "Galajda" - ] - }, - "Web/JavaScript/Reference/Statements/block": { - "modified": "2020-10-15T21:32:12.580Z", - "contributors": [ - "zuzuzu", - "yampus", - "mdschweda", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Statements/break": { - "modified": "2020-03-12T19:40:27.998Z", - "contributors": [ - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Statements/class": { - "modified": "2020-03-12T19:43:47.910Z", - "contributors": [ - "kdex", - "Idrinth", - "schlagi123", - "eluchsinger" - ] - }, - "Web/JavaScript/Reference/Statements/const": { - "modified": "2020-10-15T21:32:07.805Z", - "contributors": [ - "zuzuzu", - "evayde", - "timlg07", - "SphinxKnight", - "kdex", - "marcelglaeser", - "andreashofer123", - "fscholz", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Statements/continue": { - "modified": "2020-10-15T21:45:50.193Z", - "contributors": [ - "schlagi123", - "KuhnEDV" - ] - }, - "Web/JavaScript/Reference/Statements/debugger": { - "modified": "2020-10-15T22:30:09.075Z", - "contributors": [ - "zuzuzu" - ] - }, - "Web/JavaScript/Reference/Statements/default": { - "modified": "2020-10-15T21:46:29.118Z", - "contributors": [ - "schlagi123", - "eluchsinger" - ] - }, - "Web/JavaScript/Reference/Statements/do...while": { - "modified": "2020-03-12T19:42:19.798Z", - "contributors": [ - "schlagi123", - "jumpball" - ] - }, - "Web/JavaScript/Reference/Statements/export": { - "modified": "2020-10-15T21:41:31.690Z", - "contributors": [ - "hoelzlmanuel", - "wheelmaker24", - "xchange11", - "schlagi123", - "Snapstromegon", - "thomaskempel", - "yampus", - "rroehrig", - "tuffi111", - "sbusch" - ] - }, - "Web/JavaScript/Reference/Statements/for": { - "modified": "2020-03-12T19:42:06.001Z", - "contributors": [ - "schlagi123", - "Elyasin" - ] - }, - "Web/JavaScript/Reference/Statements/for...in": { - "modified": "2020-05-27T10:00:58.351Z", - "contributors": [ - "zuzuzu", - "baasti", - "koedev", - "Vitroxyn", - "schlagi123", - "KuhnEDV", - "JohannesDienst", - "fscholz", - "lupo72" - ] - }, - "Web/JavaScript/Reference/Statements/for...of": { - "modified": "2020-03-12T19:41:38.990Z", - "contributors": [ - "pastparty", - "Xan2063", - "SphinxKnight", - "kdex", - "Narigo" - ] - }, - "Web/JavaScript/Reference/Statements/function*": { - "modified": "2020-10-15T21:45:47.005Z", - "contributors": [ - "oliver-gramberg", - "arothweiler", - "schlagi123", - "xstable", - "yampus", - "kdex", - "KuhnEDV" - ] - }, - "Web/JavaScript/Reference/Statements/funktion": { - "modified": "2020-03-12T19:42:16.537Z", - "contributors": [ - "yampus", - "trillerpfeife", - "neverendingo" - ] - }, - "Web/JavaScript/Reference/Statements/if...else": { - "modified": "2020-10-15T21:32:18.484Z", - "contributors": [ - "schlagi123", - "yampus" - ] - }, - "Web/JavaScript/Reference/Statements/import": { - "modified": "2020-10-15T21:39:21.688Z", - "contributors": [ - "fmeyertoens", - "kdex", - "Snapstromegon", - "Kani1013", - "michaelze", - "yampus", - "yannick_versley", - "BennyAlex", - "Marzelpan", - "schlagi123", - "Breaker222", - "Simmarith", - "matbad" - ] - }, - "Web/JavaScript/Reference/Statements/label": { - "modified": "2020-03-12T19:43:50.191Z", - "contributors": [ - "schlagi123", - "eluchsinger" - ] - }, - "Web/JavaScript/Reference/Statements/let": { - "modified": "2020-03-12T19:40:29.227Z", - "contributors": [ - "evayde", - "rs-github", - "cami", - "Flonk", - "kdex", - "sigoa", - "TheFaithfulCritic", - "FliegenKLATSCH", - "gtmn", - "rimace", - "schlagi123", - "AndreeWille", - "th-we", - "chk1", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Statements/return": { - "modified": "2020-03-12T19:44:07.700Z", - "contributors": [ - "christophfriedrich", - "schlagi123" - ] - }, - "Web/JavaScript/Reference/Statements/switch": { - "modified": "2020-03-12T19:41:30.012Z", - "contributors": [ - "schlagi123", - "Elyasin" - ] - }, - "Web/JavaScript/Reference/Statements/throw": { - "modified": "2020-03-12T19:43:13.297Z", - "contributors": [ - "StanE" - ] - }, - "Web/JavaScript/Reference/Statements/try...catch": { - "modified": "2020-03-12T19:45:01.106Z", - "contributors": [ - "SpikePy", - "timomeh", - "stepdate" - ] - }, - "Web/JavaScript/Reference/Statements/var": { - "modified": "2020-03-12T19:40:22.049Z", - "contributors": [ - "rs-github", - "trillerpfeife", - "Epiglottis", - "schlagi123", - "rkoch", - "th-we", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Statements/while": { - "modified": "2020-10-15T21:37:40.413Z", - "contributors": [ - "dmho", - "schlagi123", - "Jintzo", - "Elyasin" - ] - }, - "Web/JavaScript/Reference/Strict_mode": { - "modified": "2020-05-27T12:41:43.793Z", - "contributors": [ - "zuzuzu", - "SebinNyshkim", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Veraltete_und_abgeschaffte_Features": { - "modified": "2020-03-12T19:43:15.969Z", - "contributors": [ - "PointedEars", - "jumpball" - ] - }, - "Web/JavaScript/Reference/Veraltete_und_abgeschaffte_Features/The_legacy_Iterator_protocol": { - "modified": "2020-03-12T19:48:53.999Z", - "contributors": [ - "ctexxx" - ] - }, - "Web/JavaScript/Reference/template_strings": { - "modified": "2020-10-15T21:38:21.925Z", - "contributors": [ - "zuzuzu", - "sandrosc", - "antstei", - "FelixSchwarzmeier", - "Editmonkey", - "SphinxKnight", - "0815fox", - "chrillek", - "22samuelk", - "stehefan" - ] - }, - "Web/JavaScript/Speicherverwaltung": { - "modified": "2020-03-12T19:38:43.251Z", - "contributors": [ - "FERNman", - "fscholz", - "Mitja", - "eminor" - ] - }, - "Web/JavaScript/Typed_arrays": { - "modified": "2020-03-12T19:40:57.461Z", - "contributors": [ - "flying-sheep", - "ksm2", - "Adowrath", - "schlagi123", - "sspringer82", - "fscholz", - "rogerraetzel" - ] - }, - "Web/JavaScript/Vergleiche_auf_Gleichheit_und_deren_Verwendung": { - "modified": "2020-03-12T19:40:00.637Z", - "contributors": [ - "schlagi123", - "outverness", - "kdex", - "fscholz", - "spiegelp" - ] - }, - "Web/Manifest": { - "modified": "2020-08-31T08:04:51.977Z", - "contributors": [ - "Zyndoras", - "gpion", - "SphinxKnight", - "tomknig", - "Lanseuo", - "lionralfs", - "hrjhn", - "McSodbrenner", - "fscholz", - "mojoaxel", - "tempelgogo", - "yzanomi" - ] - }, - "Web/Manifest/short_name": { - "modified": "2020-10-15T22:31:31.945Z", - "contributors": [ - "kevin98" - ] - }, - "Web/MathML": { - "modified": "2019-03-23T22:48:05.789Z", - "contributors": [ - "Draussenduscher", - "jumpball" - ] - }, - "Web/MathML/Attribute": { - "modified": "2019-03-23T22:41:26.024Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Attribute/Werte": { - "modified": "2019-03-18T21:17:29.433Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Beispiele": { - "modified": "2019-03-23T22:41:30.288Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Beispiele/MathML_Satz_des_Pythagoras": { - "modified": "2019-03-18T21:15:50.621Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Beispiele/Quadratische_Gleichung": { - "modified": "2019-03-23T22:41:16.866Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element": { - "modified": "2019-03-23T22:41:28.276Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/maction": { - "modified": "2019-03-23T22:35:35.054Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/math": { - "modified": "2019-03-18T21:15:50.121Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/menclose": { - "modified": "2019-03-23T22:35:37.131Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/merror": { - "modified": "2019-03-23T22:35:42.535Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mfenced": { - "modified": "2019-03-23T22:35:44.635Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mfrac": { - "modified": "2019-03-23T22:39:13.573Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mi": { - "modified": "2019-03-23T22:39:56.494Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mn": { - "modified": "2019-03-23T22:40:17.694Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mo": { - "modified": "2019-03-23T22:40:19.804Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mover": { - "modified": "2019-03-23T22:35:41.970Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mpadded": { - "modified": "2019-03-23T22:35:41.097Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mphantom": { - "modified": "2019-03-23T22:35:42.968Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mroot": { - "modified": "2019-03-23T22:40:25.676Z", - "contributors": [ - "Draussenduscher", - "jumpball" - ] - }, - "Web/MathML/Element/mrow": { - "modified": "2019-03-23T22:40:55.520Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/ms": { - "modified": "2019-03-23T22:35:40.687Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mspace": { - "modified": "2019-03-23T22:35:41.572Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/msqrt": { - "modified": "2019-03-23T22:40:04.280Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mstyle": { - "modified": "2020-10-15T21:41:26.425Z", - "contributors": [ - "bershanskiy", - "Draussenduscher" - ] - }, - "Web/MathML/Element/msub": { - "modified": "2019-03-18T21:15:46.910Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/msubsup": { - "modified": "2019-03-23T22:35:33.789Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/msup": { - "modified": "2019-03-23T22:35:34.021Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mtable": { - "modified": "2019-03-23T22:35:58.744Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mtd": { - "modified": "2019-03-23T22:36:01.471Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mtext": { - "modified": "2019-03-23T22:35:39.496Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/mtr": { - "modified": "2019-03-23T22:36:03.515Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/munder": { - "modified": "2019-03-23T22:35:33.540Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/MathML/Element/munderover": { - "modified": "2019-03-23T22:35:34.263Z", - "contributors": [ - "Draussenduscher" - ] - }, - "Web/Performance": { - "modified": "2020-05-22T10:23:33.706Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/Performance/dns-prefetch": { - "modified": "2020-05-22T10:23:34.773Z", - "contributors": [ - "chryxf" - ] - }, - "Web/Progressive_web_apps": { - "modified": "2019-08-19T03:49:08.791Z", - "contributors": [ - "fschaupp", - "chrisdavidmills", - "friedger" - ] - }, - "Web/Reference": { - "modified": "2020-07-03T18:35:25.162Z", - "contributors": [ - "duckymirror", - "fhwfzfge", - "Patrick_St.", - "Nickolay" - ] - }, - "Web/Reference/API": { - "modified": "2019-03-23T23:18:19.126Z", - "contributors": [ - "goligo", - "Hanibal1963", - "AngelSankturio" - ] - }, - "Web/SVG": { - "modified": "2019-03-24T00:13:09.048Z", - "contributors": [ - "teoli", - "ethertank", - "DavidWalsh", - "nicolasmn", - "fscholz", - "Mickiboy", - "-=Renegade=-", - "Ak120" - ] - }, - "Web/SVG/Attribute": { - "modified": "2019-03-23T22:14:31.297Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/SVG/Attribute/class": { - "modified": "2019-03-23T22:11:26.719Z", - "contributors": [ - "grobmeier" - ] - }, - "Web/SVG/Attribute/preserveAspectRatio": { - "modified": "2019-09-30T23:24:10.073Z", - "contributors": [ - "JackLeEmmerdeur", - "jbvsusj" - ] - }, - "Web/SVG/Element": { - "modified": "2019-03-23T23:33:28.131Z", - "contributors": [ - "Sebastianz", - "teoli", - "ethertank" - ] - }, - "Web/SVG/Element/animate": { - "modified": "2020-10-15T21:26:19.629Z", - "contributors": [ - "Dschubba", - "Sebastianz", - "fscholz", - "teoli", - "martin_ti" - ] - }, - "Web/SVG/Element/circle": { - "modified": "2019-03-23T23:02:17.743Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "Oliver_Schafeld", - "ppk42" - ] - }, - "Web/SVG/Element/foreignObject": { - "modified": "2019-03-23T23:21:17.052Z", - "contributors": [ - "Sebastianz", - "gluecksmelodie", - "teoli", - "powerswitch" - ] - }, - "Web/SVG/Element/path": { - "modified": "2020-10-15T22:17:06.133Z", - "contributors": [ - "MyLittlePenguin" - ] - }, - "Web/SVG/Element/polygon": { - "modified": "2019-03-23T22:09:13.846Z", - "contributors": [ - "Peremptor" - ] - }, - "Web/SVG/Element/rect": { - "modified": "2019-03-18T21:41:17.238Z", - "contributors": [ - "philSixZero" - ] - }, - "Web/SVG/Element/svg": { - "modified": "2020-10-15T21:43:06.785Z", - "contributors": [ - "Volker-E", - "Dschubba", - "mattenmad" - ] - }, - "Web/SVG/Element/textPath": { - "modified": "2019-03-23T22:46:20.244Z", - "contributors": [ - "Sebastianz", - "modellking" - ] - }, - "Web/SVG/Element/view": { - "modified": "2019-03-18T21:15:30.402Z", - "contributors": [ - "Crucion" - ] - }, - "Web/SVG/Namespaces_Crash_Course": { - "modified": "2019-03-23T22:26:27.398Z", - "contributors": [ - "bgueth", - "Oliver_Schafeld" - ] - }, - "Web/SVG/Tutorial": { - "modified": "2019-01-16T14:32:30.945Z", - "contributors": [ - "teoli", - "fscholz", - "Mickiboy" - ] - }, - "Web/SVG/Tutorial/Einführung": { - "modified": "2019-01-16T14:32:58.426Z", - "contributors": [ - "teoli", - "fscholz", - "Mickiboy" - ] - }, - "Web/SVG/Tutorial/Fills_and_Strokes": { - "modified": "2019-03-23T22:15:38.417Z", - "contributors": [ - "kevinfoerster", - "sebastianbarfurth" - ] - }, - "Web/SVG/Tutorial/Pfade": { - "modified": "2019-11-01T07:41:48.434Z", - "contributors": [ - "michelgotta", - "ringostarr80", - "Wombosvideo" - ] - }, - "Web/SVG/Tutorial/SVG_Image_Tag": { - "modified": "2019-04-14T13:23:03.557Z", - "contributors": [ - "Heupferdchenritter", - "RmnWtnkmp" - ] - }, - "Web/SVG/Tutorial/SVG_Schriftarten": { - "modified": "2019-04-14T13:08:23.758Z", - "contributors": [ - "Heupferdchenritter" - ] - }, - "Web/SVG/Tutorial/Tools_for_SVG": { - "modified": "2019-04-14T13:43:24.617Z", - "contributors": [ - "Heupferdchenritter" - ] - }, - "Web/Security": { - "modified": "2019-09-10T16:31:42.422Z", - "contributors": [ - "SphinxKnight", - "Dschubba", - "marumari" - ] - }, - "Web/Security/Certificate_Transparency": { - "modified": "2020-05-12T09:08:53.446Z", - "contributors": [ - "dennissterzenbach" - ] - }, - "Web/Security/Public_Key_Pinning": { - "modified": "2020-10-15T21:39:59.794Z", - "contributors": [ - "Dschubba", - "GanbaruTobi", - "rugk", - "TheAlxH", - "mozjan" - ] - }, - "Web/WebAPI": { - "modified": "2019-03-23T23:21:31.048Z", - "contributors": [ - "wbamberg", - "fscholz", - "casarock", - "sbarthel", - "TitanNano" - ] - }, - "Web/WebAPI/verwenden_von_geolocation": { - "modified": "2019-03-23T22:52:49.349Z", - "contributors": [ - "shaedrich", - "42triangles", - "silend" - ] - }, - "Web/Web_Components": { - "modified": "2019-03-18T20:58:34.307Z", - "contributors": [ - "SetTrend", - "vssn", - "pkos98", - "dreitzner", - "DomenicDenicola" - ] - }, - "Web/Web_Components/Custom_Elements": { - "modified": "2019-03-23T22:05:53.556Z", - "contributors": [ - "amelzer" - ] - }, - "Web/Web_Components/Using_custom_elements": { - "modified": "2020-03-12T05:58:55.117Z", - "contributors": [ - "napengam", - "stekoe", - "hermann77", - "Maik", - "td8" - ] - }, - "Web/XML": { - "modified": "2019-03-24T00:03:04.279Z", - "contributors": [ - "ExE-Boss" - ] - }, - "Web/XML/XML_Einführung": { - "modified": "2019-05-01T21:51:49.890Z", - "contributors": [ - "ExE-Boss", - "fscholz", - "XxPlay9xX", - "Mowtrains", - "Maxemil", - "Tammo", - "M@d Man" - ] - }, - "Web/XSLT": { - "modified": "2019-03-24T00:03:43.722Z", - "contributors": [ - "ExE-Boss", - "ysi", - "fscholz", - "Joda" - ] - }, - "WebSockets": { - "modified": "2019-03-23T22:59:48.670Z", - "contributors": [ - "Johann150", - "mvb1996" - ] - }, - "WebSockets/Writing_WebSocket_servers": { - "modified": "2020-08-15T02:07:04.944Z", - "contributors": [ - "otde2016" - ] - }, - "Web_Development/Mobile": { - "modified": "2019-03-23T23:29:04.325Z", - "contributors": [ - "wbamberg" - ] - }, - "Web_Development/Mobile/Responsive_design": { - "modified": "2019-03-23T23:29:04.477Z", - "contributors": [ - "HolgerSinn.Com" - ] - }, - "Webentwicklung": { - "modified": "2019-03-24T00:03:49.652Z", - "contributors": [ - "TornadoIDS", - "fscholz", - "Mrueegg" - ] - } -} \ No newline at end of file diff --git a/files/de/archive/add-ons/index.html b/files/de/archive/add-ons/index.html deleted file mode 100644 index 9c0f942944..0000000000 --- a/files/de/archive/add-ons/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Add-ons -slug: Archive/Add-ons -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons ---- -

Archived add-ons documentation.

- -

{{SubpagesWithSummaries}}

diff --git a/files/de/archive/add-ons/seamonkey_2/index.html b/files/de/archive/add-ons/seamonkey_2/index.html deleted file mode 100644 index ff0a0bcde2..0000000000 --- a/files/de/archive/add-ons/seamonkey_2/index.html +++ /dev/null @@ -1,281 +0,0 @@ ---- -title: Extensions support in SeaMonkey 2 -slug: Archive/Add-ons/SeaMonkey_2 -translation_of: Archive/Add-ons/SeaMonkey_2 ---- -

{{AddonSidebar}}

- -

Starting with SeaMonkey 2 Alpha 1 SeaMonkey supports toolkit/-style extensions. These type of extensions have many advantages for both users and developers compared to the old xpinstall/-style extensions.

- -

The Basics

- -

To support SeaMonkey 2 as a target application, you need to add it to the list of target applications in the extension's install.rdf file. The code for that will look something like this:

- -
<em:targetApplication>
-  <!-- SeaMonkey -->
-  <Description>
-    <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
-    <em:minVersion>2.0</em:minVersion>
-    <em:maxVersion>2.*</em:maxVersion>
-  </Description>
-</em:targetApplication>
- -

The install.js is not supported any more and should be removed.

- -

Differences as compared to other toolkit/-based applications

- - - -

URLbar Icons

- -

To display a button with a menupopup in the urlbar-icons for both Firefox and SeaMonkey 2.0, use this code:

- -

    <hbox id="urlbar-icons">
-         <image popup="myExt-menu"/>
-     </hbox>
-      <window id="main-window">
-         <menupopup id="myExt-menu">
-             <menuitem label="menuitem"/>
-             <menuitem label="menuitem"/>
-         </menupopup>
-     </window>

- -

Instead of

- -

    <hbox id="urlbar-icons">
-         <button type="menu">
-             <menupopup>
-                 <menuitem label="menuitem"/>
-                 <menuitem label="menuitem"/>
-                 <menuitem label="menuitem"/>
-             </menupopup>
-         </button>
-    </hbox>

- -

Technical Note: The code that opens the URL history popup just looks for any menupopup, so it goes wrong if you add your own. Ordinary popups are fine of course.

- -

The Statusbar

- -

In Firefox 3 a new vbox has been added, called "browser-bottombox", which encloses the find bar and status bar at the bottom of the browser window. Although this doesn't affect the appearance of the display, it may affect your extension if it overlays chrome relative to these elements.

- -

For example, if you overlay some chrome before the status bar, like this:

- -
<vbox id="browser-bottombox">
-  <something insertbefore="status-bar" />
-</vbox>
-
- -

Use the following technique to make your overlay work on both SeaMonkey 2 and Firefox 3:

- -
<window id="main-window">
-  <vbox id="browser-bottombox" insertbefore="status-bar">
-    <something insertbefore="status-bar" />
-  </vbox>
-</window>
-
- -

Thunderbird 3

- -

gFolderDisplay API

- -

SeaMonkey 2.0 only supports a reduced set of methods:

- - - -

gMessageDisplay API

- -

SeaMonkey 2.0 only supports a reduced set of methods:

- - - -

JavaScript Tweaks

- -

Firefox supports some shorthand in various places. These are so commonly available that developers often forget that they are not built-ins. SeaMonkey on the other hand defaults to not support them so they either need to be expanded to their proper forms or matching constants/variables need to be defined in custom code.

- - - - - - - - - - - - - - - - - - - - - - - - -
ShorthandExpansion
CcComponents.classes
CiComponents.interfaces
CrComponents.results
CuComponents.utils
- -

Multi-browser compatibility

- -

To make an extension compatible with SeaMonkey as well as Firefox/Thunderbird, you may need to do different things depending on which application is running the extension.

- -

In JavaScript code

- -

You can use the following technique to detect the application:

- -
const FIREFOX_ID = "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
-const THUNDERBIRD_ID = "{3550f703-e582-4d05-9a08-453d09bdfdc6}";
-const SEAMONKEY_ID = "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}";
-var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
-                        .getService(Components.interfaces.nsIXULAppInfo);
-if(appInfo.ID == FIREFOX_ID) {
-  // running under Firefox
-} else if(appInfo.ID == THUNDERBIRD_ID) {
-  // running under Thunderbird
-} else if(appInfo.ID == SEAMONKEY_ID) {
-  // running under SeaMonkey
-} else {
-  // another app
-}
- -

See Using nsIXULAppInfo for more details.

- -

In manifest file

- -

SeaMonkey uses different overlays than other applications. You can use the application flag to select which overlay should be used with which application:

- -
overlay chrome://browser/content/browser.xul chrome://myaddon/content/ffOverlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://myaddon/content/tbOverlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6}
-overlay chrome://navigator/content/navigator.xul chrome://myaddon/content/smOverlay.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
diff --git a/files/de/archive/apps/index.html b/files/de/archive/apps/index.html deleted file mode 100644 index bd2e2cad5c..0000000000 --- a/files/de/archive/apps/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Apps -slug: Archive/Apps -tags: - - Apps - - Deutsch - - Firefox OS - - Web -translation_of: Archive/Apps ---- -

Diese Seite enthält archivierten Inhalt für Apps, einschließlich veraltetem Web-App-Inhalt, Firefox OS-App-bezogenen Inhalten usw.

- - - -
-
-
Erweiterte Themen  
-
Diese Artikel enthalten zusätzliche Informationen zu erweiterten Open Web Apps-Themen. Themen wie Dokumentationen zur App-Architektur, die beim Entwurf und der Implementierung offener Web-Apps hilfreich sind, und andere Dokumentationen zum Erstellen eines Geschäfts für den Verkauf und Vertrieb offener Web-Apps.  
-
API-Referenz für die App-Entwicklung  
-
Technische Überprüfung abgeschlossen. Redaktionelle Prüfung abgeschlossen.  
-
Entwerfen von Open Web Apps  
-
Die Elemente in diesem Abschnitt gelten allgemein für das Design von Webanwendungen.  
-
Grafiken und UX  
-
Beim Erstellen von Open Web Apps müssen Sie das Erscheinungsbild, die Benutzererfahrung und den Workflow Ihrer Anwendungen sehr berücksichtigen. In früheren Teilen dieses Materials haben wir uns mit der Anwendungsplanung und den flexiblen Layouts für Anwendungen befasst. In diesem Abschnitt werden wir uns sowohl mit allgemeinen Mustern als auch mit Entwurfstechniken befassen, die für Open Web Apps funktionieren, und mit bestimmten Techniken und Ressourcen, die Ihnen helfen Stellen Sie großartig aussehende Firefox OS-Apps zusammen, die der Erfahrung der Standardanwendungen des Geräts entsprechen.  
-
Öffnen Sie die Web-App-Architektur  
-
Apps können von dem Server, auf dem sie gehostet werden ("Self-Hosting"), oder von einem Store aus installiert werden. Mozilla startete den Firefox Marketplace 2012 in einem Testmodus für Apps. Andere App Stores von Drittanbietern sind mit dieser Architektur ebenfalls möglich. Apps können kostenlos oder kostenpflichtig sein. Stores können die Überprüfung von Einkäufen unterstützen, um sicherzustellen, dass Apps nur von Benutzern ausgeführt werden, die sie gekauft haben. Der Firefox-Marktplatz unterstützt dies.  
-
Aufenthaltsraum - Animation und Grafik  
-
Es gibt verschiedene Tools im Internet, mit denen Sie Animationen und Grafiken für Ihre Arbeit erstellen können. In diesem Artikel gehen wir auf einige dieser Optionen ein, damit Sie Ihr Projekt hervorheben können! Zum Beispiel ist CSS eine Möglichkeit, Animationen auf HTML-Elemente anzuwenden, während Chartist ein großartiges Werkzeug zum Erstellen von Diagrammen und Diagrammen ist.  
-
Tools und Frameworks  
-
-
Überprüfen von Web-Apps mit dem App Validator  
-
Einige Überprüfungen, die der Validator durchführt, umfassen: - -
-
diff --git a/files/de/archive/b2g_os/anwendungsentwicklung/index.html b/files/de/archive/b2g_os/anwendungsentwicklung/index.html deleted file mode 100644 index 0c09cc1103..0000000000 --- a/files/de/archive/b2g_os/anwendungsentwicklung/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Firefox OS Anwendungsentwicklung -slug: Archive/B2G_OS/Anwendungsentwicklung -translation_of: Archive/B2G_OS/Firefox_OS_apps/Building_apps_for_Firefox_OS ---- -

Firefox OS apps sind nichts anderes als Open Web apps, die auf einem Smartphone mit Firefox OS installiert werden.

- -
- Note: Firefox OS currently identifies using the same UA string as Firefox for Android, except without the "Android;" clause. For example: "Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0a1".
diff --git a/files/de/archive/b2g_os/api/index.html b/files/de/archive/b2g_os/api/index.html deleted file mode 100644 index 706080ff54..0000000000 --- a/files/de/archive/b2g_os/api/index.html +++ /dev/null @@ -1,156 +0,0 @@ ---- -title: B2G OS APIs -slug: Archive/B2G_OS/API -tags: - - API - - B2G API - - NeedsTranslation - - TopicStub - - b2g os api's -translation_of: Archive/B2G_OS/API ---- -

List of B2G OS APIs 

- -

-A -B -C -D - - -F - - -H - - - - - - - - -M -N - - -P - - - - -S -T -U - - -W - - - - - - - -

diff --git a/files/de/archive/b2g_os/api/navigator/index.html b/files/de/archive/b2g_os/api/navigator/index.html deleted file mode 100644 index 553b9dd513..0000000000 --- a/files/de/archive/b2g_os/api/navigator/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Navigator (Firefox OS extensions) -slug: Archive/B2G_OS/API/Navigator -tags: - - API - - Firefox OS - - Interface - - Navigator - - Non-standard - - Reference -translation_of: Archive/B2G_OS/API/Navigator ---- -

{{APIRef("Firefox OS")}}{{Draft}}{{Non-standard_Header}}

- -

The Navigator interface represents the state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. This page represents the list of properties and methods added to Navigator on Firefox OS devices. For the list of properties and methods available to any Web sites, consult Navigator.

- -

A Navigator object can be retrieved using the read-only Window.navigator property.

- -

{{SubpagesWithSummaries}}

diff --git a/files/de/archive/b2g_os/api/navigator/requestwakelock/index.html b/files/de/archive/b2g_os/api/navigator/requestwakelock/index.html deleted file mode 100644 index 49d5275686..0000000000 --- a/files/de/archive/b2g_os/api/navigator/requestwakelock/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Navigator.requestWakeLock() -slug: Archive/B2G_OS/API/Navigator/requestWakeLock -translation_of: Archive/B2G_OS/API/Navigator/requestWakeLock ---- -

{{APIRef("Wake Lock API")}}{{ non-standard_header() }}

- -

This Navigator.requestWakeLock() method of the Wake Lock API is used to request a {{ domxref("MozWakeLock") }} on any resource of the device. This means that you can prevent that resource from becoming unavailable as long as your app holds a lock for that resource. For example, a voice recording app can obtain a lock to keep the screen on during recording so that it can give prover visual feedback to the user that recording is progressing.

- -
-

Note: When the window that requested one or more wake locks is closed or destroyed, any wake locks it acquired are implicitly released; no manual release is necessary.

-
- -

Syntax

- -
lock = window.navigator.requestWakeLock(resourceName);
- -

Parameters

- -
-
resourceName
-
A string representing the name of the resource to lock. Gaia uses four basic resources names: screen, cpuwifi, and gps, but any certified application can expose new resources.
-
- -

Return value

- -

Returns a {{domxref("MozWakeLock")}} object you can use to keep track of or release the lock..

- -

Specification

- -

W3C tracks Wake Lock: Use cases and is working on the Editor's traft API.

- -

See also

- - diff --git "a/files/de/archive/b2g_os/apps/eine_app_f\303\274r_firefox_os_schreiben/index.html" "b/files/de/archive/b2g_os/apps/eine_app_f\303\274r_firefox_os_schreiben/index.html" deleted file mode 100644 index 915a3be22d..0000000000 --- "a/files/de/archive/b2g_os/apps/eine_app_f\303\274r_firefox_os_schreiben/index.html" +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Eine App für Firefox OS schreiben -slug: Archive/B2G_OS/Apps/eine_app_für_firefox_os_schreiben -tags: - - Apps - - Firefox OS - - Handy -translation_of: Web/Apps/Fundamentals/Quickstart ---- -

Firefox OS Apps sind Web-Apps, die in HTML, CSS und JavaScript geschrieben sind. Die App wird im Internet publiziert, wie Sie es mit jeder anderen Website auch tun. Um die Website als installierbare Web-App auf dem Gerät zu erstellen, müssen Sie die App mit einem manifest und einem hock up, einem Installations-Button, wie nachfolgend erläutert, versehen.

-

Die folgenden Themen können als Ausgangspunkt genutzt werden:

- -

Natürlich können Sie auch tiefer in die Technologie von Web-Apps eintauchen.

-

Die Web-App installieren

-

Mit der App und dem manifest im Internet, müssen Sie es Gecko bekannt machen. Während der Installationsphase schaut Gecko nach dem manifest und fügt die wichtigsten Einträge dem HomeScreen u.a. hinzu.

-

Um die App zu installieren, müssen sie die navigator.mozApps.install API aufrufen. Hier finden Sie ein Beispiel für einen Installations-Button, den Sie in ihre App einbinden können, wenn Sie sie selbst hosten.

-
<button id="install">
-  Installieren Sie diese App auf Ihrem HomeScreen!
-</button>
-
-<script>
-(function(){
-  function install(ev) {
-    ev.preventDefault();
-    // Definierung der Manifest URL
-    var manifest_url = "http://my.webapp.com/manifest.webapp";
-    // App installieren
-    var myapp = navigator.mozApps.install(manifest_url);
-    myapp.onsuccess = function(data) {
-      // App ist installiert, Entfernen-Button
-      this.parentNode.removeChild(this);
-    };
-    myapp.onerror = function() {
-      // App war noch nicht installiert, Info ist in this.error.name definiert
-      console.log('Es ist ein Fehler bei der Installation aufgetreten., error: ' + this.error.name);
-     };
-  };
-  // Ein Verweis auf den Button und Aufruf von install() beim betätigen.
-  var button = document.getElementById('install');
-  button.addEventListener('click', install, false);
-})();
-</script>
-
-

Tipp: DenInstallations-Button können Sie auch in App-Stores, wie zum Beispiel dem Firefox Marketplace, einbinden, aber es ist oft sehr praktisch den Installations-Button auf der Startseite des Projekts zu haben.

-

Nun besuchen Sie Ihre Website mit der Firefox OS Browser App und benutzen Sie den Installations-Button.

diff --git a/files/de/archive/b2g_os/apps/index.html b/files/de/archive/b2g_os/apps/index.html deleted file mode 100644 index 6846cbffe7..0000000000 --- a/files/de/archive/b2g_os/apps/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Apps entwickeln für Firefox OS -slug: Archive/B2G_OS/Apps -translation_of: Web/Apps/Fundamentals ---- -

Applikationen für Firefox OS Geräte sind einfach offene Web Apps die komplett auf offenen Web Technologien basieren, wie etwa Javascript, HTML oder CSS. Unsere hauptsächliche Dokumentation erklärt Dir alles grundlegende was Du wissen musst und es gibt speziellere Artikel über das Entwickeln und das Testen von Apps für Firefox OS.

-
-
-

DoKumentation und Anleitungen

-
-
- Eine App für Firefox OS schreiben
-
- Anleitung wie Du deine eigene erste Web Applikation für Firefox OS entwickelst.
-
- Benutzererlebnis
-
- Leitfaden der Dir helfen soll deine Apps mit einem aufgeräumten und attraktiven Erlebnis für den Benutzer auszustatten inklusive Codebeispielen und Templates.
-
- Tipps und Techniken
-
- Ein Sortiment mit Tipps und Tricks (wie auch möglichen Problemlösungen) die unsere Entwickler für Dich ausgewählt haben!
-
-

Alle anzeigen...

-
-
-

Hol dir Hilfe von der Community

-

Du brauchst Hilfe bei einem Problem mit deiner App und kannst keine Lösung in der Dokumentation finden?

-
    -
  • Konsultiere das Web Apps Forum: {{DiscussionList("dev-webapps", "mozilla.dev.webapps")}}
  • -
  • Konsultiere das Layout Forum, welches sich mit HTML und CSS beschätigt: {{ DiscussionList("dev-tech-css", "mozilla.dev.tech.layout") }} - -
  • -
-

Vergiss die Netiquette nicht...

-

Werkzeuge

- -

Alle anzeigen...

- - -
-
-

 

diff --git a/files/de/archive/b2g_os/arbeiten_mit_dem_b2g_desktop_client/index.html b/files/de/archive/b2g_os/arbeiten_mit_dem_b2g_desktop_client/index.html deleted file mode 100644 index 14e53a827e..0000000000 --- a/files/de/archive/b2g_os/arbeiten_mit_dem_b2g_desktop_client/index.html +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Arbeiten mit dem B2G Desktop-Client -slug: Archive/B2G_OS/Arbeiten_mit_dem_B2G_Desktop_Client -translation_of: Archive/B2G_OS/Building_the_B2G_OS_simulator ---- -

Der Firefox OS desktop client, auch bekannt als B2G desktop client, bietet die Möglichkeit an Gaia and Web apps in einer Gecko-basierten Umgebung auf dem Desktop laufen zu lassen. Dabei wird die Geräte-Hardware jedoch nicht emuliert, sodass es zum Testen von Geräte-Api nicht taugt. Auch ist es kein Ersatz um auf einem Gerät zu testen. Dennoch, hat es einige aktivierte APIs, welche nicht im Firefox verfügbar sind, wie z.B. Kontakt- und Einstellungs-API. Es kann also durchaus nützlich sein, wenn man eine Anwendung entwickelt oder während man am Gaia-Inteface direkt arbeitet. Dieser Artikel behandelt das Downloaden bzw. zusammenbauen des Firefox OS Desktop Clients, jedoch auch wie man ihn benutzt.

-
-

Note: The easiest way to use the Firefox OS desktop client is to use the Firefox OS Simulator. It does not require you to build the desktop client yourself.

-
-

Download a nightly build

-
-

Note: Firefox OS version 1.0 is based on a branch of Gecko 18. There are also nightly builds based on mozilla-central here:
- http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/

-
-

Just like Firefox Nightlies, the Firefox OS desktop client is built every day from the latest source code. The latest build is available from the Mozilla FTP server. Be sure to pick the latest version and the right archive for your operating system. This lets you bypass having to build it yourself. In addition, you don't have to download Gaia on your own either.

-

Be sure to install the application in a writeable location; the application needs to be able to update included the Gaia profile.

-

You can now skip ahead to Running the desktop client, unless you actually want to build it for yourself.

-

Building the desktop client

-

The first thing we need to do is set up a standard Mozilla build environment. Once we have that, we can pull down the code we'll need and configure to build the Firefox OS desktop client.

-

Downloading the code for the first time

-

In a directory where we'd like the source code to go, let's clone the mozilla-central repository that contains all of Gecko:

-
 hg clone http://hg.mozilla.org/mozilla-central
-
-

Updating the code

-

When we do subsequent builds later, we'll want to make sure we have the latest code. Here's how to pull the latest changes:

-
cd mozilla-central
-hg pull -u
-
-

Create a mozconfig

-

Next, we need to create a mozconfig file in the mozilla-central directory to configure the build system to build the Boot to Gecko client instead of Firefox:

-
. "$topsrcdir/b2g/config/mozconfigs/common"
-
-mk_add_options MOZ_OBJDIR=../build
-mk_add_options MOZ_MAKE_FLAGS="-j9 -s"
-
-ac_add_options --enable-application=b2g
-ac_add_options --disable-libjpeg-turbo
-
-# This option is required if you want to be able to run Gaia's tests
-ac_add_options --enable-tests
-
-# turn on mozTelephony/mozSms interfaces
-# Only turn this line on if you actually have a dev phone
-# you want to forward to. If you get crashes at startup,
-# make sure this line is commented.
-#ac_add_options --enable-b2g-ril
-

Building

-

Now we're ready to build the desktop client with the following command issued from the mozilla-central directory:

-
make -f client.mk
-
-

The built client will be placed in the ../build/dist directory (based on the value you specify for MOZ_OBJDIR in the mozconfig file).

-

Downloading Gaia

-

By default the desktop client will show an empty screen because it doesn't know which Web app to load initially as the system app. The collection of system apps and default apps that come with Firefox OS is called Gaia.

-

To download Gaia for the first time, let's clone the source code repository on GitHub:

-
git clone https://github.com/mozilla-b2g/gaia
-cd gaia
-

To update an already existing clone of Gaia, we can pull in the latest changes from GitHub:

-
cd gaia
-git pull
-
-

Generating a profile

-

Next we need to set up Gaia's apps for the desktop client. This includes packaging the Gaia apps in the same way like they would be installed on the device, as well as setting up the permissions for the privileged system apps. We do this by generating a profile. The following command (run in the gaia directory) will take care of that:

-
DEBUG=1 make
-
-

This should create a profile-debug directory below the gaia directory. The new profile contains a customized extension and other configuration needed to make B2G run properly.

-

Running the desktop client

-

Once you've built the client and downloaded Gaia (or downloaded and installed the nightly desktop application), you're ready to fire up the Firefox OS desktop client.

-

Running on Linux

-

To run the desktop client on Linux using the embedded Gaia profile, just run the b2g executable. If you want to specify a different Gaia profile, you need to bypass the b2g wrapper program and run the b2g-bin binary. The binary is in the archive you downloaded earlier or in the ../build/dist/bin directory if you built the client yourself.

-
.../b2g-bin -profile gaia/profile-debug
-
-

You may experience annoying rendering problems. To avoid them, add the following line to your gaia/profile/user.js file:

-
user_pref("layers.acceleration.disabled", true);
-
-

Running on Mac

-

If you downloaded the nightly build, you can simply launch it from the Finder as usual. Any console output is visible by running the standard Console utility program included with your Mac.

-

If you want to specify a different Gaia profile, you need to bypass the b2g wrapper program and run the b2g-bin binary. The command line is slightly more complicated due to the location of the b2g-bin binary and the need for absolute paths when specifying the profile directory:

-
.../B2G.app/Contents/MacOS/b2g-bin -profile /full/path/to/gaia/profile-debug
-
-

Running on Windows

-

Running the nightly build on Windows is as simple as launching b2g.exe. If you want to customize the execution, you can do so by running the b2g-bin.exe executable instead; this bypasses the wrapper program that automatically uses the bundled Gaia.

-

Command line options

-

There are a number of command line options you can use to adjust the runtime experience while using the desktop client. You can get a list by using the -help option. This section covers some of the particularly interesting ones.

-

Specifying the screen size

-

You can specify the screen size of the device you want to simulate using the --screen option:

-
b2g --screen=<width>x<height>[@<dpi>]
-

Where <width>, <height>, and <dpi> are fairly self-explanatory parameters: the width and height of the device's screen in pixels and the device resolution in DPI. For example:

-
b2g --screen=320x480
-b2g --screen=320x480@160
-
-

Optionally, you can specify certain devices by name to simulate their screen size and resolution:

- -

Opening the JavaScript console

-

You can open the JavaScript console when launching the desktop B2G client by launching it from the command line with the -jsconsole flag. After building, just do:

-
.../b2g -jsconsole -profile /path/to/your/profile
-

If you've installed the nightly build on a Mac, you can do the following:

-
/Applications/B2G.app/Contents/MacOS/b2g-bin -jsconsole -profile /path/to/your/profile-debug
-
-

Note: On production builds of Firefox OS, console logging (such as by {{domxref("console.log()")}}) is disabled by default. In order to enable it, open the Settings app and navigate down through Device Information->More Information->Developer, then toggle on the "Console Enabled" preference.

-
-

Launching a specific application at startup

-

You can now specify an application to be launched automatically when b2g starts up in the desktop client. This is done as soon as the rest of the system is done loading up. To do this, just use the --runapp option, which takes as a parameter the name of the application to run. For example:

-
 .../b2g-bin -profile /path/to/your/gaia/profile-debug --runapp email
-

Before looking for an app to launch, the specified name is normalized by converting it to all lower case and removing all dashes and spaces. This normalized name is then compared to similarly normalized names from the manifests of available apps' manifests.

-

For example, the name of the email app is currently "E-mail", but --runapp email will work because of this normalization.

-

If you specify the --runapp option without an argument, or with an empty argument, the b2g client will output to your terminal a list of the known applications as well as a brief usage message.

-
-

Note: Using the --runapp option disables the lock screen as a side effect and does not re-enable it. It's assumed that you won't use this command on a profile on which you will be testing the lock screen, or you will turn it back on manually in Settings application. Feel free to contribute a patch to change this behavior if it's a problem.

-
-

Usage tips

-

This section provides a few helpful tips to using the B2G desktop client.

- -

Next steps

-

Now that you have a desktop build of Boot to Gecko running, you can do testing, development, and other work in it:

- diff --git a/files/de/archive/b2g_os/benutzung_des_app_managers/index.html b/files/de/archive/b2g_os/benutzung_des_app_managers/index.html deleted file mode 100644 index 5a03b1fb3b..0000000000 --- a/files/de/archive/b2g_os/benutzung_des_app_managers/index.html +++ /dev/null @@ -1,264 +0,0 @@ ---- -title: Benutzung des App Managers -slug: Archive/B2G_OS/Benutzung_des_App_Managers -translation_of: Archive/B2G_OS/Using_the_App_Manager ---- -
-

Der App Manager ist ein neues Tool, das in Firefox für Desktop integriert wurde. Es stellt einige nützliche Werkzeuge zum Testen, Verteilen und Debuggen von HTML5-Webapps mit Firefox OS Smartphones und dem Firefox OS Simulator bereit, welche direkt im Browser benutzt werden können.

- -

Der App Manager ist an Entwickler, die Firefox OS Version 1.2 oder später entwickeln, gerichtet. Wenn Sie Apps für Firefox OS 1.1 entwickeln, werfen Sie stattdessen einen Blick auf die Dokumentation für den Firefox OS Simulator 1.1.

-
- -

{{EmbedYouTube("z1Bxg1UJVf0")}}

- -

Der App Manager besteht aus folgenden Komponenten:

- - - -

Schnelleinstieg:

- -

Dieser Abschnitt soll einen möglichst schnellen Einstieg ermöglichen. Falls genauere Erklärungen benötigt werden, überspringen Sie bitte diesen Abschnitt und lesen Sie {{ anch("Device and system configuration") }}. Bei Problemen könnte außerdem der Abschnitt {{ anch("Troubleshooting") }} weiterhelfen.

- -
    -
  1. Stellen Sie sicher, dass Firefox Desktop 26+ installiert ist.
  2. -
  3. Öffnen Sie den App Manager (tippen Sie about:app-manager in die URL-Leiste).
  4. -
  5. Falls kein echtes Gerät mit Firefox OS zur Verfügung steht: -
      -
    1. Installieren Sie den Firefox OS Simulator
    2. -
    3. Klicken Sie auf Start Simulator in der unteren Werkzeugleiste des App Managers und anschließend auf den Namen des installierten Simulators.
    4. -
    -
  6. -
  7. Falls Sie ein echtes Gerät besitzen: -
      -
    1. Stellen Sie sicher, dass auf dem Gerät Firefox OS 1.2+ läuft.
    2. -
    3. Wenn Sie unter Windows arbeiten, stellen Sie sicher, dass Sie die bereitgestellten Treiber Ihres Handys installiert haben.
    4. -
    5. Deaktivieren Sie die Bildschirmsperre in den Einstellungen des Geräts (Settings > Screen Lock) und aktivieren Sie Remote Debugging (Settings > Device information > More information > Developer).
    6. -
    7. Installieren Sie das ADB Helper Add-on in Firefox Desktop.
    8. -
    9. Verbinden Sie ihr Gerät über ein USB-Kabel mit dem Computer.
    10. -
    11. Der Name des Geräts sollte nun in der unteren Leiste des App Managers erscheinen. Klicken Sie den Namen an.
    12. -
    -
  8. -
  9. Die untere Leiste sollte anzeigen "Connected to: xxx".
  10. -
  11. Klicken Sie auf das Apps-Panel und fügen Sie eine App hinzu (paketiert oder gehostet).
  12. -
  13. Der Refresh-Button validiert Ihre App und installiert sie auf dem Simulator/Gerät.
  14. -
  15. Der Debug-Button verbindet die Entwickler-Tools mit der laufenden App.
  16. -
- -

Geräte- und System-Konfiguration

- -

Bei der Benutzung des App Manager sollte man zuerst sicherstellen, dass System und Gerät korrekt konfiguriert sind. Dieser Abschnitt beschreibt alle dafür nötigen Schritte.

- -

Firefox 1.2+ wird benötigt

- -

Stellen Sie sicher, dass auf Ihrem Gerät Firefox OS 1.2/Boot2Gecko 1.2 oder höher läuft. Die Versionsnummer von Firefox OS wird unter Settings > Device Information > Software angezeigt.

- -

Falls die installierte Version nicht hoch genug ist, muss je nachdem welches Gerät Sie verwenden, eine der verfügbaren Nightly-Builds von Firefox 1.2+ installiert oder eine Version selbst kompiliert werden.

- -

Verfügbare Builds:

- - - -
-

Hinweis: Für die Erstellung eines eigenen Builds von Firefox OS 1.2+, folgen Sie den Anweisungen unter Building and installing Firefox OS und starten Sie mit Firefox OS build prerequisites.

-
- -

Remote-Debugging

- -

Als nächstes muss Remote Debugging in Firefox OS aktiviert werden. Navigieren Sie zu Settings > Device information > More information > Developer und aktivieren Sie die Checkbox bei Remote Debugging.

- -

ADB oder ADB Helper

- -

Über die Android Debug Bridge (ADB) wird die Verbindung und Kommunikation zwischen Gerät und Computer geregelt. Es gibt zwei Möglichkeiten ADB einzusetzen:

- - - -
-

Achtung: Es ist nicht nötig diesen Befehl auszuführen, wenn Sie das ADB Helper Add-on installiert haben.

-
- -

Verbinden des Geräts mit dem App Manager

- -

Nachdem alles konfiguriert wurde, ist es nun an der Zeit, das Gerät mit dem Computer zu verbinden und den App Manager zu starten:

- -
    -
  1. Verbinden Sie das Gerät via USB mit dem Computer.
  2. -
  3. Deaktivieren Sie Screen lock auf dem Gerät, indem Sie zu Settings > Screen Lock navigieren und die Checkbox bei Lock Screen deaktivieren. Dieses Vorgehen ist sehr ratsam, da die Verbindung abbricht, sobald sich die Bildschirmsperre aktiviert.
  4. -
  5. Starten Sie den App Manager — klicken Sie in der Menüleiste von Firefox Desktop Extras > Web-Entwickler > App Manager an oder tippen Sie about:app-manager in die URL-Leiste.
  6. -
  7. An der Unterseite des App Manager Tabs sehen Sie nun eine Anzeige für den Verbindungsstatus (siehe Screenshot unten). Es sollte nun möglich sein das Gerät durch einen Klick auf den "Connect to localhost:6000" Button zu verbinden.
  8. -
  9. Falls die Verbindung erfolgreich hergestellt wurde, erscheint eine Frage auf dem Gerät: "An incoming request to permit remote debugging connection was detected. Allow connection?". Bestätigen Sie mit dem OK-Button (evtl. müssen Sie den Power-Button am Gerät betätigen, damit Sie die Frage sehen können). Der Verbindungsstatus in der Leiste sollte dann "Connected to B2G" und einen Disconnect-Button zum Abbruch der Verbindung anzeigen.
  10. -
- -

- -
-

Die anderen Bedienelemente in der Verbindungstatus-Leiste ermöglichen die Verbindung eines Simulators mit dem App Manager. Dies wird im nächsten Abschnitt behandelt, wobei der Port für die Verbindung geändert wird. Wenn der Port gewechselt wird, muss auch Portweiterleitung für diesen Port aktiviert werden, wie unter {{anch("Enable port forwarding")}} beschrieben.

-
- -

Firefox OS Simulator Add-on

- -

Steht kein echtes Gerät zur Verfügung, das mit dem App Manager benutzt werden kann, kann es dennoch zusammen einem Firefox OS Simulator Add-on ausprobiert werden. Installieren Sie hierzu einen Simulator, passend für Ihr Betriebssystem (mehrere Versionen verfügbar, es ist ratsam alle zu installieren, für maximale Flexibilität):

- -

Simulator installieren

- - -

Nach der Installation des Simulators/der Simulatoren gehen Sie auf about:app-manager und klicken Sie in der Verbindungsstatus-Leiste unten den "Start Simulator"-Button. Daraufhin erscheinen drei weitere Buttons:

- - - -

Apps-Panel

- -

Da nun alles soweit funktionert, wird nun die Funktionalität des App Managers beschrieben, beginnend mit dem Apps Panel. Von hier aus können Sie eine bereits existierende App importieren, auf Ihr Gerät übertragen und debuggen:

- - - -

Ist dieser Schritt gelungen, sollten auf der rechten Seite des Fensters Informationen über die App angezeigt werden:

- -

- -

Manifest Editor

- -

Mit Firefox 28 und später findet sich im Apps Panel ein Editor für das App-Manifest:

- -

- -

Debugging

- -

Ein Klick auf "Update" überträgt (installiert) die App auf das Gerät. Mit einem Klick auf "Debug"  wird eine Toolbox mit der App verbunden, womit die App getestet werden kann:

- -

- -
-

Anmerkung: Es wird Ihnen gefallen mit der Toolbox herumzuspielen - ändern Sie den DOM, CSS etc. und Sie werden sehen, dass die Änderung in Echtzeit auf dem Gerät ablaufen. Die Änderungen werden im Code der installierten App gespeichert und beim nächsten Öffnen der App auf dem Gerät wieder angezeigt.

-
- -

Before Firefox 28, the tools are launched in a separate window. From Firefox 28 onwards, the tools are launched in a separate tab in the App Manager itself, alongside the Apps and Device tabs. The tab is given your app's icon so it's easy to find:

- -

- -

Fehler

- -

Falls eine App nicht erfolgreich hinzugefügt werden konnte - zum Beispiel weil die angegebene URL nicht korrekt ist oder ein gepackter App-Ordner ausgewählt wurde - wird dennoch ein Eintrag für die App hinzugefügt, dieser enthält jedoch Fehlermeldungen.

- -

- -

Bei dieser Ansicht ist es auch möglich, eine installierte App zu deinstallieren. Halten Sie hierfür den Mauszeiger über den Namen oder die Beschreibung der jeweiligen App auf der linken Seite und klicken Sie den X-Button an. Die App wird dadurch jedoch nicht vom Gerät entfernt. Um dies zu tun, muss das Gerät selbst benutzt werden.

- -

Device-Panel

- -

Im Tab unter Device werden Informationen zum verbundenen Gerät angezeigt. Von dem Fenster "Installed Apps" aus können die Apps auf dem Gerät gestartet und gedebuggt werden.

- -

- -
-

Anmerkung: Zertifizierte Apps werden standardmäßig nicht aufgelistet. Weitere Informationen zum Debuggen von zertifizierten Apps.

-
- -

Das Fenster "Permissions" zeigt die benötigten Rechte für verschiedene Web-APIs des Geräts:

- -

- -

Abschließend können Sie einen Screenshot mit dem Bildschirminhalt des Geräts erstellen, indem Sie den Screenshot-Button anklicken. Der Screenshot wird dann in einem neuen Tab in Firefox geöffnet und kann von dort aus gespeichert oder verworfen werden.

- -

Debuggen von zertifizierten Apps

- -

Bis dato können nur Geräte, welche mit einem Development-Build von Firefox OS 1.2 laufen, für das Debuggen von zertifizierten Apps benutzt werden. Falls auf ihrem Gerät ein Development-Build installiert ist, können Sie das Debuggen von zertifzierten Apps erlauben, indem Sie die Einstellung devtools.debugger.forbid-certified-apps in ihrem Firefox-Profil auf false setzen. Gehen sie hierfür wie folgt vor:

- -
    -
  1. -

    Geben Sie auf ihrem Computer den folgenden Befehl in ein Terminal/Konsole ein, um über die Shell auf das Dateisystem des Geräts zuzugreifen:

    - -
    adb shell
    - -

    Daraufhin sollte sich der Prompt zu root@android ändern.

    -
  2. -
  3. -

    Als nächstes stoppen sie B2G mit dem Befehl:

    - -
    stop b2g
    -
  4. -
  5. -

    Wechseln Sie mit folgenden Befehl zum Profilordner:

    - -
    cd /data/b2g/mozilla/*.default/
    -
  6. -
  7. -

    Und fügen Sie mit folgendem Befehl eine Zeile für die Einstellung in die Datei prefs.js ein:

    - -
    echo 'user_pref("devtools.debugger.forbid-certified-apps", false);' >> prefs.js
    -
  8. -
  9. -

    Nachdem die Datei bearbeitet und gespeichert wurde, starten Sie B2G erneut:

    - -
    start b2g
    -
  10. -
  11. -

    Verlassen Sie das Android-Dateisystem mit der Eingabe des Befehls exit. Damit kehren Sie zum normalen Terminal-Prompt zurück.

    -
  12. -
  13. -

    Stellen Sie nun eine Verbindung mit dem App Manger her. Die zertifizierten Apps sollten nun angezeigt werden.

    -
  14. -
- -
-

Anmerkung: Falls Sie diese Einstellung ihrem Gaia build hinzufügen möchten, sodass sie aktiv ist auch wenn ihr Telefon zurückgesetzt wird, fügen Sie die Einstellung in der Datei build/custom-prefs.js hinzu und führen Sie make reset-gaia aus.

-
- -

Running custom builds in the App Manager

- -

You can run custom B2G Desktop and Gaia builds in the App Manager via the simulator. Read Running custom Firefox OS/Gaia builds in the App Manager for more details.

- -

Fehlerbehandlung

- -

Falls das Gerät nicht gefunden wird:

- - - -

Die Verbindung des Geräts mit dem App Manager funktioniert nicht oder der Simulator kann nicht gestartet werden? Lassen Sie es uns wissen oder schreiben Sie einen Bugreport.

diff --git a/files/de/archive/b2g_os/building/index.html b/files/de/archive/b2g_os/building/index.html deleted file mode 100644 index 3b0c91142b..0000000000 --- a/files/de/archive/b2g_os/building/index.html +++ /dev/null @@ -1,268 +0,0 @@ ---- -title: Building Firefox OS -slug: Archive/B2G_OS/Building -translation_of: Archive/B2G_OS/Building ---- -
-
-
-

Once you've set up your build system and performed your initial pull and configure of the code, you can build Boot to Gecko. This guide explains how.

-
-

Updating your code

-

If this isn't your very first time building B2G, you might want to pull the latest code before you start to build. To do that, you should update both the B2G tools and the dependencies, using the following two commands:

-
git pull
-./repo sync -d
-
-

The -d option switches the various projects HEAD back to their Android manifest revision (i.e the default mainstream repository version). It is helpful if you made modifications to the repos (and have associated source changes) but you want to revert back to the master version temporarily. It will indeed leave your staged or working directory changes untouched (see the following SO question for the full explanation). If you did not touch the source code, you can use the normal command:

-
git pull
-./repo sync
-

You can update a specific make target's repository by specifying its name:

-
./repo sync gaia
-
-

The repo command has other options available that might be interesting; repo help will give you a lot of information.

-

Building

-
-

Note: Before building, you may want to set up a .userconfig file to customize the build. See Customization with the .userconfig file for details.

-
-

To build Boot to Gecko, simply use the build.sh tool:

-
cd B2G
-./build.sh
-
-

Time for another coffee break, or possibly a nap (especially if this is your first build, it takes about 30 min on a Core i7 with 8GB of RAM). As in the configure step on the previous page, if you are using a directory of previously-extracted Android system files, you should set ANDROIDFS_DIR before running build.sh.

-
-

Note: For more instructions on flashing your new build to a phone, read Installing Firefox OS on a mobile device.

-
-

Building specific modules

-

If you want to build just a particular module, such as Gecko, you can specify it by name:

-
./build.sh gecko
-
-

In order to refresh only one application, you can build only gaia module by using the BUILD_APP_NAME environment variable:

-
BUILD_APP_NAME=calendar ./build.sh gaia
-

To get a list of the modules you can build, you can do:

-
./build.sh modules
-
-

Setting the number of processor cores to use

-

By default, the B2G build scripts use the number of cores your system has plus two as the number of parallel tasks to run. You can change this by specifying the -j parameter when running build.sh. This can be handy if you're using your system for other things while building in the background and need to reduce CPU load a bit. It's also handy when you're having build problems, as it can make reading error output from the build process easier if you have just one task going at a time!

-

For example, to build using just two parallel tasks:

-
./build.sh -j2
-
-

The most common use case for this, however, is to prevent builds from running in parallel at all. This makes the output of the process much easier to read, making it easier to sort out build problems. To do this:

-
./build.sh -j1
-
-

Building multilocale

-

To create a multilocale build, do the following:

-

Gaia

-
    -
  1. Determine which Gaia languages file to use. We're currently using locales/languages_dev.json and locales/languages_all.json as our Gaia languages files.
  2. -
  3. Clone the appropriate locales from http://hg.mozilla.org/gaia-l10n into a directory; we use gaia-l10n/. You could use the locales/ directory . You'll need to clone a repo for each locale listed in the languages file.
  4. -
  5. In your environment, set LOCALE_BASEDIR to the absolute path of the directory in step 2. Set LOCALES_FILE to the absolute path of the file in step 1.
  6. -
  7. Also, you can set a GAIA_DEFAULT_LOCALE if you want to set a default locale.
  8. -
-
cd gaia/locales/
-hg clone https://hg.mozilla.org/releases/gaia-l10n/v1_2/es
-
- Set your environment variables:
-
-  
-
export LOCALE_BASEDIR=$PWD/locales
-export LOCALES_FILE=$PWD/locales/languages_dev.json
-export GAIA_DEFAULT_LOCALE=es
-
-

And the languages-dev.json could be replaced by your own languages-own.json path, which could formed like this. You would need to add an entry per each repo cloned in your locales directory.:

-
{
-  "en-US"     : "English (US)",
-  "es"        : "Español"
-}
-
-
-

Since bug 884752 landed (November 2013), to add keyboard layouts (if available in Gaia), you can use parameter GAIA_KEYBOARD_LAYOUTS. 

-

Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=884752

-

Layouts: https://github.com/mozilla-b2g/gaia/tree/v1.2/keyboard/layouts

-

For example, to add Spanish and Italian keyboard layout, run the previous command adding

-
  GAIA_KEYBOARD_LAYOUTS=en,es,it
-

At this point you're ready to flash Gaia to the phone for the first time. Connect the phone and make sure Remote Debugging is checked in Settings > Device Information > More Information > Developer.  You only need to do this once, for your own build of Gaia will have that pref turned on thanks to REMOTE_DEBUGGER=1:

-
 make clean && make production LOCALES_FILE=locales/languages-own.json
-
-

If you want to clone and/or update all supported locales for a particular branch, you can use this script

-
-

Gecko

-
    -
  1. Determine which Gecko languages file to use. We're currently using b2g/locales/all-locales as our Gecko languages file.
  2. -
  3. Clone the appropriate locales into a directory; this can be gecko-l10n/ . - -
  4. -
  5. Clone compare-locales.
  6. -
  7. -

    In your environment, set L10NBASEDIR to the absolute path of the directory in step 2. Set MOZ_CHROME_MULTILOCALE to a string of space-delimited locales from step 1.

    -

    Add the compare-locales/scripts dir to your PATH, and compare-locales/lib to your PYTHONPATH.

    - For instance, -
    export L10NBASEDIR=$PWD/gecko-l10n
    -export MOZ_CHROME_MULTILOCALE="ja zh-TW"
    -export PATH="$PATH:$PWD/compare-locales/scripts"
    -export PYTHONPATH="$PWD/compare-locales/lib"
    -
    -

    Once you have the above set up, you can run build.sh.

    -

    You can use .userconfig as well:

    -
    ## Gaia
    -export GAIA_DEFAULT_LOCALE=es
    -export LOCALE_BASEDIR=/b2g/gaia-l10n-transifex-v1.2/
    -export LOCALES_FILE=/b2g/languages_propio.json
    -
    -## Gecko
    -export L10NBASEDIR='/b2g/gecko-l10n-v1.2'
    -export MOZ_CHROME_MULTILOCALE="es-ES eu ca gl pt-BR"
    -export PATH="$PATH:/b2g/compare-locales/scripts"
    -export PYTHONPATH="/b2g/compare-locales/lib"
    -  
    -
  8. -
-
-

There are some mappings between Gaia languages and Gecko ones. For example, in Gaia, Spanish is "es", but on Gecko is tranlated to "Spanish of Spain" (es-ES)

-
-

These instructions may change as we smooth things out.

-

Known errors

-

"Build failed!"

-

If you get a general "Build failed" message, you should always try reconnecting your phone to your computer; sometimes the phone can become unmounted for a variety of reasons.

-
-

Note that configuring and building B2G for Keon DOESN'T WORK on Mac. You'll need to use Linux to build for this device.

-
-

Mountain Lion-specific build errors

-
-

1. If you are building on OS X 10.8 "Mountain Lion" (Xcode 4.4.1 or later) and encounter the following error:

-
external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)
- Edit the file: B2G/external/qemu/Makefile.android and add in line 78:
-
MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288   #/* B2G_fix: not finding M_PI constant */
-
-
-
- 2. If you are on Mountain Lion and you receive an error during ./build.sh like:
-
-
/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:797:9: error: too many #pragma options align=reset
-

Replace all instances of '#pragma options align=reset' with '#pragma pack()' inside /System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h

-
-

Undefined symbols "_sqlite3_androidopt_handle_pragma" and "_sqlite3_androidopt_open"

-

This error appears if you are building on OS X 10.7 or newer with Xcode 4.5 or newer. To fix this, apply the patch at https://groups.google.com/forum/#!msg/android-building/yAfPyUqCsiQ/7zvICk4GWjYJ to the external/sqlite/dist/Android.mk file.

-

KeyedVector.h:193:31: error: indexOfKey was not declared in this scope

-

This error appears when your gcc version is too recent. Install gcc/g++/g++-multilib 4.6.x versions. See Customizing with the .userconfig file for more information.

-
-

Community Note: It is possible to use gcc 4.7.x with slight modifications to the B2G code (gcc will guide you) but you won't get any help! Neither with modifying the code nor with bugs you encounter.

-
-

arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)

-

If you see this message, it most likely means that free memory is lacking. Ensure there is enough free memory before running ./build.sh. It should run fine if your system has 4GB of RAM.

-

"...is referenced by DSO" error

-

While building the emulator, if you get /usr/bin/ld: out/host/linux-x86/obj/EXECUTABLES/triangleCM_intermediates/triangleCM: hidden symbol `_XGetRequest' in out/host/linux-x86/obj/STATIC_LIBRARIES/libSDL_intermediates/libSDL.a(SDL_x11dyn.o) is referenced by DSO.

-

You can get this with some versions in binutils. If you run Debian Stable, you can use the gold linker by installing the package binutils-gold. Note that the gold linker is already installed by binutils, but it's not used by default; binutils-gold does just that.

-

If you get build errors while the build system is running tests

-

Sometimes (especially after build tool or operating system updates) you'll get weird errors like this when the build system runs its post-build tests:

-
Generating permissions.sqlite...
-test -d profile || mkdir -p profile
-run-js-command  permissions
-WARNING: permission unknown:offline-app
-WARNING: permission unknown:indexedDB-unlimited
-build/permissions.js:122: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPermissionManager.add]
-make[1]: *** [permissions] Error 3
-make: *** [gaia/profile.tar.gz] Error 2
-

In this situation, try deleting the gaia/xulrunner-sdk directory and re-pulling the code:

-
rm -r gaia/xulrunner-sdk
-
-

This deletes the downloaded, precompiled copy of XULRunner that the build system retrieves automatically; on your next build, a new copy of XULRunner will be automatically retrieved.

-

Cannot fetch platform/libcore

-

If you tried to configure your B2G build for Nexus S (./config.sh nexus-s) and got an error related to libcore, it is because of a problem with the linaro git that feeds into this. To fix this, checkout the B2G manifest like so:

-
git clone https://github.com/mozilla-b2g/b2g-manifest.git
-

Edit the nexus-s.xml file in this repo, replacing the linaro git entry with a reference to the aosp entry, which should read like so:

-
<default revision="refs/tags/android-4.0.4_r1.2"
-              remote="aosp"
-              sync-j="4" />
-

Commit these changes (git commit -a) and then change the config.sh file in the master branch of the main B2G repo that you checked out to point to your modified local manifest instead of the Mozilla one:

-
GITREPO=${GITREPO:-"file:///home/path/to/my/b2g-manifest"}
-

clang errors when building with Xcode 5 on Mac

-

If you are building on Mac OS X 10.8 with Xcode 5, you will likely see errors like the following:

-
clang: error: argument unused during compilation: '-include system/core/include/arch/darwin-x86/AndroidConfig.h'
-clang: error: argument unused during compilation: '-U DEBUG'
-clang: error: argument unused during compilation: '-U DEBUG'
-clang: error: argument unused during compilation: '-MF out/host/darwin-x86/obj/EXECUTABLES/obbtool_intermediates/Main.d'
-make: *** [out/host/darwin-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
-

This is because Xcode 5 changes the g++ compiler in /usr/bin, which breaks the build process if you try to use it to compile. In order to work around the problem, edit the following line in build/core/combo/HOST_darwin-x86.mk:

-
HOST_CXX := g++
-

to

-
HOST_CXX := g++-4.6
-ifeq (,$(wildcard /usr/local/bin/g++-4.6))
- HOST_CXX := g++
-endif
-

Next, you'll want to uninstall gcc, using brew (this assumes you've run the Mac OS bootstrap script — if not, you'll need to complete that step before continuing):

-
brew uninstall gcc-4.6
-

Now reinstall gcc with multilib and c++ support:

-
brew install --enable-cxx https://gist.github.com/artlogic/6988658/raw/aeb9d1ea098274ad3f3fe2637b9df7f308a8a120/gcc-4.6.rb
-

Make sure /usr/local/bin is on your PATH. You can do this temporarily by typing the following into the command prompt:

-
export PATH=/usr/local/bin:$PATH
-

You can make the above change permanent by adding it to the .bash_profile file in your home directory.

-

After you've set your PATH, make sure you can run both of the following commands:

-
gcc-4.6 -v
-
-g++-4.6 -v
-

If either of these commands fail, you may need to relink your gcc using brew with the following command:

-
brew link --overwrite gcc-4.6
-

It's also possible that /usr/bin/c++ is not pointing at clang++ as it should be with Xcode 5 installed. You can determine if it is by typing the following:

-
ls -l /usr/bin/c++
-

It should return something that looks like this:

-
lrwxr-xr-x 1 root admin 7 Sep 19 11:40 /usr/bin/c++ -> clang++
-
-

If c++ is pointing at something other than clang++, update it with the following commands:

-
sudo rm /usr/bin/c++
-
-sudo ln -s /usr/bin/clang++ /usr/bin/c++
-

Cannot pull files from backup directory

-

This could happen when the USB connection is broken while the script pulls data from device to computer.

-

When you run the script again, you'll probably get the following (the example is for the Peak device):

-
Pulling files from ../../../backup-peak
-cat: ../../../backup-peak/system/build.prop: No such file or directory
-Found firmware with build ID
-Pulling "libaudioeq.so"
-cp: cannot stat `../../../backup-peak/system/lib/libaudioeq.so': No such file or directory
-Failed to pull libaudioeq.so. Giving up.
-
-> Build failed! <
-
-Build with |./build.sh -j1| for better messages
-If all else fails, use |rm -rf objdir-gecko| to clobber gecko and |rm -rf out| to clobber everything else.
-

To solve this, it is not necessary to remove the whole objdir-gecko or out directories. Just remove the backup directory, like this (for the example above):

-
$rm -rf backup-peak
-

Emulator build issues

-

If you are making an emulator build, you need to pay attention to these issues:

-
-

First, note that you shouldn't use the x86 emulator — it is hard to install and not well supported.

-
-

Next, the build-system for the emulator builds both 32bit and 64bit versions of the emulator. As the emulator depends on OpenGL, this means that you need to have both 32bit and 64bit versions of OpenGL libraries installed on your system. See the discussion in bug 897727.

-

There are two ways that you can solve this problem:

- -

If your linux distro has multilib packages for OpenGL libraries, you can attempt installing them. You might then have to manually create some symlinks.

-

For example, here is the situation on Ubuntu 12.04 LTS x86-64. On this distribution, the libgl1-mesa-dev package cannot be installed simultaneously in x86-64 and i386 versions, but you can have the following combination of packages simultaneously installed:

-
sudo apt-get install libgl1-mesa-dev libglapi-mesa:i386 libgl1-mesa-glx:i386
-

After having run this command, you will still have to manually create some symlinks for the emulator build to succeed:

-
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
-sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
-

Solution #2: just patch the emulator so it only builds 64bit

-

Just apply this patch to the sdk/ git repository under the B2G repo. This will cause the B2G emulator to only attempt to build the 64bit emulator if you're on a 64bit system, thus avoiding any multilib issues. The 32bit emulator is unused anyway on a 64bit system. This is the simplest solution, until this patch eventually bit-rots.

-

Next steps

-

After building, your next step depends on whether you built Boot to Gecko for the emulator or for a real mobile device; see the following articles for details:

- -
-

Submitting bugs on B2G/Firefox OS/Gaia

-

Once you've got a B2G/Firefox OS build running, you'll probably want to start to file bugs against this specific version, so the Firefox OS community can improve things as effectively as possible. You'll want to file the bug on Bugzilla, under the "Firefox OS" project, but you should include version specifics:

-
    -
  1. To start with, tell us the major version number, e.g. 1.4.0.0-prerelease. This can be found on the device under Settings > Device Information.
  2. -
  3. You can provide more specific version identifiers by  returning the current hashes from the gaia and gecko repositories. This can be done like so: -
    #!/bin/bash
    -(cd gaia;  echo "gaia  $(git rev-parse HEAD)")
    -(cd gecko; echo "gecko $(git rev-parse HEAD)")
    -
  4. -
diff --git a/files/de/archive/b2g_os/building_and_installing_firefox_os/compatible_devices/index.html b/files/de/archive/b2g_os/building_and_installing_firefox_os/compatible_devices/index.html deleted file mode 100644 index ea95805479..0000000000 --- a/files/de/archive/b2g_os/building_and_installing_firefox_os/compatible_devices/index.html +++ /dev/null @@ -1,357 +0,0 @@ ---- -title: Kompatible Geräte -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS/Compatible_Devices -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices ---- -
-

Install B2G OS in you device easily with B2G installer - a Firefox Add-on.

-
- -
-

Note: All devices have the recommended build target below its name (see nickname or codenames). For example to build for Nexus 6 do ./build.sh nexus-6-l. Device codenames where given directly by manufacturers. You can find it in build.prop file of a stock ROM.

-
- -

Development Devices

- -

These devices are official reference devices for developing B2G OS.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Image
Name
- (Android version)
Z3 Compact (Kitkat)
- Sony Shinano platform
Z3 (Kitkat)
- Sony Shinano platform
Flame (Kitkat)
Nicknamearies-kkleo-kkflame-kk
Build and installation informationhttps://discourse.mozilla-community.org/t/building-b2g-os-for-aries-z3c/8082 https://discourse.mozilla-community.org/t/flame-builds/8548
Available in B2G InstallerYesNoYes
- -

Community Supported Devices

- -

Those devices are supported by community efforts. Feel free to help them !

- -
-

Builds distribution frequency may vary depending of maintainers number and time available.

-
- -

Working devices

- -

These devices have builds available running B2G OS :

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Image
Name
- (Android version)
ZTE Open CNexus 5WileyFox SwiftFairphone 2
Nicknameopenc-fr / openc-ebay                         
Build and installation informationhttps://discourse.mozilla-community.org/t/zte-open-c/8402/ -

https://discourse.mozilla-community.org/t/test-b2gos-on-nexus-5/9405/1

-
  -

https://discourse.mozilla-community.org/t/fairphone-2-build/8641/
- https://discourse.mozilla-community.org/t/fairphone-2-support-for-b2g-installer-landed/8334

-
Available in B2G Installer -

No

- -

(but a buildbot is available)

-
YesYesNot yet, but almost done. Blobfull build working.
- -

Work in progress

- -

Work is going on to support these devices :

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Image 
Name
- (Android version)
E3
- Sony Yukon platform
Z1 Compact (Lollipop)
- Sony Rhine platform
Xiaomi Redmi 1S
Nicknameflamingo-lamami-larmani
Build and installation informationhttps://discourse.mozilla-community.org/t/b2g-os-flamingo-sony-xperia-e3-builds/8361https://discourse.mozilla-community.org/t/support-for-amami-xperia-z1c-building-debugging-providing-builds/8348https://discourse.mozilla-community.org/t/wip-xiaomi-redmi-1s-hongmi-1s/10273
Support statusBlocked, problem with flashing toolsEarly building testsEarly building tests
- -

Devices with porting possibilities

- -

This is a (non-exhaustive) list of devices with porting potential, thanks to available AOSP or Cyanogen Mod version, or because they supported Firefox OS until version 2.6.

- -
-

Note: There aren't currently any ports for these phones, but it is possible to build B2G OS. See how to build section for more info. You are welcome to maintain these builds.

-
- -

Nexus Devices

- -

These devices are (almost) automatically supported by B2G OS because they are Google's reference devices for AOSP.

- - - - - - - - - - - - - - - - -
Nexus 6Nexus 4
  
- -

Sony Devices

- -

These devices use Sony Mobile's Open Devices initiative, which aims to support all modern Xperia devices in AOSP.

- -

These devices are built on a Lollipop AOSP base.

- -
-

Right now most of the Sony devices are missing camera support. This depends on work in progress by Sony developers.
- Also, we need contributors to maintain these ports.

-
- -

Devices where support for B2G OS is ongoing are not listed here.

- -

Sony Shinano Platform

- - - - - - - - - - - - - - - - - - - - - - -
 
Z3 Z3 Tablet CompactZ2
leo-l scorpion-lsirius-l
- -
-
- -

Sony Rhine Platform

- -
-

Rhine devices use a legacy NFC chip so this feature is currently missing. See bug 1226720 We need contributors to maintain these ports.

-
- - - - - - - - - - - - - -
Z1
honami-l
- -

Sony Yukon Platform

- - - - - - - - - - - - - - - - - - - -
T2 UltraT3M2
tianchi-lseagull-leagle-l
- -

CyanogenMod Supported Devices

- -

Here be dragons! (To be completed)

- -

Legacy Devices

- -

Some old devices are no longer maintained by the community, but it is still possible for volunteers to keep them alive (Yay Open-Source!). Feel free to contact the team previously working on these devices to get some help.

- -

No device here right now.

- -

Obsolete Devices

- -
-

Forget about these device's support if you have one.

-
- -

Several old devices are no longer maintained for B2G OS , and we do not have a community to keep them alive. The current status of these devices is unknown, which probably means they cannot be built on B2G OS master branches.

- - - - - - - - - - - - - - - - - - - - - - -
Geeksphone PeakGeeksphone KeonZTE OpenTCL Fire
peakkeoninarihamachi
- - - - - - - - - - - - - - - - - - - - - - -
Samsung Galaxy S2Galaxy NexusNexus SNexus S 4G
galaxy-s2galaxy-nexusnexus-snexus-s-4g
- - - - - - - - - - - - - - - - - - - - - - -
Foxconn InFocusVia VixenPandaboardRaspberry Pi
flatfishvixenpandaboardrpi
diff --git a/files/de/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_overview/index.html b/files/de/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_overview/index.html deleted file mode 100644 index 56422c4cf6..0000000000 --- a/files/de/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_overview/index.html +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: 'Firefox OS Build Prozess: Übersicht' -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_overview -tags: - - Firefox OS - - build - - install -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary ---- -
-

Firefox OS zu kompilieren und zu installieren erfordert eine erhebliche Menge Zeit, Netzwerkbandbreite und Rechenleistung. Leider können auch Dinge schiefgehen. Dieser Artikel beschreibt die Ziele und Schritte des Build-Prozesses, um Benutzern während der Firefox OS Installation zu helfen. Details der einzelnen Schritte werden in den verlinkten Seiten erläutert.

-
- -
-

Anmerkung: Der Firefox OS Build Prozess ist voll von Bezügen zu 'B2G' oder 'Boot2Gecko'. 'Boot2Gecko' war der ursprüngliche Codename des Firefox OS Projekts.

-
- -

Das Ziel: vier 'image'-Dateien

- -

Der grundsätzliche Zweck des Build Prozesses ist es vier Dateien zu erzeugen, die auf das Firefox OS-Gerät kopiert werden können.

- - - - - - - - - - - - - - - - - - - - -
boot.imgDer Linux-Kernel und ein Image des root-Dateisystems, wobei letzteres ein Set von grundlegenden UNIX-Tools zur Verfügung stellt.
system.imgDer Kern von Firefox OS inklusive einiger Teile von Gonk, der Portierung von Gecko, und dem ausführbaren Programm b2g.
userdata.imgDas Gecko-Profil des Benutzers und die Gaia Web-Anwendungen für das Gerät.
recovery.imgEin Linux-Kernel und ein Image des root-Dateisystems zusammen mit einem einfachen Werkzeug, um eine defekte Installation zu reparieren.
- - -

Wenn diese 4 Images erzeugt wurden, können sie auf das Gerät übertragen werden.

- -

Firefox OS setzt auf dem Android Open Source Project (AOSP) auf. Die AOSP-Werkzeuge adb und fastboot bieten Möglichkeiten auf ein Gerät zuzugreifen und es zu verändern. Insbesondere kann das Kommando adb reboot-bootloader ein angeschlossenes Gerät dazu bringen, neu zu starten und in einem frühen Bootloaderstadium zu pausieren, während das Kommando fastboot flash $partition $image dazu benutzt werden kann, ein Image auf das Gerät zu kopieren.

- -

Das Boot-Image

- -

Das Boot-Image (boot.img) ist eine Kombination aus dem Linux-Kernel und einer initialen root Partition, die die grundlegenden Werkzeuge und Initialisierungs-Skripte bereit stellt. Letzteres wird für eine effektive Nutzung durch das Gerät in den Gerätespeicher kopiert und wird deshalb als "ramdisk" (RAM-Disk) bezeichnet. Das Boot-Image wird in die boot Partition des Gerätes kopiert und die Inhalte der RAM-Disk erscheinen unter dem root-Verzeichnis, wenn zur Laufzeit auf das Geräte-Dateisystem zugegriffen wird; zum Beispiel beim Ausführen von adb shell.

- -

Das Boot-Image richtet auch die Berechtigungen des root-Benutzers in der Datei default.prop im root-Verzeichnis ein.

- -

Es ist auch möglich vorhandene Boot-Images zu verändern, indem man die Datei untersucht, sie in Kernel und RAM-Disk trennt, die Inhalte der RAM-Disk extrahiert, diese ändert, das RAM-Disk-Image neu zusammenstetzt und daraus eine funktionierende boot.img-Datei erzeugt. Ein Beispiel findet man auf der Alcatel One Touch Fire Hacking (Mini) Guide-Seite.

- -

Boot-Images können vor der Installation getestet werden, indem man sie dem Gerät "unterschiebt" (sideload). Der Geräte-Start kann im Bootloader angehalten werden. Im Bootloader-Modus kann man dann mit fastboot von einem eigenen Boot-Image booten, indem man das Kommando fastboot boot /some/path/to/boot.img verwendet.

- -

Das System-Image

- -

Das System-image (system.img) stellt die Grundfunktionen von Firefox OS bereit:

- - - -
-

Siehe Firefox OS platform guide für nähere Informationen zur System-Architektur.

-
- -

Das System-Image wird in die system Partition des Geräts kopiert und ist im laufenden Betrieb im Verzeichnis /system/ zu sehen wenn das Dateisystem gemountet wurde.

- -
-

Hinweis: Das System-Image stellt zudem vom Gerät genutze Binär-Programme zur Verfügung, insbesondere den RIL (Radio Interface Layer) für die Funk-Verbindungen.

-
- -

Das User Data Image

- -

Das User Data Image (userdata.img) enthält die Gaia Apps des Anwenders.

- -

Das User Data Image wird in die userdata Partition des Gerätes kopiert. Der Inhalt ist im laufenden Betrieb im Verzeichnis /data/ zu sehen wenn das Dateisystem gemountet wurde. Das Verzeichnis /data/b2g/ enthält das Mozilla Gecko Profil des Anwenders, das Verzeichnis /data/local/webapps/ enthält die verfügbaren Apps.

- -

Das Recovery Image

- -

Das Recovery Image (recovery.img) enthält denselben Kernel und eine vergleichbare RAM-Disk wie die Boot Image Partition. Das Recovery Image verwendet allerdings ein anderes Initialisierungs-Skript, welches dem Anwender verschiedene Recovery-Funktionen zur Verfügung stellt die mit den Tasten des Gerätes bedient werden können.

- -

Das Recovery Image wird in die recovery Partition des Gerätes kopiert, welche im Normalbetrieb nicht ins Dateisystem gemountet wird.

- -

Der Build Prozess: setup, configure, build, install

- -

Build Prozess und Installation von Firefox OS  bestehen aus 4 Schritten:

- - - - - - - - - - - - - - - - - - - - -
SetupBereitstellen aller für den Build Prozess benötigten Programme wie z.B. Compiler und Bibliotheken.
ConfigureDownload des Quellcodes und Erzeugen einer configure Datei welche Umgebungsvariablen definiert in denen die benötigten Pfade und Parameter gespeichert werden.
BuildErzeugen des Gecko Anwender-Profils und der Gaia Anwendungen des Gerätes.
InstallInstallieren der Dateien auf dem Gerät.
- - -

 

- -

Setup

- -

Die Setup-Phase ist notwendig um sicher zu stellen dass sämtliche für den Build Prozess benötigte Software zur Verfügung steht, z.B. Compiler und Build Tools.

- -

Dieser Schritt kann manuell oder per Skript durchgeführt werden. Details hierzu findest Du auf Firefox OS build prerequisites.

- -
-

Hinweis: Auf UNIX und UNIX-artigen Computern kann man mit dem Kommando which prüfen, ob ein für den Build Prozess benötigtes Programm vorhanden ist. Als Parameter erwartet which den Namen des benötigten Programms.

-
- -

Configuration

- -

Der eigentliche Build Prozess startet mit dem Erstellen einer Kopie der Firefox OS (bzw. B2G) Software, gewöhnlich wird ein Git Clone des B2G Projekts erstellt. Der Schritt Configuration kopiert den gesamten benötigten Quellcode und erzeugt eine config Datei, welche die benötigten Installations-Parameter enthält.

- -

Ausgeführt wird dieser Schritt mit dem config.sh Skript. Details findest Du auf der Preparing for your first B2G build Seite.

- -

Das Configure Skript benötigt einen Parameter mit dem der Gerätetyp spezifiziert wird. Diese sogenannten Code Names fliessen in den Build Namen ein und stehen für eine bestimmte CPU Architektur und nicht für ein spezielles Gerät. Momentan kann man also nicht anhand des Build Names bestimmen ob ein Build auf einem bestimmten Gerät lauffähig ist.  Eine Liste der verfügbaren Code Names findest Du hier.

- -

Der Schritt Configure nutzt repo, ein Tool des Android Open Source Projekts, für den Download der für den Build benötigten Software. Die Software wird gespeichert im Verzeichnis repo/projects. Aufgrund der herunter zu ladenden Datenmenge und der durchzuführenden Schritte kann der Schritt Configure länger dauern.

- -

Build

- -

Im Schritt Build wird der Quellcode kompiliert und die Image-Dateien werden erzeugt.

- -

Hierzu wurd das build.sh Skript ausgeführt. Details hierzu findest Du in Building Firefox OS.

- -

Das Skript versucht alle Quellcodes in einem Schritt zu kompilieren: Die Android Open Source Project Tools, den Linux Kernel und die Gaia Web Anwendungen. Wenn dieser Schritt fehl schlägt ist nicht immer klar, an welcher Stelle der Build ein Problem hatte.

- -

Es ist möglich, nur einzelne Komponenten des Gesamtpakets zu kompilieren. Z.B. kann Gecko einzeln kompiliert werden, indem das Build Skript mit dem gecko Parameter aufgerufen wird. Das gleiche gilt für Gaia, wo das Build Skript mit dem  gaia Parameter gestartet wird. Diese Pakete können einzeln installiert werden,wie im folgenden beschrieben Abschnitt wird.

- -

Ebenso ist es möglich die oben beschriebenen Image-Dateien zu erzeugen. Z.B. kann man das System-Image mit ./build.sh out/platform/$target/system.img erzeugen, wobei der Parameter $target derselbe ist wie im Schritt Configuration.

- -

Install

- -

Im Schritt Install wird der neu kompilierte Code auf das Gerät kopiert. Hierzu wird das Skript flash.sh ausgeführt.

- -

Es können auch gezielt einzelne Komponenten des neu erstellten Build-Pakets installiert werden, indem das Flash Skript mit den entsprechenden Parametern gestartet wird . Zum Beispiel können die Gaia Web Anwendungen durch ./flash.sh gaia installiert werden.

diff --git a/files/de/archive/b2g_os/building_and_installing_firefox_os/index.html b/files/de/archive/b2g_os/building_and_installing_firefox_os/index.html deleted file mode 100644 index 51b1e0f6d4..0000000000 --- a/files/de/archive/b2g_os/building_and_installing_firefox_os/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Erstellen und Installieren von Firefox OS -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS ---- -

B2GOS befindet sich derzeit in aktiver Entwicklung und ist daher im Status einer Vorveröffentlichung. Um sicher die aktuellste Version zu benutzen empfiehlt es sich B2GOS selbst zu erstellen und zu installieren. Die Artikel auf dieser Seite führen dich durch die Prozesse um B2GOS für den Emulator, ein kompatibles Endgerät, oder das Gaia Benutzer Interface im Firefox Browser, zu erstellen.

- - - - - - - - -
-

Beschaffen und Erstellen von B2GOS

- -
-
Voraussetzungen zum Erstellen von B2GOS
-
Was du vor der Ersterstellung von B2GOS brauchst und tun musst.
-
Vorbereitungen zum Erstellen von B2GOS
-
Um B2GOS zu erstellen müssen zuerst die Quelldaten heruntergeladen werden. Was du dazu tun musst und wie es funktioniert wird in diesem Artikel erklärt. 
-
Erstellen von B2GOS
-
Erstellen von B2GOS für die Zielplattform.
-
- -

View All...

-
-

Installieren von B2GOS und/oder Gaia

- -
-
Möglichkeiten B2GOS zu testen
-
Hier wird erklärt welche verschiedenen Möglichkeiten es gibt B2GOS zu testen. Ob direkt im Browser mittels Gaia, auf dem Mobiltelefon oder im Emulator? Hier kannst du dir einen Überblick über die Möglichkeiten verschaffen.
-
Gaia im Browser
-
Wie man Gaia im Webbrowser testet.
-
B2GOS als Desktop Anwendung
-
Firefox OS kannst du in einer Desktop Anwendung die die Gaia Umgebung simuliert testen. Damit erzielst du bessere Ergebnisse als im Browser, es ist aber noch nicht so akkurat wie im Emulator.
-
B2GOS im Emulator
-
Eine Anleitung zur Benutzung von B2GOS im Emulator, und eine Einführung in die Auswahl des richtigen Emulators zur entsprechenden Aufgabe.
-
B2GOS auf deinem Gerät
-
Anleitung zur Installation von B2GOS auf Mobiltelefonen.
-
-
- -

 

diff --git a/files/de/archive/b2g_os/debugging/developer_settings/index.html b/files/de/archive/b2g_os/debugging/developer_settings/index.html deleted file mode 100644 index 1a614927b3..0000000000 --- a/files/de/archive/b2g_os/debugging/developer_settings/index.html +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Developer settings for Firefox OS -slug: Archive/B2G_OS/Debugging/Developer_settings -translation_of: Archive/B2G_OS/Debugging/Developer_settings ---- -
-

Die Entwicklereistellungen befinden sich in den Firefox OS Einstellungen. Dieses Panel bietet eine Vielzahl an Optionen, die das Debugging deiner Open Web Anwendung für Firefox OS erleichtern. Dieser Artikel beschreibt die verfügbaren Optionen und erklärt wie diese benutzt werden können.

-
-

Der Einstellungsbereich für die Entwickler-Optionen wurde bewusst in einem Untermenüpunkt versteckt, um ein versehentliches Aktivieren durch unerfahrene Benutzer zu vermeiden, was eine Beeinträchtigung der Performance oder Auswirkungen auf die visuelle Darstellung von Firefox haben kann. Das Entwicklermenü sieht ähnlich aus wie auf der folgenden Darstellung gezeigt (dieses Bild wurde mit einem Geeksphone Keon mit einer im April 2014 erzeugten Version von Firefox OS 2.0 erstellt):

-

-

Das Entwicklermenü kann folgendermaßen erreicht werden:

- -

Im folgenden Abschnitt werden alle Optionen einzeln vorgestellt und erklärt wie diese verwendet werden können.

-
-

Wichtig: Diese Tools sind hilfreich, aber können Probleme im normalen Gebrauch des Telefons versursachen. Einstellungen, die dafür bekannt sind, dass sie Probleme verursachen können, sind per default abgeschaltet. Falls du Probleme mit den Funktionen feststellen solltes, versuche die entsprechenden Funktionen wieder zu deaktivieren.

-
-

Einstellungen der Developer Tools

-

Debugging via USB

-

Die "Remote debugging" Option aktiviert das ferngesteuerte debugging deines Firefox OS Gerätes. Außerdem wird die ADB Kommando-Eingabe aktiviert. In Firefox < 1.4 gibt es dafür nur ein aktivierbares Kontrollkästchen; ab Firefox 1.4 sind es drei Optionen:

- -

Developer HUD

-

Ab Firefox OS 1.4, öffnet ein Berühren des Menüeintrages Developer HUD folgendes Auswahlmenü:

-

-

Die beiden ersten Kontrollboxen (immer aktiv) sind:

- -

Anschließend folgt ein Slider, mit dem weitere Entwickler-Optionen ('Developer Tools') aktiviert werden können , auch weitere Checkboxen sind verfügbar:

- -

Frames per second

-

Enabling this option reports three numbers in the top left of the Firefox OS display; the values reported are an average of recent results within a sliding window, meant to be "instantaneous" but fairly accurate. As such, all numbers are "guesses":

- -

A screenshot of Firefox OS, showing three numbers in the top left hand corner that are measurements of app framerate.

-

Time to load

-

Firefox OS also has a tool that can help measure startup time, specifically the "first paint" time. The value shown by the tool — in the top right of the Firefox OS display — is the elapsed time between when the most recent application was launched, and an estimate of the first time that application painted its UI, in milliseconds. This number only approximates the real "first paint" time, and in particular underestimates it. However, lowering this number almost always correlates to improvements in real startup time, so it can be useful to quickly measure optimization ideas.

-

A screenshot of Firefox OS, showing a number in the top right hand corner that is a measurement of the current app startup time, in milliseconds.

-

App memory

-

Displays information on how much memory the app is using, and allows you to enable or disable the different items that use memory to show much each one is using in the current app. For example, the screen shot below only has App memory and JS objects checked, and the indicator on the bottom right is showing that the Settings app is using 414.77KB for JS objects.

-

-

Pseudo-localization

-

When enabled, pseudo-languages like Accented English and Mirrored English are available for selection in Settings > Languages.  With pseudo-localizations, you can test the localizability of your code in regular Gaia builds without having to add real language resources nor having to speak a foreign language.  For instance, you can make sure the layout scales well with longer strings, you can preview the app in a fake RTL language, or spot HTML elements wihout the data-l10n-id attribute (they will be displayed in regular English).

-

Screenshot of pseudolocales

-

You can turn pseudo-localizations on by default when you build Gaia by adding the following line into gaia/build/config/common-settings.json:

-
 "devtools.qps.enabled": true
-

Note: Pseudo-localizations are generated completely dynamically, each time an app is launched.  The performance and memory characteristics may be different than those of regular localizations.  If you specifically want to test performance of non-English languages, build multilocale Gaia with real locales.

-

Graphics settings

-

Flash repainted area

-

In this mode, every time a region of the screen is painted by Gecko, Gecko blits a random translucent color over the painted region. Ideally, only parts of the screen that visually change between frames will "flash" with a new color. But sometimes more area than is needed is repainted, causing large areas to "flash". This symptom may indicate that application code is forcing too much of its scene to update. It may also indicate bugs in Gecko itself.

-

A screenshot of Firefox OS with a number of transparent overlays, showing the parts of the screen repainted with each new animation frame.

-

Enable APZ for all content (Async Pan/Zoom)

-

When enabled, the Async Pan/Zoom module allows panning and zooming to be performed on asynchronously, on another thread, with some noticeable differences to rendering behaviour. To find out more, read the MozillaWiki APZ article.

-

Overscrolling

-

This enables and disables the behaviour in Firefox 2.1+ where the display stretches in an elastic manner when you scroll past the end of a page, then shrinks back again when you stop dragging the display. The behaviour's full name is elastic overscroll.

-

Tiling (was Layers: Enable tiles)

-

Introduced in Firefox OS 1.4, this feature enables the painting of content to the screen in smaller chunks ("tiles") rather than painting the whole screen at once. This is mainly useful for platform QA work involving reducing checkerboarding and finding regression windows.

-

Simple tiling (was Layers: Simple tiles)

-

This flips between the two different content painting implementations described in the section above.

-

Low-precision painting

-

Enabling this option makes Gecko paint a low-precision (blurry) version of the content when scrolling really fast. This is useful because it's quicker to paint, and so helps us avoid displaying blank areas (i.e. checkerboarding) while scrolling quickly. It should only be visible to the user temporarily; once the user stops scrolling we fill in the low-precision areas with high-precision content.

-

Low-precision transparency

-

This is an additional flag for low-precision painting, which makes the low-precision content half transparent. This makes it a little more subtle and less jarring for the user.

-

Hardware composer (was Enable hardware compositing)

-

When enabled, this setting causes the device to use its Hardware Composer to composite visual elements (surfaces) to the screen.

-

Draw tile borders (was Layers: Draw tile borders)

-

This is very similar to the {{ anch("Draw layer borders") }} option, the difference being that it also draws the borders for individual tiles as well as the borders around layers.

-

Draw layer borders

-

When this setting is enabled, a brightly colored border is added around all the different layers painted to the display — great for diagnosing layout issues.

-

A screenshot from Firefox OS showing an opened select form with the draw layers borders option enabled, resulting in colored borders being drawn on all the different rendered layers.

-

Dump layers tree

-

This option enables layers.dump, which causes a copy of the compositor's layer tree to be dumped to logcat on every frame composited to the screen; this is mainly useful for platform graphics performance work, rather than regular web development.

-

Cards View: Screenshots

-

When enabled, this specifies that app screenshots will be taken when the open apps are displayed in card view. If disabled, app icons are shown in the center of blank cards for the card view instead.

-

Window management settings

-

Software home button

-

Enabling this option creates a software home button that can provide the same functionality as the equivalent hardware button if it is not available. This is intended for future use on devices that are likely to not have hardware home buttons, like tablets.

-

Home gesture

-

Enabling this option allows you to swipe upwards towards the center from outside the screen to bring up the homescreen. Again, this can provide the same functionality as the equivalent hardware button if it is not available, and is intended for future use on devices that are likely to not have hardware home buttons, like tablets.

-

Continuous transition

-

This setting allows you to decide whether app keyboards open immediately or continuously (with a  transition). Disabling such transition effects are useful on low end devices, when they cause performance to suffer.

-

App transition

-

Turn this on and then off again and you will disable all app closing/opening transitions: all apps will now just show immediately, without the smooth animation, and keyboards will also open/close without animation. Like "Continuous transition enabled", this is meant for improving performance on low end devices, but it has more of an effect.

-

App suspending

-

If enabled, this specifies that when an app is killed in the background, it will be kept in history and reopened when you open it from homescreen/card view. If disabled, such apps are not kept in history/card view.

-

Debug settings

-

Log slow animations

-

This tool tries to help developers understand why animations are not offloaded to the compositor to be run efficiently as possible. It reports "bugs" like trying to animate elements that are too large, or trying to animate CSS properties that can't be offloaded. The messages you'll get on the device will look like the following:

-
I/Gecko   ( 5644): Performance warning: Async animation disabled because frame size (1280, 410) is bigger than the viewport (360, 518) [div with id 'views']
-
-

Geolocation output in ADB

-

Enables logging of geolocation data to adb logcat. This helps with debugging both the GPS stack (namely we get NMEA callback) and MLS use.

-

Wi-Fi output in adb

-

Enabling this option adds information about Wi-Fi to the adb logs (error logs from the console can be accessed using adb logcat | grep "Error" in the Terminal.)

-

Bluetooth output in adb

-

Enabling this option adds information about Bluetooth to the adb logs (error logs from the console can be accessed using adb logcat | grep "Error" in the Terminal.)

-

Console enabled

-

When enabled, this option lets you use the Web Console in Firefox to remotely access the console output on the device; without this option enabled, the {{domxref("console.log()")}} function does nothing.

-

Gaia debug traces

-

Enabling this directly enables DEBUG traces in Gaia; see {{ bug("881672") }} for more details.

-
-

Note: Unfortunately, not every app supports this mechanism to print their debug log. Instead, they control a "DEBUG" flag in code directly, so enabling this flag does NOT ensure that you'll see all debug logs.

-
-

Show accessibility settings

-

This enables the accessibility settings menu, subsequently found at Settings > Accessibility. The options contained within the accessibility settings are as follows:

-

Screen reader

-

Enabling this option turns on Firefox OS's screen reader. This is technology that allows a blind person to use a Firefox OS device. Currently at a very early stage, it changes the way the standard touch events work. When the screen reader is on, you must interact with the screen as follows:

- -
-

Note: If you have turned the screen reader on and wish to disable it again, you must navigate back to the setting via these new gestures and double-tap the checkbox once it is highlighted to turn it off again. That will restore the touch screen functionality to its default behaviour.

-
-

Note: In Firefox 1.4 and above, there is a quick toggle for the screen reader. Press volume up, then down, three times (up, down, up, down, up, down). The screen reader will instruct you to perform this same action again (volume up, down, up, down, up, down) to turn it on if it is not running, or to turn it off if it is already running. If you do not want to change the current toggle state, simply do something else. That way, you can turn it on and off at will to test your web application for accessibility without having to navigate the accessibility settings menu each time.

-

Speech volume

-

A slider that controls how loud the speech is delivered.

-

Speech rate

-

A slider that controls how fast the speech is delivered.

-

Use Marketplace reviewer certs

-

TBD

-

Shake to save system log

-

TBD

-

Verbose app permissions

-
-

Note: Introduced with Firefox 2.1

-
-

When this is enabled, developers (and privacy enthusiasts) may modify all permissions granted to installed privileged apps, using The "App Permission" pane in the Settings app. The app sub-pages under here are updated upon enabling the setting to provide a list of each API permission is requested for in the app's manifest file, along with choices to set that permission to. For example, "Schedule Alarms" appears with choices of Ask, Deny and Grant. Note that some apps may be unable to deal with changed permissions. If you experience any odd behavior, consider resetting the permission or re-installing the app.

-

Launch first time use

-

The "Launch first time use" button runs the "First-Time Use" (FTU) program; this lets you go through the initial setup and tutorial process, and is useful when trying to debug that process, or if you want to re-configure your device from scratch.

-

Software updates

-

Update channel

-

Enables you to specify different update channels to get software updates from when your device receives OTA updates. Options are nightly, aurora ... (others?)

-

Update URL

-

Enables you to specify different URLs from which to receive your updates.

-

Obsolete settings

-

This section lists settings that are no longer provided, or no longer exist in the same state, but might still be interesting if you are running an older version of Firefox OS.

-

Accessibility

-

In versions of Firefox earlier than newer 1.4 versions, this controls the accessibility settings, as explained in the {{ anch("Show_accessibility_settings") }} section above.

-

Grid

-

The "Grid" option, when enabled, causes the Firefox OS display to be overlaid with a grid pattern to help you gauge positioning and alignment of items. For example, below we see the Browser app running with the Grid option enabled:

-

-

The grid's heavier lines are 32 pixels apart, both horizontally and vertically.

-

Show frames per second

-

In Firefox OS versions older than newer 1.4, enabling this displays frames per second, as explained in the {{ anch("Frames_per_second") }} section above.

-

Show time to load

-

In Firefox OS versions older than newer 1.4, enabling this displays time to load information, as explained in the {{ anch("Time_to_load") }} section above.

-

Rocketbar enabled

-

In Firefox OS versions older than newer 1.4, this option enables the new Firefox Rocketbar on your device, which provides a useful new way to switch between apps, search, and more. When enabled, you'll find a search icon at the top left of the device, and the RocketBar can be brought up by swiping from the top left of the device towards the bottom left.

-
-

Note: In newer versions of Firefox OS, Rocketbar is enabled automatically and cannot be turned off.

-
-

Contacts debugging output in adb

-

Enabling this option adds debugging information about contacts to the adb logs (error logs from the console can be accessed using adb logcat | grep "Error" in the Terminal.)

-

Progressive paint (was Layers: Progressive paint)

-

This was introduced to help with debugging of the Async Panning/Zoom module (APZ) during its implementation. Now APZ implementation is complete, this option is deprecated, and will be removed from future versions (see {{ Bug("1003228") }}).

-

Displayport Heuristics

- -

These options were introduced to help with debugging of the Async Panning/Zoom module (APZ) during its implementation, specifically to allow QA to experiment with different repainting heuristics to see which resulted in the least amount of checkboarding.. Now APZ implementation is complete, these options are deprecated, and will be removed from future versions (see {{ Bug("1003228") }}).

-

Edges gesture

-

Enabling this option allows you to swipe left and right from outside the screen towards the center, to navigate to the next and previous sheets (either web pages in the browser, or views inside another app.) This basically works like the browser navigator bar in Firefox, but is enabled by default in Firefox 2.1+.

-

Keyboard layouts

-

In addition to the developer-specific options listed above, Firefox OS < 1.4's developer settings featured keyboard layout options. These let you toggle on and off the then-experimental Chinese input methods:

-

-

As of Firefox 1.4, these options have been removed. This is because the Chinese keyboard layout implementations (zhuyin and pinyin) have now been completed.

-
-

Note: For other keyboard layouts still under development, such as Japanese, we now have a build-time config to opt them in.

-
-

 

diff --git a/files/de/archive/b2g_os/debugging/index.html b/files/de/archive/b2g_os/debugging/index.html deleted file mode 100644 index a83bb6ae67..0000000000 --- a/files/de/archive/b2g_os/debugging/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Debugging on Firefox OS -slug: Archive/B2G_OS/Debugging -tags: - - B2G - - Debugging - - Firefox OS - - NeedsTranslation - - QA - - Testing - - TopicStub -translation_of: Archive/B2G_OS/Debugging ---- -
-

There are two main types of debugging you'll want to with Firefox OS: debugging apps, and debugging other aspects of the system. This section of the site provides articles covering the different tools at your disposal to debug your Firefox OS code.

-
-

Debugging apps

-

When debugging your web apps, the best tool at your disposal is Mozilla's powerful App Manager, which allows you to run your apps directly on a real device or simulator, update any changes instantly, and debug them directly on the device using Mozilla's excellent developer tools. This should be your first choice, especially for app/Gaia debugging.

-
-
- Using the App Manager
-
- The App Manager is a new tool available in Firefox for Desktop, which provides a number of useful tools to help you test, deploy and debug HTML5 web apps on Firefox OS phones and the Firefox OS Simulator, directly from your browser.
-
- Debugging out of memory errors on Firefox OS
-
- This article describes how B2G's multiprocess architecture affects what the phone does when we run out of memory, and how to understand and debug OOM crashes.
-
-

Debugging Gaia/B2G

-

If you want to debug code from the Gaia apps suite or B2G itself, the following tools will be of use to you.

-
-
- Debugging using the desktop B2G client
-
- You can use the dedicated B2G desktop application (and associated tools) to debug multiple aspects of B2G and Gaia.
-
- Quickstart guide to Gaia development
-
- This guide provides a very quick easy guide to developing and debugging Gaia apps, including running Gaia inside desktop Firefox, and debugging Gaia with App Manager.
-
- Debugging B2G using gdb
-
- The popular gdb debugger can be used to debug Firefox OS and web apps running on a device, or on an emulator. This guide will show you how it's done.
-
- Debugging B2G using Valgrind
-
- Valgrind gives developers access to information about memory allocations, threads, and other information important to performance. This guide shows how to run Valgrind either on desktop B2G or select phone hardware.
-
- Getting NSPR logs in B2G
-
- You can use NSPR logs to record HTTP and other networking.
-
- Debugging OpenGL
-
- How to debug OpenGL code on Firefox OS.
-
-

General setup and information

-

The following articles provide information on individual aspects of setup for Firefox OS development. The chances are that you won't need these, especially if you are just debugging apps using the App Manager. But we have made them available here in case you do.

-
-
- Developer settings for Firefox OS
-
- There are a number of settings options available for developers on Firefox OS. This guide explains what they do and how to take advantage of them.
-
- Installing and using ADB
-
- Many aspects of Firefox OS development require installation of adb, the Android Debug Bridge. This article explains how to do that, and shares some common useful ADB commands.
-
- On-device console logging
-
- How to log to console on a Firefox OS device, and how to access the resulting logs for review on your computer.
-
- Connecting a Firefox OS device to the desktop
-
- This short guide explains how to set up your Firefox OS device and your desktop so that the desktop can communicate with the device over USB.
-
- Setting up to debug Firefox OS code
-
- Before you can begin using most of the tools integrated into Firefox for debugging code running under Firefox OS, you need to do a little configuration work. This article explains what you need to do.
-
diff --git a/files/de/archive/b2g_os/debugging/installing_adb/index.html b/files/de/archive/b2g_os/debugging/installing_adb/index.html deleted file mode 100644 index 9e49cc786b..0000000000 --- a/files/de/archive/b2g_os/debugging/installing_adb/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: ADB installieren und benutzen -slug: Archive/B2G_OS/Debugging/Installing_ADB -tags: - - ADB - - B2G - - Debugging - - Firefox OS - - Installation - - mobil -translation_of: Archive/B2G_OS/Debugging/Installing_ADB ---- -
-

Viele Aspekte der Firefox OS Entwicklung erfordern die Installation von ADB, der Android Debug Bridge. Dieser Artikel erklärt, wie das geht und zeigt einige häufig verwendete und nützliche ADB Befehle.

-
-

ADB Installieren

-

ADB kann als Bestandteil des Android SDK Pakets für Mac, Linux oder Windows heruntergeladen und installiert werden - besuchen Sie dazu die Get the Android SDK Seite.

-

Bei neueren Linux Distributionen ist adb bereits in den Repositories verfügbar. Für Ubuntu 12.10 und neuere, führen Sie folgenden Befehl aus:

-
sudo apt-get install android-tools-adb
-

Oder für Fedora 18/19:

-
sudo yum install android-tools
-

Oder auf OSX mit Homebrew:

-
brew install android-platform-tools
-

Falls ihre Distribution kein Paket für adb zur Verfügung stellt (z.B. Ubuntu 12.04 oder Fedora 17), müssen Sie das Android SDK starter package für ihre Plattform installieren (wählen Sie die Option ADT Bundle, nicht SDK Tools Only). Führen Sie dann deren Paketmanager, $SDK_HOME/tools/android aus und nutzen Sie dann die GUI zum Installieren von "Android SDK Platform-tools".

-

Finden Sie heraus, wo adb installiert wurde (üblicherweise in usr/bin, unter Umständen zusätzlich in adt/platform-tools, je nach Installationsart). Stellen Sie sicher, dieses Verzeichnis zu ihrem PATH hinzuzufügen. Dies erreichen Sie durch Hinzufügen  der Zeile

-
PATH=$SDK_HOME:$PATH
-

in der Sie $SDK_HOME durch den Pfad ihres android sdk  ersetzen, zu ihrer ~/.bashrc oder vergleichbarem.

-

Fehlerbehebung

-

Wenn Sie eine 64-bit Installation verwenden, und Sie den Fehler "File not found" bei der Ausführung von 'adb' bekommen, obwohl diese Datei vorhanden ist, müssen Sie 32-bit Kompatibilitätsbibliotheken installieren. Um das mit apt zu tun:

-
sudo apt-get install ia32-libs
-

Häufig verwendete ADB Befehle

-

Der folgende Abschnitt erklärt einige häufig verwendete, nützliche adb Befehle.

-

Den b2g Prozess neu starten

-

b2g ist das Äquivalent einer XULRunner Anwendung die auf einem Smartphone auf einem Android-basierten Kernel ausgeführt wird. Manchmal kann ein Neustart dieser Anwendung nützlich sein; so können Sie die Anwendungsumgebung zurücksetzen ohne das Gerät neu zu starten. Sie können dies tun indem Sie folgendes in ihr Terminal eingeben, während ihr Gerät mit ihrem Computer verbunden ist (oder während der Ausführung des Debuggers):

-
adb shell killall b2g
-

Portweiterleitung zum Debuggen aktivieren

-

Um einfach eine Portweiterleitung zu aktivieren (zum Beispiel wenn Sie den App Manager nutzen um Apps auf ihrem Firefox OS Gerät zu debuggen), geben Sie folgenden Befehl in Ihrem Terminal ein:

-
adb forward tcp:6000 localfilesystem:/data/local/debugger-socket
-

Dies müssen Sie jedesmal beim neu Starten oder Aus- und wieder Einstecken des Smartphones tun. Sie können die Socket Nummer ändern, wenn gewünscht.

-

Portweiterleitung zu einem lokalen Rechner

-

Um Ports zu einem lokalen Rechner weiterzuleiten, müssen Sie die netcat and ssh binaries herunterladen und folgende Befehle ausführen:

-
# this is an awful hack but does in fact work...
-host$ adb forward tcp:7979 tcp:6969
-
-# make some named pipes so that we can make a bidirectional netcat
-phone$ mknod readback p
-host$ mknod readback p
-
-# this sets up a one time use connection to back to the host
-# listen on ports 6969 and 5959 and forward all the information between them
-phone$ ./netcat -l -p 6969 < readback | ./netcat -l -p 5959 > readback
-# connect to port 7979 (port 6969 on the device) and the local ssh server and forward all information between them
-host$ ./netcat localhost 7979 < readback | ./netcat localhost 22 > readback
-
-# now when we connect to port 5959 on the phone it will be like connecting to ssh server on the host
-
-# use the netcat reversal to set up an ssh connection back to the host and forward port 9999 on the device to 'localhost:8000' (this could be anything like 'google.com:80')
-phone$ ./ssh localhost -p 5959 -L 9999:localhost:8000
-

Das wird Port 9999 auf dem Gerät zu Port 8000 des Hosts weiterleiten.

-

Alternativ können Sie einen SSH-Server (dropbear und host_key) mit folgenden Befehlen direkt auf dem Gerät verwenden:

-
phone$ DROPBEAR_PASSWORD=root ./dropbear -p 9000 -F -v -a -r host_key ./dropbear
-host$ adb forward tcp:8888 tcp:9000
-# public key authentication has been hard coded to succeed (make sure you have a public key for ssh to use)
-host$ ssh -vvv root@localhost -p 8888 -R 9999:people.mozilla.org:80
-
-

Weitere Anleitungen:

- diff --git "a/files/de/archive/b2g_os/debugging/verbinden_eines_firefox_os_ger\303\244ts_mit_dem_rechner/index.html" "b/files/de/archive/b2g_os/debugging/verbinden_eines_firefox_os_ger\303\244ts_mit_dem_rechner/index.html" deleted file mode 100644 index d82f69789d..0000000000 --- "a/files/de/archive/b2g_os/debugging/verbinden_eines_firefox_os_ger\303\244ts_mit_dem_rechner/index.html" +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Connecting a Firefox OS device to the desktop -slug: Archive/B2G_OS/Debugging/Verbinden_eines_Firefox_OS_Geräts_mit_dem_Rechner -tags: - - ADB - - Firefox OS -translation_of: Archive/B2G_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop ---- -
-

Diese Anleitung erklärt, wie man ein Firefox OS  Gerät mit dem Rechner über USB verbindet.

-
-
-

Achtung: Um Apps auf einem Firefox OS Gerät zu debuggen und wenn auf dem Gerät Firefox 1.2+ läuft, ist der beste Weg den App Manager zu benutzen. Details können unter Benutzung des App Mangers nachgelesen werden. Wird eine Version von Firefox OS kleiner 1.2 benutzt, kann man unter Einrichtung des Firefox OS Debugging Modus unter Verwendung der Entwickler Tools mehr über das Standard Remote Debugging  erfahren.

-
-

Einrichtung des Geräts

-

Auf deinem Firefox OS Gerät (see the layout):

-
    -
  1. öffnen der App Einstellungen, dann Geräteinformationen > Weitere Informationen > Entwickler.
  2. -
  3. Im Entwickler Menü  "Debugging über USB" aktivieren.
  4. -
-

Einrichtung des Rechners

-

Um ein Gerät mit dem Rechner zu verbinden muss die Android Debug Bridge (adb) installiert sein. Beachte dass das Firefox OS Simulator add-on eine adb mitbringt.

-

Instructions for setting up your desktop are specific to your operating system and are detailed in point 3 of "Setting up a Device for Development" on the Android developer site. We've listed some additional instructions below.

-

Spezielle Anweisungen für Mac OS X

-

If you're running Mac OS X, you have downloaded a package which has a name along adt-bundle-mac-x86_64-20130522. Put that folder into the Applications folder, so that you get /Applications/adt-bundle-mac-x86_64-20130522/ which contains two directories: eclipse and sdk. Then you can edit your ~/.bashrc and add

-
export PATH="/Applications/adt-bundle-mac-x86_64-20130522/sdk/platform-tools:$PATH"
-

(It will be ready for the next time you start your shell). You can now type on the CLI of the shell:

-
adb devices
-
-

and it will return a list of connected devices such as:

-
List of devices attached
-AA:BB:A5:B5:AA:BB    device
-

Spezielle Anweisungen für Linux

-

If you're running Linux, the vendor ID to use for Firefox OS Geeksphone devices is 05c6, so your /etc/udev/rules.d/51-android.rules file should contain an entry similar to:

-
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
-

Spezielle Anweisungen für Windows

-

You can download Windows drivers for the Geeksphone from the Geeksphone website.

-

Windows 8 by default will not let you install unsigned drivers. See this tutorial on "How to install an unsigned driver on Windows 8".

-

Since Windows XP Home Edition doesn't include tasklist.exe, Simulator won't detect the device. This can be solved downloading that file from ComputerHope website and putting it in Windows\System32 folder.

-

Einrichtung überprüfen

-

Once you've followed these instructions, attach the device to the desktop using a USB cable, open a command prompt and type "adb devices" (ensuring that adb is in your path). You should see your Firefox OS device listed in the output.

diff --git a/files/de/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html b/files/de/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html deleted file mode 100644 index 6a269b17bc..0000000000 --- a/files/de/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: Firefox OS Fehler melden -slug: Archive/B2G_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS -tags: - - Abbruch - - Bugs - - Bugzilla - - Fehler - - Firefox OS -translation_of: Archive/B2G_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS ---- -
-

Dieser Artikel enthält eine Anleitung zum Melden von Fehlern zum Firefox OS Projekt, zu Gaia und zu B2G (Boot to Gecko).

-
- -

Bugzilla

- -

Wie die meisten Mozilla-Projekte nutzen wir Bugzilla für die Fehler- und Problemverfolgung. Du kannst Fehler an Bugzilla melden, wenn Du Fehler entdeckt hast — wir haben eine eigene Bugzilla Kategorie (Product) für Firefox OS mit Unter-Kategorien (Components) für GaiaGonk und Gecko. Du solltest diese Kategorien verwenden, um Fehler und Probleme bezüglich Firefox OS, Gaia etc. zu melden.

- -

Fehler melden

- -

Zum effektiven Melden von Fehlern und Problemen kannst Du dieses Bugzilla Template verwenden. Hinweise zum Ausfüllen des Templates findest Du weiter unten.

- -

Pflichtfelder und optionale Felder

- -

Die folgenden Felder in Bugzilla sind immer auszufüllen:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeldBeschreibung
ComponentKategorie, in die der Fehler gehört. Wenn der Fehler in keine der vorhandenen Kategorien passt kannst Du "General" verwenden.
SummaryZusammenfassung, die den Fehler kurz und treffend beschreibt.
DescriptionAussagefähige Beschreibung des Fehlers. Eine gute Fehlermeldung sollte die Schritte zum Reproduzieren (steps to reproduce, STR) des Fehlers, die erwarteten und die tatsächlichen Ergebnisse enthalten. Bitte gib auch an, wie oft dieser Fehler auftritt (z.B. wenn Du die Schritte öfter wiederholst).
Build InformationGehe zu Einstellungen > Geräteinformationen > Weitere Informationen und füge folgende Informationen in die Fehlermeldung ein: Betriebssystemversion, Plattform-Version, Build-ID, Updatekanal und die Informationen zum Commit auf Git. Falls Du einen Mac oder Linux Computer mit adb hast und dort git installiert ist, dann kannst Du dieses Skript ausführen und dessen Ergebnis in die Meldung kopieren.
ScreenshotsBitte füge Bildschirmfotos ein. Das kann uns helfen, den Fehler zu analysieren. Auf dem Flame Smartphone drückst Du dafür 2 Sekunden lang gleichzeitig den Ein-/Aus Schalter und die "Lautstärke runter/leiser" Taste bis auf dem Display eine Bestätigung des Bildschirmfotos angezeigt wird. Anschließend überträgst Du dieses Foto via USB auf Deinen Computer.
VideoFalls sich Dein Fehler auf ungewöhnliche Veränderungen des Displays bezieht die mit einem Bildschirmfoto nicht dargestellt werden können, dann mach bitte ein Video davon. Dieses Video kannst Du dann als Anhang zur Fehlermeldung hinzufügen. Du kannst das Video auch nach YouTube hochladen und die URL in die Fehlermeldung einfügen.
ADB logsFalls adb auf Deinem Computer installiert ist: Schließe bitte Dein Smartphone an den Computer an und führe das Kommando |adb logcat| aus. Bitte füge das Ergebnis dieses Kommandos in eine Text-Datei ein und füge diese als Anhang zur Fehlermeldung hinzu.
- -

Die folgenden Felder sind optional:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeldBeschreibung
Depends/BlockZeige uns Abhängigkeiten zu anderen Fehlermeldungen.
KeywordsSchlüsselwörter für Bugzilla. Bestimmte Support-Abteilungen nutzen diese zur Statusverfolgung von Fehlern.
WhiteboardBeinhaltet Tags. Füge beliebige Tags zur Statusverfolgung hinzu. Du solltest keine vorhandenen Tags ohne Erlaubnis löschen.
See AlsoHin und wieder haben Fehler Bezug zu einem anderen Fehler. Das kannst Du hier angeben.
FlagsKennzeichen für die Statusverfolgung; das am häufigsten verwendete Kennzeichen in Firefox OS Fehlern ist blocking-b2g. Wenn eine Meldung als blocking-b2g gekennzeichnet ist, dann kann der Fehler die Veröffentlichung eines Releases gefährden und ist somit besonders zu beachten.
SecurityWenn ein Fehler die Sicherheit der persönlichen Daten gefährdet, monetäre Verluste oder ähnliches verursacht, dann solltest Du dieses Feld ankreuzen. Somit ist die Fehlermeldung nur noch für ausgewählte Mitarbeiter sichtbar.
- -

Nähere Informationen zu den Bugzilla-Feldern findest Du auf Bugzilla Fields.

- -

Lokalisierungs-Probleme melden

- -

Wenn Du eine nicht übersetzte Zeichenkette siehst, dann kann das zwei Gründe haben:

- - - -

Wie Lokalisierungs-Probleme (l12y) gemeldet werden

- -
    -
  1. Lege eine Meldung in Bugzilla an, als "Product" wählst Du 'Firefox OS'. Wähle unter "Component" die Firefox OS Komponente, in der das Lokalisierungsproblem auftritt. Trage bitte 'l12y' als Schlüsselwort in das Feld "Keyword" ein.
  2. -
  3. Fülle alle anderen Pflichtfelder aus.
  4. -
- -

Besondere Schlüsselwörter (Keywords)

- -

Die folgende Tabelle enthält Informationen zu speziellen Schlüsselwörten, die Du in Firefox OX Fehlermeldungen häufiger finden wirst.

- -


- Du solltest immer die Kombination Build-Version/Betriebssystem/Plattform, unter der der Fehler behoben ist, ins Kommentarfeld der Fehlermeldung eintragen bevor Du den Status auf Verified setzt. Wenn der Fehler auf allen Plattformen gemeldet ist und Du die Behebung des Fehlers nur auf einer bestimmten Plattform verifizieren kannst, dann gebe dies bitte in der Fehlermeldung an. Bitte setze den Status der Meldung in einem solchen Fall nicht auf Verified. Es müssen erst alle Plattformen erfolgreich getestet worden sein, bevor der Status auf Verified gesetzt wird.
-
- Zu guter Letzt: Falls andere Meldungen als Duplikat Deiner Meldung markiert wurden und Du Deine Meldung auf Verified setzt, dann prüfe diese Duplikate bitte ebenfalls und kommentiere diese Meldungen entsprechend. Oftmals markieren Entwickler eine Meldung als Duplikat obwohl der Fehler nur ähnlich, aber nicht identisch ist. Solche Fehlermeldungen können übersehen werden, wenn der Status ungeprüft auf Verified gesetzt wird.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeywordBeschreibung
metaZeigt an, dass eine Meldung nur zur Statusverfolgung genutzt wird. Mozilla benutz dies, um die Stati mehrerer Meldungen einer komplexeren Entwicklung in einer einzigen Meldung zu verfolgen. Meldungen mit diesem Keyword sollten von Entwicklern nicht in die Patch-Planung einbezogen werden. Bitte denk daran, dass Projektleiter und Tester dieses Keyword für die Statusverfolgung nutzen.
qablockerDieses Keyword wird benutzt, wenn eine Meldung das Testen in der Qualitätssicherung blockiert (manueller oder automatisierter Test eine neuen Entwicklung) und der Fehler daher im nächsten Projekt-Meilenstein der Beta-Phase bzw. Release-Veröffentlichung behoben sein muss.
qawantedNutze dieses Keyword für Meldungen die mehr Informationen, mehr Testfälle oder weitere Informationen zur Reproduzierbarkeit benötigen oder als Duplikat gekennzeichnet sind, ohne dass Du die duplizierte Original-Meldung finden kannst. Der über dieses Keyword angeforderte Qualitätssicherungs-Prozess wird im sogenannten Whiteboard aufgezeichnet. Wenn die Qualitätssicherung ihre Arbeit erledigt hat, sollte dieses Keyword entfernt werden.
regressionDieses Keyword bedeutet, dass das Problem gelöst war und wieder aufgetreten ist (regressed). Um dieses Wiederauftreten des Problems zu verfolgen wird eine neue Meldung mit Keyword "regression" angelegt. Es wird ebenso für Fehler verwendet, die in früheren Releases behoben waren und im aktuellen Release wieder auftreten. Das Nachverfolgen dieser Probleme hilft uns fehleranfällige und instabile Bereiche zu identifizieren, die beim Testen besonders beachtet werden sollten.
regressionwindow-wantedKennzeichnet eine Meldung als "regression" Meldung bei der es sehr hilfreich wäre zu wissen, wann genau der Fehler aufgetreten ist (Zeitpunkt oder Zeitraum).
steps-wantedBei Meldungen mit diesem Keyword wäre es sehr hilfreich zu wissen, wie der Fehler reproduziert werden kann.
verifymeSo gekennzeichnete Probleme sollten von einem Dritten zusätzlich verifiziert werden, auch wenn der Fehler für den Melder und die Qualitätssicherung behoben zu sein scheint.  Die Meldung enthält dann spezielle Angaben zur Hardware und zur Konfiguration, für die die Lösung zusätzlich noch verifiziert werden soll. Du solltest versuchen, diesen Fehler zu reproduzieren. Wenn Du dann bestätigen kannst, dass der Fehler bei Dir ebenfalls behoben ist, dann kann der Status von Fixed auf Verified geändert werden.
-  
crashNutze dieses Keyword, wenn Du Abbrüche in Firefox OS bekommst.
- -
-

Hinweis: Weitere Informationen erhälst Du auf der Seite Bug writing guidelines. Das Mozilla B2G QA Wiki enthält zudem nützliche Informationen zum Melden von Firefox OS Fehlern; die hilfreichsten Seiten sind Bugzilla Usage und Incoming bug triage for Firefox OS.

-
- -
-

Hinweis: Nähere Informationen zum Umgang mit Fehlern in der Gaia-Entwicklung findes Du auf  Submitting a Gaia patch.

-
- -

 

diff --git a/files/de/archive/b2g_os/developing_firefox_os/index.html b/files/de/archive/b2g_os/developing_firefox_os/index.html deleted file mode 100644 index 29f0a9c290..0000000000 --- a/files/de/archive/b2g_os/developing_firefox_os/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Hacking Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS -translation_of: Archive/B2G_OS/Developing_Firefox_OS ---- -
-

This section provides some useful articles covering different ways in which the Firefox OS experience can be modified/customized during the build or app writing process.

-
-
-
- Modifying the hosts file
-
- A guide to what can be achieved by modifying the Firefox OS hosts file.
-
- Customization with the .userconfig file
-
- How to customize the build and execution of Firefox OS by changing the .userconfig file.
-
- Localizing Firefox OS
-
- A guide to localising the Firefox OS platform, making it available in your preferred languages.
-
- Customizing the keyboard in Firefox OS apps
-
- This guide shows how to customize the keyboard in your Firefox OS apps.
-
diff --git a/files/de/archive/b2g_os/firefox_os_build_prerequisites/index.html b/files/de/archive/b2g_os/firefox_os_build_prerequisites/index.html deleted file mode 100644 index 0c2f90d39c..0000000000 --- a/files/de/archive/b2g_os/firefox_os_build_prerequisites/index.html +++ /dev/null @@ -1,446 +0,0 @@ ---- -title: Firefox OS build prerequisites -slug: Archive/B2G_OS/Firefox_OS_build_prerequisites -translation_of: Archive/B2G_OS/B2G_OS_build_prerequisites ---- -

Vor dem Holen des Codes zum Bauen von Firefox OS benötigt man ein geeignet konfiguriertes Build-System. Im folgenden wird dieser Vorgang beschrieben. Zur Zeit eignen sich 64-bit-Linux-Distributionen und Mac OS X.

-
-

Anmerkung: Wenn man Firefox OS auf ein Telefon installieren will, beginnt man, ohne das Telefon an den Computer angeschlossen zu haben. Im Text wird dann später erklärt, wann man das Telefon anschließen muß.

-
-

Kompatibles Gerät oder Emulator besorgen

-

Das System kann nur für ein kompatibles Gerät (i.a. ein Smartphone) oder einen Emulator gebaut werden. Obwohl wir diverse Geräte unterstützen, gibt es für einige von diesen unterschiedliche Ausführungen. Von diesen Ausführungen unterstützen wir zur Zeit nur bestimmte, und außerdem werden einige Geräte besser unterstützt als andere.

-
-

Anmerkung: Mozillas B2G-Quellcode ist die Referenzimplementation von B2G, aber Telefonherstellern ist es freigestellt, Fehlerkorrekturen ("Patches") hinzuzufügen oder andere Änderungen vorzunehmen. Wenn man zum Beispiel ein Alcatel One Touch kauft, läuft darauf eine herstellerspezifische Version. Das ist für die installierten Apps irrelevant, aber unter Umständen kann es auf  Plattform-Ebene Unterschiede geben. Die Version für das  Nexus-4 ("Nexus 4 Port") wird direkt von Mozilla gepflegt, also ist es viel wahrscheinlicher, dass dieses Telefon mit unserer Gecko-Version auf Anhieb funktioniert, als zum Beispiel bei Rang-3-Geräten.

-
-

Rang 1 (Tier 1)

-

Tier-1-Geräte werden bei der Entwicklung bevorzugt und sind typischerweise die ersten, die Fehlerkorrekturen ("bugfixes") und Erweiterungen ("feature updates") erhalten.

-
-
- Keon
-
- Keon ist ein Gerät der FIrma Geeksphone und eines der ersten Entwicklertelefone. Beachte, dass Binärpakete ("builds") für diese Geräte von Geeksphone bereitgestellt werden.
-
- Inari
-
- Inari ist ein weiteres Testgerät. Benutze diese Konfiguration, um FirefoxOS für die ZTE-Open-Geräte zu bauen. Warnung: Neuere Firefox-OS-Builds könnten auf ZTE Open Probleme beim Booten von der Standard-Boot-Partition machen.
-
- Flame
-
- Flame is Mozillas neues Standard-Referenztelefon für Firefox OS. Die Konfiguration für Flame sollte auch verwendet werden, wenn man für das Gerät ZTE Open C baut, weil beide Geräte auf der Android-Jellybean-Basis aufbauen.
-
-  
-
- Emulatoren (ARM und x86)
-
- Zur Zeit gibt es zwei Emulatoren, einen für die Emulation eines ARM-Prozessors und einen für die Emulation eines x86-Prozessors. Hier erfährt man mehr über die Installation und die Verwendung der Emulatoren.
-
- Achtung: Der x86-Emulator ist derzeit nicht praxistauglich, sowohl was die Installation angeht als auch die Unterstützung.
-
-  
-
- Desktop
-
- Man kann auch eine Version von Firefox OS für Desktop-Rechner bauen; diese führt Gecko in einer XULRunner-Anwendung aus und darin Benutzerumgebung Gaia.
-
- Flatfish
-
- Flatfish ist das erste für Firefox OS entwickelte Tablet, auf dem jedoch einige Telefoniefunktionen fehlen. Es werden ein paar spezielle Einstellungen benötigt, um den Code zu bauen.
-
-

Natürlich kann man den Desktop-Client und die Emulatoren auch bauen, ohne ein Telefon zu benutzen.

-

Rang 2 (Tier 2)

-

Bei den Tier-2-Geräten ist die Grundfunktionalität gegeben, und viele Entwickler, insbesondere App-Entwickler, arbeiten damit, daher sind es üblicherweise die nächsten Geräte (nach Tier-1), für die Änderungen bereitgestellt werden.

-
-
- Samsung Nexus S
-
- Die einzigen Varianten dieses Smartphones, von denen bekannt ist, daß sie mit Firefox OS funktionieren, sind GT-I9020A (mit Amoled-Bildschirm) and GT-I9023 (Billigmodell mit LCD). Möglicherweise funktionieren aber auch weitere.
-
- Samsung Nexus S 4G
-
- The SPH-D720 is supported as a tier 2 device.
-
-

Rang 3 (Tier 3)

-

Man kann Firefox OS für diese Geräte bauen, aber die Hauptentwickler verwenden sie nicht regelmäßig. Bezüglich Stabilität, Zuverlässigkeit und Funktionsvielfalt stehen sie daher den Tier-1- und Tier-2- Geräten möglicherweise nach.

-
-
- Samsung Galaxy S2
-
- Nur die Variante i9100 funktioniert, keine andere, zumindest nicht offiziell (i9100P könnte auch funktionieren, da sie sie sich nur durch einen zusätzlichen NFC-Baustein unterscheidet.)
-
- Samsung Galaxy Nexus
-
- Zur Zeit ist keine Variante bekannt, die nicht funktioniert.
-
- Nexus 4
-
- Einige Anwender haben laut IRC dieses Gerät mit Erfolg getestet. Möglicherweise muß man für den Fall, daß man Android 4.4 installiert hat, vorher auf 4.3 zurückgehen (Android- Betriebssystem-Images sind bei Google erhältlich)
-
- Nexus 5
-
- Einige Anwender haben laut IRC dieses Gerät mit Erfolg getestet.
-
- Tara
-
- Tara ist ebenfalls ein Testgerät. Das "Manifest" für Tara existiert nur im "master branch". Um den Tara-Code zu erhalten, ruft man folgendes Script auf: "BRANCH=master ./config.sh tara".
-
- Unagi
-
- Unagi ist ein Telefon, das als Test- und Entwicklungsplattform für einfache bis Mittelklasse- Smartphones verwendet wird. Viele Core-Firefox-OS-Entwickler arbeiten auf Unagi.
-
- Pandaboard
-
- Das Pandaboard ist eine Entwicklungsplatine ("Board"), die auf der OMAP-4-Architektur basiert, und wird verwendet, um auf mobilen Plattformen zu entwickeln.
-
-
- Wichtig: Nur solche Geräte werden unterstützt, auf denen mindestens Android 4 (alias Ice Cream Sandwich) lauffähig ist. Für den Fall, daß ein Gerät oben aufgeführt ist, aber ein älteres Android-System installiert ist, muß man erst eine neuere Android-Version installieren.
-
-

Bemerkung: Tier-2 und Tier-3-Geräte haben einen virtuellen, d.h durch Software dargestellten, Home-Button anstelle eines physikalischen.

-

Alle Tier-1-Geräte haben  dagegen einen physikalischen "Home"-Button, mit dem man bei Betätigen stets auf den Startbildschirm zurückkehrt. Die meisten Android-Geräte für Version 4 oder später haben einen auf dem Bildschirm dargestellten "Home"-Button. Auch Firefox OS kann solch eine Schaltfläche darstellen; sie wird automatisch bei entsprechenden Geräten aktiviert. Wenn dies versagen sollte, muß man die Einstellungen öffnen und zu den Geräteinformationen navigieren, dort dann "Weitere Informationen" öffnen und "Entwicklermenü" einschalten (falls noch nicht geschehen). Dann wieder zurück zu den Einstellungen navigieren und das Entwickler-Menü öffnen, dort "Software-Startschaltfläche" einschalten.

-
-

Anforderungen für Linux

-

Um auf Linux bauen zu können, benötigt man:

- -

Das ist zwar etwas mehr, als tatsächlich benötigt wird, aber mitunter kommt es vor, daß der Erstellungsprozeß gerade deswegen fehlschlägt, weil ein wenig Speicher fehlt.

-

Außerdem werden folgende Dienstprogramme benötigt und müssen ggf. nachinstalliert werden:

- -

Installation im Falle eines 64-Bit-Linux

-

Im folgenden werden die Kommandos aufgeführt, mit denen man die notwendigen Programmpakete für das Bauen von Firefox OS installieren kann.

-

Ubuntu 12.04 / Linux Mint 13 / Debian 6

-

Diese Kommandos in einem Terminal-Fenster ausführen:

-
sudo apt-get update
-sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make zip
-

Für den Fall, daß Firefox OS für das Referenzgerät "Flame" oder Nexus 5 gebaut wird, diese Kommandos auführen:

-

sudo apt-get install libxml2-utils

-

Ein Java-Entwicklungspaket ("JDK") kann von dieser Paketquelle (ppa)  installiert werden.

-

Bitte auch die obigen Anmerkungen berücksichtigen, die die Probleme beschreiben, die auftreten, wenn man für einen Emulator baut!

-

Ubuntu 12.10 / Debian 7

-

Das folgende Kommando im Terminal-Fenster ausführen:

-
$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make zip
-

Zusätzlich zu den oben erwähnte Schwierigkeiten beim Bauen für einen Emlator tritt hier noch das Problem auf, daß standardmäßig der Compiler in der Version gcc-4.7 verwendet wird, welcher den Compiliervorgang mit folgender Fehlermeldung abbricht:

-

"KeyedVector.h:193:31: error: indexOfKey was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"

-

Um diesen Fehler zu beheben, muß man auf die ältere Version gcc-4.6 als Standard-Compiler zurückgehen, und zwar am besten unmittelbar, nachdem man die Quellen für B2G heruntergeladen hat. Der Vorgang wird in der Anleitung "Changing the default host compiler" (engl.) beschrieben.

-

Bei einer unveränderten Ubuntu-12.10-Version gibt es eine Fehlermeldung wegen nicht erfüllter Abhängigkeiten der Systembibliotheken "ia32-libs". Dies wird mit diesen Befehlen behoben:

-
sudo dpkg --add-architecture i386
-sudo apt-get update
-sudo apt-get install ia32-libs
-

Ubuntu 13.04

-

Die folgenden Kommandos sind im Terminal-Fenster auszuführen:

-
$ sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip
-

Auch hier muß von gcc-4.7 auf gcc-4.6 zurückgegangen werden, wie oben für Ubuntu 12.10 beschrieben.

-

Ubuntu 13.10

-

With Ubuntu 13.10, multi-arch packages are now the main way to support multiple architectures (e.g. 32-bit on a 64-bit install).  You must tell your Ubuntu system that you want to support 32-bit packages as well:
-  

-
sudo dpkg --add-architecture i386
-sudo apt-get update
-

Once you've completed that, then you can install the necessary packages:

-
sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip libxml2-utils
-
-sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 1
-
-sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 2
-
-sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 1
-
-sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 2
-
-sudo update-alternatives --set gcc "/usr/bin/gcc-4.6"
-
-sudo update-alternatives --set g++ "/usr/bin/g++-4.6"
-

you can install the jdk via this ppa.

-

Ubuntu 14.04

-

Follow the instructions given for Ubuntu 13.10.

-

Fedora 19/20

-

Run the following command in Terminal:

-
sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA wget
-

The project should build correctly using the default compiler shipped with Fedora but if you encounter compilation errors you might need to install GCC 4.6.x:

- -

Download the tarball then install it to /opt, with the following command on Fedora 19/20:

-
curl -O http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc19.tar.xz
-sudo tar -x -a -C /opt -f gcc-4.6.4-fc19.tar.xz
-

To use GCC 4.6.x as the default host compiler you will have to set it explicitly after having retrieved the B2G sources: read Changing the default host compiler to find out how to do it.

-

Arch Linux

-

Run the following command in Terminal:

-
sudo pacman -S --needed alsa-lib autoconf2.13 bison ccache curl firefox flex gcc-multilib git gperf libnotify libxt libx11 mesa multilib-devel wget wireless_tools yasm zip lib32-mesa lib32-mesa-libgl lib32-ncurses lib32-readline lib32-zlib
-

To install the lib32-* packages you need to have the multilib repository enabled.

-

B2G can only be compiled with gcc4.6.4, and because Arch Linux always has bleeding edge software you will need to install gcc46-multilib from AUR. Note that you will have to edit the PKGBUILD and add staticlibs to the options array, or gcc will be unable to compile B2G and give you a cannot find -lgcc error when compiling. You will also need to add the following to your .userconfig file:

-
export CC=gcc-4.6.4
-export CXX=g++-4.6.4
-

By default, Arch Linux uses Python3. You'll have to force it to use the old python2. You can do that by linking the python2 executable to python but this is discouraged and considered error-prone. This will also break python 3 if it is installed on your system. A better way is to use virtualenv/virtualenvwrapper:

-
sudo pacman -S python-virtualenvwrapper
-source /usr/bin/virtualenvwrapper.sh
-mkvirtualenv -p `which python2` firefoxos
-workon firefoxos
-

Android will complain that you need make 3.81 or make 3.82 instead of 4.0. You can download make 3.81 from AUR.  This will install the make-3.81 binary on your path, you need to create a symlink named make to a location earlier in the PATH variable for the build to use the correct version.

-
mkdir -p ~/bin
-ln -s `which make-3.81` ~/bin/make
-export PATH=~/bin:$PATH
-

Android also needs the Java6 SDK and Arch only has Java7.  Unfortunately the aur build is broken, but you can still download the Java 6 SDK and install it manually.  You will then need to put it in your path.

-
cp ~/Downloads/jdk-6u45-linux-x64.bin /opt
-su
-cd /opt
-chmod +x jdk-6u45-linux-x64.bin
-./jdk-6u45-linux-x64.bin
-exit
-ln -s /opt/jdk1.6.0_45/bin/java ~/bin/java
-

Gentoo Linux

-
Installing ccache
-

You will need to install ccache, a tool for caching partial builds.

-
# emerge -av ccache
-

Because ccache is known to frequently cause support issues, Gentoo encourages you to use it explicitly and sparingly.

-

To enable the required use of ccache, on the subsequent step of this guide where the ./build.sh script is called, Gentoo users should instead run the command with an explicitly extended path, ie.

-
PATH=/usr/lib64/ccache/bin:$PATH ./build.sh
-
Generating Partition Images
-

If you are building B2G for actual physical hardware, then you may at some point also wish to generate some partition images for upload to your device. (For example, to restore backed up files to the device via the fastboot utility)

-

The filesystem image format used in this case is YAFFS2 (Yet Another Filesystem 2). Gentoo has support for the very latest (ie. git HEAD) yaffs2-utils userland package in portage. (Note: You will also need kernel patches if you want to mount YAFFS2 images, but this is not really required since you can deconstruct and rebuild them instead.)

-
# emerge --autounmask-write yaffs2-utils; etc-update; emerge -av yaffs2-utils
-

In order to generate such an image, simply change to the parent directory of the partition filesystem tree you wish to package, and issue a command like this:

-
mkyaffs2image system/ system.img
-

 

-

Anforderungen für Mac OS X

-

Um Firefox OS unter Mac OS X zu bauen, benötigt man etwas Vorarbeit, die unten detailiert beschrieben ist.  Außerdem werden typische Irrtümer und Fehler und ihre Lösungen erläutert.

-
-

Anmerkung: Das Bauen (und Konfigurieren der Quellen) von B2G für das Gerät Keon funktioniert nicht auf einem Mac OS-Rechner. Stattdessen muß man unter Linux bauen, ggf. auf demselben Rechner, auf dem auch Mac OS läuft.

-
-

Passende XCode-Versionen für Mac OS 10.9

-

XCode 4.2 oder älter sind nicht kompatibel mit OS X 10.9 ("Mavericks") und fallen daher ganz aus. Ansonsten gilt, daß man den ICS-Emulator nicht mit OS X 10.9 oder neuer bauen kann, und für das Gerät "flatfish" scheitert das Bauen mit allen Entwicklungsumgebungen der Versionen XCode 5.x.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Version compatibility of OS X 10.9.x
 emulator (ICS)flatfish/vixen (JB-4.2)emulator-jb (JB-4.3)emulator-kk (KitKat-4.4)
XCode 4.3.3XXXX
XCode 4.4.1XO[1]OO
XCode 4.5.2XO[1]OO
XCode 4.6.3XO[1]OO
XCode 5.0.2XXOO
XCode 5.1.1XXOO
XCode 6.0.1XXXX
XCode 6.1beta2XXXX
-
    -
  1. You must have environment variable BUILD_MAC_SDK_EXPERIMENTAL=1 exported to build flatfish/vixen.
  2. -
-

Install XCode Command Line Utilities

-

You need to install Xcode's Command Line Utilities. You can download just the Command Line Utilities from Apple's developer downloads page for your particular version of OS X, however if you would like the entire Xcode suite of applications, you can install Xcode through the Mac App Store. 

-

Xcode 4.3.1 (OS X 10.7 "Lion") and other newer versions such as 4.4.1+ (that is, Mac OS X10.8 "Mountain Lion"), won't necessarily include the required Command Line Utilities. When you install Xcode, make sure to go into Preferences, then the Downloads panel, and install the Command Line Utilities. In addition, make sure you have at least 20 GB of free disk space.

-

Screenshot of Xcode Downloads Command Line Tools

-
- Note: The Firefox OS emulator requires a Core 2 Duo processor or later; that is, a system that is compatible with Mac OS X 10.7 "Lion." You do not actually have to be running Lion, you just have to be compatible with it. You can, however, build any Firefox OS build on many older Macs.
-

Run Firefox OS Mac Bootstrap

-

Next, open a terminal and run the following command:

-
curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash
-

This will pull and run a bootstrap script that makes sure you have all the prerequisites met to build the emulator. It will also prompt you for permission to install anything you're missing, and provide warnings and suggested fixes to problems. The script will check for and install the following items:

- -

Xcode wrangling

-

If you have already upgraded to Xcode 4.4+ and get the message that Xcode is outdated, check the Xcode path with:

-
xcode-select -print-path
-

If it still points to /Developer you can update the path with:

-
sudo xcode-select -switch /Applications/Xcode.app
-

Making the Mac OS X 10.6 SDK available

-

You also need to have the Mac OS X 10.6 SDK available. The SDK needs to be available at

-
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
-

If it cannot be found there you will need to extract and copy it from Xcode 4.3. To do this:

-
    -
  1. Download the XCode 4.3 .dmg file from the Apple Developer portal (you'll need an Apple Developer account).
  2. -
  3. Download the utility Pacifist and use it to extract the 10.6 SDK from the XCode 4.3 .dmg file. Click on the "Extract Package" button, find the SDK by searching for 10.6 in the search box, then Ctrl + click on the MacOSX10.6.sdk directory and Extract it to a suitable location.
  4. -
  5. Add a symlink from the 10.6 SDK location to the /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ directory. For example, if you put the 10.6 SDK on your desktop, the comment would be
  6. -
-
ln -s /Users/<yourusername>/Desktop/MacOSX10.6.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
-
-

Note: We can drop the 10.6 SDK requirement after bug 784227 has been fixed, and our version of platform_build has been updated.

-
-

Be aware of Mac file system case sensitivity

-

By default, Mac OS X ships with a case-insensitive file system.  This is problematic because the Linux kernel has a number of files with the same name, but different case.  For example, see the header files xt_CONNMARK.h and xt_connmark.h.  This results in a number of files appearing to be modified in /kernel after a fresh ./config.sh.

-

In many cases you can run the build just fine; for some platforms, however, you may encounter the following error:

-
ERROR: You have uncommited changes in kernel
-You may force overwriting these changes
-with |source build/envsetup.sh force|
-
-ERROR: Patching of kernel/ failed.
-

Please see bug 867259 for more discussion and possible fixes for this problem.

-

Alternatively, it will always be safest to build on a case sensitive file system.  The easiest way to do this is to create a separate, mountable disk image with case-sensitivity enabled.  You can do this using Apple's Disk Utility application or from the command line:

-
hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.sparseimage
-

Mount the drive with:

-
open ~/firefoxos.sparseimage
-

Change into the mounted drive with:

-
cd /Volumes/firefoxos/
-

You can then check out the code and compile from this location without worrying about case-sensitivity problems.

-

Mountain Lion homebrew gotcha

-
-
- If you are on Mountain Lion and you receive an error during the installation of the dependencies via homebrew, such as:
-
-
-
clang: error: unable to execute command: Segmentation fault: 11
- ... try reinstalling the dependency manually adding the --use-gcc flag, for example: -
brew install mpfr --use-gcc
-
-

Follow Samsung Galaxy S2 extra steps

-

If you plan to build for the Samsung Galaxy S2, you will also need to install heimdall. See {{ anch("Installing heimdall") }} for details. This is not done for you by the bootstrap script!

-
- Note: If you have installed the Samsung Kies tool, which is used to manage the contents of many Samsung phones, you will have to remove it before you can flash Firefox OS onto your device. You can use the standard application removal process on Windows; on Mac, the Kies install disk image has a utility to fully remove Kies from your system. Flashing will not work if you have Kies installed. If you forget to remove Kies, the build system will detect it and remind you to uninstall it. Note also that the uninstall tool does not correctly remove the folder ~/Library/Application Support/.FUS, and leaves a reference to a utility there in your user startup items list. You will want to remove these manually.
-

Fix libmpc dependency if broken

-

gcc 4.6 was built with libmpc 0.9; if you then use homebrew to update packages, libmpc gets updated to version 1.0, but homebrew doesn't rebuild gcc 4.6 after the library version changes. So you need to create a symlink to make things work again, like this:

-
cd /usr/local/lib/
-ln -s libmpc.3.dylib libmpc.2.dylib
-

Optional: Install HAX

-

Intel provides a special driver that lets the B2G emulator run its code natively on your Mac instead of being emulated, when you're using the x86 emulator. If you wish to use this, you can download and install it. It's not required, but it can improve emulation performance and stability.  

-

Before you install HAX you will need to install the Android SDK.

-

Install adb

-

The build process needs to pull binary blobs from the Android installation on the phone before building B2G (unless you're building the emulator, of course).  For this, you will need adb, the Android Debug Bridge.

-

You can download and install adb as part of the Android SDK package, for Mac, Linux or Windows - visit the Get the Android SDK page.

-

Newer Linux distributions have adb already in their repositories. For Ubuntu 12.10 and later, run the following command:

-
sudo apt-get install android-tools-adb
-

Or for Fedora 18/19:

-
sudo yum install android-tools
-

If your distribution does not have packages for adb available (i.e. Ubuntu 12.04 or Fedora 17), you'll need to install the Android SDK starter package for your platform (you'll want the ADT Bundle, not the SDK Tools Only option). Then run their package manager, $SDK_HOME/tools/android, and use the GUI to install "Android SDK Platform-tools".

-

Find out where adb is installed (usually in usr/bin, possibly additionally inside adt/platform-tools, depending on how you installed it). Be sure to add this directory to your PATH. This can be done by adding the line

-
PATH=$SDK_HOME:$PATH
-

replacing $SDK_HOME with the location of the android sdk, to your ~/.bashrc or equivalent.

-

Install heimdall

-

Heimdall is a utility for flashing the Samsung Galaxy S2. It's used by the Boot to Gecko flash utility to replace the contents of the phone with Firefox OS, as well as to flash updated versions of B2G and Gaia onto the device. You'll need it if you want to install Firefox OS on a Galaxy S2; it is not needed for any other device. For other devices, we build and use the fastboot utility instead.

-
- Note: Again, it's important to note that this is only required for installing Firefox OS on the Samsung Galaxy S2.
-

There are two ways to install heimdall:

- -

Configure ccache

-

The B2G build process uses ccache. The default cache size for ccache is 1GB, but the B2G build easily saturates this; around 3GB is recommended. You can configure your cache by running the following command inside terminal:

-
$ ccache --max-size 3GB
-

For Linux: configure the udev rule for your phone

-
-

Note: This section is specific to Linux; Mac OSX has the necessary device permissions set up already.

-
-

Next, you need to confingure the udev rule for your phone,

-

You can get the USB vendor ID by running lsusb with your phone plugged in, but typically it's Google 18d1, Samsung 04e8, ZTE 19d2, Geeksphone/Qualcomm 05c6. Add this line in your /etc/udev/rules.d/android.rules file (replacing XXXX with the ID for your device):

-
SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", MODE="0666", GROUP="plugdev"
-

Take ZTE for example, the content in android.rules will be

-
SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"
-
-

If the file doesn't exist, create it. The rules.d directory is usually read only by default, so you may have to use chmod to make the directory writeable, or the file, or both.

-
-

Once you've saved the file, and closed it,  make the file readable:

-
$ sudo chmod a+r /etc/udev/rules.d/android.rules
-
-

Now that the udev rules have been updated, restart the udev daemon. For ubuntu:

-
sudo service udev restart
-

Finally, unplug and the USB cable but don't replug it in because we need to enable remote debugging on the phone first.

-

Enable remote debugging

-

Before you plug your phone back into your USB port, put it USB developer mode. This allows you to debug and flash the phone. To enable developer mode, on your phone select Settings app -> Device information -> More Information -> Developer -> Remote debugging (this was called Developer mode on older versions.) Once the option is checked, remote debugging is enabled, and you are ready to go.

-

At this point, connect your phone to your computer via a USB cable (if you created the udev rule before, this will trigger udev to detect the phone and create the device node with the right permissions). Now you can check if you can list your device via the adb devices command. If everything has worked ok, you should see an output similar to this (the following is for a Geeksphone Keon):

-
$ adb devices
-List of devices attached
-full_keon       device
-

If the device did not list as expect, check the file name and the script are all correct (see previous section), then restart the computer and retype the command again. Note also that if your device uses fastboot, the bootloader may identify itself with a different vendor ID than the one you see when the device boots normally.

-

Backup the phone system partition

-
-

Note: You have to do this before you build your device if you do not have existing system backup. Because some libraries will be referenced in build time. These library might be proprietary so we can't provide in our code base.

-
-

It is recommended to back up the entire Android system partition on your phone.

-

You can use this copy of the binary blobs for Android in case you later delete your B2G tree. To do this, run:

-
adb pull /system <backup target dir>/system
-
-

 Depending on the phone, you may also need to pull the /data and/or /vendor directories:

-
adb pull /data <backup target dir>/data
-adb pull /vendor <backup target dir>/vendor
-
-

If the pull commands fail with "insufficient permission" message, try the following:

- -

On to the next step

-
At this point, you should be ready to fetch the Firefox OS code!
diff --git a/files/de/archive/b2g_os/firefox_os_faq/index.html b/files/de/archive/b2g_os/firefox_os_faq/index.html deleted file mode 100644 index 0cc309dbfe..0000000000 --- a/files/de/archive/b2g_os/firefox_os_faq/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Firefox OS FAQ DE -slug: Archive/B2G_OS/Firefox_OS_FAQ -translation_of: Archive/B2G_OS/Introduction ---- -
-
- Wie bekomme ich ein Developer Preview Telefon?
-
- Weitere Informationen werden bald auf der Geeksphone Website zur Verfügung stehen.
-
- Wenn ich kein Entwickler-Telefon kaufen möchte, kann ich trotzdem eine App für Firefox OS entwickeln?
-
- Selbstverständlich! Sie können die App über Android testen, oder auf dem Computer mit dem (using Marketplace for FirefoxFirefox OS simulator.
-
- Wann wird das "fertige" Telefon verfügbar sein?
-
- Wir werden mit mehreren Partnern gemeinsam das Telefon auf den Markt bringen, jedoch besprechen wir uns diesbezüglich zu einem späteren Zeitpunkt nochmal.
-
- Wo kann ich mir Firefox OS auf mein Handy laden?
-
- https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS
-
- Wie kann ich meine Firefox OS App testen?
-
- Auf Android oder über unseren OS Simulator.
-
- Was ist Firefox OS?
-
- Es ist ein neues Handy-Betriebssystem, dass komplett auf offenen  Web-Standards basieren wird. Es ermöglicht für jede Geräte-Funktion (Telefonie, Messaging, Browsen usw.) eine eigenenständige auf dem HTML5-Standard basierende Applikation zu entwickeln, die grundsätzlich (theoretisch) auf jedem anderen Gerät (nur verfügbar in systemeigene Anwendungen) funktionieren würde.
-
- Wie ist die Liste der vollständigen Web APIs; Werden diese standardisiert werden?
-
- Eine große Anzahl von WebAPIs wird in die erste Implementierung des Firefox-OS aufgenommen werden. Eine vollständige Liste finden Sie auf
-
- https://wiki.mozilla.orghttps://wiki.mozilla.org/WebAPI#APIs.
-
- Sind die Web-APIs für den plattformübergreifenden Einsatz standardisiert?
-
- Ja, die APIs sind das Ergebnis von Arbeiten mit mehreren Partnern, die bereits auch für andere Plattformen entwickelt haben. Das Umsetzen stellt in Bezug auf die unterschiedlichen Hardware-Anforderungen der Benutzer ein Problem dar, das nicht nur Mozilla beschäftigt. Unsere Anwendungen sind ein guter Anhalts&Ausgangspunkt für weitere zukünftige Plattformen und Entwicklungen.
-
diff --git a/files/de/archive/b2g_os/gaia/gaia_apps/index.html b/files/de/archive/b2g_os/gaia/gaia_apps/index.html deleted file mode 100644 index e4f64963a0..0000000000 --- a/files/de/archive/b2g_os/gaia/gaia_apps/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Gaia apps -slug: Archive/B2G_OS/Gaia/Gaia_apps -translation_of: Archive/B2G_OS/Platform/Gaia/Gaia_apps ---- -
-

Gaia is the front-end of Firefox OS, which contains system administration functionality and the built-in suite of apps shipped with Firefox OS devices. All the Gaia source code — even the system, and keyboard IMEs — is fully implemented with HTML5 (HTML + CSS + JavaScript) & Open WebAPIs. This set of documents contains information on how each of the default apps available in the Gaia family works.

-
- -

Gaia functionality categories

- -

The different apps inside Gaia can be roughly categorized into the groups listed below.

- -
-

Note: Many of the pages linked to for more explanation of how the individual apps work are README pages inside the Gaia Github repo. This is because many of the apps are on rapid development cycles and therefore subject to rapid (often daily) change, so it would make little sense to try to keep MDN pages updated with these changes. The engineer-maintained README pages are currently the most accurate source of information.

-
- -

Platform

- -

Including the System, Settings, Lockscreen, build scripts, and Bluetooth apps.

- -

- -

Platform apps: further explanation

- -
-
System
-
The System app is the first web app loaded by Gecko during the Firefox OS bootup procedure, and it handles numerous responsibilities that are required generally for the running of the system, and are therefore not scoped per individual web app.
-
Browser
-
The Browser app (which is now part of System) provides browser-like functionality where it is needed — including page navigation, search and bookmarks.
-
Window Management
-
Firefox OS's window management functionality — including app life cycle and interaction, notifications, animations and much more — is handled by a specific part of the System app. This article looks at Firefox OS Window Management in detail.
-
Settings
-
The Settings app allows Firefox OS users to configure device settings, and responds to incoming activities (Web activities with a name of configure), which allows other apps to jump to different panels inside the Settings app to handle configuration as required (for example showing the wifi settings panel if no data connection is available.)
-
- -

Communication

- -

Including the Dialer, Contact, SMS apps and FTU apps.

- -

- -

Communication apps: further explanation

- -

TBD

- -

Productivity

- -

Including the Email, Calendar, and Clock apps.

- -

- -

Productivity apps: further explanation

- -
-
Calendar
-
The Firefox OS built-in calendar app.
-
Clock
-
Firefox OS's default Clock app, which includes alarm, timer and stopwatch functionality.
-
Email
-
The Gaia e-mail app.
-
- -

Media

- -

Including the Camera, Gallery, Music, and Video apps, and some media related functions such as forward lock DRM and wallpapers.

- -

- -

Media apps: further explanation

- -
-
Video
-
Video is a simple video player app that will play videos present on your Firefox OS device's storage media.
-
Camera
-
Camera allows Firefox OS users to capture and manage videos and photos from the device camera(s), and responding the Web activities of type pick from other apps that want to grab media using Camera's functionality.
-
- -

Other Gaia features

- -

Besides these functions, there are several other major features such as browser, homescreen, marketplace, test framework, PDF viewer, and app manager, which are developed closely alongside Gaia.

- -
-
pdf.js
-
pdf.js is an HTML5-based PDF viewer, used inside Gaia for viewing PDFs. Note that the codebase for pdf.js is maintained in a separate repo, outside Gaia.
-
diff --git a/files/de/archive/b2g_os/gaia/hacking/index.html b/files/de/archive/b2g_os/gaia/hacking/index.html deleted file mode 100644 index 64b9be9f79..0000000000 --- a/files/de/archive/b2g_os/gaia/hacking/index.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Hacking Gaia -slug: Archive/B2G_OS/Gaia/Hacking -translation_of: Firefox_OS/Developing_Gaia ---- -

Gaia ist die Sammlung von Webapps, die das Front-End des Firefox OS (Codename Boot to Gecko) bilden.

-

Alles was Sie auf dem Bildschirm von Firefox OS sehen, inklusive dem Homescreen, wurde nur mit Hilfe von freien Web-Technologien erstellt, 

-

 

-

Quellcode besorgen

-

To get the source code for Gaia, fork us on GitHub and then clone your fork using git.

-
$ git clone https://github.com/username/gaia.git
-

Gaia starten

-

Sie können Gaia entweder auf Ihrem Desktop nutzen oder mit einem kompatiblem mobilen Gerät.

-

 

-

B2G Desktop

-

B2G Desktop is a desktop build of the app runtime used on Firefox OS devices which you can use to run Gaia on your desktop computer.

-

You can download a nightly build of B2G Desktop from here. Currently we recommend installing the latest beta build for your platform. There are builds for Linux (32 bit and 64 bit), OS X and Windows.

-

Nightly builds come packaged with a recent version of gaia. Once you've downloaded the archive, all your need to do is extract it to a folder and run the b2g binary from the extracted folder.

-

Note: 64 bit Linux builds do not currently work on some distributions, this is bug 812484. If you have problems try a 32-bit build instead.

-
$ cd b2g
-$ ./b2g
-

To run B2G with your own version of Gaia for development purposes you first need build a profile from your clone:

-
$ cd /path/to/gaia
-$ DEBUG=1 make
-

This will generate a directory in your gaia directory called "profile". The DEBUG part runs Gaia as hosted apps on a built-in web server, rather than the default packaged apps which have to be re-packaged after every change.

-

Note: Debug builds are currently broken on B2G Desktop, so until bug 816957 is fixed you need to run "make" without the "DEBUG=1" part, then re-run make every time you make a change to Gaia.

-

 

-

You can then run B2G Desktop with your generated profile like so:

-
$ /path/to/b2g/b2g-bin -profile /path/to/gaia/profile
-

If you want to you can build your own B2G Desktop from source.

-

B2G Device

-

 

-

If you have a compatible mobile device you can also run Gaia by flashing it with Firefox OS. Please see documentation here.

-

There is also documentation here about testing changes on your device.

-

Unit Tests

-

 

-

See here for information about writing and running unit tests for Gaia.

-

Filing Bugs

-

 

-

Bugs are filed on Bugzilla under Boot2Gecko > Gaia.

-

File a new bug under the Gaia component (or one of the sub-components) here.

-

Contributing Code

-

 

-

Mozilla depends on contributions from the open source community to help develop Gaia apps and we'd love you to get involved.

-

Some great places to find some bugs to start hacking on:

- -

Coding Style

-

 

- - - - - - - - -

Bad:

-
if (expression) doSomething();
-
-

Correct:

-
if (expression)
-  doSomething();
-

 

-

If you're working on the system app, check out the guidance listed here.

-

Before submitting a patch we recommend you run gjslint on it to check for any style errors:

-

 

-
gjslint --nojsdoc my_file.js
-

 

-

Submitting a Patch

-

First file or assign a bug to yourself on Bugzilla, you'll need a Bugzilla account.

-

Then create a branch on your fork of Gaia:

-
$ git branch branchname
-$ git checkout branchname
-

Commit your changes:

-
$ git add /file/to/add
-$ git commit -m "commit message including bug number"
-

Push your branch:

-
$ git push origin branchname
-

Send a pull request by navigating to the branch in your fork on GitHub and finding the pull request button.

-

To request a review of your patch, add an attachment to the bug in Bugzilla referencing the URL of the pull request and set the review ("r") flag to "?" and enter the bugzilla ID of one of the module owners and peers listed here.

-

The reviewer may ask you to make some changes. Once they're is happy with your patch, they will merge it into the master branch for you. Before they do this they would prefer it if you could squash all your changes into a single commit and add "r=reviewername" to the end of the commit message.

-

Contacting the Team

-

 

- -

Tips

-

Linux B2G Desktop support

-

 

-

The homescreen is empty

-

Currently, under Linux, OOP frame aren't rendered properly. The homescreen isn't actually rendered here...

-

If you just want to happily hack on pure UI (css and JS) you can safely run with OOP disabled and avoid those issues. Change the line in build/settings.py

-
 "debug.oop.disabled": False,
-
-

to

-
 "debug.oop.disabled": True,
-
-

To the profile/user.js in your gaia directory.

-

Port Forwarding

-

 

-

To forward the socket on the phone to the desktop (for desktop development), you first need to get rilproxy to expose it as such, rather than exposing it to Gecko. In the gaia directory:

-
 $ make forward
-
-

This runs the commands:

-
$ adb shell touch /data/local/rilproxyd
-$ adb shell killall rilproxy
-$ adb forward tcp:6200 localreserved:rilproxyd
-
-

The file located at /data/local/rilproxyd will be deleted once the rilproxy daemon will start again. As a consequence you have to do this manipulation every time your device restarts.

-

Restarting B2G on a device from the desktop

-

 

-
adb shell killall b2g
-
-

B2G Desktop JavaScript Console

-

 

-

You can run B2G Desktop with the JavaScript console by using the -jsconsole flag

-
$ /path/to/b2g-bin -jsconsole
-
-

Launching an app directly

-

 

-

A "--runapp" option has been added to the B2G Desktop command-line to automatically start an application. The system app is loaded and everything happens like normal; this is not like the old trick where we loaded your app instead of the system app.

-

"--runapp" takes an argument that it normalizes by lower-casing and removing dashes and spaces, and then checks the argument against the similarly normalized app names from app manifests. For example, the name of the e-mail app is currently "E-Mail", but "--runapp email" will run it. Partial matching is not supported right now, but you can enhance b2g/chrome/content/runapp.js if your app name is unwieldy.

-

If you invoke "--runapp" without an argument (or an empty argument), the command will print out a list of all the apps it knows about as well as a brief usage message.

-

One important note is that this command disables the lock-screen as part of its magic and does not re-enable it. The assumption is that you won't use this command on a profile where you are testing the lock screen, or will turn it back on manually. Feel free to enhance the command to behave better if this is a problem for you.

-

In summary:

-
./b2g -profile /path/to/your/gaia/profile --runapp email
-
-

runs the e-mail app.

-

reset-gaia and install-gaia make targets

-

 

-

The reset-gaia and install-gaia make targets can be used interchangeably. reset-gaia will purge all the existing profiles, database before push Gaia from your working directory (new setting database will also be initialized); install-gaia will just push updates of Gaia.

-

Blank screen when B2G Desktop starts

-

 

-

When you start b2g using b2g -profile $GAIA/profile a blank screen shows up and you see an error Cannot reach app://system.gaiamobile.org. To fix this there are a couple of things you can check

- -

Diagnosing OOM problems

-

 

-

From Cjones:

-

Another way to diagnose possible OOMs is to open a terminal and run

-

$ watch -n 1 'adb shell b2g-procrank'

-

If you see the "USS" of one of the app processes go up near 100MB and then that process disappear from the process list (accompanied by some sort of visual crash in gaia), then you've almost certainly seen an OOM kill.

-

 

-

 

-

 

-

 

-

 

-

 

diff --git a/files/de/archive/b2g_os/gaia/index.html b/files/de/archive/b2g_os/gaia/index.html deleted file mode 100644 index 1405dd58c9..0000000000 --- a/files/de/archive/b2g_os/gaia/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Gaia -slug: Archive/B2G_OS/Gaia -tags: - - B2G - - Gaia - - Mobile -translation_of: Archive/B2G_OS/Platform/Gaia ---- -

Gaia ist die Benutzeroberfläche von Firefox OS. Alles was auf dem Bildschirm nach dem Start von Firefox OS erscheint, wird von Gaia gemalt. Einschließlich des Sperrbildschirmes, Homescreen, Dialer und anderen Programmen. Gaia ist komplett in HTML, CSS, und JavaScript geschrieben. Seine einzige Schnittstelle zu dem zugrunde liegenden Betriebssystem und Hardware wird über Standart Web APIs ermöglicht, welche von Gecko implementiert werden.

-

Wegen diesem Aufbaus kann Gaia nicht nur auf Firefox OS Geräten, sondern auch auf anderen Betriebssystemen und Webbrowsern (wenn auch, je nach Fähigkeiten des Browsers, möglicherweise Eingeschränkt) betrieben werden.

-

Anwendungen von Drittanbietern, welchen neben Gaia installiert wurden, können von Gaia gestartet werden.

- - - - - - - -
-

Dokumentationen über Gaia

-
-
- Einführungen zu Gaia
-
- Gaia ist die Benutzeroberfläche für Firefox OS Geräte; Es ist eine Internetapplikation welche auf der Firefox OS Applikationsumgebung läuft. Dieses Handbuch bietete eine Einführung zu Gaia auf einem hohen Niveau.
-
- Gaia hacking guide
-
- Ein Leitfaden für Hacking und Modifizierung der Gaia-Schnittstelle.
-
-

View All...

-
-

Hilfe von der Community

-

Wenn du mit Gaia, oder an Gaia Anwendungen arbeitest, könnten dir diese Community-Ressourcen helfen!

-
    -
  • Besuche das Boot to Gecko Projekt Forum: {{ DiscussionList("dev-gaia", "mozilla.dev.gaia") }}
  • -
-
    -
  • Stelle deine Fragen im Mozilla's Gaia IRC channel: #gaia
  • -
-

Don't forget about the netiquette...

-
- - -

Ressourcen

- -
-

 

diff --git a/files/de/archive/b2g_os/gaia/introduction_to_gaia/index.html b/files/de/archive/b2g_os/gaia/introduction_to_gaia/index.html deleted file mode 100644 index 2b121e8274..0000000000 --- a/files/de/archive/b2g_os/gaia/introduction_to_gaia/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Introduction to Gaia -slug: Archive/B2G_OS/Gaia/Introduction_to_Gaia -translation_of: Archive/B2G_OS/Platform/Gaia/Introduction_to_Gaia ---- -
-

Gaia is the user interface for Boot to Gecko (B2G); it's a set of Web applications that runs locally on a B2G device, emulator, desktop build, or Firefox build. All you need to know in order to add apps or make changes to Gaia are Web technologies like JavaScript, HTML, and CSS.

-
- -

The Gaia lock screen

- -

The lock screen shows the network carrier, current time and date, and a slidebar allowing the user to unlock the phone or go straight to the camera to take a picture. If the user has got a passcode lock set, the lock screen will also show a passcode entry interface.

- -

- -

Note that on some devices the passcode is enabled by default; in these cases the default PIN to unlock the device is "0000". This most likely will change over time as this feature is fleshed out.

- -

The default Gaia interface

- -

The default interface in Gaia, as seen here, is similar to what you see on most typical smartphones.

- -

- -

This image is obviously of a prerelease version of the operating system, with placeholder icons (and some test applications). The status bar at the top indicates the network on which the phone is operating (or "No SIM card" for a device without any network), the network strength, WiFi signal strength, battery level, and current time.

- -

The middle area of the display shows icons for the applications; swiping left and right pages through screens of icons. You can find more about the default suite of apps that comes with Gaia on our Gaia apps page.

- -

At the bottom of the screen is a dock with room for up to seven of your most commonly used applications. You can drag and drop apps to the dock from the middle area.

- -

See also

- - diff --git a/files/de/archive/b2g_os/gaia_entwickeln/build_system_primer/index.html b/files/de/archive/b2g_os/gaia_entwickeln/build_system_primer/index.html deleted file mode 100644 index 8f6f0c7379..0000000000 --- a/files/de/archive/b2g_os/gaia_entwickeln/build_system_primer/index.html +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: 'Gaia Build System: Grundlagen' -slug: Archive/B2G_OS/Gaia_Entwickeln/Build_System_Primer -tags: - - Building - - Firefox OS - - Gaia Grundlagen - - Gaia build -translation_of: Archive/B2G_OS/Developing_Gaia/Build_System_Primer ---- -
-

Dieser Artikel beschreibt die grundlegende Funktionsweise des Gaia Build Systems inklusive make-Datei, Build-Prozess, Umgebungsvariablen und Anpassungsmöglichkeiten.

-
- -

Die wichtigen Schritte eines Builds werden größtenteils von den im Gaia-Unterverzeichnis build/ liegenden Skripten erledigt. Augerufen werden diese mit make, node.js und XPCShell (auch bekannt als JS Shell), einer Laufzeitumgebung von XULRunner. Das Gaia Build System enthält viele Werkzeuge zum Installieren, Testen und Lokalisieren von Apps und um diese als Paket auf ein Gerät zu bringen. Zudem können Entwickler das Gaia-Paket anpassen, z.B. können Hintergrundbilder, Klingeltöne, Apps und Einstellungen geändert werden.

- -
-

Hinweis: XPCShell ist ähnlich wie node.js, bietet aber zusätzlich die Möglichkeit zum Ausführen von Mozilla-spezifischen javascripts. Zudem können Gaia-Skripte mit Hilfe von XPCShell in einer Firefox Erweiterung laufen.

-
- -

Die make-Datei

- -

Die make-Datei enthält eine Menge nützlicher Funktionen. Dieses Kapitel bechreibt die nützlichsten davon.

- -

install-gaia

- -

Gestartet mit dieser Option installiert make alle Apps auf Deinem Gerät. Wenn Du nur eine bestimmte App installieren möchtest, dann starte make wie folgt mit der APP Option:

- -
APP=calendar make install-gaia
- -

Dieses Verzeichnis muss im Gaia-Verzeichnisbaum existieren (z.B. apps).

- -

reset-gaia

- -

Funktioniert genauso wie install-gaia mit dem Unterschied, dass zuerst alle Apps deinstalliert und anschließend wieder mit den Standard-Zugriffsrechten installiert werden. Die Apps befinden sich in /data/local wie bei den Entwickler-Builds. Test- und Debugging-Apps werden hier ebenfalls installiert.

- -
-

Vorsicht: Wenn beim Aufruf von make mit der Option reset-gaia die Umgebungsvariable APP gesetzt ist, dann wird dies Dein Gerät in einen unbrauchbaren Zustand versetzen (das kann allerdings behoben werden durch Aufruf von make mit der Option reset-gaia ohne die APP Umgebungsvariable). Also mach das bitte nicht.

-
- -

production

- -

Genauso wie reset-gaia, aber der Quellcode wird optimiert. Das ermöglicht grundsätzlich die Emulation von User Builds (stabilen Builds). Mit dieser Option werden dieselben Apps installiert wie bei User Builds.

- -
-

Vorsicht: Wenn beim Aufruf von make mit der Option production die Umgebungsvariable APP gesetzt ist, dann wird dies Dein Gerät in einen unbrauchbaren Zustand versetzen (das kann allerdings behoben werden durch Aufruf von make mit der Option production ohne die APP Umgebungsvariable). Also mach das bitte nicht.

-
- -

reference workloads

- -

Diese Option installiert unterschiedlich große Pakete für Laufzeittests auf dem Gerät, um eventuell auftretende Geschwindigkeits- und Skalierungsprobleme debuggen und beheben zu können. Diese Option akzeptiert die APP Umgebungsvariable und auch die APPS Umgebungsvariable mit mehreren durch Leerzeichen voneinander getrennten App-Namen, z.B.:

- -
APP=sms make reference-workload-light
-APPS="sms communications/contacts" make reference-workload-heavy
-
- -
-

Hinweis: Weitere Informationen findest Du auf Hacking Gaia: Reference workloads.

-
- -

Umgebungsvariablen

- -

Mit einigen Umgebungsvariablen kannst Du den Build und die Installation auf dem Gerät steuern, z.B.:

- -

P=1

- -

Das ermöglicht parallele Build-Erzeugungen auf Multikern CPU Architekturen und verkürzt die Laufzeit von Build-Erzeugungen, der Standardwert ist 0.

- -
-

Vorsicht: Parallele Build-Erzeugung ist noch in der Test-Phase und somit vielleicht nicht stabil.

-
- -

GAIA_OPTIMIZE=1

- -

Hiermit wird eine Optimierung der JavaScript Dateien angestossen. Diese Umgebungsvariable wird automatisch beim Ausführen von make production gesetzt. Die Variable kann für install-gaia und reset-gaia verwendet werden.

- -

PRODUCTION=1

- -

Das ist im Grunde ein Alias für make production.

- -

DEBUG=1

- -

Mit dieser Umgebungsvariablen wird eine Debugging-Umgebung aufgebaut, die Du für Gaia unit tests oder für die Entwicklung eigener Apps in Firefox OS nutzen kannst. Du musst ein bereits bestehendes Debugging-Profilverzeichnis löschen, bevor Du ein neues generieren kannst.

- -

DEVICE_DEBUG=1

- -

Deaktiviert die Bildschirmsperre auf dem Gerät.

- -

GAIA_DEVICE_TYPE=phone

- -

Diese Umgebungsvariable ermöglicht eine individuelle Installation mit mehreren 'app.list' Dateien. Alle 'app.list' Dateien müssen in /build/config/$(GAIA_DEVICE_TYPE)/  Verzeichnissen liegen.

- -

Der Standardwert von GAIA_DEVICE_TYPE ist phone.

- -
-

Hinweis: Weitere Details und optionen findest Du auf Hacking Gaia make options.

-
- -

Build-Prozess

- -

Das Ablaufdiagramm, wie ein Build für Gaia erzeugt wird:

- -

- -

pre-app.js, app.js & post-app.js werden von make gestartet und die meisten Build-Schritte werden in den xpcshell Skripten ausgeführt, make ermittelt das Betriebssystem und lädt den b2g-desktop herunter. Wir planen, mehr Build-Schritte von make in die xpcshell Skripte zu migrieren.

- -

Vielleicht fragst Du Dich, warum wir pre-app, app and post-app nutzen. Das liegt daran, dass wir immer mehr Abhängigkeiten von make in die xpcshell Skripte verlagern. Deshalb entwickelten wir pre-app.js und post-app.js basierend auf  bug 1021051, um den Großteil der Abhängigkeiten in die xpcshell Skripte zu verlagern. Am Ende werden dann app.js, pre-app.js und post-app.js auf Basis von  bug 1053703 migriert.

- -

Wir haben drei Typen von Verzeichnissen in einem Gaia Build System:

- -
    -
  1. Source-Verzeichnisse: apps, dev_apps, gemeinsame Verzeichnisse
  2. -
  3. Stage-Verzeichnis: build_stage (stage = Plattform)
  4. -
  5. Profil-Verzeichnisse: profile, profile-debug oder profile-test
  6. -
- -

Unser Ziel ist es, keine Dateien in die Source-Verzeichnisse hinein zu generieren. Leider haben wir immer noch ein paar Stellen, an denen Dateien in die Source-Verzeichnisse generiert werden. Wir planen, diese Probleme zu beheben. Die folgende Tabelle listet auf, von welchen Modulen Dateien ins Source-, ins Stage- und in die Profil-Verzeichnisse generiert werden.

- -

- -

Der Build-Prozess führt bei Aufruf von make im Gaia-Verzeichnis die folgenden Schritte in der angegebenen Reihenfolge aus:

- -
    -
  1. b2g_sdk: b2g-desktop startet die xpcshell Skripte in GAIA_DIR/build/.
  2. -
  3. svoperapps: Download der Apps und Generieren der Konfigurations-Dateien der App-Installation pro SIM-Karten-Anbieter und Land.
  4. -
  5. webapp-manifests: Generieren der Metadaten der Web-Apps für den Build.
  6. -
  7. keyboard-layouts: Generieren der Layout-Konfiguration der Standard-Tastatur.
  8. -
  9. settings.json (settings.js): Dieses JavaScript generiert die Standard-Einstellungen für Firefox OS, die von Gaia gelesen werden.
  10. -
  11. webapp-shared: Kopieren der von den Apps benötigten Dateien vom gemeinsamen Source-Verzeichnis ins Stage-Verzeichnis.
  12. -
  13. preferences: Generiert die Standard-Umgebung für Firefox OS; generiert die Datei user.js und kopiert diese auf das Gerät, wo sie von Gecko gelesen wird. Bitte beachte, dass die Standard-Umgebung abhängig von den Umgebungsvariablen (wie z.B. DEBUG=1) variieren kann.
  14. -
  15. app.js: make-Dateien in den jeweiligen app Verzeichnissen: Sie werden ausgeführt, wenn sie existieren. Für jede App ohne eigene make-Datei kopiert die Gaia make-Datei das App-Verzeichnis ins Stage-Verzeichnis build_stage und führt [app-directory]/build/build.js aus, falls vorhanden. Siehe {{ anch("Build script for apps") }} für weitere Details.
  16. -
  17. test-agent-bootstrap & test-agent-config: Einrichten der zwei make Regeln test-agent-config & test-agent-bootstrap-apps, welche für den Aufbau von Test-Umgebungen pro App benötigt werden.
  18. -
  19. webapp-optimize: Dieses Skript enthält verschiedene Optimierungs-Prozeduren inklusive JavaScript Minimierung, Zusammenfügen von Lokalisierungs-Dateien in die JSON-Dateien und Generieren von HTML-Dateien für die Standard-Sprache, falls nötig.
  20. -
  21. webapp-zip: Hier wird jede App in eine eigene zip-Datei komprimiert und diese im Verzeichnis profile/ abgelegt.
  22. -
  23. optimize-clean: optimize-clean bereinigt die HTML-Dateien für die Standard-Sprache.
  24. -
  25. contacts: Kopiert eine vorgefertigte Kontakte-Datei in Dein Profil in GAIA_DISTRIBUTION_DIR, falls vorhanden.
  26. -
  27. extensions: Kopiert die in GAIA_DIR/tools/extensions liegenden Erweiterungen in Dein Profil-Verzeichnis; verschiedene Konfigurationen ermöglichen das Kopieren verschiedener Erweiterungen.
  28. -
  29. installed-extensions.json (additional-extensions.js): Zu guter Letzt: Dieses Skript kopiert per Download verschiedene zusätzliche Erweiterungen in Dein Profil-Verzeichnis.
  30. -
- -

Build-Skript für Apps

- -

Standardmäßig wird als App Build Skript [app directory]/build/build.js von  app.js ausgeführt, falls vorhanden. Wenn $APP/build/build.js nicht vorhanden ist, dann kopiert app.js die App ins Stage-Verzeichnis build_stage.

- -

Die Dateien im App-Verzeichnis sollten vom App Build-Skript ins Stage-Verzeichnis build_stage kopiert werden; denn app.js kopiert sie nicht, wenn ein App Build-Skript existiert. Beispiel: Die App "Kalender" hat ein Skript build/build.js und utils.copyToStage() sollte in build.js für die "Kalender" App aufgerufen werden.

- -
-

Hinweis: Sourcen, die nicht zu Deiner App gehören (wie in shared/) kannst Du in der index.html in den <head> Bereich einfügen, damit sie von shared/ in Deine App kopiert werden.

-
- -

Build-Skripte für Apps benötigen möglicherweise alle Build Module im Verzeichnis  $GAIA_DIR/build; speziell das utils Modul, ein sehr nützliches Modul für den Build von Apps, kannst Du require('utils') verwenden um das Modul einzubinden.

- -

- -

Anpassen der Voreinstellungen

- -

Wenn Du eine eigene Konfiguration mit Einstellungen und Apps immer wieder beim Flashen Deines Gerätes benötigst, dann kannst Du eine Datei namens custom-prefs.js mit all Deinen Präferenzen im Verzeichnis build/config ablegen. Dort ist sie vor Überschreiben geschützt und unterliegt nicht der Source-Steuerung.

- -

Hier sind einige sinnvolle Voreinstellungen:

- -
// Aktivieren von marionette für Performance-Tests
-// siehe https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_performance_tests
-user_pref("marionette.defaultPrefs.enabled", true);
-
-// Setzen des Ports für remote Debugging Deiner Anwendung auf Deinem Gerät
-user_pref("devtools.debugger.remote-port", 60000);
-
-// Aktivieren des remote Debuggers
-user_pref("devtools.debugger.remote-enabled", true);
-
-// Ausgeben der Debug-Meldungen über den Radio Interface Layer in logcat
-user_pref("ril.debugging.enabled", true);
-
- -

Diese Datei wird immer gelesen, wenn Du ein Profil generierst. Der sicherste Weg sicherzustellen, dass alles generiert wurde ist das vorherige Löschen des vorhandenen Profils:

- -
rm -rf profile && make profile
- -

Anschließend kannst Du beruhigt die install-gaia Option von make verwenden.

- -

FAQ

- -

Das Display bleibt Schwarz nach einem flash

- -

Das kann manchmal passieren, wenn das Gerät im Ruhemodus geflasht wird. Um das Problem zu beheben starte B2G einfach durch das folgende Kommando neu:

- -
adb shell stop b2g && adb shell start b2g
- -


-  

diff --git a/files/de/archive/b2g_os/gaia_entwickeln/customizing_build-time_apps/index.html b/files/de/archive/b2g_os/gaia_entwickeln/customizing_build-time_apps/index.html deleted file mode 100644 index 928799c864..0000000000 --- a/files/de/archive/b2g_os/gaia_entwickeln/customizing_build-time_apps/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: 'Gaia-Apps: Build anpassen' -slug: Archive/B2G_OS/Gaia_Entwickeln/Customizing_build-time_apps -tags: - - Anpassung - - Apps - - Firefox OS - - Gaia - - build -translation_of: Archive/B2G_OS/Developing_Gaia/Customizing_build-time_apps ---- -
-

Entwickler und Geräte-Hersteller wollen die App-Pakete oftmals beim Erzeuen eines Builds aus verschiedenen Gründen anpassen. Dieser Artikel erklärt die unterschiedlichen Mechanismen dafür.

-
- -

Pfade für App-Dateien in Gaia

- -

Alle Firefox OS Apps befinden sich in einem der folgenden Pfade im Gaia Verzeichnisbaum:

- - - -

Falls Du in Deinem Gaia/B2G Build Apps herauslassen oder hinzufügen möchtest, dann kannst Du das auf verschiedene Weise tun. Details dazu werden nachfolgend erläutert.

- -

Die harte Methode

- -

Bei der harten Methode werden einfach die Apps gelöscht, die man nicht in den Build mit einbeziehen will.

- -

Anpassen der Konfigurations-Dateien

- -

Die etwas elegantere Methode ist das Anpassen der apps-*.list Dateien (zu finden in den verschiedenen gerätespezifischen Verzeichnissen, die in gaia/build/config/ aufgelistet sind, z.B. phone/ und tablet/), um die für den Build gewünschten Apps zu konfigurieren. Zum Beispiel könnte die Konfigurations-Datei gaia/build/config/phone/apps-production.list wie folgt aussehen:

- -
apps/bluetooth
-apps/bookmark
-apps/browser
-apps/calendar
-apps/callscreen
-etc.
- -

Du kannst hier auch alle Apps eines Verzeichnisses einbinden, und zwar so:

- -
apps/*
- -

Welche apps-*.list Dateien wiederum für den Build verwendet werden um die verfügbaren Apps zu ermitteln ist in der Datei gaia/Makefile hinterlegt, die etwa so aussieht:

- -
GAIA_DEVICE_TYPE?=phone
-  ...
-GAIA_APP_TARGET?=engineering
-  ...
-ifeq ($(MAKECMDGOALS), demo)
-GAIA_DOMAIN=thisdomaindoesnotexist.org
-GAIA_APP_TARGET=demo
-else ifeq ($(MAKECMDGOALS), dogfood)
-DOGFOOD=1
-else ifeq ($(MAKECMDGOALS), production)
-PRODUCTION=1
-endif
-  ...
-ifeq ($(PRODUCTION), 1)
-GAIA_OPTIMIZE=1
-GAIA_APP_TARGET=production
-endif
-
-ifeq ($(DOGFOOD), 1)
-GAIA_APP_TARGET=dogfood
-endif
-  ...
-ifndef GAIA_APP_CONFIG
-GAIA_APP_CONFIG=build$(SEP)config$(SEP)apps-$(GAIA_APP_TARGET).list
-endif
- -

Standardmaßig ist die Variable GAIA_APP_TARGET auf engineering gesetzt und die Variable GAIA_DEVICE_TYPE auf phone, so dass beim Build von Gaia per Default die Datei gaia/config/phone/app-engineering.list verwendet wird (die alle Apps enthält, u.a. auch Test- und Demo-Apps).

- -

Um andere apps-*.list Dateien zu verwenden musst Du entsprechende Parameter beim Aufruf des make Kommandos mitgeben. Um z.B. den Build mit gaia/build/config/phone/apps-production.list zu starten müsstest Du das hier verwenden:

- -
PRODUCTION=1 make
- -

Wenn Du den Build mit DEMO=1 startest, dann wird die Datei apps-demo.list verwendet. Und wenn Du den Build mit DOGFOOD=1 startest, dann wird die Datei apps-dogfood.list verwendet.

- -

Du kannst dieses Verhalten komplett übersteuern, indem Du die Variable GAIA_APP_CONFIG in der Datei gaia/Makefile änderst und dort eine eigene apps-*.list Datei einträgst.

- -

gaia/Android.mk enthält diese Zeilen:

- -
ifneq ($(filter user userdebug, $(TARGET_BUILD_VARIANT)),)
-GAIA_MAKE_FLAGS += PRODUCTION=1
-B2G_SYSTEM_APPS := 1
-endif
- -

Wenn Du den Build mit VARIANT=user oder VARIANT=userdebug startest (dieses Übersteuern spiegelt sich auch in der Variable TARGET_BUILD_VARIANT wieder), dann wird PRODUCTION=1 automatisch gesetzt.

- -
-

Hinweis: Weitere Optionen für make findest Du in der make options reference.

-
- -

Verwenden eigener Distributionen

- -

Die dritte und eleganteste (allerdings auch komplexeste) Methode ist das Verwenden eigener Distributionen. Dies ermöglicht das Einbinden eigener Konfigurationen und Pakete ohne das Gaia Paket selbst zu ändern. Du kannst für Deine angepassten Konfigurationen und Pakete eigene Verzeichnisse oder die mit Gaia ausgelieferten Verzeichnisse verwenden.

- -

Du kannst Deine Distribution durch Setzen der Umgebungsvariable GAIA_DISTRIBUTION_DIR in den Build einbinden, zum Beispiel so:

- -
GAIA_DISTRIBUTION_DIR=<DISTRIBUTION_PATH> make production
- -

Mehr Informationen zum Erstellen individueller Distributionen findest Du auf https://github.com/mozilla-b2g/gaia/tree/master/customization.

- -

Dieses komplexe Thema hat eine komplett eigene Dokumentation. Mehr zum Thema erfährst Du unter Market Customizations guide.

- -
-

Hinweis: Wenn Du Apps von Drittanbietern in Deinen Gaia Build einbinden willst, dann müssen diese auf spezielle Art erzeugt werden bevor sie im Verzeichnis gaia/dev-apps/ abgelegt werden. Nähere Informationen findest Du auf Building Prebundled web apps.

-
- -
-

Wichtig: Wenn Sie als Geräte-Hersteller einen angepassten B2G/Gaia Build für Ihre Distribution verwenden möchten, dann müssen Sie bestimmte Voraussetzungen erfüllen bevor Sie Firefox OS Marketplace Apps auf Ihrem Smartphone, Tablet etc. anbieten dürfen. Bitte kontaktieren Sie in einem solchen Fall Mozilla für nähere Informationen.

-
- -

 

diff --git a/files/de/archive/b2g_os/gaia_entwickeln/durchfuehrung_der_gaia_codebase/index.html b/files/de/archive/b2g_os/gaia_entwickeln/durchfuehrung_der_gaia_codebase/index.html deleted file mode 100644 index eef4cb0c8e..0000000000 --- a/files/de/archive/b2g_os/gaia_entwickeln/durchfuehrung_der_gaia_codebase/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Durchführung der Gaia codebase -slug: Archive/B2G_OS/Gaia_Entwickeln/Durchfuehrung_der_Gaia_codebase -tags: - - B2G - - Firefox - - Firefox OS - - Firefox OS lokal ausführen - - Gaia - - beitragen - - 'l10n:priority' -translation_of: Archive/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase ---- -
-

Dieser Artikel beschreibt im Detail die lokale Durchführung der Gaia Codebase und welche Werkzeuge in diesem Setup verfügbar sind.

-
- -

Zuerst sei erwähnt, dass Du NICHT Gecko oder B2G erstellen musst, um zu Gaia beizutragen. Du musst lediglich den Gaia Quellcode herunterladen und die Möglichkeit haben, diesen auszuführen und zu editieren.
-
- Es gibt verschiedene Möglichkeiten, Gaia auszuführen:

- - - -

Du findest auf der Different ways to run Gaia Seite kurzgefasste Informationen über jede der genannten Möglichkeiten, zusammen mit Links zu detailierten Beschreibungen - je nach Bedarf. Generell sind diese nach Komplexität geordnet, absteigend von der komplexesten zur einfachsten (aber unwahrscheinlichsten) Methode.

- -

In diesem Artikel konzentrieren wir uns auf das Ausführen von Gaia innerhalb von Firefox Mulet oder in WebIDE. Für die meisten Änderungen, die Du in der Gaia Codebase machen möchtest, bietet dies den schnellsten Mechanismus, Updates zu testen aber offensichtlich gibt es einige Funktionen (z. B. das Testen von Geräte-APIs oder Interaktion mit der Smartphone Hardware ), für die ein physisches Gerät benötigt wird.

- -
-

Info: Um weitere Hilfe zu Gaia zu bekommen, der beste Platz ist der #gaia IRC Channel (siehe auch Mozilla IRC für weitere Informationen hierzu) und die dev-gaia mailing list.

-
- -

Ausführen der eigenen Gaia Version

- -
    -
  1. Erstelle zuerst eine Verzweigung von der Gaia repo on Github.
  2. -
  3. Als nächstes, klone Deine Verzweigung lokal: -
    git clone https://github.com/your-username/gaia.git
    -
  4. -
  5. Füge den Upstream wie folgt hinzu: -
    cd gaia
    -git remote add upstream https://github.com/mozilla-b2g/gaia
    -
  6. -
  7. Nun musst Du ein Gaia Profil anlegen. Führe make innerhalb Deines repo Ordners aus, um ein Profil in der profile Directory anzulegen, die für optimales Debugging konfiguriert ist. Dies erzeugt ungepackte (hosted) Versionen der Gaia Apps, welche dazu fungieren, gebündelt und direkt über den lokalen HTTPD Server -zusammen als Erweiterung für Firefox Desktop- übertragen zu werden. Wenn Du Änderungen gemacht hast, musst Du nur Dein Browser Fenster aktualisieren, um das Ergebnis zu sehen (wie Du es später sehen wirst), statt Dein Profil erneuern zu müssen, erneut auf das Gerät übertragen u.s.w..
    - Dies ist sehr gut für schnelles CSS/JS/HTML Hacking.
  8. -
  9. Mit Deinem angelegten Debug Profil, führe es in Mulet or WebIDE aus, mithilfe der Anleitungen hinter den Links.
  10. -
- -

Troubleshooting und bekannte Probleme

- -

Error: Python executable "python3" is v3.x, which is not supported by gyp.

- -

In manchen Linux Versionen (eg: Archlinux), ist python3 der Standard python. Dadurch scheitert npm beim Ausführen mancher Befehle (z B. beim Testen). Um dies permanent zu beheben, führe folgenden Befehl aus:

- -
npm config set python python2
- -

Weiter Lösungen findest Du auch auf dieser Seite: Stack Overflow page.

- -

Danach solltest Du Deine node_modules Directory löschen und den gescheiterten Befehl erneut ausführen.

- -

Please Install NodeJS -- (use aptitude on linux or homebrew on osx)

- -

Nun bekommst Du diesen Fehler obwohl Du NodeJS installiert hast. Möglicherweise benutzt Du Debian oder andere Debian-basierende Versionen wie zum Beispiel Ubuntu. Bei diesen Versionen ist NodeJS im nodejs Paket und Du kannst das nodejs-legacy Paket folgendermaßen installieren, um alles korrekt aufzusetzen:

- -
sudo aptitude install nodejs-legacy
- -

Solltest Du bei der Installation des Paketes Probleme haben, benutzt Du eventuell Chris Lea's PPA for Node; bitte entferne diese bevor Du weitermachst.

diff --git a/files/de/archive/b2g_os/gaia_entwickeln/index.html b/files/de/archive/b2g_os/gaia_entwickeln/index.html deleted file mode 100644 index d6f1d582d6..0000000000 --- a/files/de/archive/b2g_os/gaia_entwickeln/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Gaia entwickeln -slug: Archive/B2G_OS/Gaia_Entwickeln -tags: - - B2G - - Bugs - - Firefox OS - - Gaia - - Mozilla - - beitragen -translation_of: Archive/B2G_OS/Developing_Gaia ---- -
-

Gaia ist das User Interface von Firefox OS, sowie eine Suite für die Standard-Apps. Gaia beinhaltet den Sperr- und Startbildschirm, die Telefonie-App und weitere Apps. Im Grunde ist Gaia eine Menge an Web-Apps, welche auf Firefox OS laufen. Diese Artikel behandelt alles, was zur Mitentwicklung an Gaia wissenswert ist.

-
- -

In diesem Guide zeigen wir dir einen produktiven Workflow, um an Gaia mitzuarbeiten - und damit meinen wir, neue Features zu Gaia hinzuzufügen und an Bugs im Gaia Projekt zu arbeiten. Die ersten paar Artikel können in gegebener Reihenfolge durchgearbeitet werden oder du überspringst sie und gehst direkt zum relevanten Abschnitt, wenn du dein Wissen über ein bestimmtes Thema auffrischen möchtest.

- -

Danach stellen wir Referenzmaterialien und Informationen zu weiteren Themen zur Verfügung.

- -

- -

Die Grundlagen

- -
    -
  1. Die Gaia Codebase zum Laufen bringen
  2. -
  3. Die Gaia Codebase verstehen
  4. -
  5. Änderungen am Gaia Code machen
  6. -
  7. Änderungen am Gaia Code testen
  8. -
  9. Einen Gaia Patch einreichen
  10. -
- -

Gaia Build Referenzen

- - - -

Siehe auch

- - diff --git a/files/de/archive/b2g_os/gaia_entwickeln/making_gaia_code_changes/index.html b/files/de/archive/b2g_os/gaia_entwickeln/making_gaia_code_changes/index.html deleted file mode 100644 index 18a2a01cf5..0000000000 --- a/files/de/archive/b2g_os/gaia_entwickeln/making_gaia_code_changes/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Gaia Coding ändern -slug: Archive/B2G_OS/Gaia_Entwickeln/Making_Gaia_code_changes -tags: - - Anleitung - - Code - - Firefox OS - - Gaia - - Änderungen -translation_of: Archive/B2G_OS/Developing_Gaia/Making_Gaia_code_changes ---- -
-

Jetzt, wo Gaia auf Deinem Desktop läuft und Du zu einem gewissen Grad die Arbeitweise der Codebase verstehst, solltest Du in der Lage sein Änderungen am Gaia Code durchzuführen. Dieser Artikel beschreibt, wie Änderungen durchgeführt werden und wie man Fehler findet um sie zu beheben.

-
- -

Git Best Practices

- -
    -
  1. Vor dem Ändern von Gaia solltest Du zuerst den master Zweig (branch) aktualisieren: -
    cd path/to/gaia
    -git checkout master
    -git pull upstream master
    -
  2. -
  3. Als nächstes  brauchst Du einen eigenen Zweig für Deine Änderungen: -
    git checkout -b my-code-fix
    -
  4. -
  5. Anschließend gehst Du ins Verzeichnis gaia/apps und führst Deine Änderungen an den App-Dateien durch.
  6. -
- -

Beispiel einer einfachen Code-Änderung

- -

Um Code-Änderungen anzuzeigen:

- -
    -
  1. Führe die gewünschten  Änderungen an der Gaia Codebase durch und speichere die Änderungen.
  2. -
  3. Beende Firefox Mulet oder den WebIDE Simulator.
  4. -
  5. Erneuere Dein Gaia Profil mit make.
  6. -
  7. Starte Firefox Mulet oder den WebIDE Simulator erneut.
  8. -
- -

Lass uns etwas Einfaches ändern wie die Textfarbe der Uhr auf dem Sperrbildschirm:

- -

Gaia lockscreen showing the clock display in white text

- -
    -
  1. Der beste Weg um herauszufinden wo dieser Stil geändert wird ist über die Entwickler-Werkzeuge. Verwende hier Strg/rechte Maustaste + Klick auf die Uhr im Firefox Desktop und wähle im Kontext-Menü Element untersuchen.
  2. -
  3. Nun kannst Du die zu ändernde CSS Datei suchen — in diesem Fall  gaia/apps/system/lockscreen/style/lockscreen.css — und die Änderungen an den CSS Styles auf der rechten Seite des Displays nach Deinen Vorstellungen vornehmen.
  4. -
  5. Wenn Du mit Deinen Änderungen zufrieden bist, dann öffne die Datei und mache dort Deine Änderungen direkt.
  6. -
  7. Als nächstes führst Du die oben aufgeführten Schritte durch, um Dir Deine Änderungen anzusehen.
  8. -
- -

Gaia lockscreen showing the clock display modified from white to red text
-
-
- Einschränkungen im Gaia Firefox Mulet Rendering:

- - - -

Wo man zu bearbeitende Fehler findet

- -

Am besten nutzt Du Josh Matthews' Bugs Ahoy app um Fehler zu finden, die Du bearbeiten kannst — diese Seite liest die vorhandenen Bugs direkt aus Mozilla's Bugzilla und stellt sie im Browser inklusive Suchfunktion dar. Wenn Du einen Fehler gefunden hast den Du bearbeiten willst, dann gehe zu dessen Bugzilla-Seite, trage Dich als Bearbeiter im Feld "assigned to" ein und beginne mit der Arbeit wie oben beschrieben.

- -

Nützliche Tipps

- - - -

https://bugzilla.mozilla.org/buglist.cgi?columnlist=product%2Ccf_blocking_b2g%2Cbug_status%2Cresolution%2Cshort_desc&resolution=---&query_based_on=CLOCK&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Gaia%3A%3AClock&product=Boot2Gecko&known_name=CLOCK&list_id=9776392

- -

Siehe auch

- - diff --git a/files/de/archive/b2g_os/index.html b/files/de/archive/b2g_os/index.html deleted file mode 100644 index 4447e3c024..0000000000 --- a/files/de/archive/b2g_os/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: B2GOS -slug: Archive/B2G_OS -tags: - - Anfangen - - Anfänger - - B2G OS - - Basic - - Firefox OS - - Gaia - - Gecko - - Gonk - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS ---- -
-

B2G OS ist ein vollständiges, selbstständig arbeitendes Betriebssystem für das offene Web. Es ist ein von der Mozilla-Community entwickeltes Open-Source-Projekt und bildet die Grundlage der Firefox OS-Produkte.

-
- -

B2G OS ist ein von der Community gepflegtes Open-Source-Betriebssystem für Smartphones, Tablets, Smart TVs und andere internetfähige Geräte. Das Projekt startete ursprünglich 2011 und basiert auf dem Linux-Kernel und der Rendering-Engine Gecko. Die komplette Nutzeroberfläche ist mit Web-Technologien geschrieben und kann zum Starten und Benutzen von Web-Anwendungen benutzt werden. Nachdem die Mozilla Corporation ihr kommerzielles Firefox OS Smartphone-Programm eingestellt hat, wird das Projekt für Smartphones von Mozillas Community weiterentwickelt und als B2G OS geführt.

- -

- -
-

Hinweis: Aufruf zur Mitarbeit & Aufruf zur Appanpassung um mehr Personen zu beteiligen. Hilf uns und teile ihn!

-
- -
-
-

Mithelfen

- -
    -
  • Melde & behebe Fehler (Meta-Bug ist Bug 1252143)
  • -
  • Hilf uns, fehlschlagende Tests zu reparieren
  • -
  • Portiere eine Gaia Smartphone-App: -
      -
    1. in eine Web-App (oder)
    2. -
    3. in eine chrome://-Anwendung (warum?) und berichte darüber
    4. -
    -
  • -
  • Portiere B2G OS für dein Smartphone und hilf uns, den Port zu pflegen
  • -
  • Hilf uns, diese Dokumentation und das Wiki zu verbessern und zu übersetzen
  • -
  • Schlage neue Smartphone-Funktionen vor und implementiere sie
  • -
-
- -
-

Mitreden

- - -
- -
-

Geräte

- -

Informationen zu unterstützten Geräten, auf denen B2G OS laufen kann:

- - - -

Mehr Informationen finden sich hier.

- -

Dein Gerät ist nicht dabei? Probier die Mulet-Desktopanwendung aus.

-
-
- -
-

Hinweis: Einige Seiten wurden in das MDN-Archiv verschoben. Lass es uns wissen, wenn du Schwierigkeiten hast, etwas zu finden oder ein Abschnitt aus dem Archiv hierher zurückgeholt werden sollte.

-
- -

 

- - - -
    -
  1. B2G OS Architecture - -
      -
    1. B2G OS Architecture
    2. -
    3. B2G OS APIs
    4. -
    -
  2. -
  3. Gaia -
      -
    1. Gaia overview
    2. -
    3. Different ways to run Gaia
    4. -
    5. Running the Gaia codebase
    6. -
    7. Developing Gaia -
        -
      1. Understanding the Gaia codebase
      2. -
      3. Making Gaia code changes
      4. -
      5. Testing Gaia code changes
      6. -
      7. Submitting a Gaia patch
      8. -
      9. Gaia build system primer
      10. -
      11. Make options reference
      12. -
      13. Gaia tools reference
      14. -
      -
    8. -
    -
  4. -
  5. Build B2G OS -
      -
    1. Build overview
    2. -
    3. B2G OS build process summary
    4. -
    5. Build prerequisites
    6. -
    7. Preparing for your first build
    8. -
    9. Building B2G OS -
        -
      1. Building B2G OS
      2. -
      3. Building B2G OS for Flame on Mac OS X
      4. -
      5. Building for Fairphone
      6. -
      7. B2G build variables reference sheet
      8. -
      -
    10. -
    -
  6. -
  7. Run B2G OS on Desktop -
      -
    1. Choosing how to run Gaia or B2G OS
    2. -
    3. Run B2G OS on desktop using Mulet
    4. -
    -
  8. -
  9. Install B2G OS on mobile -
      -
    1. Installing B2G OS on a mobile device
    2. -
    3. B2G installer add-on
    4. -
    -
  10. -
  11. Compatible Devices
  12. -
  13. Create updates for B2G OS -
      -
    1. Creating and applying B2G OS update packages
    2. -
    3. Building and installing FOTA community build
    4. -
    -
  14. -
  15. Porting B2G OS -
      -
    1. Porting overview
    2. -
    3. Porting basics
    4. -
    5. Porting on CyanogenMod
    6. -
    -
  16. -
diff --git a/files/de/archive/b2g_os/installing_on_a_mobile_device/index.html b/files/de/archive/b2g_os/installing_on_a_mobile_device/index.html deleted file mode 100644 index 96a469353c..0000000000 --- a/files/de/archive/b2g_os/installing_on_a_mobile_device/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Installing Firefox OS on a mobile device -slug: Archive/B2G_OS/Installing_on_a_mobile_device -translation_of: Archive/B2G_OS/Installing_on_a_mobile_device ---- -
-

Once you've built Boot to Gecko for a supported mobile device, you can install it. This article will guide you through the process.

-
-
- Note: The first time you flash your phone, it must have Android 4 (Ice Cream Sandwich) installed. The process will not work correctly otherwise. Once you've done your first install of B2G, however, you can simply update on top of it.
-

Installing ADB

-

On OSX

-

If you have homebrew on OSX:

-
brew install android-platform-tools
-

Otherwise, download the Android Developer Tools and add the binaries to your PATH.

-

On Ubuntu

-
sudo apt-get install android-tools-adb
-

Flashing your phone

-

To flash everything to your phone, simply connect your phone and type:

-
./flash.sh
-
-

That's it. The B2G you've currently got built will flash onto your device.

-

Note that If you are updating across revisions with significant Gaia changes, you might need also do:

-
cd gaia
-make reset-gaia
-

This will wipe all of your data stored in Gaia, but also clear out obsolete Gaia settings and prefs so that you'll boot into a "clean" Gaia. In theory ./flash.sh should do this already, but for some devices (e.g. hamachi) ./flash.sh only flashes a subset of modules (./flash.sh -f will force flash everything.)

-

Configuring the udev rule for your device

-

On Linux, if you get this,

-
< waiting for device >
-

that probably means that you haven't added a udev rule for the fastboot device, which is not the same as the one for adb. (Though it also might just mean you need to run ./flash.sh with sudo) You can get the USB vendor ID by running lsusb now, but typically it's Google's: 18d1, so adding this line in your /etc/udev/rules.d/51-android.rules would work:

-
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
-
- Note: If you get a very helpful libusb error "-3" on Linux, it means you need to be root to have the needed access to the USB device. Run the script again using sudo.
-
- Note 2: If you have an Unagi or a Geeksphone Keon phone, you need two lines like this - one for the original phone vendor's ID, and one for Google's.
-

Special notes for Hamachi, Helix, and Leo devices

-

If your phone is a hamachi, helix or leo device, the ./flash.sh script will now default to flashing only gecko and gaia.  It is recommended that you flash with the OEM as a base build to get the firmware and the gonk layers and then flash the gecko and gaia on top.  If you want to flash using the images, there is an override flash where you can ./flash.sh -f and it will use the image files to flash your device.

-

Special notes for the Samsung Galaxy S2

-

If your phone is a Galaxy S2 and you are using heimdall 1.3.2 (the latest version; use heimdall version to check), you may see an alarming error "FACTORYFS upload failed!" followed by "Heimdall flashing failed" and some additional information. This is actually a success condition, and you can ignore the advice.

-

To get rid of this strange behavior, grab a source copy of heimdall, downgrading to the 1.3.1 release ("git checkout fbbed42c1e5719cc7a4dceeba098981f19f37c06"), then compile it  according to the README, then install that to make the error go away. However, this isn't strictly necessary.

-

All versions of heimdall are unable to flash a system.img larger than 100MB. Do:

-
ls -l ./out/target/product/galaxys2/system.img
-
-

to see how big yours is. If it's too large, ask in IRC for advice; there are ways to do it in two stages.

-

Added step for the Samsung Galaxy S2

-

If you're flashing onto the Galaxy S2, there is an additional step to follow. Gaia does not get flashed automatically by the flash.sh script; you'll need to also do:

-
./flash.sh gaia
-
-

Flashing specific partitions to fastboot phones

-

You can flash specific partitions to fastboot phones (that is, any phone other than the Samsung Galaxy S2). For example:

-
./flash.sh system
-./flash.sh boot
-./flash.sh user
-
-

WARNING: flashing user (at least) may delete your user-specific data (contacts, etc.).

-

Updating specific modules

-

You can update specific components of B2G by specifying their names when flashing. For example:

-
./flash.sh gaia
-./flash.sh gecko
-
-

In order to update only one application you can use BUILD_APP_NAME environment variable:

-
BUILD_APP_NAME=calendar ./flash.sh gaia
-

If your phone is not for developer (you aren't interested on test apps and/or require optimization), you can update gaia using:

-
VARIANT=user ./flash.sh gaia
-

Next steps

-

At this point, your phone should be running Boot to Gecko! It's time to experiment, write some code, test, or do some debugging!

-
- Note: A helpful usage tip: if your build of B2G starts up with the lock screen requesting a pass code to unlock the phone, the default code is 0000.
-

Troubleshooting

-

Here are a some tips for what to do if your device doesn't work right after installing B2G, or updating it to a new version

-

If the UI doesn't start up

-

If you update your phone and the user interface doesn't start up, you can reset it to clear out out-of-date configuration and the like. This may bring it back to life, but note that it may also delete your user-specific data (contacts, etc.). Here's how:

-
cd gaia
-make reset-gaia
-
-

If you want change from developer to production mode

-
cd gaia
-make reset-gaia PRODUCTION=1
-

WARNING: reset-gaia may delete your user-specific data (contacts, etc.).

-

"image is too large" error message on ./flash.sh execution

-

It might mean that you phone needs to be rooted first before flashing it. As b2g needs to be written on root partition, your phone needs to be rooted in order to install it.

diff --git a/files/de/archive/b2g_os/introduction/index.html b/files/de/archive/b2g_os/introduction/index.html deleted file mode 100644 index 606b63f0e7..0000000000 --- a/files/de/archive/b2g_os/introduction/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Einführung in Firefox OS -slug: Archive/B2G_OS/Introduction -translation_of: Archive/B2G_OS/Introduction ---- -

Firefox OS (auch unter seinem Codenamen "Boot to Gecko" oder "B2G" bekannt) ist Mozillas Open Source Betriebssystem für mobile Endgeräte, das auf Linux und Mozillas Gecko-Technologie basiert. Firefox OS ist ein mobiles Betriebssystem, das ohne proprietäre Technologie auskommt und dennoch Anwendungsentwicklern eine leistungsstarke Plattform bietet, um hervorragende Produkte zu erstellen. Darüber hinaus ist es flexibel und leistungsfähig genug, um auch den Endprodukt-Nutzer glücklich zu machen.

-

Für Web-Entwickler ist es am Wichtigsten zu verstehen, dass die gesamte Benutzeroberfläche eine Web-Anwendung ist, von der aus sich andere Web-Anwendungen anzeigen und ausführen lassen. Jede deiner Veränderungen an der Benutzeroberfläche und jegliche Anwendung, die du für den Betrieb unter Firefox OS erstellst, sind Webseiten. Allerdings: Mit erweitertem Zugriff auf Hardware und Dienste des mobilen Endgeräts.

-

Wie man Firefox OS installiert, kannst du unserer Handy-Anleitung entnehmen.

-

Hardware-Voraussetzungen

-

Die Portierung von Firefox OS sollte für die meisten aktuellen Mobilgeräte mit ARM-Chips gelingen. Der vorliegende Abschnitt beschreibt die grundlegenden Hardware-Anforderungen sowie empfohlene Eigenschaften der Hardware.

-

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KomponenteMinimumEmpfohlen
CPUARMv6Cortex A5 class oder besser
- ARMv7a mit NEON
GPUAdreno 200 class oder besser
VerbindungenWiFi
- 3G
SensorenAccelerometer
- Proximity
- Ambient light
- A-GPS
-

Es wird außerdem empfohlen, dass die Geräte ein einheitliches Farbprofil anbieten sollen (was über den Treiber der Grafikeinheit zu implementieren wäre). Ebenso sollen sie das Stummstellen und die Wiedergabe-Funktion via Kopfhörer-Fernbedienung unterstützen. Beides sind gängige Fähigkeiten moderner Smartphones.

-

Hinweise zur Benutzung

-

Dieser Abschnitt bietet dir einige Hinweise zur Verwendung von Firfox OS. Dabei handelt es sich um eine Art Platzhalter, bis wir eine echte Benutzer-Dokumentation zur Verfügung haben.

-

Entsperren des Telefons

-

Falls dein aus dem Quellcode erstelltes Firefox OS mit der Frage nach einem Entsperr-Code hochfährt, so lautet dieser standardmäßig 0000. Das liegt daran, dass wir bei diesen Code-Versionen mit der Entwicklung und dem Testen des Sperr-Bildschirms (Lock-Screen) beschäftigt sind.

-

Erstellen eines Screenshots

-

Ein Screenshot lässt sich ganz einfach durch gleichzeitiges Drücken von Power- und Home-Taste erzeugen. Das entsprechende Bild wird unter /sdcard/screenshots auf deinem Gerät abgelegt. Du kannst darauf auch mit Hilfe der Galerie-App deines Telefons zugreifen.

-

Sollte das aus irgendeinem Grund nicht funktionieren, kannst du auch jederzeit über ein Terminal des Linux- oder MacOSX-Computers, auf dem ein Firefox OS installiert ist, darauf zugreifen.

-
    -
  1. Stell sicher, dass bei dir ffmpeg installiert ist. -
      -
    1. Wenn Du MacPorts verwendest, kannst du das auf dem Mac mit sudo port install ffmpeg nachholen. Mit homebrew verwende brew install ffmpeg.
    2. -
    3. Unter Linux (Ubuntu/Debian) verwende sudo apt-get install ffmpeg.
    4. -
    -
  2. -
  3. Schließe dein Telefon mit einem USB-Kabel an deinen Rechner an.
  4. -
  5. Erzeuge auf deinem Telefon die Situation, von der Du einen Screenshot willst.
  6. -
  7. Wechsle mit cd ins B2G/gaia Verzeichnis.
  8. -
  9. make screenshot
  10. -
  11. Du hast einen Screenshot namens screenshot.png erstellt.
  12. -
-

Tasten und Bedienelemente

-

Ein typisches Firefox OS-Gerät verfügt hardwareseitig nur über eine geringe Zahl physischer Bedienelemente:

-
-
- Home-Taste
-
- Diese Taste befindet sich im Allgemeinen mittig unterhalb des Bildschirms. Bei Tastendruck wird man zum App-Launcher zurückgeführt. Bei Halten der Taste wird die Ansicht zum Umschalten der Karten geöffnet: Hochwischen auf einer App entfernt diese.
-
- Lautstärken-Wippe
-
- Entlang der linken Seite befindet sich die Lautstärken-Wippe. Druck auf die obere Hälfte erhöht die Lautstärke, Druck auf die untere senkt sie.
-
- Power-Taste
-
- Die Power-Taste befindet sich an der oberen rechten Ecke des Geräts.
-
diff --git a/files/de/archive/b2g_os/phone_guide/alcatel_one_touch_fire/index.html b/files/de/archive/b2g_os/phone_guide/alcatel_one_touch_fire/index.html deleted file mode 100644 index 4ba54a945b..0000000000 --- a/files/de/archive/b2g_os/phone_guide/alcatel_one_touch_fire/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Alcatel One Touch Fire -slug: Archive/B2G_OS/Phone_guide/Alcatel_One_Touch_Fire -tags: - - Alcatel One Touch Fire - - Firefox OS -translation_of: Archive/B2G_OS/Phone_guide/Alcatel_One_Touch_Fire ---- -
-
- -
-

Das Alcatel One Touch Fire Smartphone mit Firefox OS verfügt über einen 1 GHz Prozessor und einer rückseitigen 3.2 Megapixel Kamera. Es wird von einer großen Vielzahl von Mobilfunkanbietern in verschiedenen Teilen der Welt angeboten.

- -

Besorge dir ein Gerät

- -

Das Alcatel One Touch Fire ist im allgemeinen Handel erhältlich.

- -

Verfügbare Länder

- -
-
-
    -
  • Brasilien
  • -
  • Chile
  • -
  • Kolumbien
  • -
  • Deutschland
  • -
  • Griechenland
  • -
  • Ungarn
  • -
  • Italien
  • -
-
- -
-
    -
  • Mexico
  • -
  • Montenegro
  • -
  • Peru
  • -
  • Polen
  • -
  • Serbien
  • -
  • Venezuela
  • -
-
-
- -

Mobilfunkanbieter

- -
-
-
    -
  • Congstar
  • -
  • Cosmote
  • -
  • Movistar
  • -
  • T-Mobile
  • -
-
- -
-
    -
  • Telcel
  • -
  • Telenor
  • -
  • TIM
  • -
  • Vivo
  • -
-
-
-
-
- -

Software - Updates & Upgrades

- -

Das Systemabbild des Gerätes ist durch den Mobilfunkanbieter gesperrt. Aus diesem Grund kann ein Update der Software nur durchgeführt werden wenn der Netzbetreiber ein OTA Update veröffentlicht.

- -

Geräteeigenschaften

- -

Mehr Geräteeigenschaften sind auf der Alcatel Website unter dem Reiter "Specification" aufgelistet.

- - - -

Verfügbare Farben

- - - -

Weitere Informationen

- - diff --git a/files/de/archive/b2g_os/phone_guide/flame/index.html b/files/de/archive/b2g_os/phone_guide/flame/index.html deleted file mode 100644 index b8e75bb09a..0000000000 --- a/files/de/archive/b2g_os/phone_guide/flame/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Flame -slug: Archive/B2G_OS/Phone_guide/Flame -translation_of: Archive/B2G_OS/Phone_guide/Flame ---- -
-

A picture of the Flame device, showing the Firefox OS homescreen containing several app icons.Coming soon

-

The Flame developer reference phone is a milestone in Firefox OS device releases. The Flame hardware offers a representative set of specs — including FWVGA display and dual-core processor (see Phone and device specs for full specs) — to help developers build great content and experiences. A single hardware platform is also good for testers, making it easier to test and address specific software issues without having to worry about device model-specific bugs, etc.

-
-

If you have your phone in hand and want to start playing with it, developing and distributing apps, or contributing to the Firefox platform, the following links will get you where you need to go:

- -

If you’d like to purchase a phone or find out more about using it, you’ll find the information you need below.

-

Purchasing a device

-

Our device manufacturer partner is making the device available for purchase in the latter part of Q2, 2014, retailing at approximately US$170, global shipping included. Available for pre-order soon!

-

Emergency download mode

-

When flashing a new build to your phone fails to work, your phone becomes unresponsive, and the phone cannot enter fastboot mode, you can use emergency download mode for recovery.

-

A USB cable and the Emergency Download Tool are required to enter emergency download mode. (Tool download coming soon.)

-

Recovery mode

-

You can enter recovery mode to clear your phone data or manually update the firmware. There are two ways to enter this mode:

- -

When in recovery mode, press the Volume up/down keys to move the selection highlight, and the Power key to select. Make sure you have your phone data (Contacts, SMS, etc.) backed up before clearing data, and your upgrade packages downloaded before updating.

-

RAM adjustment

-

You can adjust the available RAM capacity to see how apps perform on Firefox OS phones with lower memory footprints.

-

This is accomplished by entering fastboot mode (install fastboot first, which is available in the same SDK page as ADB) and typing:

-
fastboot oem mem [0|256-1024]
-

“0” is the memory automatically detected and “256-1024” is the number of megabytes. For example, if you want to adjust device RAM capacity to 512M, enter fastboot oem mem 512.

-

You'll need to then reboot your device for the settings to take effect. This can be done using:

-
fastboot reboot
-

The current memory size can be returned by entering fastboot mode and typing:

-
fastboot getvar mem
-
diff --git a/files/de/archive/b2g_os/phone_guide/geeksphone/index.html b/files/de/archive/b2g_os/phone_guide/geeksphone/index.html deleted file mode 100644 index b9bc2572df..0000000000 --- a/files/de/archive/b2g_os/phone_guide/geeksphone/index.html +++ /dev/null @@ -1,202 +0,0 @@ ---- -title: Geeksphone -slug: Archive/B2G_OS/Phone_guide/Geeksphone -translation_of: Archive/B2G_OS/Phone_guide/Geeksphone ---- -
-

Developer Preview editions of the Firefox OS phone are now becoming widely available to the community, mainly through Geeksphone. Since these are for developers, naturally we want to encourage you to tinker and play with them as much as possible! In this article we cover some basic tips on how to keep your phone up to date and how to tweak the system Gaia applications.

-
- -
-

Bitte beachten: Diese Anleitungen sind für die älteren Modelle Keon und Peak gedacht und nicht für das aktuellste Geeksphone Revolution.

-
- -

Geeksphone auf das letzte Abbild upgraden

- -

Firefox OS Updates können über die Settings App heruntergeladen werden. Die Funktionalität befindet sich unter Device Informationen. Das Smartphone kann so eingestellt werden, dass es auf neue Updates täglich, wöchentlich oder monatlich prüft. Zusätzlich besteht die Möglichkeit über den "check now" Button eine Aktualisierung durchzuführen. Sobald ein neues Update verfügbar ist wird dies angezeigt und der Download und die Installation der aktuellen Version kann beginnen.

- -

The screen for checking updates on the Firefox OS settings app

- -

Das Telefon flashen

- -

Das Team von Geeksphone stellt die "latest stable" und die "nightly builds" als eigenständige Downloads zum selbstständigen flashen zur Verfügung.

- -

Telefon und Computer vorbereiten

- -

Bevor man mit dem flashen des Smartphone beginnen sollte, sollte man die Anleitung im Abschnitt  “Setting Up the Geeksphone Device” in Pushing Firefox OS Apps to the Geeksphone beachten und die dort beschriebenen Voraussetzungen schaffen. Diese stellt sicher, dass man Daten an das Telefon übertragen kann. Ebenfalls sollte man, die im gleichen Abschnitt beschriebene  Anleitung zur Installation der korrekten USB-Treiber beachten.

- -
-

Bitte beachten: Es ist besonders wichtig, dass auf Windows Computer die korrekten Treiber installiert sind.

-
- -

Die aktuellen Build befinden sich auf der Geeksphone Download-Seite. Auf dieser Seite erhält man nun die Option das korrekte Gerät und den gewünschten Build auszuwählen.

- -

Two phone images side by side, the Geeksphone Keon and Peak, with different software download options below each one.

- -

Lade nun den zu deinem Gerät passenden Build herunten und entpacke die Archive-Datei auf deine Festplatte. Das Archive beinhaltet das Abbild und die benötigten Befehle um das Gerät zu aktualisieren. Dabei stehen Befehle für Windows, Mac OS oder Linux zur Verfügung. Um das Gerät nun zu aktualisieren muss "Remote debugging" unter Einstellungen aktiviert sein.

- -

Settings -> Device information -> More information -> Developer tab.

- -
-

Bitte beachten: Stelle sicher dass dein Handy eine Akkuladung von mit 50% aufweist. Um die System-Dateien zu verändern Bedarf es mehrere Restarts, welche im Falle von fehlender Akkuleistung zu einer Beschädigung führen kann.

-
- -

Enabling remote debugging on the Firefox OS Settings app

- -
-

Bitte beachten: Sollte dein Gerät, obwohl es angesteckt ist, von den mitgelieferten Skripten in den ersten Schritten nicht erkannt werden, musst ggf. das Handy entsperren und warten bis das USB-Zeichen im System-Tray auftaucht.

-
- -
-

Bitte beachten: Das Flashen des Smartphone wird all deine Daten vom Telefon entfernen. Wenn du deine Daten zuvor sichern möchtest, solltest du die folgende Anleitung befolgen: Back up the phone system partition.

-
- -

Windows

- -
-

Bitte Beachten: Es müssten möglicherweise USB-Treiber für Windows installiert werden. Eine Anleitung befindet sich in der folgenden Anleitung “Setting Up the Geeksphone Device” in Pushing Firefox OS Apps to the Geeksphone.

-
- -

Öffne zuerst eine Konsole (Start > Tippe cmd in der Suchfeld > Enter drücken, Unter Windows 7, Windows Taste + X > Wähle Command Prompt unter Windows 8) und wechsel in das Verzeichnis wo sich die entpackten Daten befinden. Führe den folgenden Befehlt aus:

- -
flash.bat
-
- -

Dieser Befehl sollte nun das neue Abbild auf das Telefon flashen. Das Telefon muss nun nochmals erneut aufgesetzt werden, da ja wie zuvor beschrieben alle Daten gelöscht wurden.

- -

Mac OS

- -

Öffnen eines Terminals(Cmd + space -> type terminal -> enter) Fensters und wechsle mit cd in das Verzeichnis wo sich die entpackten Daten befinden. Führe den folgenden Befehlt aus:

- -
./flash_mac.sh
-
- -

Dieser Befehl sollte nun das neue Abbild auf das Telefon flashen. Das Telefon muss nun nochmals erneut aufgesetzt werden, da ja wie zuvor beschrieben alle Daten gelöscht wurden.

- -

Linux

- -

Um ein Keon unter Ubuntu zu fläschen müssten die folgenden Regeln in  /etc/udev/rules.d/51-android.rules hinzugefügt werden:

- -
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", ATTR{idProduct}=="8013", MODE="0666"
- -
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d00d", MODE="0666"
- -
 
- -

Öffne nun ein Terminal (control-alt-t unter Ubuntu) Fehnster und welche in das Verzeichnis wo sich die entapckten Daten befinden. Führe den folgenden Befehl aus:

- -
./flash.sh
-
- -

Dieser Befehl sollte nun das neue Abbild auf das Telefon flashen. Das Telefon muss nun nochmals erneut aufgesetzt werden, da ja wie zuvor beschrieben alle Daten gelöscht wurden.

- -
-

Ein anderer Weg das Keon unter Ubuntu zu aktualisieren ist der folgende:-

-
- -

Schritt 1: Das Gerät verbinden

- -

Schritt 2: Ein Terminal öffnen

- -

Schritt 3: Den Befehl  sudo nautilus eintippen und das Root-Passwort eingeben um den Root-Ordner zu öffnen

- -
sudo nautilus
- -
sudo nautilus "root password"
- -

Schritt 4: Kopiere den Download des Firefox O.S Geeks Phone Builds in das Root-Verzeichnis

- -

Schritt 5: Klicke auf die Datei mit dem Namen "flash.sh"

- -
./flash.sh
- -

 

- -

If you have an 'unagi' or developer preview phone that is not a Geeksphone

- -

If you have a developer phone that is not a Geeksphone such as an 'unagi' or a previously Android-based device, you may need to perform the following steps. If this is not you, please skip to the next section.

- -

You will need to install adb and fastboot. These utilities can be found in the Android Developer Toolkit.

- -

It is not necessary to install the entire toolkit. Download the toolkit from here and extract the contents. adb and fastboot are found in the /platform-tools/ folder. They can be copied to the /usr/bin of your Linux or Mac OS machine, or copied to another folder as long as that folder is added to your $PATH.

- -

If you are attempting to flash your device and have another device plugged in via USB, your phone may not be detected by these utilities correctly. Only have your phone plugged in while trying to flash it.

- -

Tweaking Gaia

- -

If you are the industrious sort, you may want to tweak the default applications in Gaia — the UI in Firefox OS. In this section we will cover some of the basics for cloning Gaia and making changes to the default system apps. Bear in mind these tips are “at your own risk” and may involve you later referring to the section “Ok, I bricked my phone”. Before proceeding make sure that you have adb and fastboot installed on your system. To verify if these are installed open a terminal and type adb devices with your phone connected. You should see your phone listed under the attached devices.

- -

You should also be able to run fastboot from the terminal. If you run fastboot, a set of parameter options should be displayed. If you do not have adb or fastboot installed, a quick Google search with your operating system will return several quick starts on how to install them. In addition to adb and fastboot you will need Git. If you do not currently have Git installed, have a look at this setup guide. Finally make sure your phone is set up for remote debugging as described in the previous section.

- -

Once you have the prerequisites you can open a terminal and cd to the directory you would like to clone the Gaia source code to. Type the following commands:

- -
git clone git://github.com/mozilla-b2g/gaia.git gaia
-cd gaia
-
- -

This will clone the current Gaia code to your system.

- -
-

If you plan on submitting changes back to the Gaia source, be sure to fork the source before cloning as described in Hacking Gaia.

-
- -

Currently the Geeksphone Keon uses the v1.0.1 branch of Gaia code, so set the proper branch using the following command before you do anything else:

- -
git checkout -b v1.0.1 origin/v1.0.1
-
- -

Most of the system apps are located in the apps subdirectory of gaia. You can now make any changes to these Firefox OS apps you wish. Once you have made changes, make sure your device is mounted properly by first running:

- -
adb remount
- -

Next, run the following command to push the modified apps to your phone. This will by default push all the system apps to the phone:

- -
B2G_SYSTEM_APPS=1 make install-gaia
-
- -

If you only changed one of the apps you can specify the particular app using similar syntax. In this example only the calendar app will be pushed to the phone:

- -
APP=calendar B2G_SYSTEM_APPS=1 make install-gaia
-
- -

If you have issues while making the changes, you can reset the phone to default values using either of the following commands:

- -
make production
-make reset-gaia
-
- -
-

Note: Bear in mind that either of the above commands will clear any data or apps that you have pushed to the phone. If you want to back up your data and restore afterwards, you can follow the instructions at Back up the phone system partition.

-
- -

"Ok, I bricked my phone"

- -

If you are in the process of modifying your phone and it becomes “unresponsive” you should be able to recover it using fastboot with a simple procedure. The following illustrates resetting the Keon but other phones should have a similar process. You will also need to verify that you have fastboot and ADB installed (try typing fastboot and adb in the command line if you are not sure).

- -
    -
  1. Remove the USB cable and then remove the battery from the phone for 30 seconds.
  2. -
  3. Reinsert the battery and hold down the volume up and power buttons at the same time, for a few seconds, until the system recovery menu appears.
  4. -
  5. Reconnect the USB cable
  6. -
  7. Type in the command run adb reboot bootloader.
  8. -
  9. When the phone reboots and starts to show the Geeskphone logo, you are now in fastboot mode; run the following commands from a terminal window in the directory that contains the latest img files described in the first section of this post:
  10. -
- -
fastboot flash recovery recovery.img
-fastboot flash boot boot.img
-fastboot flash userdata userdata.img
-fastboot flash system system.img
-fastboot reboot
-
- -

This process should recover your phone. If it doesn't seem to work, you may have to try it a second time.

- -

Go play!

- -

We hope these instructions are useful to you, and naturally we want you to be as happy about Firefox OS and the possibilities as we are! Feel free to play around with updating your devices, make changes/updates to Gaia apps, and also be inspired to build you own open web apps.

- -

See also

- - diff --git a/files/de/archive/b2g_os/phone_guide/index.html b/files/de/archive/b2g_os/phone_guide/index.html deleted file mode 100644 index 472fcd195f..0000000000 --- a/files/de/archive/b2g_os/phone_guide/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Firefox OS developer phone guide -slug: Archive/B2G_OS/Phone_guide -tags: - - B2G - - Firefox OS - - NeedsTranslation - - Phones - - TopicStub -translation_of: Archive/B2G_OS/Phone_guide ---- -
-

This section contains developer information relevant to specific phones that run Firefox OS. We have general information available on Building and installing Firefox OS and Hacking Firefox OS, so please go there for information about building and installing the platform from scratch. Developers with specific phones in their possession may however find the following articles useful.

-
-

Specific device information

-
-
- Firefox OS phone data
-
- In this article we list the various available Firefox OS phones along with information such as their code names, availability, and specific hardware features.
-
- Geeksphone
-
- In this article we cover some basic tips on how to keep your Geeksphone up-to-date and how to tweak the system Gaia applications.
-
- The Firefox OS ZTE OPEN
-
- This article exists to share the information we have available on the ZTE OPEN Firefox OS device.
-
-

General Firefox OS information

-
-
- General device features
-
- This page lists typical Firefox OS hardware features and minimum hardware requirements.
-
- Troubleshooting
-
- This article provides tips for resolving common problems you may have while using Firefox OS.
-
- Best practices for open reference devices
-
- A set of best practices that we believe should come highly recommended for any widely available open reference devices. All of the recent Firefox OS reference devices have followed these practices.
-
diff --git a/files/de/archive/b2g_os/phone_guide/phone_specs/index.html b/files/de/archive/b2g_os/phone_guide/phone_specs/index.html deleted file mode 100644 index 8cf863e090..0000000000 --- a/files/de/archive/b2g_os/phone_guide/phone_specs/index.html +++ /dev/null @@ -1,800 +0,0 @@ ---- -title: Firefox OS Geräte und Spezifikationen -slug: Archive/B2G_OS/Phone_guide/Phone_specs -tags: - - Firefox OS - - Gerät - - Handy - - Smartphone -translation_of: Archive/B2G_OS/Phone_guide/Phone_specs ---- -
-

Dieser Artikel enthält Informationen über Firefox OS Geräte und deren Spezifikationen, Code-Namen, standardmäßig installierten FIrefox OS Versionen und mehr.

-
- -

Verfügbare Firefox OS Smartphones

- -

Die folgende Tabelle enthält Informationen zu den verfügbaren und ehemals verfügbaren Firefox OS Smartphones.

- -
-

Hinweis: Nähere Informationen zu den verfügbaren Firefox OS Smartphones und die Länder, in denen sie verfügbar sind, findest Du auf Firefox OS devices.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Name / Code-Name

-
-

Datum der Veröffentlichung

-
FxOS
- version
VerfügbarkeitWeitere Informationen
-

Alcatel One Touch Fire

- -

hamachi, buri

-
12. Juli 20131.0.1Zur Zeit verfügbarVerfügbar in Brasilien, Uruguay, Italien, Deutschland, Griechenland, Serbien, Ungarn und Polen.
- Erhältlich auf eBay.
Alcatel One Touch Fire E18. Juli 20141.3.0Zur Zeit verfügbarVerfügbar in Tschechien, Deutschland, Ungarn, Polen, Russland.
otoro, unagi, inari   nicht erhältliche ZTE Entwicklermodelle, Vorgänger des ZTE Open.
-

ZTE Open

- -

ikura

-
2. Juli 20131.0.1Zur Zeit verfügbarBaugleich mit inari, erhältlich auf eBay.
-

LG Fireweb

- -

leo

-
24. Oktober 20131.1Zur Zeit verfügbarVerfügbar in Brasilien.
-

Geeksphone Keon

- -

keon

-
24. April 20131.0.1 -

Zur Zeit nicht verfügbar

-
Nur für Entwickler
-

Geeksphone Peak

- -

peak

-
24. April 20131.0.1Zur Zeit nicht verfügbarehemaliger Code-Name "twist", nur für Entwickler
Geeksphone Peak+---gestoppt
Geeksphone Revolution4. März 20141.3preZur Zeit verfügbarOnline erhältlich
-

LG Google Nexus 4

- -

nexus-4

-
   Test-Gerät. Weder von LG noch von Google unterstützt. Nicht mehr unterstützte Hardware.
-

Flame

- -

Mozillas Referenz-Gerät

-
April 20141.3  -

Auf Vorbestellung erhältlich

- -

Ausverkauft seit Dezember 2014

-
-

Spreadtrum

- -

tarako

-
Ende Q2 2014? Demnächst verfügbar 
ZTE Open C13. Mai 20141.3Zur Zeit verfügbarOnline erhältlich
Symphony GoFox F1516. September 20141.4Zur Zeit verfügbarNur in Bangladesch erhältlich bei Grameenphone Vertriebspartnern
Intex Cloud Fx 1.3 Nicht mehr verfügbar 
Spice Fire One (Mi-FX1) 1.3 Nicht mehr verfügbar 
Alcatel OneTouch Fire C 4020D1. Oktober 20141.3 Nicht mehr verfügbar 
Zen U105 Fire16. Oktober 20141.3 Zur Zeit verfügbarErhältlich auf Homeshop18, Indien
Cherry Mobile AceNovember 20141.3TZur Zeit verfügbarErhältlich auf den Philippinen.
Fx0Dezember 20142.0Zur Zeit verfügbarErhältlich in Japan (KDDI.)
Orange Klif20152.0Zur Zeit verfügbarErhältlich in vielen afrikanischen Ländern.
ZTE Open C220152.1Zur Zeit verfügbarOnline erhältlich
- -

Firefox OS Versionen

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Version -

Feature Complete (FC) Datum

-
Release To Partner
- (RTP) Datum
CodenameGecko VersionEnthaltene Security FixesRelease Infos
1.022. Dezember 201221. Februar 2013TEFGecko 18Gecko 18 
1.0.115. Januar 20136. September 2013ShiraGecko 18Gecko 20Entwickler
- Anwender
1.129. März 20139. Oktober 2013LeoGecko 18+ (new APIs)Gecko 23Entwickler
- Anwender
1.1.1 TBDHDWie 1.1.0 mit WVGAGecko 23 
1.215. September 20139. Dezember 2013KoiGecko 26[39]Gecko 26Entwickler
- Anwender
1.39. December 2013TBD Gecko 28Gecko 28Entwickler
- Anwender
1.417. März 2014TBD Gecko 30Gecko 30Entwickler
- Anwender (TBD)
2.0TBDTBD Gecko 32Gecko 32Entwickler
- Anwender (TBD)
2.1Januar 2015?TBD Gecko 34Gecko 34Entwickler
2.2Juni 2015TBD Gecko 37Gecko 37Entwickler
2.5November 2015TBD TBDTBD 
- -

Geräte-Spezifikationen

- -

Bitte beachte, dass wir in einigen Fällen bereits vor öffentlicher Verfügbarkeit eines angekündigten Gerätes dessen Code-Namen und einige seiner Eigenschaften hier veröffentlichen. Bitte FÜGE KEINE zusätzlichen Informationen zu diesen Geräten hinzu bevor Andreas Gal oder jemand vergleichbares diese Informationen veröffentlicht hat. Im Zweifelsfall wende Dich bitte an den Firefox OS Program Manager.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameVersionenAuflösungDisplay (Inches)CPUKamera(s), MpxRAMROMSpeicherBatterie (mAh)
-

Alcatel One Touch Fire

- -

hamachi, buri

-
v1.0.1/v1.1 -

320 x 480
- PX=1

-
3.5Qualcomm Snapdragon S1 MSM7227A 1 GHzRückseite: 3.2256MB512MB/data: wahrscheinlich identisch mit inari; laut Hersteller 160MB Speicher für Anwendungen;
- Wahrscheinlich kein interner DeviceStorage, MicroSD Karte (max. 32GB) benötigt
-  
1400
Alcatel One Touch Fire Ev1.3.0540 x 9604.5Qualcomm Snapdragon 200
- MSM8210
- 1.2 GHz
- dual-core
Rückseite: 5.0512MB   
-

ZTE Open / variants

- -

ikura

-
v1.0.1 (as shipped)320 x 480
- PX=1
3.5Qualcomm Snapdragon S1 MSM7225A 800 MHzRückseite: 3.2256MB512MB -

/data: 152M
- Kein interner DeviceStorage, MicroSD Karte benötigt

-
1200
-

LG Fireweb

- -

leo

-
v1.1320 x 480
- PX=1
4Qualcomm  Snapdragon S1 MSM7227A 1 GHzRückseite: 5.0512MB4GB -

/data: 1007.90M
- interner DeviceStorage: ja, Größe ungewiss, möglicherweise 3.7G, könnte aber auch eine falsche Berechnung sein. Der Wert von /sys/devices/platform/msm_sdcc.3/mmc_host/mmc0/mmc0:0001/block/mmcblk0/block ist 7733248, bei einer angenommenen Blockgröße von 512 byte kommen wir auf 3.7G.

-
1540
-

Geeksphone Keon

- -

keon

-
-

v1.0.1 - nightly
- downloads here

-
320 x 480
- PX=1
3.5Qualcomm Snapdragon S1 7225AB 1 GHzRückseite: 3.0512MB4GB -

/data: 1.5G
- interner DeviceStorage: 1023.4M

-
1580
-

Geeksphone Peak

- -

peak

-
v1.0.1 - nightly
- downloads here
540 x 960
- PX=1.5
4.3Qualcomm Snapdragon S4 8225 1.2 GHz dual-core -

Frontseite: 2.0
- Rückseite: 8.0

-
512MB4GB/data: 1.5G
- interner DeviceStorage: 1023.4M
1800
Geeksphone Revolutionv1.3pre (as shipped)540 x 960 PX=1.54.7Dual-core Intel® Atom™ processor Z2560 with up to 1.6GHz -

Frontseite: 1.3 Rückseite: 8.0

-
1GB4GB -

/data: 2G
- interner DeviceStorage: 2.5GB

-
2000
-

Nexus 4

- -

nexus-4

-
v1.3 - nightly768 x 1280
- 720p
4.7 -

Qualcomm
- Snapdragon S4 Pro
- 1.5 GHz quad-core

-
Rückseite: 8.02GB8 or 16GBHier wird alles in einem ziemlich undurchsichtigen Bereich gespeichert, es gibt keinen externen Speicher (MicroSD).  Die Größe des Bereichs variiert je nach dem, welches Nexus 4 Modell Du hast.2100
-

Foxconn InFocus

- -

flatfish

-
 1280 x 80010Allwinner A31, Cortex A7 Quad-Core 1.0 GHz -

Frontseite: 2.0
- Rückseite: 5.0

-
2GB16GB 7000
-

some phone thing

- -

fugu

-
v1.2f (branch) per320 x 480   256MB   
-

Spreadtrum SC6821

- -

tarako

-
v1.3 perHVGA
- 320 x 480
3.5Spreadtrum SC6821, Cortex A5 1GHz0.3 (nur Rückseite?)128MB (zram)2GB NAND flash (external) + 1GB LPDDR1 (embedded)32GB micro SD card1100
-

VIA Vixen

- -

community-driven customization of flatfish?

-
 1024 x 6007Cortex-A9 Dual Core 1.2 GHz -

Frontseite: 0.3 Rückseite: 2.0

-
1GB8GB  
-

Flame

- -

Mozillas Referenz-Gerät

-
v1.3 -

FWVGA
- 854 × 480
- PX=1.5
-  

-
4.5 capacitive touch -

Qualcomm Snapdragon 200 MSM8210, 1.2GHZ Dual core processor

-
-

Frontseite: 2.0
- Rückseite: 5.0 Auto-Fokus und Blitz
-  

-
256MB–1GB (adjustable by developer)8GB32GB micro SD card (USB 2.0)1800
ZTE Open Cv1.3800 x 4804Qualcomm Snapdragon 200 MSM8210, 1.2GHZ Dual core processorRückseite: 3.0512MB4GB -

/data: 1G

-
1400
Symphony GoFox F15v1.4320 x 480
- PX=?
3.5Spreadtrum 1 GHz Single Core ProcessorFrontseite: 0.3
- Rückseite: 3.2 mit Blitz
512MB512MB 1450
Intex Cloud FxV 1.3320 x 4803.5Spreadtrum 1 GHzRückseite: 2.0 ohne Blitz128 MB256MB -

Data : 2G

- -

Interner Speicher: 46 MB (User Memory)

- -

Externer Speicher (Micro SD Card): max. 4GB

-
1250
Spice Fire One (Mi-FX1)V 1.3320 x 4803.5Spreadtrum 1 GHz -

Frontseite: VGA

- -

Rückseite: 1.3

-
128 MB512MB -

Data : 2G

- -

Interner Speicher: 67.9 MB (User Memory)

- -

Externer Speicher (Micro SD Card): max. 4GB

-
1400
Alcatel OneTouch Fire C 4020DV 1.3320 x 4803.5Spreadtrum 1 GHz 128 MB256MB -

Data : 2G

- -

Interner Speicher : 65 MB (User Memory)

- -

Externer Speicher (Micro SD Card): max. 32GB

-
1000
Zen U105 FireV 1.3320 x 4803.5Spreadtrum 1 GHz -

Frontseite: VGA

- Rückseite: 2.0
128 MB256MB -

Data : 2G

- -

Externer Speicher (Micro SD Card): max. 16GB

-
1200
Fx0V 2.01280 x 7204.7Qualcomm Snapdragon S4 MSM8926 1.2GHz quad-core -

Frontseite: 8.0

- -

Rückseite: 2.1

-
1.5 GB16GBmicroSDXC Karte: max. 64GB2370
Orange KlifV 2.0480 x 3203.5MediaTek dual-core 1Ghz MT6572MRückseite: 2.0256MB512MBTBC1300
ZTE Open C 2V 2.1WVGA4.0Spreadturn  SC7715 1GBRückseite: 2.0512MB4GBExterner Speicher (Micro SD Card): max. 32GB1400
- -

Anmerkungen zu den Spalten:

- - diff --git a/files/de/archive/b2g_os/phone_guide/zte_open_c/index.html b/files/de/archive/b2g_os/phone_guide/zte_open_c/index.html deleted file mode 100644 index 7b74fddbf2..0000000000 --- a/files/de/archive/b2g_os/phone_guide/zte_open_c/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: ZTE OPEN C -slug: Archive/B2G_OS/Phone_guide/ZTE_OPEN_C -tags: - - Update - - Upgrade - - ZTE Open C - - reagiert nicht mehr -translation_of: Archive/B2G_OS/Phone_guide/ZTE_OPEN_C ---- -
-

Das ZTE Open C Firefox OS Handy ist ein fortgeschrittenes Firefox OS Gerät von ZTE das über bessere Hardware verfügt, die unter anderem eine 3MP Kamera und einen 4-inch WVGA Display umfasst und bei dem Firefox OS 1.3 vorinstalliert ist. Dieser Artikel enthält Informationen über das Gerät, darunter Anleitungen zum Updaten und zur Fehlerbeseitigung.

-
-
-

Bitte Beachten: Diese Anleitungen sind nicht für das ZTE Open. Wenn Sie ein ZTE Open haben, sollten Sie stattdessen zu unterer ZTE Open Seite gehen.

-
-
-

Bitte beachten: Das Upgrade-Programm welches Sie benötigen, um das Handy zu entsprechen (s.u.) ist derzeit nur für Windows erhältlich. Kaufen Sie das Handy nicht, wenn Sie nicht über ein Windows-System verfügen und trotzdem selbst Ihre eigenen Versionen von Firefox OS installieren wollen.

-
-

Das ZTE Open C ist das erste Handy mit dem jüngsten update für Firefox OS. Es bietet viele neue Funktionen, darunter den Direktzugriff auf den Musikplayer vom Sperrbildschirm oder dem Benachrichtigungsfeld aus und Bluetooth sharing, mit dem dem Sie mehrere Dateien gleichzeitig übertragen können. Nutzer können jetzt schneller durch die Menüs navigieren mithilfe von intelligenten Ordnern, die automatisch Apps oder die Suche nach Apps nach Kategorien ordnen mit verbesserter Geschwindigkeit beim Scrollen und einem schnelleren Start von Systen-Apps wie Kalender, Addressbuch und Kamera.

-

Der Kauf eines Geräts

-

Das Gerät kostet US$99.99, es ist bei eBay erhältlich:

- -
-

Bitte beachten: Sie erhalten das Gerät ohne dass irgendwelche Netzwerk-spezifischen Apps oder Dienste installert wären. Es handelt sich um eine entsperrte, global erhältliche Variante, die für early Adopters gedacht ist.

-
-

Einzelheiten zum Handy

-

Siehe Phone and device specs.

-

Wie Sie Firefox OS upgraden

-

Der einfachste Weg, um die Software Ihres Open C upzugraden ist es, die Dateien von der ZTE-Webseite zu verwenden. Um die richtige Datei zu finden, gehen Sie zu ZTE's Software support page, wählen Sie Ihre Region aus der Liste auf der linken Seite, wählen Sie Smart Phones in der mittleren Liste und Open C(European Standard) bzw. Open C(American Standard), je nachdem, wo Sie das Gerät gekauft haben. Klicken Sie dann auf Selected um zu Ihrer Download-Seite zu gelangen.

-

Sobald Ihr Download beendet ist, finden Sie ein PDF in der ZIP-Datei, das Ihnen erklärt, wie das Upgrade zu installieren ist.

-

"Manuelle" Updates

-

Wenn Sie selbst Gecko oder Gaia updaten wollen, ist der Vorgang etwas verzwickter, weil das Handy standardmäßig gesperrt ist und Sie keinen Root-Zugang haben. Um das Gerät zu entsperren, können Sie folgendes Programm von comebuy.com benutzen:Open_C_upgrade_Tool. Durch die Installation dieses Programms wird die Fimware Ihres Geräts so verändert, dass der Root-Zugang Fastboot aktiviert werden und Sie die Möglichkeit haben, Ihr Telefon mit neuen Softwarekomponenten zu flashen.

-
-

Bitte beachten: Dieses Upgrade-Programm ist derzeit nur für Windows verfügbar.

-
-

Gecko und Gaia upgraden

-

Sobald Sie Fastboot aktiviert haben, können Sie neue Firefox OS/B2G Gecko und Gaia Komponenten erstellen und installieren: build and install new Firefox OS/B2G.

-
    -
  1. Beginnen Sie mit folgender Anleitung: build prerequisite, wobei Sie das Open C zum Zwecke der Konfiguration wie ein Flame behandeln: Beide, Flame und Open C basieren auf dem Android Jellybean Basissystem.
  2. -
  3. Während der Konfiguration müssen Sie ein sog. "Custom Manifest File" für das Open C referenzieren. Laden Sie den Anhang zur Fehlermeldung auf folgender Seite herunter: Download the attachment on this bug und speichern Sie ihn an einem Ort auf ihrem Computer, den Sie leicht wiederfinden unter dem Dateinamen openc.xml.
  4. -
  5. Räumen Sie das B2G Verzeichnis auf und löschen Sie nicht benötigte Unterverzeichnisse:
    -
    rm -rf objdir-gecko/ out/ backup-flame/
    -
  6. -
  7. Konfigurieren Sie jetzt Firefox OS mit dem nachfolgenden Befehl:
    -
    ./config.sh flame /PATH/TO/openc.xml
    -
  8. -
  9. Sie können jetzt die Gecko Komponenten mit den nachfolgenden Befehlen bauen und auf Ihr Gerät flashen: -
    ./build.sh gecko
    -./flash.sh gecko
    -
  10. -
  11. Jetzt sollten Sie auch Gaia upgraden, damit die upgegradete Version von Gecko mit der Gaia-Version auf Ihrem Gerät zusammenarbeietet: -
    cd gaia
    -make reset-gaia
    -
  12. -
-
-

Achtung: Der Versuch, ein Image für das Flame auf Ihr Gerät zu flashen würde dieses unbrauchbar machen, weswegen hiervon abgeraten wird.

-
-

Gaia upgraden

-

Wenn Sie nur ein Update von Gaia und nicht auch von Gecko durchführen wollen, müssen Sie zunächst das Gaia Repo auf Github forken und klonen und das Ergebnis auf Ihr Gerät flashen.

-
    -
  1. Stellen Sie sicher dass ADB installiert ist.
  2. -
  3. Gehen Sie zu https://github.com/mozilla-b2g/gaia, klicken Sie dann auf den "fork" button in der oben rechten Ecke um in Ihr eigenes Repo zu forken.
  4. -
  5. Klonen Sie den Code von ihrem geforkten Repo auf Ihren eigenen Rechner, indem Sie folgenden Befehl ausführen: -
    git clone https://github.com/your-github-username/gaia.git
    -
  6. -
  7. Wechseln Sie in das hierdurch erstellte Verzeichnis.
  8. -
  9. Schalten Sie auf ihrem Gerät remote debugging ein (wählen Sie die ADB und Devtools option).
  10. -
  11. Verbinden Sie jetzt Ihr Handy per USB mit Ihrem Computer, stellen Sie sicher, dass das Gerät erkannt wird, indem Sie den Befehl adb devices im terminal eingeben.
  12. -
  13. Führen Sie folgenden Befehl aus, um Ihr Handy neu zu starten und es mit dem neuesten Gaia Sourcecode upzudaten -
    make reset-gaia
    -
  14. -
-

Mein Handy reagiert nicht mehr

-

Wenn Ihr Gerät nicht mehr reagiert, ist es unter Umständen möglich, es mit der unter  ZTE Open C user manual auf der Webseite von ZTE verfügbaren Anleitung und der  Anleitung auf dieser Seite wieder zum  Leben zu erwecken.

-

Weitere Informationen sind unter Umständen hier: reference this support entry verfügbar.

diff --git a/files/de/archive/b2g_os/platform/app_architektur/index.html b/files/de/archive/b2g_os/platform/app_architektur/index.html deleted file mode 100644 index 315efb5b4e..0000000000 --- a/files/de/archive/b2g_os/platform/app_architektur/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Firefox OS App-Architektur -slug: Archive/B2G_OS/Platform/App_Architektur -tags: - - Anleitung - - Apps - - B2G - - Firefox OS -translation_of: Archive/B2G_OS/Platform/Apps_architecture ---- -
-

Dieser Artikel beschreibt die Details, wie Apps in Firefox OS gestartet und verwaltet werden. Diese Informationen sind hilfreich sowohl für Firefox OS-Plattformentwickler als auch für Gruppen, die das Betriebssystem auf neue Hardware portieren. Als App-Entwickler benötigt man diesen Artikel nicht unbedingt, aber er könnte trotzdem interessant sein.

-
-

Der App-Startprozess

-

Wenn der Nutzer eine App, die er starten möchte, auswählt oder eine App auf andere Weise gestartet werden soll, startet die  Home-Screen-App, indem sie sich eine App-Referenz von der {{domxref("App")}}-API holt  und dann die Methode {{domxref("App.launch()")}} aufruft, um die App zu starten.

-

Gecko empfängt diese Anforderung und sendet das {{domxref("mozChromeEvent")}} mit den App-Details zur System-App. Die System-App verarbeitet dieses Ereignis, indem sie ein neues {{HTMLElement("iframe")}}-Element in den DOM-Baum einfügt und die App in dieses neue {{HTMLElement("iframe")}}-Element lädt. Dieser Rahmen ist dann die Heimat der App, bis sie beendet wird.

-

Jede App benötigt ein Manifest, das sie beschreibt, und hat eine spezielle Dateihierarchie im Paket. Details stehen im Artikel App manifest.

-

Kommunikation mit Gecko

-

Die Kommunikation zwischen Gecko und Gaia's System-App passiert über {{domxref("mozChromeEvent")}} und {{domxref("mozContentEvent")}}. mozChromeEvents werden von Chrome zum Inhalt und mozContentEvents vom Inhalt zu Chrome gesendet. Diese Kommunikation wird benutzt, um die Erzeugung und das Schließen der vertrauten Benutzeroberfläche zu steuern und die benötigten Funktionen für Benachrichtigungen und andere Aufgaben bereitzustellen, dazu gehört auch, der System-App mitzuteilen, dass eine App gestartet werden soll.

-
-

Anmerkung: Mehr dazu, wie diese Ereignisse funktionieren, findet man in der System-App-Dokumentation. Eine andere Quelle, wie man die Ereignisse benutzt, findet man im Quellcode in {{source("b2g/chrome/content/shell.js")}}.

-
-

See also

- diff --git a/files/de/archive/b2g_os/platform/architektur/index.html b/files/de/archive/b2g_os/platform/architektur/index.html deleted file mode 100644 index c438e89c9f..0000000000 --- a/files/de/archive/b2g_os/platform/architektur/index.html +++ /dev/null @@ -1,740 +0,0 @@ ---- -title: Firefox OS Architektur -slug: Archive/B2G_OS/Platform/Architektur -translation_of: Archive/B2G_OS/Architecture ---- -
-

Dieser Artikel gibt eine Übersicht über die Architektur der Firefox OS Plattform und beschreibt die grundlegenden Konzepte und wie die einzelnen Komponenten prinzipiell zusammen arbeiten.

-
- -
-

Hinweis: Bitte denke daran, dass Firefox OS noch nicht veröffentlicht ist. Die hier beschriebene Architektur ist möglicherweise noch nicht endgültig und es können sich noch ein paar Dinge ändern.

-
- -

Firefox OS Begriffserklärungen

- -

Einige Begriffe solltest Du kennen, bevor Du die Dokumentation von Firefox OS liest.

- -
-
B2G
-
Kurzform von "Boot to Gecko"
-
Boot to Gecko
-
Der interne Code-Name für das Firefox OS Betriebssystem. Du wirst diesen Begriff häufig als Synonym für Firefox OX finden, weil dieser Code-Name schon lange genutzt wurde bevor das Projekt einen offiziellen Namen hatte.
-
Firefox OS
-
Firefox OS stellt im Grunde das Mozilla Branding (und das von OEM Partnern) und verschiedene Support-Programme über der Boot to Gecko Ebene bereit, um aus den einzelnen Komponenten ein marktfähiges Produkt zu machen.
-
Gaia
-
Das ist die Benutzeroberfläche (User Interface) der Firefox OS Plattform. Alles, was nach dem Start von Firefox OS auf dem Bildschirm zu sehen ist wird von der Gaia Schicht erzeugt. Gaia implementiert den Sperrbildschirm, die Startseite und alle Apps, die man von einem modernen Smartphone erwartet. Die Gaia Schicht wurde vollständig in HTML, CSS und JavaScript geschrieben. Gaia kommuniziert mit dem darunter liegenden Betriebssystem ausschließlich über offene Web APIs, die durch Gecko bereit gestellt werden. Anwendungen von Drittanbietern können neben Gaia installiert werden.
-
Gecko
-
Gecko ist die Laufzeitumgebung von Firefox OS. Diese Schicht stellt alles zur Verfügung, was für die drei offenen Standards HTML, CSS und JavaScript benötigt wird. Gecko stellt sicher, dass diese APIs auf jedem von Gecko unterstützten Betriebssystem gut funktionieren. Zu diesem Zweck beinhaltet Gecko unter anderem Netzwerk-, Grafik- und Layoutstacks sowie eine Virtuelle Maschine für JavaScript und Schichten für die Portierung.
-
Gonk
-
Gonk ist eine tiefer liegende Schicht des Firefox OS Betriebsystems, bestehend aus dem Linux Kernel (basierend auf dem Android Open Source Project (AOSP)) und der Hardware-Abstraktionsschicht (hardware abstraction layer, HAL). Der Linux Kernel und einige der Anwendungs-Bibliotheken sind allgemeine Open Source Projekte: Linux, libusb, bluez und andere. Einige Pakete des HAL sind Gemeinschafts-Projekte mit AOSP: GPS, Kamera und andere. Man könnte sagen, Gonk ist eine sehr einfache Linux Distribution. Gonk ist ein Port von Gecko. Das heißt, es gibt einen Port von Gecko zu Gonk, so wie es Ports von Gecko zu Mac OS X, Windows und Android gibt. Seit das Firefox OS Projekt die alleinige Kontrolle über Gonk hat können wir Schnittstellen zu Gecko entwickeln, die auf anderen Betriebssystemen nicht möglich sind. Zum Beispiel hat Gecko auf Gonk direkten Zugriff zur gesamten Telefonie-Einheit und zum Display Frame Buffer. Auf anderen Betriebssystemen ist dies nicht möglich.
-
Jank
-
Dieser im Bereich der mobilen Web Apps häufig genutzte Begriff bezeichnet den Effekt von langsamem und ineffizientem Code in einer App, wodurch die Aktualisierung der Benutzeroberfläche blockiert wird und diese nur noch langsam oder überhaupt nicht mehr reagiert. Unsere Gaia Entwickler nutzen verschiedene Optimierungs-Techniken, um diese Probleme unter allen Umständen zu verhindern.
-
- -

Overall architecture

- -

The following figure compares architectures between proprietary platforms and Firefox OS.

- -

on the left is a native mobile architecture stack, on the right is the Firefox OS architecture. they are similarm except that the native stack is all proprietary device functionality, and the Firefox OS stack is all done with open source and web technologies.

- -

Firefox OS eliminates the native API layer between the operating system and application layers. This integrated design reduces platform overhead and simplifies security without sacrificing performance or a rich user smart phone experience.

- -
    -
  1. Gaia is the core web apps of the device, and user interface layer, all written in HTML5, CSS and JavaScript, with a number of exposed APIs to allow the UI code to interact with the phone hardware and Gecko functionality.
  2. -
  3. Gecko is the web engine and presentation layer in Firefox OS that connects hardware to HTML by serving as the interface between web content and the underlying device. Gecko provides an HTML5 parsing and rendering engine, programmatic access to hardware functionality via secure web APIs, a comprehensive security framework, update management, and other core services.
  4. -
  5. Gonk is the kernel-level component in the Firefox OS stack that serves as the interface between Gecko and the underlying hardware. Gonk controls the underlying hardware and exposes hardware capabilities to Web APIs implemented in Gecko. Gonk can be seen as the “black box” that does all the complex, detailed work behind the scenes to control the mobile device by enacting requests at the hardware level.
  6. -
  7. The mobile device is the mobile phone hardware running Firefox OS. The OEM (Original Equipment Manifacturer) is responsible for providing the mobile device.
  8. -
- -

Specific Firefox OS architecture

- -

Firefox OS Architecture

- -

Firefox OS bootup procedure

- -

This section describes the process by which Firefox OS devices boot, what parts are involved, and where. As a quick reference, the general system bootup flow goes from bootloaders in the Kernel space, to init in the native code, to B2G and then Gecko in the user space, and then finally to the system app, window manager, then homescreen app inside Gecko. This is what all other apps are executed on top of.

- -

- -

The bootstrapping process

- -

When a Firefox OS device is first turned on, execution begins in the primary bootloader. From there, the process of loading the main operating system proceeds in the typical way; a succession of increasingly higher-level bootloaders bootstrap the next loader in the chain. At the end of the process, execution is handed off to the Linux kernel.

- -

There are a few points worth noting about the boot process:

- - - -

The Linux kernel

- -

The Linux kernel(s) used by Gonk is very similar to the upstream Linux from which it's derived (based on the Android Open Source Project). There are a few changes made by the AOSP that have not yet been upstreamed. In addition, vendors sometimes modify the kernel and upstream those changes on their own schedule. In general, though, the Linux kernel is close to stock.

- -

The startup process for Linux is well-documented elsewhere on the Internet, so this article won't cover that.

- -

The Linux Kernel will bring up devices and run essential processes. It will execute processes defined in init.rc and the successor init.b2g.rc to boot essential process such as b2g (FirefoxOS basic process, containing Gecko) and rild (telephony related process that might proprietary by different chipsets) — see below for more details. At the end of the process, a userspace init process is launched, as it is in most UNIX-like operating systems.

- -

Once the init process is launched, the Linux kernel handles system calls from userspace, and interrupts and the like from hardware devices. Many hardware features are exposed to userspace through sysfs. For example, here's a code snippet that reads the battery state in Gecko:

- -
FILE *capacityFile = fopen("/sys/class/power_supply/battery/capacity", "r");
-double capacity = dom::battery::kDefaultLevel * 100;
-if (capacityFile) {
-  fscanf(capacityFile, "%lf", &capacity);
-  fclose(capacityFile);
-}
- -

More on the init process

- -

The init process in Gonk handles mounting the required file systems and spawns system services. After that, it stays around to serve as a process manager. This is quite similar to init on other UNIX-like operating systems. It interprets scripts (that is, the init*.rc files) that consist of commands describing what should be done to start various services. The Firefox OS init.rc is typically the stock Android init.rc for that device patched to include the things required to kick-start Firefox OS, and varies from device to device.

- -

One key task the init process handles is starting up the b2g process; this is the core of the Firefox OS operating system.

- -

The code in init.rc that starts this up looks like this:

- -
service b2g /system/bin/b2g.sh
-  class main
-  onrestart restart media
- -
-

Note: Exactly how much init.rc differs from the Android version varies from device to device; sometimes, init.b2g.rc is simply appended, and sometimes the patches are more significant.

-
- -

The userspace process architecture

- -

Now it's useful to take a high-level look at how the various components of Firefox OS fit together and interact with one another. This diagram shows the primary userspace processes in Firefox OS.

- -

Userspace diagram

- -
-

Note: Keep in mind that since Firefox OS is under active development, this diagram is subject to change, and may not be entirely accurate.

-
- -

The b2g process is the primary system process. It runs with high privileges; it has access to most hardware devices. b2g communicates with the modem, draws to the display framebuffer, and talks to GPS, cameras, and other hardware features. Internally, b2g runs the Gecko layer (implemented by libxul.so). See Gecko for details on how the Gecko layer works, and how b2g communicates with it.

- -

b2g

- -

The b2g process may, in turn, spawn a number of low-rights content processes. These processes are where web applications and other web content are loaded. These processes communicate with the main Gecko server process through IPDL, a message-passing system.

- -

The b2g process runs libxul, which references b2g/app/b2g.js to get default preferences. From the preferences it will open the described HTML file b2g/chrome/content/shell.html, which is compiled within the omni.ja file. shell.html includes b2g/chrome/content/shell.js file, which triggers the Gaia system app.

- -

rild

- -

The rild process is the interface to the modem processor. rild is the daemon that implements the Radio Interface Layer (RIL). It's a proprietary piece of code that's implemented by the hardware vendor to talk to their modem hardware. rild makes it possible for client code to connect to a UNIX-domain socket to which it binds. It's started up by code like this in the init script:

- -
service ril-daemon /system/bin/rild
-  socket rild stream 660 root radio
- -

rilproxy

- -

In Firefox OS, the rild client is the rilproxy process. This acts as a dumb forwarding proxy between rild and b2g. This proxy is needed as an implementation detail; suffice it to say, it is indeed necessary. The rilproxy code can be found on GitHub.

- -

mediaserver

- -

The mediaserver process controls audio and video playback. Gecko talks to it through an Android Remote Procedure Call (RPC) mechanism. Some of the media that Gecko can play (OGG Vorbis audio, OGG Theora video, and WebM video) are decoded by Gecko and sent directly to the mediaserver process. Other media files are decoded by libstagefright, which is capable of accessing proprietary codecs and hardware encoders.

- -
-

Note: The mediaserver process is a "temporary" component of Firefox OS; it's there to aid in our initial development work, but is expected to go away eventually. This will most likely not happen until Firefox OS 2.0 at the earliest, however.

-
- -

netd

- -

The netd process is used to configure network interfaces.

- -

wpa_supplicant

- -

The wpa_supplicant process is the standard UNIX-style daemon that handles connectivity with WiFi access points.

- -

dbus-daemon

- -

The dbus-daemon implements D-Bus, a message bus system that Firefox OS uses for Bluetooth communication.

- -

Gecko

- -

Gecko, as previously mentioned, is the implementation of web standards (HTML, CSS, and JavaScript) that is used to implement everything the user sees on Firefox OS, and control interactions with the phone hardware. Web apps connect HTML5 to hardware via controlled, secure Web APIs, implemented in Gecko. The Web APIs provide programmatic access to features in the underlying mobile device hardware (such as the battery or vibration), along with data that is stored on, or available to, a device (such as the calendar or contacts). Web content invokes the accessible Web APIs within HTML5.

- -

An app consists of a collection of related HTML5 web content. To build web apps that run on Firefox OS mobile devices, developers simply assemble, package, and distribute this web content. At run time, this web content is interpreted, compiled, and rendered in a web browser. For more information on Apps, see the App Center.

- -
-

Note: To search the Gecko codebase, you could use http://dxr.mozilla.org. It’s more fancy and provides good reference features, but with limited repositories. Or you could try the traditional http://mxr.mozilla.org, which contains more Mozilla projects.

-
- -

Gecko architecture diagram

- -

- - - - - -

b2g/

- -

The b2g folder contains mainly Firefox OS-related functions.

- -
b2g/chrome/content
- -

Contains Javascript files run above the system app.

- -
b2g/chrome/content/shell.html
- -

The entry point into Gaia — the HTML for the system app. shell.html pulls in settings.js and shell.js:

- -
<script type="application/javascript;version=1.8" src="chrome://browser/content/settings.js"> </script>
-<script type="application/javascript;version=1.8" src="chrome://browser/content/shell.js"> </script>
- -

settings.js contains system default setting parameters.

- -
b2g/chrome/content/shell.js
- -

shell.js is the first script to load in the Gaia system app.

- -

shell.js imports all required modules, registers key listeners, defines sendCustomEvent and sendChromeEvent to communicate with Gaia, and provides webapp install helpers: indexedDB quota, RemoteDebugger, keyboard helper, and screenshot tool.

- -

But the most important function of shell.js is to launch the Gaia system app, then hand over the overall systems related management work to the Gaia system app.

- -
let systemAppFrame =
-  document.createElementNS('http://www.w3.org/1999/xhtml', 'html:iframe');
-    ...
-  container.appendChild(systemAppFrame);
- -
b2g/app/b2g.js
- -

This script contains predefined settings, like about:config in browser, and the same as Gaia's pref.js. These settings can be changed from the Settings app, and can be overwritten with Gaia’s user.js in the Gaia build script.

- -

dom/{API}

- -

New API implementations (post-b2g) will be located in dom/. Older APIs will be located in dom/base, for example Navigator.cpp.

- -
dom/apps
- -

.jsm will be loaded — .js API implementations such as webapp.js install, getSelf, etc.

- -
dom/apps/PermissionsTable.jsm
- -

All permissions are defined in PermissionsTable.jsm

- -

dom/webidl

- -

WebIDL is the language used to define web APIs. For supported attributes, read WebIDL_bindings.

- -

hal/gonk

- -

This directory contains files related to the gonk port layer.

- -

Generated files

- -
module/libpref/src/init/all.js
- -

Contains all config files.

- -
/system/b2g/ omni.ja and omni.js
- -

Contains the pack of styles for resources in the device.

- -

Processing input events

- -

Most action inside Gecko is triggered by user actions. These actions are represented by input events (such as button presses, touches to a touch screen device, and so forth). These events enter Gecko through the Gonk implementation of nsIAppShell, a Gecko interface that is used to represent the primary entrance points for a Gecko application; that is, the input device driver calls methods on the nsAppShell object that represents the Gecko subsystem in order to send events to the user interface.

- -

For example:

- -
void GeckoInputDispatcher::notifyKey(nsecs_t eventTime,
-                                     int32_t deviceId,
-                                     int32_t source,
-                                     uint32_t policyFlags,
-                                     int32_t action,
-                                     int32_t flags,
-                                     int32_t keyCode,
-                                     int32_t scanCode,
-                                     int32_t metaState,
-                                     nsecs_t downTime) {
-  UserInputData data;
-  data.timeMs = nanosecsToMillisecs(eventTime);
-  data.type = UserInputData::KEY_DATA;
-  data.action = action;
-  data.flags = flags;
-  data.metaState = metaState;
-  data.key.keyCode = keyCode;
-  data.key.scanCode = scanCode;
-  {
-    MutexAutoLock lock(mQueueLock);
-    mEventQueue.push(data);
-  }
-  gAppShell->NotifyNativeEvent();
-}
- -

These events come from the standard Linux input_event system. Firefox OS uses a light abstraction layer over that; this provides some nice features like event filtering. You can see the code that creates input events in the EventHub::getEvents() method in widget/gonk/libui/EventHub.cpp.

- -

Once the events are received by Gecko, they're dispatched into the DOM by nsAppShell:

- -
static nsEventStatus sendKeyEventWithMsg(uint32_t keyCode,
-                                         uint32_t msg,
-                                         uint64_t timeMs,
-                                         uint32_t flags) {
-    nsKeyEvent event(true, msg, NULL);
-    event.keyCode = keyCode;
-    event.location = nsIDOMKeyEvent::DOM_KEY_LOCATION_MOBILE;
-    event.time = timeMs;
-    event.flags |= flags;
-    return nsWindow::DispatchInputEvent(event);
-}
- -

After that, the events are either consumed by Gecko itself or are dispatched to Web applications as DOM events for further processing.

- -

Graphics

- -

At the very lowest level, Gecko uses OpenGL ES 2.0 to draw to a GL context that wraps the hardware frame buffers. This is done in the Gonk implementation of nsWindow by code similar to this:

- -
gNativeWindow = new android::FramebufferNativeWindow();
-sGLContext = GLContextProvider::CreateForWindow(this);
- -

The FramebufferNativeWindow class is brought in directly from Android; see FramebufferNativeWindow.cpp. This uses the gralloc API to access the graphics driver in order to map buffers from the framebuffer device into memory.

- -

Gecko uses its Layers system to composite drawn content to the screen. In summary, what happens is this:

- -
    -
  1. Gecko draws separate regions of pages into memory buffers. Sometimes these buffers are in system memory; other times, they're textures mapped into Gecko's address space, which means that Gecko is drawing directly into video memory. This is typically done in the method BasicThebesLayer::PaintThebes().
  2. -
  3. Gecko then composites all of these textures to the screen using OpenGL commands. This composition occurs in ThebesLayerOGL::RenderTo().
  4. -
- -

The details of how Gecko handles the rendering of web content is outside the scope of this document.

- -

Hardware Abstraction Layer (HAL)

- -

The Gecko hardware abstraction layer is one of the porting layers of Gecko. It handles low-level access to system interfaces across multiple platforms using a C++ API that's accessible to the higher levels of Gecko. These APIs are implemented on a per-platform basis inside the Gecko HAL itself. This hardware abstraction layer is not exposed directly to JavaScript code in Gecko — this part of the interaction is handled by the Web APIs.

- -

Let's look at the process form a high level. When a user makes a request to use a phone feature (such as dialing a number, accessing a local wifi network, or connecting via Bluetooth), all layers in the Firefox OS technology stack are involved in carrying out the request. Apps and web content in the Gaia layer submits requests to access the underlying device via Web API calls (invoked from within HTML5 functions), which are implemented in Gecko. Gecko in turn submits the request to Gonk. A single request from Gecko can trigger a complex series of operations, initiated and managed by Gonk, in the mobile phone.

- -

How the HAL works

- -

Let's consider the Vibration API as an example. The Gecko HAL for this API is defined in hal/Hal.h. In essence (simplifying the method signature for clarity's sake), you have this function:

- -
void Vibrate(const nsTArray<uint32> &pattern);
- -

This is the function called by Gecko code to turn on vibration of the device according to the specified pattern; a corresponding function exists to cancel any ongoing vibration. The Gonk implementation of this method is in hal/gonk/GonkHal.cpp:

- -
void Vibrate(const nsTArray<uint32_t> &pattern) {
-  EnsureVibratorThreadInitialized();
-  sVibratorRunnable->Vibrate(pattern);
-}
- -

This code sends the request to start vibrating the device to another thread, which is implemented in VibratorRunnable::Run(). This thread's main loop looks like this:

- -
while (!mShuttingDown) {
-  if (mIndex < mPattern.Length()) {
-    uint32_t duration = mPattern[mIndex];
-    if (mIndex % 2 == 0) {
-      vibrator_on(duration);
-    }
-    mIndex++;
-    mMonitor.Wait(PR_MillisecondsToInterval(duration));
-  }
-  else {
-    mMonitor.Wait();
-  }
-}
- -

vibrator_on() is the Gonk HAL API that turns on the vibrator motor. Internally, this method sends a message to the kernel driver by writing a value to a kernel object using sysfs.

- -

Fallback HAL API implementations

- -

The Gecko HAL APIs are supported across all platforms. When Gecko is built for a platform that doesn't expose an interface to vibration motors (such as a desktop computer), then a fallback implementation of the HAL API is used. For vibration, this is implemented in hal/fallback/FallbackVibration.cpp.

- -
void Vibrate(const nsTArray<uint32_t> &pattern) {
-}
- -

Sandbox implementations

- -

Because most web content runs in content processes with low privileges, we can't assume those processes have the privileges needed to be able to (for example), turn on and off the vibration motor. In addition, we want to have a central location for handling potential race conditions. In the Gecko HAL, this is done through a "sandbox" implementation of the HAL. This sandbox implementation simply proxies requests made by content processes and forwards them to the "Gecko server" process. The proxy requests are sent using IPDL.

- -

For vibration, this is handled by the Vibrate() function implemented in hal/sandbox/SandboxHal.cpp:

- -
void Vibrate(const nsTArray<uint32_t>& pattern, const WindowIdentifier &id) {
-  AutoInfallibleTArray<uint32_t, 8> p(pattern);
-
-  WindowIdentifier newID(id);
-  newID.AppendProcessID();
-  Hal()->SendVibrate(p, newID.AsArray(), GetTabChildFrom(newID.GetWindow()));
-}
- -

This sends a message defined by the PHal interface, described by IPDL in hal/sandbox/PHal.ipdl. This method is described more or less as follows:

- -
Vibrate(uint32_t[] pattern);
- -

The receiver of this message is the HalParent::RecvVibrate() method in hal/sandbox/SandboxHal.cpp, which looks like this:

- -
virtual bool RecvVibrate(const InfallibleTArray<unsigned int>& pattern,
-            const InfallibleTArray<uint64_t> &id,
-            PBrowserParent *browserParent) MOZ_OVERRIDE {
-
-  hal::Vibrate(pattern, newID);
-  return true;
-}
- -

This omits some details that aren't relevant to this discussion; however, it shows how the message progresses from a content process through Gecko to Gonk, then to the Gonk HAL implementation of Vibrate(), and eventually to the Vibration driver.

- -

DOM APIs

- -

DOM interfaces are, in essence, how web content communicates with Gecko. There's more involved than that, and if you're interested in added details, you can read about the DOM. DOM interfaces are defined using IDL, which comprises both a foreign function interface (FFI) and object model (OM) between JavaScript and C++.

- -

The vibration API is exposed to web content through an IDL interface, which is provided in nsIDOMNavigator.idl:

- -
[implicit_jscontext] void mozVibrate(in jsval aPattern);
- -

The jsval argument indicates that mozVibrate() (which is our vendor-prefixed implementation of this non-finalized vibration specification) accepts as input any JavaScript value. The IDL compiler, xpidl, generates a C++ interface that's then implemented by the Navigator class in Navigator.cpp.

- -
NS_IMETHODIMP Navigator::MozVibrate(const jsval& aPattern, JSContext* cx) {
-  // ...
-  hal::Vibrate(pattern);
-  return NS_OK;
-}
- -

There's a lot more code in this method than what you see here, but it's not important for the purposes of this discussion. The point is that the call to hal::Vibrate() transfers control from the DOM to the Gecko HAL. From there, we enter the HAL implementation discussed in the previous section and work our way down toward the driver. On top of that, the DOM implementation doesn't care at all what platform it's running on (Gonk, Windows, OS X, or anything else). It also doesn't care whether the code is running in a content process or in the Gecko server process. Those details are all left to lower levels of the system to deal with.

- -

The vibration API is a very simple API, which makes it a good example. The SMS API is an example of a more complex API which uses its own "remoting" layer connecting content processes to the server.

- -

Radio Interface Layer (RIL)

- -

The RIL was mentioned in the section The userspace process architecture. This section will examine how the various pieces of this layer interact in a bit more detail.

- -

The main components involved in the RIL are:

- -
-
rild
-
The daemon that talks to the proprietary modem firmware.
-
rilproxy
-
The daemon that proxies messages between rild and Gecko (which is implemented in the b2g process). This overcomes the permission problem that arises when trying to talk to rild directly, since rild can only be communicated with from within the radio group.
-
b2g
-
This process, also known as the chrome process, implements Gecko. The portions of it that relate to the Radio Interface Layer are dom/system/gonk/ril_worker.js, which implements a worker thread that talks to rild through rilproxy and implements the radio state machine; and the nsIRadioInterfaceLayer interface, which is the main thread's XPCOM service that acts primarily as a message exchange between the ril_worker.js thread and various other Gecko components, including the Gecko content process.
-
Gecko's content process
-
Within Gecko's content process, the nsIRILContentHelper interface provides an XPCOM service that lets code implementing parts of the DOM, such as the Telephony and SMS APIs talk to the radio interface, which is in the chrome process.
-
- -

Example: Communicating from rild to the DOM

- -

Let's take a look at an example of how the lower level parts of the system communicate with DOM code. When the modem receives an incoming call, it notifies rild using a proprietary mechanism. rild then prepares a message for its client according to the "open" protocol, which is described in ril.h. In the case of an incoming call, a RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED message is generated and sent by rild to rilproxy.

- -

rilproxy, implemented in rilproxy.c, receives this message in its main loop, which polls its connection to rild using code like this:

- -
ret = read(rilproxy_rw, data, 1024);
-
-if(ret > 0) {
-  writeToSocket(rild_rw, data, ret);
-}
- -

Once the message is received from rild, it's then forwarded along to Gecko on the socket that connects rilproxy to Gecko. Gecko receives the forwarded message on its IPC thread:

- -
int ret = read(fd, mIncoming->Data, 1024);
-// ... handle errors ...
-mIncoming->mSize = ret;
-sConsumer->MessageReceived(mIncoming.forget());
- -

The consumer of these messages is SystemWorkerManager, which repackages the messages and dispatches them to the ril_worker.js thread that implements the RIL state machine; this is done in the RILReceiver::MessageReceived() method:

- -
virtual void MessageReceived(RilRawData *aMessage) {
-  nsRefPtr<DispatchRILEvent> dre(new DispatchRILEvent(aMessage));
-  mDispatcher->PostTask(dre);
-}
- -

The task posted to that thread in turn calls the onRILMessage() function, which is implemented in JavaScript. This is done using the JavaScript API function JS_CallFunctionName():

- -
return JS_CallFunctionName(aCx, obj, "onRILMessage", NS_ARRAY_LENGTH(argv),
-                           argv, argv);
- -

onRILMessage() is implemented in dom/system/gonk/ril_worker.js, which processes the message bytes and chops them into parcels. Each complete parcel is then dispatched to individual handler methods as appropriate:

- -
handleParcel: function handleParcel(request_type, length) {
-  let method = this[request_type];
-  if (typeof method == "function") {
-    if (DEBUG) debug("Handling parcel as " + method.name);
-    method.call(this, length);
-  }
-}
- -

This code works by getting the request type from the object, making sure it's defined as a function in the JavaScript code, then calling the method. Since ril_worker.js implements each request type in a method given the same name as the request type, this is very simple.

- -

In our example, RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED, the following handler is called:

- -
RIL[UNSOLICITED_RESPONSE_CALL_STATE_CHANGED] = function UNSOLICITED_RESPONSE_CALL_STATE_CHANGED() {
-  this.getCurrentCalls();
-};
- -

As you see in the code above, when notification is received that the call state has changed, the state machine simply fetches the current call state by calling the getCurrentCall() method:

- -
getCurrentCalls: function getCurrentCalls() {
-  Buf.simpleRequest(REQUEST_GET_CURRENT_CALLS);
-}
- -

This sends a request back to rild to request the state of all currently active calls. The request flows back along a similar path the RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED message followed, but in the opposite direction (that is, from ril_worker.js to SystemWorkerManager to Ril.cpp, then rilproxy and finally to the rild socket). rild then responds in kind, back along the same path, eventually arriving in ril_worker.js's handler for the REQUEST_GET_CURRENT_CALLS message. And thus bidirectional communication occurs.

- -

The call state is then processed and compared to the previous state; if there's a change of state, ril_worker.js notifies the nsIRadioInterfaceLayer service on the main thread:

- -
_handleChangedCallState: function _handleChangedCallState(changedCall) {
-  let message = {type: "callStateChange",
-                 call: changedCall};
-  this.sendDOMMessage(message);
-}
- -

nsIRadioInterfaceLayer is implemented in dom/system/gonk/RadioInterfaceLayer.js; the message is received by its onmessage() method:

- -
onmessage: function onmessage(event) {
-   let message = event.data;
-   debug("Received message from worker: " + JSON.stringify(message));
-   switch (message.type) {
-     case "callStateChange":
-       // This one will handle its own notifications.
-       this.handleCallStateChange(message.call);
-       break;
-   ...
- -

All this really does is dispatch the message to the content process using the Parent Process Message Manager (PPMM):

- -
handleCallStateChange: function handleCallStateChange(call) {
-  [some internal state updating]
-  ppmm.sendAsyncMessage("RIL:CallStateChanged", call);
-}
- -

In the content process, the message is received by receiveMessage() method in the nsIRILContentHelper service, from the Child Process Message Manager (CPMM):

- -
receiveMessage: function receiveMessage(msg) {
-  let request;
-  debug("Received message '" + msg.name + "': " + JSON.stringify(msg.json));
-  switch (msg.name) {
-    case "RIL:CallStateChanged":
-      this._deliverTelephonyCallback("callStateChanged",
-                                     [msg.json.callIndex, msg.json.state,
-                                     msg.json.number, msg.json.isActive]);
-      break;
- -

This, in turn, calls the nsIRILTelephonyCallback.callStateChanged() methods on every registered telephony callback object. Every web application that accesses the window.navigator.mozTelephony API has registered one such callback object that dispatches events to the JavaScript code in the web application, either as a state change of an existing call object or a new incoming call event.

- -
NS_IMETHODIMP Telephony::CallStateChanged(PRUint32 aCallIndex, PRUint16 aCallState,
-                                          const nsAString& aNumber, bool aIsActive) {
-  [...]
-
-  if (modifiedCall) {
-    // Change state.
-    modifiedCall->ChangeState(aCallState);
-
-    // See if this should replace our current active call.
-    if (aIsActive) {
-      mActiveCall = modifiedCall;
-    }
-
-    return NS_OK;
-  }
-
-  nsRefPtr<TelephonyCall> call =
-          TelephonyCall::Create(this, aNumber, aCallState, aCallIndex);
-  nsRefPtr<CallEvent> event = CallEvent::Create(call);
-  nsresult rv = event->Dispatch(ToIDOMEventTarget(), NS_LITERAL_STRING("incoming"));
-  NS_ENSURE_SUCCESS(rv, rv);
-  return NS_OK;
-}
- -

Applications can receive these events and update their user interface and so forth:

- -
handleEvent: function fm_handleEvent(evt) {
-  switch (evt.call.state) {
-    case 'connected':
-      this.connected();
-      break;
-    case 'disconnected':
-      this.disconnected();
-      break;
-    default:
-      break;
-  }
-}
- -

Take a look at the implementation of handleEvent() in the Dialer application as an extended example.

- -

3G data

- -

There is a RIL message that initiates a "data call" to the cellular service; this enables data transfer mode in the modem. This data call ends up creating and activating a Point-to-Point Protocol (PPP) interface device in the Linux kernel that can be configured using the usual interfaces.

- -
-

Note: This section needs to be written.

-
- - - -

This section lists DOM APIs that are related to RIL communications:

- - - -

WiFi

- -

The WiFi backend for Firefox OS simply uses wpa_supplicant to do most of the work. That means that the backend's primary job is to simply manage the supplicant, and to do some auxiliary tasks such as loading the WiFi driver and enabling or disabling the network interface. In essence, this means that the backend is a state machine, with the states following the state of the supplicant.

- -
-

Note: Much of the interesting stuff that happens in WiFi depends deeply on possible state changes in the wpa_supplicant process.

-
- -

The implementation of the WiFi component is broken up into two files:

- -
-
dom/wifi/DOMWifiManager.js
-
Implements the API that's exposed to web content, as defined in nsIWifi.idl.
-
dom/wifi/WifiWorker.js
-
Implements the state machine and the code that drives the supplicant.
-
- -

These two files communicate with one another using the message manager. The backend listens for messages requesting certain actions, such as "associate", and responds with a message when the requested action has been completed.

- -

The DOM side listens for the response methods as well as several event messages that indicate state changes and information updates.

- -
-

Note: Any synchromous DOM APIs are implemented by caching data on that side of the pipe. Synchronous messages are avoided whenever possible.

-
- -

WifiWorker.js

- -

This file implements the main logic behind the WiFi interface. It runs in the chrome process (in multi-process builds) and is instantiated by the SystemWorkerManager. The file is generally broken into two sections: a giant anonymous function and WifiWorker (and its prototype). The anonymous function ends up being the WifiManager by providing a local API, including notifications for events such as connection to the supplicant and scan results being available. In general, it contains little logic and lets its sole consumer control its actions while it simply responds with the requested information and controls the details of the connection with the supplicant.

- -

The WifiWorker object sits between the WifiManager and the DOM. It reacts to events and forwards them to the DOM; in turn, it receives requests from the DOM and performs the appropriate actions on the supplicant. It also maintains state information about the supplicant and what it needs to do next.

- -

DOMWifiManager.js

- -

This implements the DOM API, transmitting messages back and forth between callers and the actual WiFi worker. There's very little logic involved.

- -
-

Note: In order to avoid synchronous messages to the chrome process, the WiFi Manager does need to cache the state based on the received event.

-
- -

There's a single synchronous message, which is sent at the time the DOM API is instantiated, in order to get the current state of the supplicant.

- -

DHCP

- -

DHCP and DNS are handled by dhcpcd, the standard Linux DHCP client. However, it's not able to react when the network connection is lost. Because of this, Firefox OS kills and restarts dhcpcd each time it connects to a given wireless network.

- -

dhcpcd is also responsible for setting the default route; we call into the network manager to tell the kernel about DNS servers.

- -

Network Manager

- -

The Network Manager configures network interfaces opened by the 3G data and WiFi components.

- -
-

Note: This needs to be written.

-
- -

Processes and threads

- -

Firefox OS uses POSIX threads to implement all application threads — this includes the main thread of each application as well as web workers and helper threads. Control groups are used to prioritize process and thread execution thus relying on the Linux kernel's completely fair scheduler. Depending on the status of a process we assign it to different control group. We've currently got 6 priority levels corresponding to 5 control groups:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Process priority levels
PriorityControl groupUsed for
MASTER Main b2g process
FOREGROUND_HIGHapps/criticalCritical applications holding the cpu or highpriority wakelock; this is currently reserved for the clock and communications applications
FOREGROUNDappsForeground applications
FOREGROUND_KEYBOARDappsKeyboard application
BACKGROUND_PERCEIVABLEapps/bg_perceivableBackground applications playing audio or holding the holding the cpu or highpriority wakelock and having at least a system message handler registered
BACKGROUNDapps/bg_non_interactiveAll other applications running in the background
- -

Some levels share the same control group, that's because those levels currently differ in the way they're treated by the out of memory killer. All priorities can be adjusted at build time via preferences; the relevant entries can be found in the b2g/app/b2g.js file.

- -

The following control groups are currently used:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Control groups
PathCPU allocationDescription
 50% of total CPU timeRoot control group reserved for the main b2g process and system daemons
apps50% of total CPU timeRegular applications
apps/critical95% of appsCritical applications
apps/bg_perceivable10% of appsPerceivable background applications
apps/bg_non_interactive5% of appsBackground applications
- -
-

Note: for more information on the out-of-memory killer, and how Firefox OS manages low memory situations, read Out of memory management on Firefox OS.

-
- -

Within a process the main thread inherits the "nice value" of the process whilst web worker threads are given a "nice value" that is one point higher than the main thread thus running at lower priority. This is done in order to prevent CPU-intensive workers from excessively slowing down the main thread. All threads of an application are currently assigned to the same control group. Process priorities are changed whenever a major event happens such as an application being sent into the background or foreground, a new application starting up or an existing application grabbing a CPU wakelock.

- -
-

Note: cgroups support on ICS devices is currently broken due to a kernel bug.

-
diff --git a/files/de/archive/b2g_os/platform/index.html b/files/de/archive/b2g_os/platform/index.html deleted file mode 100644 index db8c4e9960..0000000000 --- a/files/de/archive/b2g_os/platform/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Firefox OS Plattform -slug: Archive/B2G_OS/Platform -tags: - - Architektur - - Firefox OS - - Plattform - - Übersicht -translation_of: Archive/B2G_OS/Platform ---- -

Die Firefox OS Plattform besteht aus vielen Komponenten. Du musst seine Architektur nicht verstehen, um Apps für Firefox OS zu entwickeln. Falls Du aber an der Plattform selbst oder an ihrer Portierung mitentwickelst oder einfach nur neugierig bist, dann könnte diese Dokumentation interessant für Dich sein.

- - - - - - - - -
-

Dokumentationen zur Firefox OS Plattform

- -
-
Firefox OS Architektur: Überblick
-
Ein Überblick über die interne Struktur von Firefox OS; vor allem für diejenigen interessant, die an der Plattform oder ihrer Portierung mitentwickeln.
-
Firefox OS Architektur: Apps
-
Ein Überblick über das Anwendungs-Modell von Firefox OS.
-
Gaia
-
Dokumentation über Gaia, die Benutzeroberfläche von Firefox OS Geräten. Gaia ist eine Web-Anwendung, die auf der Firefox OS Betriebssystem-Schicht läuft.
-
Gonk
-
Dokumentation über Gonk, die Betriebssystem-Schicht unterhalb von Gaia. Gonk besteht aus einem Linux Kernel und einer Hardware-Abstraktionsschicht, mit der Gecko kommuniziert.
-
Gecko
-
Gecko ist die Ebene im Firefox OS, die dieselben offenen Web Standard-Implementierungen bereit stellt wie sie auch von Firefox, Thunderbird und vielen anderen Anwendungen genutzt werden.
-
 Sicherheit
-
Dokumentation über die Sicherheit in Firefox OS; dies beinhaltet alle Themen rund um die Sicherheit von Firefox OS Geräten: für die App-Entwicklung, für die Integration von Geräten in Netzwerke und so weiter.
-
Speicherengpässe in Firefox OS
-
Dieser Artikel erläutert wie Firefox OS mit Hilfe des "low memory killers" und der "low memory notifications" mit Speicherengpässen umgeht.
-
Feature Liste
-
Eine Liste mit den verfügbaren Features pro Firefox OS Release.
-
Firefox OS Einstellungen
-
Eine Liste allgemeiner Einstellungen, die mit dem Settings API vorgenommen werden können.
-
- -

Alle anzeigen...

-
-

Wir helfen Dir

- -

Wenn Du mit Firefox OS arbeitest oder Apps für Firefox OS Geräte entwickelst, dann kann Dir unsere große MDN-Geimeinschaft bei Fragen und Problemen helfen!

- -
    -
  • Besuche das Boot to Gecko Projekt Forum: {{ DiscussionList("dev-b2g", "mozilla.dev.b2g") }}
  • -
- -
    -
  • Stell Deine Fragen in Mozilla's Boot to Gecko IRC Channel: #b2g
  • -
- -

Bitte vergiss nicht die netiquette...

- -

 

- - - - - - -

Quellen

- - -
- -

 

diff --git a/files/de/archive/b2g_os/quickstart/deine_erste_app/index.html b/files/de/archive/b2g_os/quickstart/deine_erste_app/index.html deleted file mode 100644 index abd858245b..0000000000 --- a/files/de/archive/b2g_os/quickstart/deine_erste_app/index.html +++ /dev/null @@ -1,339 +0,0 @@ ---- -title: Deine erste App -slug: Archive/B2G_OS/Quickstart/deine_erste_app -tags: - - Anfänger - - Apps - - FirefoxOS - - Guide -translation_of: Archive/B2G_OS/Quickstart/Your_first_app ---- -
-

Hinweis: Das Quickstart-Abschnitt wurde mit einem neuen, fokussierter Quick Artikel, der alle bisherigen Artikel ersetzt aktualisiert. Wir hoffen, dass Sie diese nützlicher finden, und eine schnellere Lernerfahrung als die älteren Artikel haben.

-
-
-
-

Offene Web-Anwendungen (Web-Entwickler) geben, was sie seit Jahren gewünscht haben: ein Cross-Plattform-Umgebung, um installierbare Apps mit nur HTML, CSS und JavaScript erstellen gewidmet - mit Firefox OS, der erste dedizierte Open Web App-Plattform.

-
-
- Dieser Leitfaden soll Sie unternehmungslustig schnell mit einer grundlegenden Architektur und Anweisungen zu bauen inspirieren, so dass Sie die nächste große app erstellen können!
-
-
-

Wenn Sie dieser Anleitung folgen möchten, können Sie unsere Schnellstart-app-Vorlage herunterladen. Finden Sie mehr heraus was unser Apps-Vorlage-Guide enthält.

-
-

App-Struktur

-

 

-
-
-

Verpackt vs. gehostete Anwendungen

-
-

Es gibt zwei Arten der offenen Web-apps :  verpackt und gehostet. Verpackte apps sind im Wesentlichen die Zip-Dateien, alle Anwendung Anlagewerten: HTML, CSS, JavaScript, Bilder, Manifest, etc.. Gehostete Anwendungen laufen von einem Server in einer bestimmten Domain, genau wie eine standard-Website. Beide app-Arten benötigen ein gültiges Manifest. Wenn Ihre app auf dem Firefox-Marktplatz kommt, wird Ihre Anwendung als  Zip-Datei hochladen oder geben Sie die URL an, wo Ihre gehostete Anwendung  ist.

-
-

-
-

In Partnerschaft mit Treehouse erstellt : Zu die Treehouse Seite

-
-
-

Für die Zwecke dieses Leitfadens erstellen Sie eine gehostete app die werden dann an Ihre Adresse "localhost" geschickt. Sobald Ihre app bereit ist um auf die Liste des Firefox-Marktplatz zukommen, können Sie die Entscheidung, als verpackte app oder als gehostete Anwendung zu starten.

-

Manifeste App

-

Alle Firefox-app erfordern eine manifest.webapp -Datei im Stammverzeichnis der app.  Die manifest.webapp -Datei enthält wichtige Informationen über die app wie Version, Name, Beschreibung, Symbolspeicherort, Locale Zeichenfolgen, Domains, wo die app aus, installiert werden kann, und vieles mehr. Nur der Name und die Beschreibung sind erforderlich. Das einfache Manifest innerhalb der app-Vorlage enthalten ist, die der folgenden ähnelt:

-
{
-  "version": "0.1",
-  "name": "Open Web App",
-  "description": "Die eeindruckende Open Web App",
-  "launch_path": "/app-template/index.html",
-  "icons": {
-    "16": "/app-template/app-icons/icon-16.png",
-    "48": "/app-template/app-icons/icon-48.png",
-    "128": "/app-template/app-icons/icon-128.png"
-  },
-  "developer": {
-    "name": "Ihr Name",
-    "url": "http://ihrebeeindruckendeapp.eu"
-  },
-  "locales": {
-    "es": {
-      "description": "Su nueva aplicación impresionante Open Web",
-      "developer": {
-        "url": "http://ihrebeeindruckendeapp.eu"
-      }
-    },
-    "it": {
-      "description": "La tua nuova fantastica Open Web App",
-      "developer": {
-        "url": "http://ihrebeeindruckendeapp.eu"
-      }
-    }
-  },
-  "default_locale": "de"
-}
-
-

-
-

In Partnerschaft mit Treehouse erstellt : Zu die Treehouse Seite

-
-
-

 

-

Eine grundlegende Manifest ist alles, was Sie brauchen um loszulegen. Lesen Sie mehr über Manifeste Apps.

-

App Layout & Design

-

Das Design ist zunehmend wichtig, da die Bildschirmauflösungen standard auf verschiedenen Geräten geworden ist. Selbst wenn das Hauptziel Ihrer App mobile Plattformen wie Firefox-OS ist, haben andere Geräte wahrscheinlich auch darauf zugriff.  Mit CSS Media Queries können Sie das Layout des Gerät anpassen, wie in diesem CSS-Beispiel gezeigt:

-
-
-  
-
-
-/* Im folgenden Text werden Beispiele von Verschiedenen CSS Media Queries gezeigt */
-
-  /* Grundlegende Desktop/Bildschirm breite */
-@media only screen and (min-width : 1224px) {
-  /* style */
-}
-
-/* iPhone breite */
-@media
-  only screen and (-webkit-min-device-pixel-ratio : 1.5),
-  only screen and (min-device-pixel-ratio : 1.5) {
-  /* styles */
-}
-
-/* Geräteeinstellungen auf verschiedenen Ausrichtungen */
-@media screen and (orientation:portrait) {
-  /* styles */
-}
-@media screen and (orientation:landscape) {
-  /* styles */
-}
-

Es gibt viele JavaScript und CSS-Frameworks für responsive Design und mobile app Entwicklung (Bootstrap, etc.) Wählen Sie die Framework(s), die am besten zu Ihrer app-Entwicklung passen.

-

Web APIs

-

JavaScript-APIs werden erstellt und so schnell wie Geräte erweitert. Mozillas WebAPI Aufwand bringt Dutzende von mobilen Standardfunktionen von JavaScript-APIs. Eine Liste der Geräte-Support und Status steht auf der Seite des WebAPI zur Verfügung. JavaScript-Feature-Erkennung ist immer noch die beste Praxis, wie im folgenden Beispiel gezeigt:// Wenn dieses Gerät das Vibrieren API unterstützt

-
// Wenn dieses Gerät Vibration API unterstützt ...
-
-if('vibrate' in navigator) {
-    // ... Vibration in Sekunden
-    navigator.vibrate(1000);
-}
-

Im folgenden Beispiel wird das Anzeigeformat von einer <div> basierend auf die Änderungen in der Ladezustand des Geräts geändert :

-
// Erstellen Sie die Batterie Indiktator Hörer
-(function() {
-  var battery = navigator.battery || navigator.mozBattery || navigator.webkitBattery,
-      indicator, indicatorPercentage;
-
-  if(battery) {
-    indicator = document.getElementById('indicator'),
-    indicatorPercentage = document.getElementById('indicator-percentage');
-
-    // Zuhörer für Änderung
-    battery.addEventListener('chargingchange', updateBattery);
-    battery.addEventListener('levelchange', updateBattery);
-
-    // Aktualisiert sofort
-    updateBattery();
-  }
-
-  function updateBattery() {
-    // Prozent aktualisieren Breite und Text
-    var level = (battery.level * 100) + '%';
-    indicatorPercentage.style.width = level;
-    indicatorPercentage.innerHTML = 'Battery: ' + level;
-    // Ladestatus Updaten
-    indicator.className = battery.charging ? 'charging' : '';
-  }
-})();
-

Im Beispiel oben sobald Sie bestätigen, dass die Batterie-API unterstützt wird, können Sie Ereignis-Listener für Chargingchange und Levelchange um das Element Anzeige aktualisieren hinzufügen. Versuchen Sie, die folgenden auf die Quickstart-Vorlage, und sehen Sie, wenn Sie es funktioniert.

-
-
- Überprüfen Sie die WebAPI-Seite regelmäßig, um sich mit Gerät API Status aktuell zu halten.
-
-  
-
-
-

API-Funktionen installieren

-
-  
-
-

In unserem Quickstart-app Beispielvorlage, haben wir eine installierungs-Schaltfläche, die Sie anklicken können, wenn Sie die app als standard website haben möchten ,
- und diese Website auf Firefox-OS als app zu installieren. Das Knopf-Markup ist nichts Besonderes:

-
<button id="install-btn">App Installieren</button>
-
-
- Diese Tastenfunktionen wird mithilfe der installieren-API implementiert (siehe install.js):
-
-  
-
-
var mainifest_url = location.href + 'manifest.webapp';
-
-function install(ev) {
-  ev.preventDefault();
-//Manifest URL Definieren
-// App Installieren
-  var installLocFind = navigator.mozApps.install(manifest_url);
-  installLocFind.onsuccess = function(data) {
-    // Wenn die App Installiert ist
-  };
-  installLocFind.onerror = function() {
-    // App ist nicht Installiert
-    // installapp.error.name
-    alert(installLocFind.error.name);
-  };
-};
-
-// Eine Verweis auf die Schaltfläche und rufen Sie install() auf Klick wenn die App nicht Installiert ist. Wenn sie installiert ist ist die Schaltfläche ausgeblendet.
-var button = document.getElementById('install-btn');
-
-var installCheck = navigator.mozApps.checkInstalled(manifest_url);
-
-installCheck.onsuccess = function() {
-  if(installCheck.result) {
-    button.style.display = "none";
-  } else {
-    button.addEventListener('click', install, false);
-  };
-};
-
-

Gehen Sie kurz alles durch was vor sich geht :

-
    -
  1. -
    - Wir erhalten einen Verweis auf die Schaltfläche "installieren" und speichern Sie sie in die Schaltfläche "Variablen".
    -
  2. -
  3. Wir verwenden navigator.mozApps.checkInstalled um zu prüfen, ob die App definiert durch das Manifest im http://people.mozilla.com/~cmills/location-finder/manifest.webapp bereits auf dem Gerät installiert ist. Dieser Text wird als Variable installCheck gespeichert.
  4. -
  5. Wenn der Test erfolgreich durchgeführt wird, dann wird sein Success Ereignis ausgelöst, daher wird installCheck.onsuccess = function() { ... } ausgeführt.
  6. -
  7. Wenn die App bereits Installiert ist wird die Schaltfläche ausgeblendet.
  8. -
  9. -
    -
    -
    -
    - Wenn die app nicht installiert ist, fügen wir einen Click-Ereignis-Listener zur Schaltfläche, so dass die Funktion install() ausgeführt wird, wenn die Schaltfläche geklickt wird.
    -
    -
    -
    -
  10. -
  11. Wenn die Schaltfläche angeklickt wird, und die Funktion install() ausgeführt wird, wird die Betriebsstätte für die manifest-Datei in eine Variable namens manifest_url und installieren dann die app unter Verwendung navigator.mozApps.install(manifest_url), einen Verweis auf die Installation in der InstallLocFind-Variablen zu speichern. Sie werden bemerken, dass diese Installation auch Erfolg und Fehler-Ereignisse auslöst, damit Sie Aktionen abhängig ausführen können, ob die Installation erfolgreich oder nicht passiert ist.
  12. -
-

Vielleicht möchten Sie den Umsetzung Stand der API prüfen, wenn dann aber zuerst nach installierbare Webanwendungen.

-
-
-
- Hinweis: Installierbare offene Web-Anwendungen haben eine Sicherheitsrichtlinie "einzelne app pro Herkunft"; Grundsätzlich können Sie nicht mehr als eine installierbare app pro Herkunft hosten. Dies vereinfacht das Testen ein wenig komplizierter, aber es gibt noch Wege, um dieses, wie das Erstellen von verschiedenen Subdomains für apps, testen sie mit der Firefox-OS-Simulator, oder testen die Install-Funktionalität auf Firefox Aurora/nächtliche, welches Ihnen erlaubt zu installierbare Webanwendungen auf dem Desktop zu installieren. Siehe FAQs über apps Manifeste für weitere Informationen zur Herkunft.
-
-
-
-

WebRT APIs (APIs auf der Grundlage von Berechtigungen)

-
-
-
- Es gibt eine Reihe von WebAPIs, aber die benötigen spezielle Berechtigungen für dieses Feature aktiviert werden. Apps können registrieren Berechtigungsanforderungen innerhalb der manifest.webapp-Datei wie folgt:
-
-  
-
-
// Neuer Key im Manifest : "permissions"
-// Anforderung der Zugriffe auf eine belibige Anzahl von APIs
-// Hier bitten wir um die berechtigung für die SystemXHR API
-"permissions": {
-    "systemXHR": {}
-}
-
-
- Die drei Stufen der Berechtigung sind wie folgt:
-
-  
-
- -
-
- Weitere Informationen zu app-Berechtigungsstufen, Arten von verpackten apps lesen. Sie finden weitere Informationen über Berechtigungen welche APIs erfordern , und welche Berechtigungen sind erforderlich, um App-Berechtigungen.
-
-  
-
-
-
-
- Es ist wichtig zu beachten, dass nicht alle Web-APIs in der Firefox-OS-Simulator umgesetzt werden.
-
-
-

Tools & Testen

-
-
- Testen ist unglaublich wichtig, wenn mobile Geräte unterstützt. Es gibt viele Optionen zum Testen von installierbaren open-Web-apps.
-
-  
-
-

Firefox OS Simulator

-
-
- Installation und Verwendung der Firefox-OS-Simulator ist der einfachste Weg zum aufstehen und laufen mit Ihrer app. Nach der Installation des Simulators ist es aus dem Tools-> Web Developer-> Firefox-OS-Simulator-Menü zugänglich. Der Simulator startet mit einer JavaScript-Konsole, damit Sie Ihre Anwendung in den Simulator Debuggen können.
-
-  
-
-

App Manager

-
-
- Das neue Kind auf den Block im Hinblick auf die Testtools nennt man den App-Manager. Mit diesem Tool können Sie Verbindung mit einem kompatiblen Gerät über USB (oder ein Firefox-OS-Simulator) desktop Firefox, apps direkt auf das Gerät schieben, apps zu validieren und Debuggen sie, wie sie auf dem Gerät ausgeführt.
-
-  
-
-

Unit Tests

-
-
- Unit-Tests sind sehr wertvoll, wenn Sie auf verschiedenen Geräten zu testen und baut. jQuery's QUnit ist eine beliebte Client-seitige Dienstprogramm zum Testen, aber können Sie einen beliebigen Satz von Testtools, die Sie möchten.
-
-  
-
-
-

Firefox OS auf einem Gerät installieren

-
-
-
- Da Firefox-OS ein open-Source-Plattform ist sind Code und Tools Erstellen und installieren Firefox-OS auf Ihrem eigenen Gerät verfügbar. Build sowie Installationsanweisungen und Anmerkungen zu welchen Geräten es auf, installiert werden kann finden Sie auf MDN.
-
-  
-
-
-
- Spezielle Firefox-OS Entwickler Vorschau Geräte stehen zur Verfügung: Lesen Sie unsere Entwickler-Vorschau-Telefon-Seite für weitere Informationen.
-
-  
-
-  
-
-
-

App-einreichen und Verteilung

-
-

Wenn Ihre app abgeschlossen ist, können Sie es selbst hosten wie eine standard-Website oder app (Lesen Sie self-publishing-Anwendungen für weitere Informationen), oder es kann eingereicht werden, auf den Firefox-Markt. Ihre Anwendung Manifest überprüft werden können Sie wählen, welche Geräte Ihr app unterstützt (z.B. Firefox OS, Desktop, Firefox, Firefox Mobile, Firefox Tablet). Sobald validiert, können die app Liste innerhalb der Marktplatz Sie fügen Sie zusätzliche Informationen über Ihre app (Screenshots, Beschreibungen, Preise, etc.) und offiziell einreichen. Sobald die App genehmigt ist, ist Ihre app der Welt für die Beschaffung und Installation zur Verfügung.

-
-

Marktplatz & Mehr Angaben

-
-
    -
  1. Senden Sie eine App auf den Firefox-OS-Marktz
  2. -
  3. Marktplatz-Prüfkriterien
  4. -
  5. - -
  6. -
-

 

-

 

-

Übersetzung bei Enes E.

-
diff --git a/files/de/archive/b2g_os/quickstart/einfuerung_zu_firefox_os/index.html b/files/de/archive/b2g_os/quickstart/einfuerung_zu_firefox_os/index.html deleted file mode 100644 index b262d5f208..0000000000 --- a/files/de/archive/b2g_os/quickstart/einfuerung_zu_firefox_os/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Einführung zu Firefox OS -slug: Archive/B2G_OS/Quickstart/Einfuerung_zu_Firefox_OS -translation_of: Archive/B2G_OS/Quickstart/Intro_to_Firefox_OS ---- -
-

Firefox OS ist ein neues Mobilbetriebssystem, entwickelt von Mozillas Boot to Gecko (B2G) Projekt. Es besteht aus einem Linux Kernel und bootet als eine auf Gecko basierende Laufzeitumgebung, die es Nutzern ermöglicht Anwendungen, geschrieben in HTML, JavaScript, und mit anderen offenen APIs für Webanwendungen, auszuführen.

-
-

Firefox OS (also referred to by its codename "Boot to Gecko" or "B2G") is Mozilla's open source mobile operating system, based a Linux kernel, which boots into a Gecko-based runtime engine that lets users run applications developed entirely using HTML, CSS, JavaScript, and open web application APIs. Firefox OS is a mobile operating system that's free from proprietary technology while still a powerful platform that provides application developers an opportunity to create excellent products. In addition, it's flexible and capable enough to make the end user happy.

-

-

Firefox OS comes with a suite of pre-installed applications called Gaia, which handle the fundamental functions of the phone such as settings, calls, SMS, taking and storing photos, etc.

-

For Web developers, the most important part to understand is that the entire user interface is a Web app, one that is capable of displaying and launching other Web apps. Any modifications you make to the user interface and any applications you create to run on Firefox OS are Web pages, albeit with enhanced access to the mobile device's hardware and services.

-

Firefox OS is currently under heavy development; we are constantly working on ways to make it easier for you to use and hack on Gaia and create apps. However, you need knowledge about systems in order to do things like build the entire Firefox OS stack, or flash a phone with a build of Firefox OS. To find such information, and lots more besides, head on over to our Firefox OS content zone.

diff --git a/files/de/archive/b2g_os/quickstart/for_mobile_developers/index.html b/files/de/archive/b2g_os/quickstart/for_mobile_developers/index.html deleted file mode 100644 index e4a00e9335..0000000000 --- a/files/de/archive/b2g_os/quickstart/for_mobile_developers/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: App development for mobile developers -slug: Archive/B2G_OS/Quickstart/For_mobile_developers -translation_of: Archive/B2G_OS/Quickstart/For_mobile_developers ---- -
-

If you are a native mobile platform developer, why should you look into developer open web apps? This article talks you through open web app advantages, and the basic steps required to create one.

-
-

Advantages

-

For mobile application developers, the open web apps project offers these advantages:

- -

Steps to developing a Web app

-
-
- 1. Develop your app using open Web technologies.
-
- You probably already know at least a bit about HTML, CSS, and JavaScript. The Learn section of this website has resources to help you ramp up even more. As a mobile app developer, you already have a Mobile First approach to Web design.
-
- 2. Add an app manifest.
-
- All that inherently separates a Web app from a normal website is a single, JSON-format text file.
-
- 3. Publish the app, either on your own site or in an app store (or both).
-
- Publishing it yourself requires adding some code to your site to manage installing and updating the app in users' browsers.
-
-

Optional features

-

{{ page("/en-US/docs/Web/Apps/For_Web_developers", "Optional_features") }}

-

Useful technologies

-

See Useful technologies.

-

See also

- diff --git a/files/de/archive/b2g_os/quickstart/index.html b/files/de/archive/b2g_os/quickstart/index.html deleted file mode 100644 index ebe1f7c220..0000000000 --- a/files/de/archive/b2g_os/quickstart/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Build -slug: Archive/B2G_OS/Quickstart -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Quickstart ---- -
-

Quickstart information on coding open web apps.

-
-
-
- Introduction to open web apps
-
- What are open web apps? How they differ from regular web pages? Why is this significant? This article aims to answer these questions and more.
-
- Your first app
-
- This article takes you through the basic steps and additional knowledge on top of regular web development required to create installable open web apps.
-
- Introduction to Firefox OS
-
- An introduction to Firefox OS, Mozilla's new open web app-based mobile platform.
-
- Introduction to manifests
-
- An FAQ designed to answer any questions you may have about manifests, hosting apps, origins, and other such topics.
-
- App development for web developers
-
- If you're a web developer, how do open web apps differ from what you're used to? This article explains all.
-
- App development for mobile developers
-
- If you're a native mobile application developer, what advantages can open web apps bring to you, and how do they differ from what you are used to? Here are some ideas.
-
- Developing app functionality
-
- This page talks about the kinds of different functionality that you might want to build into your apps, with links to further information.
-
- Payments
-
- How do you build functionality to make people pay for installing your open web apps? Here is the lowdown.
-
- App tools
-
- Last for this section, we provide some links to more information on the tools available to help you develop great open web apps.
-
diff --git a/files/de/archive/b2g_os/quickstart/open_web_apps_and_web_standards/index.html b/files/de/archive/b2g_os/quickstart/open_web_apps_and_web_standards/index.html deleted file mode 100644 index f0767b57ed..0000000000 --- a/files/de/archive/b2g_os/quickstart/open_web_apps_and_web_standards/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Offene Web Apps und Web Standards -slug: Archive/B2G_OS/Quickstart/Open_Web_apps_and_Web_standards -translation_of: Archive/B2G_OS/Quickstart/Intro_to_open_web_apps ---- -

Multi devices

-

Das Web ist die Plattform

-

Open Web Apps are a great opportunity for those who need to develop applications that work on the largest number of devices, and for those who cannot afford to develop an app for every vendor platform (such as Android, iOS, and "classical" desktop web browsers). The difference between an app and a website is that you can install an app and more thoroughly integrate it into your device. It’s not a bookmark — it’s part of a system. Open Web Apps hold that great promise. They are an opportunity that we should not miss, otherwise the Web might become fragmented once more.

-

With this in mind it should be clear that Open Web Apps (OWA in short) are intended to be standardized and to become part of "the Web". If successful, OWA should eventually work on all browsers, operating systems anddevices.

-

At Mozilla we are working hard to create this apps platform that is backed entirely by the open Web. It’s not intended to be a “Mozilla platform” or a “Firefox platform”. The Web is the platform. We’re creating a set of open APIs and implementations to show how portable apps can exist on the Web without vendor lock-in. Other groups like Facebook and Google Chrome are also working on apps platforms backed by the Web. Facebook apps are meant to hook into Facebook and Chrome apps are designed for Chrome OS devices and Google servers. Chrome apps are the most similar to Open Web Apps. We continue to collaborate with the Google Chrome team as app standards evolve and we definitely share a lot of the same vision. There is tremendous potential for all Web based app platforms to converge and we invite all vendors to help us build the right Open Web App APIs.

-

Even though currently you must have a Mozilla Firefox-based engine ("Web runtime") to use Open Web Apps, it is not intended that this always will be the case. Many parts of the Open Web Apps project are still being worked out and it isn't possible to implement everything in all browsers at once. Although many parts of Open Web Apps are already standardized, many other parts are still in flux. It is intended and hoped that Open Web Apps will be a standard capability that is available in all major browsers.

-

Therefore, when you read the MDN pages that deal with Open Web Apps, please keep in mind that even though much of the information is specific to Firefox right now, it will hopefully enable you to develop Open Web Apps for all browsers in the future.

-

Web standards

-

OWA technology is not a single piece, it is an umbrella that groups many different technologies and some of them are very young. At the moment, parts of OWA are standardized (HTML5, CSS, JavaScript, IndexedDB, etc.). Other parts are not yet standardized and the Mozilla implementation is thus specific to Firefox or to some other Mozilla technology. As the Mozilla mission is to share and to empower everyone, this situation is only temporary. That's why in the OWA docs we will try to clearly identify the parts of OWA that are not yet standardized.

-

Please also note that there may be some OWA-related proposals and potential standards that are not used by Mozilla.

-

Intended eventual standards

-

So here are the parts not standardized yet across the different Web platforms and that still are Firefox-only for the moment:

- -

Marketplace

-

Buy Once, Run Everywhere

-

From the ground up Mozilla has been building an apps system that lets users buy an app once and run it on all of their HTML5 devices. Very soon Mozilla will launch the first Firefox OS phone but that will be just one device on which to run your apps. When you purchase an app through the Firefox Marketplace, the system installs a receipt on your device. The receipt is a JSON Web Token with metadata that links to the Marketplace’s public key and its verification service URL. When an app starts up it can verify the receipt but the receipt on the device is not tied to the Firefox Marketplace. The receipt is just a cryptographically verifiable proof of purchase. Anyone can sell open Web apps if they follow the receipt specs. When you buy an app, it is intended to be portable across any device that supports the Open Web Apps system.

-

Mozilla is building the infrastructure needed to run Open Web Apps on any HTML5 device. Firefox for Android will let you install and run apps (you can try it today on the nightly build). Installed app icons go to your home screen just like regular Android apps. You can also install and run Web apps on your Windows, Mac, or Linux desktop using Firefox (this currently works in the nightly build). Currently some version of Firefox is required, but it is intended that the Open Web Apps system will eventually be supported by all major browsers as a set of standards. From day one Mozilla has included all major HTML5 compliant browsers in its proof of concepts; you can take a look at this hosted JavaScript shim for ideas on how to support the apps platform on a non-Firefox browser.

-

In the future the Open Web Apps system will support syncing your installed apps across devices. Since receipts are portable you could just sync them yourself if you wanted to. In case it’s not obvious, you can always run a free open Web app in any browser because it is no different than a website. It might, however, use new mobile specific web APIs which are not implemented on all platforms.

-

WebPayment API

-

Commerce For Apps

-

Part of the success of mobile app platforms like iOS and Android is that they make it very easy to try out new business models through mobile payments. Those models are still evolving but commerce is no doubt something that, at the moment, is awkward on the desktop Web and more natural on mobile. Specifically, it’s very convenient to charge something to your phone bill when you’re already accessing it from your phone anyway. With the launch of Firefox OS, the apps ecosystem will support app purchases and in-app payments through the WebPayment API. Supporting commerce is crucial for the growth of an apps platform. The use of the proposed payment API is completely optional. Mozilla won’t prevent any app from using its own in-app payment system.

-

See also

- diff --git a/files/de/archive/b2g_os/releases/1.4/index.html b/files/de/archive/b2g_os/releases/1.4/index.html deleted file mode 100644 index 47b18c0fbc..0000000000 --- a/files/de/archive/b2g_os/releases/1.4/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Firefox OS 1.4 for developers -slug: Archive/B2G_OS/Releases/1.4 -translation_of: Archive/B2G_OS/Releases/1.4 ---- -
-

Firefox OS 1.4 ist derzeit noch eien Vorabversion. Die Gecko Komponenten basieren auf Firefox 30 (dazu:Firefox 30 release notes for developers). Diese Seite beschreibt die neu hinzugefügten Entwicklerfunktionen in Firefox OS 1.4.

-
-

CSS

-

Gecko allgemein:

- -

JavaScript

-

SpiderMonkey general:

- -

Interfaces/APIs/DOM

-

Firefox OS specific:

- -

Gecko general:

- -

SVG

-

Gecko general:

- -

Manifest

- -

See also

- -

Older versions

-

- -

-

diff --git a/files/de/archive/b2g_os/releases/2.0/index.html b/files/de/archive/b2g_os/releases/2.0/index.html deleted file mode 100644 index 175d141e00..0000000000 --- a/files/de/archive/b2g_os/releases/2.0/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Firefox OS 2.0 for developers -slug: Archive/B2G_OS/Releases/2.0 -translation_of: Archive/B2G_OS/Releases/2.0 ---- -
-

This page details the developer features newly implemented in Gecko that are specific to Firefox OS 2.0.

-
- -
-

Firefox OS 2.0's Gecko component is based on Firefox 31/32.

-
- -

New product features

- -

This section provides a summary of the new features available in Firefox OS 2.0. For more details on specific platform changes (API additions, etc.), see the Platform additions in detail section.

- -
-
NFC
-
This release includes support for device-to-device content sharing support with NFC (Near Field Communication). You can pair your device with another, then swipe to share your contacts, media, or favorite URLs with others.
-
Telephony
-
Firefox OS now supports both IPv4 and IPv6 addresses in the network manager.
-
Find My Device
-
If you’ve lost your Firefox OS smartphone, Find My Device can help you find it (see the http://find.firefox.com website). You can see it on a map, make it play a sound and have it display a message. You can also remotely lock it or delete your personal info. To get started, create a Firefox Account (Settings > Firefox Accounts on your device) and enable Find My Device (Settings > Find My Device).
-
Media
-
You can now create your own ringtones using your own music collection, or songs you download from the Web.
-
Camera
-
The Camera app now supports various focus modes: Touch, Continuous Auto and Face tracking.
-
Productivity
-
We've done a visual refresh of the Email, Calender, and Clock apps.
-
Homescreen
-
Firefox OS 2.0 introduces a simpler vertical-scrolling homescreen with larger icons.
-
Edge-gesture app switching
-
Edge gestures are now available for switching between apps (swipe your thumb from the left edge of the screen to the right and vice versa, to switch between multiple open apps.)
-
- -

New partner features

- -
-
E.ME integration
-
E.ME integration provides direct access to web apps while configurable search providers can search the web at the same time.
-
- -

New DevTools features

- -

The Firefox Developer Tools have had a large number of features added in Firefox versions 31 and 32; these aren't Firefox OS-specific, but you can take advantage of them when debugging your Firefox OS apps through WebIDE. To find out more, read:

- - - -

Platform additions in detail

- -
-

Note: Our list here includes features most important to Firefox OS. For an expanded list of general Gecko feature additions (which are generally also present in Firefox OS 2.0), consult the Firefox 31 release notes for developers and Firefox 32 release notes for developers.

-
- -

Web API

- - - -

CSS

- - - -

Technology support improvements

- - - -

Older versions

- -

- -

diff --git a/files/de/archive/b2g_os/releases/index.html b/files/de/archive/b2g_os/releases/index.html deleted file mode 100644 index 3edbcd4c75..0000000000 --- a/files/de/archive/b2g_os/releases/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Firefox OS developer release notes -slug: Archive/B2G_OS/Releases -tags: - - Firefox OS - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Releases ---- -

Firefox OS release notes by version

-

This section provides articles covering each new release of Gaia and Gecko for Firefox OS, explaining what features were added and bugs eliminated in each update. There is also a linked summary table showing what APIs are supported by each version of Firefox OS.

-
- {{ListSubpages("",1,0,1)}}
-

Other supporting information

-
-
- Firefox OS API support table
-
- Lists the different APIs available, and what versions of Firefox have support for them.
-
- App permissions
-
- Lists hosted, privileged and certified APIs, along with information on the permissions they need to have set in the App Manifest of your installable apps, such as the manifest permission name, app type required, description, access property, and default permission.
-
diff --git a/files/de/archive/b2g_os/simulator/index.html b/files/de/archive/b2g_os/simulator/index.html deleted file mode 100644 index 5fa8770578..0000000000 --- a/files/de/archive/b2g_os/simulator/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Firefox-OS-Simulator -slug: Archive/B2G_OS/Simulator -translation_of: Archive/B2G_OS/Simulator ---- -
-

Diese Seite beschreibt den Firefox-OS-Simulator für Entwickler für Firefox OS 1.2 oder neuer. Wenn Sie Apps für Firefox OS 1.1 entwickeln, sollten Sie sich stattdessen die Dokumentation für Firefox-OS-1.1-Simulator ansehen.

-
- -

Der Firefox-OS-Simulator ist eine Version der höheren Schichten von Firefox OS, die ein Firefox-OS-Gerät simuliert, aber auf dem Desktop läuft. Dies bedeutet, dass Sie in vielen Fällen kein echtes Gerät benötigen, um Ihre App zu testen und zu debuggen. Er läuft in einem Fenster mit der selben Größe wie ein Firefox-OS-Gerät, enthält die Benutzeroberfläche sowie die integrierten Apps von FirefoxOS und simuliert viele der APIs eines Firefox-OS-Geräts.

- -

Der Simulator wird als Firefox-Add-on gepackt und verteilt. Sobald Sie ihn heruntergeladen und in Firefox installiert haben, können Sie ihn ausführen, Apps darauf laden und mit dem App-Manager Entwicklerwerkzeuge einsetzen.

- -

Installation

- -

Um den Simulator zu installieren, klicken Sie auf die folgende Schaltfläche. (Es stehen mehrere Versionen zur Verfügung und zwecks maximaler Flexibilität sollten Sie alle installieren):

- -

Simulator installieren

- -

Um den Simulator zu starten, lesen sie die Anweisungen in der Dokumentation des App-Managers. Sobald der Simulator läuft, können Sie Apps darauf laden und dann mit dem App-Manager debuggen, genau wie mit einem echten Gerät. Ich habe unter Windows 7, Firefox 37.0.1 und mit Firefox OS Simulator die Erfahrung gemacht, dass erster Start in der WebIDE klappt nicht, dafür funktioniert 2. oder 3. Start. Auch dann, wenn eine Meldung: "Zeitüberschreitung bei der operation: connecting to runtime Firefox OS 2.0" in der WebIDE angezeigt wird.

- -

Die Simulator-Oberfläche

- -

Der Simulator erscheint als eigenes Fenster, so dass der simulierte Bildschirm 320×480 Pixel groß ist. Um Berührereignisse zu simulieren, können Sie mit der Maustaste klicken und die Maus bei gedrückter Taste ziehen. Durch Klicken und Ziehen von rechts nach links vom Startbildschirm aus sehen Sie also die integrierten Apps, sowie solche, die Sie hinzugefügt haben:

- -

- -

Der Simulator verfügt am unteren Rand über deine Symbolleiste mit zwei Schaltflächen:

- - - -

Einschränkungen des Simulators

- -

Beachten Sie, dass der Firefox-OS-Simulator keine perfekte Simulation ist.

- -

Hardware-Einschränkungen

- -

Abgesehen von der Bildschirmgröße simuliert der Simulator keine hardwareseitigen Einschränkungen eines Firefox-OS-Geräts, wie den verfügbaren Speicher oder die CPU-Geschwindigkeit.

- -

Audio-/Video-Codecs

- -

Die folgenden Codecs hängen von hardwarebeschleunigter Dekodierung ab und werden daher noch nicht unterstützt:

- - - -

Dies bedeutet, dass es nicht möglich ist,  mit dem Simulator die Wiedergabe von Videos in Apps und Websites wie YouTube zu testen, die diese Codecs benötigen.

- -

Nicht unterstützte APIs

- -

Bestimmte APIs, die auf dem Gerät funktionieren, funktionieren nicht im Simulator, was meist daran liegt, weil die unterstützende Hardware auf dem Desktop nicht verfügbar ist. Wir haben Simulationen für bestimmte APIs, wie Geolokation, eingebaut und fügen in zukünftigen Versionen vermutlich weitere hinzu. Derzeug werden die folgenden APIs allerdings nicht unterstützt. Deren Verwendung kann zu Fehlermeldungen oder einfach falschen Ergebnissen führen:

- - - -

Hilfe erhalten

- -

Wenn Sie eine Frage haben, versuchen Sie, uns auf der Mailingliste dev-developer-tools oder in #devtools auf irc.mozilla.org zu erreichen.

- -

Ausführliche Protokollierung aktivieren

- -

In der Web-Konsole, die Sie über den App-Manager mit Ihrer App verknüpfen können, werden Nachrichten, von Ihrer App aufgezeichnet. Wenn Sie Nachrichten frühzeitig erfassen möchten, die während des Starts erscheinen, bevor die Konsole verbunden wird und funktioniert, können Sie im Simulator die ausführliche Protokollierung aktivieren.

- -

Öffnen Sie about:config und erstellen Sie ein neue Einstellung. Der Name der Einstellung hängt von der Version des Simulators ab:

- - - -

Setzen Sie den String-Wert auf „all“ und deaktivieren und reaktivieren Sie das Add-on im Add-ons-Manager. Jetzt erscheinen zusätzliche Nachrichten über die Ausführung des Simulators in der Browser-Konsole.

diff --git a/files/de/archive/b2g_os/troubleshooting/index.html b/files/de/archive/b2g_os/troubleshooting/index.html deleted file mode 100644 index a83cc46042..0000000000 --- a/files/de/archive/b2g_os/troubleshooting/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Troubleshooting Firefox OS -slug: Archive/B2G_OS/Troubleshooting -translation_of: Archive/B2G_OS/Troubleshooting ---- -
-

This article provides tips for resolving common problems you may have while using Firefox OS. Please feel free to add more content to this page!

-
- -

Networking problems

- -

If you are having trouble connecting to Wi-Fi networks, it may be helpful to delete the Wi-Fi configuration file:

- -
adb shell rm /data/misc/wifi/wpa_supplicant.conf
-adb reboot
-
- -
-

Note: These instructions assume you have configured the udev settings for your device.

-
- -

Bricked Phone

- -

If you happen to brick the phone, by, for example, trying to flash wrong images on it,  try rebooting into the bootloader (fastboot or heimdal depending on your phone). The exact sequence varies depending on the phone. Try removing the usb cable, removing and then re-inserting the battery. For the Unagi and Otoro, press and hold volume up and power for several seconds until you see the splash screen. Verify that the phone is in bootloader mode by using fastboot devices (or heimdall devices for some Samsung phones). Once you can see your phone using fastboot devices, you can use ./flash.sh to flash your image for Unagi.

- -

Flashing Red LED (otoro/unagi)

- -

This means that the battery is too low to boot the phone. You can let it charge for a while (until the red LED stops flashing and a little bit longer), or you can unplug the USB cable, remove the battery, insert the USB cable, and re-insert the battery.

- -

Failure to receive SMS after switching over from iPhone

- -

If you have switched your SIM card over from an iPhone to a Firefox OS (or another different platform) device, you may run into a problem whereby you can no longer receive text messages from iPhone users. This is because iPhone to iPhone SMS messages are sent using iMessage, which works by routing iPhone-to-iPhone messages through Apple's servers instead of sending them as actual text messages, saving iPhone users money. Unfortunately when you leave iPhone, iMessage has no way of knowing you've left and SMS from other iPhone users will still go through iMessage, meaning that you won't receive them.

- -

To fix this you have to turn off iMessage for your SIM; there is a guide on how to do this at imore.com — read Here's how to turn off iMessage.

- -

Device not appearing to ADB on OSX

- -

When running adb devices in OSX, some devices may simply not appear in the device list, for a variety of reasons. This can be fixed by adding your device's vendor ID to your ~/.android/adb_usb.ini file, to provide a hint to ADB for finding your device.

- -
-

Note: See this stackoverflow post for a lot more detail, including how to find the vendor ID of the attached device, and how to add it into adb_usb.ini.

-
- -

 

diff --git a/files/de/archive/css3/index.html b/files/de/archive/css3/index.html deleted file mode 100644 index 51f6b689bb..0000000000 --- a/files/de/archive/css3/index.html +++ /dev/null @@ -1,976 +0,0 @@ ---- -title: CSS3 -slug: Archive/CSS3 -tags: - - CSS - - CSS Bezüge - - Fortgeschritten -translation_of: Archive/CSS3 ---- -

CSS3 ist die neuste Version der Cascading Style Sheets Sprache und erweitert damit CSS2.1. Sie bringt langerwartete Neuheiten, wie abgerundete Ecken, Schatten, Verläufe, Übergänge und Animationen, sowie neue Layouts wie z.B. multi-columns, flexible box oder grid layouts. Experimentelle Teile sind vendor-prefixed und sollten entweder in Productionsumgebungen vermieden oder mit großer Vorsicht verwendet werden, da sich sowohl Syntax, als auch Semantik in Zukunft noch ändern könnten.

- -

Module und der Standardisierungsprozess

- -

CSS2 brauchte 9 Jahre, von August 2002 bis Juni 2011, um als empfohlen angesehen zu werden. Was daran lag, dass ein paar zweitrangige Funktionen alle Vorschriften zurückhielten. Um die Standardisierung der fehlerfreien Funktionen zu beschleunigen, hat die CSS Working Group der W3C in der  Beijing-Doktrin beschlossen die CSS Sprache in mehrere Bausteine, Module genannt, zu zerlegen. Jedes Modul ist jetzt ein eigenständiger Teil der Sprache und bewegt sich mit eigener Geschwindigkeit zur Standardisierung zu. Während manche Module bereits von der W3C empfohlen werden, sind andere noch im frühen Entwicklungsstadium. Neue Module werden hinzugefügt, wenn neue Funktionen gebraucht werden.

- -

CSS Modules and Snapshots as defined since CSS3 Formal gibt es kein CSS3 Standard. Da jedes Modul für sich standardisiert wird, besteht das Standard-CSS aus einem CSS2.1, dass verbessert und durch vollständige Module, die nicht zwingend auf dem selben Stand sind, erweitert wurde. Zu jeder Zeit kann eine Schattenkopie des CSS Standard definiert werden, indem man CSS2.1 und die ausgereiften Module betrachtet.

- -

Das W3 Konsortium veröffentlicht regelmäßig solche Schattenkopien, wie in 20072010 und 2015.

- -

Obwohl momentan kein Modul über dem Level 3 standardisiert wurde, wird sich das in Zukunft ändern. Manche Module, wie Selectors 4 oder CSS Borders und Backgrounds Level 4 sind bereits im Editor's Draft, obwohl sie noch nicht den First Published Working Draft Status erreicht haben.

- -

CSS Modulstatus

- -

Stabile Module

- -

Ein paar CSS Module sind bereits ziemlich stabil und haben bereits eines der drei Empfehlungslevel der CSSWG erreicht: Empfehlungskandidat, vorgeschlagene Empfehlung der Empfohlen. Diese können ohne Prefixe benutzt werden und sind weitesgehend stabil, obwohl ein paar Funktionen noch auf den Empfehlungskandidat-Status herabgesetzt werden können.

- -

These modules extend and amend the CSS2.1 specification which build the core of the specification. Together with it, they are the current snapshot of the CSS specification.

- - - - - - - - - - - -
{{ SpecName("CSS3 Colors", "", "") }}{{ Spec2("CSS3 Colors") }} since June 7th, 2011
-

Adds the {{ cssxref("opacity") }} property, and the hsl(), hsla(), rgba() and rgb() functions to create {{cssxref("<color>")}} values. It also defines the currentColor keyword as a valid color.

- -

The transparent color is now a real color (thanks to the support for the alpha channel) and is a now an alias for rgba(0,0,0,0.0) .

- -

It deprecates the system-color keywords that shouldn't be used in a production environment anymore.

-
- - - - - - - - - - - -
{{ SpecName("CSS3 Selectors", "", "") }}{{ Spec2("CSS3 Selectors") }} since September 29th, 2011
-

Adds:

- -
    -
  • Substring matching attribute selectors, E[attribute^="value"], E[attribute$="value"], E[attribute*="value"] .
  • -
  • New pseudo-classes: {{ cssxref(":target") }}, {{ cssxref(":enabled") }} and {{ cssxref(":disabled") }}, {{ cssxref(":checked") }}, {{ cssxref(":indeterminate") }}, {{ cssxref(":root") }}, {{ cssxref(":nth-child") }} and {{ cssxref(":nth-last-child") }}, {{ cssxref(":nth-of-type") }} and {{ cssxref(":nth-last-of-type") }}, {{ cssxref(":last-child") }}, {{ cssxref(":first-of-type") }} and {{ cssxref(":last-of-type") }}, {{ cssxref(":only-child") }} and {{ cssxref(":only-of-type") }},{{ cssxref(":empty") }}, and {{ cssxref(":not") }}.
  • -
  • Pseudo-elements are now characterized by two colons rather than one: :after becomes {{ cssxref("::after") }}, :before becomes {{ cssxref("::before") }}, :first-letter becomes {{ cssxref("::first-letter") }}, and :first-line becomes {{ cssxref("::first-line") }}.
  • -
  • The new general sibling combinator ( h1~pre ).
  • -
-
- -

The next iteration of the Selectors specification is already in progress, though it still hasn't reached the First Public Working Draft stage.

- - - - - - - - - - - -
{{ SpecName("CSS3 Namespaces", "", "") }}{{ Spec2("CSS3 Namespaces") }} since September 29th, 2011
-

Adds the support for the XML Namespaces by defining the notion of CSS qualified name, using the ' | ' syntax and adding the {{ cssxref("@namespace") }} CSS at-rule.

-
- - - - - - - - - - - -
{{ SpecName("CSS3 Media Queries", "", "") }}{{ Spec2("CSS3 Media Queries") }} since June 19th, 2012
-

Extends the former media type ( print, screen, ) to a full language allowing queries on the device media capabilities like only screen and (color) .

- -

Media queries are not only used in CSS document but also in some attributes of HTML Elements, like the {{ htmlattrxref("media","link") }} attribute of the {{ HTMLElement("link") }} element.

-
- -

The next iteration of this specification is in the work, allowing to tailor a Web site regarding the input methods available on the user agent, with new media features like hover or pointer. Detection of EcmaScript support, using the script media features is also proposed.

- - - - - - - - - - - -
{{ SpecName("CSS3 Style", "", "") }}{{ Spec2("CSS3 Style") }} since November 7th, 2013
Formally defines the syntax of the content of the HTML style global attribute.
- - - - - - - - - - - -
{{ SpecName("CSS3 Backgrounds", "", "") }}{{ Spec2("CSS3 Backgrounds") }}
-

Adds:

- -
    -
  • Support, on backgrounds, for any type of {{cssxref("<image>")}}, and not only for uri() defined ones.
  • -
  • Support for multiple background images.
  • -
  • The {{ cssxref("background-repeat") }} space and round values, and for the 2-value syntax of this CSS property.
  • -
  • The {{ cssxref("background-attachment") }} local value.
  • -
  • The CSS {{ cssxref("background-origin") }}, {{ cssxref("background-size") }}, and {{ cssxref("background-clip") }} properties.
  • -
  • Support for curved border corners, with the CSS {{ cssxref("border-radius") }}, {{ cssxref("border-top-left-radius") }}, {{ cssxref("border-top-right-radius") }}, {{ cssxref("border-bottom-left-radius") }}, and {{ cssxref("border-bottom-right-radius") }} properties.
  • -
  • Support for the use of an {{cssxref("<image>")}} as the border with the CSS {{ cssxref("border-image") }}, {{ cssxref("border-image-source") }}, {{ cssxref("border-image-slice") }}, {{ cssxref("border-image-width") }}, {{ cssxref("border-image-outset") }}, and {{ cssxref("border-image-repeat") }} properties.
  • -
  • Support for shadows of the element with the CSS {{ cssxref("box-shadow") }} property.
  • -
-
- -

The CSS4 iteration of the Backgrounds and Borders specification is already in progress, though it still hasn't reached the First Public Working Draft stage, it plans to add the ability to clip a border (with the CSS {{ cssxref("border-clip") }}, {{ cssxref("border-clip-top") }}, {{ cssxref("border-clip-right") }}, {{ cssxref("border-clip-bottom") }}, and {{ cssxref("border-clip-left") }} properties) or to control the shape of the border in a corner (using the CSS {{ cssxref("border-corner-shape") }} property).

- - - - - - - - - - - -
{{ SpecName("CSS3 Multicol", "", "") }}{{ Spec2("CSS3 Multicol") }}
Adds support for easy multi-column layouts using the CSS {{ cssxref("columns") }}, {{ cssxref("column-count") }}, {{ cssxref("column-fill") }}, {{ cssxref("column-gap") }}, {{ cssxref("column-rule") }}, {{ cssxref("column-rule-color") }}, {{ cssxref("column-rule-style") }}, {{ cssxref("column-rule-width") }}, {{ cssxref("column-span") }}, {{ cssxref("column-width") }}, {{ cssxref("break-after") }}, {{ cssxref("break-before") }}, and {{ cssxref("break-inside") }}.
- - - - - - - - - - - -
{{ SpecName("CSS3 Speech", "", "") }}{{ Spec2("CSS3 Speech") }}
Defines the speech media type, an aural formatting model and numerous properties specific for speech-rendering user agents.
- - - - - - - - - - - -
{{ SpecName("CSS3 Images", "", "") }}{{ Spec2("CSS3 Images") }}
-

Defines the {{cssxref("<image>")}} data type.

- -

Extends the url() syntax to support image slices using media fragments.

- -

Adds:

- -
    -
  • The dppx unit to the {{cssxref("<resolution>")}} data type.
  • -
  • The image() function as a more flexible alternative to url() to define an image from an url.
    - At risk : due to insufficient browser support, standardization of the image() function may be postponed to the next iteration of this module .
  • -
  • Support for linear-gradient(), repeating-linear-gradient(), radial-gradient() and repeating-radial-gradient().
  • -
  • The ability to define how a replaced element should fit in its element, using the CSS {{ cssxref("object-fit") }} property.
    - At risk : due to insufficient browser support, standardization of the {{ cssxref("object-fit") }} and property may be postponed to the next iteration of this module .
  • -
  • The ability to override the resolution and orientation of an external image using the CSS {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties.
    - At risk : due to insufficient browser support, standardization of the {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties may be postponed to the next iteration of this module .
  • -
-
- -

The CSS Image Values and Replaced Content Level 4 which will supersede CSS Image Level 3 is in development and is a {{Spec2("CSS4 Images")}}.

- - - - - - - - - - - -
{{ SpecName("CSS3 Values", "", "") }}{{ Spec2("CSS3 Values") }}
-

Makes initial and inherit keywords usable on any CSS property.

- -

Formally defines the CSS data types of CSS 2.1, that were implicitely defined by their grammar token and some textual precisions.

- -

Adds:

- -
    -
  • Definition for new font-relative length units: rem and ch .
  • -
  • Definition for viewport-relative length units: vw, vh, vmax, and vmin .
  • -
  • Precision about the real size of the absolute length units, which are not really absolute, but defined in relation with the reference pixel .
  • -
  • Definition for {{ cssxref("<angle>") }}, {{cssxref("<time>")}}, {{cssxref("<frequency>")}}, {{cssxref("<resolution>")}}.
  • -
  • Normative value to the definition of {{cssxref("<color>")}}, {{cssxref("<image>")}}, and {{cssxref("<position>")}}.
  • -
  • Definition for the {{ cssxref("calc", "calc()") }}, {{ cssxref("attr", "attr()")}}, and toggle() functional notations.
    - At risk: due to insufficient browser support, standardization of the calc(), attr(), and toggle() functional notations may be postponed to the next iteration of this module.
  • -
-
- -

Several types definition, like <ident> and <custom-ident>, have been deferred to CSS Values and Units Module Level 4.

- - - - - - - - - - - -
{{ SpecName("CSS3 Flexbox", "", "") }}{{ Spec2("CSS3 Flexbox") }}
Add a flexbox layout to the CSS {{ cssxref("display") }} property and several new CSS properties to control it: {{ cssxref("flex") }}, {{ cssxref("flex-align") }}, {{ cssxref("flex-direction") }}, {{ cssxref("flex-flow") }}, {{ cssxref("flex-item-align") }}, {{ cssxref("flex-line-pack") }}, {{ cssxref("flex-order") }}, {{ cssxref("flex-pack") }}, and {{ cssxref("flex-wrap") }}.
- - - - - - - - - - - -
{{ SpecName("CSS3 Conditional", "", "") }}{{ Spec2("CSS3 Conditional") }}
Adds features for conditional processing of parts of style sheets, conditioned on capabilities of the browser or the document the style sheet is being applied to. It consists mainly in allowing nested at-rules inside {{ cssxref("@media") }} and the adding of a new CSS at-rule, {{ cssxref("@supports") }}, and a new DOM method {{domxref("CSS.supports()")}}.
- - - - - - - - - - - -
{{ SpecName("CSS3 Text Decoration", "", "") }}{{ Spec2("CSS3 Text Decoration") }}
-

Extends:

- -
    -
  • the CSS {{ cssxref("text-decoration") }} property by making it a shorthand for the CSS {{ cssxref("text-decoration-line") }}, {{ cssxref("text-decoration-color") }}, and {{ cssxref("text-decoration-style") }} properties. And adds the {{ cssxref("text-decoration-skip") }}, and {{ cssxref("text-underline-position") }} properties.
  • -
- -

Adds:

- -
    -
  • Support for East-Asian-script emphasis marks with the CSS {{ cssxref("text-emphasis") }}, {{ cssxref("text-emphasis-style") }}, {{ cssxref("text-emphasis-color") }}, and {{ cssxref("text-emphasis-position") }} properties.
  • -
  • Support for script shadows with the CSS {{ cssxref("text-shadow") }} property.
  • -
- -

Clarifies:

- -
    -
  • The paint order of the decorations.
  • -
- -

At risk: due to insufficient browser support, standardization of the text-decoration-skip, line positioning rules and the ability to place both emphasis marks and ruby above the same base text may be postponed to the next iteration of this module.

-
- - - - - - - - - - - -
{{ SpecName("CSS3 Fonts", "", "") }}{{ Spec2("CSS3 Fonts") }}
-

Amends the CSS2.1 Font matching algorithm to be closer to what is really implemented.

- -

Adds:

- -
    -
  • Support for downloadable fonts via the CSS {{ cssxref("@font-face") }} at-rule.
  • -
  • The control of the contextual inter-glyph spacing via the CSS {{ cssxref("font-kerning") }} property.
  • -
  • The choice of language-specific glyphs via the CSS {{ cssxref("font-language-override") }} property.
  • -
  • The choice of glyphs with specific OpenType features via the CSS {{ cssxref("font-feature-settings") }} property.
  • -
  • The control of the aspect ratio to use when fallback fonts are selected via the CSS {{ cssxref("font-size-adjust") }} property.
  • -
  • The choice of alternative font faces using the CSS {{ cssxref("font-stretch") }}, {{ cssxref("font-variant-alternates") }}, {{ cssxref("font-variant-caps") }}, {{ cssxref("font-variant-east-asian") }}, {{ cssxref("font-variant-ligatures") }}, {{ cssxref("font-variant-numeric") }}, and {{ cssxref("font-variant-position") }} properties. It also extends the related CSS {{ cssxref("font-variant") }} shorthand property and introduces the {{ cssxref("@font-feature-values") }} at-rule.
  • -
  • The control of the automatic generation of an oblique or bold face when none are found via the CSS {{ cssxref("font-synthesis") }} property.
  • -
-
- - - - - - - - - - - -
{{ SpecName("CSS3 Cascade", "", "") }}{{ Spec2("CSS3 Cascade") }}
-

Adds:

- -
    -
  • The initial, unset values for properties.
  • -
  • The CSS {{ cssxref("all") }} property.
  • -
  • The scoping mechanism.
  • -
- -

Clarifies:

- -
    -
  • Interaction of media-dependent @import statements and style sheet loading requirements.
  • -
-
- - - - - - - - - - - -
{{ SpecName("CSS3 Writing Modes", "", "") }}{{ Spec2("CSS3 Writing Modes") }}
Defines the writing modes of both horizontal and vertical scripts and clarifies how the CSS {{ cssxref("direction") }} and {{ cssxref("unicode-bidi") }} properties interact with the new CSS {{ cssxref("text-orientation") }} property, and extends them where needed.
- - - - - - - - - - - -
{{ SpecName("CSS Shapes", "", "") }}{{ Spec2("CSS Shapes") }}
Defines geometric shapes, which can be applied to floats. These shapes describe areas, around which inline content wraps instead of wrapping around the bounding box.
- - - - - - - - - - - -
{{ SpecName("CSS Masks", "", "") }}{{ Spec2("CSS Masks") }}
Defines a way for partially or fully hiding portions of visual elements. It describes how to use another graphical element or image as a luminance or alpha mask.
- -

Modules in the refining phase

- -

Specifications that are deemed to be in the refining phase are already fairly stable. Though changes are still expected, they shouldn't create incompatibilities with current implementations; they should mainly define behavior in edge cases.

- - - - - - - - - - - -
{{ SpecName("Web Animations", "", "") }}{{ Spec2("Web Animations") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Counter Styles", "", "") }}{{ Spec2("CSS3 Counter Styles") }}
 
- - - - - - - - - - - -
{{ SpecName("Compositing", "", "") }}{{ Spec2("Compositing") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Syntax", "", "") }}{{ Spec2("CSS3 Syntax") }}
Clarifies how charsets are determined; minor changes in parsing and tokenization algorithms.
- - - - - - - - - - - -
{{ SpecName("CSS Will Change", "", "") }}{{ Spec2("CSS Will Change") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Transitions", "", "") }}{{ Spec2("CSS3 Transitions") }}
Allows the definition of transitions effects between two properties values by adding the CSS {{ cssxref("transition") }}, {{ cssxref("transition-delay") }}, {{ cssxref("transition-duration") }}, {{ cssxref("transition-property") }}, and {{ cssxref("transition-timing-function") }} properties.
- - - - - - - - - - - -
{{ SpecName("CSS3 Animations", "", "") }}{{ Spec2("CSS3 Animations") }}
Allows the definition of animations effects by adding the CSS {{ cssxref("animation") }}, {{ cssxref("animation-delay") }},{{ cssxref("animation-direction") }}, {{ cssxref("animation-duration") }}, {{ cssxref("animation-fill-mode") }}, {{ cssxref("animation-iteration-count") }}, {{ cssxref("animation-name") }}, {{ cssxref("animation-play-state") }}, and {{ cssxref("animation-timing-function") }} properties, as well as the {{ cssxref("@keyframes") }} at-rule.
- - - - - - - - - - - -
{{ SpecName("CSS3 Transforms", "", "") }}{{ Spec2("CSS3 Transforms") }}
-

Adds:

- -
    -
  • the support of bi-dimensional transforms to be applied to any element using the CSS {{ cssxref("transform") }} and {{ cssxref("transform-origin") }} properties. The supported transforms are: matrix(), translate(), translateX(), translateY(), scale(), scaleX(), scaleY(), rotate(), skewX(), and skewY().
  • -
  • the support of tri-dimensional transforms to be applied to any element by adding the CSS {{ cssxref("transform-style") }}, {{ cssxref("perspective") }}, {{ cssxref("perspective-origin") }}, and {{ cssxref("backface-visibility") }} properties and extended the {{ cssxref("transform") }} property with the following transforms are: matrix 3d(), translate3d(), translateZ()scale3d(), scaleZ(), rotate3d(), rotateX()rotateY(), rotateZ(), and perspective().
  • -
- -

Note: this specification is a merge of CSS 2D-Transforms, CSS 3D-Transforms and SVG transforms.

-
- - - - - - - - - - - -
{{ SpecName("CSS3 Fragmentation", "", "") }}{{ Spec2("CSS3 Fragmentation") }}
Defines how partitions of a Web page should happen, that is page, column breaks, and widows and orphans handling. -

Adds:

- -
    -
  • Support for defining the behavior of decorations, that is borders and background colors or images, when a box is breaked (at a page, column or line-break) with the CSS {{ cssxref("box-decoration-break") }} property.
  • -
-
- - - - - - - - - - - -
{{ SpecName("CSS3 Text", "", "") }}{{ Spec2("CSS3 Text") }}
-

Extends:

- -
    -
  • the CSS {{ cssxref("text-transform") }} property with the value full-width.
  • -
  • the CSS {{ cssxref("text-align") }} property with the value start, end, start end, and match-parent for a better support of documents with multiple directionalities of text.
  • -
  • the CSS {{ cssxref("text-align") }} property with a {{cssxref("<string>")}} value to align on that character. This is useful to align number on the decimal point.
  • -
  • the CSS {{ cssxref("word-spacing") }} and {{ cssxref("letter-spacing") }} properties with range constraints to control flexibility in justification.
  • -
- -

Adds:

- -
    -
  • Control on how whitespaces are displayed using the CSS {{ cssxref("text-space-collapse") }} and {{ cssxref("tab-size") }} properties.
  • -
  • Control on line breaks and word boundaries using the CSS {{ cssxref("line-break") }}, {{ cssxref("word-break") }}, {{ cssxref("hyphens") }}, {{ cssxref("text-wrap") }}, {{ cssxref("overflow-wrap") }}, and {{ cssxref("text-align-last") }} properties.
  • -
  • Control on how justification is happening, in order to support more type of scripts, using the CSS {{ cssxref("text-justify") }} property.
  • -
  • Control on edge effect using the CSS {{ cssxref("text-indent") }} and {{ cssxref("hanging-punctuation") }} properties.
  • -
-
- -

A few features present in early CSS Text Level 3 draft have being postponed to the next iteration of this module .

- - - - - - - - - - - -
{{ SpecName("CSS3 Variables", "", "") }}{{ Spec2("CSS3 Variables") }}
Defines a mechanism allowing to define variables in CSS.
- - - - - - - - - - - -
{{ SpecName("Compositing", "", "") }}{{ Spec2("Compositing") }}
 
- -

Modules in the revising phase

- -

Modules that are in the revising phase are much less stable than those in the refining phase. Often the syntax is still under scrutiny and may evolve a lot, in a non-compatible way. Alternative syntaxes are tested and often implemented.

- - - - - - - - - - - -
{{ SpecName("CSS3 Basic UI", "", "") }}{{ Spec2("CSS3 Basic UI") }}
-

Adds:

- -
    -
  • The ability to tweak the box model using the CSS {{ cssxref("box-sizing") }} property.
    - At risk: due to insufficient browser support, standardization of the padding-box value may be postponed to the next iteration of this module .
  • -
  • Allow the styling of forms according their content using the CSS {{ cssxref(":indeterminate") }}, {{ cssxref(":default") }}, {{ cssxref(":valid") }}, {{ cssxref(":invalid") }}, {{ cssxref(":in-range") }}, {{ cssxref(":out-of-range") }}, {{ cssxref(":required") }}, {{ cssxref(":optional") }}, {{ cssxref(":read-only") }}, and {{ cssxref(":read-write") }} pseudo-classes and the {{ cssxref("::value") }}, {{ cssxref("::choices") }}, {{ cssxref("::repeat-item") }}, and {{ cssxref("::repeat-index") }} pseudo-elements.
    - At risk: due to insufficient browser support, standardization of the pseudo-elements {{ cssxref("::value") }}, {{ cssxref("::choices") }}, {{ cssxref("::repeat-item") }}, and {{ cssxref("::repeat-index") }} may be postponed to the next iteration of this module .
  • -
  • Support for icons, defined by the CSS {{ cssxref("icon") }} property simultaneously with the new icon value of the CSS {{ cssxref("content") }} property.
    - At risk: due to insufficient browser support, standardization of the {{ cssxref("icon") }} property and the icon value may be postponed to CSS4.
  • -
  • Support for the CSS {{ cssxref("outline-offset") }} property giving more control on the position of the outline.
  • -
  • Support for the CSS {{ cssxref("resize") }} property allowing Web authors to control if and how elements should be resized.
  • -
  • Support for the CSS {{ cssxref("text-overflow") }} property defining how text overflows, if needed.
    - At risk: due to insufficient browser support, the 2-value syntax of this property as well as the support for {{cssxref("<string>")}} values may be postponed to the next iteration of this module .
  • -
  • The ability to define the hotspot of a cursor as well as the new none, context-menu, cell, vertical-text, alias, copy, no-drop, not-allowed, nesw-resize, nwse-resize, col-resize, row-resize, all-scroll, zoom-in, zoom-out, extending the {{ cssxref("cursor") }} property.
  • -
  • The ability to specify the sequential navigation order (that is the tabbing order ) using the CSS {{ cssxref("nav-index") }}, {{ cssxref("nav-up") }}, {{ cssxref("nav-right") }}, {{ cssxref("nav-left") }}, {{ cssxref("nav-down") }} properties.
    - At risk: due to insufficient browser support, standardization of the navigation properties may be postponed to the next iteration of this module .
  • -
  • The ability to control the usage of an IME editor, using the CSS {{ cssxref("ime-mode") }} property.
    - At risk: due to insufficient browser support, standardization of the {{ cssxref("ime-mode") }} property may be postponed to the next iteration of this module .
  • -
-
- -

An early list of what could be in the next iteration of the CSS Basic User Interface Module is available.

- - - - - - - - - - - -
{{ SpecName("CSS3 Grid", "", "") }}{{ Spec2("CSS3 Grid") }}
Add a grid layout to the CSS display property and several new CSS properties to control it: {{cssxref("grid")}}, {{cssxref("grid-area")}}, {{cssxref("grid-auto-columns")}}, {{cssxref("grid-auto-flow")}}, {{cssxref("grid-auto-position")}}, {{cssxref("grid-auto-rows")}}, {{cssxref("grid-column")}}, {{cssxref("grid-column-start")}}, {{cssxref("grid-column-end")}}, {{cssxref("grid-row")}}, {{cssxref("grid-row-start")}}, {{cssxref("grid-row-end")}}, {{cssxref("grid-template")}}, {{cssxref("grid-template-areas")}}, {{cssxref("grid-template-rows")}}, and {{cssxref("grid-template-columns")}}.
- - - - - - - - - - - -
{{ SpecName("CSS3 Box Alignment", "", "") }}{{ Spec2("CSS3 Box Alignment") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Paged Media", "", "") }}{{ Spec2("CSS3 Paged Media") }}
 
- - - - - - - - - - - -
{{ SpecName("CSSOM View", "", "") }}{{ Spec2("CSSOM View") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS4 Selectors", "", "") }}{{ Spec2("CSS4 Selectors") }}
 
- -

Modules in the exploring phase

- - - - - - - - - - - -
{{ SpecName("CSS4 Images", "", "") }}{{ Spec2("CSS4 Images") }}
-

Extends:

- -
    -
  • the image() functional notation to describe the directionality of the image (rtl or ltr), allowing for bidi-sensitive images.
  • -
  • the {{ cssxref("image-orientation") }} property by adding the keyword from-image, allowing to follow EXIF data stored into images to be considered.
  • -
- -

Adds:

- -
    -
  • the image-set() functional notation to allow the definition to equivalent images at different resolution allowing for resolution-negotiated selection of images.
  • -
  • the element() functional notation allowing the use of part of the page as image.
  • -
  • the cross-fade() functional notation allowing to refer to intermediate images when transitioning between two images and defines the interpolation between two images.
  • -
  • the conic-gradient() and repeating-conic-gradient() functional notation describing a new type of gradient.
  • -
  • the {{cssxref("image-rendering")}} property that allow to define how resize of the object should be handled.
  • -
-
- - - - - - - - - - - -
{{ SpecName("CSS3 Device", "", "") }}{{ Spec2("CSS3 Device") }}
Adds a new at-rule, {{ cssxref("@viewport") }}, allowing to specify the size, zoom factor, and orientation of the viewport that is used as the base for the initial containing block.
- - - - - - - - - - - -
{{ SpecName("CSS3 GCPM", "", "") }}{{ Spec2("CSS3 GCPM") }}
Adds the ability to tailor printed version of a document by allowing to control header, footer but also references tables like indexes or tables of content.
- - - - - - - - - - - -
{{ SpecName("CSS Exclusions", "", "") }}{{ Spec2("CSS Exclusions") }}
Extends the floats mechanism to define exclusion regions in any positioning scheme. Adds the notion of shapes, in which content must flows.
- - - - - - - - - - - -
{{ SpecName("CSS3 Lists", "", "") }}{{ Spec2("CSS3 Lists") }}
Extends the list counter mechanism so that list markers can be styled and Web developers can define new list counter schemes.
- - - - - - - - - - - -
{{ SpecName("CSS3 Regions", "", "") }}{{ Spec2("CSS3 Regions") }}
Defines a new mechanism allowing content to flow across, eventually non-contiguous, multiple areas called regions.
- - - - - - - - - - - -
{{ SpecName("CSS3 Device", "", "") }}{{ Spec2("CSS3 Device") }}
Adds a new at-rule, {{ cssxref("@viewport") }}, allowing to specify the size, zoom factor, and orientation of the viewport that is used as the base for the initial containing block.
- - - - - - - - - - - -
{{ SpecName("Filters 1.0", "", "") }}{{ Spec2("Filters 1.0") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Template", "", "") }}{{ Spec2("CSS3 Template") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Sizing", "", "") }}{{ Spec2("CSS3 Sizing") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS Line Grid", "", "") }}{{ Spec2("CSS Line Grid") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Positioning", "", "") }}{{ Spec2("CSS3 Positioning") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Ruby", "", "") }}{{ Spec2("CSS3 Ruby") }}
 
- - - - - - - - - - - -
{{ SpecName("CSSOM", "", "") }}{{ Spec2("CSSOM") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Overflow", "", "") }}{{ Spec2("CSS3 Overflow") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Font Loading", "", "") }}{{ Spec2("CSS3 Font Loading") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Display", "", "") }}{{ Spec2("CSS3 Display") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS Scope", "", "") }}{{ Spec2("CSS Scope") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS4 Media Queries", "", "") }}{{ Spec2("CSS4 Media Queries") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS Non-element Selectors", "", "") }}{{ Spec2("CSS Non-element Selectors") }}
 
- - - - - - - - - - - -
{{ SpecName("Geometry Interfaces", "", "") }}{{ Spec2("Geometry Interfaces") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Inline", "", "") }}{{ Spec2("CSS3 Inline") }}
 
- -

Modules in the rewriting phase

- -

Modules that are in the rewriting phase are outdated and require to be rewritten. The syntax is still under scrutiny and may evolve a lot, in a non-compatible way. Alternative syntaxes are tested and often implemented.

- - - - - - - - - - - -
{{ SpecName("CSS3 Box", "", "") }}{{ Spec2("CSS3 Box") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Content", "", "") }}{{ Spec2("CSS3 Content") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Inline Layout", "", "") }}{{ Spec2("CSS3 Inline Layout") }}
 
- -

 

diff --git a/files/de/archive/index.html b/files/de/archive/index.html deleted file mode 100644 index 4f4a70c023..0000000000 --- a/files/de/archive/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Archive of obsolete content -slug: Archive -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive ---- -

Here at MDN, we try to avoid outright deleting content that might be useful to people targeting legacy platforms, operating systems, and browsers. Perhaps your target audience is people that are using older hardware, for example, and can't upgrade to the latest and greatest browsers. Or for "reasons," your company is required to use very old software and you need to build Web content that runs on that software. Or perhaps you're just curious about the history of an obsolete feature or API, and how it worked.

- -

There are many reasons older documentation can be useful. So, we've established this area into which we can archive older documentation. Material in this Archived content zone should not be used for building new Web sites or apps for modern browsers. It's here for historical reference only.

- -
-

Note to writers: We need to try to keep the subpages here organized instead of all dumped into one large folder. Try to create subtrees for categories of material. Also, only move pages here that are extremely obsolete. If anyone might realistically need the information in a living product, it may not be appropriate to move it here. In general, it may be best to discuss it in the MDN Web Docs chat room before moving content here.

-
- -

{{SubpagesWithSummaries}}

- - - -

{{ListSubpages("/en-US/docs/Archive", 2, 0, 1)}}

diff --git a/files/de/archive/mdn/index.html b/files/de/archive/mdn/index.html deleted file mode 100644 index 9e550840e3..0000000000 --- a/files/de/archive/mdn/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: MDN Archive -slug: Archive/MDN -tags: - - Archive - - MDN - - NeedsTranslation - - TopicStub -translation_of: Archive/MDN ---- -

{{MDNSidebar}}

- -
-

Obsolete
- This documentation is obsolete.

-
- -

The documentation listed below is archived, obsolete material about MDN itself.

- -

{{LandingPageListSubpages}}

diff --git a/files/de/archive/mozilla/index.html b/files/de/archive/mozilla/index.html deleted file mode 100644 index 0acec76e6d..0000000000 --- a/files/de/archive/mozilla/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Archived Mozilla and build documentation -slug: Archive/Mozilla -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Mozilla ---- -

These articles are archived, obsolete documents about Mozilla, Gecko, and the process of building Mozilla projects.

-

{{SubpagesWithSummaries}}

diff --git a/files/de/archive/mozilla/marketplace/apis/index.html b/files/de/archive/mozilla/marketplace/apis/index.html deleted file mode 100644 index ca60d38982..0000000000 --- a/files/de/archive/mozilla/marketplace/apis/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Zusatz Bibiliotheken and APIs -slug: Archive/Mozilla/Marketplace/APIs -tags: - - Anfänger - - Anwendungen - - Firefox OS - - Marketplace - - Marktplatz -translation_of: Archive/Mozilla/Marketplace/APIs ---- -
-

Wenn es um das Programmieren in Ihrer App oder Web-Seite für den Firefox Marketplace geht, werden Sie Marketplace Zusatz Bibliotheken, Web APIs und Marketplace APIs verwenden. Diese Seite erklärt Ihnen, wie und wann Sie diese Optionen verwenden können und stellt Ihnen weitere Links zu noch mehr Informationen bereit.

-
- -

Marketplace Zusatz Bibiliotheken

- -
-
Die Marketplace Zusatz Bibliotheken sollen Ihr tägliches Programmieren einfacher machen. Es gibt zurzeit eine solche Bibliothek, es können aber mehr entstehen, sobald es noch mehr Funktionen für den Marketplace geben wird.
- -
 
-
- - - -

Web APIs

- -

Ihre App für den Marketplace benötigt zur Verwendung von Web APIs bestimmte Funktionen:

- - - -

Marketplace APIs

- -

Für die üblichen Anwendungen brauchen Sie die Marketplace APIs nicht, doch manche Projekte, wie das Erstellen von eigenen Shops, benötigen diese. Wenn Sie also bestimmte Funktionen in diesem Bereich brauchen, bietet es sich an, die Marketplace APIs zu nutzen. 

- -

Die Dokumentation der Marketplace APIs finden sie hier, auf readthedocs.org. Bitte treten Sie der Entwickler-Marketplace Mailing Liste bei, wenn Sie noch weitere Informationen zum Marketplace API brauchen.

- -
-

Diese Marketplace API Dokumentation beschreibt den Einsatz in der Entwicklung von Apps für den Firefox Marketplace. Das heißt, dass dieser Artikel Informationen über APIs enthalten kann, die im öffentlichen Marketplace nicht zugänglich sind.

-
- -

 

diff --git a/files/de/archive/mozilla/marketplace/faq/index.html b/files/de/archive/mozilla/marketplace/faq/index.html deleted file mode 100644 index 6b6def2d3a..0000000000 --- a/files/de/archive/mozilla/marketplace/faq/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Firefox Marketplace FAQs -slug: Archive/Mozilla/Marketplace/FAQ -translation_of: Archive/Mozilla/Marketplace/FAQ ---- -
-
- Wie kann ich eine neue App hochladen?
-
- Schaue dir dazu diesen Artikel an: Veröffentlichen einer App
- -
- Was ist der Genehmigungsprozess?
-
- Für die Entwickler-Preview werden alle Apps mit einer gültigen manifest-Datei automatisch zugelassen.
-
- Müssen meine Apps den Content-Richtlinien entsprechen?
-
- Die primären inhaltlichen Einschränkungen im "Firefox Marketplace" verhindern, dass bösartige oder illegale Aktivitäten zu stande kommen. Die Richtlinien sind die Gleichen, wie die Content-Richtlinien für den Firefox. Die Richtlinien werden vor dem benutzersichtbaren Betastart vom "Marketplace" fertig sein.
-
- Wie verkauft der "Firefox Marketplace" meine App?
-
-
- Notiz: Kauf-Apps und In-App-Käufe sind der Zeit im "Firefox Marketplace" deaktiviert (August 2012). Es wird erwartet, dass diese Funktionen im Oktober 2012 wieder aktiviert werden.
-
-
- Wer hosted die App?
-
- Du hostest alle Dateien deiner App auf deinem eigenden Server. Wenn du eine App in den "Firefox Marketplace" einträgst, gibst du die URL von der manifest-Datei deiner App an, welches der "Marketplace" einliest und überprüft. Du kannst Icons, Screenshots, usw. hochladen, um deine App im "Firefox Marketplace" zu promoten.
-
diff --git a/files/de/archive/mozilla/marketplace/index.html b/files/de/archive/mozilla/marketplace/index.html deleted file mode 100644 index 10b84af67e..0000000000 --- a/files/de/archive/mozilla/marketplace/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Firefox Marketplace -slug: Archive/Mozilla/Marketplace -tags: - - Anfänger - - Apps - - Beginner - - Firefox OS - - Intro - - Landing - - Marketplace -translation_of: Archive/Mozilla/Marketplace ---- -
Der Firefox-Marktplatz ist ein offener und nicht-proprietärer Online-Marktplatz für Web-Anwendungen mit HTML5.
- -

Der Firefox-Marketplace ermöglicht Entwicklern, plattformübergreifende open web Anwendungen mittels standardisierter Web-Technologien, Sprachen und Tools zu veröffentlichen. Mozilla bringt seine innersten Werte — Offenheit, Freiheit, Auswahl durch den Benutzer – in die Welt der Apps.

- -
-
-

Ihre Apps veröffentlichen

- -
-
App Veröffentlichungsoptionen
-
-
-
Nachdem Sie eine offene Web-App erstellt haben, stehen Ihnen verschiedene Optionen für die Veröffentlichung zur Verfügung. Dieser Artikel erklärt, was zur Auswahl steht.
-
-
-
Übermitteln einer App in den Firefox Marketplace
-
-
-
Ein ausführlicher Leitfaden für diejenigen, die eine App auf dem Firefox-Marketplace veröffentlichen wollen um Sie der ganzen Welt zur Verfügung zu stellen..
-
-
-
Allgemeines zur App-Veröffentlichung
-
-
-
Allgemeine Informationen und nützliche Tipps über die Veröffentlichung von Web-Apps.
-
-
-
Firefox Marketplace APIs
-
-
-
Links zu den wichtigsten Referenzhandbüchern für Mozillas Firefox Marketplace APIs, mit denen Sie Zahlungskonten und das automatische Hochladen der App (und der Updates) kontrollieren können.
-
-
-
-
- -
-

Monetarisierung

- -
-
Profitieren von Ihrer App
-
-
-
Sie haben viel Arbeit und Liebe in ihre App gesteckt und wollen nun auch etwas von der App haben? Dieser Artikel befasst sich mit kostenpflichtigen Apps und In-App-Käufen. Alles Wege, damit Sie Geld an ihrem Werk verdienen.
-
-
-
- -

Werkzeuge für App Entwickler

- - - -

Erstellen Sie Ihren eigenen Marketplace

- -
-
Erstellen eines Marktplatzes
-
-
-
Sie müssen nicht den Firefox-Marktplatz verwenden, um Ihre Anwendung zu verteilen. Sie können auch ihren eigenen internen Marktplatz erstellen. Nützlich zum Beispiel für Firmennetzwerke.
-
-
-
-
-
- - - -
    -
  1. Eine App veröffentlichen und überprüfen - -
      -
    1. Veröffentlichen einer App im Firefox Marketplace
    2. -
    3. Eine App bewerten
    4. -
    5. Überprüfungskriterien für Marketplace
    6. -
    7. Marketplace: screenshot Kriterien
    8. -
    9. Leitfaden für die Datenschutzerklärungen
    10. -
    11. Das Testen und Verbessern ihrer Apps.
    12. -
    -
  2. -
  3. Veröffentlichung -
      -
    1. Möglichkeiten der Veröffentlichung
    2. -
    3. Verpacken der Apps
    4. -
    5. Apps aktualisieren.
    6. -
    7. Open-Web-Apps für Android
    8. -
    9. Einen "Subdomain" zur App hinzufügen.
    10. -
    11. Ihren eigenen Marktplatz erstellen.
    12. -
    -
  4. -
  5. Monetization -
      -
    1. Verdiehen Sie mit ihrer App Geld.
    2. -
    3. Richtlinien zur Bezahlung
    4. -
    5. In-App Käufe
    6. -
    7. Überprüfung
    8. -
    9. App-Preise
    10. -
    11. Bezahlungsstatus
    12. -
    -
  6. -
  7. Marketplace APIs -
      -
    1. Marketplace utility library
    2. -
    3. Submission API
    4. -
    5. Payment API
    6. -
    7. Marketplace API
    8. -
    -
  8. -
  9. Firefox Marketplace FAQs
  10. -
diff --git a/files/de/archive/mozilla/marketplace/index/index.html b/files/de/archive/mozilla/marketplace/index/index.html deleted file mode 100644 index 6c4402ac0e..0000000000 --- a/files/de/archive/mozilla/marketplace/index/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Index -slug: Archive/Mozilla/Marketplace/Index -translation_of: Archive/Mozilla/Marketplace/Index ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeiteMarkierungen und Zusammenfassung
Firefox Marketplace -
-
- Apps, Anfänger, Firefox-OS, Intro, Marktplatz, l10n Priorität
-
-
-
-
- In dieser Zone finden Sie alle Informationen die Sie für die Vorbereitung benötigen um apps auf dem Firefox-Marktplatz zu veröffentlichen. Anleitung wie man apps erfolgreich zustellt, Zustelloptionen, Monetarisierung, Veröffentlichung , Aktualisierung der apps,  die Bibliotheken und APIs Finde Marktplatz-Funktionen zu verwenden.
-
-
Firefox Marketplace APIsAPI, Apps, Marketplace
-
-
- Links zu den wichtigsten Referenzen für Mozillas Firefox Marktplatz APIs, mit denen Sie app-Einreichungen behandeln können. Konfigurieren Sie ein Abrechnungskonto für eine app und vieles mehr.
-
-
Firefox Marketplace FAQApp Zahlungen, Apps, B2G, FAQ, Firefox OS, Mobile, Marketplace
-
-
- Dieser Artikel beantwortet eine Vielzahl von häufig gestellte Fragen mit Bezug zur Veröffentlichung auf dem Firefox Marketplace.
-
-
IndexIndex
7 Seiten gefunden:
Publishing on the Firefox MarketplaceApps, Marketplace
-
-
- Dokumentation für das Veröffentlichen einer app auf dem Firefox Marketplace.
-
-
VorlageAnlegen
Marketplace Vorlagen
Zusatz Bibiliotheken und APIsApps, Anfänger, Firefox OS, Anleitung, Marketplace
-
-
- Wenn es darum geht, die Funktionen für den Firefox-Marktplatz in Ihre apps und Webseiten zu codieren. Machen nutzen Sie die Marktplatz Zusatz Bibliothek, Web-APIs und Markt-APIs. Diese Seite führt diese Optionen, wenn Sie möglicherweise Links einsetzen und  zu weiteren Dokumentation beschreiben.
-
-
-

 

diff --git a/files/de/archive/mozilla/marketplace/marktplatz_apis/index.html b/files/de/archive/mozilla/marketplace/marktplatz_apis/index.html deleted file mode 100644 index 41c61d5451..0000000000 --- a/files/de/archive/mozilla/marketplace/marktplatz_apis/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Firefox Marktplatz APIs -slug: Archive/Mozilla/Marketplace/Marktplatz_APIs -translation_of: Archive/Mozilla/Marketplace/Marketplace_APIs ---- -
-
-
-
- Links zu den wichtigsten Referenzen für Mozillas Firefox Marktplatz APIs, mit denen Sie, App-Einreichungen behandeln können und Sie ein Abrechnungskonto für eine App konfigurieren können und vieles mehr.
-
-
-
-
-
-
-
- Marktplatz unitity Bibliothek
-
-
-
- Damit Sie mit dem Firefox-Markt arbeiten können, bieten wir zu erleichterung eine JavaScript-Bibliothek an um eine ihnen Anwendungen einfach handhaben in-app-Zahlungen und Zahlungseingänge überprüfen zu können.
-
-
-
- Überprüfungs API
-
-
-
- Mit der API-Vorlage können Sie Ihre app überprüfen, aktualisieren Ihre app und holen Informationen über die apps verfügbar installiert werden.
-
-
-
- Zahlungs API
-
-
-
- Mit  API-Zahlung können Sie Informationen zu in-app Einkäufe machen und erhalten Informationen über die Preisgestaltung Stufen für verschiedene Länder.
-
-
-
- Andere Marktplatz APIs
-
-
-
- Die vollständige Dokumentation für die Firefox-Marktplatz-APIs.
-
-
-
-
-
-
-
- Tools für app-Entwickler
-
- -
-
- Technologie-Referenzdokumentation
-
- -
-
- Hilfe von der Gemeinschaft
-
-
-
- Wenn Sie noch nicht sicher sind was zu tun ist, was Sie erledigen wollen, zögern Sie nicht zu der Unterhaltung!
-
-  
-
- -

Vergessen Sie nicht über die netiquette...

-

 

-
-
-

 

diff --git a/files/de/archive/mozilla/marketplace/options/open_web_apps_for_android/index.html b/files/de/archive/mozilla/marketplace/options/open_web_apps_for_android/index.html deleted file mode 100644 index 76a5dc98c8..0000000000 --- a/files/de/archive/mozilla/marketplace/options/open_web_apps_for_android/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Open Web Apps for Android -slug: Archive/Mozilla/Marketplace/Options/Open_web_apps_for_android -translation_of: Archive/Marketplace/Options/Open_web_apps_for_android ---- -
-

Users of Firefox for Android install Marketplace apps as 'normal' Android apps, gaining the benefit of powerful open web features. This ability is enabled by the creation of APKs by the APK Factory. Installed apps are run by the Web Runtime for Android, which is included in Firefox for Android. By making your apps accessible to Firefox for Android users, you gain an additional distribution opportunity, expanding the potential audience for your work.

-
-

What is Open Web Apps for Android?

-

Open Web Apps for Android enables free Marketplace apps to be packaged into an APK (Android installation package), which is then installed and run in the same way as any other Android app. The APK package consists of web content (in the case of packaged apps) or a pointer to web content (in the case of hosted apps). This content is then enclosed in a thin Java/Android wrapper, which provides the integration with the Android OS. Once installed on an Android device the app is executed by Web Runtime for Android, a component of Firefox for Android.

-

These packages are created by the APK Factory Service, which is run as a web service by Marketplace. The APK Factory Service makes use of the APK Factory Library to create the actual package and the APK Signer to digitally sign the APK. This service is available to your own Marketplace, should you choose to create one.

-

You don't need any knowledge of Android development, or to take any extra development steps, to use Open Web Apps for Android: you simply select the option for distribution to Firefox Mobile or Firefox Tablet when submitting your apps to the Firefox Marketplace.

-
-

Note: Open Web Apps for Android provides support for hosted apps in Firefox for Android xx or later, packaged apps are supported in Firefox for Android 29 or later. Only free apps are available for Android from the Firefox Marketplace at this time.

-
-

Web Runtime for Android supports 12 APIs to access device capabilities, such as vibration, geolocation and battery status. You can see a complete list of supported APIs here: APIs showing "A" under "Availability" are those APIs available on Android, with green cells indicating that the API is available in full. You can also mouseover individual cells to get tooltips containing more information.

-

Web Runtime for Android will continue to add support for other APIs in future releases. Some of the APIs planned are:

- -
-

Note: Android users may be using devices with higher resolutions, greater pixel densities (DPI) and larger screen sizes than those found on Firefox OS devices. Apps that haven't used responsive design may therefore provide a poor experience, and you may want to design your apps with this in mind. For more information on responsive design see the Design section of the App Center.

-
-

Using Open Web Apps for Android from Firefox Marketplace

-

This section provides details on how you make use of Open Web Apps for Android from Firefox Marketplace, how they affect the Marketplace experience, and information on app updates.

-

Submitting an app

-

When you submit an app to the Firefox Marketplace, you choose the option of making your app available for Firefox Mobile or Firefox Tablet. Choosing either or both of these options will automatically deliver your app as an APK on Android devices.

-

Approving an app

-

When your app is reviewed, the reviewer installs your app from the reviewer section in Firefox Marketplace. When they do this from an Android device, the "review" instance of the APK Factory service is invoked to create an APK signed in Android debug mode. This version of the APK is then installed on the app reviewer's device and they complete the review process.

-

If the app is approved, the "release" instance of the APK Factory service is invoked to generate and sign the APK with a unique APK Signing Key. The resulting signed APK is then cached for delivery when a user chooses to install the app.

-

Installing an app

-

When a user selects your app in the Marketplace on their Android device, installation works as follows:

-
    -
  1. Firefox Marketplace displays the app's details and Free install button as normal.
  2. -
  3. When the user taps Free, {{ domxref("Apps.install") }} or {{ domxref("Apps.installPackage") }} is invoked as usual (depending on whether it's a hosted or packaged app) and a call is made to the APK Factory service to request the APK.
  4. -
  5. The APK is downloaded to the Android device and the standard Android app installation process invoked.
  6. -
  7. If the user hasn't enabled the Security setting Unknown sources, Android will alert the user and give them the option to cancel the installation or open Settings.
  8. -
  9. Once Unknown sources is enabled, the user is shown an install confirmation dialog. The dialog lists the permissions requested by privileged apps.
  10. -
  11. If the user taps Install the app is installed.
  12. -
  13. Once the app has been installed, the user is given the option to Open the app and in Firefox Marketplace the Free button is replaced with a Launch button.
  14. -
-

Subsequently the user will find the application in their Apps screen. In addition, the process to use and remove the app is the same as they'd expect for other Android apps. Firefox for Android provides a list of installed apps under Apps on the Tools menu as well.

-

Keeping apps up to date

-

Firefox for Android provides a mechanism installing update apps.

-

If your app is hosted, whenever you make a change on its server, users will pick up changes the next time they run your app.

-

For all other changes, you need to add a new version to the Firefox Marketplace:

- -

Firefox for Android makes a daily check on the version number in the app’s manifest and if it has changed silently applies the update.

-

Using Open Web Apps for Android from your own Marketplace

-

You're able to create your own Marketplace. Such a Marketplace consists of either a directory of apps in Firefox Marketplace or your own hosted content (app descriptions with the main manifest of hosted apps or the mini manifest with app zip archive in the case of packaged apps).

-

Your Marketplace will pass the URL of the manifest to be installed to {{ domxref("Apps.install") }} / {{ domxref("Apps.installPackage") }} that then invokes APK Factory, meaning you don't have to do anything to enable Open Web Apps for Android in your Marketplace. You do however need to ensure that your Marketplace only serves apps that include APIs supported by the Web Runtime for Android.

-

How the APK Factory works

-

This section describes how the APK Factory works.

- -

The following diagrams offer an alternative representation of the workflow of the APK Factory:

-

Web Sequence diagram showing the operation of the APK factory

-

Package naming and APK signing keys

-

On installation of an APK the Android device checks the Java package name and signature. It verifies the signature the first time an app is installed (there is no central authority it checks with). Future updates must then have the same package name and signature. If the package name and signature aren't the same the Android device won't update the installation.

-

Package naming

-

The package name for an APK consists of the hosting site and a unique serial number, for example:

- -

APK signing keys

-

Each APK needs to be identified by an APK signing key before it can be installed on an Android device. APK signing keys are created and owned by the APK Signer service. These signing keys are sensitive, and stored securely in the APK Signer.

-

This service creates a unique key for each app, applying it to the original release and subsequent updates. The reuse of the key on updated app APKs is important, as without a match in the package name and key Android won't install an update over an earlier version of the app. If you create your own Marketplace the APK will retain the same name and keys, so that either version will be able to update the other.

-
-

Note: Mozilla assumes no responsibility for the credibility of the APK signing keys. That is, the keys provide no information about the authenticity of the app or developer beyond the fact that they have been approved for release in Marketplace, if the app is hosted there. The service is not tied to Google or any other central authority.

-
-

FAQ

-

Here are answers to some frequently asked questions about APKs for Open Web Apps for Android.

-

What about re-installation of apps installed as bookmarks?

-

When a user updates to Firefox for Android version 29 or later, their bookmark-style apps will continue to work, and Firefox will prompt users to update apps to their Open Web Apps for Android version.

-

How will in-app purchases work?

-

The APK is given access to the trusted UI, mozPay, and all payment processes for in-app purchases, so in-app payments will function as normal.

-

How do I download a copy of my app's APK?

-

You can download a copy of your app from the APK Factory service by retrieving a URL in the format:

-

https://controller.apk.firefox.com/application.apk?manifestUrl=ESCAPED_URL_TO_MANIFEST

-

where ESCAPED_URL_TO_MANIFEST is an escaped URL to the app's manifest or mini-manifest. That URL causes the APK Factory to return the cached copy of the APK, or create a new one if the app hasn't been submitted to Marketplace.

-

Examples

-

For a hosted app:

-

> wget https://controller.apk.firefox.com/application.apk?manifestUrl=http%3A%2F%2Fmykzilla.org%2Fapp%2Fmanifest.webapp -O mykzilla.apk

-

For a packaged app:

-

> wget https://controller.apk.firefox.com/application.apk?manifestUrl=https%3A%2F%2Fmarketplace.firefox.com%2Fapp%2Fa22e0277-35bc-434d-9371-1568c75fc726%2Fmanifest.webapp -O cuttherope.apk
-  

-

Can I generate an APK manually from a different URL?

-

Yes, by providing the URL to any location for your manifest or mini-manifest files. However, be aware that because the APK is generated from a different URL the package name will differ from that created when you submit the app to Firefox Marketplace, so the Firefox Marketplace version will be installed as a separate app.

-

If I setup my own copy of the APK Factory can I use the APKs it generates?

-

You can, but be aware that the signing keys will differ from those assigned to the APKs generated by Firefox Marketplace. As a result Android will refuse to install whichever version the user tries to install second. (See If I also have an Android native version of my app, can both be installed on an Android device? for more information.)

-

Can I submit an APK created by the APK Factory to Google Play or other Android store?

-

You can submit an APK generated by APK Factory to Google Play or an alternative Android store. However, it's your responsibility to:

- -

Can I use my Android signing keys to sign the APK and choose the package name?

-

At present you cannot use your own signing keys to sign an APK generated by APK Factory or choose the package name. This is an option being considered. If this is of interest to you, join the discussion on the dev-marketplace mailing list, or the Marketplace IRC channel.

-

If I also have an Android native version of my app, can both be installed on an Android device?

-

Unless you choose to use the APK package name created by APK Factory for your native Android app, both can be installed on an Android device. If you choose to use the same package name for your native Android app (which you'll sign with your own key) Android will refuse to install whichever version the user tries to install second. This is because the package names are the same but the signing keys are different, so Android considers the apps to be the same, but from different sources. Therefore Android will refuse to update one app with the other, since that would allow one developer to override another's app. The user will end up with the first version installed on their device.

-
-

Because of the issues it may cause for users, it's highly recommended that you don't reuse the package name the APK Factory assigns to your app for a native Android version of your app.

-
-

How can I test/debug APKs?

-

We're working on a toolchain for testing and debugging an app on an Android device. The initial version will include a Node-based command-line tool for generating an APK you can install on the device and debug using Firefox's Remote Developer Tools.

-

Also see

- diff --git a/files/de/archive/mozilla/marketplace/publishing/index.html b/files/de/archive/mozilla/marketplace/publishing/index.html deleted file mode 100644 index d219377947..0000000000 --- a/files/de/archive/mozilla/marketplace/publishing/index.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Publishing -slug: Archive/Mozilla/Marketplace/Publishing -translation_of: Archive/Mozilla/Marketplace/Publishing/Introduction ---- -

Marketplace publishing

diff --git a/files/de/archive/mozilla/marketplace/publishing/packaged_apps/index.html b/files/de/archive/mozilla/marketplace/publishing/packaged_apps/index.html deleted file mode 100644 index 3ba4548eba..0000000000 --- a/files/de/archive/mozilla/marketplace/publishing/packaged_apps/index.html +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: Gepackte Apps -slug: Archive/Mozilla/Marketplace/Publishing/Packaged_apps -translation_of: Archive/Mozilla/Marketplace/Options/Packaged_apps ---- -

Eine gepackte App ist eine Offene Web App die all ihre Ressourcen (HTML, CSS, JavaScript, app mainfest und so weiter) komprimiert in einer zip Datei hat, anstatt die Dateien auf einem Webserver zu hosten. EIne gepackte App ist einfach einezip Datei, welche die App Mainfest in dem Hauptverzeichniss trägt. Die App Mainfest muss den Namen manifest.webapp tragen.

-

Einer der unterschiede zu einer gehosteten App ist, dass eine gepackte App den launch_path in der Mainfest eingetragen haben muss. Dennoch ist es optional den Pfad auch in einer gehosteten App einzutragen.

-
-

Anmerkung: Der Firefox Marktplatz unterstützt momentan nur gepackte App´s für Firefox OS.

-
-

Zweck einer gepackten App

-

Der Zweck einer gepackten App ist, das man einen verarbeitbaren Weg hat, um Zugriff auf die sensitiven API´s der Geräte zu haben. Die App muss von dem Store (Wie der Firefox Marktplatz), von dem die App´s verteilt werden geprüft werden. Der Store prüft die App, sobald diese für akzeptabel befunden wird, wird die App kryptographisch mit einem privatem Schlüssel versehen. Das gebit den Verbrauchern der App mehr Sicherheit, dass die App sorgsam auf Sicherheit, Datenschutz und Leistungsfähigkeit geprüft wurde.

-

 

-

Typen einer gepackten App

-

Es gibt 3 Typen einer gepackten App:

-
-
- Privilegierte App
-
- Eine privilegierte App wurde durch ein spezielles Verfahren von dem Firefox Marktplatz genehmigt. Dadurch soll mehr Sicherheit für den Benutzer gewährleistet werden, wenn eine App spezielle sensitiven APIs des Gerätes benutzen möchte. Es ist mit nativen Apps auf Plattformen wie iOS oder Android zu vergleichen. Um eine App als privilegierte App zu kennzeichnen muss das type Feld in der der Datei manifest.webapp auf privileged gesetzt werden.
-
- Eine priviligierte App hat folgende Eigenschaften: -
    -
  • Freigegeben durch einen App Store nach einem Code Review oder einer vergleichbraen Prüfung.
  • -
  • Alle resourcen einer App's werden durch den App Store signiert.
  • -
  • Zugriff auf spezielle, sensible Web APIs, auf die nicht vertrauenswürdiger Inhalt nicht zugreifen darf.
  • -
  • Erzwingt eine sogenannte Content Security Policy (CSP). Eine privilegierte App benutz folgende CSP: -
    "default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"
    -
  • -
  • Implementiert weitere Anforderungen an die Sicherheit. Siehe Security für mehr Informationen.
  • -
-
-
- Zertifizierte App
-
- Ein zertifiziertes App ist für einen kritischen Systemfunktion wie die Standard Dialer oder die Systemeinstellungen App auf einem Smartphone gedacht. Diese Art von App könnte für kritische Funktionen auf einem Firefox OS Phone verwendet werden . Es ist nicht für Anwendungen von Drittanbietern vorgesehen, so dass die meisten App nich mit anderen Apps funktionieren . Ein zertifiziertes App ist eine verpackte App, die ähnlich einer privilegierten App ist, mit der Ausnahme, dass alle Geräteberechtigungen implizit sind, das heißt, sie ist ohne ausdrückliche Genehmigung durch den Benutzer aktiviert sind. Ein zertifiziertes App muss für ein Gerät genehmigen vom OEM oder Träger, um diese implizite Zustimmung zu kritischen APIs verwenden zu können . Um anzugeben, dass dies eine zertifizierter App ist, fügen Sie den Feldtyp type auf seine manifest.webapp -Datei und legen Sie es auf zertifiziert.
-
- Das folgende ist die CSP für eine zertifizierte App, die geringfügig von der CSP für eine privilegierte App abweicht: -
"default-src *; script-src 'self'; object-src 'none'; style-src 'self'"
- Dies hat den Effekt von etwas lockerere Regeln für die Inline-CSP für privilegierte Apps im Vergleich zu zertifizierten Apps. Wenn Sie mehr von der Überlegung dahinter möchten, finden Sie unter Standard Default CSP policy und Bug 768029.
-
- Plain packaged app
-
- You can also make a regular app that is simply packaged in a zip file. The Marketplace signs it, but does not perform the special authentication process used for privileged or certified apps. This plain packaged app cannot use certain sensitive Web APIs. It is not subject to the CSPs described for privileged and certified apps. This type of app could be useful if you want all of your app's resources available on the device when the user first uses it, with no downloading. This type of packaged app does not require the type field in its manifest.webapp file, because the default value for type (web) is correct.
-
-

Using sensitive Web APIs

-

There are Web APIs that could be used maliciously, so access to them must be controlled. For every sensitive API you want your app to access, you must add an entry to the permissions field in the app's manifest.

-

Some sensitive APIs can be accessed by normal hosted apps, but other APIs require that you use a packaged app (privileged or certified). See App permissions for a table that describes the requirements.

-

Packaged apps and the Firefox Marketplace

-

The Firefox Marketplace handles packaged apps differently from hosted apps. When you submit your packaged app, its zip file is stored on the Marketplace servers, and the Marketplace generates a new manifest called the "mini-manifest" that is based on the app manifest in your packaged app's zip file. When a user installs your app, the mini-manifest is passed to the installPackage() function to install the app. The mini-manifest exists for installation and update purposes and is not used when your app runs.

-

Testing packaged app installation

-

To install a packaged app on a Firefox OS device using the Simulator for testing purposes, see the section on "Push to Device" in the Simulator guide. To test a packaged app without the Simulator, you can install it on a device from a regular web server by following the steps below, in the Self-publishing packaged apps section.

-

Self-publishing packaged apps

-

You can self-publish a packaged app by hosting it on a server along with a mini-manifest in the same directory that identifies the app and is used in the install process. This section covers how to do this detail.

-

Note that you can also host a packaged app locally and test it on a real device. The Web server and the phone must be on the same network, and the server must be able to serve requests from the local network. You just need to include the absolute path to the referenced files, in the same way as the absolute paths are included normally (see below.) Remember to include the port information if you are using a non-standard port, for example http://10.10.12.1:8080/package.zip.

-

Steps

-
    -
  1. -

    Zip up your app's contents and give it the name package.zip. This file should contain all the app's resource files, including the manifest.

    -
    -

    Caution: You must be also careful to zip the contents you wish to appear in the packaged app, and not the directory they are contained in. If you zip up the parent directory, the manifest will end up in the wrong place, and the packaged app will be invalid.

    -
    -
  2. -
  3. Create a file called package.manifest and give it the contents below. This is a mini-manifest used for packaged app installation purposes. It is not the main manifest of your app that is inside the zip file. See Mini-manifest fields if you want more detailed information about mini-manifests. -
    {
    -    "name": "My sample app",
    -    "package_path" : "http://my-server.com/my-app-directory/my-app.zip",
    -    "version": "1",
    -    "developer": {
    -        "name": "Chris Mills",
    -        "url": "http://my-server.com"
    -    }
    -}
    -
  4. -
  5. Create a file named index.html with the following contents. This contains sample JavaScript that calls the packaged app (installPackage()) and callbacks for success and failure notification. -
    <html>
    -  <body>
    -    <p>Packaged app installation page</p>
    -    <script>
    -      // This URL must be a full url.
    -      var manifestUrl = 'http://my-server.com/my-app-directory/package.manifest';
    -      var req = navigator.mozApps.installPackage(manifestUrl);
    -      req.onsuccess = function() {
    -        alert(this.result.origin);
    -      };
    -      req.onerror = function() {
    -        alert(this.error.name);
    -      };
    -    </script>
    -  </body>
    -</html>
    -
  6. -
  7. Copy package.zip, package.manifest, and index.html into your app root directory (my-app-directory in my examples).
  8. -
  9. Using a compatible device (such as a Firefox OS phone), navigate to the location on your server where you put the example files and confirm the prompt to install the app. The script will give an indication of installation success or failure.
  10. -
-
-

Note: You can not install privileged or certified apps with installations from hosted packages, as they need to be signed. Use the Simulator to test privileged apps.

-
-

Mini-manifest fields

-

Here is a more in-depth example of a mini-manifest:

-
{
-  "name": "My app",
-  "package_path": "http://thisdomaindoesnotexist.org/myapp.zip",
-  "version": "1.0",
-  "size": 172496,
-  "release_notes": "First release",
-  "developer": {
-    "name": "Developer Name",
-    "url": "http://thisdomaindoesnotexist.org/"
-  },
-  "locales": {
-    "fr-FR": {
-      "name": "Mon application"
-    },
-    "se-SE": {
-      "name": "Min balla app"
-    }
-  },
-  "icons": {
-    "16": "/icons/16.png",
-    "32": "/icons/32.png",
-    "256": "/icons/256.png"
-  }
-}
-
-

When the Firefox Marketplace generates a mini-manifest for your app, it pulls information from your app's manifest for some of the fields. You can find documentation for these fields at App manifest. The fields unique to the mini-manifest are package_path, release_notes, and size. The name, version, developer, and locales fields in your app manifest must be exactly the same as in your mini-manifest.

-

Here is information on the mini-manifest that relates to using it locally for your own testing:

-
-
- name
-
- (required) The app's name. Maximum length is 128 characters.
-
- package_path
-
- (required) The URL where the app's zip file can be found. You need to make sure the package_path is absolute to where the ZIP file is located.
-
- version
-
- The version of the app.
-
- size
-
- The size of the app's zip file in bytes. This is not necessary for local testing, but provide it to get a progressbar during installation.
-
- release_notes
-
- Information about this release of the app. On the Marketplace this information comes from a Web page that is part of the submission process.
-
- developer
-
- Information about the developer, contains the name and url fields. The developer info needs to match between the mini-manifest and the main manifest file in the ZIP.
-
- locales
-
- Localization information. Keys should be in xx-YY format.
-
- icons
-
- Icons for use by the app.
-
-
-

Note: Values in package and webapp.manifest need to be the same, otherwise installation will fail. The safest way is to copy manifest.webapp into package.manifest and just add the package_path.

-
-

Differences from hosted apps

-

Packaged apps have the same capabilites as normal website-style Open Web Apps ("hosted" apps), but packaged apps have a few differences:

- -

The packaged app can still do things like access a database on a Web server, like a regular hosted app.

-

Updating packaged apps

-

For information on updating apps, see Updating apps.

-

Packaged app example

-

Firefox OS Boilerplate App

diff --git a/files/de/archive/mozilla/marketplace/publishing/publish_options/index.html b/files/de/archive/mozilla/marketplace/publishing/publish_options/index.html deleted file mode 100644 index 63d97f6016..0000000000 --- a/files/de/archive/mozilla/marketplace/publishing/publish_options/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Veröffentlichungsoptionen Ihrer App -slug: Archive/Mozilla/Marketplace/Publishing/Publish_options -translation_of: Archive/Mozilla/Marketplace/Options/Self_publishing ---- -
-

Once you have finished your app, you need to deploy it and publish it. This involves making it available for users to consume (whether they are going to just navigate to it in a browser and use it like a regular web page, or download it and install it on a device like a Firefox OS phone.), letting people know it is available, and providing supporting information such as usage instructions and help resources. This article looks briefly at the options available to you.

-
-

Publishing on the Firefox Marketplace

-

The Firefox Marketplace is our own dedicated app store for distributing free and paid apps. Submitting an app to the Firefox Marketplace is a simple process, involving uploading the app itself plus surrounding information, and waiting for it to go through our thorough review process to make sure it is high quality and not malicious. Submitting to the Firefox Marketplace also confers other advantages such as increased publicity, no need to implement special APIs on your own web site, and the possibility of publishing paid apps more easily. You can submit both hosted apps and packaged apps to the Firefox Marketplace.

-

Hosted apps

-

A hosted app is basically an app hosted on a web server just like a regular web page. If you want to let people install a hosted app straight from the site, you must implement some JavaScript code on your Web site to manage installing and updating your app into users' browsers, and make sure your app code includes a valid manifest file. Please see our writeups of manifest files and Install API functionality for how simple these steps are to implement.

-

Where you host the app is really up to you, but the two options listed below are probably the most common and easiest.

-

GitHub

-

If the Web app is purely static (HTML/CSS/JavaScript, but no server-side processing), GitHub Pages is a solid hosting option. It will serve your manifest with the correct MIME type if you give it a .webapp extension.

-

Generic hosting solutions

-

For dynamic websites, use a generic hosting option (like a Web server you may already own or have access to) with the right capabilities or a hosting provider specifically tailored to the needs of your app, like Heroku or Google App Engine.

-
-

Note: Installable open web apps have a "single app per origin" security policy; basically, you can't host more than one installable app per origin. This makes testing a bit more tricky, but there are still ways around this, such as creating different sub-domains for apps, testing them using the Firefox OS Simulator, or testing the install functionality on Firefox Aurora/Nightly, which allow installable web apps to install on the desktop. See FAQs about apps manifests for more information on origins.

-
-

Packaged apps

-

A packaged app is an Open Web App that has all of its resources (HTML, CSS, JavaScript, app manifest, and so on) contained in a zip file, instead of having its resources on a Web server. A packaged app is simply a zip file with the app manifest in its root directory. The manifest must be named manifest.webapp.

-

One difference from a hosted app is that a packaged app must specify a launch_path in the manifest, whereas it's an optional manifest field for a hosted app. For more information, check out our Packaged Apps article.

-

Self-publishing apps

-

You can also choose to self-publish apps. For hosted apps, this just involves putting them up on web hosting, as detailed above.

-

You can self-publish a packaged app by hosting it on a server along with a mini-manifest in the same directory that identifies the app and is used in the install process. Let's run through this process:

-
    -
  1. Have your packaged app's zip file available and give it the name package.zip. This file contains all the app's resource files, including the manifest.
  2. -
  3. Create a file called package.manifest and give it the contents below. This is a mini-manifest used for packaged app installation purposes. It is not the main manifest of your app that is inside the zip file.
    -
    {
    -    "name": "My sample app",
    -    "package_path" : "http://my-server.com/my-app-directory/my-app.zip",
    -    "version": "1",
    -    "developer": {
    -        "name": "Chris Mills",
    -        "url": "http://my-server.com"
    -    }
    -}
    -
  4. -
  5. Create a file named index.html with the following contents. This contains sample JavaScript that calls the packaged app (installPackage()) and callbacks for success and failure notification. -
    <html>
    -  <body>
    -    <p>Packaged app installation page</p>
    -    <script>
    -      // This URL must be a full url.
    -      var manifestUrl = 'http://my-server.com/my-app-directory/package.manifest';
    -      var req = navigator.mozApps.installPackage(manifestUrl);
    -      req.onsuccess = function() {
    -        alert(this.result.origin);
    -      };
    -      req.onerror = function() {
    -        alert(this.error.name);
    -      };
    -    </script>
    -  </body>
    -</html>
    -
  6. -
  7. Copy package.zip, package.manifest, and index.html into your app root directory (my-app-directory in my examples).
  8. -
  9. Using a compatible device (such as a Firefox OS phone), navigate to the location on your server where you put the example files and confirm the prompt to install the app. The script will give an indication of installation success or failure.
  10. -
-
-

Note: You can't install privileged or certified apps from self-hosted packages, as they need to be signed via the Firefox Marketplace submission process.

-
-
-

Note: You can even create your own apps store, which has a number of options available to it.

-
-

 

diff --git a/files/de/archive/mozilla/marketplace/publishing/submit/index.html b/files/de/archive/mozilla/marketplace/publishing/submit/index.html deleted file mode 100644 index a6e3468169..0000000000 --- a/files/de/archive/mozilla/marketplace/publishing/submit/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Submit -slug: Archive/Mozilla/Marketplace/Publishing/Submit -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Mozilla/Marketplace/Publishing/Submit ---- -

This section describes the process for submitting an app to Firefox Marketplace

-

Residual details: https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Submitting_an_app

diff --git a/files/de/archive/mozilla/marketplace/publishing/updating_apps/index.html b/files/de/archive/mozilla/marketplace/publishing/updating_apps/index.html deleted file mode 100644 index 5fc08ff26a..0000000000 --- a/files/de/archive/mozilla/marketplace/publishing/updating_apps/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Updating apps -slug: Archive/Mozilla/Marketplace/Publishing/Updating_apps -translation_of: Archive/Mozilla/Marketplace/Publishing/Updating_apps ---- -
-

Dieser Artikel beschreibt den Prozess, mit dem Sie apps aktualisieren können, die bereits, Selbstveröffentlicht oder veröffentlicht auf dem   Firefox Marketplace  wurden.

-
-
-

Hinweis: Wenn Sie den Namen Ihrer Anwendung ändern, wenn es Marketplace genehmigt hat, müssen Sie Ihre app zur Genemigung erneut senden.

-
-

Gehostete apps zu aktualisieren

-

An app respects the normal rules for Web caching, and may optionally use advanced mechanisms for improved start-up, like the HTML5 AppCache. Given this, there are no special considerations for updating the normal resources that an app uses.

-

Open Web Apps are different, however, in the handling of the manifest. Some changes to a manifest may require user approval. Depending on the implementation of the Web runtime, it may be unclear whether an update has occurred.

-

As a clean way to deal with this issue, you can provide a version field in the app manifest. You can later check the version by inspecting the return value of the navigator.mozApps.getInstalled() function. If the user's installed version is not up-to-date, you can trigger an update using navigator.mozApps.install().

-

The value of version is not used by the Web runtime, so you can use whatever versioning scheme you want.

-

Also note that changes to a manifest that introduce errors or other breakage will be detected if the manifest has been submitted to Firefox Marketplace. Serious errors will cause the app's listing to be disabled. Less serious errors may automatically flag the app for re-review.

-

Updating packaged apps

-

Packaged apps have a different update process than hosted apps. To update a packaged app, you upload a new version of the app's zip file to the Firefox Marketplace. Then the updated app gets reviewed and published to the Marketplace. This triggers an update on the Firefox OS phone. The phone user can also request an update using the Settings app.

-

If you want more detail on the packaged app update process, see below.

-

More details on packaged app update

-

Here are more details on the update process for packaged apps. You might want to know these things if you are implementing an app marketplace.

- diff --git a/files/de/archive/mozilla/marketplace/submission/index.html b/files/de/archive/mozilla/marketplace/submission/index.html deleted file mode 100644 index 5f1479f109..0000000000 --- a/files/de/archive/mozilla/marketplace/submission/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Submission -slug: Archive/Mozilla/Marketplace/Submission -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Mozilla/Marketplace/Submission ---- -

Marketplace Vorlage

diff --git a/files/de/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html b/files/de/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html deleted file mode 100644 index 8582aaccbc..0000000000 --- a/files/de/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Überprüfungskriterien für Marketplace -slug: Archive/Mozilla/Marketplace/Submission/Marketplace_review_criteria -translation_of: Archive/Mozilla/Marketplace/Publishing/Marketplace_review_criteria ---- -
-

Dieser Artikel beschreibt die Anforderungen, die eine App erfüllen muss, um über den Firefox Marketplace verteilt zu werden. Diese Anforderungen sind dazu da, ein Gleichgewicht zwischen den Bedürfnissen der Entwickler und der Anwender von Apps aus dem Firefox Marketplace herzustellen. Entwickler möchten faire, einheitliche, nicht übermäßig strenge Anforderungen, auf denen sie verlässlich ihre Arbeit aufbauen können. Andererseits möchten Anwender die Gewissheit, dass Apps sicher sind, auf ihren Geräten funktionieren und tun, was sie zu tun angeben. Die folgenden App-Anforderungen versuchen, auf dem schmalen Grat zwischen diesen Anforderungen zu gehen.

-
-

Dies sind Mozillas Erwartungen daran, was eine App-Überprüfung ist und nicht ist:

- -

Sicherheit

-

Die Einzelheiten der Sicherheitsarchitektur für Apps finden Sie hier: https://wiki.mozilla.org/Apps/Security

- -

Datenschutz

- -

Inhalt

- -

Richtlinien für Inhalte

-

Diese Liste beschreibt Typen von Inhalten, die nicht in den Firefox Marketplace passen. Diese Liste ist beispielhaft, nicht abschließend und kann aktualisiert werden. Wenn eine App diese Richtlinien verletzt, darf Mozilla die App umgehend aus dem Firefox Marketplace entfernen.

- -

Funktionalität

- -

Bedienerfreundlichkeit

- -

Sperrlisten-Richtlinie

-

Wir hoffen, diese Funktion niemals nutzen zu müssen, aber wir behalten uns vor, freigegebene Apps zu entfernen („blocklist“) bei denen wir im Laufe der Zeit feststellen, dass sie eine der Sicherheits-, Datenschutz- oder Inhalts-Richtlinien verletzt sowie Apps, die die System- oder Netzwerkleistung stark einschränken. Entwickler werden informiert, bevor die Sperre in Kraft tritt. Solange wir keine Beweise für das Gegenteil haben, gehen wir davon aus, dass Entwickler anständig sind und sie erhalten Unterstützung des Überprüfer-Teams zur Aufklärung und Behebung des Problems. Konkrete Beispiele, für Situationen, in denen wir uns eine Sperre vorbehalten, beinhalten:

- diff --git "a/files/de/archive/mozilla/marketplace/ver\303\266ffentlichen/index.html" "b/files/de/archive/mozilla/marketplace/ver\303\266ffentlichen/index.html" deleted file mode 100644 index 3c94ca1182..0000000000 --- "a/files/de/archive/mozilla/marketplace/ver\303\266ffentlichen/index.html" +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Veröffentlichen auf dem Firefox Marketplace -slug: Archive/Mozilla/Marketplace/Veröffentlichen -translation_of: Archive/Mozilla/Marketplace/Publish ---- -
-

Dokumentation für das Veröffentlichen einer app auf dem Firefox Marketplace.

-
-
-
-
-
- App testen und Problembehandlung
-
-
-
- Ein leichtes Handbuch zur überprüfung und Problembehandlung , bevor Sie Ihre app auf den Firefox-Marktplace einreichen.
-
-
-
- Senden einer app auf dem Firefox Marketplace
-
-
-
- Dieser Leitfaden hilft Ihnen erfolgreich Ihre Anwendung auf den Firefox-Marktplace einzureichen.
-
-
-
- Marketplace Prüfkriterien
-
-
-
- Eine Erläuterung der Kriterien die eine app erfüllen muss um auf dem Firefox-Marktplatz veröffentlicht zu werden; Befolgen Sie die Richtlinien wie in diesem Artikel dargelegt.
-
-
-
- Marketplace screenshot Kriterien
-
-
-
- Richtlinien für die Screenshots um mit Ihrer app die Auswirkungen und die Qualität auf dem Markt zu maximieren.
-
-
-
-
-
-
-
-
- Tools für app-Entwickler
-
- -
-
- Technologie-Referenzdokumentation
-
- -
-
- Hilfe von der Gemeinschaft
-
-
-
- Wenn Sie noch nicht sicher sind was zu tun ist, was Sie erledigen wollen, zögern Sie nicht zu der Unterhaltung!
-
-  
-
- -

Vergessen Sie nicht über die netiquette...

-

 

-
-
-
-

 

diff --git a/files/de/archive/mozilla/xul/action/index.html b/files/de/archive/mozilla/xul/action/index.html deleted file mode 100644 index 5492305611..0000000000 --- a/files/de/archive/mozilla/xul/action/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: action -slug: Archive/Mozilla/XUL/action -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/action ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Das action Element wird verwendet, um den Inhalt festzulegen, welcher für jedes zutreffende Ergebnis einer Abfrage passt. Dieses Element sollte in den Elementen query oder rule enthalten sein.

-

Für weitere Informationen, siehe Aktionen.

-

Beispiele

-

(Beispiel benötigt)

-

Attribute

- - - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

diff --git a/files/de/archive/mozilla/xul/arrowscrollbox/index.html b/files/de/archive/mozilla/xul/arrowscrollbox/index.html deleted file mode 100644 index d1785f82b6..0000000000 --- a/files/de/archive/mozilla/xul/arrowscrollbox/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: arrowscrollbox -slug: Archive/Mozilla/XUL/Arrowscrollbox -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/arrowscrollbox ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Eine Box, die entlang den Kanten Scrollpfeile bereitstellt, um die Box zu scrollen. Der Benutzer muss die Maus dazu nur über die Pfeile bewegen. Dieses Element wird typischerweise bei langen Popup-Menüs verwendet.

-

Wenn die Maus über einen (aktiven) Pfeil bewegt wird, wird ein Scroll-Event ausgelöst.

-

Weitere Informationen sind im XUL Tutorial verfügbar.

-
Attribute
disabled, smoothscroll, tabindex
-
-
Eigenschaften
disabled, scrollBoxObject, scrollIncrement, smoothScroll, tabIndex
-
-
Methoden
ensureElementIsVisible, scrollByIndex, scrollByPixels
-
-

Beispiele

-
Image:menuscroll1.jpg
-
<arrowscrollbox orient="vertical" flex="1">
-  <button label="Red"/>
-  <button label="Blue"/>
-  <button label="Green"/>
-  <button label="Yellow"/>
-  <button label="Orange"/>
-  <button label="Silver"/>
-  <button label="Lavender"/>
-  <button label="Gold"/>
-  <button label="Turquoise"/>
-  <button label="Peach"/>
-  <button label="Maroon"/>
-  <button label="Black"/>
-</arrowscrollbox>
-
-

Attribute

- - - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
- -
disabled
Typ: boolean
Kennzeichnet, ob ein Element deaktiviert ist oder nicht. Wenn das Element auf  true gesetzt ist, ist das Element deaktiviert. Deaktivierte Elemente sind gewöhnlich mit einem grauen Text dargestellt. Wenn ein Element deaktiviert ist, wird es auf Anwenderaktionen nicht reagieren, es kann den Fokus nicht erlangen und das command Ereignis wird nicht ausgelöst. Das Element wird allerdings noch auf Mausereignisse antworten. Um das Element zu aktivieren, ist es besser das Attribut zu entfernen als es auf den Wert false zu setzen. Um den Wert dieses Attributs mittels JavaScript zu setzen oder abzurufen, sollte besser die disabled Eigenschaft verwendet werden.
-
- - -
- -
-
- smoothscroll
-
- Type: boolean
-
- true initially enables smooth scrolling for the corresponding arrowscrollbox, false disables it. Currently, smooth scrolling supports horizontal arrowscrollboxes only.
-
-
- - -
-
tabindex
-
Type: integer
-
The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.
-
-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

-

-

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

- -

TBD

diff --git a/files/de/archive/mozilla/xul/assign/index.html b/files/de/archive/mozilla/xul/assign/index.html deleted file mode 100644 index a08496f06a..0000000000 --- a/files/de/archive/mozilla/xul/assign/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: assign -slug: Archive/Mozilla/XUL/Assign -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/assign ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Erstellt eine zusätzliche Variable für XML Templates, deren Wert mittels XPath bestimmt werden kann.

-
Weitere Informationen sind unter XML_Assignments verfügbar.
-
Attribute

expr, var

-
-

Beispiele

-
<vbox datasources="people.xml" ref="*" querytype="xml">
-  <template>
-    <query expr="person">
-      <assign var="?namelength" expr="string-length(@name)"/>
-      <assign var="?siblings" expr="count(../*) - 1"/>
-    </query>
-    <action>
-      <hbox uri="?" align="center">
-        <button label="?name"/>
-        <label value="?gender"/>
-        <label value="?namelength"/>
-        <label value="?siblings"/>
-      </hbox>
-    </action>
-  </template>
-</vbox>
-
-

Attribute

-
- -
expr
Typ: string
Ein XPath Ausdruck für XML Abfragen, der Ergebnisse zurückliefert. Innerhalb des Ausdrucks kann jeder Namespace Präfix verwendet werden, der für ein Element deklariert wurde.
-
- -
- -
var
Typ: string
Dient der Variablenzuweisung innerhalb assign Tags; ansonsten wird es als Referenz zu einer Template Variable wie beispielsweise "?name" verwendet.
-
- - -
- - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

diff --git a/files/de/archive/mozilla/xul/attribute/accesskey/index.html b/files/de/archive/mozilla/xul/attribute/accesskey/index.html deleted file mode 100644 index 5f223df6c4..0000000000 --- a/files/de/archive/mozilla/xul/attribute/accesskey/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: accesskey -slug: Archive/Mozilla/XUL/Attribute/accesskey -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/accesskey ---- -
« XUL-Referenz Startseite
-
accesskey
Typ: character
Dem Attribut wird der Buchstabe zugewiesen, der als Tastenkürzel für das Element dienen soll. Dieser Buchstabe sollte sinnvollerweise innerhalb des Textes des Attributs label des Elements vorkommen.
Typischerweise wird dieser Buchstabe visuell durch Unterstreichung hervorgehoben. Dies ist jedoch plattform- und themenspezifisch. Betätigt der Benutzer gleichzeitig die Alt-Taste (oder eine ähnliche Taste; variiert je nach Betriebssystem) und die durch dieses Attribut angegebene Taste, wird das Element im Fenster von überall aus aktiviert. Auch wenn Groß-/Kleinschreibung des Wertes irrelevant ist, wird die dem Attribut accesskey entsprechende Variante benutzt, sollten beide Schreibweisen innerhalb der Beschriftung vorkommen.
-
-
-

Beispiel

-
<vbox>
-  <label value="Namen eingeben" accesskey="e" control="myName"/>
-  <textbox id="myName"/>
-  <button label="Abbrechen" accesskey="b"/>
-  <button label="Ok" accesskey="O"/>
-</vbox>
-
-

Siehe auch

-

Attribut label, Attribut acceltext

- -
diff --git a/files/de/archive/mozilla/xul/attribute/activetitlebarcolor/index.html b/files/de/archive/mozilla/xul/attribute/activetitlebarcolor/index.html deleted file mode 100644 index 95f6be0346..0000000000 --- a/files/de/archive/mozilla/xul/attribute/activetitlebarcolor/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Activetitlebarcolor -slug: Archive/Mozilla/XUL/Attribute/Activetitlebarcolor -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/activetitlebarcolor ---- -
« XUL-Referenz Startseite
-
activetitlebarcolor
Typ: color string
Bestimmt die Hintergrundfarbe der Titelleiste eines Fensters, wenn es aktiv ist (Vordergrund). Außerdem versteckt dies die Trennlinie zwischen Titelleiste und Fensterinhalt. Dies trifft nur auf Mac OS Systeme zu.
-
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/align/index.html b/files/de/archive/mozilla/xul/attribute/align/index.html deleted file mode 100644 index fe97a3c6c4..0000000000 --- a/files/de/archive/mozilla/xul/attribute/align/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: align -slug: Archive/Mozilla/XUL/Attribute/align -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/align ---- -
- « XUL-Referenz Startseite
-
-
- align
-
-
-
- Typ: einer der unten angegebenen Werte
-
-
-
- Das Attribut align gibt die Ausrichtung der Kindelemente des Kastens (Box) an, wenn die Größe des Kastens größer als die Gesamtgröße seiner Kindelemente ist. Für Kästen horizontaler Orientierung gibt es die vertikale Ausrichtung der Kindelemente an. Im Falle vertikaler Orientierung legt es entsprechend die horizontale Ausrichtung der Kindelemente fest. Das Attribut pack bezieht sich auf die Ausrichtung, wird jedoch zur Angabe der Position in entgegengesetzter Richtung benutzt. Der Wert von align kann auch mittels der Stileigenschaft -moz-box-align angeben werden.
-
- -
-

Siehe auch

-

Attribut pack

- -
-

 

diff --git a/files/de/archive/mozilla/xul/attribute/allowevents/index.html b/files/de/archive/mozilla/xul/attribute/allowevents/index.html deleted file mode 100644 index 63dc160f9e..0000000000 --- a/files/de/archive/mozilla/xul/attribute/allowevents/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: allowevents -slug: Archive/Mozilla/XUL/Attribute/allowevents -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/allowevents ---- -
« XUL-Referenz Startseite
-
allowevents
Typ: boolean
Falls true, werden Ereignisse an die Kindelemente des Elements weitergereicht. Anderenfalls erhält nur das Element Ereignisse.
-
-
-

Bei listitem und titlebar Elementen werden Maus-Ereignisse normalerweise nicht an deren Kindelemente gesendet. Stattdessen werden sie zurück auf das listitem und titlebar Element selbst geschickt. Das bedeutet, dass Elemente innerhalb eines listitem Elements nicht auf auf Ereignisse reagieren und stattdessen nur ein Item in der Liste ausgewählt wird. Wird das allowevents Attribut auf true gesetzt, wird dieses spezielle Verhalten deaktiviert und Ereignisse werden wie bei anderen Elementen behandelt.

-

Bei menu, menuseparator, menuitem und treecol Elementen, sowie Menü-Buttons, und beim datepicker Popup werden Maus-Ereignisse ebenfalls auf das Element selbst gerichtet. Das allowevents Attribut wird jedoch in einer anderen Art verwendet. Das Attribut allowevents kann hier im Kindelement auf true gesetzt werden. Das hat die gleichen Auswirkungen, wie bei normal gerichteten Ereignissen, erlaubt aber unterschiedliche Einstellungen für jedes Kindelement.
-Dieses Verhalten wird für Menüs verwendet, um zum Beispiel einem Menü-Button zu erlauben sich so zu verhalten wie das Menü, wenn man darauf klickt.

- -
diff --git a/files/de/archive/mozilla/xul/attribute/allownegativeassertions/index.html b/files/de/archive/mozilla/xul/attribute/allownegativeassertions/index.html deleted file mode 100644 index 83634ca471..0000000000 --- a/files/de/archive/mozilla/xul/attribute/allownegativeassertions/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: allownegativeassertions -slug: Archive/Mozilla/XUL/Attribute/allownegativeassertions -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/allownegativeassertions ---- -
« XUL-Referenz Startseite
-
allownegativeassertions
Typ: boolean
Gültig für jedes Element mit einem Attribut datasources. Werden mehrere Datenquellen benutzt, wird die Aussage eventuell von einer anderen überschrieben. Wenn dieses Attribut true ist (was die Vorgabe ist), kann eine Datenquelle eine frühere Aussage negieren.
-
diff --git a/files/de/archive/mozilla/xul/attribute/color/index.html b/files/de/archive/mozilla/xul/attribute/color/index.html deleted file mode 100644 index 50902e7afe..0000000000 --- a/files/de/archive/mozilla/xul/attribute/color/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: color -slug: Archive/Mozilla/XUL/Attribute/Color -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/color ---- -
« XUL-Referenz Startseite
-
color
Typ: color string
Die aktuell ausgewählte Farbe. Diese wird geändert, sobald der Anwender eine Farbe auswählt. Man kann einen String in der Form #RRGGBB der Eigenschaft zuweisen, um die gewählte Farbe zu ändern.
-
-
-

 

-
diff --git a/files/de/archive/mozilla/xul/attribute/cols/index.html b/files/de/archive/mozilla/xul/attribute/cols/index.html deleted file mode 100644 index 1f2ea0a4d6..0000000000 --- a/files/de/archive/mozilla/xul/attribute/cols/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: cols -slug: Archive/Mozilla/XUL/Attribute/Cols -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/cols ---- -
« XUL-Referenz Startseite
-
cols
Typ: integer
Stellt die Anzahl an Spalten für mehrzeilige Textboxen dar.
-
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/decimalplaces/index.html b/files/de/archive/mozilla/xul/attribute/decimalplaces/index.html deleted file mode 100644 index bea62c69a2..0000000000 --- a/files/de/archive/mozilla/xul/attribute/decimalplaces/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: decimalplaces -slug: Archive/Mozilla/XUL/Attribute/Decimalplaces -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/decimalplaces ---- -
« XUL-Referenz Startseite
-
decimalplaces
Typ: integer
Die Anzahl an Dezimalstellen, die angezeigt werden sollen. Der Standardwert ist 0, was bedeutet, dass keine Dezimalstellen angezeigt werden. Der Wert infinity kann dazu verwendet werden, keine Begrenzung der Dezimalstellen bei Zahlen anzuzeigen. Hinweis: Dezimalzahlen werden als Floats gespeichert.
-
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/disabled/index.html b/files/de/archive/mozilla/xul/attribute/disabled/index.html deleted file mode 100644 index 0b296a38ea..0000000000 --- a/files/de/archive/mozilla/xul/attribute/disabled/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Disabled -slug: Archive/Mozilla/XUL/Attribute/Disabled -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/disabled ---- -
« XUL-Referenz Startseite
-
disabled
Typ: boolean
Kennzeichnet, ob ein Element deaktiviert ist oder nicht. Wenn das Element auf  true gesetzt ist, ist das Element deaktiviert. Deaktivierte Elemente sind gewöhnlich mit einem grauen Text dargestellt. Wenn ein Element deaktiviert ist, wird es auf Anwenderaktionen nicht reagieren, es kann den Fokus nicht erlangen und das command Ereignis wird nicht ausgelöst. Das Element wird allerdings noch auf Mausereignisse antworten. Um das Element zu aktivieren, ist es besser das Attribut zu entfernen als es auf den Wert false zu setzen. Um den Wert dieses Attributs mittels JavaScript zu setzen oder abzurufen, sollte besser die disabled Eigenschaft verwendet werden.
-
-
-
// Deaktiviere ein Element.
-document.getElementById('buttRemove').setAttribute("disabled", "true");
-
-// Reaktiviere ein Element, während das "disabled" Attribute beibehalten wird.
-document.getElementById('buttRemove').setAttribute("disabled", "");
-
-// Reaktiviere ein Element, in dem das "disabled" Attribut entfernt wird.
-document.getElementById('buttRemove').removeAttribute("disabled");
-
-
-

Hinweis zu Firefox 3.5

-

Seit Firefox 3.5 wird dieses Attribut für Keyset Elemente unterstützt.

-
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/empty/index.html b/files/de/archive/mozilla/xul/attribute/empty/index.html deleted file mode 100644 index f1a3d0071b..0000000000 --- a/files/de/archive/mozilla/xul/attribute/empty/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: empty -slug: Archive/Mozilla/XUL/Attribute/Empty -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/textbox.empty ---- -
« XUL-Referenz Startseite
-
empty
Typ: boolean
Gibt an, ob emptyText angezeigt werden soll. Kann zur Gestaltung des Elements verwendet werden.
-
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/emptytext/index.html b/files/de/archive/mozilla/xul/attribute/emptytext/index.html deleted file mode 100644 index 9631bea08c..0000000000 --- a/files/de/archive/mozilla/xul/attribute/emptytext/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: emptytext -slug: Archive/Mozilla/XUL/Attribute/Emptytext -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/emptytext ---- -
« XUL-Referenz Startseite
-
emptytext Unerwünscht Gecko 2
Typ: string
Ein String, der in der Textbox angezeigt wird, falls diese keinen Wert besitzt. Dieses Attribut wurde vom placeholder Attribut in Gecko 2 ersetzt. Der alte Name bleibt zur Kompatibilität bestehen, aber Sie sollten Ihren Code aktualisieren.
-
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/expr/index.html b/files/de/archive/mozilla/xul/attribute/expr/index.html deleted file mode 100644 index 1448277f5c..0000000000 --- a/files/de/archive/mozilla/xul/attribute/expr/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Expr -slug: Archive/Mozilla/XUL/Attribute/Expr -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/expr ---- -
« XUL-Referenz Startseite
-
expr
Typ: string
Ein XPath Ausdruck für XML Abfragen, der Ergebnisse zurückliefert. Innerhalb des Ausdrucks kann jeder Namespace Präfix verwendet werden, der für ein Element deklariert wurde.
-
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/hidespinbuttons/index.html b/files/de/archive/mozilla/xul/attribute/hidespinbuttons/index.html deleted file mode 100644 index 37b86f1f3f..0000000000 --- a/files/de/archive/mozilla/xul/attribute/hidespinbuttons/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: hidespinbuttons -slug: Archive/Mozilla/XUL/Attribute/Hidespinbuttons -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/hidespinbuttons ---- -
« XUL-Referenz Startseite
-
hidespinbuttons
Typ: boolean
Falls der Wert auf true gesetzt wird, werden keine Buttons mit Pfeilen angezeigt, um den Wert des Feldes anzupassen. Der Wert kann dann ausschließlich per Tastatur eingegeben werden. Standardmäßig ist der Wert false.
diff --git a/files/de/archive/mozilla/xul/attribute/index.html b/files/de/archive/mozilla/xul/attribute/index.html deleted file mode 100644 index 2bc9d70f0d..0000000000 --- a/files/de/archive/mozilla/xul/attribute/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Attribute -slug: Archive/Mozilla/XUL/Attribute -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute ---- -

« XUL-Referenz Startseite

- diff --git a/files/de/archive/mozilla/xul/attribute/label/index.html b/files/de/archive/mozilla/xul/attribute/label/index.html deleted file mode 100644 index d1bde8c8b8..0000000000 --- a/files/de/archive/mozilla/xul/attribute/label/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: label -slug: Archive/Mozilla/XUL/Attribute/label -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/label ---- -
« XUL-Referenz Startseite
-
label
Typ: string
Die Beschriftung für das Element. Wird das Attribut nicht angegeben, so erscheint auch kein Beschriftungstext.
-
-
-

Siehe auch

- -

Beispiele in JavaScript

-
<label value="Whaw" id="the-big-label" command="the-big-button"/>
-<button id="the-big-button" label="Klick mich"
-	oncommand="alert(document.getElementById('the-big-label').value)"/>
-
-<label id="myLabel" value="Meine Beschriftung"/>
-<button label="Klick mich"
-	oncommand="document.getElementById('myLabel').setAttribute('value','Wert geändert');" />
-
-<checkbox label="my Checkbox" id="myCheckboX"/>
-<button label="Weiterer Klick"
-	oncommand="document.getElementById('myCheckboX').setAttribute('label','Noch nicht angekreuzt');"/>
-<button label="Beschriftung des Ankreuzfeldes"
-	oncommand="alert( document.getElementById('myCheckboX').getAttribute('label') )"/>
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/onchange/index.html b/files/de/archive/mozilla/xul/attribute/onchange/index.html deleted file mode 100644 index ef1f0e8bd8..0000000000 --- a/files/de/archive/mozilla/xul/attribute/onchange/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: onchange -slug: Archive/Mozilla/XUL/Attribute/Onchange -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/onchange ---- -
« XUL-Referenz Startseite
-
onchange
Typ: script code
Der Code im onchange Attribut wird aufgerufen, wenn sich der Wert des Elements geändert hat.
-
-
- -
diff --git a/files/de/archive/mozilla/xul/attribute/prefpane.src/index.html b/files/de/archive/mozilla/xul/attribute/prefpane.src/index.html deleted file mode 100644 index 14c934c98f..0000000000 --- a/files/de/archive/mozilla/xul/attribute/prefpane.src/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: prefpane.src -slug: Archive/Mozilla/XUL/Attribute/prefpane.src -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/prefpane.src ---- -
- « XUL-Referenz Startseite
-
-
- src
-
- Typ: Überlagerungs-URL
-
- Die URL des Inhalts des prefpane. Sofern nicht angegeben, wird der Inhalt des prefpane Elements dargestellt.
-
- -
-

Siehe auch

- -
diff --git a/files/de/archive/mozilla/xul/attribute/src/index.html b/files/de/archive/mozilla/xul/attribute/src/index.html deleted file mode 100644 index 875fa55f2d..0000000000 --- a/files/de/archive/mozilla/xul/attribute/src/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: src -slug: Archive/Mozilla/XUL/Attribute/src -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/src ---- -
- « XUL-Referenz Startseite
-
-
- src
-
- Typ: URL
-
- Die URL des im Element anzuzeigenden Inhalts.
-
-
-

Beispiele

-
<iframe id="content-body" src="http://www.mozilla.org/"/>
-<browser src="http://www.mozilla.org" flex="1"/>
-<image src='Firefoxlogo.png' width='135' height='130'/>
-
-

Siehe auch

- -
diff --git a/files/de/archive/mozilla/xul/attribute/treecell.src/index.html b/files/de/archive/mozilla/xul/attribute/treecell.src/index.html deleted file mode 100644 index 0c1a44cd34..0000000000 --- a/files/de/archive/mozilla/xul/attribute/treecell.src/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: treecell.src -slug: Archive/Mozilla/XUL/Attribute/treecell.src -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/treecell.src ---- -
« XUL-Referenz Startseite
-
src
Typ: Bild-URL
URL des Bildes, welches in der Zelle des Baums angezeigt werden soll. Sofern nicht angegeben, erscheint auch kein Bild. In der Zelle können sowohl Bild als auch Beschriftung angezeigt werden.
-
-
-

Siehe auch

- - -
diff --git a/files/de/archive/mozilla/xul/attribute/treecol.src/index.html b/files/de/archive/mozilla/xul/attribute/treecol.src/index.html deleted file mode 100644 index e94d0f7cbb..0000000000 --- a/files/de/archive/mozilla/xul/attribute/treecol.src/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: treecol.src -slug: Archive/Mozilla/XUL/Attribute/treecol.src -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/treecol.src ---- -
« XUL-Referenz Startseite
-
src
Typ: Bild-URL
Um für das treecol Element ein Bild für den Kopf, statt eines label Attribut zu benutzen, kann dieses Attribut gesetzt werden. Im Kopf können nicht gleichzeitig Bild und Beschriftung angezeigt werden. Die URL eines Bildes, das als Spaltenkopf des Baums angezeigt wird, kann mit diesem Attribut festgelegt werden. Wird das Attribut nicht angegeben, erscheint kein Bild und es wird stattdessen die Beschriftung angezeigt. Damit das Bild erscheint, muss die Klasse treecol-image für das treecol Element gesetzt werden. Ein label sollte dennoch für die Benutzung im Spaltenwähler angegeben werden, falls ignoreincolumnpicker nicht true ist und hidecolumnpicker für den tree ebenfalls nicht true ist .
-
-
-

Siehe auch

- - -
diff --git a/files/de/archive/mozilla/xul/attribute/var/index.html b/files/de/archive/mozilla/xul/attribute/var/index.html deleted file mode 100644 index 1ed49683ea..0000000000 --- a/files/de/archive/mozilla/xul/attribute/var/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: var -slug: Archive/Mozilla/XUL/Attribute/Var -tags: - - XUL Attribute - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Attribute/var ---- -
« XUL-Referenz Startseite
-
var
Typ: string
Dient der Variablenzuweisung innerhalb assign Tags; ansonsten wird es als Referenz zu einer Template Variable wie beispielsweise "?name" verwendet.
-
-
- -
diff --git a/files/de/archive/mozilla/xul/bbox/index.html b/files/de/archive/mozilla/xul/bbox/index.html deleted file mode 100644 index 35dc11a250..0000000000 --- a/files/de/archive/mozilla/xul/bbox/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Bbox -slug: Archive/Mozilla/XUL/Bbox -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/bbox ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Eine horizontale Box, die an der Grundlinie ausgerichtet ist. Gleichwertig zum hbox Element mit einem align Attribut mit dem Wert baseline.

-

Beispiele

-

(Beispiel benötigt)

-

Attribute

- - - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandte Themen

-

TBD

diff --git a/files/de/archive/mozilla/xul/binding/index.html b/files/de/archive/mozilla/xul/binding/index.html deleted file mode 100644 index bc3dbe2daf..0000000000 --- a/files/de/archive/mozilla/xul/binding/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: binding -slug: Archive/Mozilla/XUL/Binding -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/binding ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Sollte in einem bindings Element enthalten sein. Ein binding wird benutzt, um eine Variable an einen Node zu binden. Ähnlich zum Syntax des triple Elements, können die Eigenschaften eines entsprechenden Nodes an einen Variablennamen gebunden werden. Dieser Name kann innerhalb einer Aktion einer Regel benutzt werden.

-
Eigenschaften
object, predicate, subject
-
-

Beispiele

-

(Beispiel benötigt)

-

Attribute

- - - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

-
-

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandte Themen

-

TBD

diff --git a/files/de/archive/mozilla/xul/box/index.html b/files/de/archive/mozilla/xul/box/index.html deleted file mode 100644 index b479153f5c..0000000000 --- a/files/de/archive/mozilla/xul/box/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: box -slug: Archive/Mozilla/XUL/Box -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/box ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein Containerelement, welches eine beliebige Anzahl an Kindelementen enthalten kann. Falls das box Element ein orient Attribut besitzt, das auf horizontal gesetzt ist, werden die Kindelemente von links nach rechts, in der Reihenfolge, in der sie in im box Element erscheinen, angelegt. Falls orient auf vertical gesetzt ist, werden die Kindelemente von oben nach unten angelegt. Kindelemente überlappen sich dabei nicht. Die standardmäßige Ausrichtung ist horizontal.

-

Weitere Informationen sind im XUL Tutorial verfügbar.

-

Beispiele

-
Image:XUL_ref_box.png
-
<box orient="horizontal">
-  <label value="Zero"/>
-  <box orient="vertical">
-    <label value="One"/>
-    <label value="Two"/>
-  </box>
-  <box orient="horizontal">
-    <label value="Three"/>
-    <label value="Four"/>
-  </box>
-</box>
-
-

Attribute

- - - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

- -
Elemente
vbox, hbox
-
diff --git a/files/de/archive/mozilla/xul/colorpicker/index.html b/files/de/archive/mozilla/xul/colorpicker/index.html deleted file mode 100644 index fa6c6bf533..0000000000 --- a/files/de/archive/mozilla/xul/colorpicker/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: colorpicker -slug: Archive/Mozilla/XUL/Colorpicker -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/colorpicker ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Eine Farbpalette aus der ein Anwender durch Anklicken auf eine der Gitterzellen wählen kann.

-
Attribute
disabled, color, onchange, preference, tabindex, type
-
-
Eigenschaften
accessibleType, color, disabled, open, tabIndex
-
-

Beispiele

-

Image:XUL_REF_rgb.gif

-
<colorpicker/>
-
-

Attribute

-

- -
disabled
Typ: boolean
Kennzeichnet, ob ein Element deaktiviert ist oder nicht. Wenn das Element auf  true gesetzt ist, ist das Element deaktiviert. Deaktivierte Elemente sind gewöhnlich mit einem grauen Text dargestellt. Wenn ein Element deaktiviert ist, wird es auf Anwenderaktionen nicht reagieren, es kann den Fokus nicht erlangen und das command Ereignis wird nicht ausgelöst. Das Element wird allerdings noch auf Mausereignisse antworten. Um das Element zu aktivieren, ist es besser das Attribut zu entfernen als es auf den Wert false zu setzen. Um den Wert dieses Attributs mittels JavaScript zu setzen oder abzurufen, sollte besser die disabled Eigenschaft verwendet werden.
-
- - -
- -
color
Typ: color string
Die aktuell ausgewählte Farbe. Diese wird geändert, sobald der Anwender eine Farbe auswählt. Man kann einen String in der Form #RRGGBB der Eigenschaft zuweisen, um die gewählte Farbe zu ändern.
-
- -
- -
onchange
Typ: script code
Der Code im onchange Attribut wird aufgerufen, wenn sich der Wert des Elements geändert hat.
-
- -
- - -
-
preference
-
Type: id
-
Connects the element to a corresponding preference. This attribute only has any effect when used inside a prefwindow. More information is available in the Preferences System article.
-
-
- - -
-
tabindex
-
Type: integer
-
The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.
-
-
- - -
-
type
-
Type: string
-
If this attribute is not present, the colorpicker is displayed inside the window. If this is set to the text button, the colorpicker is displayed as a button. When the user clicks the button, a popup appears for the user to select a color.
-
-
-

Eigenschaften

-

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandte Themen

-
Schnittstellen
nsIDOMXULControlElement
-
-

Bugs

-

Das onchange Event funktioniert nur, wenn das type Attribut auf "button" festgelegt wurde. Die Verwendung von onclick bietet sich daher an, wenn mit mit dem losen Colorpicker gearbeitet wird und die gerade ausgewählte Farbe benötigt wird, um z.B. in einer <textbox> angezeigt zu werden.

diff --git a/files/de/archive/mozilla/xul/eigenschaften/index.html b/files/de/archive/mozilla/xul/eigenschaften/index.html deleted file mode 100644 index f152ae7489..0000000000 --- a/files/de/archive/mozilla/xul/eigenschaften/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Eigenschaften -slug: Archive/Mozilla/XUL/Eigenschaften -tags: - - XUL Eigenschaften - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Property ---- -

« XUL-Referenz Startseite

- -

Verwandte DOM Elementeigenschaften

- diff --git a/files/de/archive/mozilla/xul/events/index.html b/files/de/archive/mozilla/xul/events/index.html deleted file mode 100644 index 346a893f9a..0000000000 --- a/files/de/archive/mozilla/xul/events/index.html +++ /dev/null @@ -1,464 +0,0 @@ ---- -title: Ereignisse -slug: Archive/Mozilla/XUL/Events -tags: - - XUL-Ereignisse -translation_of: Archive/Mozilla/XUL/Events ---- -

 

- -

« Startseite XUL Referenz

- -

 

- -

Die folgenden Tabellen beschreiben die Ereignisbehandlungsroutinen, welche die meisten XUL-Elemente betreffen. Die Ereignisse können mit dem Element über »Lauscher« (Listener) verknüpft werden. Der addEventListener fügt ein Ereignis hinzu, der removeEventListener hebt diese Verknüpfung wieder auf.

- -

Für einige Ereignisse kann die Verknüpfung auch über Attribute erfolgen. Hierbei muss jedoch berücksichtigt werden, dass nur ein Listener gleichzeitig verknüpft werden kann. Eventuell bereits bestehende Verknüpfungen mit Lauschern werden aufgelöst. Der Name des Attributs entspricht dem Namen des Ereignisses mit einem vorangestellten 'on'.

- -

Geerbte DOM Ereignisse

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EreignisBeschreibung
-

blur

-
-

Das Gegenteil des focus-Ereignisses; das blur-Ereignis tritt auf, nachdem ein Element den Eingabefokus verloren hat.
- Attribut: onblur

-
-

change

-
-

Dieses Ereignis wird gesendet, wenn der Wert eines Textfelds geändert wird, aber erst wenn der Eingabefokus auf ein anderes Element übergeht.
- Attribut: onchange

-
-

click

-
-

Dieses Ereignis wird gesendet, wenn eine Maustaste gedrückt und wieder losgelassen wurde. Über die button Eigenschaft des Ereignisobjekts kann ermittelt werden, welche Maustaste gedrückt wurde. Dieses Ereignis wird auch gesendet, wenn der Benutzer einen Doppelklick ausführt. Über die detail Eigenschaft kann festgelegt werden, wie viele Klicks auftreten sollen. So kann auch auf dreifach-Klicks getestet werden. Dieses Ereignis sollte in XUL nicht verwendet werden, um auf Benutzeraktionen zu reagieren. Stattdessen sollte das command Ereignis benutzt werden.
- Attribut: onclick

-
-

dblclick

-
-

Dieses Ereignis verhält sich wie das click Ereignis, allerdings wird es nur gesendet, wenn der Benutzer einen Doppelklick ausführt. Das Ereignis kann als eine Alternative zur detail Eigenschaft im click Ereignis verwendet werden.
- Attribut: ondblclick

-
-

DOMMouseScroll

-
-

Dieses Ereignis wird gesendet, wenn das Mausrad bewegt wird, egal, ob der Inhalt gescrollt wird oder nicht.
- Ziel dieses Ereignisses ist das Element, welches sich unter dem Mauszeiger befindet, wenn das Mausrad bewegt wird.

-
-

focus

-
-

Das focus Ereignis wird gesendet, wenn ein Element den Fokus erhält. Wenn das Element fokussiert ist, werden Tastaturereignisse zu diesem Element gesendet. Der Fokus kann geändert werden, indem auf eine anderes Element geklickt wird, die TAB Taste gedrückt wird, um zum nächsten Element zu wechseln, oder die »Zurück TAB« Taste gedrückt wird, um zum vorherigen Element zu wechseln.
- Attribut: onfocus

-
-

keydown

-
-

Dieses Ereignis wird zu einem Element gesendet, das den Eingabefokus hat, während eine Taste gedrückt, aber nicht losgelassen wird.
- Attribut: onkeydown

-
-

keypress

-
-

Das keypress Ereignis wird zu einem Element gesendet, das den Eingabefokus hat und eine Taste gedrückt und losgelassen wurde. Wenn der Benutzer eine Taste drückt, wird zuerst das keydown Ereignis gesendet, gefolgt vom keypress Ereignis und schließlich dem keyup Ereignis. In einem Textfeld kann der Benutzer normalerweise eine Taste gedrückt halten, um ein Zeichen wiederholt zu senden. In diesem Fall werden mehrere Ereignispaare gesendet, als ob der Benutzer die gleiche Taste sehr schnell hintereinander drücken würde.
- Attribut: onkeypress

-
-

keyup

-
-

Das keyup Ereignis wird einem Element gesendet, das den Eingabefokus hat, wenn eine Taste losgelassen wird.
- Attribut: onkeyup

-
-

load

-
-

Dieses Element wird zum Fenster gesendet, nachdem es vollständig geladen wurde. Die Behandlungsroutine sollte dem window Element zugewiesen werden. Dieses Ereignis kann auch bei Bildelementen oder einem Element, das Bildattribute akzeptiert verwendet werden und wird dann gesendet, wenn das Bild vollständig geladen wurde. Bei Bildern wird dieses Element nicht im Elementenbaum auftauchen, sodass es nicht mit dem load Ereignis des Fensters in Konflikt gerät.
- Attribut: onload

-
-

mousedown

-
-

Dieses Ereignis wird gesendet, wenn die Maustaste über einem Element gedrückt, aber nicht losgelassen wird.
- Attribut: onmousedown

-
-

mousemove

-
-

Dieses Ereignis wird wiederholt gesendet, während der Mauszeiger über einem Element bewegt wird.
- Attribut: onmousemove

-
-

mouseout

-
-

Dieses Ereignis wird einem Element gesendet, wenn der Benutzer den Mauszeiger aus dem Bereich des Elements bewegt. Es ist das Gegenstück zum mouseover Ereignis.
- Attribut: onmouseout

-
-

mouseover

-
-

Dieses Element wird einem Element gesendet, wenn sich die Maus erstmals über einem Element befindet. Es kann dazu verwendet werden dem Benutzer Rückmeldungen bereitzustellen.
- Attribut: onmouseover

-
-

mouseup

-
-

Dieses Ereignis wird gesendet, wenn die Maustaste über einem Element losgelassen wird.
- Attribut: onmouseup

-
-

select

-
-

Dieses Ereignis wird einer Listbox bzw. einem Tree bei Auswahl eines Eintrags gesendet.
- Attribut: onselect

-
-

unload

-
-

Dieses Ereignis wird einem Fenster gesendet, wenn das Fenster geschlossen wurde. Das erfolgt nach dem close Ereignis. Die Behandlungsroutine für dieses Ereignis sollte dem window Element zugewiesen werden.
- Attribut: onunload

-
- -

Ereignisse zu Veränderungen am DOM

- - - - - - - - - - - - - - - - - - - - -
EreignisBeschreibung
-

DOMAttrModified

-
-

Dieses Ereignis wird einem Element gesendet, wenn eines der Attribute verändert wird. In der Behandlungsroutine kann das Attribut, welches verändert wurde, über die attrName Eigenschaft ermittelt werden. Neue und alte Werte des Attributs können über die prevValue und newValue Eigenschaften abgerufen werden.

-
-

DOMNodeInserted

-
-

Dieses Ereignis wird gesendet, wenn ein Kontenelement (als ein Kindelement) einem Element hinzugefügt wird. Wenn dieses Element auf dem Dokumentenlevel erfasst wird, können Hinweise zu Dokumentenveränderung auftreten.

-
-

DOMNodeRemoved

-
-

Dieses Ereignis wird gesendet, wenn ein Kontenelement aus einem Element entfernt wird. Wenn dieses Element auf dem Dokumentenlevel erfasst wird, können Hinweise zu Dokumentenveränderung auftreten.

-
- -

Es sollte darauf hingewiesen werden, dass die Anwesenheit von Behandlungsroutinen zur Veränderungen am DOM die Performance von nachfolgenden DOM Operationen in dem Dokument stark beeinträchtigt. Das kann bedeuten, dass eine DOM Operation 1,5 bis 7 mal so lange braucht als es ohne einen Eventhandler brauchen würde.

- -

Gebräuchliche XUL Ereignisse

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EreignisBeschreibung
-

broadcast

-
-

Dieses Ereignis sollte einem Beobachter zugewiesen werden. Das broadcast Ereignis wird gesendet, wenn die Attribute eines Elements verändert oder beobachtet werden.
- Attribut: onbroadcast

-
-

close

-
-

Dieses Ereignis wird gesendet, wenn eine Anfrage durch den Benutzer getätigt wurde, die das Fenster schließen lassen soll (z.B durch Klick auf den Schließen Button). Wird eine Behandlungsroutine auf das window Element gesetzt, kann das Schließen des Fensters verhindert werden. Wird false vom Close-handler zurückgeliefert, wird das Fenster nicht geschlossen. Eine Rückgabe von true schließt das Fenster normal. Dieses Ereignis wird nur gesendet, wenn der Benutzer den Schließen Button in der Titelleiste anklickt. Das unload Ereignis erfasst alle Versuche das Fenster zu schließen.
- Attribut: onclose

-
-

command

-
-

Dieses Ereignis wird gesendet, wenn ein Element aktiv ist. Wie es aktiviert wird, variiert von Element zu Element und in vielen Fällen gibt es mehrere Wege, um eine Element zu aktivieren. Zum Beispiel kann eine Schaltfläche, wenn sie fokussiert ist, durch ein Klick mit der Maus oder durch das Drücken der ENTER Taste aktivert werden. Menüs können durch das Auswählen mit der Maus oder durch das Drücken einer Schnelltaste aktiviert werden. Es sollte immer das command Ereignis, anstatt des click Ereignisses verwendet werden, weil in allen nötigen Fällen aufgerufen wird.
- Attribut: oncommand

-
-

commandupdate

-
-

Dieses Ereignis tritt auf, wenn eine Befehlsaktualisierung beim <commandset> Element statt findet. Es wird verwendet, um die ausgeschalteten Befehle zu aktualisieren.
- Attribut: oncommandupdate

-
-

contextmenu

-
-

Dieses Ereignis wird einem Element gesendet, wenn der Benutzer eine Anfrage stellt, die ein Kontextmenü öffnen soll. Die Aktion variiert von Betriebssystem zu Betriebssystem, wird aber typischerweise durch einen Rechtsklick ausgelöst. Diese Behandlungsroutine wird normalerweise verwendet, um dynamische Befehle auszuführen, wenn der Benutzer die Anfrage stellt, das Menü anzuzeigen oder es wird ein Ereignis benutzt, welches ein Popup-Fenster anzeigt. Wird false von diesem Eventhandler zurückgegeben, wird verhindert, dass das Popup-Fenster angezeigt wird.
- Attribut: oncontextmenu

-
-

drag {{ Fx_minversion_inline(3) }}

-
-

Das drag Ereignis wird zum Quellknoten (der Knoten, der gezogen wurde) mehrmals pro Sekunde gesendet, während ein Objekt gezogen wird.
- Attribut: ondrag

-
-

dragdrop

-
-

Dieses Ereignis wird ausgelöst, wenn der Benutzer die Maustaste los lässt, um ein Objekt abzulegen, welches gezogen wurde. Das Element, wenn es das Ablegen akzeptiert, sollte in irgendeiner Weise reagieren (z.B. durch das Hineinlegen des gezogenen Objekten in das Element selbst).
- Attribut: ondragdrop

-
-

dragend {{ Fx_minversion_inline(3) }}

-
-

Das dragend Ereignis wird zum Quellknoten (der Konten, der gezogen wurde) gesendet, wenn das Objekt nicht mehr gezogen wird.
- Attribut: ondragend

-
-

dragenter

-
-

Das dragenter Ereignis wird gesendet, wenn sich der Mauszeiger erstmals über ein Element befindet in welches ein Objekt gezogen werden soll. Es ist ähnlich zum mouseover Ereignis, tritt aber nur beim Hineinlegen von Objekten auf.
- Attribut: ondragenter

-
-

dragexit

-
-

Dieses Ereignis wird gesendet, wenn sich der Mauszeiger aus dem Element entfernt, in welches ein Objekten gezogen werden soll. Es wird auch aufgerufen, wenn ein Objekt in ein Element gezogen wurde. Es ist ähnlich zum mouseout Ereignis, tritt aber nur beim Hineinlegen von Objekten auf.
- Attribut: ondragexit

-
-

draggesture

-
-

Dieses Ereignis wird gesendet, wenn der Benutzer beginnt ein Element zu ziehen, normalerweise in dem die Maustaste gedrückt und bewegt wird.
- Attribut: ondraggesture

-
-

dragover

-
-

Ähnlich zum mousemove Ereignis wird dieses Ereignis gesendet, während etwas über ein Element gezogen wird. Die Behandlungsroutine sollte angeben, ob das Objekt gezogen wird oder abgelegt werden kann.
- Attribut: ondragover

-
-

input

-
-

Dieses Ereignis wird gesendet, wenn der Benutzer einen Text in ein Textfeld eingibt. Das Ereignis wird nur dann aufgerufen, wenn der angezeigte Text verändert wird, daher wird es nicht aufgerufen, wenn der Benutzer Tasten drückt, die nicht in einem Textfeld dargestellt werden.
- Attribut: oninput

-
-

overflow

-
-

Dieses Ereignis wird nur zu einer Box oder einem anderen Layoutelement gesendet, wenn die CSS overflow Eigenschaft auf einen anderen Wert als 'visible' festgelegt wird. Falls nicht genug Platz vorhanden ist, um den Inhalt des Elements vollständig anzuzeigen, wird das overflow Ereignis gesendet. Abhängig vom Wert der overflow Eigenschaft treten eventuell Scrollbalken auf. Wenn zum Beispiel eine Box eine maximale Größe von 100 Pixeln besitzt und nur genug Platz für 80 Pixel verfügbar ist, wird das overflow Ereignis zur Box gesendet. Wenn sich die Größe verändert, zum Beispiel durch den Benutzer, der die Fenstergröße ändert, wird das underflow Ereignis gesendet, wenn genug Platz frei wird.
- Attribut: onoverflow

-
-

popuphidden

-
-

Dieses Ereignis wird einem Popup gesendet, nachdem er versteckt wurde.
- Attribut: onpopuphidden

-
-

popuphiding

-
-

Dieses Ereignis wird einem Popup gesendet, wenn es versteckt wird.
- Attribut: onpopuphiding

-
-

popupshowing

-
-

Dieses Ereignis wird einem Popup gesendet, bevor dieser angezeigt wird. Diese Behandlungsroutine wird normalerweise verwendet, um Inhalte dynamisch festzulegen, wenn der Benutzer eine Anfrage stellt diese anzuzeigen. Wird false vom Eventhandler zurückgegeben, wird die Anzeige des Popups verhindert.
- Attribut: onpopupshowing

-
-

popupshown

-
-

Dieses Ereignis wird einem Popup gesendet, nachdem er geöffnet wurde, sehr ähnlich zum onload Ereignis, welches gesendet wird, wenn ein Fenster geöffnet wurde.
- Attribut: onpopupshown

-
-

syncfrompreference

-
-

Dieses Ereignis wird gesendet, wenn das Element verändert wurde, weil eine Einstellung geändert wurde oder wenn ein Element von einer Einstellung initialisiert wurde. Dieses Ereignis wird nur an Elemente gesendet, die mit einer Einstellung verbunden sind und in prefwindow vorhanden sind. Das ist kein wirkliches Ereignis, es ist ein Funktionsaufruf und muss die Attributschreibweise verwenden. Das Skript kann einen Wert zurück liefern, um dem Element auf einen spezifischen Wert zu geben, als den Wert der Einstellung. Dieses Ereignis wird normalerweise verwendet, um einen Wert einzustellen, sodass es passender für die Anzeige in der Benutzeroberfläche gemacht werden kann.
- Attribut: onsyncfrompreference

-
-

synctopreference

-
-

Dieses Ereignis wird gesendet, wenn ein Element, das mit einer Einstellung verbunden ist, verändert wurde. ieses Ereignis wird nur an Elemente gesendet, die mit einer Einstellung verbunden sind und in prefwindow vorhanden sind. Das ist kein wirkliches Ereignis, es ist ein Funktionsaufruf und muss die Attributschreibweise verwenden. Das Skript kann einen Wert zurück liefern, um dem Element auf einen spezifischen Wert zu geben, als den Wert der Einstellung.
- Attribut: onsynctopreference

-
-

underflow

-
-

Dieses Ereignis wird einem Element gesendet, wenn genug Platz vorhanden ist, um es vollständig anzuzeigen. Das betrifft Boxen und andere Layoutelement mit der CSS overflow Eigenschaft, die einen anderen Wert als 'visible' besitzen. Das underflow Ereignis kann verwendet werden, um zu ermitteln, dass ein Scrollmechanismus nicht länger benötigt wird.
- Attribut: onunderflow

-
-

DOMMenuItemActive

-
-

Dieses Ereignis wird gesendet, wenn ein Menü oder Menüitem hervorgehoben wird oder die Maus darüber schwebt.

-
-

DOMMenuItemInactive

-
-

Dieses Ereignis wird gesendet, wenn ein Menü oder Menüitem nicht länger hervorgehoben wird oder die Maus nicht länger darüber schwebt.

-
- -

Ereignisse zur Zugänglichkeit (Accessibility)

- -

Mit diesen Ereignissen wird das Zugänglichkeitssystem über Veränderungen an einem Element benachrichtigt. Sie würden diese normalerweise nicht selbst verwenden.

- - - - - - - - - - - - - - - - -
EreignisBeschreibung
-

CheckboxStateChange

-
-

Dieses Ereignis wird gesendet, wenn eine checkbox angekreuzt oder nicht angekreuzt wird, entweder vom Benutzer oder von einem Skript. Normalerweise würde ein command Ereignis zur Abfrage der checkbox Veränderungen verwendetet werden, das command Ereignis wird aber nur gesendet, wenn der Benutzer den Wert verändert, während das CheckboxStateChange Ereignis auch gesendet wird, wenn ein Skript die checked Eigenschaft einer checkbox verändert. Bei Änderungen vom Benutzer wird das CheckboxStateChange Ereignis vor dem command Ereignis gesendet.

-
-

RadioStateChange

-
-

Dieses Ereignis wird gesendet, wenn ein Radiobutton ausgewählt wird, entweder vom Benutzer oder von einem Skript. Normalerweise würde ein command Ereignis zur Abfage der Veränderungen am Radiobutton verwendet werden, das command Ereignis wird aber nur gesendet, wenn der Benutzer den ausgewählten Radiobutton verändert, während das RadioStateChange Ereignis auch gesendet wird, wenn ein Skript die Auswahl verändert. Bei Änderungen vom Benutzer wird das RadioStateChange Ereignis vor dem command Ereignis gesendet.

-
- -

{{ languages( { "en": "en/XUL/Events", "es": "es/XUL/Events", "ja": "ja/XUL/Events", "pl": "pl/XUL/Zdarzenia" } ) }}

diff --git a/files/de/archive/mozilla/xul/grippy/index.html b/files/de/archive/mozilla/xul/grippy/index.html deleted file mode 100644 index 73061bf15a..0000000000 --- a/files/de/archive/mozilla/xul/grippy/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: grippy -slug: Archive/Mozilla/XUL/grippy -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/grippy ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein Element, das in einem splitter-Element verwendet werden kann. Es ermöglicht das Zusammenklappen eines Geschwisterelements des Trenners.

-

Weitere Informationen im XUL Tutorial.

-

Beispiele

-

(Beispiel benötigt)

-

Attribute

- - - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandt

-

TBD

diff --git a/files/de/archive/mozilla/xul/iframe/index.html b/files/de/archive/mozilla/xul/iframe/index.html deleted file mode 100644 index 7d5fa181af..0000000000 --- a/files/de/archive/mozilla/xul/iframe/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: iframe -slug: Archive/Mozilla/XUL/iframe -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/iframe ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein innerer Frame, der in etwa wie das iframe-Element von HTML funktioniert. Das Attribut src gibt den Inhalt des Frames an. Dieser Inhalt befindet sich in einem separaten Dokument. Jegliche Kindelemente des iframe Elements werden ignoriert.

-

Weitere Informationen sind im XUL Tutorial verfügbar.

-
Attribute
showcaret, src, type, transparent
Eigenschaften
accessibleType, contentDocument, contentWindow, docShell, webNavigation
-
-

Beispiele

-
<iframe src="table.php" flex="2" id="browserTable" name="table_frame"/>
-
-

Einen URL aus einem Menü auswählen

-
<menulist oncommand="doNav(this);">
-  <menupopup>
-    <menuitem label="Mozilla" value="http://mozilla.org" />
-    <menuitem label="Slashdot" value="http://slashdot.org"/>
-    <menuitem label="Sourceforge" value="http://sf.net" />
-    <menuitem label="Freshmeat" value="http://freshmeat.net"/>
-  </menupopup>
-</menulist>
-
-
-<iframe id="myFrame" flex="1"/>
-
-<script>
-function doNav(obj){
-  var url = obj.selectedItem.value;
-  // note the firstChild is the menupopup element
-  document.getElementById('myFrame').setAttribute('src', url);
-}
-</script>
-
-

Attribute

-
- - -
-
showcaret
-
Type: boolean
-
Whether or not to cause a typing caret to be visible in the content area. Default is false.
-
- - -
- -
-
- src
-
- Typ: URL
-
- Die URL des im Element anzuzeigenden Inhalts.
-
- -
- - -
-
type
-
Type: one of the values below.
-
The type of browser, which can be used to set access of the document loaded inside the browser. If this is not set, the loaded document has the same access as the window containing the browser. More precisely: The document loaded into a chrome window is always of chrome type. Subdocuments of chrome documents are of chrome type, unless the container element (one of iframe, browser or editor) has one of the special type attribute values (the common ones are content, content-targetable and content-primary) indicating that the subdocument is of content type. This boundary has a number of special effects, such as making window.top == window (unless the browser is added to a chrome document), and preventing documents from inheriting the principal of the parent document. The type attribute on all frames in content documents is ignored; subdocuments of content documents are always content documents.
-
-
Warning: The type attribute must be set before the element is inserted into the document.
-
-
-
-
content
-
A browser for content. The content that is loaded inside the browser is not allowed to access the chrome above it.
-
content-primary
-
The primary browser for content. The content that is loaded inside the browser is not allowed to access the chrome above it. For instance, in a web browser, this would be the element that displays the web page. The window for the primary content can be retrieved more conveniently using window.content.
-
content-targetable
-
One browser among many for content. The content that is loaded inside the browser is not allowed to access the chrome above it. This is the preferred value for any browser element in an application, which will use multiple browsers of equal privileges, and is unselected at the moment.
-
chrome
-
(default behaviour): A browser, intended to be used for loading privileged content using a chrome:// URI. Don't use for content from web, as this may cause serious security problems!
-
-
-
- - -
-
transparent
Type: one of the values below
Set the background of an iframe as transparent.
transparent
This results in the iframe's background being transparent. This can be used to workaround things like bug 540911
-
-
- - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

-

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandte Themen

-
Schnittstellen
nsIAccessibleProvider
-
diff --git a/files/de/archive/mozilla/xul/index.html b/files/de/archive/mozilla/xul/index.html deleted file mode 100644 index d275bb0520..0000000000 --- a/files/de/archive/mozilla/xul/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: XUL -slug: Archive/Mozilla/XUL -tags: - - XUL -translation_of: Archive/Mozilla/XUL ---- -
XUL Tutorial
-Ein geführter Leitfaden für einen schnellen Einstieg in XUL, ursprünglich von XULPlanet.
- -
XUL (XML User Interface Language) ist Mozillas XML-basierte Beschreibungssprache, die plattformübergreifende Anwendungen ermöglicht, die unabhängig von einer bestehenden Internetverbindung ausgeführt werden können. Diese Anwendungen können leicht (z.B. sprachlich) mittels alternativen Texten oder Layouts und alternativer Grafik angepasst werden. Web-Entwickler, die bereits mit dynamischen HTML (DHTML) vertraut sind, finden sich schnell in XUL zurecht und können direkt mit dem Bauen von Anwendungen beginnen. Das XUL Periodensystem zeigt in Firefox oder einem anderen Gecko-basierten Browser einige XUL-Demos, die einen guten Überblick liefern.
- - - - - - - - -
-

Dokumentation

- -
-
XUL Referenz
-
XUL Elemente, Attribute, Eigenschaften, Methoden, und Eventhandler.
-
XUL Bedienelemente
-
Eine kurze Liste aller verfügbaren XUL Bedienelemente.
-
XUL School
-
Eine sehr ausführliche Tutorial-Reihe über die Entwicklung von Add-ons in Mozilla.
-
XUL Überblick
-
Beschreibung der wichtigsten Eigenschaften und Komponenten von XUL.
-
Menüs und Popups
-
Ein Leitfaden zur Verwendung von Menüs und Popup-Panels.
-
Leitfaden für Vorlagen
-
Ein detaillierter Leitfaden für XUL Vorlagen (Templates), einem Mittel zur Erzeugung von Inhalt aus Datenquellen.
-
Drag und Drop
-
Wie man Drag und Drop Operationen ausführen kann.
-
XUL Anwendungen für Firefox 3 anpassen
-
Eine Liste von Änderungen in Firefox 3.0, die XUL-Entwickler betreffen.
-
XUL Anwendungen für Firefox 2 anpassen
-
Eine Liste von Änderungen in Firefox 2.0, die XUL-Entwickler betreffen.
-
XUL Anwendungen für Firefox 1.5 anpassen
-
Eine Liste von Änderungen in Firefox 1.5, die XUL-Entwickler betreffen.
-
- -

Alle anzeigen...

- -
-
-
-

Community

- -
    -
  • Mozillas XUL Foren:
  • -
- -

{{ DiscussionList("dev-tech-xul", "mozilla.dev.tech.xul") }}

- - - -

Tools

- - - -

Verwandte Themen

- -
-
JavaScript, XBL, CSS, RDF, Erweiterungen, XULRunner
-
-
- -

{{ languages( { "en": "en/XUL", "es": "es/XUL", "fr": "fr/XUL", "it": "it/XUL", "ja": "ja/XUL", "ko": "ko/XUL", "pl": "pl/XUL", "pt": "pt/XUL", "ru": "ru/XUL", "zh-cn": "cn/XUL", "zh-tw": "zh_tw/XUL" } ) }}

diff --git a/files/de/archive/mozilla/xul/method/geticon/index.html b/files/de/archive/mozilla/xul/method/geticon/index.html deleted file mode 100644 index cb0dd30447..0000000000 --- a/files/de/archive/mozilla/xul/method/geticon/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: getIcon -slug: Archive/Mozilla/XUL/Method/getIcon -translation_of: Archive/Mozilla/XUL/Method/getIcon ---- -
- « XUL-Referenz Startseite
-
-
- getIcon( aTab )
-
- Return type: string
-
- Returns the URL of the specified tab's favicon. If aTab is null, the current tab's icon is returned. See setIcon to set the icon.
-
diff --git a/files/de/archive/mozilla/xul/method/gettabforbrowser/index.html b/files/de/archive/mozilla/xul/method/gettabforbrowser/index.html deleted file mode 100644 index bc48db12b9..0000000000 --- a/files/de/archive/mozilla/xul/method/gettabforbrowser/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: getTabForBrowser -slug: Archive/Mozilla/XUL/Method/getTabForBrowser -translation_of: Archive/Mozilla/XUL/Method/getTabForBrowser ---- -
- « XUL-Referenz Startseite
-
-
- getTabForBrowser( browser )
-
- Return type: tab
-
- Returns the XUL tab which contains the specified browser.
-
diff --git a/files/de/archive/mozilla/xul/method/index.html b/files/de/archive/mozilla/xul/method/index.html deleted file mode 100644 index 934c525318..0000000000 --- a/files/de/archive/mozilla/xul/method/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Methoden -slug: Archive/Mozilla/XUL/Method -tags: - - XUL Methoden - - XUL Referenz -translation_of: Archive/Mozilla/XUL/Method ---- -

« XUL-Referenz Startseite

- -

Verwandte DOM-Element Methoden

- diff --git a/files/de/archive/mozilla/xul/school_tutorial/adding_menus_and_submenus/index.html b/files/de/archive/mozilla/xul/school_tutorial/adding_menus_and_submenus/index.html deleted file mode 100644 index e48c15eade..0000000000 --- a/files/de/archive/mozilla/xul/school_tutorial/adding_menus_and_submenus/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Adding menus and submenus -slug: Archive/Mozilla/XUL/School_tutorial/Adding_menus_and_submenus -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School/Adding_menus_and_submenus ---- -

{{ PreviousNext("XUL_School/Setting_Up_a_Development_Environment", "XUL_School/Adding_Toolbars_and_Toolbar_Buttons") }}

-

The Hello World example in the previous sections shows the two most common ways to add menus. In this section we'll look into more specialized menus and what you can do with them.

-

Adding a New Menu

-

We already saw how to add menus in overlays and, as you may have imagined, you can nest submenus as deep as you want. You should avoid having deep menus or too many options, since they are confusing for most users.

-

If your extension requires custom XUL windows, you may also need to have menus on those windows. You can do this with a menubar. The menubar element should be a child of a toolbox element because it is treated like another toolbar on systems other than Mac OS X.

-
-

Mac OS X treats menus in a very different way than other systems. If your extension involves menus in any way, you should test it on Mac OS X to make sure everything works adequately.

-
-

The toolbox should be positioned near the top of the XUL document, and the code should be similar to this:

-
<toolbox>
-  <menubar id="xulschoolhello-menubar">
-    <menu id="xulschoolhello-greeting-menu" label="&xulschoolhello.greeting.label;">
-      <menupopup>
-        <menuitem label="&xulschoolhello.greet.short.label;"
-          oncommand="XULSchoolChrome.GreetingDialog.greetingShort(event);" />
-        <menuitem label="&xulschoolhello.greet.medium.label;"
-          oncommand="XULSchoolChrome.GreetingDialog.greetingMedium(event);" />
-        <menuitem label="&xulschoolhello.greet.long.label;"
-          oncommand="XULSchoolChrome.GreetingDialog.greetingLong(event);" />
-        <menuseparator />
-        <menuitem label="&xulschoolhello.greet.custom.label;"
-          oncommand="XULSchoolChrome.GreetingDialog.greetingCustom(event);" />
-      </menupopup>
-    </menu>
-  </menubar>
-</toolbox> 
-

This code displays a simple menu with options for 3 different types of greetings, a menuseparator, and finally an option to show a custom greeting. The separator is usually displayed as a horizontal line that creates a logical division between different types of menuitem elements, keeping everything more organized.

-

A menubar can hold one or more menu elements. Menus require a menupopup element as a container for its children, which are usually menuitem elements, but can also be menuseparator, or menu in order to have multiple nesting levels:

-
<toolbox>
- <menubar id="xulschoolhello-menubar">
-    <menu id="xulschoolhello-greeting-menu" label="&xulschoolhello.greeting.label;">
-      <menupopup>
-        <menu id="xulschoolhello-greeting-sizes-menu" label="&xulschoolhello.greetingSizes.label;">
-          <menupopup>
-            <menuitem label="&xulschoolhello.greet.short.label;"
-              oncommand="XULSchoolChrome.GreetingDialog.greetingShort(event);" />
-            <menuitem label="&xulschoolhello.greet.medium.label;"
-              oncommand="XULSchoolChrome.GreetingDialog.greetingMedium(event);" />
-            <menuitem label="&xulschoolhello.greet.long.label;"
-              oncommand="XULSchoolChrome.GreetingDialog.greetingLong(event);" />
-          </menupopup>
-        </menu>
-        <menuitem label="&xulschoolhello.greet.custom.label;"
-          oncommand="XULSchoolChrome.GreetingDialog.greetingCustom(event);" />
-      </menupopup>
-    </menu>
-  </menubar>
-</toolbox> 
-

In this case we grouped the 3 greeting items into a submenu. It doesn't make much sense to do that in this case because we end up with only two menu items, one of them being a menu with 3 child items.

-

You can also have menus that are filled dynamically. Instead of setting the menupopup directly in the XUL, you can use the onpopupshowing event to fill the children when the popup is about to be displayed. DOM functions like createElement and appendChild can be used to accomplish this.

-
-

If you have nothing to show on a menu, you should follow the standard used in Firefox: show a single disabled item with an "(Empty)" label.

-

If filling your menu takes a noticeable amount of time, you should not make Firefox (and your users) wait for it to fill up before displaying anything. It's best to show an item with a throbber image (see chrome://global/skin/icons/loading_16.png) so the user knows there's something going on, and asynchronously fill its contents. We'll look into some asynchronous techniques further ahead in the tutorial.

-
-

Adding Elements to Existing Menus

-

Just as explained in the previous sections, the best place to overlay your extension menu is inside the Tools menu. That is, unless there's a place inside the menu structure where your extension menus make more sense. If you're overlaying the Tools menu, your overlay code should have something like this:

-
<menupopup id="menu_ToolsPopup">
-  <menu id="xulschoolhello-hello-menu" label="&xulschoolhello.hello.label;"
-    accesskey="&xulschoolhello.helloMenu.accesskey;"
-    insertafter="javascriptConsole,devToolsSeparator">
-    <menupopup>
-      <!-- Your menuitem goes here. -->
-    </menupopup>
-  </menu>
-</menupopup> 
-

Now let's look at some specialized types of menu items.

- -

Checkbox Menu Items

-

You can make a menuitem "checkable" to allow the user to enable/disable options using the menu. We use two attributes for this: type and checked. The type attribute must be set to "checkbox". You can set the checked attribute to "true" to check it by default.

-

The item's checked state changes when the user clicks on it. An example of one such item is the View > Status Bar item in the main Firefox menu.

-

Radio Menu Items

-

If you need to have a set of menuitem elements where only one of them has to be checked at any given moment, you should set the type to "radio". The name attribute is used to identify the items that belong to the radio group.

-
<menupopup oncommand="XULSchoolChrome.HW.GreetingDialog.greeting(event);">
-  <menuitem type="radio" name="xulschoolhello-greeting-radio"
-    label="&xulschoolhello.greet.short.label;" checked="true" />
-  <menuitem type="radio" name="xulschoolhello-greeting-radio"
-    label="&xulschoolhello.greet.medium.label;" />
-  <menuitem type="radio" name="xulschoolhello-greeting-radio"
-    label="&xulschoolhello.greet.long.label;" />
-</menupopup> 
-

This is a modified version of the 3 greeting menus. It is now implemented as a radio menu where you pick one of the 3 available choices. The first one is checked by default. The oncommand attribute is set on the menupopup to avoid code duplication, since now the 3 items call the same function.

-

Another example of a menu like this is the View > Sidebars menu. Only one sidebar is visible at any given moment, and you can pick from several.

- -

To add an icon to a menu or menuitem, set its class to "menu-iconic" or "menuitem-iconic" respectively, and set the image attribute or the list-style-image CSS property. Menu icons are typically 16px by 16px.

- -

As mentioned earlier, menus are very different on Mac OS X. This is because menus on Mac are located in a single menu bar which is controlled by the operating system, as opposed to menus in other systems, which are entirely controlled by Firefox. Mac OS X also has menu standards, such as the positioning of certain items that are not used in other systems. Here's a list of the known issues we've run into when handling menus on Mac:

- -

{{ PreviousNext("XUL_School/Setting_Up_a_Development_Environment", "XUL_School/Adding_Toolbars_and_Toolbar_Buttons") }}

-

This tutorial was kindly donated to Mozilla by Appcoast.

diff --git a/files/de/archive/mozilla/xul/school_tutorial/die_grundlagen_einer_erweiterung/index.html b/files/de/archive/mozilla/xul/school_tutorial/die_grundlagen_einer_erweiterung/index.html deleted file mode 100644 index cda64ab5a8..0000000000 --- a/files/de/archive/mozilla/xul/school_tutorial/die_grundlagen_einer_erweiterung/index.html +++ /dev/null @@ -1,454 +0,0 @@ ---- -title: Die Grundlagen einer Erweiterung -slug: Archive/Mozilla/XUL/School_tutorial/Die_Grundlagen_einer_Erweiterung -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School/The_Essentials_of_an_Extension ---- -

{{ PreviousNext("XUL_School/Getting_Started_with_Firefox_Extensions", "XUL_School/Setting_Up_a_Development_Environment") }}

- -

Die install.rdf Datei

- -

In der letzten Lektion haben wir uns den Inhalt der Hello World Erweiterung angesehen.Jetzt werfen wir einen Blick in diese Dateien und den Code, beginnen wir mit der install.rdf Datei. Sie können diese mit jedem Texteditor öffnen.

- -

Die Datei ist in einem speziellen Dialekt von XML, RDF genannt formatiert. RDF wird eingesetzt als ein zentraler Speichermechanismus für Forefox, aber es ist jetzt durch ein einfacheres Datenbanksystem ersetzt worden. Wir werden später in diesem Tutorial beide Speichersystem besprechen.

- -

Nehmen wir jetzt einen genaueren Blick auf die wichtigen Teile der Datei.

- -
-
-
<em:id>helloworld@xulschool.com</em:id>
-
-
- -

Dies ist der eindeutige Bezeichner für die Erweiterung. Firefox benötigt diesen für die Unterscheidung eurer Erweiterung von anderen Erweiterungen, aufgrunddessen ist es erforderlich das Sie eine ID haben die eindeutig ist.

- -

Es gibt zwei akzeptierte Standards für Add-on ID`s. Eine ist das E-Mail ähnliche Format in dem Hello World Beispiel, dieses sollte folgendermaßen aufgebaut sein <project-name>@<yourdomain>. Die andere standard Vorgehensweise ist die Verwendung eines erzeugten UUID-Strings, welcher sehr unwahrscheinlich duppliziert ist. UNIX-basierte Systeme haben ein Kommandozeilenprogramm mit dem Namen uuidgen das diese UUID`S erzeugt. Auch gibt es herunterladbare Anwendungen für alle Plattformen die diese gnerieren. Die umschließenden Klammern sind nur ein Teil der Notation und hierbei handelt es sich nur um die gängige Praxis. Solange Ihre ID etwas eindeutiges hat, ist es OK diese in irgendeiner Form zu verwenden.

- -
-
-
<em:name>XUL School Hello World</em:name>
-<em:description>Welcome to XUL School!</em:description>
-<em:version>0.1</em:version>
-<em:creator>Appcoast</em:creator>
-<em:homepageURL>https://developer.mozilla.org/en-US/docs/XUL_School</em:homepageURL>
- -

Dies sind die Informationen die angezeigt werden bevor und nachdem die Erweiterung installiert ist, die Sie im Add-on Manager sehen können. Es können viele weitere Tags für Beteiligte und Übersetzer hinzugefügt werden. Die vollständige Spezifikation der install.rdf Datei beinhaltet alle Details.

- -

Seit Erweiterungen in mehrere Sprachen übersetzt werden können, ist es oft notwendig die Erweiterungsbeschreibung zu übersetzen, oder sogar deren Namen. Eine lokal begrenzte Beschreibung und Name kann mit dem folgenden Code hinzugefügt werden.

-
-
- -
-
-
<em:localized>
-  <Description>
-    <em:locale>es-ES</em:locale>
-    <em:name>XUL School Hola Mundo</em:name>
-    <em:description>Bienvenido a XUL School!</em:description>
-  </Description>
-</em:localized>
-
-
- -

Der es-Es lokale String bedeutet das dies die spanische (es) lokalisierung für Spanien (ES) ist. Sie können soviele <em:localized> Sektionen hinzufügen wie Sie benötigen. Für Friefox 2, ist die lokaliesierungs Datei etwas komplizierter. Wir werden im weiteren die lokalisierung in diesem Kapitel besprechen.

- -
-
-
<em:type>2</em:type>
-
-
- -

Dies bestimmt, dass das Add-on als eine Erweiterung installiert wird. Sie können die verschieden möglichen Typen in der install.rdf Spezifikation nachlesen.

- -
-
-
<em:targetApplication>
-  <Description>
-    <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-    <em:minVersion>4.0</em:minVersion>
-    <em:maxVersion>10.*</em:maxVersion>
-  </Description>
-</em:targetApplication>
-
-
-
- -

Dieser Knoten spezifiziert die Zielanwendung und die Zielversion für die Erweiterung, in der Regel Firefox von Version 4 bis zu Version 10. Die UUID ist die eindeutige ID von Firefox. Ander Mozilla und Mozillabasierte Anwendenungen wie z.B. Thunderbirf und Seamonkey besitzen ihre eigene. Es ist möglich eine Erweiterung zu besitzen die auf mehreren Anwendungen und Versionen arbeitet. Als Beispiel , wenn Sie eine Firefox-Erweiterung entwickeln, wird es in der Regel wenig Aufwand erfordern diese zu SeaMonkey zu portieren, welches ähnliche Features und Benutzeroberflächen besitzt.

- -

Die min und max Version Angabe spezifiziert den Versionbereich in dem die Erweiterung installiert werden kann. Hier gibt es mehr Informationen über das Versionsformat. Wenn die Anwendung nicht mit dem Versionsbereich übereinstimmt, wird es Ihnen nicht erlaubt sein die Anwendung zu installieren, oder die Erweiterung wird mit einem gesetzten deaktiviert Status installiert. Benutzer können Versionsüberprüfungen über die Einstellungen deaktivieren, oder durch die Installation von Add-on`s wie den Add-on Compatibility Reporter. Mit Anfang des Firefox 11, werden Add-on`s standardmäßig als kompatiel betrachtet und Firefox wird den Versionsbereich weitesgehend ignorieren. Das Testen Ihrer Add-on`s auf allen Firefoxversionen ist immer empfehlenswert.

- -

Diese Informationen werden von Firefox und anderen Mozillaanwendungen benötigt um ein Add-on zu installieren. Jeder Fehler oder fehlende Informationen werden den Installationsprozess zum Scheitern bringen, oder die Erweiterung wird mit einem gesetzten deaktvitiert Status installiert.

- -

The chrome.manifest File

- -
-

Chrome is the set of user interface elements of the application window that are outside of a window's content area. Toolbars, menu bars, progress bars, and window title bars are all examples of elements that are typically part of the chrome.

-
- -

Auszug aus der Chrome Registration.

- -

Mit anderen Worten, Chrome ist alles was Sie im Firefox sehen. Alle Firefoxfenster können betrachtet werden als Zusammensetzung zweier Teilbereiche: (1) Chrome und (2) ein möglicher Inhaltsbereich, wie das das in Firefox die Anzeige von Webseiten übernimmt. Fenster wie das Downloadfenster sind ausschließlich Chrome. Der Großteil des Programmcodes einer Erweiterung liegt im Chromeordner, wie bei dem Hello World Beispiel.

- -

Wie wir in der Ordnerstruktur der entpackten Erweiterung gesehen haben, Chrome ist zusammengesetzt aus drei Teilbereichen: content, locale und skin. Diese drei sind notwendig für die meisten Erweiterungen. Wenn wir die chrome.manifest-Datei erneut öffnen (nochmals jeder Texteditor kann hierfür verwendet werden), werden wir diese drei angesprochenen Teilbereiche erkennen können.

- -
-
-
content   xulschoolhello              content/
-skin      xulschoolhello  classic/1.0 skin/
-locale    xulschoolhello  en-US       locale/en-US/
-
-
-
- -

Die chrome.manifest Datei lässt Firefox wissen, wo es nach den Chromedateien zu suchen hat. Der Text ist formatiert so das er dem Aussehen einer Tabelle gleicht, aber dies ist nicht notwendig. Der Parser ignoriert aufeinanderfolgende Leerzeichen.

- -

Das erste Wort in einer Zeile teilt Firefox mit, was angegeben ist (content, skin, locale, oder weiter Angaben, die später erwähnt werden). Das zweite ist der Paketname, was wir demnächst erklären werden.

- -

Darstellungs und lokale Packete besitzen einen dritten Wert, um zu spezifizieren welche lokale oder welche Darstellung sie erweitern. Es können mehrere Darstellungs und lokale Einträge für unterschiedliche Darstellung und lokalisierungs Variablen eingetragen werden. Der häufigste Fall ist es einen Darstellungeintrag für die gloabe Darstellung zu haben , classic/1.0, und mehrere lokale Einträge, einen für jede Übersetzung. Am Ende wird eine Ortsvariable spezifizerit.

- -

Es gibt einige zusätzliche Optionen, die in die Einträge der chrome.manifest Datei eingefügt werden können. Diese sind auf der Chrome Registration Seite dokumentiert. Beachtenswert ist, wir können Einträge erstellen, die Betriebssystem spezifisch sind. Dies ist wichtig, weil das Aussehen des Browsers ist sehr unterschiedlich für jedes Betriebssystem. Wenn es notwendig ist, dass Ihre Erweiterung auf verschieden Systemen unterschiedlich aussieht, könnten wir das Manifest so anpassen, dass es aussieht wie hier:

- -
-
-
content   xulschoolhello              content/
-skin      xulschoolhello  classic/1.0 skin/unix/
-skin      xulschoolhello  classic/1.0 skin/mac/ os=Darwin
-skin      xulschoolhello  classic/1.0 skin/win/ os=WinNT
-locale    xulschoolhello  en-US       locale/en-US/
-
-
-
- -

Über diesen Weg können wir unterschiedliche Darstellungen für Windows, Mac OS X und Linux (plus anderer unix-ähnlichen Systemen) haben, die jede von ihnen in einer seperaten Ordnerstruktur definiert ist. Seit die meisten anderen System Unix-basiert sind, ist die "unix" Darstellung der Standard ohne weitere Marker.

- -

Chrome

- -

Wie zuvor angesprochen Chrome besteht aus 3 Teilbereichen: content, locale und skin. Der content-Bereich ist der wichtigste Bereich, beinhaltet die Benutzerschnittstelle (XUL) und Skriptdateien (JA). Der Darstellungsbereich beinhaltet die Dateien die das Meiste des Aussehen und Verhalten der UI (mit Einsatz von CSS und Bildern, wie bei Webseiten) definieren. Abschließend enthält der locale Bereich den gesamten in der Erweiterung verwendeten Text, in DTD und die Einstellungsdateien. Diese Aufteilung erlaubt es anderenen Entwicklern Themes zu entwickeln die die Darstellung ersetzen und Übersetzer für andere Sprachen, all das ohne das eine Änderung der Erweiterung oder des Programmcodes notwendig wäre. Dies gibt Firefox Erweiterungen eine großartige Flexibiltät.

- -

Chrome Dateien werden über das Chrome-Protokoll zugewiesen. So sieht eine chrome URI aus:

- -
-
-
chrome://packagename/section/path/to/file
- -

Wenn ich beispielsweise Zugriff auf die Datei browserOverlay.xul haben möchte, wäre die Chrome URI chrome://xulschoolhello/content/browserOverlay.xul.

-
-
- -

Wenn Sie zu viele Dateien im content Bereich habe und Sie diese in Subordner organisieren wollen, gibt es nichts was Sie im chrome.manifest ändern müssen, alles was Sie benötigen ist den richtigen Pfad nach content in die URI hinzuzufügen.

- -

Darstellungs- und Regions-Dateien arbeiten in der selben Art und Weise, und Sie müssen keine Darstellungs- oder Regions -Namen festleggen. Also um auf die DTD-Datei in der Hello Wolrd Erweiterung zuzugreifen, ist der Chromepfad chrome://xulschoolhello/locale/browserOverlay.dtd. Firefox was anschließend nach welcher Region es abrufen muss.

- -

Hier ist ein interesantes Experiment. Öffne ein neues Firefox Tab, tippe chrome://mozapps/content/downloads/downloads.xul in deine Adressleiste und drücke Enter. Überrascht? Sie haben soeben das Downloadfenster in einem Firefoxtab geöffnet! Sie können auf jede Chromedatei zugreifen indem Sie die URI in die Addressleite eintippen. Dies kann nützlich werden, wenn du Skriptdatei untersuchen möchtest, die ein Teil von Firefox, anderen Erweiterungen oder deine eigene sind. Die meisten dieser Dateien werden als Textdatei geöffnet, mit der Ausnahme von XUL-Dateien, diese werden ausgeführt und so dargestellt wie Sie diese normalerweise in einem Fenster sehen würden.

- -

Content

- -

Es gibt 2 Dateien im content Verzeichnis. Sehen wir uns zuerst die XUL-Datei an.

- -

Bei XUL-Dateien handelt es sich um XML-Dateien, die Benutzeroberflächenelemente in Firefox und Firefoxerweiterungen definieren. XUL wurde von HTML inspiriert, von daher werden Sie viele Ähnlichkeiten zwischen den beiden feststellen. Wie auch immer, XUL ist auch eine Verbesserung gegenüber HTML, die aus vielen Fehlern gelernt hat, die bei der Entwickliung von HTML gemacht wurden. XUL erlaubt Ihnen reichere und interaktivere Oberflächen zu erstellen, als mit HTML, oder zumindest macht XUL es einfacher.

- -

XUL-Dateien defineren in der Regel eine von zwei Dingen: Fenster oder Overlays. Die Datei die Sie zuvor geöffnet haben, downloads.xul, beinhaltet den Programmcode der das Downloadfenster definiert. Die XUL-Datei die in der Hello World Erweiterung eingeschlossen ist, ist eine Overlay. Ein Overlay erweitert ein vorhandes Fenster, fügt diesem neue Elemente hinzu oder ersetzt einige der Elemente in ihm. Die Zeile die wir in der chrome.manifest Datei übersprungen haben gibt an das es sich bei dieser XUL-Datei um ein Overlay für das Browserhauptfenster handelt:

- -
-
-
overlay chrome://browser/content/browser.xul  chrome://xulschoolhello/content/browserOverlay.xul
- -

Durch diese Zeile weiß Firefox, dass es die Inhalte aus browserOverlay.xul verwenden muss und diese über das Browserhauptfenster, browser.xul legen muss. Sie können für jedes Fenster oder Dialog in Firefox ein Overlay festlegen, aber ein Overlay über das Browserhauptfenster zu legen ist der mit Abstand häufigste Fall.

- -

Jetzt nehme wir einen Blick auf unsere XUL-Datei. Wir werden die ersten paar Zeilen überspringen, weil diese sich auf die Darstellung und die Region beziehen, diese werden wir im späteren behandeln.

-
-
- -
-
-
<overlay id="xulschoolhello-browser-overlay"  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-
- -

Das Wurzelelement in dieser Datei ist ein Overlay. Andere XUL-Dokumente nutzen den window oder dialog Tag. Das Element besitzt einie eindeutige ID, welche Sie bei den meisten Element in Ihrer XUL vergeben sollten. Das zweite Attribut ist der Namensraum, diesen sollten Sie immer in Ihrem XUL-Wurzelelment definieren. Es sagt aus, dass dieser Knoten und alle Kindknotten XUL-Element sind. Sie brauchen nur änderungen an der Namensraum deklaration vornehmen, wenn Sie verschiedene Arten eines Inhalts in dem gleichen Dokument kombinieren, wie z.B. XUL mit HTML oder SVG.

- -
-
-
You may have noticed the naming we use on several places, such as the id xulschoolhello-browser-overlay. This is the namespacing standard that we use to avoid conflicts with Firefox and other extensions, as well as making some development tasks easier. We namespace all ids and style classes in overlay elements because they will be mixed with other elements in the main browser window. If we used generic ids like container or input, they will likely conflict with ids used within Firefox, or with ids from other extension overlays. Using namespaces minimizes compatibility problems with other extensions. We use camel casing for file names, and all lower case with dashes for element ids and CSS style class names, but you're free to use your own system.
-
-
- -
-
-
<script type="application/x-javascript"   src="chrome://xulschoolhello/content/browserOverlay.js" />
-
-
- -

Wie in HTML, wird hierdurch eine JavaScript-Datei eingebunden. Sie können soviele Skriptelement in ein XUL-Dokumente einbinden wie Sie benötigen. Wir werden uns diesen Programmcode später noch ansehen.

- -
-
-
You also probably noticed how we format our code, and wonder about the rules we follow. Our general rule on line length is not having lines longer than 80 characters. This feels very restrictive, specially with XML files, but the number was chosen to allow pretty much any text editor to handle these files easily. Even old command line editors work well with files that cut their lines at 80 characters. The tabulation is very straightforward: 2 blank space indents. We never use actual tab characters, with the exception of Makefiles, which will be covered later on. Most of our coding standards are based on Mozilla's or other known and used standards.
-
-
- -

Wir werden etwas Programmcode übersprinder, der im Regionsbereich behandelt wird, um mit dem wichtigsten Bereich von content fortzufahren.

- -
-
-
<menubar id="main-menubar">
-  <menu id="xulschoolhello-hello-menu" label="&xulschoolhello.hello.label;"
-    accesskey="&xulschoolhello.helloMenu.accesskey;" insertafter="helpMenu">
-    <menupopup>
-      <menuitem id="xulschoolhello-hello-menu-item"
-        label="&xulschoolhello.hello.label;"
-        accesskey="&xulschoolhello.helloItem.accesskey;"
-        oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);" />
-    </menupopup>
-  </menu>
-</menubar>
-
-<vbox id="appmenuSecondaryPane">
-  <menu id="xulschoolhello-hello-menu-2" label="&xulschoolhello.hello.label;"
-    accesskey="&xulschoolhello.helloMenu.accesskey;"
-    insertafter="appmenu_addons">
-    <menupopup>
-      <menuitem id="xulschoolhello-hello-menu-item-2"
-        label="&xulschoolhello.hello.label;"
-        accesskey="&xulschoolhello.helloItem.accesskey;"
-        oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);" />
-    </menupopup>
-  </menu>
-</vbox>
-
-
-
- -

Das ist der Code, der das Hello World-Menü dem Browserfenster hinzufügt.

- -

Darin enthalten sind zwei ähnliche Codeblöcke, dass ist dadurch begründet das in modernen Versionen von Firefox, insbesondere unter Windows, ein einzelner Firefox Menübutton mit vereinfachten Menüoptionen, anstatt einer umfangreichen Menübar dargestellt wird. Der zweite Codeblock bezieht sich auf alle üblichen Buttonprozesse; der erste Codeblock bezieht sich auf alle anderen Prozesse. Setze den Hacken Menüleiste unter dem Optionsmenü im Menübutton, um die Anzeige des klassischen Menüs unter Windows und einigen Linuxdistributionen zu aktivieren.

- -

Um diesen Code zu schreiben, benötigen wir etwas Wissen über den XUL-Code in browser.xul. Wir müssen wissen, dass die ID des rechten Fläche in dem undefinierten Menü appmenuSecondaryPane ist. Wir werden ein eigenes Menü hinzufügen und Firefox mitteilen dieses rechts nachdem Add-on-Element in die Fläche hinzuzufügen. Dies ist die Festlegung des Attributes:

- -
-
-
insertafter="appmenu_addons"
-
-
-
- -

appmenu_addons ist die ID des Menüelements, dass mit dem Add-on-Menü im Hauptmenü in verbindung steht. Wir werden später sehen wir die Dinge wie die ID von Browserelementen ermitteln können, aber jetzt sehen wir uns die Elemente aus denen sich das Hello World-Menü zusammensetzt.

- -

Für das klassische Menü, fügen wir das Hello World-Menü rechts in das "Wurzelverzeichnis" der Menüs hinzu, so dass es sehr einfach zu finden ist, aber in der Praxis ist es nicht notwendig. Stellen Sie sich vor was passieren würde, wenn alle Erweiterungen ein Menü im oberen Menü hinzufügen würden; ein paar Erweiterungen zu haben würde es dann außen lassen wie die Kontrollanzeige eines Flugzeuges, voller Knöpfe und Schalter. Im Falle des zusammengesetzen Menüs, sind die Dinge aufgrund von zu wenigen Optionen etwas mehr kompliziert. Wenn dein Menüitem in den Webentwicklerbereich passt empfiehlt es sich es dort zu platzieren. Andererweise ist das Wurzelmenü möglicherweise der einzige sinnvolle Ort.

- -

Ein empfehlenswerter Ort für Menüs in dem Klassikmenü ist unter dem Extrasmenü, von daher sollte der Code in etwa so aussehen:

- -
-
-
<menupopup id="menu_ToolsPopup">
-  <menu id="xulschoolhello-hello-menu" label="&xulschoolhello.hello.label;"
-    accesskey="&xulschoolhello.helloMenu.accesskey;"
-    insertbefore="devToolsEndSeparator">
-    <menupopup>
-      <menuitem id="xulschoolhello-hello-menu-item"
-        label="&xulschoolhello.hello.label;"
-        accesskey="&xulschoolhello.helloItem.accesskey;"
-        oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);" />
-    </menupopup>
-  </menu>
-</menupopup>
-
-
-
- -

Wir legen das Menü über das tieferlegende in dem XUL-Baum, aber das spielt keine Rolle weil alles was wir benötigen ist die ID des Elements das wir Überblenden wollen. In diesem Fall ist dies das Menüpopup-Element das sich innerhalb des Extras. Dasinsertbefore Attribut teilt Firefox mit das Menü im unteren Bereich des Entwicklerextrasbereich hinzuzufügen, über den abschließenden Seperatoren. Wir werden im späteren des Tutorials über Menüs sprechen.

- -

Nehmen wir jetzt einen Blick auf den  eigentlichen Code:

- -
-
-
oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);"
-
-
-
- -

Dieses Attribute beschreibt einen Eventhandler. . Das command event ist das am meisten genutzte in Firefox, da es mit den Hauptaktionen der meisten UI-Elemente kommuniziert. Der Nutzen der Attribute ist der JacaScript-Code der eine Funktion aufruft. Diese Funktion ist in er der JS-Datei definiert, das mit Skript-Tag eingebunden wird. Die JS-Funktion wird aufgerufen wenn der Benutzer auf einen Menüeintrag im Hello World-Menü aufruft. Alle Eventhandler definieren ein spezielles Objekt namens event, welches normalerweise ausreicht um ein Argument an die Funktion zu übergeben. Eventhandler werden im späteren genauer definiert.

- -

Nun werfen wir einen Blick in die JavaScript-Datei und und sehen uns an wenn das Event ausgeführt wird.

- -
-
-
/**
- * XULSchoolChrome namespace.
- */
-if ("undefined" == typeof(XULSchoolChrome)) {
-  var XULSchoolChrome = {};
-};
-
-
- -

Der XULSchoolChrome Namensraum ist definiert. Alle Objekte und Variablen die wir i JavaScript definieren sind global, das bedeutet das Skripte in Firefox und andere Erweiterungen können diese sehen und mit Ihnen interagieren. Dies bedeudet also dass wenn wir ein Objekt MenuHandler definieren oder einige generische Namen, ist es wahrscheinlich das es mit einem extierenden Objekt in Konflikt steht. Was wir hier machen ist ein einzelnes globales Objekt zu definieren: XULSchoolChrome. Nun wissen dass alle unsere Objekte sind innerhalb dieses Objekts, welches unwahrscheinlich duplliziert oder überschrieben wird von anderen Erweiterungen.

- -

Sie können hier mehr über den typeof operator erfahren. Wenn Sie nicht mit JavaScript oder der besonderen Syntax, ein Objekt mit {} zu intialisieren ist identisch mit es mit new Object() zu intialisieren.

- -
-
-
/**
- * Controls the browser overlay for the Hello World extension.
- */
-XULSchoolChrome.BrowserOverlay = {
-
-
- -

Sclussendlich ist BrowserOverlay unser Objekt. Ein Objekt in solcher langen und ausführlichen Art und Weise zu benennen und refernzieren kann sich am Anfang unkomfirtabel anfühlen, aber es ist den Aufwand wert.

- -
-
-
We use Javadoc style comments on all namespaces, objects and object members. This is a similar standard to the one used in Mozilla code, and some tools can generate documentation automatically from Javadoc.
-
-
- -
-
-
sayHello : function(aEvent) {
-  let stringBundle = document.getElementById("xulschoolhello-string-bundle");
-  let message = stringBundle.getString("xulschoolhello.greeting.label");
-
-  window.alert(message);
-}
-
-
- -

Und Schlussendlich ist dass unsere Funktionsdeklaration. Drei Zeilen sind alles was wir benötigen. Die erste Zeile in dem Body der Funktion deklariert eine Variable die das stringbundle-Element beinhaltet, das im Overlay definiert ist. Die Variable ist deklariert durch die Verwendung von let, dass var ähnlich ist aber einen enger begrenzten Bereich besitzt. Hier können Sie mehr über die let deklaration nachlesen.

- -

WIe auch im regulären JS, können wir das DOM (Document Object Model) nutzen um dass XUL-Dokument zu manipulieren.Als erstes bekommen wir eine referenze auf das stringbundle-Element  in dem Dokument. Dies ist ein spezielles Element das es uns erlaubt beschränkte Strings dynamisch zu erhalten, nur durch die bereitstellung eines "key`s" der Den String identifiziert. Das macht die zweite Zeile. Wir rufen die getString Methode des bundle-Elements udn bekommen die begrenzte Meldung angeziegt. Anschließende rufen wir die window.alert-Funktion auf, wie wir das auch in einem HTML-Dokument machen würden.

- -

Locale

- -

Es gibt zwei Arten von locale-Dateien: DTD und Einstellungen, und in diesem Beispiel werden wir beide benutzen. DTD ist der effizenteste Weg um Text in XUL anzuzeigen, von daher sollten Sie es benutzen wann immer es möglich ist. Es ist etwas unflexibel, so kann es nicht für dynamisch erzeugten Text verwendet werden, folglich gibt es eine Notwendigkeit um auf regionale Strings zuzugreifen.

- -

Werfen wir einen Blick zurück auf den Menücode, dort haben Sie unter Umständen einge Attribute wie diese bemerkt:

- -
-
-
label="&xulschoolhello.hello.label;" accesskey="&xulschoolhello.helloItem.accesskey;"
-
-
- -

Diese Attribute definieren den Text den Sie in den Menüs sehen,  es sind String-keys die in unserer DTD-Datei definiert sind, browserOverlay.dtd. Die DTD-Datei wurd mit folgendem Code in die XUL-Datei eingefügt:

- -
-
-
<!DOCTYPE overlay SYSTEM "chrome://xulschoolhello/locale/browserOverlay.dtd" >
-
-
- -

Und in der DTD-Datei können Sie die Zuordnung von Keys und regionalen Strings sehen:

- -
-
-
<!ENTITY xulschoolhello.hello.label            "Hello World!">
-<!ENTITY xulschoolhello.helloMenu.accesskey    "l">
-<!ENTITY xulschoolhello.helloItem.accesskey    "H">
-
-
- -

Beachte das Sie in den XUL-Dateien den String mit & und ; umschließen, wohingegen sie in eriner DTD-Datei nur den Key spezifizieren. Sie erhalten womöglich sonderbare Fehlermeldungen oder Zuordnungen wenn Sie dass nicht beachten.

- -

Zugangs Key`s sind Shortcuts die es Ihnen erlauben, nur mit der Tastatur schnell durch ein Menü zu navigieren. Sie sind auch der einzige Weg durch die Menüs zu navigieren für Menschen die eine Barrierefreiheit benötigen, durch teilweise oder vollkommene Blindheit oder durch körperliche Eingeschränktheit die, dass nutzen einer Maus sehr schwierig oder unmöglich machen. Sie können die Zugangs-Key`s unter Windows leicht erkennen, weil der Buchstabe der mit dem Zugangs-Key in Verbindung steht unterstrichen ist, wie in der folgenden Abbildung.

- -
-

-
- -

DIe meisten Benutzeroberflächen Schaltflächen besitzen ein accesskey Atribut, und Sie sollten es benutzen. Der Wert eines Zugangs-Key`s ist lokal beschränkt, weil er einem Buchstaben im Labeltext entsprechen soll. Sie sollten darauf achten es zu vermeiden Zugangs-Key´s zu wiederholen. Als Beispiel, innerhalb eines Menüs oder Untermenüs sollten Zugangs-Key`s nicht wiederholt werden. In einem Fenster müssen Sie noch vorsichtiger sein bei der Auswahl von Zugang-Key`s weil es dort normalerweise eine größere Anzahl an Schaltflächen gibt. Besonders vorsichtig müssen Sie sein wenn Sie Zugangs-Key`s für eine Overlay auswahlen. In unserem Fall, können wir den Buchstaben "H" nicht als einen Zugangs-Key im Hauptmenü verwenden, weil dieser sich mit dem Zugangs-Key den Hilfemenüs überschneiden würde. Das selbe gilt für das "W" und das Fenstermenü unter Mac OS. Von daher haben wir den Buchstaben "l" zugewiesen.

- -

DTD-Strings werden aufgelöst und gesetzt wenn das Dokument lädt. Wenn Sie den label-Attribute Wert für das Hello World-Menü mit hilfe von DOM abfragen, erhalten Sie den begrenzten String und nicht den String-Key. Sie können nicht dynamischen den Wert von Attributen mit einem neuen DTD-Schlüssel ändern, Sie müssen den neuen Wert direkt setzen.

- -
-
-
let helloItem = document.getElementById("xulschoolhello-hello-menu-item");
-
-// The alert will say "Hello World!"
-alert(helloItem.getAttribute("label"));
-// Wrong
-helloItem.setAttribute("label", "&xulschoolhello.hello2.label;");
-// Better
-helloItem.setAttribute("label", "Alternate message");
-// Right!
-helloItem.setAttribute("label", someStringBundle.getString("xulschoolhello.hello2.label"));
-
-
- -

Das ist der Grund warum DTD-String keine Lösung für alle beschränkten Fälle sind, and der Grund warum wir oft Stringpakete in XUL-Dateien einbinden müssen.

- -
-
-
<stringbundleset id="stringbundleset">
-  <stringbundle id="xulschoolhello-string-bundle"
-    src="chrome://xulschoolhello/locale/browserOverlay.properties" />
-</stringbundleset>
-
-
- -

Das stringbundleset-Element ist nur ein Container für stringbundle-Elemente. Hiervon sollte eines pro Dokument geben, dies ist auch der Grund warum wir das stringbundleset in der browser.xul überschreiben, daher die sehr generische ID.  Wir fügen keine insertbefore oder insertafter Attribute ein weil die Reihenfolge der Stringpakete keine Rolle spielt. Das Element ist vollständig unsichtbar. Wenn Sie keine Ordnungsattribute in ein Overlay-Element einfügen, wird Firefox Ihr Element als letztes Kindelement des Elternelements betrachten.

- -

Alles was Sie für das Stringpaket benötigen ist eine ID (um später auf das Element zugreifen zu können und den Chrome-Pfad der Einstellungsdatei. Und natürlich die Einstellungsdatei:

- -
xulshoolhello.greeting.label = Hi! How are you?
- -

Die Leerzeichen vor und nach dem Gleichheitszeichen werden ignoriert. Genauso wie in der install.rdf, Kommentare können durch das "#" Zeichen am Anfang einer zeile hinzugefügt werden. Leere Zeilen werden ebenso ignoriert.

- -

Sei werden oft einen dynamischen Inhalt als Teil eines begrenzten Strings einbinden wollen, wie wenn Sie den Nutzer über den Status der Erweiterung informieren wollen. Als Beispiel: "Es wurden 5 der Suchanfrage entprechende Wörter gefunden". Ihre erste Idee ist möglicherweise einfach Strings zu verketten und eine "Found" Eigenschaft und eine weitere "words matching..." Eigenschaft zu verwenden. Dies ist keine Gute Idee. Sie behindert nur in einem großen Maße die Arbeit von Übersetzern und Grammatikregeln der verschieden Sprachen ändern möglicherweise den Aufbau des Satzes. Aus diesem Grund ist es besser Parameter in den Eienschaften zu verwenden.

- -
-
-
xulshoolhello.search.label = Found %S words matching the search query!
-
-
- -

Wenn Sie den getFormattedString anstatt des getString verwenden um auf den begrenzten String zuzugreifen. Glücklicherweise müssen wir durch dass nicht mehrere Eigenschaften anlegen, hierdurch wird das Leben für Übersetzer einfacher. Sie können mehr über das in dem Text Formatting Bereich des XUL Tutorial nachlesen. Werfen Sie auch einen Blick auf die Plurals and Localization Artikel, die die Lokalisierungsfunktionen behandeln und es Ihnen weiterhin erlauben das letzte Beispiel zu verbessern, um verschiedene Arten von Pluralformen zu verarbeiten die auch Sprachabhängig sind.

- -

Skin

- -

XUL zu gestalten ist dem gestalten von HTML sehr ähnlich. Wir werden uns einige Unterschiede ansehen wenn wir das XUL-Box-Modell und andere fortgeschritten Themen. Es gibt nicht viel was Sie in bei einem minimalen Menü und einer einfachen Warnmeldung gestalten können, da die Hello World ERweiterung nur eine leere CSS-Datei und eine vorgeschriebene globale Skin-Datei beinhaltet:

- -
-
-
<?xml-stylesheet type="text/css" href="chrome://global/skin/"  ?>
-<?xml-stylesheet type="text/css"
-  href="chrome://xulschoolhello/skin/browserOverlay.css"  ?>
-
-
- -

Die globale Skin-CSS-Datei enthält alle standard Styles für alle XUL-Elmente und Fenster. Wenn Sie vergessen diese Datei in ein XUL-Fensterer einzubinden, führt das normalerweise zu intersanten und oft ungewohlten Ergebnissen. In unserem Fall müssen wir diese nicht einbinden, seit wir die Hauptbrowser-XUL-Datei überblenden und diese bindet bereits diese globale CSS-Datei ein. Auf jeden Fall ist es besser sie immer einzubinden. Auf diesem Weg ist es schwieriger Fehler durch ein nicht einbinden zu vermeiden. Sie können den Chrome-Pfad in der Adressleiste eingeben und überprüfen wenn Sie sich unsicher sind.

- -

Dies behandelt alle Dateien der Hello World-Erweiterung. Nun sollten Sie eine Idee haben welche in die Erweiterungsentwicklung involviert sind, nun steigen wir direkt ein und stzen eine Eintwicklungumgebung auf. Aber als erstes eine kleine Übung.

- -

This covers all of the files in the Hello World extension. Now you should have an idea of the basics involved in extension development, so now we'll jump right in and set up a development environment. But first, a little exercise.

- -

Übung

- -

Mache die folgenden Änderungen in der Beispielerweiterung:

- - - -

Packe die XPI neu. Führe unter Linux oder Mac OS X folgendes Kommando innerhalb des Wurzelverzeichnisses der Erweiterung aus:

- -
zip -r ../xulschoolhello2.xpi *
-
- -

Verwende unter Windows ein ZIP-Tool um alle Datei und Unterverzeichnisse innerhalb des Wurzelverzeichnisses der Erweiterung zu packen und setze die Dateierweiterung der Datei auf .xpi.

- -

Installiere die XPI neu. Sie können hierzu die XPI-Datei hierzu einfach in den Browser ziehen und diese wird lokal installiert.

- -

Teste es und überprüfe ob die Änderungen funktionieren. Wenn Sie auf Probleme während der Installation stoßen, ist es wahrscheinlich, dass Sie die XPI-Struktur nicht korrekt nachgebildet haben, möglicherweise durch das hinzufügen unnötiger Ordner.

- -
Note: Packaging an extension is really just creating a ZIP archive of the contents of the main folder, then changing the filename extension to .XPI. Do not zip the containing folder, just its contents. The content folder, chrome.manifest, install.rdf, and other files and directories should be at the root level of your archive. If you zip the containing folder, your extension will not load.
- -

Beachte, dass das Extramenü standardmäßig in Firefox 4und höher, unter Windows und einige Linuxdistributionen versteckt ist. Setze einen Hacken im Optionsmenü unter dem Firefoxmenüknopf um es zu aktivieren.

- -

Nachdem Sie fertig sind, können Sie sich diese Refernzlösung ansehen: Hello World 2.

- -

- -

{{ PreviousNext("XUL_School/Getting_Started_with_Firefox_Extensions", "XUL_School/Setting_Up_a_Development_Environment") }}

- -

This tutorial was kindly donated to Mozilla by Appcoast.

diff --git a/files/de/archive/mozilla/xul/school_tutorial/eine_entwicklungsumgebung_einrichten_environment/index.html b/files/de/archive/mozilla/xul/school_tutorial/eine_entwicklungsumgebung_einrichten_environment/index.html deleted file mode 100644 index 1f4ea0ffbb..0000000000 --- a/files/de/archive/mozilla/xul/school_tutorial/eine_entwicklungsumgebung_einrichten_environment/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Eine Entwicklungsumgebung einrichten -slug: >- - Archive/Mozilla/XUL/School_tutorial/Eine_Entwicklungsumgebung_einrichten_Environment -translation_of: >- - Archive/Add-ons/Overlay_Extensions/XUL_School/Setting_Up_a_Development_Environment ---- -

{{ PreviousNext("XUL_School/The_Essentials_of_an_Extension", "XUL_School/Adding_menus_and_submenus") }}

-

Eine Entwicklungsumgebung einrichten

-

Es gibt 3 Tools von denen wir denken das diese essentiell für eine effektive Add-on-Entwicklung sind (oder ehrlich gesagt für jede Art von Entwicklung): ein Quellcodeeditor, ein Versionskontrollsystem und eine Entwicklungsumgebung.

-

Im Bezug auf das Codeediting, es gibt keine offizelle Mozilla IDE. Mit anderen Worten, Erweiterungen benutzen die selben (oder ähnlichen) Sprachen die auch für die Webentwicklung genutzt werden, von daher könnnen die meisten Texteditoren und IDE`s eingesetzt werden. Die meisten XUL-Tools und Plugin`s die Sie Online finden werden sind lediglich Templates die die Ordnerstruktur füre das Projekt erzeugen, und das ist nicht viel Hilfe.

-

WIe empfehlen Komodo Edit. Es ist kostenlos, OpenSource und Cross-Platform-Unabhängig. Es basiert auf der Mozilla XULRunner Platform, von daher unterstützt einige der Besonderheiten in der Firefoxerweiterungsentwicklung. Komodo Edit bietet eine Autovercollständigung für XUL-Tags und Attribute und es unterstützt Mozilla`s CSS-Erweiterungen (CSS-Werte und Einstellungen beginnen mit "-moz"). Es besitzt ein Add-on System ähnlich dem im Firefox, und es gibt einige Komodo-Erweiterungen die zusätzliche Hilfe bei der Erweiterungsentwicklung bieten. Das ist mehr als die meisten andern Editoren bieten, von daher empfehlen wir Ihnen ihm eine Chance zu geben. Alle unsere Beispiel wurden mit Komodo Edit erstellt, also wenn Sie eine .kpf oder .komodoproject fi Datei in einem Beispieldownload sehen ist das eine Komodoprojektdatei.

-

-

Wir empfehlen Git und GitHub für die Versionskontrolle, aber jedes anständige Software-Configuration-Management System kann hier eingesetzt werden.

-

Um XPI-Dateien zu packen, nutzen wir make. Wir haben make gewählt weil dieses System von Mozilla genutzt wird um Firefox zu bauen und es ist für alle Betriebssysteme verfügbar. make ist das Standard Tool in den meisten UNIX-basierten Systemen. Es kann unter Mac OS X als Teil von des XCode Tool-Paketes installiert werden und unter Windows mit cygwin. In einer cygwin-Installation werden Sie explizit die make und zip utilities aus der langen Liste der Pakete auswählen müssen um diese herunterzuladen und installieren.

-

Sorgen Sie des weiteren dafür das make sich im ausführbaren Systempfad befindet. Nach der Einrichtung von make, sollten Sie in der Lage sein ein Kommandozeildenfenster zu öffnen, führen Sie "make-ver" aus, und Sie bekommen die installierte Version von make als Ausgabe.

-

Wir empfehlen Ihnen make auf Ihrem System einzurichten, da unsere Beispiele beinhalten alle notwendigen Dateien um die daraus entstehende XPI mit diesem Toolzu bauen und installieren. Es wird Ihnen einiges an Zeit für das packen ersparen. Oder Sie können ein vergleichbares System unter der Verwendung von Batch aufsetzen, machen Sie es wie auch immer Sie bevorzugen. Letztlich können Sie auch einfach jeden Zip oder Archivierungs Tool verwenden um den Inhalt des src Verzeichnisses zu komprimieren um ein identisches Ergebniss zu ereichen.

-

Build system

-

Beginnen wir mit dem Herunterladen des Projekts mit dem die zweite Version von Hello World aufgebaut wurde, aus der Übung der letzten Lektion

-

Hello World 2 Project.

-

Entpacken die Datei wohin Sie wollen. Innerhalb des HelloWorld2 Verzeichnisses weden Sie zwei Verzeichnisse sehen: bin und src. Das bin Verzeichnis sollte leer sein. Dort werden alle enstehenden build-Dateien erstellt und dort werden Sie die Erweiterungs XPI-Datei finden wenn sie erstellt wurde.

-

Öffnen Sie die Projektdatei (HelloWorld2.komodoproject) in the src Verzeichnis in Komodo Edit. In dem Projektreiter sollten Sie nun in der Lage sein die Verzeichnisstruktur innerhalbt des src-Verzeichnises sehen. Dies Struktur solle ihnen vertraut sein, da Sie beinahe identisch mit der ungepackten XPI von der vorherigen Lektion ist.

-

Die einzige bemwerkswerte Änderung ist eine Datei mit der Bezeichnung Makefile unter src. Das ist die Datei die make nutzt  um die XPI zu erstellen. Sie sollten sich etwas Zeit nehmen um diese zu lesen und zu verstehen., oder zumindest die Teile untersuchen die Sie ändern müssen um Ihr projekt zu beginnen. Die GNU Make Manual ist eine sehr gute Refernz um sich mit make und der Makefile-Datei vertraut zu machen.

-

In den meisten Fällen müssen Sie nur ein paar der ersten Zeilen in der Makefile-Datei ändern. Diese definieren den Erweiterungsnamen, die Erweiterungs ID (wie in install.rdf festgelegt) und der Name des profile-Verzeichnisses wohin die Erweiterung während der Entwicklung und des testens installiert wird. Mehr über das später.

-

Versuchen wir zuerst die XPI über die Kommandozeile zu erstellen. Öffnen Sie das Kommandozeilenprogramm in Ihrem System und naviergien Sie zum src Verzeichnis in Ihrem Projekt. Führen Sie folgenden Befehl aus:

-
-
-
make
-
-
-

Das ist es. Wenn alles gut läuft sollten Sie eine Ausgabe wie diese sehen:

-
-
-
Creating XPI file.
-  adding: install.rdf (deflated 50%)
-  adding: chrome.manifest (deflated 50%)
-  adding: content/browserOverlay.js (deflated 42%)
-  adding: content/browserOverlay.xul (deflated 69%)
-  adding: skin/browserOverlay.css (stored 0%)
-  adding: locale/en-US/browserOverlay.dtd (deflated 52%)
-  adding: locale/en-US/browserOverlay.properties (stored 0%)
-Creating XPI file. Done!
-
-Build finished successfully.
-
-
-
-

Wenn Sie das bin Verzeichnis untersuchen, sollten Sie die xulschoolhello2.xpi Datei sehen.

-

Wenn Sie make ausführen, werden Sie die letzte Zeilde des Erstellungsprozesses sehen. Das ist so weil make mitteilt das die Datei im bin Verzeichnis aktuell ist und es nichts zu machen gibt. Änderungen an der Quelldatei werden make dazu bringen die notwendigen Schritte erneut auszuführen um XPI erneut zu erstellen.

-

Sie können das bin Verzeichnis aufräumen indem Sie einfach den folgenden Befehl ausführen (nochmal, innerhalb des src Verzeichnises)
-  

-
-
-
make clean
-
-
-

Sie können diese Befehle auch in Komodo ausführen. Klicken Sie auf Tools > Befehl ausführen... In das "Ausführen" Textfeld sollten Sie das eingeben:

-
-
-
bash -c "make"
-
-
-

-

Oder ersetzen Sie "make" mit "make clean" für das aufräumen. Der "basc -c" Teil zwingt Komodo bash zu nutzen, welches aus einigen Gründen nicht als das Standard Kommandozeile gesetzt werden kann. Es ist nicht notwendig dies zu tun, aber es ist besser so das mit dem make-Befehl übereinstimmt den wir als nächstes sehen werden.

-

In em "Start in" Textfeld sollten Sie %p wählen (Verzeichnispfad des aktiven Projektes. Wenn Sie dieses Textfeld nicht sehen können dann klicken Sie auf den "More" Schalter. Sie besitzen auch die Möglichkeit den Befehl zu speichern, durch einen Klick auf das "Add to Toolbox" Auswahlfeld. Um die Toolbox zu sehen, klicke auf View > Tabs > Toolbox, über das Hauptmenü. Damit sollten Sie einen sehr einfachen Weg haben um Ihre XPI zu erstellen, indem Sie nur den Erstellungsbefehl Doppelklicken.

-

Wir können es sogar noch besser machen. Wenn Sie einmal Ihren Code testen und debuggen, werden Sie feststellen, dass das ständige erstellen und installieren einer XPI sehr ermüdend sein kann. Das ist der Gründ warum wir "make install" eingeführt haben. Dies funktioniert nur wenn die Erweiterung bereits in einem Firefoxprofil installiert ist. Wie in den vorgestellten Projekt, benötigen Sie die Add-on-ID und die gesetzte Profillokation die in der Makefile-Datei. Wir nutzen diese Informationen um den Installationspfad  von der Erweiterung  und überschreiben die installierten Dateien. Wenn Firefox geöffnet ist können Sie den "make install"-Befehl ausführen, Sie müssen Firefox neustarten um die Änderungen zu sehen. Es ist immernoch besser als die XPI andauernd neu zu installieren.

-

Möglicherweise möchten Sie die Profillokation in Ihrem Makefile-Datei ändern. . Um die Profilloaktion auf den richtigen Wert zu setzen, sollten Sie den Artikel support article on profiles auf der Mozilla Support Seite lesen. Auch werden wir später tiefer in dieses Thema eintauchen.

-

Um "make install" auf nicht WIndowssystemen einzusetzen, benötigen Sie einen extra Schritt. Der Installationsprozess benötigt eine Umgebungsvariable mit dem Namen OSTYPE, welche nicht exportiert wird. Lange Geschichte kurzer Sinn, über Kommandozeile müssen Sie folgendes ausführen:

-
-
-
export OSTYPE; make install
-
-
-

Und in Komodo sollten Sie fogenden Befehl eingeben:

-
-
-
bash -c "export OSTYPE; make install"
-
-
-

Der export-Befehl wird nicht korrekt funktionieren wenn Sie nicht "bach-c" verwenden.

-
- The file Makefile specifies which profile folder the add-on will be reinstalled to. This is set in the profile_dir variable (set to "xulschool-dev" in this case). When creating a development profile for your add-on, make sure you choose an easy name for the profile folder, and set it in your Makefile in order to take advantage of the install command.
-

Building IDL files

-

Einige Erweiterungen setzen die Entwicklung von XPCOM-Komponeten voraus um gewisse fortgeschritten Funktionen hinzuzufügen. Es gibt eine Lektion die für XPCOM in diesem Tutorial vorgesehen ist, aber wie gehen kaum auf den Einflussdie es auf die Entwicklung von Erweiterungen hat ein. Sie können diesen Teil überspringen und es als Refernenz zu nutzen wenn Sie XPCOM in Ihrem Projekt benötigen.

-

XPCOM Schnittstellen werden mit IDL-Dateien definiert. Das sind Textdateien die Attribute definieren und Methoden in einem oder mehren Schnittstellen. Diese IDL-Dateien werden in Binarydateien kompiliert und werden in die Erweiterung als XPT-Dateien eingebunden.

-

Um eine IDL-Dateizu XPT zu komplieren, benötigen Sie ein Kommandozeilen Tool, xpidl. Dieses Tool ist im Mozilla Gecko SDK enthalen. Wenn Sie IDL`s kompilieren möchten, gehen Sie zur SDK-Seite und laden Sie eine kompilierte Version für Ihr System herunter. Beachte auch mögliche Anforderungen. Wenn Ihr System nicht bei den unterstützen Systemen aufgelistet ist, müssen Sie das SDK selbständig aus dem Mozilla Quellcode erstellen. Viel Glück damit.

-

Sie sollten auch Ihre Umgebung so aufbauen das die xpidl.exe (oder nur xpidl in anderen Systemen) dich in dem standardmäßige auführbaren Pfad befindet und fügen Sie auch eine Variable mit der Bennung Gecko_SDK hinzu, die auf Ihren SDK-Build verweist:

-
-
-
export GECKO_SDK=/path/to/your/sdk
-
-
-

Ihr Buildsystem sollte dort darauf zugreifen. Um es in Komodo unter UNIX-basierten Systemen einsetzen zu können, fügen wir den Befehl in die .bash_login-Datei im Homeverzeichnis hinzu und wir passen den Befehl folgendermasen an.

-
-
-
bash -c ". ~/.bash_login; make"
-
-
-

Ein Beispiel Projekt mit XPCOM-Komponeten ist in der XPCOM-Lektion enthalten. Dort wird auch XPCOM Erstellung mit C++ angesprochen, was sehr viel schwieriger ist.

-

Signing

-

Um zusätzliche Sicherheit für Ihre Nutzer bereitzustellen, können Sie sich entscheiden eine Signature zu Ihrer Erweiterung hinzuzufügen. Die Signatur verfiziert das Sie der Autor dieser Erweiterung sind und das kann nur gemacht werden wenn Sie ein gültiges Zertifikat einer vertrauswürdigen Zertifizierungsstelle besitzen.

-

Der einzige wahrnehmbare Unterschied für den Benutzer ist das der XPI-Installationsdialog mitteilen wird das die Erweiterung von Ihnen erstellt wurde, was den Dialog vertrauswürdiger macht. Es is nicht üblich Erweiterungen zu signieren weil die meisten Anwender der offizellen Add-on-Seite (AMO) vertrauen anstatt sich auf die Erweiterungssignaturen zu verlassen. Auf der anderen Seite, ist es gängie Praxis für große Unternehmen ihre Erweiterungen zu signieren.

-

Sie werden einige libraries herunterladen müssen damit Sie in der Lage sind Ihre Erweiterungen zu signieren. Folgen Sie dieser Anleitung und fügen etwas ähnliches wie das der Makefile-Datei hinzu:

-
-
-
# The directory where the signature sources are located.
-signature_dir := signature
-
-# The signing key /certificate file.
-signature_extra_files := $(build_dir)/META-INF/manifest.mf \
-                         $(build_dir)/META-INF/zigbert.sf
-# The signing key /certificate file.
-signature_rsa_file = $(build_dir)/META-INF/zigbert.rsa# The signing key /certificate file.
-signature_files := $(signature_extra_files) \
-                   $(signature_rsa_file)
-
-$(signature_files): $(build_dir) $(xpi_built)
-  @signtool -d $(signature_dir) -k $(cert_name) \
-  -p $(cert_password) $(build_dir)
-
-
-

Behalten Sie im Hinterkopf ds Ihr Passwort sollte nicht in Ihren Makefile-Dateien enthalten sein und Sie müssen sehr vorsichtig mit den Zertifkatsinformationen sein. Idealerweise sollte das von einer Person erledigt werden und nur Kurz vor Abschluss des Releaseprozess erledigt werden. Sie sollten auch einen abweichenden make-Befehl hierfür haben, wie z.B. make signed um die signierten und unsignierten Entwicklungs builds unterscheiden zu können.

-

Firefox profile management

-

Es ist gute Entwicklungspraxis die Testumgebung von allem anderen zu seperieren. Sie wollen bestimmt nicht das unstabilen Erweiterungen Ihr Firefoxprofil zu schädigen und einen Datenverlust zu riskieren. Es ist viel Besser eine weitere Firefox-"Version" für die Tests zu haben. Hierfür gibt es de Firefoxprofile.

-

Sie können in dem Mozillasupport-Artikeln Managing Profiles lernen wie man mehrere Firefoxprofile aufsetzt. Sie können soviele Profile anlegen wie Sie möchten. Sie können diese auch mit mehreren Firefoxinstallationen mischen. Als Beispiel, Sie möchten möglicherweise Ihre Erweiterungen in Firefox 3.5 und Firefox 3.6 oder in unterschiedlichen regionalen Versionen von Firefox testen. Sie können soviele Firefoxversionen installieren wie Sie möchten und die Profile und Versionen mischen.

-

Unter Windows und Linux ist es einfach Verknüpfungen für jedes angeleget Profil zu erstellen, unter der Verwendung der Befehle beschrieben in http://kb.mozillazine.org/Command_line_arguments ..

-

Für Mac OS X Entwickler, gibt es auch eine Möglichkeit "Verknüpfungen" zu erstellen. Sie können dies erledigen, indem Sie eine Automator-Anwendung öffnen, indem Sie Run Shell Script auswählen und anschließend das Profillade-Skript in das Textfeld eingeben:

-
-
-
/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -p MyProfile > /dev/null &
-
-
-

Sie können "/dev/null" auf einen Dateispeicherort ändern, in dem Fall das Sie eine dump-Ausgabe in Firefox sehen möchten oder ander Erweiterungen. last & prevents hindert Automator daran auf das beenden Ihrer Firefoxsitzung zu warten. Speicher Sie das als eine Anwendung nicht als einen Workflow. Un möglicherweise wollen Sie diese auf Ihrem Desktop oder Dock, für einen einfachen Zugriff.

-

Es sollten auch noch Konfigurationsänderungen in Ihrem Testprofil vorgenommen werden, sodass Sie im falls etwas schief geht detailierte Informationen erhalten. Die Firefox Error Console (Extras > Error Console) zeigt normalerweise JavaScripte Fehler an die auf der Webseite auftretten, aber mit etwas Optimierung können Sie Fehlerinformationen aus Ihrer Erweiterungen erhalten. Lesen hierfür Sie diesen Beitrag über Development preferences.

-

Developer extensions

-

Es gibt ein große Bandbreite an Firefoxerweiterungen die die Web- und Add-on-Entwicklung untersützen. Ein guter Ort um danach zu suchen ist die Mozilla Add-ons Seite auch gibt es hier ein gute Entwicklungserweiterungsliste. Sie sollten sich etwas Zeit nehmen und mit den Webentwicklungstools die in Firefox enthalten sind herumspielen. Einige von diesen können sehr hilfreich für die Add-on-Entwicklung sein und überschneiden sich mit den aufgeführen Add-on`s. in dieser Lektion werden wir ein paar wenige ansprechen die wir als sehr hilfreich empfunden haben.

-

DOM Inspector

-

Der DOM Inspector war früher ein Teil von Firefox als eine Installationsoption, aber seit Firefox 3 ist von Firefox abgetrennt als ein weiteres Add-on Sie können es hinzufügen und entfernen. Es ist ein sehr nützliches Tool für Untersuchungen das Sie in das DOM von HTML und XUL-Dokumenten sehen lässt, genauso wie eingesetzte CSS-Regeln und zugehörige JavaScript Objekte. Introduction to DOM Inspector ist eine gute Einführung um mit der Verwendung zu beginnen.

-

Der DOM Inspector ist besonders hilfreich um heruauszufinden wie Sie ein Fenster überblenden, und wie Sie standard CSS-Style-Regeln ersetzen. Sie können die Namen der beteiligten Dateien sehen, was Ihnen einen guten Startpunkt gibt wenn Sie in die Mozilla source sehen. Sie können sogar Styles, Attribute ändern und JavaScript Code ausführen, obwohl dies nicht vollständig zuverlässig ist.

-

JavaScript Debugger

-

Der Name sagt alles. Der Venkman JavaScript Debugger ist ein größartiger Weg um die Ausführung von JavaScript zu verfolgen.

-

Um Erweiterungen und Browsercod zu debuggen, klicken Sie mit der rechten Maustaste auf die geladene Scriptkonsole und entfernen Sie die Auswahl von Exclude Browser Files. Die Liste der geladenen Skripte wird anwachsen um alle Skripte in Firefox zu beinhalten. Unsere Dateinamenkonventionen erweisen sich hierbei als sehr hilfreich. Sie können Unterbrechngspunkte setzen, aus und in Methoden springen und sogar Profilinformationen aus der JavaScriptausführung erhlaten. Sie können Variablen untersuchen, Überwachungsausdrücke verfolgen, und nach Ermessen JS an jedem Punkt der Ausführung auswerten.

-

Diese Erweiterungen ist seit einiger Zeit nicht mehr gewartet werden, daher ist sie sehr buggy. Es ist besonders unzuverlässig wenn es Code in XPCOM und XBL-Dateien debuggen soll. Dennoch, ist ein wertvolles Tool wenn man versucht herauszufinden warum sich eine bestimmte Funktion ungewünscht verhält.

-

Tamper Data

-

Tamper Data fängt HTTP-Anfragen und ihren -Antworten ab. Dies erlaubt Ihnen diese zu unterbrechen und sogar die Payload-Daten zu ersetzten bevor diese gesendet werden. Es gibt einige ähnliche Erweiterungen, wie z.B. Live HTTP Headers, aber Tamper Data ist das eine das wir am meisten einsetzen. Wir werden mehr über HTTP debugging später erfahren.

-

Firebug

-

Die Firebug Erweiterung enthält fast alle Tools die bisher angesprochen wurden, aber sie ist hauptsächlich auf die Webentwicklung ausgerichtet. Die Chromebug Erweiterung hilft Firebug nützlicher im Bezug auf die Erweiterungsentwicklung, aber sie ist möglicherweise nicht stark genug um alle alle angesprochen Add-ons zu ersetzen.

-

Auf der anderen Seite, bietet Firebug eine sehr benutzerfreundliches integriertes Oberfläche und wirdurch stärker weiterentwickelt als seine Gegenstücke. Es ist definitiv einen Versuch wert.

-

Leak Monitor

-

Memoryleaks sind immer ein großer Kritikpunkt an Firefox gewesen. mozilla hat über die Zeit bewiesen das es die Arbeitsspeicher nutzung ernst nimmt, durch die Verbesserung der Performance an besonders kritischen Bereichen und durch das entfernen aller Memoryleaks.

-

Wie auch immer, Erweiterung können auch die Ursache von Memoryleaks sein. Wenn Sie Ihre Erweiterung in die Mozilla Add-on Seite aufgenommen haben möchten, sollten Sie besser keine Memoryleaks haben. In Using XPCOM in JavaScript sind einige Richtlinien erfastt die Sie befolgen sollten um diese zu vermeiden. Einer der häufigsten Fehler die Entwicklern machen, ist einen JS event listener oder observer zu registrieren und diesen niemals zu entfernen. Die einfache Praxis immer Code für das Entfernen für alles was Sie hinzuzufügen anzufügen macht einen großen Unterschied.

-

Um sicher zugehen das Ihre Erweiterungen keine Leaks beinhaltet, Sie sollten die Leak Monitor Erweiterung verwenden wenn Sie das testen. Testen Sie immer öffnende und schließende Fenster. Gewöhnlicherweise tretten diese Leaks bei diesem Vorgang auf.

-

Exercise

- -

Jetzt das Sie wissen wie man schnell Ihr Projekt und Test-Änderungen überprüft, werden wir lernen wie man neue UI-Elemente zu Firefox durch Overlays und neuer Fenster hinzufügt.

-

{{ PreviousNext("XUL_School/The_Essentials_of_an_Extension", "XUL_School/Adding_menus_and_submenus") }}

-

This tutorial was kindly donated to Mozilla by Appcoast.

diff --git a/files/de/archive/mozilla/xul/school_tutorial/einleitung/index.html b/files/de/archive/mozilla/xul/school_tutorial/einleitung/index.html deleted file mode 100644 index d31a97b230..0000000000 --- a/files/de/archive/mozilla/xul/school_tutorial/einleitung/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Einleitung -slug: Archive/Mozilla/XUL/School_tutorial/Einleitung -tags: - - Add On - - Benutzeroberfläche - - Extension - - Gecko - - Mozilla - - XUL - - XULRunner -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School/Introduction ---- -
- {{Next("XUL_School/Getting_Started_with_Firefox_Extensions")}}
-

Willkommen beim XUL School Tutorial!

-

Dieses Tutorial soll der entscheidene Schritt sein, welcher Sie in einen Firefox Extension Developer (Erweiterungsentwickler) verwandelt. Wir haben Jahre an Erfahrung mit XUL und während dieser Zeit alle Probleme kennengelernt, auf die Entwickler stoßen.

-

XUL School wurde erschaffen von Appcoast (ehemals Glaxstar), eine der wenigen Firmen, welche sich der Addon Entwicklung von Firefox verschrieben hat. Ein Team von über einem Dutzend XUL Entwickler entwickelten Glaxstar während dieses Tutorial geschrieben wurde. Sie sammelten jahrelang Erfahrung und diese reflektieren Sie hier.

-

In diesem Tutorial erfahren Sie, wie Sie Firefox-Erweiterungen entwickeln. Sie werden lernen, wie man schnell die häufigsten Aufgaben in der Extension-Entwicklung löst und vergleichen verschiedene Ansätze, sie zu lösen. In den meisten Fällen bieten wir Codebeispiele, die Sie leicht kopieren und an Ihre Bedürfnisse anpassen können, sowie einige funktionierende Beispiele von Erweiterungen. Das Tutorial soll so kurz wie möglich sein. Oft hilft das Zurückgreifen auf die Mozilla-Dokumentation für weitere Informationen. Sie können es als praktischen Reiseführer mit Infos durch die wachsende Welt, die die Mozilla-Plattform ist, nutzen. Die meisten Links in dieser Dokumentation sollten angeklickt und gelesen werden.

-

Wir starten mit einer Einführung in die Hauptkonzepte, falls Sie nicht mit Mozilla und Firefox vertraut sind.

-

Mozilla and Firefox

-

Der Term Mozilla wird benutzt, um folgende Konzepte zu beschreiben: das Mozilla Projekt, die Mozilla Foundation, die Mozilla Corporation und den alten Mozilla browser. Auch Firefox wird manchmal "Mozilla" genannt. Falls Ihnen die Begriffe nicht geläufig sind, ist es von Vorteil, sich etwas Zeit zu nehemen und mehr über Mozilla zu lernen. Dies hilft die Kultur und das Umfeld von Mozilla zu verstehen.

-

Mozilla hat mehrere Produkte und Projekte hervorgebracht. Das bemerkenswerteste ist der Mozilla Firefox Web-Browser. Firefox ist eines der erfolgreichsten Open-Source-Projekte in der Geschichte. Es kombiniert Offenheit, die Einhaltung von Standards und Raffinesse von Open Source mit dem Fokus auf Benutzerfreundlichkeit und leistungsstarke Vielseitigkeit, wie man es in weniger offenen Unternehmen nur selten sieht.
-
- Version 1.0 von Firefox wurde im November 2004, Version 2.0 im Oktober 2006 und Version 3.0 im Juni 2008 veröffentlicht. Dieses Tutorial wurde geschrieben, nachdem Firefox 3 veröffentlicht wurde, und ist mit der Zeit aktualisiert worden. Obwohl noch für die Erstellung von Erweiterungen in Firefox 3 (und auch Firefox 2) gearbeitet wird, ist es dringend zu empfehlen, dass Sie moderne Firefox-Versionen unterstützen, um Nutzer zu motivieren, mit Sicherheitsupdates auf dem laufenden zu bleiben. Eine Version, die vor mehr als 6 Monaten veröffentlicht wurde, ist wahrscheinlich anfällig für Sicherheitslücken.
-
- Firefox und andere Mozilla-Anwendungen kann man als zusammengesetzt ansehen aus zwei verschiedenen Teilen: eine Benutzeroberflächen-Schicht, die für jedes Projekt verschieden ist, und eine gemeinsame Plattform, worauf die Benutzeroberflächen-Schicht angesiedelt ist. Die Benutzeroberfläche ist mit der Technologie XUL entwickelt und die Plattform wird als XULRunner bezeichnet.

-

 

-

XUL

-

XUL (ausgesprochen "zool") ist eine von vielen Technologien für die Erstellung von Mozilla-basierten Produkten und wird auch für Erweiterungen verwendet. Sie ist nur ein Teil der Entwicklungslandschaft, aber da sie praktisch exklusiv für Mozilla ist, neigt man dazu, sie zu verwenden, um Mozilla-bezogene Entwicklungen zu identifizieren. Sie lesen manchmal Begriffe wie "XUL-Anwendungen" und "XUL-Erweiterungen", aber nur selten werden sie für Projekte benutzt, die ausschließlich mit XUL gebaut sind. Es bedeutet in der Regel, dass die Projekte mit Mozilla-Technologien gebaut wurden. Auch dieses Projekt, genannt XUL Schule, erstreckt sich über mehrere andere Technologien wie JavaScript, CSS, XBL und XPCOM.

-

XULRunner

-

XULRunner umfasst die Gecko-Rendering-Engine, die Necko Netzwerk-Bibliothek, und einige andere Komponenten, die unter anderem OS-unabhängiges Datei-Management, Zugänglichkeit und Lokalisierung bieten. Es ist eine sehr leistungsfähige Plattform, die ein solch schnelles Wachstum der Entwickler-Community rund um Mozilla und Firefox erlaubt hat.

-

XULRunner ist in binärer Form auf der XULRunner Seite verfügbar und sie ist die Basis für mehrere Projekte, wie zum Beispiel Songbird, Miro und Eudora. Es gibt eine sehr umfassende Liste von Anwendungen in der XULRunner Hall of Fame.

-

Gecko

-

Die Gecko-Engine ist der Teil von Firefox, der verwendet wird, um Web-Seiten und eine eigene Benutzeroberfläche zu gestalten. Sie erkennen den Grad der Kompatibilität von Web-Standards in Gecko-basierten Browsern, indem Sie sich ihren User Agent String ansehen, der die Gecko-Version enthalten sollte. Gecko-Versionen sind etwas unabhängig von Firefox-Versionen. Sie können eine Zuordnung von Firefox-Versionen und Gecko-Versionen auf der Gecko-Seite sehen. Der User Agent String für Firefox zum Zeitpunkt des Schreibens dieses Artikels (in US-Englisch, Mac OS X) ist:

-

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

-

Der markierte Abschnitt ist die Gecko-Version: 7.0.1. Sie können den  User-Agent-String lesen und kopieren in jedem beliebiegen Firefox-Fenster. Dazu wählen Sie "Hilfe> Informationen zur Fehlerbehebung" aus dem Hauptmenü.

-

Weiter im Tutorial

-

Mit den grundlegenden Konzepten können wir jetzt in die Entwicklung von Erweiterungen einsteigen. Sie werden sich wahrscheinlich immer noch fragen, was genau ist eine Erweiterung, was kann sie leisten und wie kann man sie erstellen. Nun, dieses ganze Tutorial verfolgt das Ziel, Ihnen das zu erklären.
-
- Willkommen in der Welt der Extension-Entwicklung. Jetzt wollen wir uns dem zuwenden.

-
- {{Next("XUL_School/Getting_Started_with_Firefox_Extensions")}}
-

This tutorial translation was kindly donated to Mozilla by Sinn - IT mit Emotion

diff --git a/files/de/archive/mozilla/xul/school_tutorial/getting_started_with_firefox_extensions/index.html b/files/de/archive/mozilla/xul/school_tutorial/getting_started_with_firefox_extensions/index.html deleted file mode 100644 index bfb1d41e7a..0000000000 --- a/files/de/archive/mozilla/xul/school_tutorial/getting_started_with_firefox_extensions/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Mit Firefox Erweiterungen beginnen -slug: Archive/Mozilla/XUL/School_tutorial/Getting_Started_with_Firefox_Extensions -tags: - - Erweiterungen -translation_of: >- - Archive/Add-ons/Overlay_Extensions/XUL_School/Getting_Started_with_Firefox_Extensions ---- -

{{ PreviousNext("XUL_School/Introduction", "XUL_School/The_Essentials_of_an_Extension") }}

-

Was ist eine Firefox Erweiterung?

-
-

Extensions add new functionality to Mozilla applications such as Firefox and Thunderbird. They can add anything from a toolbar button to a completely new feature. They allow the application to be customized to fit the personal needs of each user if they need additional features, while keeping the applications small to download.

-
-

Auszug aus der Erweiterungs-Seite.

-

Wie es das Zitat beschreibt, ist eine Erweiterung eine kleine Anwendung, die etwas Neues zu einer oder mehreren Mozilla-Anwendungen hinzufügt. Dieses Tutorial konzentriert sich auf Erweiterungen für Firefox. Dieselben (oder sehr ähnliche) Prinzipien gelten auch für die Entwicklung von Erweiterungen zu anderen Anwendungen wie Thunderbird, Seamonkey oder Flock.

-

Bitte beachten Sie, dass es es einen Unterschied zwischen der Definiton einer Erweiterung und einem Add-on gibt. Alle Erweiterungen sind Add-ons, aber ein Add-on kann auch eine Theme, ein Plug-in oder ein Sprachpaket sein. Der Inhalt dieses Tutorials behandelt die Entwicklung von Erweiterungen. Themes und Sprachpakete werden in einer sehr ähnlichen Art und Weise entwickelt. Plug-ins sind gänzlich anders und sie werden in diesem Tutorial nicht behandelt. Sie können mehr über Plug-ins und deren Entwicklung auf der Plug-in-Seite erfahren.

-

Firefox bietet eine sehr reiche und flexible Architektur. Diese erlaubt es den Entwicklern von Erweiterungen fortgeschrittene Funktionalitäten hinzuzufügen, sich der Benutzererfahrung anzupassen und Teile des Browsers vollständig zu ersetzen oder zu entfernen.

-

Das Mozilla Add-on Repository (AMO) beinhaltet eine umfassende Anzahl von Erweiterungen mit einer großen Bandbreite an Funktionen: Inhaltsfilterung (AdBlock Plus, NoScript), Interaktion mit Webanwendungen (Delicious Bookmarks, eBay Companion) und Webentwicklung (DOM Inspector, Firebug). Dabei handelt es sich um sehr fortgeschrittene und komplexe Erweiterungen. Sie werden in diesem Tutorial das meiste erlernen, was benötigt wird, um derartige Erweiterungen zu erzeugen (genau genommen basiert Glaxstar auf drei von den hier aufgezählten).

-

Erweiterungen gibt es im Moment in drei verschiedenen Ausprägungen: Add-ons SDK extensions (auch bekannt als Jetpacks), bootstrapped-Erweiterungen und traditionelle Erweiterungen. Wenn Sie gerade beginnen, Add-ons zu entwickeln, bietet das Add-on SDK einen fantastischen Weg, um schnell Erweiterungen zu entwickeln und auf diesen aufzubauen. Dieses Tutorial konzentriert sich auf traditionelle Erweiterungen, welche auf eine andere Art entwickelt werden. Bootstrapped-Erweiterungen sind eine Stufe komplexer, als die traditionellen. Von daher sollten Sie zuerst dieses Tutorial durchgehen, bevor Sie sich diese ansehen.

-

Wir werden dieses Tutorial mit der Analyse einer sehr einfachen Erweiterung beginnen.

-

Die Hallo Welt Erweiterung

-

Unsere Beispielerweiterung und dieses Tutorial im Allgemeinen sind ausgelegt für moderne Versionen des Firefox, aber die meisten von ihnen funktionieren auch auf älteren Versionen.

-

Wir werden nun mit einer einfachen "Hallo Welt"-Erweiterung beginnen. WIr beginnen mit seiner Installation. Dafür klicken Sie auf den folgenden Link.

-

Install Hello World

-

Hierbei wird entweder eine Installation oder ein Datei-Download angestoßen, abhängig von dem Inhaltstyp, der auf dem Webserver abgelegt ist. Der entsprechende Inhaltstyp, um eine Installation zu veranlassen, ist application/x-xpinstall. Im Fall dieses Wiki`s, ist der Inhaltstyp entsprechend gesetzt und ein Installationsfenster sollte erscheinen.

-

Wenn der Inhaltstyp richtig gesetzt ist, werden Sie ordnungsgemäß gewarnt, dass es dieser Seite nicht erlaubt ist Add-ons zu installieren. Hierbei handelt es sich um eine Sicherheitsbarriere, die Seiten daran hindert, Erweiterungen ohne Benutzerzustimmung zu installieren. Dies ist vonnöten, weil bösartige Erweiterungen den gleichen Schaden verursachen können, wie jedes anderes Schadprogramm: Datenklau, das Löschen oder das Austauschen von Daten oder sonstiges unerwünschtes Verhalten. AMO ist die einzige Seite mit einer generellen Erlaubnis. Dies liegt daran, dass die auf AMO veröffentlichten Add-ons einem Überprüfungsprozess unterzogen werden, der Sicherheitsüberprüfungen beinhaltet.

-

Nach dem Herunterladen der Datei, können Sie diese, per Drag and Drop in den Firefox Inhaltsbereich ziehen und die Installation sollte beginnen.

-

Sie werden ein Fenster sehen, welches Ihnen mitteilt, dass sie dabei sind eine Erweiterung zu installieren. In diesem sind einige zusätzliche Informationen enthalten, wie unter anderem der Name des Authors. Sie werden benachrichtigt, dass der Author nicht verfiziert werden kann. Nur Erweiterungen, die mit einem digitalen Zertifkat signiert sind, können die Autorschaft verifizieren. Signierte Erweiterungen sind selten, aber wir werden das Signieren von Erweiterungen später behandeln.

-

Klicken Sie auf die "Jetzt Installieren"-Schaltfläche. Nach der Installation der Erweiterung, werden Sie gefragt ob Sie Firefox neu starten wollen. Installation, Deinstallation, Aktivierung und Deaktiverung von Add-ons erfordern einen Neustart für die Ausführung (außer von NPAPI-Plug-ins, Add-on SDK Erweiterungen und Bootstrapped Erweiterungen). Dies ist ein wichtiger Punkt, den Sie im Hinterkopf behalten sollten, wenn Sie Erweiterungen entwickeln, die andere Erweiterungen oder Themes manipulieren.

-

Sehen Sie nach der Installation in das Firefox Hauptfenster und schauen Sie, ob Sie eine Veränderung feststellen können.

-

Haben Sie es gesehen? Dort ist ein neues Menü im Hauptmenü, bezeichnet "Hello World!".

-

-

Wenn Sie dieses Menü öffnen und den darunter liegenden Menüpunkt, werden Sie eine nette Mitteilung sehen ("nett" im weitesten Sinne). Klicken Sie auf die OK-Schaltfläche um die Mitteilung zu schließen.

-

-

Das ist alles was die Erweiterung macht. Sehen wir uns das jetzt mal genauer an.

-

Erweiterungsinhalte

-

Sie werden vielleicht bemerkt haben, dass die von Ihnen installierte Erweiterungsdatei mit xulschoolhello1.xpi benannt ist. XPI (ausgesprochen "zippy") steht für Cross-Plattform Installer. Diese Installationsdatei funktioniert auf allen Plattformen, die Firefox unterstützen. XPIs sind einfache ZIP-Dateien, aber Firefox erkennt die XPI-Erweiterung und veranlasst den Installationprozess, wenn die XPI-Datei geladen wird.

-

Um in die XPI-Datei zu sehen, müssen Sie diese zuerst herunterladen, ohne sie zu installieren. Anstatt eine Installation durch einen Klick auf einen Link oder eine Schaltfläche auszulösen, führen sie einen Rechtsklick darauf aus und wählen Sie die Ziel speichern unter... Option.

-

Entpacken Sie die XPI-Datei an einen gewünschten Ort. Unter Linux oder Mac OS X führen Sie den folgenden Befehl aus, um die Datei  zu entpacken:

-
unzip xulschoolhello1.xpi -d xulschoolhello1
-
-

Unter Windows können Sie die Dateierweiterung von xpi zu zip ändern oder die Datei direkt öffnen und anschließend mit einem ZIP-Tool entpacken.

-

Sie sollten die folgendene Dateistruktur sehen:

- -

Das ist eine große Anzahl an Dateien, für etwas so einfaches! In der nächsten Lektion werden wir die Dateien und was sie machen genauer analysieren .

-

{{ PreviousNext("XUL_School/Introduction", "XUL_School/The_Essentials_of_an_Extension") }}

-

This tutorial was kindly donated to Mozilla by Appcoast.

diff --git a/files/de/archive/mozilla/xul/school_tutorial/index.html b/files/de/archive/mozilla/xul/school_tutorial/index.html deleted file mode 100644 index c11982d447..0000000000 --- a/files/de/archive/mozilla/xul/school_tutorial/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: XUL School Tutorial -slug: Archive/Mozilla/XUL/School_tutorial -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School ---- -

XUL School ist ein umfassendes Tutorial zur Entwicklung von Addons, das sich auf die Erstellung von Firefox-Erweiterungen konzentriert. Wir empfehlen Dir, dieses Dokument mindestens einmal vollständig zu lesen. Obwohl sich Firefox sehr schnell weiterentwickelt, sollte der Inhalt dieses Tutorials aktuell und korrekt sein.

-
-
- Einführung
-
- -
-
- Grundlegende Techniken
-
- -
-
- Fortgeschrittene Techniken
-
- -
-
- Weiterführende Themen
-
- -
-
- Anhänge
-
- -
-
-

Das XUL School Projekt wurde von Appcoast (ehemals Glaxstar) entwickelt. Das Projekt wird hier unter deren Lizenzen veröffentlicht. Die originalen Inhalte wurden wo nötig angepasst.

-
-

{{ languages( { "ja": "ja/XUL_School", "fr": "fr/Vulgarisation_XUL", "es": "es/Escuela_XUL", "de": "de/XUL_School" } ) }}

-
-

 

diff --git a/files/de/archive/mozilla/xul/separator/index.html b/files/de/archive/mozilla/xul/separator/index.html deleted file mode 100644 index d01d1d589c..0000000000 --- a/files/de/archive/mozilla/xul/separator/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: separator -slug: Archive/Mozilla/XUL/separator -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/separator ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Erstellt eine trennende Lücke zwischen Elementen. Dieser Typ ist dazu gedacht unterschiedliche Teile eines Dialogs aufzuteilen. Es wird kein sichtbarer Trennbalken dargestellt, aber ein kleiner Leerraum frei gelassen. Die Funktionsweise ist identisch zum spacer Element außer, dass standardmäßig eine kleine Größe eingestellt ist (normalerweise 1.5 em).

-
Attribute
orient
-
-
Styleklassen
groove, groove-thin, thin
-
-

Beispiele

-
<separator class="groove-thin"/>
-
-

Attribute

-
- - -
-
orient
-
Type: one of the values below
-
Used to specify whether the separator is a horizontal or vertical separator. Note that the values are the reverse of what seems more likely.
-
-
-
horizontal
-
The separator separates vertically placed elements.
-
vertical
-
The separator separates horizontally placed elements.
-
-
-
- - -
- - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Styleklassen

-

Folgende Klassen können benutzt werden, um den Stil des Elements zu bestimmen. Statt den Stil des Elements direkt zu ändern, sollten diese Klassen zu Hilfe genommen werden, da sie sich natürlicher in das vom Benutzer gewählte Theme der Benutzeroberfläche einfügen.

-
-
groove
-
A grooved separator.
-
-
groove-thin
-
A thin grooved separator.
-
-
thin
-
A thinner separator, which is usually 0.5 ems.
-
-

Verwandte Themen

-
Elemente
spacer, splitter, menuseparator, toolbarseparator, treeseparator.
-
diff --git a/files/de/archive/mozilla/xul/spacer/index.html b/files/de/archive/mozilla/xul/spacer/index.html deleted file mode 100644 index f566611098..0000000000 --- a/files/de/archive/mozilla/xul/spacer/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: spacer -slug: Archive/Mozilla/XUL/spacer -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/spacer ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein Element, das Platz einnimmt, aber nichts anzeigt. Gewöhnlich benutzt, um Freiraum in einem Behälter zu platzieren. Wenn der Platzhalter nicht als flexibel und für ihn keine Größe angegeben ist, nimmt der Platzhalter keinen Raum ein. Ist eine kleine Lücke gewünscht, ist der Einsatz des Elements separator sinnvoller.

-

Weitere Informationen im XUL Tutorial.

-

Beispiele

-
<box>
-  <button label="Links"/>
-  <spacer flex="1"/>
-  <button label="Rechts"/>
-</box>
-
-

Attribute

- - - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandt

-
Elemente
separator, splitter
-
diff --git a/files/de/archive/mozilla/xul/splitter/index.html b/files/de/archive/mozilla/xul/splitter/index.html deleted file mode 100644 index 6c89456da3..0000000000 --- a/files/de/archive/mozilla/xul/splitter/index.html +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: splitter -slug: Archive/Mozilla/XUL/splitter -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/splitter ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein Element, das vor oder nach einem Element innerhalb eines Containers auftauchen sollte. Das Ziehen des Trenners ändert die Größe der Geschwisterelemente des Trenners. Platziert man ein 'Griffchen' (grippy) innerhalb eines Trenners, so wird ein Geschwisterelement des Trenners beim Anklicken des 'Griffchens' zugeklappt.

-

Weitere Information sind im XUL Tutorial verfügbar.

-
Attribute
collapse, resizeafter, resizebefore, state, substate
-
-
Styleklassen
tree-splitter
-
-

Beispiele

-

 splitter_arrow.png

-

<splitter tooltiptext="Größe der Suchbox verändern" oncommand="alert('Der Splitter wurde gezogen!')">
-   <vbox id="Beispiel_vbox" />
-</splitter>

-

Attribute

-

- - -
-
collapse
-
Type: one of the values below
-
Determines which side of the splitter is collapsed when its grippy is clicked. If this attribute is not specified, the splitter will not cause a collapse. You should put a grippy element inside the splitter when it is used for collapsing.
-
-
-
none
-
No collapsing occurs.
-
before
-
When the grippy is clicked, the element immediately before the splitter in the same parent is collapsed so that its width or height is 0.
-
after
-
When the grippy is clicked, the element immediately after the splitter in the same parent is collapsed so that its width or height is 0.
-
both
-
Either the element immediately before the splitter, or the element immediately after the splitter can be collapsed, if the size of that element would fall below the minimum size due to the position of the splitter.
-
-
-
-
- - -
-
resizeafter
-
Type: one of the values below
-
This attribute indicates which element to the right or below the splitter should be resized when the splitter is repositioned.
-
-
-
closest
-
The element immediately to the right or below the splitter resizes.
-
farthest
-
The element that is the farthest away from the splitter to the right or below the splitter resizes.
-
grow
-
The elements to the right or below the splitter do not change size (unless they are flexible) when the splitter is dragged, but instead the entire container changes size.
-
flex
-
The closest flexible element resizes.
-
-
-
- - -
- - -
-
resizebefore
-
Type: one of the values below
-
This attribute indicates which element to the left or above the splitter should be resized when the splitter is repositioned.
-
-
-
closest
-
The element immediately to the left or above the splitter resizes.
-
farthest
-
The element that is the farthest away from the splitter to the left or above the splitter resizes.
-
flex
-
The closest flexible element resizes.
-
-
-
-
- - -
-
state
-
Type: one of the values below
-
Indicates whether the splitter has collapsed content or not. This attribute will be updated automatically as the splitter is moved, and is generally used in a stylesheet to apply a different appearance for each state.
-
-
-
open
-
The content either before or after the splitter, depending on the value of the collapsed attribute, is currently displayed.
-
collapsed
-
The content either before or after the splitter is collapsed and is not visible.
-
dragging
-
The user is current adjusting the position of the splitter, typically by dragging it with the mouse.
-
-
-
- - -
- - -
-
substate
-
Type: one of the values below
-
On splitters which have state="collapsed" and collapse="both", determines which direction the splitter is actually collapsed in. Since collapse="both" is a Gecko 1.9+ feature, this will have no effect on earlier versions.
-
-
-
before
-
The element immediately before the splitter is collapsed.
-
after
-
The element immediately after the splitter is collapsed.
-
-
-
-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Styleklassen

-

Folgende Klassen können benutzt werden, um den Stil des Elements zu bestimmen. Statt den Stil des Elements direkt zu ändern, sollten diese Klassen zu Hilfe genommen werden, da sie sich natürlicher in das vom Benutzer gewählte Theme der Benutzeroberfläche einfügen.

-
-
tree-splitter
-
This splitter is intended to be used in tree columns (in-between treecol elements). The splitter will be drawn with no width so that it isn't visible, however, the columns may still be resized.
-
-
	<tree id="tree1" flex="1" height="300" enableColumnDrag="true">
-	  <treecols>
-    	    <treecol id="name" label="Name" flex="1"/>
-	    <splitter class="tree-splitter"/>
-    	    <treecol id="id" label="ID" flex="1"/>
-	    <splitter class="tree-splitter"/>
-    	    <treecol id="date" label="Date" flex="1"/>
-	    <splitter class="tree-splitter"/>
-	  </treecols>
-	  <treechildren/>
-	</tree>
-
- -

Das Maß, welches die Größe der Box verändert und was während der Größenveränderung passiert nachdem das Limit erreicht wurde, hängt von der festgelegten Höhe (oder Breite) der Box, welche über ein Attribut, über eine CSS Anweisung (min-height [oder min-width]) oder die wirkliche Höhe der Boxinhalte bestimmt werden kann, und von der An- oder Abwesenheit des eines collapse Attributs des Splitters ab.

-

Bei:

-
<vbox></vbox>
-<splitter/>
-<vbox></vbox>
-

...wird sich der Splitter nicht bewegen, da kein collapse Attribute für den Splitter festgeleget wurde, was dazu führt das der Splitter zusammenfällt, sobald er gezogen wird.

-

Bei:

-
<vbox></vbox>
-<splitter/>
-<vbox height="500"><vbox height="100"/></vbox>
-

...kann der Splitter bis auf eine Höhe von 100px der unteren Box gezogen werden, wo er nicht weiter gezogen werden kann (oder zusammenfällt, wenn der Splitter über ein collapse Attribut verfügt).

-

Bei:

-
<vbox></vbox>
-<splitter/>
-<vbox height="500" minheight="200"><vbox height="100"/></vbox>
-

...kann der Splitter bis auf eine Mindesthöhe von 200px gezogen werden, wo er stoppen wird oder zusammenfällt.

-

Bei:

-
<vbox></vbox>
-<splitter>
-<vbox height="500" style="min-height: 50"><vbox height="100"/></vbox>
-

...kann der Splitter bis unter einer Höhe von 100px der unteren Box gezogen werden, wodurch das Kindelement überläuft, wenn die Mindesthöhe erreicht wird. Dort stoppt oder fällt der Splitter zusammen. Das sollte auch mit einem minheight Attribut, das kleiner als die wirkliche Höhe ist, möglich sein. (Jedoch funktioniert der Überlauf tatsächlich wegen Bug 513597  nur beim Festlegen von minheight und minwidth Attributen oder bei einer Angabe von min-height oder min-width über CSS).

-

Verwandte Themen

-

TBD

diff --git a/files/de/archive/mozilla/xul/style/index.html b/files/de/archive/mozilla/xul/style/index.html deleted file mode 100644 index 74732b6e00..0000000000 --- a/files/de/archive/mozilla/xul/style/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Style Klassen -slug: Archive/Mozilla/XUL/Style -tags: - - XUL Referenz - - XUL Style -translation_of: Archive/Mozilla/XUL/Style ---- -

« Startseite XUL Referenz

- diff --git a/files/de/archive/mozilla/xul/style/treecol-image/index.html b/files/de/archive/mozilla/xul/style/treecol-image/index.html deleted file mode 100644 index d7be7f7df7..0000000000 --- a/files/de/archive/mozilla/xul/style/treecol-image/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: treecol-image -slug: Archive/Mozilla/XUL/Style/treecol-image -tags: - - XUL Referenz - - XUL Style -translation_of: Archive/Mozilla/XUL/Style/treecol-image ---- -
« Startseite XUL Referenz
-
treecol-image
Um ein Bild als Kopf der Baumspalte anzuzeigen, wird diese Klasse benutzt. Das Bild selbst wird über das Attribut src angegeben.
-
-
-
diff --git a/files/de/archive/mozilla/xul/tab/index.html b/files/de/archive/mozilla/xul/tab/index.html deleted file mode 100644 index 6c0f5831d0..0000000000 --- a/files/de/archive/mozilla/xul/tab/index.html +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: tab -slug: Archive/Mozilla/XUL/tab -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/tab ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Steht für einen einzelnen Reiter innerhalb eines tabs-Elements. Der Benutzer kann den Reiter klicken, um die Seite in den Vordergrund zu holen, die zu der tabbox gehört.

-

Weitere Informationen im XUL Tutorial.

-
Attribute
accesskey, afterselected, beforeselected, command, crop, disabled, first-tab, image, label, last-tab, linkedpanel, oncommand, pinned, selected, tabindex, validate, value
-
-
Eigenschaften
accessKey, accessibleType, command, control, crop, disabled, image, label, linkedPanel, selected, tabIndex, value
-
-

Beispiele

-

(Beispiel benötigt)

-

Attribute

-

- -
accesskey
Typ: character
Dem Attribut wird der Buchstabe zugewiesen, der als Tastenkürzel für das Element dienen soll. Dieser Buchstabe sollte sinnvollerweise innerhalb des Textes des Attributs label des Elements vorkommen.
-
- -
- - -
-
afterselected
-
Type: boolean
-
This is set to true if the tab is immediately after the currently selected tab. This is automatically set when needed and you shouldn't adjust it manually. This is primarily useful for themes so that they can adjust the appearance of the area around the selected tab.
-
-
- - -
-
beforeselected
-
Type: boolean
-
This is set to true if the tab is immediately before the currently selected tab. This is set automatically set when needed and you shouldn't adjust it manually. This is primarily useful for themes so that they can adjust the appearance of the area around the selected tab.
-
-
- -
-
- crop
-
- Type: one of the values below
-
- If the label of the element is too big to fit in its given space, the text will be cropped on the side specified by the crop attribute. An ellipsis will be used in place of the cropped text. If the box direction is reversed, the cropping is reversed.
-
-
-
- start
-
- The text will be cropped on its left side in left-to-right text locales, and the right side in right-to-left locales.
-
- end
-
- The text will be cropped on its right side in left-to-right text locales, and the right side in right-to-left locales.
-
- left
-
- The text will be cropped on its left side.
-
- right
-
- The text will be cropped on its right side.
-
- center
-
- The text will be cropped in the middle, showing both the start and end of the text normally.
-
- none
-
- The text will be not be cropped using an ellipsis. However, the text will simply be cut off if it is too large. The side depends on the CSS text alignment.
-
-
-
- Depending on the platform and theme being used, some elements will have set a maximum width so they will always appear cropped. If you wish to use the value none and the displayed text is larger than this maximum width, you may be able to use the max-width CSS property (or the maxwidth attribute) to override this size. For example, for a menuitem in a menu you can add the following CSS rule when you want to use the value none:
-
-
menupopup > menuitem, menupopup > menu { max-width: none; }
-
-
-
-
- -
disabled
Typ: boolean
Kennzeichnet, ob ein Element deaktiviert ist oder nicht. Wenn das Element auf  true gesetzt ist, ist das Element deaktiviert. Deaktivierte Elemente sind gewöhnlich mit einem grauen Text dargestellt. Wenn ein Element deaktiviert ist, wird es auf Anwenderaktionen nicht reagieren, es kann den Fokus nicht erlangen und das command Ereignis wird nicht ausgelöst. Das Element wird allerdings noch auf Mausereignisse antworten. Um das Element zu aktivieren, ist es besser das Attribut zu entfernen als es auf den Wert false zu setzen. Um den Wert dieses Attributs mittels JavaScript zu setzen oder abzurufen, sollte besser die disabled Eigenschaft verwendet werden.
-
- - -
- - -
-
first-tab
-
Type: boolean
-
This attribute will be set to true for the first tab. This attribute should not be set manually, but is useful in a theme if the first tab should be styled differently.
-
-
- -
-
image
-
Type: URI
-
The URI of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir and orient attributes.
-
- - - -
- -
label
Typ: string
Die Beschriftung für das Element. Wird das Attribut nicht angegeben, so erscheint auch kein Beschriftungstext.
-
- -
- - -
-
last-tab
-
Type: boolean
-
This attribute will be set to true for the last tab. This attribute should not be set manually, but is useful in a theme if the last tab should be styled differently.
-
-
- - -
-
linkedpanel
-
Type: id
-
The id of the linked tabpanel element that will be displayed when the tab is selected. If this attribute is not used, the tab will be connected to the panel at the corresponding index in the tabpanels element that the tab is in its tabs container. However, if this attribute is used, this behavior is overridden, and the tab will always be linked to a specific panel. This might be used to avoid duplication by linking several tabs to one panel with slight differences to the content adjusted in the select event.
-
-
- - -
-
oncommand
-
Type: script code
-
This event handler is called when the command is activated. This occurs when a user selects a menu item or presses a keyboard shortcut attached to the command.
-
- - -
- -
pinned
Type: boolean
This attribute is set to true if the tab has been pinned (that is, if it's an app tab). The tabbrowser element's pinTab and unpinTab methods handle pinning and unpinning tabs.
-
-
- - -
-
selected
-
Type: boolean
-
This attribute is set to true if the tab is selected by default.
-
- - -
- - -
-
tabindex
-
Type: integer
-
The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.
-
-
- - -
-
validate
-
Type: one of the values below
-
This attribute indicates whether to load the image from the cache or not. This would be useful if the images are stored remotely or you plan on swapping the image frequently. The following values are accepted, or leave out the attribute entirely for default handling:
-
-
-
always
-
The image is always checked to see whether it should be reloaded.
-
never
-
The image will be loaded from the cache if possible.
-
-
-
-
-

Eigenschaften

-

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Probleme

-

In Versionen vor Gecko 1.9 (Firefox 3.0) ist es nicht möglich, einen Reiter außer Kraft zu setzen. Der Reiter wird zwar "grau" dargestellt, akzeptiert jedoch Ereignisse. Dieses Verhalten wurde in Firefox 3 behoben.

-

Des weiteren führt ein Wiederanzeigen eines Reiters nach dem Verstecken zu einer unvorhersehbaren Anordnung der Reiter. Siehe Bug 307088 und Bug 261826. (Es empfiehlt sich collapsed statt hidden zu verwenden)

-

Verwandte Themen

-
Elemente
tabbox, tabs, tabpanels, tabpanel.
Schnittstellen
nsIAccessibleProvider, nsIDOMXULSelectControlItemElement
-
diff --git a/files/de/archive/mozilla/xul/tabbox/index.html b/files/de/archive/mozilla/xul/tabbox/index.html deleted file mode 100644 index 29c5cf9dab..0000000000 --- a/files/de/archive/mozilla/xul/tabbox/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: tabbox -slug: Archive/Mozilla/XUL/tabbox -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/tabbox ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein Behälter für die Anzeige von Seiten mit Karteikarten/-reitern. Das Element tabbox sollte zwei Kindelemente enthalten. Als erstes ein tabs Element, welches je Reiter ein tab Element enthält und als zweites ein tabpanels Element, welches den Inhalt der Seiten aufnimmt.

-

Weitere Informationen im XUL Tutorial.

-
Attribute
eventnode, handleCtrlPageUpDown, handleCtrlTab
-
-
Eigenschaften
accessibleType, eventNode, handleCtrlPageUpDown, handleCtrlTab, selectedIndex, selectedPanel, selectedTab, tabs, tabpanels
-
-

Beispiele

-
<tabbox id="myTabList" selectedIndex="2">
-  <tabs>
-    <tab label="Erster Reiter"/>
-    <tab label="Zweiter Reiter"/>
-    <tab label="Weiterer Reiter"/>
-    <tab label="Letzter Reiter"/>
-  </tabs>
-  <tabpanels>
-    <tabpanel><!-- tabpanel Erste Elemente hierher --></tabpanel>
-    <tabpanel><!-- tabpanel Zweite Elemente hierher --></tabpanel>
-    <tabpanel><button label="Klick mich"/></tabpanel>
-    <tabpanel><!-- tabpanel Vierte Elemente hierher --></tabpanel>
-  </tabpanels>
-</tabbox>
-
-

Image:XUL_REF_tabboxes.gif

-

Attribute

-

- - -
-
eventnode
-
Type: one of the values below
-
Indicates where keyboard navigation events are listened to. If this attribute is not specified, events are listened to from the tabbox. Thus, if this attribute is not used, the tabbox or an element inside it must have the focus for the keyboard navigation to apply.
-
-
-
parent
-
Keyboard navigation is captured at the parent of the tabbox.
-
window
-
Keyboard navigation is captured at the window level. Tab navigation will occur as long as any element in the window is focused.
-
document
-
Keyboard navigation is captured at the document level. Tab navigation will occur as long as any element in the document is focused.
-
-
-
-
- -
- - -
-
handleCtrlTab
-
Type: boolean
-
If set to true or omitted, the tabbox will switch to the next tab when the Control and Tab keys are pressed. If the Shift key is also held down, the previous tab will be displayed. If this attribute is set to false, these keys do not navigate between tabs.
-
-
-

Eigenschaften

-

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandt

-
Elemente
tabs, tab, tabpanels, tabpanel.
-
diff --git a/files/de/archive/mozilla/xul/tabpanels/index.html b/files/de/archive/mozilla/xul/tabpanels/index.html deleted file mode 100644 index 8c58b9b082..0000000000 --- a/files/de/archive/mozilla/xul/tabpanels/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: tabpanels -slug: Archive/Mozilla/XUL/tabpanels -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/tabpanels ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein Container, der Seiten in Form von tabbox Elementen enthält. Das tabpanels Element sollte in einer tabbox platziert sein, es muss aber nicht unbedingt ein direktes Kindelement sein. Die Kindelemente des tabpanels Elements werden zu Panels des tabbox Elements. In den meisten Fällen würde ein vbox Element benutzt werden, aber es kann jedes Element verwendet werden, wobei die meisten Autoren am Liebsten das tabpanel Element gebrauchen. Wenn auf den ersten Tag geklickt wird, wird dieser angezeigt. Wenn auf den zweiten Tab geklickt wird, wird dieser angezeigt und so weiter. Es sollte die selbe Anzahl an Panels vorhanden sein wie Tabs. Panels sollten niemals versteckt sein, denn das bedeutet, dass das Panel unzugänglich ist.

-

Weitere Informationen sind im XUL Tutorial verfügbar.

-
Attribute
selectedIndex
-
-
Eigenschaften
selectedIndex, selectedPanel
-
-

Beispiele

-

(Beispiel benötigt)

-

Attribute

-
- - -
-
selectedIndex
-
Type: integer
-
Gets and sets the index of the currently selected panel. The first item is at index 0.
-
-
- - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

-

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandte Themen

-
Elemente
tabbox, tabs, tab, tabpanel.
-
diff --git a/files/de/archive/mozilla/xul/tabs/index.html b/files/de/archive/mozilla/xul/tabs/index.html deleted file mode 100644 index 21f0853e04..0000000000 --- a/files/de/archive/mozilla/xul/tabs/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: tabs -slug: Archive/Mozilla/XUL/tabs -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/tabs ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Behälter für einzelne Reiter. Ein tabs-Element kann innerhalb einer tabbox benutzt werden und nimmt selbst tab-Elemente auf.

-

Mehr Information im XUL Tutorial.

-
Attribute
closebutton, disableclose, disabled, onclosetab, onnewtab, onselect, setfocus, tabbox, tabindex, tooltiptextnew, value,
-
-
Eigenschaften
accessibleType, disabled, itemCount, selectedIndex, selectedItem, tabIndex, value,
-
-
Methoden
advanceSelectedTab, appendItem, getIndexOfItem, getItemAtIndex, insertItemAt, removeItemAt
-
-

Beispiele

-

(Beispiel benötigt)

-

Attribute

-

- -
-
- closebutton Obsolete since Gecko 1.9.2
-
- Type: boolean
-
- If this attribute is set to true, the tabs row will have a "new tab" button and "close" button on the ends. This feature is used by the tabbrowser to provide the facilities for adding and closing tabs. You can set an image to the "new tab" and "close" buttons by applying them to the tabs-newbutton and tabs-closebutton classes respectively.
-
-
- - -
-
disableclose
-
Type: boolean
-
If this attribute is true the close button will be disabled.
-
-
- -
disabled
Typ: boolean
Kennzeichnet, ob ein Element deaktiviert ist oder nicht. Wenn das Element auf  true gesetzt ist, ist das Element deaktiviert. Deaktivierte Elemente sind gewöhnlich mit einem grauen Text dargestellt. Wenn ein Element deaktiviert ist, wird es auf Anwenderaktionen nicht reagieren, es kann den Fokus nicht erlangen und das command Ereignis wird nicht ausgelöst. Das Element wird allerdings noch auf Mausereignisse antworten. Um das Element zu aktivieren, ist es besser das Attribut zu entfernen als es auf den Wert false zu setzen. Um den Wert dieses Attributs mittels JavaScript zu setzen oder abzurufen, sollte besser die disabled Eigenschaft verwendet werden.
-
- - -
- - -
-
onclosetab
-
Type: script code
-
This script will be called when the close tab button is clicked.
-
-
- - -
-
onnewtab
-
Not in Firefox
-
Type: script code
-
This script will be called when the new tab button is clicked.
-
-
- - -
-
onselect
-
Type: script code
-
This event is sent to the tabs element when this tab is changed.
-
- - -
- - -
-
setfocus
-
Type: boolean
-
If true or omitted, the focus will be given to the first element in the corresponding tabpanel when the tabs are navigated via the keyboard. If this attribute is false, the focus does not change during navigation.
-
- - -
- - -
-
tabindex
-
Type: integer
-
The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.
-
-
- - -
-
tooltiptextnew
-
Not in Firefox
-
Type: string
-
Used to set the text which appears in the tooltip when the user moves the mouse over the new button in the tab row.
-
-
-

Eigenschaften

-

-

Methoden

- - - - - - -
-

Geerbte Methoden
-element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

- -
-

Verwandte Themen

-
Elemente
tabbox, tab, tabpanels, tabpanel.
Schnittstellen
nsIAccessibleProvider, nsIDOMXULSelectControlElement
-
diff --git a/files/de/archive/mozilla/xul/textbox/index.html b/files/de/archive/mozilla/xul/textbox/index.html deleted file mode 100644 index a96f2673d5..0000000000 --- a/files/de/archive/mozilla/xul/textbox/index.html +++ /dev/null @@ -1,334 +0,0 @@ ---- -title: textbox -slug: Archive/Mozilla/XUL/Textbox -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/textbox ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein Eingabefeld, in dem der Benutzer einen Text eingeben kann. Die textbox ist ähnlich wie das HTML input Element. Nur eine Textzeile wird im Standardverhalten angezeigt. Das multiline Attribut kann das Feld auch mit mehreren Zeilen ausstatten.

-

Weitere Informationen sind im XUL Tutorial verfügbar.

-
Attribute
cols, decimalplaces, disabled, emptytext, hidespinbuttons, increment, label, max, maxlength, min, multiline, newlines, onchange, oninput, placeholder, preference, readonly, rows, searchbutton, size, spellcheck, tabindex, timeout, type, value, wrap, wraparound
-
-
Eigenschaften
accessibleType, clickSelectsAll, decimalPlaces, decimalSymbol, defaultValue, disabled, editor, emptyText, increment, inputField, label, max, maxLength, min, placeholder, readOnly, searchButton, selectionEnd, selectionStart, size, spinButtons, tabIndex, textLength, timeout, type, value, valueNumber, wrapAround
-
-
Methoden
decrease, increase, reset, select, setSelectionRange
-
-
Styleklassen
plain
-
-

Besipiele

-
Image:XUL_ref_textbox.png
-
<vbox>
-<label control="your-name" value="Enter your name:"/>
-<textbox id="your-name" value="John"/>
-</vbox>
-
-

Attribute

-

- -
cols
Typ: integer
Stellt die Anzahl an Spalten für mehrzeilige Textboxen dar.
-
- -
- -
decimalplaces
Typ: integer
Die Anzahl an Dezimalstellen, die angezeigt werden sollen. Der Standardwert ist 0, was bedeutet, dass keine Dezimalstellen angezeigt werden. Der Wert infinity kann dazu verwendet werden, keine Begrenzung der Dezimalstellen bei Zahlen anzuzeigen. Hinweis: Dezimalzahlen werden als Floats gespeichert.
-
- -
- -
disabled
Typ: boolean
Kennzeichnet, ob ein Element deaktiviert ist oder nicht. Wenn das Element auf  true gesetzt ist, ist das Element deaktiviert. Deaktivierte Elemente sind gewöhnlich mit einem grauen Text dargestellt. Wenn ein Element deaktiviert ist, wird es auf Anwenderaktionen nicht reagieren, es kann den Fokus nicht erlangen und das command Ereignis wird nicht ausgelöst. Das Element wird allerdings noch auf Mausereignisse antworten. Um das Element zu aktivieren, ist es besser das Attribut zu entfernen als es auf den Wert false zu setzen. Um den Wert dieses Attributs mittels JavaScript zu setzen oder abzurufen, sollte besser die disabled Eigenschaft verwendet werden.
-
- - -
- -
emptytext Unerwünscht Gecko 2
Typ: string
Ein String, der in der Textbox angezeigt wird, falls diese keinen Wert besitzt. Dieses Attribut wurde vom placeholder Attribut in Gecko 2 ersetzt. Der alte Name bleibt zur Kompatibilität bestehen, aber Sie sollten Ihren Code aktualisieren.
-
- -
- -
hidespinbuttons
Typ: boolean
Falls der Wert auf true gesetzt wird, werden keine Buttons mit Pfeilen angezeigt, um den Wert des Feldes anzupassen. Der Wert kann dann ausschließlich per Tastatur eingegeben werden. Standardmäßig ist der Wert false.
-
- -
-
- increment
-
- Type: integer
-
- The amount by which the curpos (for scroll bars) or value (for number boxes and scale) attribute changes when the arrows are clicked(or scales are dragged). The default value is 1.
-
-
- - -
-
label
-
Type: string
-
If present and not empty, this will be exposed to screen readers through the label property.
-
-
- -
-
- Type: integer
-
- The maximum value that the scale or number box may be set to. The default value is 100 for scales and Infinity for number boxes.
-
- -

 

-
- - -
-
maxlength
-
Type: integer
-
The maximum number of characters that the textbox allows to be entered.
-
-
- -
-
- min
-
- Type: integer
-
- The minimum value the control's value may take. The default value is 0.
-
-

 

-
- - -
-
multiline
-
Type: boolean
-
If true, the textbox displays multiple lines. If the user presses Enter, a new line is started. If false, the textbox only allows entry of one line.
-
-
- - -
-
newlines
-
Type: one of the values below
-
How the text box handles pastes with newlines in them.
-
Possible values: -
-
pasteintact
-
Paste newlines unchanged
-
pastetofirst
-
Paste text up to the first newline, dropping the rest of the text
-
replacewithcommas
-
Pastes the text with the newlines replaced with commas
-
replacewithspaces
-
Pastes the text with newlines replaced with spaces
-
strip
-
Pastes the text with the newlines removed
-
stripsurroundingwhitespace
-
Pastes the text with newlines and adjacent whitespace removed
-
-
-
-
- - -
-
onchange
-
Type: script code
-
This event is sent when the value of the textbox is changed. The event is not sent until the focus is moved to another element.
-
- - -
- - -
-
oninput
-
Type: script code
-
This event is sent when a user enters text in a textbox. This event is only called when the text displayed would change, thus it is not called when the user presses non-displayable keys.
-
- - -
- - -
-
preference
-
Type: id
-
Connects the element to a corresponding preference. This attribute only has any effect when used inside a prefwindow. More information is available in the Preferences System article.
-
-
- - -
-
readonly
-
Type: boolean
-
If set to true, then the user cannot change the value of the element. However, the value may still be modified by a script.
-
-
- -
-
- rows
-
- Type: integer
-
- The number of rows to display in the element. If the element contains more than this number of rows, a scrollbar will appear which the user can use to scroll to the other rows. To get the actual number of rows in the element, use the getRowCount method.
-
-
- - -
-
searchbutton
-
Type: boolean
-
If true, the search field will only fire a command event when the user presses the search button or presses the Enter key. Otherwise, the command event is fired whenever the user modifies the value. This attribute only applies to textboxes with the type search.
-
-
- - -
-
size
-
Type: integer
-
The number of characters that can be displayed in the textbox.
-
-
- - -
-
spellcheck
-
Type: boolean
-
If true, spell checking is enabled by default for the text box; if false, spell checking is disabled by default.
-
If not specified, this defaults to false
-
- -

The HTML

- -
-

The spellcheck attribute uses values of true or false (you cannot simply add the spellcheck attribute to a given element):

- -
<!-- spellcheck everything! -->
-<input type="text" spellcheck="true" /><br />
-<textarea spellcheck="true"></textarea>
-<div contenteditable="true" spellcheck="true">I am some content</div>
-
-<!-- spellcheck nothing! -->
-<input type="text" spellcheck="false" /><br />
-<textarea spellcheck="false"></textarea>
-<div contenteditable="true" spellcheck="false">I am some content</div>
- -

You can use spellcheck on INPUTTEXTAREA, and contenteditable elements.  Thespellcheck attribute works well paired with the autocomplete, autocapitalize, and autocorrect attributes too!

- -

Added from David Walsh's article on Spell Check.

-
-
- - -
-
tabindex
-
Type: integer
-
The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.
-
-
- - -
-
timeout
-
Type: integer
-
For autocomplete textboxes, the number of milliseconds before the textbox starts searching for completions. The default is 50 milliseconds. For search textboxes, the number of milliseconds before the timer fires a command event. The default is 500 milliseconds. For timed textboxes, the number of milliseconds before the timer fires a command event. There is no default. The timer starts after the user types a character. If the user types another character, the timer resets.
-
-
- - -
-
type
-
Type: one of the values below
-
You can set the type attribute to one of the values below for a more specialized type of textbox. Don't set the type if you wish to use a regular textbox.
-
-
-
autocomplete
-
A textbox that supports autocomplete. For more information about autocomplete textboxes, see the autocomplete documentation (XPFE [Thunderbird/SeaMonkey]) (Firefox)
-
number
-
 A textbox that only allows the user to enter numbers. In addition, arrow buttons appear next to the textbox to let the user step through values. There are several attributes that allow the number textbox to be configured, including decimalplaces, min, max, increment, wraparound, hidespinbuttons, and textbox.value.
-
password
-
A textbox that hides what is typed, used for entering passwords.
-
search
-
 A textbox intended for searching. The command event will fire as the user modifies the value. A listener for the command event should update search results. If the searchbutton attribute is set to true, the command event is only fired if the user presses the search button or presses the Enter key. You may specify grey text to appear when the search box is empty using the emptytext attribute, and a timeout may be set for the command event using the timeout attribute (defaults to 500).
-
timed
-
This textbox will fire a command event after the user types characters and a certain time has passed. The delay is set with the timeout attribute. The command event will fire if the user presses the Enter key. The timed type is deprecated in Gecko 1.9.1 and the search textbox may be used instead.
-
-
-
- - -
- - -
-
value
-
Type: string
-
The default value entered in a textbox. The attribute only holds the default value and is never modified when the user enters text. To get the updated value, use the value property. For number boxes, the default is 0 or the minimum value returned by the min property, whichever is higher.
-
- - -
- - -
-
wrap
-
Type: string
-
Set this attribute to the value off to disable word wrapping in the textbox. If this attribute is not specified, word wrapping is enabled.
-
-
- - -
-
wraparound
-
Type: boolean
-
If true, the value of the number box will wrap around when the maximum or minimum value is exceeded. The minimum and maximum values must both not be infinity.
-
-
-

Eigenschaften

-

- - -
-
placeholder
-
Type: string
-
A string that appears in the textbox when it has no value.
-
-
-

Methoden

-

-

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Styleklassen

-

Folgende Klassen können benutzt werden, um den Stil des Elements zu bestimmen. Statt den Stil des Elements direkt zu ändern, sollten diese Klassen zu Hilfe genommen werden, da sie sich natürlicher in das vom Benutzer gewählte Theme der Benutzeroberfläche einfügen.

-
-
plain
-
This class causes the element to be displayed with no border or margin.
-
-

Hinweise

-

Das maxlength Attribut funktioniert nicht, wenn man im Mehrzeilenmodus ist. Ein Workaround mittels JavaScript und dem onkeypress Eventhandler stellt eine Lösung dar.

-

Das XUL script:

-
<textbox id="pnNote" multiline="true" rows="2" cols="70" onkeypress="return pnCountNoteChars(event);"/>
-
-

Das Javascript:

-
function pnCountNoteChars(evt) {
-    //Erlaube Tasten, die keine Zeichen sind (Entfernen, Backspace etc.)
-    if ((evt.charCode == 0) && (evt.keyCode != 13))
-      return true;
-
-    if(evt.target.value.length < 10) {
-        return true;
-    } else {
-        return false;
-    }
-}
-

Verwandte Themen

-
Schnittstellen
nsIAccessibleProvider, nsIDOMXULTextboxElement
-
diff --git a/files/de/archive/mozilla/xul/treecol/index.html b/files/de/archive/mozilla/xul/treecol/index.html deleted file mode 100644 index dbfeb1c995..0000000000 --- a/files/de/archive/mozilla/xul/treecol/index.html +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: treecol -slug: Archive/Mozilla/XUL/treecol -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/treecol ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Eine Spalte eines tree Elementes. Dieses Element zeigt einen Spaltenkopf an und beinhaltet Informationen über Größe und andere Eingenschaften über die Spalte. Außerdem können splitter Elemente zwischen den einzelnen Spalten gesetzt werden, um Veränderungen an der Spaltengröße zu erlauben. Es sollte immer ein id Attribut für ein treecol Element festgelegt werden, um sicher zu gehen, dass die Spaltenpositionierung richtig angewendet wird.

-

Weitere Informationen finden sich im XUL Tutorial.

-
Attribute
crop, cycler, dragging, editable, fixed, hidden, hideheader, ignoreincolumnpicker, label, primary, sort, sortActive, sortDirection, src, type, width
-
-
Eigenschaften
accessibleType
-
-
Style Klassen
treecol-image
-
-

Beispiele

-
Image:Xul_tree_col_checked.png
-

Dieses Beispiel zeigt eine Checkbox in der ersten Spalte.

-
<tree flex="1" editable="true">
-
-  <treecols>
-    <treecol label="Active" type="checkbox" editable="true"/>
-    <treecol label="Name" flex="1" />
-  </treecols>
-
-  <treechildren>
-    <treeitem>
-      <treerow>
-      	<treecell value="true"/>
-        <treecell label="Alice"/>
-      </treerow>
-    </treeitem>
-    <treeitem>
-      <treerow>
-        <treecell value="false"/>
-        <treecell label="Bob"/>
-      </treerow>
-    </treeitem>
-  </treechildren>
-
-</tree>
-
-

Um die Checkbox auf einigen Plattformen sichtbar zu machen, müssen die folgenden Angaben zum Stylesheet hinzugefügt werden (siehe treecol.type). Bei Firefox 2.x und 3.x, benutzen alle Betriebssysteme außer Mac OS X diese Angaben bereits als Standard. Um Firefox für Mac OS X mit einzubeziehen, sollten diese Angaben auf jeden Fall notiert werden und ein eigenes Checkbox-Bild verwendet werden. Für SeaMonkey auf Mac OS X ist das Bild chrome://global/skin/checkbox/cbox-check.gif jedoch verfügbar.

-
treechildren::-moz-tree-checkbox {
-  /* nicht angewählte Baumzellen. Dieser Deklaration MUSS vor treechildren::-moz-tree-checkbox(checked) erfolgen, sonst führt es zu keinem Effekt.  */
-  list-style-image: none;
-}
-
-treechildren::-moz-tree-checkbox(checked){
-  /* css für angewählte Zellen. cbox-check.gif ist in Firefox 1, 2, und 3 auf Mac OS X nicht verfügbar, es sollte also eine URL auf ein Bild in der Erweiterung oder woanders festgelegt werden. */
-  list-style-image: url("chrome://global/skin/checkbox/cbox-check.gif");
-}
-
-

Attribute

-

- -
-
- crop
-
- Type: one of the values below
-
- If the label of the element is too big to fit in its given space, the text will be cropped on the side specified by the crop attribute. An ellipsis will be used in place of the cropped text. If the box direction is reversed, the cropping is reversed.
-
-
-
- start
-
- The text will be cropped on its left side in left-to-right text locales, and the right side in right-to-left locales.
-
- end
-
- The text will be cropped on its right side in left-to-right text locales, and the right side in right-to-left locales.
-
- left
-
- The text will be cropped on its left side.
-
- right
-
- The text will be cropped on its right side.
-
- center
-
- The text will be cropped in the middle, showing both the start and end of the text normally.
-
- none
-
- The text will be not be cropped using an ellipsis. However, the text will simply be cut off if it is too large. The side depends on the CSS text alignment.
-
-
-
- Depending on the platform and theme being used, some elements will have set a maximum width so they will always appear cropped. If you wish to use the value none and the displayed text is larger than this maximum width, you may be able to use the max-width CSS property (or the maxwidth attribute) to override this size. For example, for a menuitem in a menu you can add the following CSS rule when you want to use the value none:
-
-
menupopup > menuitem, menupopup > menu { max-width: none; }
-
-
-
-
- - -
-
cycler
-
Type: boolean
-
If true, then the column is a cycler column. In the case, clicking on a cell in the column will alternate its state between on and off. This is used, for example, in a mail window, for a column that indicates that the message is read or unread with a small mark in the cell. If the cycler attribute is not set, the cell is a regular text cell.
-
-
- - -
-
dragging
-
Type: boolean
-
This attribute will be set to true if the column is being dragged. This attribute is set automatically; you shouldn't adjust it yourself.
-
-
- - -
-
editable
-
Type: boolean
-
Allows the contents of cells in the column to be changed, especially useful when type="checkbox". When the user double-clicks an editable cell, a text field appears in which the user can edit the contents of the cell.
-
- -
-
The tree must also be marked as editable in order for this to work. Individual treecell elements in the column may be marked editable="false" in order to disable editing.
-
-
- - -
-
fixed
-
Type: boolean
-
If true, the size of the column in the tree cannot be adjusted by the user. Any splitter to either side will resize those columns while keeping the fixed column at a constant size. If false or not specified, the user can adjust the size of the column, typically by dragging the column header with the mouse.
-
-
- - -
-
hidden
-
Type: boolean
-
If set to true, the element is not displayed. This is similar to setting the CSS display property to 'none'.
-
- - -
- - -
-
hideheader
-
Type: boolean
-
Set this to true to indicate that the tree column header should be displayed without any column header styling. If you don't set a label for that column either, the header is not displayed at all.
-
-
- - -
-
ignoreincolumnpicker
-
Type: boolean
-
If true, the column does not appear in the column picker.
-
-
- -
label
Typ: string
Die Beschriftung für das Element. Wird das Attribut nicht angegeben, so erscheint auch kein Beschriftungstext.
-
- -
- - -
-
primary
-
Type: boolean
-
If set to true, the treecol will have indentation and twisties drawn to the left of it to indicate the hierarchy level of the rows. If no column has the primary attribute set to true, the tree may still contain nested rows, although no indication will be given to the user.  The attribute also controls whether the column picker allows the user to deselect this column.
-
-
- - -
-
sort
-
Type: URI or XML attribute
-
Set this to a RDF property or XML attribute to have the data in the column sorted based on that property. The property will usually be the same as that of the cell label.
-
-
- - -
-
sortActive
-
Type: boolean
-
This should be set to true for the column which should be sorted by default.
-
-
- - -
-
sortDirection
-
Type: one of the values below
-
Set this attribute to set the direction that template-generated content is sorted. Use the sortResource attribute to specify the sort key. -
-
ascending
-
The data is sorted in ascending order.
-
descending
-
The data is sorted in descending order.
-
natural
-
The data is sorted in natural order, which means the order that it is stored in.
-
-
-
-
- -
src
Typ: Bild-URL
Um für das treecol Element ein Bild für den Kopf, statt eines label Attribut zu benutzen, kann dieses Attribut gesetzt werden. Im Kopf können nicht gleichzeitig Bild und Beschriftung angezeigt werden. Die URL eines Bildes, das als Spaltenkopf des Baums angezeigt wird, kann mit diesem Attribut festgelegt werden. Wird das Attribut nicht angegeben, erscheint kein Bild und es wird stattdessen die Beschriftung angezeigt. Damit das Bild erscheint, muss die Klasse treecol-image für das treecol Element gesetzt werden. Ein label sollte dennoch für die Benutzung im Spaltenwähler angegeben werden, falls ignoreincolumnpicker nicht true ist und hidecolumnpicker für den tree ebenfalls nicht true ist .
-
- -
- - -
-
type
-
Type: one of the values below
-
The type of tree column. The default is a text column that displays the content as text.
-
-
-
checkbox
-
The content of the columns are checkboxes.
-
progressmeter
-
The content of the columns are a progress meters. This is used in Mozilla's download manager window.
-
text
-
The content of the columns is text.
-
-
-
- - -
- - -
-
width
-
Type: string (representing an integer)
-
The preferred width of the tree column. The value should not include a unit as all values are in pixels. Specifying widths for your columns causes Gecko to allow the tree to be scrolled horizontally if it is wider than the available space.
-
-
-

Eigenschaften

-
-

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Style Klassen

-

Die folgenden Style Klassen können verwendet werden, um das Aussehen des Elementes zu verändern. Diese Klasse sollte verwendet werden, anstatt das Aussehen des Elementes direkt zu verändern, damit es dann besser mit dem, vom Benutzer gewählten, Theme zusammenarbeiten kann.

-
treecol-image
Um ein Bild als Kopf der Baumspalte anzuzeigen, wird diese Klasse benutzt. Das Bild selbst wird über das Attribut src angegeben.
-
-

Verwandte Themen

-
Elemente
tree, treecols, treechildren, treeitem, treerow, treecell und treeseparator.
Schnittstellen
nsIAccessibleProvider
-
diff --git a/files/de/archive/mozilla/xul/vbox/index.html b/files/de/archive/mozilla/xul/vbox/index.html deleted file mode 100644 index d45736c02a..0000000000 --- a/files/de/archive/mozilla/xul/vbox/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: vbox -slug: Archive/Mozilla/XUL/vbox -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/vbox ---- -
- - « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Ein Behälterelement, das eine gewünschte Anzahl von Kindelementen enthalten kann. Gleichwertig zum Element box, mit dem Unterschied, dass die Ausrichtung per Vorgabe vertikal ist.

-

Mehr Information im XUL Tutorial.

-

Beispiel

-
<!-- Zwei Beschriftungen am unteren Rand -->
-<vbox>
-  <spacer flex="1"/>
-  <label value="Eins"/>
-  <label value="Zwei"/>
-</vbox>
-
-

Attribute

- - - - - - -

Geerbt von XUL-Element
-align, -allowevents, -allownegativeassertions, -class, -coalesceduplicatearcs, -collapsed, -container, -containment, -context, -contextmenu, -datasources, -dir, -empty, -equalsize, -flags, -flex, -height, -hidden, -id, -insertafter, -insertbefore, -left, -maxheight, -maxwidth, -menu, -minheight, -minwidth, -mousethrough, -observes, -ordinal, -orient, -pack, -persist, -popup, -position, -preference-editable, -querytype, -ref, -removeelement, -sortDirection, -sortResource, -sortResource2, -statustext, -style, -template, -tooltip, -tooltiptext, -top, -uri, -wait-cursor, -width

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Verwandte Themen

-
-
- Elemente
-
- box, hbox
-
diff --git a/files/de/archive/mozilla/xul/window/index.html b/files/de/archive/mozilla/xul/window/index.html deleted file mode 100644 index 8dfd0cb192..0000000000 --- a/files/de/archive/mozilla/xul/window/index.html +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: window -slug: Archive/Mozilla/XUL/Window -tags: - - XUL Elemente - - XUL Referenz -translation_of: Archive/Mozilla/XUL/window ---- -
- « XUL Referenz Startseite [ - Beispiele | - Attribute | - Eigenschaften | - Methoden | - Verwandte Themen ] -
-

Beschreibt die Struktur eines Fensters. Dieses Element ist der Wurzelknoten eines XUL Dokuments. Das Fenster ist standardmäßig eine horizontal ausgerichtete Box und daher können alle box Attribute verwendet werden. Per Voreinstellung liegt um das Fenster ein plattform-spezifischer Rahmen.

-

Um ein Icon für das Fenster festzulegen, muss eine plattform-spezifische Icon-Datei <windowid>.ico und/oder <windowid>.xpm erstellt und in das <mozilla-verzeichnis>/chrome/icons/default/ Verzeichnis platziert oder installiert werden. Die <windowid> ist der Wert des id Attributs des Fensters. Dadurch wird für jedes Fenster ein unterschiedliches Icon ermöglicht.

-

Ohne die CSS Datei unter "chrome://global/skin/" einzubinden, wird das Fenster nicht durch CSS formatiert, unsichtbar und funktioniert nicht einwandfrei, wenn es als Dialog geöffnet wird.

-

Weitere Informationen sind im XUL Tutorial verfügbar.

-
Attribute
accelerated, drawintitlebar, height, hidechrome, id, lightweightthemes, lightweightthemesfooter, screenX, screenY, sizemode, title, width, windowtype
-
-

Beispiele

-
<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-<!-- Extremely recommended to keep this css include!! -->
-<window id="rootWnd" title="Register Online!"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-  <vbox>
-    <hbox>
-      <image src="application_form.png"/>
-      <description>Register Online!</description>
-    </hbox>
-    <groupbox align="start">
-      <caption label="Your Information"/>
-      <radiogroup>
-        <vbox>
-          <hbox>
-            <label control="your-fname" value="Enter first name:"/>
-            <textbox id="your-fname" value="Johan"/>
-          </hbox>
-          <hbox>
-            <label control="your-lname" value="Enter last name:"/>
-            <textbox id="your-lname" value="Hernandez"/>
-          </hbox>
-          <hbox>
-            <button oncommand="alert('save!')">
-              <description>Save</description>
-            </button>
-          </hbox>
-        </vbox>
-      </radiogroup>
-    </groupbox>
-  </vbox>
-</window>
-
-

Attribute

-

-
accelerated
Type: boolean
Set this attribute to true to allow hardware layer managers to accelerate the window.
-
- -
activetitlebarcolor
Typ: color string
Bestimmt die Hintergrundfarbe der Titelleiste eines Fensters, wenn es aktiv ist (Vordergrund). Außerdem versteckt dies die Trennlinie zwischen Titelleiste und Fensterinhalt. Dies trifft nur auf Mac OS Systeme zu.
-
- -
- -
drawintitlebar
Type: boolean
If this attribute is true, the top of the window's content area will begin at the top edge of the title bar, instead of below the title bar. This allows the window to draw in the title bar. This is supported only from window elements, and is ignored on platforms that don't support drawing into the title bar.
-
-
- - -
-
height
-
Type: string (representing an integer)
-
The preferred height of the element in pixels. The actual displayed height may be different if the element or its contents have a minimum or maximum height. The CSS height property may also be used.
-
-
- - -
-
hidechrome
-
Type: boolean
-
Set this attribute to true to have the chrome including the titlebar hidden.
-
-
- - -
-
id
-
Type: unique id
-
A unique identifier so that you can identify the element with. You can use this as a parameter to getElementById() and other DOM functions and to reference the element in style sheets.
-
- - -
- - -
-
inactivetitlebarcolor
-
Type: color string
-
Specify background color of the window's titlebar when it is inactive (background). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.
-
-
- -
lightweightthemes
Type: boolean
true if the window supports lightweight themes, otherwise false.
-
-
- -
lightweightthemesfooter
Type: id
Specifies the ID of an element to which a lightweight theme's footer image will be applied.
-
-
- - -
-
screenX
-
Type: integer
-
The horizontal position at which the window appears on the screen.
-
-
- - -
-
screenY
-
Type: integer
-
The vertical position at which the window appears on the screen.
-
-
- - -
-
sizemode
-
Type: one of the values below
-
The state of the window. It can have one of the following values:
-
-
-
maximized
-
The window is maximized, and occupies the full size of the screen.
-
normal
-
The window appears in a normal state at the desired size.
-
-
-
- -

This attribute is used to save and restore the state of a window (together with the persist attribute) and for CSS styles (e.g. to hide the resizer grippy on maximized windows).

- -
Note: When a window is minimized, the sizemode attribute is not updated. This is done so that if a window is closed while minimized, its persisted sizemode attribute wouldn't be minimized.
- -

Setting this attribute does not change the window state. Use window.maximize(), window.restore(), or window.minimize() to change the window state.

- -

To get the window state from JavaScript code, use window.windowState. Listen to the sizemodechange event dispatched to the DOM window to get notified when the window state changes.

- - -
- - -
-
title
-
Type: string
-
The text to appear in the title bar of the window.
-
-
- - -
-
width
-
Type: string (representing an integer)
-
The preferred width of the element. The value should not include a unit as all values are in pixels. The actual displayed width may be different if the element or its contents have a minimum or maximum width, or the size is adjusted by the flexibility or alignment of its parent. The CSS width property may also be used.
-
- - -
- -
-
- windowtype
-
- Type: string
-
- Set to a string which can be used to identify the type of window. This might be used, for example, to distinguish between a browser window and an editor window. Some of Mozilla's window handling functions use this attribute to group windows of the same type together.
-
-
-

Values for window type as found on MXR: http://mxr.mozilla.org/mozilla-release/search?string=windowtype

-

navigator:browser - Looks like if window has gBrowser it has this window type

-

devtools:scratchpad - Scratchpad windows

-

navigator:view-source - The view source windows

-
- -

 

-
-

Eigenschaften

- -

Geerbte Eigenschaften
align, , allowEvents, , boxObject, builder, , , , className, , , , , collapsed, contextMenu, controllers, database, datasources, dir, , , flex, height, hidden, id, , , left, , maxHeight, maxWidth, menu, minHeight, minWidth, , , , , , , observes, ordinal, orient, , pack, , persist, , , , ref, resource, , , , , statusText, style, ,, tooltip, tooltipText, top, width

-

Methoden

- -

Geerbte Methoden
element.addEventListener(), node.appendChild(), blur, click, node.cloneNode(), node.compareDocumentPosition(), element.dispatchEvent(), doCommand, focus, element.getAttribute(), element.getAttributeNode(), element.getAttributeNodeNS(), element.getAttributeNS(), element.getBoundingClientRect(), element.getClientRects(), getElementsByAttribute, getElementsByAttributeNS, element.getElementsByClassName(), element.getElementsByTagName(), element.getElementsByTagNameNS(), node.getFeature(), node.getUserData(), element.hasAttribute(), element.hasAttributeNS(), nodes.hasAttributes(), nodes.hasChildNodes(), node.insertBefore(), node.isDefaultNamespace(), node.isEqualNode(), node.isSameNode(), node.isSupported(), node.lookupNamespaceURI(), node.lookupPrefix(), node.normalize(), element.querySelector(), element.querySelectorAll(), element.removeAttribute(), element.removeAttributeNode(), element.removeAttributeNS(), node.removeChild(), element.removeEventListener(), node.replaceChild(), element.setAttribute(), element.setAttributeNode(), element.setAttributeNodeNS(), element.setAttributeNS(), node.setUserData()

-

Hinweise

-

Die Fehlermeldung "XML Parsing Error: undefined entity...<window" kann durch eine fehlende oder nicht erreichbare DTD Datei, die in der XUL Datei angegeben wurde, verursacht werden. Ein Dateiname mit einem SYSTEM Schlüsselwort in einer DOCTYPE Deklaration kann unter Umständen auch nicht geladen werden, ohne dass eine solche Fehlermeldung ausgegeben wird. In diesem Fall kann die Fehlermeldung ein nicht definierter Entity Fehler am nächsten XUL Element sein.

-

Verwandte Themen

-
Elemente
prefwindow, dialog, dialogheader
-
-
Fenster in Chrome

Benutzerhinweise

Um das Icon der Fenstertitelleiste zu ändern siehe: Fenster Icons.

Um ein Favicon zur Adressleiste und zum Tab hinzufügen, kann der folgende Codeschnipsel verwendet werden.

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-	xmlns:html="http://www.w3.org/1999/xhtml">
-
-<!-- Icon from chrome -->
-<html:link rel="icon" href="chrome://myExtension/content/path/to/favicon.png"/>
-
-<!-- From a remote site -->
-<html:link rel="icon" href="http://www.mozilla.org/favicon.ico"/>
-
diff --git a/files/de/archive/mozilla/xul/xul_referenz/index.html b/files/de/archive/mozilla/xul/xul_referenz/index.html deleted file mode 100644 index b92aa1361e..0000000000 --- a/files/de/archive/mozilla/xul/xul_referenz/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: XUL Referenz -slug: Archive/Mozilla/XUL/XUL_Referenz -tags: - - XUL - - XUL Referenz -translation_of: Archive/Mozilla/XUL/XUL_Reference ---- -

« XUL Referenz «

-

Alphabetische Liste aller XUL Elemente

-
  1. action
  2. arrowscrollbox
  3. assign
  4. bbox
  5. binding
  6. bindings
  7. box
  8. broadcaster
  9. broadcasterset
  10. button
  11. browser
  12. checkbox
  13. caption
  14. colorpicker
  15. column
  16. columns
  17. commandset
  18. command
  19. conditions
  20. content
  21. datepicker
  22. deck
  23. description
  24. dialog
  25. dialogheader
  26. dropmarker
  27. editor
  28. grid
  29. grippy
  30. groupbox
  31. hbox
  32. iframe
  33. image
  34. key
  35. keyset
  36. label
  37. listbox
  38. listcell
  39. listcol
  40. listcols
  41. listhead
  42. listheader
  43. listitem
  44. member
  45. menu
  46. menubar
  47. menuitem
  48. menulist
  49. menupopup
  50. menuseparator
  51. notification
  52. notificationbox
  53. observes
  54. overlay
  55. page
  56. panel
  57. param
  58. popupset
  59. preference
  60. preferences
  61. prefpane
  62. prefwindow
  63. progressmeter
  64. query
  65. queryset
  66. radio
  67. radiogroup
  68. resizer
  69. richlistbox
  70. richlistitem
  71. row
  72. rows
  73. rule
  74. scale
  75. script
  76. scrollbar
  77. scrollbox
  78. scrollcorner
  79. separator
  80. spacer
  81. spinbuttons
  82. splitter
  83. stack
  84. statusbar
  85. statusbarpanel
  86. stringbundle
  87. stringbundleset
  88. tab
  89. tabbrowser (Firefox-only ab Firefox 3/Gecko 1.9)
  90. tabbox
  91. tabpanel
  92. tabpanels
  93. tabs
  94. template
  95. textnode
  96. textbox
  97. textbox (Firefox autocomplete)
  98. textbox (Mozilla autocomplete)
  99. timepicker
  100. titlebar
  101. toolbar
  102. toolbarbutton
  103. toolbargrippy
  104. toolbaritem
  105. toolbarpalette
  106. toolbarseparator
  107. toolbarset
  108. toolbarspacer
  109. toolbarspring
  110. toolbox
  111. tooltip
  112. tree
  113. treecell
  114. treechildren
  115. treecol
  116. treecols
  117. treeitem
  118. treerow
  119. treeseparator
  120. triple
  121. vbox
  122. where
  123. window
  124. wizard
  125. wizardpage
  126. -
-

Kategorische Liste aller XUL Elemente

-

« XUL Referenz «

-

    Fenster

    1. dialog
    2. overlay
    3. page
    4. window
    5. wizard
    6. wizardpage
    7. preference
    8. preferences
    9. prefpane
    10. prefwindow

    Fensterstrukturen

    1. browser
    2. tabbrowser
    3. editor
    4. iframe
    5. titlebar
    6. resizer
    7. statusbar
    8. statusbarpanel
    9. dialogheader
    10. notification
    11. notificationbox

    Menüs und Popups

    1. menubar
    2. menu
    3. menuitem
    4. menuseparator
    5. menupopup
    6. panel
    7. tooltip
    8. popupset

    Toolbars

    1. toolbar
    2. toolbarbutton
    3. toolbargrippy
    4. toolbaritem
    5. toolbarpalette
    6. toolbarseparator
    7. toolbarset
    8. toolbarspacer
    9. toolbarspring
    10. toolbox

    Tabs und Gruppierungen

    1. tabbox
    2. tabs
    3. tab
    4. tabpanels
    5. tabpanel
    6. groupbox
    7. caption
    8. separator
    9. spacer

    Kontrollelemente

    1. button
    2. checkbox
    3. colorpicker
    4. datepicker
    5. menulist
    6. progressmeter
    7. radio
    8. radiogroup
    9. scale
    10. splitter
    11. textbox
    12. textbox (Firefox autocomplete)
    13. textbox (Mozilla autocomplete)
    14. timepicker

    Text und Bilder

    1. description
    2. label
    3. image

    Listen

    1. listbox
    2. listitem
    3. listcell
    4. listcol
    5. listcols
    6. listhead
    7. listheader
    8. richlistbox
    9. richlistitem

    Trees

    1. tree
    2. treecell
    3. treechildren
    4. treecol
    5. treecols
    6. treeitem
    7. treerow
    8. treeseparator

    Layout

    1. box
    2. hbox
    3. vbox
    4. bbox
    5. deck
    6. stack
    7. grid
    8. columns
    9. column
    10. rows
    11. row
    12. scrollbox

    Templates

    1. action
    2. assign
    3. binding
    4. bindings
    5. conditions
    6. content
    7. member
    8. param
    9. query
    10. queryset
    11. rule
    12. template
    13. textnode
    14. triple
    15. where

    Scripting

    1. script
    2. commandset
    3. command
    4. broadcaster
    5. broadcasterset
    6. observes
    7. key
    8. keyset
    9. stringbundle
    10. stringbundleset

    Hilfselemente

    1. arrowscrollbox
    2. dropmarker
    3. grippy
    4. scrollbar
    5. scrollcorner
    6. spinbuttons

    Andere XUL Listen

diff --git a/files/de/archive/mozilla/xul/xul_tutorial/die_chrome_url/index.html b/files/de/archive/mozilla/xul/xul_tutorial/die_chrome_url/index.html deleted file mode 100644 index e742e6f280..0000000000 --- a/files/de/archive/mozilla/xul/xul_tutorial/die_chrome_url/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Die Chrome URL -slug: Archive/Mozilla/XUL/XUL_Tutorial/Die_Chrome_URL -tags: - - XUL - - XUL Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial/The_Chrome_URL ---- -

{{ PreviousNext("XUL_Tutorial/XUL_Struktur", "XUL_Tutorial/Manifest_Dateien") }}

-

Der folgende Abschnitt beschreibt wie man Bezug zu weiteren XUL-Dokumenten und Chrome-Dateien herstellen kann.

-

Die Chrome-URL

-

XUL-Dateien können über eine reguläre HTTP-URL (oder jeder andere Typ einer URL) genau wie HTML-Dateien aufgerufen werden. Pakete, die jedoch in Mozillas chrome-System gespeichert sind, können mit speziellen chrome-URLs aufgerufen werden. Die Pakete, die in Mozilla vorhanden sind, sind bereits installiert und Sie können zudem Ihre eigenen registrieren.

-

Installierte Pakete haben den Vorteil, dass sie über keine Sicherheitsbeschränkungen verfügen, welche für viele Anwendungen von Bedeutung sind. Ein weitere Vorteil gegenüber anderen URL-Typen ist, dass sie automatisch mehrere Themes und Orte handhaben. Eine chrome-URL kann sich auf eine Theme-Datei beziehen, ohne zu wissen, welches Theme überhaupt installiert ist. Da die Dateinamen in allen Themes die gleichen sind, können Sie einfach eine Datei beziehen, die über die chrome-URL angegeben wird. Mozilla bestimmt dann wo die Datei zu finden ist und gibt dann die richtige Datei zurück. Das bedeutet auch, dass es egal ist wo das Paket installiert ist. Die chrome-URLs sind unabhängig davon wo die Dateien tatsächlich liegen. Das vereinfacht es ungemein Anwendungen zu schreiben, die eine Vielzahl von Dateien verwendet und Sie sich keine Gedanken machen brauchen, wo Sie die Dateien speichern.

-

Die grundlegende Schreibweise einer chrome-URL ist die folgende:

-
chrome://<package name>/<part>/<file.xul>
-
-

Der Platzhalter <package name> ist der Paketname, wie z.B. messenger oder editor. Alle Paketnamen sind case-insensitiv, aber Kleinbuchstaben werden bevorzugt. <part> ist entweder 'content', 'skin' oder 'locale', abhängig davon, welchen Teil sie möchten. <file.xul> ist einfach der Dateiname.

-

Beispiel: chrome://messenger/content/messenger.xul

-

Das Beispiel hier bezieht sich auf das Messenger-Fenster. Sie könnten sich auch auf eine Datei beziehen, die Teil eines Skins ist, indem Sie 'content' durch 'skin' ersetzen und den Dateinamen entsprechend ändern. Genauso könnten Sie 'locale' statt 'content' angeben.

-

Wenn Sie eine chrome-URL öffnen, schaut Mozilla durch die Liste der installierten Pakete und versucht eine JAR-Datei oder ein Verzeichnis zu finden, das auf den angeben Paketnamen und <part> zutrifft. Die Zuordnung von chrome-URLs und JAR-Dateien sind in den Manifest-Dateien festgelegt, welche sich im chrome-Verzeichnis befinden. Wenn Sie die messenger.jar-Datei verschieben und die Manifest-Datei entsprechend ändern wird Thunderbird weiterhin funktionieren, denn es ist nicht von einem bestimmten Installationsort abhängig. Indem wir chrome-URLs verwenden lassen wir solche Details Mozilla machen. Auch wenn der Benutzer das verwendete Theme ändert, wird der 'skin'-Teil der chrome-URL in ein anderes Verzeichnis übersetzt und XUL-Dateien und Skripte brauchen nicht geändert zu werden.

-

Hier sind noch ein paar Beispiele. Beachten Sie, dass keine URL ein Theme oder eine Lokalisierung festlegen.

-
chrome://messenger/content/messenger.xul
-chrome://messenger/content/attach.js
-chrome://messenger/skin/icons/folder-inbox.gif
-chrome://messenger/locale/messenger.dtd
-
-

Um auf Unterverzeichnisse zuzugreifen, können Sie diese einfach am Ende der chrome-URL hinzufügen. Die folgenden URLs beziehen sich auf das Lesezeichenfenster, für Mozilla-Suite und Firefox, da der Paketname unterschiedlich ist:

-
chrome://communicator/content/bookma...rksManager.xul (Mozilla)
-chrome://browser/content/bookmarks/b...rksManager.xul (Firefox)
-
-

Sie können chrome-URLs überall verwenden, wo auch normale URLs verwendet werden können. Sie können sie sogar in die Adresszeile des Mozilla Browsers eingeben. Wenn Sie eine der oben genannten URLs eingeben, sollten Sie sehen, dass ein Fenster wie eine Webseite geöffnet wird und so funktioniert wie ein separates Fenster. Einige Dialogboxen funktionieren vielleicht nicht richtig, weil sie eventuelle Argumente erwarten, die ihnen beim Aufrufen nicht übergeben worden sind.

-

Es kommen außerdem auch chrome-URLs ohne Dateinamen vor, zum Beispiel:

-
chrome://browser/content/
-
-

In diesem Fall wurde nur der Paketname und der Teilabschnitt angegeben. Dieser Referenztyp wird automatisch eine passende Datei aus diesem Verzeichnis auswählen. Für content wird eine Datei mit dem selben Namen des Pakets und XUL-Erweiterung ausgewählt. Im obigen Beispiel wird die Datei browser.xul ausgewählt. Für messenger würde messenger.xul ausgewählt werden. Wenn Sie Ihre eigene Anwendung erstellen, möchten Sie vielleicht eine Datei für Ihr Hauptfenster, mit dem selben Namen wie das Paket, erstellen. Dann kann ein Bezug in dieser verkürzten Form hergestellt werden.

-

Bei einem Skin wird die Datei <package name>.css ausgewählt; für eine Lokalisierung wird die Datei <package name>.dtd ausgewählt.

-

Denken Sie daran, dass die chrome-URL sich nicht auf den physikalischen Pfad auf der Festplatte bezieht. Die ersten beiden Stücke der chrome-URL sind der Paketname und der Teilabschnitt (entweder content, skin oder locale).

-

Im nächsten Abschnitt schauen wir uns an, wie wir .manifest-Dateien und Pakete erstellen können.

-

{{ PreviousNext("XUL_Tutorial/XUL_Struktur", "XUL_Tutorial/Manifest_Dateien") }}

diff --git a/files/de/archive/mozilla/xul/xul_tutorial/ein_fenster_erzeugen/index.html b/files/de/archive/mozilla/xul/xul_tutorial/ein_fenster_erzeugen/index.html deleted file mode 100644 index 54c31683a0..0000000000 --- a/files/de/archive/mozilla/xul/xul_tutorial/ein_fenster_erzeugen/index.html +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Ein Fenster erzeugen -slug: Archive/Mozilla/XUL/XUL_Tutorial/Ein_Fenster_erzeugen -tags: - - XUL - - XUL Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial/Creating_a_Window ---- -

{{ PreviousNext("XUL_Tutorial/Manifest_Dateien", "XUL_Tutorial/Buttons_hinzufügen") }}

- -

Zunächst wollen wir uns mit der Syntax einer XUL-Datei beschäftigen.

- -

Eine XUL Datei erstellen

- -

Der Name einer XUL Datei kann frei gewählt werden, es sollte jedoch darauf geachtet werden, dass die Endung .xul verwendet wird. Die einfachste XUL Datei hat folgende Struktur:

- -
<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-
-<window
-    id="findfile-window"
-    title="Find Files"
-    orient="horizontal"
-    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-<!-- Other elements go here -->
-</window>
-
- -

Dieses Fenster wird keine Funktion haben, da es keine weitere UI-Elemete enthält. Diese werden im nächsten Abschnitt hinzugefügt. Der Code wird im folgenden Zeile für Zeile erklärt:

- -
    -
  1. <?xml version="1.0"?>
    - Diese Zeile zeigt, dass dies eine XML Datei ist. Diese Zeile sollte in jeder XUL Datei als erstes stehen.
  2. -
  3. <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
    - Diese Zeile wird gebraucht um festzulegen, welches Style Sheet für diese Datei verwendet wird. Dies ist die Syntax wie XML Dateien Style Sheets importieren. In diesem Fall importieren wir ein Style Sheet welches sich im globalen Teil eines Skins befindet. Wir legen keine spezifische Datei fest, so dass Mozilla selbst entscheidet, welche Datei verwendet werden soll. In diesem Fall wird die Datei global.css verwendet. Diese Datei enthält alle Standard-Deklarationen für jedes XUL Element. Weil XML selbst nicht weiß wie die Elemente dargestellt werden sollten, brauch es diese Datei, welche dies festlegt. Normalerweise wird diese Zeile ebenfalls an den Anfang einer jeden XUL Datei geschrieben. Es können auch andere Style Sheets mit der selben Syntax importiert werden. Das globale Style Sheet wird normalerweise aus dem eigenen Style Sheet importiert.
  4. -
  5. <window
    - Diese Zeile gibt an, dass ein {{ XULElem("window") }} beschrieben wird. Jedes User Interface wird in einer eigenen Datei beschrieben. Dieser Tag ist wie ein HTML Tag welcher ein gesamtes HTML Dokument umfasst, mit dem Unterschied dass hier ein User Interface beschrieben wird. Einige Attribute können im {{ XULElem("window") }} Tag platziert werden, hier sind es vier. In diesem Beispiel wird jedes Attribut in einer eigenen Zeile beschrieben, dies ist jedoch nicht zwingend.
  6. -
  7. id="findfile-window"
    - Das {{ XULAttr("id") }} Attribut wird zur Identifizierung gebraucht, damit später auf das Fenster per Skript zugegriffen werden kann. Im Normalfall sollte ein id Attribut bei allen Elementen vorhanden sein. Der Name kann frei gewählt werden, er sollte jedoch sinnvoll sein.
  8. -
  9. title="Find Files"
    - Das {{ XULAttr("title") }} Attribut beschreibt den Text, welcher in der Titelzeile des Fensters erscheinen soll. In unserem Fall wird es 'Find Files' sein.
  10. -
  11. orient="horizontal"
    - Das {{ XULAttr("orient") }} Attribut beschreibt die Anordnung der Elemente in diesem Fenster. Der Wert horizontal zeigt, dass die Elemente horizontal über dem Fenster verteilt werden. Es kann auch der Wert vertical verwendet werden, welcher meint, dass die Elemente in einer Spalte verteilt werden. Dies ist der Standardwert, das heißt, dass man dieses Attribut weglassen kann, wenn man eine vertikale Ausrichtung möchte.
  12. -
  13. xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> Diese Zeile deklariert den Namensraum für XUL, welcher im Fenster deklariert sein sollte um festzulegen, dass alle Nachfolger XUL sind. Diese URL wird niemals heruntergeladen. Mozilla wird diese URL intern verarbeiten.
  14. -
  15. <!-- Other elements go here -->
    - Ersetze diesen Kommentar Block durch andere Elemente (Buttons, Menüs und andere User Interface Komponenten), welche im Fenster angezeigt werden sollten. Wir werden ein paar von ihnen zu einem späteren Zeitpunkt hinzufügen.
  16. -
  17. </window>
    - Zum Schluss brauchen wir das {{ XULElem("window") }} Tag, um das Ende der Datei anzuzeigen.
  18. -
- -

Ein Fenster öffnen

- -

Um ein XUL Fenster zu öffnen gibt es verschiedene Methoden. Wenn Sie sich nur in der Entwicklungsphase befinden, können Sie einfach die URL ("chrome:", "file:" oder weitere) in die Adresszeile des Browserfensters eingeben. Sie können auch einfach auf einen Doppelklick auf die Datei ausführen, wenn XUL Dateien mit Mozilla verknüpft sind. Das XUL Fenster erscheint im Browserfenster als neues Fenster, aber das ist meistens ungenügend während der Entwicklung.

- -

Der korrekte Weg ist natürlich ein Fenster über JavaScript zu öffnen. Es ist kein neuer Syntax dazu notwendig, denn die window.open() Funktion kann genau wie für HTML Dokumente dazu verwendet werden. Es ist jedoch ein zusätzlicher Parameter "flag" nötig. In diesem Fall muss 'chrome' angeben werden, damit klar ist, dass ein chrome Dokument geöffnet werden soll. Dieses Stück Code wird dafür sorgen, dass ein Fenster ohne Toolbars und Menüs geöffnet wird:

- -
window.open(url,windowname,flags);
- -

wobei "flags" das Schlüsselwort "chrome" wie in diesem Beispiel enthält:

- -
window.open("chrome://navigator/content/navigator.xul", "bmarks", "chrome,width=600,height=300");
-
- -
-

Wenn Sie Firefox verwenden:

- -
window.open("chrome://browser/content/places/places.xul", "bmarks", "chrome,width=600,height=300");
-
- -

Diese Zeile kann auch in der Fehlerkonsole getestet werden. Wählen Sie Extras -> Fehlerkonsole, tippen Sie die Zeile JavaScript ein und drücken Sie auf Evaluieren oder benutzen Sie die Enter-Taste.

- -
Das findfile.xul Beispiel
- -

Fangen wir an die Basisdatei für den Dateisuche-Dialog zu schreiben. Erstellen Sie die Datei findfile.xul und packen Sie diese in das content Verzeichnis, welches von der finndfile.manifest Datei festgelegt wurde (haben wir im vorherigen Abschnitt festgelegt). Fügen Sie die XUL Vorlage von oben zu dieser Datei hinzu und speichern Sie diese ab.

-
- -

Sie können den Kommandozeilenparameter '-chrome' verwenden, um die XUL Datei mit Mozilla zu starten. Wird dies nicht festgelegt, wird das Standardfenster geöffnet (normalerweise das Browserfenster). Wir können zum Beispiel den Dateisuche-Dialog mit einem der folgenden Zeilen öffnen:

- -
mozilla -chrome chrome://findfile/content/findfile.xul
-
-mozilla -chrome resource:/chrome/findfile/content/findfile.xul
-
- -

Wenn Sie einen dieser Kommandos in einer Eingabeaufforderung (angenommen Sie verfügen übere eine auf Ihrem System) eingeben, wird der Dateisuche-Dialog standardmäßig geöffnet, anstatt des normalen Mozilla Browserfensters. Da wir allerdings noch keine UI-Elemente in das Fenster gepackt haben, sehen Sie zunächst nichts. Im nächsten Abschnitt werden wir Elemente hinzufügen.

- -

Um den Effekt dennoch zu beobachten, können Sie mit der folgenden Zeile das Lesezeichenfenster öffnen:

- -
mozilla -chrome chrome://communicator/content/bookmarks/bookmarksManager.xul
- -

Wenn Sie Firefox benutzen:

- -
firefox -chrome chrome://browser/content/places/places.xul
- -

Das '-chrome' Argument gibt der Datei keine gesonderten Rechte. Stattdessen kann es dadurch als Top-level Fenster in jedem Browser angezeigt werden, ohne Adressleiste oder Menüs. Nur chrome: URLs haben diese zusätzlichen Rechte.

- -
Die Erweiterungsentwickler Erweiterung enthält einen XUL Editor, der den eingegebenen XUL-Code in Echtzeit wiedergibt!
- -

Problemlösung

- - - -
 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-
- -

Im nächsten Abschnitt werden wir ein paar Buttons zum Fenster hinzufügen.

- -

{{ PreviousNext("XUL_Tutorial/Manifest_Dateien", "XUL_Tutorial/Buttons_hinzufügen") }}

- -

{{ languages( { "en": "en/XUL_Tutorial/Creating_a_Window", "fr": "fr/Tutoriel_XUL/Cr\u00e9er_une_fen\u00eatre", "ja": "ja/XUL_Tutorial/Creating_a_Window", "pl": "pl/Kurs_XUL/Tworzenie_okna", "es": "es/Tutorial_de_XUL/Creando_una_ventana" } ) }}

diff --git a/files/de/archive/mozilla/xul/xul_tutorial/einfuehrung/index.html b/files/de/archive/mozilla/xul/xul_tutorial/einfuehrung/index.html deleted file mode 100644 index 93aa98324a..0000000000 --- a/files/de/archive/mozilla/xul/xul_tutorial/einfuehrung/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Einführung -slug: Archive/Mozilla/XUL/XUL_Tutorial/Einfuehrung -tags: - - XUL - - XUL Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial/Introduction ---- -

{{ Next("XUL_Tutorial/XUL_Struktur") }}

-

Dieses Tutorial ist eine Anleitung für das Erlernen von XUL (XML User Interface Language). XUL ist eine plattformübergreifende Sprache, um die Benutzer-Schnittstellen (z.B. GUI) einer Anwendung zu beschreiben.

-

Dieses Tutorial demonstriert die Erstellung eines einfachen "Datei suchen"-Dialogs, in der Art des "Sherlock" auf dem Macintosh oder des "Suchen"-Dialogs von Windows. Bitte beachten Sie, dass nur das Fenster (GUI) erstellt wird. Dieses beinhaltet sehr eingeschränkte Funktionalität. Das tatsächliche Auffinden von Dateien ist nicht implementiert. An den Stellen, wo der "Datei suchen"-Dialog bearbeitet wird, ist am linken Rand eine blaue Linie gemalt. Sie können der Entwicklung des Dialogs einfach folgen, indem Sie die so markierten Stellen lesen.

-

Was ist XUL und warum wurde es entwickelt?

-

XUL (ausgesprochen "zuul" und reimt sich auf "cool") wurde entwickelt, um die Entwicklung des Mozilla-Browsers zu vereinfachen und zu beschleunigen. Es ist eine XML-Sprache und somit gelten alle Eigenschaften von XML auch für XUL.

-

Die meisten Anwendungen benötigen bei ihrer Entwicklung plattform-spezifische Abhängigkeiten und Eigenschaften - die Entwicklung von plattform-unabhängiger Software ist zeitraubend und teuer. In den letzten Jahren wurde eine Vielzahl von plattform-übergreifenden Anwendungen entwickelt. Die Programmiersprache Java hat zum Beispiel die Plattformunabhängigkeit als herausragende Eigenschaft. XUL ist eine Sprache, die speziell für plattform-übergreifende Benutzerschnittstellen (GUIs) entwickelt wurde. Es dauert lange, um eine Anwendung zu entwickeln - selbst für eine Plattform. Die Zeit des Kompilierens und Debuggens kann sich sehr strecken. Mit XUL kann die Benutzerschnittstelle schnell und einfach implementiert und geändert werden.

-

XUL hat alle Vorteile von anderen XML-Sprachen. Es können zum Beispiel XHTML oder andere XML-Sprachen, wie MathML oder SVG eingebunden werden. Zudem ist angezeigter Text in XUL einfach an den Standort des Anwenders anzupassen. Das heißt er kann mit wenig Aufwand in andere Sprachen übersetzt werden.

-

Welche Art von Benutzerschnittstellen können mit XUL erstellt werden?

-

XUL bietet die Möglichkeit die meisten Elemente zu erstellen, die in modernen Benutzeroberflächen vorkommen. Einige dieser Elemente sind:

- -

Der angezeigte Inhalt kann mit dem Inhalt aus XUL-Dateien oder aus Datenquellen erstellt werden. In Mozilla schließen solche Datenquellen die Mailbox eines Anwenders, seine Lesezeichen und Suchergebnisse ein. Die Inhalte von Menüs, Bäumen und anderen Elementen können mit diesen Daten befüllt werden oder mit Ihren eigenen Daten, die in RDF-Dateien bereitgestellt werden.

-

Es gibt verschieden Arten, um XUL zu nutzen:

- -

Die ersten drei Arten benötigen alle die Ausführung einer Installation auf dem Computer des Anwenders. Diese Arten haben dadurch keine Sicherheitsbeschränkungen, sodass sie, zum Beispiel, das lokale Dateisystem lesen und schreiben können. Für eine Erweiterung werden die XUL-Dateien und zugehörige Skripte und Bilddateien der Anwendung in einer einzigen Datei zusammengepackt, die vom Anwender heruntergeladen und installiert wird. Mozilla-Anwendungen, wie der Firefox, bieten einen Erweiterungsmanager an, der es erlaubt, Installationen zusammenzustellen, ohne viel komplizierten Code schreiben zu müssen.

-

Es ist auch möglich XUL-Dateien direkt aus dem Dateisystem oder von einer Webseite zu starten. Diese sind aber in ihren Möglichkeiten eingeschränkt und einige Aspekte von XUL können nicht ausgeführt werden. Wenn Sie XUL-Inhalte von einer entfernten Webseite laden möchten, muss der Webserver so eingestellt sein, dass er XUL-Dateien mit dem Content-Type "application/vnd.mozilla.xul+xml" senden kann. XUL-Code wird normalerweise in Dateien mit der Endung ".xul" gespeichert. Sie können XUL-Dateien in Mozilla wie jede andere Datei (z.B. HTML) öffnen, indem Sie die "Öffnen mit..."-Option im Datei-Explorer für eine solche Datei auswählen oder den Ort der Datei direkt in die Adressleiste des Mozilla Browsers eingegeben.

-

Welches Vorwissen brauche ich für dieses Tutorial?

-

Sie sollten eine Vorstellung von HTML und zumindest grundsätzliches Verständnis von XML und CSS haben. Hier sind einige Richtlinien:

- -

XUL wird in Mozilla-Browsern unterstützt, die auf der Gecko-Engine basieren, z.B. Netscape 6 oder höher und Mozilla Firefox. Trotz diverser Änderungen in der XUL-Syntax, sollten die aktuellen Versionen der Beispiele korrekt ablaufen. Die meisten Beispiele sollten unter Mozilla 1.0 oder höher laufen. XUL ist ziemlich ähnlich in Firefox und anderen Browsern, obwohl es kleine Unterschiede gibt, wie zum Beispiel die Unterstützung für anpassbare Werkzeugleisten.

-

Dieses Tutorial versucht viel von der XUL-Funktionalität abzudecken, aber es können nicht alle Themen behandelt werden. Wenn Sie einmal vertraut mit XUL sind, können Sie die XUL-Referenz benutzen, um mehr über Eigenschaften von bestimmten Elementen herauszufinden.

-

{{ Next("XUL_Tutorial/XUL_Struktur") }}

-

{{ languages( { "en": "en/XUL_Tutorial/Introduction", "es": "es/Tutorial_de_XUL/Introducci\u00f3n", "fr": "fr/Tutoriel_XUL/Introduction", "ja": "ja/XUL_Tutorial/Introduction", "ko": "ko/XUL_Tutorial/Introduction", "pl": "pl/Kurs_XUL/Wprowadzenie", "zh-cn": "cn/XUL_\u6559\u7a0b/\u5f15\u8a00", "ru": "ru/\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e_\u043f\u043e_XUL/\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435" } ) }}

diff --git a/files/de/archive/mozilla/xul/xul_tutorial/index.html b/files/de/archive/mozilla/xul/xul_tutorial/index.html deleted file mode 100644 index 5cf8ecb42d..0000000000 --- a/files/de/archive/mozilla/xul/xul_tutorial/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: XUL Tutorial -slug: Archive/Mozilla/XUL/XUL_Tutorial -tags: - - XUL - - XUL Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial ---- -

Dieses Tutorial beschreibt XUL, die »XML User-Interface Language«. Diese Sprache wurde für die Anwendung Mozilla entwickelt und wird verwendet, um die Nutzerschnittstelle (GUI) für die Anwendung zu beschreiben.

-
Einführung
- -
Einfache Elemente
- -
Das Box-Modell
- -
Weitere Layout-Elemente
- -
Toolbars und Menüs
- -
Ereignisse und Scripte
- -
Das DOM (Document Object Model)
- -
Bäume
- -
RDF und Vorlagen
- -
Skins und Locales
- -
Bindings
- -
Spezielle Fenster-Typen
- -
Installation
- -
-

Dieses XUL-Tutorial wurde ursprünglich von Neil Deakin geschrieben. Er hat die Erlaubnis gegeben, es als Teil des MDC zu nutzen.

-
-
-
Informationen zum Originaldokument
- -
-

{{ languages( { "zh-cn": "cn/XUL_\u6559\u7a0b", "en": "en/XUL_Tutorial", "es": "es/Tutorial_de_XUL", "fr": "fr/Tutoriel_XUL", "ja": "ja/XUL_Tutorial", "ko": "ko/XUL_Tutorial", "pl": "pl/Kurs_XUL", "ru": "ru/\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e_\u043f\u043e_XUL" } ) }}

diff --git a/files/de/archive/mozilla/xul/xul_tutorial/installations-skripte/index.html b/files/de/archive/mozilla/xul/xul_tutorial/installations-skripte/index.html deleted file mode 100644 index cf11ed3b11..0000000000 --- a/files/de/archive/mozilla/xul/xul_tutorial/installations-skripte/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Installations-Skripte -slug: Archive/Mozilla/XUL/XUL_Tutorial/Installations-Skripte -translation_of: Archive/Mozilla/XUL/Tutorial/Install_Scripts ---- -
-

« zurückweiter »

-
-

Dieser Abschnitt beschreibt das Installationsskript.

-

Erstellen eines Installationsskripts

-
- Hinweis: Für Firefox Erweiterungen, werden install.js Dateien nicht weiter verwendet. Es sollte ein install.rdf stattdessen erstellt werden.
-

In der Regel möchten Sie den Installationsprozess steuern können. Zum Beispiel möchten Sie vielleicht Datei-Versionen überprüfen und nur aktualisierte Dateien installieren oder Sie möchten Fehler in existierenden Dateien beheben. Das Installationsskript ist flexibel genug, um sogar Dateien zu deinstallieren. Aus diesen Gründen sollten Installationen ein Installationsskript an Board haben, um den Installationsprozess zu regeln.

-

Das Installationsskript muss "install.js" genannt werden und muss im Wurzelverzeichnis des Installationsverzeichnisses platziert werden. Das Skript wird JavaScript Code enthalten, welcher eine Reihe von Installationsfunktionen aufruft.

-

In einem HTML Dokument oder einem XUL Dokument ist das "window" Objekt das Wurzelobjekt. Das bedeutet, dass Sie die Methoden des window-Objekts ohne einem Qualifier davor aufrufen können, zum Beipiel kann statt window.open() einfach open() geschrieben werden. In einem Installationsskript gibt es kein Fenster, jedoch ist das globale Objekt das Install Objekt, welches eine Reihe von Funktionen zur Anpassung des Installationsprozess mit sich bringt. Einige der Install-Ojekt Funktionen werden weiter unter beschrieben.

-

Das Installationsskript sollte die folgenden Schritte ausführen:

-
    -
  1. Initialisiere die Installation in dem festgelegt wird, welche Version und Paket installiert werden soll.
  2. -
  3. Benutze die Installationsfunktionen, um zu bestimmen, welche Dateien und Verzeichnisse installiert werden müssen. Sie können außerdem Dateien festlegen, die gelöscht oder verschoben werden sollen.
  4. -
  5. Starte den Installationsprozess der nötigen Dateien.
  6. -
-

Es ist wichtig zu beachten, dass während Schritt zwei, nur angegeben wird, welche Dateien installiert werden sollen und welche weiteren Operationen ausgeführt werden sollen. Es werden keine Dateien bis zum dritten Schritt kopiert. Sie können daher sehr einfach eine Reihe von Dateien festlegen, die installiert werden sollen, stolpern eventuell über einen Fehler und können den Prozess abbrechen, ohne dass das System des Benutzers verändert wird.

-

Die Komponentenregistrierung

-

Mozilla verfügt über eine Registrierungsdatei, welche alle Komponenten enthält, die momentan installiert sind. Komponenten sind Chrome Pakete, Skins und Plugins. Wird eine neue Komponente installiert, wird die Registrierungsdatei aktualisiert. Die Registrierung speichert auch Dateisets und Versionsinformationen über die installierten Komponenten. Daher ist es sehr einfach die Versionen Ihrer Komponente zu prüfen und zu ermitteln, ob die Komponente bereits verfügbar ist und eventuell aktualisiert werden muss.

-

Die Komponentenregistrierung arbeit ähnlich wie die Windows Registrierung. Sie besteht aus der hierarchischen Anordnung von Schlüsseln und Werten. Dabei müssen Sie nicht viel darüber wissen, um XUL Anwendungen zu erstellen, es sei denn Sie wollen eigene XPCOM Komponenten erstellen.

-

Was Sie für eine Installation wissen müssen, ist, dass die Registrierung eine Reihe von Informationen über Ihre Anwendung speichert, zum Beispiel eine Liste der Dateien und Versionen. Die gesamten Informationen werden in einem Schlüssel gespeichert (und in Unter-Schlüsseln), welche Sie im Installationsskript angeben (in Schritt eins oben genannt).

-

Dieser Schlüssel ist wie in Verzeichnissen in der folgenden Form strukturiert:

-
/Autor/Paketname
-
-

Ersetzen Sie das Wort "Author" mit Ihrem Name und "Paketname" mit dem Namen Ihres Pakets, welches Sie installieren möchten. Zum Beispiel:

-
/Xulplanet/Find Files
-
-/Netscape/Personal Security Manager
-
-

Das erste Beispiel werden wir für den Dateisuche-Dialog verwenden. Das zweite Beispiel wird vom Personal Security Manager benutzt.

-

Initialisierung der Installation

-

Das Install Objekt hat eine Funktion, initInstall(), welche zur Initialisierung der Installation gebraucht wird. Es sollte am Anfang des Installationsskript aufgerufen werden. Die Syntax dieser Funktion ist die folgende:

-
initInstall( ''packageName'' , ''regPackage'' , ''version'' );
-

Ein Beispiel

-
initInstall("Find Files","/Xulplanet/Find Files","0.5.0.0");
- -

Als nächstes müssen wir das Verzeichnis festlegen, wo die Dateien installiert werden sollen. Es gibt zwei Möglichkeiten.

- -

Die Funktion setPackageFolder() legt ein Installationsverzeichnis fest. Für den Dateisuche-Dialog werden wir die Dateien in das Chrome-Verzeichnis installieren. (Wir könnten sie überall speichern). Die Funktion setPackageFolder() nimmt ein Argument an, das Installationsverzeichnis. Für maximale Portabilität kann kein String-Name für das Verzeichnis festgelegt werden. Stattdessen wird ein Identifier eines bekannten Verzeichnis verwendet und dann werden dort Unterverzeichnisse erstellt. Falls Ihre Anwendung Systembibliotheken installieren muss, brauchen Sie den Pfad dieser Verzeichnisse nicht zu wissen.

-

Die Verzeichnis-Identifiers sind in der XULPlanet Referenz aufgelistet. Für das Chrome-Verzeichnis ist der Identifier 'Chrome'. Die getFolder() Funktion kann verwendet werden, um eine der speziellen Verzeichnisse zu bekommen. Diese Funktion nimmt zwei Argumente, das erste ist der Identifier und das zweite ist ein Unterverzeichnis. Zum Beispiel:

-
findDir = getFolder("Chrome","findfile");
-setPackageFolder(findDir);
-
-

Hier bekommen wir das "findfile" Verzeichnis im Chrome-Ordner und reichen dies an die setPackageFolder() Funktion weiter. Das zweite Argument für getFolder() ist das Unterverzeichnis in dem wir installieren werden, was nicht bedeutet, dass es existieren muss. Dieses Argument kann weggelassen werden, wenn Sie kein Unterverzeichnis benötigen.

-

Installationsdateien festlegen

-

Als nächstes müssen die Dateien festgelegt werden, die installiert werden sollen. Das erfordert die Verwendung der Funktionen addDirectory() und addFile(). Die addDirectory() Funktion teilt dem Instller mit, dass ein Verzeichnis aus dem XPI Archiv (und alle Inhalte darin) in ein bestimmtes Verzeichnis installiert werden soll. Die Funktion addFile() ist ähnlich, aber für eine einzelne Datei.

-

Beide Funktionen addDirectory() und addFile() haben unterschiedliche Formen. Die einfachste Form nimmt nur ein Argument: Das Verzeichnis, welches von der Installation erstellt werden soll.

-
addDirectory ( dir );
-addFile ( dir );
-
-Beispiel:
-
-addDirectory("findfile");
-
-

Das obige Beispiel legt ein Verzeichnis "findfile" für die Installation fest. Diese Funktionen können mehrmals aufgerufen werden, um mehrere Verzeichnisse und Dateien zu installieren.

-

Als nächstes wollen wir die Dateien im Chrome System registrieren, sodass diese mit einer Chrome-URL verwendet werden können. Das kann mit der registerChrome() Funktion erledigt werden. Die Funktion nimmt zwei Argumente an, als erstes den Chrome-Typ, der registriert werden soll (content, skin oder locale). Ein zweites Argument ist das Verzeichnis, welches die contents.rdf Datei enthält. Weil der Dateisuche-Dialog content, eine Skin-Datei und eine locale-Datei enthält, muss registerChrome() dreimal aufgerufen werden.

-
registerChrome(Install.CONTENT | Install.DELAYED_CHROME, getFolder(findDir, "content"));
-registerChrome(Install.SKIN | Install.DELAYED_CHROME, getFolder(findDir, "skin"));
-registerChrome(Install.LOCALE | Install.DELAYED_CHROME, getFolder(findDir, "locale"));
-
-

 DELAYED_CHROME wird verwendet, um anzuzeigen, dass es beim nächsten Mozilla-Start installiert werden soll.

-

Abschluss der Installation

-

Die addDirectory() und addFile() Funktions kopieren keine Dateien. Sie geben nur an, welche Dateien installiert werden sollen. Ebenfalls gibt registerChrome() nur an, dass diese im chrome-System registriert werden sollen. Um den Prozess zu vervollständigen und Dateien zu kopieren, muss die performInstall() Funktion aufgerufen werden. Diese Funktionen erwartet keine Argumente.

-

Das finale Skript zur Installation der "Dateisuche"-Komponente ist unten aufgeführt:

-
-

Datei

-
initInstall("Find Files","/Xulplanet/Find Files","0.5.0.0");
-
-findDir = getFolder("Chrome","findfile");
-setPackageFolder(findDir);
-
-addDirectory("findfile");
-
-registerChrome(Install.CONTENT | Install.DELAYED_CHROME, getFolder(findDir, "content"));
-registerChrome(Install.SKIN | Install.DELAYED_CHROME, getFolder(findDir, "skin"));
-registerChrome(Install.LOCALE | Install.DELAYED_CHROME, getFolder(findDir, "locale"));
-
-performInstall();
-
-
-

Als nächstes schauen wir uns zusätzliche Installationsfunktionen an.

-
-

« zurückweiter »

-
diff --git a/files/de/archive/mozilla/xul/xul_tutorial/lokalisierung/index.html b/files/de/archive/mozilla/xul/xul_tutorial/lokalisierung/index.html deleted file mode 100644 index 7f6f44a00e..0000000000 --- a/files/de/archive/mozilla/xul/xul_tutorial/lokalisierung/index.html +++ /dev/null @@ -1,270 +0,0 @@ ---- -title: Lokalisierung -slug: Archive/Mozilla/XUL/XUL_Tutorial/Lokalisierung -tags: - - Lokalisierung - - XUL - - XUL_Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial/Localization ---- -

{{ PreviousNext("XUL_Tutorial/Eine_eigene_Skin_erstellen", "XUL_Tutorial/Property-Dateien") }}

-

XUL und XML stellen Entities als komfortablen Weg bereit, um Lokalisierungen zu ermöglichen.

-

Entities

-

Viele Anwendungen sind so gebaut, dass das Interface so einfach wie möglich in verschiedene Sprachen zu übersetzten ist. Üblicherweise wird eine Tabelle aus Strings für jede Sprache erstellt. Anstelle von den Text direkt in die Applikation zu programmieren, stellt jede Textstelle nur eine Referenz zur Stringtabelle dar. XML stellt Entities zur Verfügung, welche für den gleichen Zweck verwendet werden können.

-

Man sollte mit Entities bereits vertraut sein, wenn man schon Erfahrungen mit HTML sammeln konnte. Der Code &lt; und &gt; sind Beispiele von Entities, welche anstelle von „Größer-als-“ und „Kleiner-als-Zeichen“ im Text verwendet werden können. XML besitzt einen Syntax, welcher dir das deklarieren eigener Entities erlaubt. Du kannst diese so verwenden, dass das Entity durch seinen Wert ersetzt wird, welcher ein Textstring ist. Entities können immer wenn Text auftritt verwendet werden, inklusive den Attributwerten. Das Beispiel unten demonstriert die Verwendung eines Entity in einem Button.

-
<button label="&findLabel;"/>
-
-

Der Text der als Label erscheinen wird, wird den Wert des Entity &findLabel; sein. Eine Datei welche die Entity-Deklaration enthält wird für jede unterstützte Sprache erstellt. Für Englisch wird das &findLabel; Entity wahrscheinlich mit dem Text »Find« deklariert sein.

-

DTD-Dateien

-

Entities sind in Document Type Declaration (DTD) Dateien deklariert. Dateien dieses Typs werden normalerweise verwendet um den Syntax und die Semantik einer bestimmten XML-Datei zu deklarieren, aber es können auch Entities deklariert werden. Im Mozilla Chrome-System sind die DTD Dateien im locales Unterordner zu finden. Normalerweise existiert eine DTD Datei (mit der Endung .dtd) pro XUL-Datei.

-

Wenn man im Chrome-Ordner nachschaut, sollte man ein Archiv für die jeweilige Sprache (de-De.jar ist normalerweise Deutsch) finden. Es ist möglich lokale Dateien in verschiedenen Sprachen, z.B. Deutsch (de-DE) und Englisch (en-US) zu haben. Innerhalb dieser Archive sind die Dateien zu finden, welche den lokalisierten Text für jedes Fenster enthalten. Die Struktur der Archive ist sehr ähnlich derjenigen, die für Skins verwendet wird.

-

Im Innern der Archive würde man die DTD-Dateien platzieren in welchen die Entities deklariert werden sollen. Normalerweise wird für jede XUL-Datei eine DTD-Datei mit dem gleichen Namen erstellt mit allerdings einer .dtd Endung. Daher werden wir für den Dateisuchdialog eine Datei namens findfile.dtd benötigen.

-

Für nicht installierte chrome Dateien kann einfach die DTD-Datei ins selbe Verzeichnis wie die XUL-Datei ablegt werden.

-
Anmerkung: Die DTD-Dateien sollten für nicht ASCII Zeichen als UTF-8 kodiert werden. Deswegen sollten die Dateien im UTF-8 Format gespeichert werden. (ohne BOM). Für mehr Informationen, siehe Mozilla Sprachpakete.
-

Sobald eine DTD-Datei für das XUL erstellt worden ist, muss eine Zeile in die XUL-Datei einfügt werden, welche angibt, dass die DTD-Datei verwendet werden soll. Andernfalls werden Fehler auftreten, weil die Entities nicht gefunden werden. Um dies zu tun, muss die folgende Zeile irgendwo im oberen Bereich der XUL-Datei eingefügt werden:

-
<!DOCTYPE window SYSTEM "chrome://findfile/locale/findfile.dtd">
-
-

Diese Zeile legt fest, dass die URL auf eine DTD-Datei verweist. In diesem Fall wurde deklariert, dass die findfile.dtd DTD-Datei verwendet werden soll. Diese Zeile ist typischerweise gerade vor dem window Element platziert.

-

Entities deklarieren

-

Die Entities werden mit einem einfachen Syntax deklariert:

-
<!ENTITY findLabel "Find">
-
-

Dieses Beispiel erstellt ein Entity mit dem Namen findLabel und dem Wert »Find«. Dies bedeutet, dass überall wo der Text „&findLabel;“ in der XUL-Datei auftritt es durch den Text »Find« ersetzt wird. Es sollte beachtet werden, dass die Deklaration kein Slash am Ende besitzt. In der DTD-Datei einer anderen Sprache wird der Text stattdessen in dieser Sprache geschrieben.

-
für Japanisch:
-<!ENTITY findLabel "検索">
-
-

Zum Beispiel der folgende Text:

-
<description value="&findLabel;"/>
-
-

wird übersetzt als:

-
Englische Version:
-<description value="Find"/>
-
-Japanische Version:
-<description value="検索"/>
-
-

Es wird ein Entity für jede Beschriftung und Textstelle vorhanden sein, die dem Interface verwendet wird. Es sollte kein direkt angezeigter Text in den XUL-Dateien existieren.

-

Zusätzlich zu der Verwendung in Beschriftungen, sollten Entities für jeden Wert verwendet werden, welcher in einer anderen Sprache abweichen könnte. Access-Keys und Tastatur-Shortcuts zum Beispiel.

-
 XUL
- <menuitem label="&undo.label;" accesskey="&undo.key;"/>
- DTD
- <!ENTITY undo.label "Undo">
- <!ENTITY undo.key "u">
-
-

Das Beispiel oben verwendet zwei Entities, eines für die Beschriftung des Menüpunktes und ein zweiter für den Access-Key.

-

 

-
-

Änderung des Dateisuche Beispiels

-

Werfen wir jetzt einen Blick darauf, wie wir das alles zusammenfügen können, indem wir den Dateisuche-Dialog so modifizieren, so dass eine DTD-Datei für alle seine Textstellen verwendet wird. Die gesamte XUL-Datei mit allen Änderungen in Rot ist unterhalb gezeigt.

-
<?xml version="1.0"?>
-
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-<?xml-stylesheet href="findfile.css" type="text/css"?>
-
-<!DOCTYPE window SYSTEM "chrome://findfile/locale/findfile.dtd">
-
-<window
-  id="findfile-window"
-  title="&findWindow.title;"
-  persist="screenX screenY width height"
-  orient="horizontal"
-  onload="initSearchList()"
-  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<script src="findfile.js"/>
-
-<popupset>
-   <popup id="editpopup">
-     <menuitem label="Cut" accesskey="&cutCmd.accesskey;"/>
-     <menuitem label="Copy" accesskey="&copyCmd.accesskey;"/>
-     <menuitem label="Paste" accesskey="&pasteCmd.accesskey;" disabled="true"/>
-   </popup>
-</popupset>
-
-<keyset>
-   <key id="cut_cmd" modifiers="accel" key="&cutCmd.commandkey;"/>
-   <key id="copy_cmd" modifiers="accel" key="&copyCmd.commandkey;"/>
-   <key id="paste_cmd" modifiers="accel" key="&pasteCmd.commandkey;"/>
-   <key id="close_cmd" keycode="VK_ESCAPE" oncommand="window.close();"/>
-</keyset>
-
-<vbox flex="1">
-
- <toolbox>
-
-  <menubar id="findfiles-menubar">
-    <menu id="file-menu" label="&fileMenu.label;"
-        accesskey="&fileMenu.accesskey;">
-      <menupopup id="file-popup">
-        <menuitem label="&openCmd.label;"
-                  accesskey="&openCmd.accesskey;"/>
-        <menuitem label="&saveCmd.label;"
-                  accesskey="&saveCmd.accesskey;"/>
-        <menuseparator/>
-        <menuitem label="&closeCmd.label;"
-                  accesskey="&closeCmd.accesskey;" key="close_cmd" oncommand="window.close();"/>
-      </menupopup>
-    </menu>
-    <menu id="edit-menu" label="&editMenu.label;"
-          accesskey="&editMenu.accesskey;">
-      <menupopup id="edit-popup">
-        <menuitem label="&cutCmd.label;"
-                  accesskey="&cutCmd.accesskey;" key="cut_cmd"/>
-        <menuitem label="&copyCmd.label;"
-                  accesskey="&copyCmd.accesskey;" key="copy_cmd"/>
-        <menuitem label="&pasteCmd.label;"
-                  accesskey="&pasteCmd.accesskey;" key="paste_cmd" disabled="true"/>
-      </menupopup>
-    </menu>
-  </menubar>
-
-  <toolbar id="findfiles-toolbar">
-    <toolbarbutton id="opensearch" label="&openCmdToolbar.label;"/>
-    <toolbarbutton id="savesearch" label="&saveCmdToolbar.label;"/>
-  </toolbar>
- </toolbox>
-
- <tabbox>
-  <tabs>
-    <tab label="&searchTab;" selected="true"/>
-    <tab label="&optionsTab;"/>
-  </tabs>
-
-  <tabpanels>
-
-   <tabpanel id="searchpanel" orient="vertical" context="editpopup">
-
-   <description>
-     &findDescription;
-   </description>
-
-   <spacer class="titlespace"/>
-
-   <groupbox orient="horizontal">
-     <caption label="&findCriteria;"/>
-
-     <menulist id="searchtype">
-       <menupopup>
-         <menuitem label="&type.name;"/>
-         <menuitem label="&type.size;"/>
-         <menuitem label="&type.date;"/>
-       </menupopup>
-     </menulist>
-   <spacer class="springspace"/>
-     <menulist id="searchmode">
-       <menupopup>
-         <menuitem label="&mode.is;"/>
-         <menuitem label="&mode.isnot;"/>
-       </menupopup>
-     </menulist>
-   <spacer class="springspace"/>
-
-   <menulist id="find-text" flex="1"
-             editable="true"
-             datasources="file:///mozilla/recents.rdf"
-             ref="http://www.xulplanet.com/rdf/recent/all">
-     <template>
-       <menupopup>
-         <menuitem label="rdf:http://www.xulplanet.com/rdf/recent#Label" uri="rdf:*"/>
-       </menupopup>
-     </template>
-   </menulist>
-
-   </groupbox>
-
-  </tabpanel>
-
-  <tabpanel id="optionspanel" orient="vertical">
-     <checkbox id="casecheck" label="&casesensitive;"/>
-     <checkbox id="wordscheck" label="&matchfilename;"/>
-    </tabpanel>
-
-  </tabpanels>
- </tabbox>
-
- <tree id="results" style="display: none;" flex="1">
-   <treecols>
-     <treecol id="name" label="&results.filename;" flex="1"/>
-     <treecol id="location" label="&results.location;" flex="2"/>
-     <treecol id="size" label="&results.size;" flex="1"/>
-   </treecols>
-
-   <treechildren>
-     <treeitem>
-       <treerow>
-         <treecell label="mozilla"/>
-         <treecell label="/usr/local"/>
-         <treecell label="&bytes.before;2520&bytes.after;"/>
-       </treerow>
-     </treeitem>
-   </treechildren>
- </tree>
-
- <splitter id="splitbar" resizeafter="grow" style="display: none;"/>
-
- <spacer class="titlespace"/>
-
- <hbox>
-   <progressmeter id="progmeter" value="50%" style="display: none;"/>
-   <spacer flex="1"/>
-   <button id="find-button" label="&button.find;"
-           oncommand="doFind()"/>
-   <button id="cancel-button" label="&button.cancel;"
-           oncommand="window.close();"/>
- </hbox>
-</vbox>
-
-</window>
-
-

Jede Textstelle wurde durch eine Entity ersetzt. Eine DTD-Datei wurde nahe am Anfang eingefügt. Jede Entity welche eingefügt wurde, sollte in der DTD-Datei deklariert sein. Das Fenster wird nicht angezeigt, wenn eine Entity in der XUL-Datei gefunden wird, welche nicht deklariert wurde.

-

Es sollte beachtet werden, dass der Name der Entity nicht wichtig ist. Im Beispiel oben wurden die Wörter der Entities mit Bindestrichen getrennt. Dies ist keine Vorgabe. Die Entity-Namen folgen den selben Konventionen wie der Rest des Mozilla Codes.

-

Es ist vielleicht aufgefallen, dass der Text '2520 bytes' durch zwei Entities ersetzt wurde. Das kommt daher, weil die Struktur in anderen Sprachen variieren kann. Es könnte z.B. nötig sein, dass die Einheit vor der Zahl steht.

-

Die Access-Keys und Tastatur-Shortcuts wurden auch in Entities übersetzt, weil sie in anderen Sprachen abweichen können.

-

Nun die DTD-Datei - findfile.dtd:

-
<!ENTITY findWindow.title "Find Files">
-<!ENTITY fileMenu.label "File">
-<!ENTITY editMenu.label "Edit">
-<!ENTITY fileMenu.accesskey "f">
-<!ENTITY editMenu.accesskey "e">
-<!ENTITY openCmd.label "Open Search...">
-<!ENTITY saveCmd.label "Save Search...">
-<!ENTITY closeCmd.label "Close">
-<!ENTITY openCmd.accesskey "o">
-<!ENTITY saveCmd.accesskey "s">
-<!ENTITY closeCmd.accesskey "c">
-<!ENTITY cutCmd.label "Cut">
-<!ENTITY copyCmd.label "Copy">
-<!ENTITY pasteCmd.label "Paste">
-<!ENTITY cutCmd.accesskey "t">
-<!ENTITY copyCmd.accesskey "c">
-<!ENTITY pasteCmd.accesskey "p">
-<!ENTITY cutCmd.commandkey "X">
-<!ENTITY copyCmd.commandkey "C">
-<!ENTITY pasteCmd.commandkey "V">
-<!ENTITY openCmdToolbar.label "Open">
-<!ENTITY saveCmdToolbar.label "Save">
-<!ENTITY searchTab "Search">
-<!ENTITY optionsTab "Options">
-<!ENTITY findDescription "Enter your search criteria below and select the Find button to begin the search.">
-<!ENTITY findCriteria "Search Criteria">
-<!ENTITY type.name "Name">
-<!ENTITY type.size "Size">
-<!ENTITY type.date "Date Modified">
-<!ENTITY mode.is "Is">
-<!ENTITY mode.isnot "Is Not">
-<!ENTITY casesensitive "Case Sensitive Search">
-<!ENTITY matchfilename "Match Entire Filename">
-<!ENTITY results.filename "Filename">
-<!ENTITY results.location "Location">
-<!ENTITY results.size "Size">
-<!ENTITY bytes.before "">
-<!ENTITY bytes.after "bytes">
-<!ENTITY button.find "Find">
-<!ENTITY button.cancel "Cancel">
-
-

Um den Text in einer neuen Sprache hinzuzufügen, genügt es eine weitere DTD-Datei zu erstellen. Durch die Verwendung des Chrome Systems, um die DTD-Datei einer anderen Sprache hinzuzufügen, kann die selbe XUL-Datei für jede Sprache verwendet werden.

-

Das Dateisuche Beispiel so weit: Quellcode

-
-

Als nächstes werden wir einen Blick auf Property Dateien werfen.

-

{{ PreviousNext("XUL_Tutorial/Eine_eigene_Skin_erstellen", "XUL_Tutorial/Property-Dateien") }}

-

{{ languages( { "en": "en/XUL_Tutorial/Localization", "fr": "fr/Tutoriel_XUL/Localisation", "ja": "ja/XUL_Tutorial/Localization", "pl": "pl/Kurs_XUL/Lokalizacja" } ) }}

diff --git a/files/de/archive/mozilla/xul/xul_tutorial/positionierung_von_elementen/index.html b/files/de/archive/mozilla/xul/xul_tutorial/positionierung_von_elementen/index.html deleted file mode 100644 index 756e025aaa..0000000000 --- a/files/de/archive/mozilla/xul/xul_tutorial/positionierung_von_elementen/index.html +++ /dev/null @@ -1,259 +0,0 @@ ---- -title: Positionierung von Elementen -slug: Archive/Mozilla/XUL/XUL_Tutorial/Positionierung_von_Elementen -tags: - - XUL - - XUL Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial/Element_Positioning ---- -
-

« zurückweiter »

-
- -

Schauen wir uns die Steuerung von Positionen und Größen von XUL Elementen an.

- -

Positionierung in Boxen

- -

Bis jetzt wissen wir, dass Elemente entweder horizontal oder vertikal innerhalb einer Box positioniert werden können. Meistens brauchen wir aber weitere Steuerungsmöglichkeiten zur Position und Größe von Elementen in der Box. Dazu müssen wir uns zunächst anschauen wie eine Box arbeitet.

- -

Die Position eines Elementes wird vom Layout des Containers bestimmt. Zum Beispiel ist die Position einer Schaltfläche in einer horizontalen Box rechts von der vorherigen Schaltfläche, sofern diese existiert. Die Größe eines Elements wird von zwei Faktoren beeinflusst: Die Größe, die das Element an Größe braucht und die Größe, die Sie festlegen. Die Größe, die das Element braucht, hängt vom dem ab, was sich innerhalb des Elements befindet. Zum Beispiel wird die Breite einer Schaltfläche anhand des Textes, welcher sich darauf befindet, berechnet.

- -

Ein Element wird generell so groß wie es Inhalt vorschreibt und nicht größer. Einige Elemente verfügen über eine Standardgröße (z.B. Textboxen), welche verwendet wird. Eine horizontale Box mit drei Schaltflächen darin, wird so groß wie die drei Schaltflächen plus einem kleinen zusätzlichen Abstand.

- -
Image:boxstyle1n.png
- -

Im Bild wurde den ersten beiden Schaltflächen eine passende Größe vorgeschrieben, um den Text anzuzeigen. Die dritte Schaltfläche ist größer, weil sie mehr Inhalt enthält. Die Breite der umschließenden Box ist die Summe der Breite der drei Schaltflächen plus einem zusätzlichen Abstand zwischen ihnen. Die Höhe der Schaltflächen ist passend zur Textgröße berechnet worden.

- -

Width und height Attribute

- -

Sie möchten sicher mehr Einfluss auf die Größe eines Elements in einem Fenster nehmen können. Es gibt eine Reihe von Features, die Ihnen erlauben die Größe eines Elementes festzulegen. Der schnellste Weg ist, einfach die width und height Attribute festzulegen, genauso wie Sie es vielleicht von HTML kennen. Ein Beispiel dazu:

- -

Beispiel 1: Datei Ansehen

- -
<button label="OK" width="100" height="40"/>
-
- -

Es ist jedoch nicht empfohlen, das so zu machen. Es ist passt nicht in einige Themes und ist umständlicher anpassbar. Ein besserer Weg ist, CSS Eigenschaften zu verwenden, welche wie in HTML arbeiten. Die folgenden CSS Eigenschaften können dazu verwendet werden:

- -
-
width
-
Legt die Breite eines Elementes fest.
-
height
-
Legt die Höhe eines Elementes fest.
-
- -

Werden beide Eigenschaften festgelegt, wird das Element mit dieser Breite und Höhe erstellt. Wird nur eines der beiden angegeben, wird die andere Eigenschaft nach dem benötigten Platz berechnet. Die Größe sollte als Zahl gefolgt von einer Einheit angegeben werden.

- -

Flexible Elemente

- -

Die Größen der Elemente sind ziemlich einfach zu berechnen für nicht-flexible Elemente. Sie folgen einfach der festgelegten Breiten und Höhen und sobald eine Größe nicht festgelegt wurde, wird das Element so groß wie es für den Inhalt erforderlich ist. Für flexible Elemente ist die Berechnung allerdings nicht ganz so einfach.

- -

Flexible Elemente sind solche, die über ein flex Attribut verfügen und einen Wert größer als 0 haben. Flexible Elemente passen sich an den verfügbaren Freiraum an. Die Standardgröße wird trotzdem genauso berechnet wie für nicht-flexible Elemente. Das folgende Beispiel soll dies verdeutlichen:

- -

Beispiel 2 : Datei Ansehen

- -
<window orient="horizontal"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<hbox>
-  <button label="Yes" flex="1"/>
-  <button label="No"/>
-  <button label="I really don't know one way or the other"/>
-</hbox>
-
-</window>
-
- -

Das Fenster wird zunächst so erscheinen wie im vorherigen Bild. Die ersten beiden Schaltflächen werden auf eine passende Breite und die dritte Schaltfläche auf längere Breite skaliert, weil diese über eine längere Aufschrift verfügt. Die erste Schaltfläche ist flexibel und alle Elemente wurde in eine Box getan. Die Breite dieser Box wird auf die Startgröße aller drei Schaltflächen gesetzt (ca. 430 Pixel in dem Bild).

- -

Wenn Sie nun das Fenster vergrößern, wird überprüft, ob Elemente flexibel sind, um den entstehenden Freiraum zu füllen, der entstehen würde. Da die erste Schaltfläche das einzig flexible Element ist, sollte es größer werden. Das geschieht in diesem Fall jedoch nicht, da die Box in dem sich die Schaltfläche befindet nicht flexibel ist. Ein unflexibles Element kann niemals seine Größe ändern, wenn der Platz verfügbar ist. Die Schaltfläche kann also nicht größer werden.

- -

Die Lösung ist, die Box ebenfalls flexibel zu machen. Wird dann das Fenster größer gemacht, ist zusätzlicher Raum verfügbar und die Box wird diesen Raum füllen. Weil die Box größer ist, ist auch mehr Platz innerhalb verfügbar und die flexible Schaltfläche kann diesen Platz einnehmen. Dieser Prozess wird für jede Verschachtelung wiederholt.

- -

Minimale und maximale Größen festlegen

- -

Vielleicht möchten Sie, dass ein Element eine bestimmte Größe besitzt, aber dennoch flexibel ist. Es können Größen festgelegt werden, die auch flexible Elemente nicht über- oder unterschreiten sollen. Diese Einstellung erreicht man mit diesen vier Attributen:

- -
-
minwidth
-
Legt die minimale Breite eines Elements fest.
-
minheight
-
Legt die minimale Höhe eines Elements fest.
-
maxwidth
-
Legt die maximale Breite eines Elements fest.
-
maxheight
-
Legt die maximale Höhe eines Elements fest.
-
- -

Die Werten werden immer in Pixeln angegeben. Es können auch die zugehörigen CSS Eigenschaften angegeben werden: min-width, min-height, max-width und max-height.

- -

Diese Eigenschaften sind nur für flexible Elemente sinnvoll. Wird zum Beispiel eine maximale Höhe festgelegt, wird eine Schaltfläche nur bis zu einer bestimmten Größe skaliert. Sie können das Fenster weiterhin vergrößern, die Schaltfläche wird jedoch nicht weiter vergrößert werden. Die Box, in der sich die Schaltfläche befindet wird sich weiterhin anpassen, wenn Sie keine maximale Höhe festgelegt haben.

- -

Wenn zwei Schaltflächen flexibel sind, werden sich normalerweise beide den freien Platz gleichermaßen teilen. Falls eine Schaltfläche eine maximale Breite hat, wird die zweite Schaltfläche den restlichen Freiraum mit einnehmen.

- -

Wenn eine Box über eine maximale Breite oder Höhe verfügt, können die darin enthaltenen Kindelemente nicht größer als die festgelegte Größe der Box werden. Wenn eine minimale Breite oder Höhe vorliegt, können die Kindelemente ebenfalls nicht kleiner werden.

- -
Beispiele zur Festlegung von Breiten und Höhen
- -
<button label="1" style="width: 100px;"/>
-<button label="2" style="width: 100em; height: 10px;"/>
-<button label="3" flex="1" style="min-width: 50px;"/>
-<button label="4" flex="1" style="min-height: 2ex; max-width: 100px"/>
-<textbox flex="1" style="max-width: 10em;"/>
-<description style="max-width: 50px">This is some boring but simple
-wrapping text.</description>
-
- -
-
Beispiel 1 
-
Die erste Schaltfläche wird mit einer Breite von 100 Pixeln (px bedeutet Pixel) angezeigt. Die Einheit muss angegeben werden, sonst wird die Breite ignoriert.
-
Beispiel 2 
-
Die zweite Schaltfläche wird mit einer Höhe von 10 Pixeln und einer Breite von 100em (ein em ist die Größe eines Zeichens der aktuellen Schrift) angezeigt.
-
Beispiel 3 
-
Die dritte Schaltfläche ist flexibel, sie wird also auf Basis der Größe Box der angezeigt. Die Schaltfläche wird jedoch niemals kleiner als 50 Pixel breit. Andere flexible Komponenten wie z.B. Spacer werden den verbleibenden Platz einnehmen.
-
Beispiel 4 
-
Die vierte Schaltfläche is flexibel und wird niemals eine Höhe haben, die kleiner als 2 ex ist (ein ex ist normalerweise die Höhe des Buchstaben x der aktuellen Schrift) oder größer als 100 Pixel ist.
-
Beispiel 5 
-
Das Texteingabefeld ist flexibel, wird aber niemals größer als 10em werden. Sie werden vermehrt em verwenden wollen, da Sie Größen für Elemente festlegen, die Text enthalten. Diese Einheit ist hilfreich für Textboxen, da die Schrift geändert werden kann und die Textbox immer eine passende Größe hat, auch wenn der Text mal ganz groß werden sollte.
-
Beispiel 6 
-
Das description Element wird gezwungen eine maximale Breite von 50 Pixeln zu besitzen. Der Text innerhalb wird in eine neue Zeile verschoben, wenn die 50 Pixel erreicht sind.
-
- -
-
Unser Dateisuche-Dialog
- -

Fügen wir einige dieser Möglichkeiten zu unserem Dateisuche-Dialog hinzu. Wir werden es so machen, dass die Textbox auf das gesamte Fenster ausgestreckt wird.

- -
<textbox id="find-text" flex="1" style="min-width: 15em;"/>
-
- -
Image:boxstyle1.png
- -

Hier wurde das Texteingabefeld flexibel gemacht. Demnach wird es sich anpassen, wenn der Benutzer die Fenstergröße ändert. Das ist sehr hilfreich, wenn der Benutzer einen langen Text einfügen möchte. Außerdem wurde eine minimale Breite von 15em festgelegt, damit immer zumindest 15 Zeichen zu sehen sind. Verkleinert der Benutzer den Dialog sehr stark, wird das Texteingabefeld nur bis 15em verkleinert. Es wird so gezeichnet werden, als wenn es sich auch außerhalb des Fensters ausbreitet. Beachten Sie, dass das Bild ein Texteingabefeld zeigt, welches auf die maximale Fenstergröße ausgebreitet wurde.

-
- -

Anordnung in Boxen

- -

Wenn Sie eine Box mit zwei Kindelementen haben, beide nicht flexibel, die Box ist aber flexibel. Zum Beispiel:

- -

Beispiel 3: Datei Ansehen

- -
<box flex="1">
-  <button label="Happy"/>
-  <button label="Sad"/>
-</box>
-
- -

Wenn Sie nun das Fenster vergrößern, wird die Box auf die Fenstergröße ausgedehnt. Die Schaltflächen sind nicht flexibel, sie werden also nicht ihre Breiten ändern. Das Ergebnis ist zusätzlicher Platz, der auf der rechten Seite der Fensters (innerhalb der Box) erscheint. Sie möchten aber unter Umständen, dass dieser freie Platz auf der linken Seite erscheint, sodass die Schaltflächen auf der rechten Seite des Fensters ausgerichtet werden.

- -

Sie könnten das lösen, in dem Sie ein spacer Element innerhalb der Box platzieren, aber das wird umständlich, wenn Sie es für eine Vielzahl von Elementen machen müssen. Ein besserer Weg ist, ein zusätzliches Attribut pack dem box Element hinzuzufügen. Dieses Attribut gibt an, wie die Kindelemente innerhalb der Box angeordnet werden sollen. Für horizontal orientierte Boxen wird die horizontale Position der Kindelemente gesteuert. Für vertikal orientierte Boxen wird die die vertikale Position der Kindelemente gesteuert. Es können die folgenden Werte verwendet werden:

- -
-
start
-
Positioniert Elemente an der linken Seite für horizontale Boxen und an der oberen Seite für vertikale Boxen. Dies ist der Standardwert.
-
center
-
Zentriert Kindelemente in der Box.
-
end
-
Positioniert Elemente an der rechten Seite für horizontale Boxen und an der unteren Seite für vertikale Boxen.
-
- -

Das pack Attribut wird in der Box festgelegt, die die auszurichteten Elemente enthält, nicht in den Elementen selbst.

- -

Wir können das vorherige Beispiel ändern, sodass die Elemente wie folgt zentriert werden:

- -

Beispiel 4: Datei Ansehen

- -
<box flex="1" pack="center">
-  <button label="Happy"/>
-  <button label="Sad"/>
-</box>
-
- -

Jetzt, wenn das Fenster verändert wurde, werden die Schaltflächen horizontal zentriert. Vergleichen Sie das Verhalten zum vorherigen Beispiel.

- -

Box Ausrichtung

- -

Wenn das Fenster im Happy-Sad Beispiel oben horizontal verändern, wird die Box in der Breite wachsen. Wenn Sie das Fenster vertikal verändern, werden jedoch die Schaltflächen in ihrer Höhe mitwachsen. Das kommt daher weil, die Flexibilität standardmäßig für die vertikale Richtung aktiviert ist.

- -

Dieses Verhalten kann mit dem align Attribut gesteuert werden. Für horizontale Boxen werden die vertikalen Positionen der kindelemente gesteuert. Für vertikale Boxen werden die horizontalen Positionen der Kindelemente gesteuert. Die möglichen Werte sind ähnlich zu denen des {{XULAttr("pack")}} Attributs.

- -
-
start
-
Richtet Elemente an der oberen Seite für horizontal Boxen und an der linken Seite für vertikale Boxen aus.
-
center
-
Zentriert Kindelemente in der Box.
-
end
-
Richtet Elemente an der unteren Seite für horizontale Boxen und an der rechten Seite für vertikale Boxen aus.
-
baseline
-
Richtet Elemente an der Textlinie aus. Nur für horizontale Boxen sinnvoll.
-
stretch
-
Standardwert. Sorgt dafür, dass die Elemente auf die Größe der Box ausgedehnt werden, wie ein flexibles Element nur in die andere Richtung.
-
- -

Im Gegensatz zum pack Attribut, wird das align Attribut auf die beinhalteten Elemente der Box angewendet, nicht auf das Element selbst.

- -

Zum Beispiel, die erste Box unten wird die Kindelemente ausdehnen, weil das die Standardeinstellung ist. Die zweite Box hat ein align Attribut, seine Kindelemente werden also zentriert platziert.

- -

Beispiel 5: Datei Ansehen

- -
<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-
-<window id="yesno" title="Question" orient="horizontal"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-  <hbox>
-    <button label="Yes"/>
-    <button label="No"/>
-  </hbox>
-  <hbox align="center">
-    <button label="Maybe"/>
-    <button label="Perhaps"/>
-  </hbox>
-
-</window>
-
- -
Image:boxstyle2-b.png
- -

Es können auch die CSS Eigenschaften: -moz-box-pack und -moz-box-align anstatt von Attributen verwendet werden.

- -
Vielleicht finden Sie auch das Ausrichtungsbeispiel hilfreich, um die verschiedenen Eigenschaften auszuprobieren.
- -

Text und Schaltflächen abschneiden

- -

Sie können eine Schaltfläche erstellen, die eine Beschriftung hat, die länger als die maximale Breite der Schaltfläche ist. Eine Lösung wäre sicher die Breite zu erhöhen, jedoch verfügen Schaltflächen (und andere Elemente mit einer Beschriftung) über ein spezielles Attribut. Das Attribut "crop" erlaubt Ihnen wie ein Text abgeschnitten wird, wenn dieser zu lang ist.

- -

Wenn der Text abgeschnitten wird, wird ein Auslassungszeichen (...) dort eingefügt, wo der Text ausgeschnitten wurde. Vier mögliche Werte sind dazu gültig:

- -
-
left
-
Der Text wird auf der linken Seite abgeschnitten.
-
right
-
Der Text wird auf der rechten Seite abgeschnitten.
-
center
-
Der Text wird in der Mitte abgeschnitten.
-
none
-
Der Text wird nicht abgeschnitten. Das ist das Standardverhalten.
-
- -

Dieses Attribut ist wirklich nur dann sinnvoll, wenn ein Dialog so entworfen wurde, dass er verwendbar in jeder Große sein soll. Das crop Attribut kann auch bei anderen Elementen verwendet werden, die ein label Attribut für Beschriftungen verwenden. Das folgende Beispiel zeigt das Attribut in Aktion:

- -

Beispiel 6: Datei Ansehen

- -
Image:boxstyle2.png
- -
<button label="Push Me Please!" crop="right" flex="1"/>
-
- -

Beachten Sie, wie der Text der Schaltfläche auf der rechten Seiten abgeschnitten wird, wenn das Fenster verkleinert wird.

- -
-

Aktueller Dateisuche-Dialog: Datei Ansehen

-
- -

Als nächstes eine Zusammenfassung und einige zusätzliche Details zum Box-Modell.

- -
-

« zurückweiter »

-
diff --git a/files/de/archive/mozilla/xul/xul_tutorial/xul_struktur/index.html b/files/de/archive/mozilla/xul/xul_tutorial/xul_struktur/index.html deleted file mode 100644 index 2469697a21..0000000000 --- a/files/de/archive/mozilla/xul/xul_tutorial/xul_struktur/index.html +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: XUL Struktur -slug: Archive/Mozilla/XUL/XUL_Tutorial/XUL_Struktur -tags: - - XUL - - XUL Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial/XUL_Structure ---- -

{{ PreviousNext("XUL_Tutorial/Einfuehrung", "XUL_Tutorial/Die_Chrome_URL") }}

- -

Wir werden mit einem Blick auf die Handhabung von XUL in Mozilla starten.

- -

Wie wird XUL behandelt

- -

In Mozilla wird XUL genauso behandelt wie HTML oder anderer Inhalt. Wenn man die URL einer HTML-Seite in das Adressfeld des Browsers eingibt, ortet der Browser die Webseite und lädt den Inhalt herunter. Die Mozilla Rendering-Engine übersetzt den HTML-Quelltext in ein Dokumentbaum mit DOM. Anschließend wird der Baum in ein Satz Objekte konvertiert, die am Bildschirm angezeigt werden können. CSS, Bilder und andere Technologien werden verwendet, um die Anzeige zu kontrollieren. XUL funktioniert größtenteils auf die selbe Art und Weise.

- -

In der Tat werden alle Dokumenttypen, egal ob HTML, XUL oder sogar SVG, durch den selben zugrunde liegenden Code behandelt. Das bedeutet, dass die selben CSS-Eigenschaften benutzt werden können, um sowohl HTML und XUL zu manipulieren. Daher können viele Funktionen von beiden genutzt werden. Doch gibt es einige Funktionen, welche nur von HTML verwendet werden können, wie z.B. Formulare, und andere, welche nur von XUL verwendet werden können, so wie Overlays. Da XUL und HTML auf die selbe Art und Weise behandelt werden, kann man beide, sowohl vom lokalen Dateisystem, von einer Webseite oder von einer Erweiterung oder einer selbständigen XULRunner-Anwendung laden.

- -

Inhalte aus entfernten Quellen z.B. http://localhost/~username/ sind (egal ob HTML, XUL oder ein anderer Dokumententyp) aus Sicherheitsgründen in ihrem Handlungsspielraum beschränkt. Deshalb stellt Mozilla die Methode zur Verfügung, Inhalte lokal zu installieren und registriert die installierten Dateien in sein chrome-System. Dies ermöglicht, dass eine spezielle URL-Form genutzt werden kann, die chrome:// URL genannt wird. Durch den Zugriff auf eine Datei mittels einer Chrome-URL erhält die Datei höhere Rechte, um auf lokale Dateien, Eigenschaften und Bookmarks zuzugreifen und andere privilegierte Operationen auszuführen. Webseiten erhalten diese Privilegien nicht, es sei denn sie sind mit einem digitalen Zertifikat signiert, und der Benutzer hat den Zugriff auf diese Operationen gewährt.

- -

Die chrome-Paketregistrierung ist der Weg, um es Firefox-Erweiterungen zu ermöglichen, Funktionen zum Browser hinzuzufügen. Erweiterungen sind kleine Pakete mit XUL-Dateien, JavaScript, Stylesheets und Bildern, die in einer einzigen Datei verpackt sind. Eine solche Datei kann mit einem ZIP-Programm erstellt werden. Wenn der Benutzer diese Datei herunterlädt, wird die Erweiterung auf seiner Maschine installiert. Sie hängt sich in den Browser ein, indem sie eine XUL-Eigenschaft benutzt, die man Overlay nennt. Sie erlaubt es, das XUL der Erweiterung mit dem XUL des Browsers zu kombinieren. Für den Benutzer scheint es, als ob die Erweiterung den Browser verändert hat, aber in Wirklichkeit ist der Quelltext separat und die Erweiterung kann leicht entfernt werden. Registrierte Pakete müssen natürlich nicht unbedingt Overlays benutzen. Wenn sie keinen Gebrauch von Overlays machen, ist die Erweiterung nicht von der Browser-Oberfläche aus erreichbar, aber man kann sie über die Chrome-URL erreichen, sofern das erwünscht ist.

- -

Eigenständige XUL-Anwendungen können XUL-Code auf ähnliche Weise enthalten, er wird aber natürlich als Teil der Installation eingebunden, anstatt separat als Erweiterung eingebettet zu werden. Dennoch wird der XUL-Code im chrome-System registriert, sodass die Applikation die Benutzeroberfläche darstellen kann.

- -

Der Mozilla Browser selbst ist ebenfalls nichts weiter als eine Sammlung von Paketen, die XUL-Dateien, JavaScript und Stylesheets enthalten. Diese Dateien können über die chrome URL erreicht werden, haben erweiterte Privilegien und verhalten sich auch sonst wie andere Pakete. Natürlich ist der Browser weitaus größer und komplexer als die meisten Erweiterungen. Firefox und Thunderbird und einige andere Komponenten sind alle in XUL geschrieben und erreichbar über chrome-URLs. Sie können diese Pakete erkunden, indem Sie die Dateien in dem chrome-Verzeichnis ansehen, wo Firefox oder die anderen XUL-Anwendungen installiert sind.

- -

Die chrome-URL beginnt immer mit 'chrome://'. Ähnlich wie eine 'http://'-URL immer eine entfernte Website per HTTP adressiert und die 'file://'-URL immer lokale Dateien, referenziert die 'chrome://'-URL immer installierte Pakete und Erweiterungen. Wir werden uns die chrome-Syntax im nächsten Kapitel genauer ansehen. Es ist wichtig zu wissen, dass der Zugriff über eine chrome-URL erweiterte Privilegien gegenüber den anderen Arten von URLs erlangt. Beispielsweise hat eine HTTP-URL keine besonderen Rechte und es wird ein Fehler ausgegeben, wenn eine Website versucht, zum Beispiel lokale Dateien zu lesen. Wird hingegen eine Datei von einer chrome-URL aus geladen, hat sie das Recht, lokale Dateien ohne Einschränkungen zu lesen.

- -

Diese Unterscheidung ist wichtig. Es bedeutet, dass Websites bestimmte Dinge nicht tun können, wie zum Beispiel die Lesezeichen des Benutzers zu lesen. Diese Unterscheidung basiert nicht auf dem Inhalt, sondern nur auf der URL, die benutzt wird. Sowohl HTML als auch XUL auf einer Website haben keine erweiterten Rechte, wohingegen XUL und HTML, die mit einer chrome-URL geladen wurden, erweiterte Privilegien haben.

- -

Wenn Sie XUL auf einer Website benutzen möchten, müssen Sie nur die XUL-Dateien auf die Website stellen, genau so, wie Sie es auch mit HTML-Dateien tun. Laden Sie dann die URL in den Browser: http://localhost/xul.php. Vergewissern Sie sich, dass Ihr Webserver so konfiguriert ist, dass er XUL-Dateien mit dem passenden Content-Type application/vnd.mozilla.xul+xml ausliefert. (zum Beispiel mittels PHP: header('content-type: application/vnd.mozilla.xul+xml');). Der Content-Type stellt sicher, dass Mozilla HTML und XUL unterscheiden kann. Mozilla nutzt die Dateierweiterung nur, solange die Datei vom Dateisystem gelesen wird. Sie sollten trotzdem die .xul-Dateiendung für all Ihre XUL-Dateien benutzen. Sie können XUL-Dateien in Ihren Browser laden, indem Sie sie mit dem Browser öffnen oder im Datei-Manager die Datei doppelklicken.

- -
Denken Sie daran, dass entfernte XUL-Dateien bedeutende Einschränkungen haben.
- -

 

- -

Dokumenttypen: HTML XML XUL CSS

- -

Mozilla verwendet deutlich unterschiedliche Arten des Dokumentenobjektmodells (DOM) für HTML und XUL, obwohl viele der Funktionen gemeinsam verwendet werden. Es gibt drei hauptsächliche Dokumententypen in Mozilla: HTML, XML und XUL. Natürlich wird HTML für HTML-Dokumente genutzt, XUL für XUL-Dokumente und XML für andere XML-Dokumenttypen. Da XUL ebenfalls XML ist, ist das XUL-Dokument als eine Unterart des XML-Dokumentes zu verstehen. Es gibt feine Unterschiede in der Funktionsweise. Zum Beispiel sind die Formularsteuerungen auf einer HTML-Seite über die document.forms-Eigenschaft erreichbar, während diese nicht für XUL-Dokumente verfügbar ist, weil XUL keine Formulare im Sinne von HTML haben. Andererseits sind spezielle XUL-Funktionen (wie Overlays und Templates) nur in XUL-Dokumenten verfügbar.

- -

Diese Unterscheidung zwischen den Dokumenten ist wichtig. Es ist möglich viele XUL-Funktionen in HTML oder XML-Dokumenten zu verwenden, sofern sie nicht spezifisch für den jeweiligen Dokumententyp sind. Andere Funktionen erfordern jedoch den richtigen Dokumententyp. Daher können Sie zum Beispiel XUL-Layouts in anderen Dokumenten verwenden, da diese nicht vom XUL-Dokumententyp abhängig sind.

- -

Um die oben genannten Punkte zusammenfassen:

- - - -

Die nächsten Abschnitte beschreiben die grundlegende Struktur eines Chrome-Pakets, welches in Mozilla installiert werden kann. Wenn Sie jedoch beginnen wollen eine einfache Anwendung zu schreiben, sollten Sie zu "Ein Fenster erzeugen" springen und zu diesem Abschnitt später zurück kommen.

- -

Paketorganisation

- -

Mozilla ist so organisiert, sodass Sie so viele Komponenten wie Sie möchten, vorinstallieren können. Jede Erweiterung ist eine eigenständige Komponente mit einer separaten Chrome-URL. Mozilla verfügt außerdem über je eine Komponente für jedes installierte Theme und Sprachpaket. Jedes dieser Komponenten oder Pakete besteht aus einer Reihe von Dateien, welche die Benutzeroberfläche dafür beschreiben. Die Messenger-Komponente besitzt z.B. Beschreibungen für Fenster von Mailnachrichten oder Adressbuchdialogen.

- -

Die Pakete, die mit Mozilla ausgeliefert werden, befinden sich im Chrome-Verzeichnis, welches das Verzeichnis ist, wo Sie Mozilla installiert haben. Das Chrome-Verzeichnis ist das, wo Sie alle Dateien, die die Benutzeroberfläche beschreiben, finden. Normalerweise packen Sie alle XUL-Dateien für eine Anwendung in dieses Verzeichnis, obwohl Erweiterungen in das Erweiterungsverzeichnis für einen bestimmten Benutzer installiert werden. Das einfache Kopieren einer XUL-Datei in das chrome-Verzeichnis gibt der Datei noch keine erweiterten Rechte und außerdem kann sie nicht über eine chrome-URL aufgerufen werden. Um diese zusätzlichen Privilegien zu bekommen, müssen Sie eine Manifestdatei erstellen und diese in das Chrome-Verzeichnis packen. Diese Datei ist sehr einfach zu erstellen und ist normalerweise nur ein paar Zeilen lang. Diese Datei wird verwendet, um chrome-URLs auf eine Datei oder einen Verzeichnispfad zu binden, wo sich die XUL-Dateien befinden. Details zur Erstellung dieser Datei werden in einem späteren Abschnitt genauer betrachtet.

- -

Der einzige Weg Inhalte zu erstellen, die über eine Chrome-Url erreichbar sind, ist, ein Paket wie in nächsten Abschnitten beschrieben, zu erstellen. Das Verzeichnis wird 'chrome' genannt, weil es ein geeigneter Name zur Aufbewahrung von Chrome-Paketen ist, welche in Mozilla enthalten sind.

- -

Um die Verwirrung noch weiter zu treiben, gibt es noch zwei weitere Orte, wo das Wort "chrome" auftreten könnte. Das ist einmal das -chrome-Kommandozeilenargument und zum anderen der chrome-Modifier der window.open()-Funktion. Keine dieser Funktionen verteilen zusätzliche Privilegien, stattdessen werden sie verwendet, um ein neues Top-Level-Fenster ohne das Browser UI (Toolbars, Menü) zu erstellen. Sie werden diese Funktion sicher noch in komplexeren XUL Anwendungen verwenden, wenn Sie nicht das Browser UI um Ihre Dialogboxen herum haben wollen.

- -

Dateien eines Pakets werden normalerweise in einzelne JAR-Dateien zusammengefügt. Eine JAR-Datei kann mit einem ZIP-Tool erstellt werden. Beispielsweise können Sie JAR-Dateien in Mozilla's chrome-Verzeichnis öffnen, um die grundlegende Struktur des Pakets zu sehen. Obwohl es normal so ist, dass die Dateien in einer JAR-Datei gepackt sind, können Pakete genauso von einem normalen Verzeichnis erreicht werden. Obwohl Pakete normalerweise nicht auf diese Art ausgeliefert werden, ist es dennoch während der Entwicklung handlicher, die Dateien vorerst nicht zu packen, da Sie diese dann besser bearbeiten können ohne die Dateien jedes Mal neu zu packen zu müssen.

- -

Standardmäßig parsen Mozilla-Applikationen XUL-Dateien und Skripte und speichern eine vor-kompilierte Version im Speicher im Laufe der Anwendungssitzung. Das verbessert die Leistung. Dadurch wird XUL allerdings nicht neu geladen, auch nicht, wenn die Quelldateien sich geändert haben. Um diesen Mechanismus zu deaktivieren, ist es notwendig die Einstellung nglayout.debug.disable_xul_cache festzulegen. In Firefox muss diese Einstellung unter Umständen hinzugefügt werden, indem "about:config" in die Adresszeile eingegeben wird und dieser Wert auf "true" gesetzt wird. Oder Sie verändern die user.js-Einstellungsdatei manuell und fügen die folgende Zeile hinzu:

- -
pref("nglayout.debug.disable_xul_cache", true);
-
- -

Es gibt normalerweise drei verschiedene Teile eines chrome-Pakets, auch wenn sie alle optional sind. Jeder Teil wird in einem anderen Verzeichnis gespeichert. Diese drei Sets sind content, skin und locale, welche unten näher beschrieben sind. Ein bestimmtes Paket kann ein oder mehrere Skins und Sprachen bereitstellen und der Benutzer kann diese mit den eigenen ersetzen. Zusätzlich kann das Paket mehrere unterschiedliche Anwendungen enthalten, jedes davon über eine andere chrome-URL erreichbar. Das Paketsystem ist flexibel genug, um separate Downloads von anderen Teilen wie zum Beispiel andere Sprachen, handzuhaben.

- -

Die drei Typen der Chrome-Pakete sind:

- - - -

Content Pakete

- -

Der Name der JAR-Datei kann beschreiben, was sich darin befindet, aber Sie können nur sicher gehen, wenn Sie sich die Inhalte wirklich anschauen. Verwenden wir das Browserpaket, welches in Firefox enthalten ist als Beispiel. Wenn Sie Dateien in browser.jar entpacken, werden Sie die folgende Verzeichnisstruktur auffinden:

- -
content
-   browser
-      browser.xul
-      browser.js
-      -- weitere XUL und JS-Dateien --
-      bookmarks
-         -- Bookmarks-Dateien --
-      preferences
-         -- Einstellungsdateien --
-.
-.
-.
-
- -

Das lässt einfach als ein 'content'-Paket identifizieren, weil das oberste Verzeichnis "content" genannt wurde. Für Skins wird dieses Verzeichnis normalerweise "skin" und für Sprachen wird es normalerweise "locale" genannt. Dieses Benennungsschema ist nicht notwendig, aber es ist eine gute Konvention, um die Teile des Pakets klar trennen zu können. Einige Pakete können unter Umstand ein Abschnitt für content, skin sowie locale besitzen. In diesem Fall werden Sie ein Unterverzeichnis für jeden Typ finden. Chatzilla wird zum Beispiel auf diesem Weg ausgeliefert.

- -

Das "content/browser"-Verzeichnis enthält eine Vielzahl an Dateien mit der Endung .xul und .js. Die XUL-Dateien sind die mit der .xul-Endung. Die Dateien mit der .js-Endung sind JavaScript-Dateien, welche Skripte enthalten, die die Funktionen eines Fenstern steuern. Viele XUL-Dateien haben eine zugehörige JavaScript-Datei und einige haben sogar mehr als eine.

- -

In der Verzeichnisauflistung oben werden zwei Dateien genannt. Es gibt natürlich noch weitere, aber zur Einfachheit wurde diese ausgelassen. Die Datei browser.xul ist die XUL-Datei, die das Hauptfenster beschreibt. Das Hauptfenster für ein "content"-Paket sollte den selben Namen wie das Paket haben, mit der Endung .xul. In diesem Fall ist der Paketname "browser" also erwarten wir die Datei browser.xul. Einige der anderen XUL-Dateien beschreiben weitere Fenster. Die Datei pageInfo.xul beschreibt zum Beispiel den Seiteninformationsdialog.

- -

Viele Pakete werden eine contents.rdf Datei enthalten, welches das Paket beschreibt, den Autor und die Overlays, die verwendet werden. Diese Datei ist jedoch veraltet und wurde durch ein einfacheres Verfahren ersetzt. Die neue Methode ist die sogenannte Manifestdatei, die bereits erwähnt wurde. Diese Dateien finden Sie mit der Endung .manifest im Chrome-Verzeichnis. Die Datei browser.manifest beschreibt beispielsweise das Browser-Paket.

- -

Mehrere Unterverzeichnisse wie "bookmarks" und "preferences" sind zusätzliche Bereiche der Browser-Komponente. Sie werden nur in unterschiedlichen Ordnern aufbewahrt, um die Dateien besser organisieren zu können.

- -

Skins oder Themes

- -

Obwohl der zugrunde liegende Code für Mozilla sie Skins nennt und die Benutzeroberfläche den Ausdruck "Themes" gebraucht, meinen beide die gleiche Sache. Die classic.jar-Datei beschreibt das Standard-Theme von Firefox. Die Struktur ist ähnlich zum content-Paket. Zum Beispiel classic.jar:

- -
skin
-   classic
-      browser
-         browser.css
-         -- weitere browser Skin-Dateien --
-      global
-         -- globale Skin-Dateien --
-.
-.
-.
-
- -

Auch hier ist die Verzeichnisstruktur nicht notwendig und wird zur besseren Organisation verwendet. Sie können sogar alle Dateien in ein Verzeichnis packen. Für große Anwendungen werden Unterverzeichnisse verwendet, um verschiedene Komponenten zu trennen. Im obigen Beispiel existiert ein Verzeichnis für Theme-bezogene Dateien des Browsers und ein Ordner für globale Theme-bezogene Dateien. Das "global"-Verzeichnis enthält Skin-Dateien, die allgemein für alle Pakete zu gebrauchen sind. Die Dateien sind für alle Komponenten angelegt und werden mit ihrer eigenständigen Anwendung eingebunden. Der globale Teil definiert den Teil der gemeinsamen XUL-Widgets, wohingegen die anderen Verzeichnisse Dateien enthalten, die speziell für die entsprechenden Anwendungen sind. Firefox bindet beide, die globalen und die Browser Theme-Dateien in einem Archiv ein, aber sie können auch einzeln eingebunden werden.

- -

Ein Skin besteht aus CSS-Dateien und einer Reihe von Bildern, die das Aussehen des Interface definieren. Die Datei browser.css wird von browser.xul verwendet und enthält Styles, welche das Aussehen unterschiedlicher Teile der Anwendung beschreiben. Beachten Sie hier wieder, dass die Datei browser.css den gleichen Dateinamen wie das Paket besitzt. Beim Verändern von CSS-Dateien, stellen Sie das Aussehen eines Fensters ein, ohne dabei die Funktionen zu beeinflussen. Auf diese Weise können Sie ein neues Theme erstellen. Der XUL-Teil bleibt der Gleiche, aber der Skin-Teil wird unabhängig verändert.

- -

Lokalisierung

- -

Die Datei "en-US.jar" beschreibt die Sprachinformationen für jede Komponente, in diesem Fall für US-Englisch. Wie bei den Skins, enthält jede Sprachdatei Dateien, welche den Text für das Paket in der jeweiligen Sprache festlegen. Die Struktur von "locale" ist ähnlich zu den anderen, wir werden das hier nicht noch einmal auflisten.

- -

Der lokalisierte Text wird in zwei verschiedenen Dateitypen gespeichert: DTD-Dateien und properties-Dateien. Die DTD Dateien haben die Endung .dtd und enthalten Entity-Deklarationen, eine für jeden Textstring, welcher in einem Fenster verwendet wird. Die Datei browser.dtd enthält zum Beispiel Entity-Deklarationen für jedes Menü-Kommando. Zusätzlich werden Tastaturkürzel für jedes Kommando definiert, weil Sie eventuell unterschiedlich in verschiedenen Sprachen sein können. DTD-Dateien werden von XUL Dateien benutzt, meist werden Sie eine Datei pro XUL Datei finden. Der "locale" Teil beinhaltet auch "properties" Dateien, welche ähnlich sind, aber von Skriptdateien verwendet werden. Die Datei browser.properties enthält einige solcher lokalisierter Strings.

- -

Diese Struktur erlaubt Ihnen Mozilla oder eine Komponente in verschiedene Sprachen zu übersetzen, in dem einfach ein neues "locale"-Verzeichnis hinzugefügt wird. Sie müssen den XUL-Code gar nicht verändern. Weiter kann eine andere Person ein anderes Paket hinzufügen, welches Unterstützung für eine neue Sprache bietet, ohne dass Ihr Originalpaket verändert wird.

- -

Weitere Pakete

- -

Es gibt ein spezielles Paket, welches "Toolkit" (oder "global") genannt wird. Wir haben uns das "global"-Verzeichnis für Skins angeschaut. Die Datei toolkit.jar enthält den zugehörigen "content"-Teil dazu. Es sind einige globale Dialoge und Definitionen darunter. Es wird auch das Standardaussehen und die Standardfunktionen der XUL-Widgets, wie Textboxen und Schaltflächen festgelegt. Diese Datei im globalen Teil eines Skin-Verzeichnisses enthalten das Standardaussehen für alle XUL Interface-Elemente. Das Toolkit-Paket wird von allen XUL-Applikationen verwendet.

- -

Ein Paket hinzufügen

- -

Mozilla platziert die Pakete, die mit der Installation eingebunden werden, in das Chrome-Verzeichnis. Diese Dateien müssen dort jedoch nicht platziert werden. Wenn ein anderes Paket installiert wird, können Sie dies überall auf der Festplatte platzieren, so lange eine Manifestdatei darauf zielt. Es ergibt Sinn Pakete in das Chrome-Verzeichnis zu packen, einfach weil es bequemer ist. Jedoch funktionieren die Pakete genauso gut, wenn sie woanders liegen. Sie können die Dateien jedoch nicht auf einer entfernten Seite speichern, da die entfernte Seite nicht durch das lokale Dateisystem gemountet ist.

- -

Es gibt zwei chrome-Verzeichnisse für XUL-Applikationen: Eine ist dort installiert, wo auch die Anwendung installiert wurde, während die andere Teil des Benutzerprofils ist. Das erste Verzeichnis erlaubt Paketen über alle Benutzer zu agieren, während das zweite Verzeichnis nur für den jeweiligen Benutzer erstellt worden ist. Erweiterungen werden in einem separaten  Erweiterungsverzeichnis installiert und sind außerdem Benutzer-spezifisch. Jede Manifestdatei in einem der Chrome-Verzeichnissen wird geprüft, um zu sehen, welche Pakete installiert sind.

- -

Im nächsten Abschnitt werden wir einen Blick darauf werfen, wie man die Chrome-URL verwendet, um sich auf Chrome-Pakete zu beziehen.

- -

{{ PreviousNext("XUL_Tutorial/Einfuehrung", "XUL_Tutorial/Die_Chrome_URL") }}

- -

{{ languages( { "en": "en/XUL_Tutorial/XUL_Structure", "es": "es/Tutorial_de_XUL/Estructura_XUL", "ja": "ja/XUL_Tutorial/XUL_Structure", "pl": "pl/Kurs_XUL/Struktura_XUL","fr": "fr/Tutoriel_XUL/La_structure_XUL" } ) }}

diff --git "a/files/de/archive/mozilla/xul/\303\244nderungen_an_xul_f\303\274r_firefox_1.5/index.html" "b/files/de/archive/mozilla/xul/\303\244nderungen_an_xul_f\303\274r_firefox_1.5/index.html" deleted file mode 100644 index 685c091888..0000000000 --- "a/files/de/archive/mozilla/xul/\303\244nderungen_an_xul_f\303\274r_firefox_1.5/index.html" +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Änderungen an XUL für Firefox 1.5 -slug: Archive/Mozilla/XUL/Änderungen_an_XUL_für_Firefox_1.5 -tags: - - Firefox 1.5 - - XUL -translation_of: Archive/Mozilla/XUL/XUL_Changes_for_Firefox_1.5 ---- -

Diese Seite liefert eine Übersicht über die wichtigsten Änderungen an XUL in Firefox 1.5 (Gecko 1.8). Weitere Änderungen, von denen man wissen sollte, beschreibt die Seite XUL Anwendungen für Firefox 1.5 anpassen.

-

<scrollcorner>

-

Es wurde das Element <scrollcorner> hinzugefügt, welche für den kleinen Kasten an der Überkreuzung von horizontalen und vertikalen Scrollbalken benutzt wird.

-

<richlistbox> und <richlistitem>

-

Die Elemente <richlistbox> und <richlistitem> werden zur Darstellung von Listen beliebigen Inhalts benutzt. Das erst genannte funktioniert ähnlich wie <listbox>, welches vorwiegend für Listen mit Texteinträgen entworfen wurde. Die <richlistbox> hat größtenteils die gleiche API wie <listbox> und einzelne Einträge, die mithilfe von <richlistitem> erzeugt wurden, können ausgewählt werden. Siehe Richlistbox für weiterführende Information.

-

System für Voreinstellungen

-

Einige Elemente wurden hinzugefügt, mit denen Voreinstellungsfenster erzeugt werden können. Diese Fenster sind spezielle Typen von Dialogfenstern, die mehrere Panels unterstützen, welche jeweils zusammen in der gleichen Datei oder in einer eigenen Datei gespeichert werden können. Ein Satz von Icons wird am oberen Rand des Dialogfensters angezeigt und erlaubt dem Benutzer das Umschalten zwischen den Panels. Zusammen mit den neuen Elementen und einigen zusätzlichen Attributen für bestehende Elemente ermöglichen sie auf einfache Weise das Setzen von Voreinstellungen, ohne dafür Code benutzen zu müssen. Für weiterführende Information, siehe Preferences System.

-

bfcache

-

Mozilla speichert nun das DOM der Seite zwischen. Daher führt das Navigieren vor und zurück nicht zu einem Neuladen der Seite, was die Navigation sehr viel effizienter macht. Die Ereignisse pageshow und pagehide treten beim Umschalten von einer Seite im Zwischenspeicher auf, wohingegen die Ereignisse load und unload nur beim Laden und Entladen einer Seite auftreten.

-

Für weiterführende Information siehe: Benutzen des Zwischenspeichers in Firefox 1.5.

-

tabIndex

-

Die Eigenschaft tabIndex wird nun auf die meisten Elemente angewendet.

-

<radiogroup>

-

Das Setzen der value Eigenschaft eines <radiogroup> Elements führt zur Auswahl des <radio> Elements in der Gruppe mit dem entsprechenden Wert.

-

Dialog: defaultButton Eigenschaft

-

Die Bindung des <dialog> Elements besitzt nun die Eigenschaft defaultButton. Das Setzen dieser Eigenschaft ändert die Standardschaltfäche des Dialogfensters. Die eine Möglichkeit ist die Angabe einer der Schaltflächen der <dialog>-Bindung (anhand des Namens); die andere ist none, dann ist keine Schaltfläche die Standardschaltfläche.

-

Schaltfläche: icon Eigenschaft

-

Die icon Eigenschaft einer Schaltfläche ermöglicht die Verwendung vordefinierter Icons als Bild der Schaltfläche. Beispielsweise erzeugt <button icon="help"> eine Schaltfläche mit einem Hilfe-Icon. Dies wird typischerweise auf Systemen mit GNOME eingesetzt, die möglichen Werte sind hier: accept, cancel, help, open, save, find, clear, yes, no, apply, close, print, add, remove, refresh, go-forward, go-back, properties, select-font, select-color, network.

-

<menulist>

-

Einträge in einer <menulist> können ein description Attribut haben, um zusätzlich beschreibenden Text neben dem Namen eines Eintrags anzuzeigen. Die Änderungsmethoden appendItem und insertItemAt von menulist verlangen ein zusätzliches description Argument, wenn Einträge auf diese Weise erzeugt werden.

-

<listbox>

-

Die Methode removeItemAt war augrund eines Fehlers ({{ Bug(236068) }}) manchmal nicht nullbasiert. Dies wurde in Firefox 1.5 behoben und Code, der sich auf dieses nicht nullbasierte Verhalten verlässt, sollte entsprechend geändert werden.

-

<stringbundle>

-

Das <stringbundle> Element hat eine Eigenschaft strings dazu bekommen, die eine Aufzählung aller im Bündel enthaltenen Zeichenketten ermöglicht.

-

Ziehbare Reiter

-

Von jetzt an erlaubt der Tab-Browser ein Neuanordnen der Reiter durch einfaches Ziehen.

-

<tabbox>

-

Das <tabbox> Element besitzt nun ein Attribut selectedIndex zur Angabe desjenigen Reiters, der standardmäßig gewählt sein soll.

-

Überlagerungen dynamisch laden

-

XUL untersützt nun das dynamische Laden von Überlagerungen mithilfe der Funktion document.loadOverlay.

-
-

Information zum Originaldokument

- -
-

{{ languages( { "en": "en/XUL_Changes_for_Firefox_1.5", "fr": "fr/Modifications_XUL_pour_Firefox_1.5", "ja": "ja/XUL_Changes_for_Firefox_1.5", "pl": "pl/Zmiany_w_XUL-u_w_Firefoksie_1.5" } ) }}

diff --git a/files/de/archive/mozilla/xulrunner/index.html b/files/de/archive/mozilla/xulrunner/index.html deleted file mode 100644 index f4f7b708d4..0000000000 --- a/files/de/archive/mozilla/xulrunner/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: XULRunner -slug: Archive/Mozilla/XULRunner -tags: - - XUL - - XULRunner -translation_of: Archive/Mozilla/XULRunner ---- -
XULRunner Einführung
-Eine kurzes Tutorial zu XULRunner.
- -
XULRunner ist ein Mozilla-Laufzeitpaket, welches genutzt werden kann, um XUL+XPCOM-Anwendungen auszuführen. Es stellt Mechanismen zur Installation, Aktualisierung und Deinstallation solcher Anwendungen bereit. XULRunner stellt weiterhin libxul bereit, eine Lösung, welche es erlaubt Mozilla-Technologien in andere Projekte und Produkte einzubetten.
- - - - - - - - -
-

Veröffentlichungen

- -
-

XULRunner 1.9.2 wurde veröffentlicht und kann unter ftp.mozilla.org heruntergeladen werden. Siehe auch: Versionsinformationen zur Installation, Deinstallation, und für weitere Informationen zu dieser Version.

- -

Firefox 3 und höher sind mit einem XULRunner Paket ausgestattet, welches jede kompatible XULRunner Anwendung über den -app Parameter benutzen kann.

- -

Ältere Versionen sind auch verfügbar.

-
- -

Überblick

- - - -

Dokumentation

- -
-
XULRunner Einführung
-
Eine kurze Einführung in XULRunner.
-
XULRunner Tipps
-
Eine Sammlung von Tipps zum Arbeiten mit XULrunner.
-
XULRunner 1.8 verwenden
-
Dieser Artikel beschreibt, wie man XULRunner 1.8 als eigenständige Anwendung verwendet.
-
XULRunner Hall of Fame
-
Auflistung aller verfügbaren Anwendungen, die auf XULRunner basieren.
-
Build Dokumentation
-
Wie man den Quelltext bekommt und kompiliert.
-
Debug Dokumentation
-
Schritte, die man benötigt, um Venkman zum Debuggen zu konfigurieren.
-
- -

Alles anzeigen...

-
-

Community

- -
    -
  • Mozillas Plattform Foren:
  • -
- -

{{ DiscussionList("dev-platform", "mozilla.dev.platform") }}

- - - -

Verwandte Themen

- -
-
XUL
-
-
- -

 

diff --git a/files/de/archive/rss/index.html b/files/de/archive/rss/index.html deleted file mode 100644 index e160b25010..0000000000 --- a/files/de/archive/rss/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: RSS -slug: Archive/RSS -tags: - - RSS -translation_of: Archive/RSS ---- -
Einführung
-Dieses Tutorial soll Anfängern den Einstieg in RSS erleichtern.
-
Really Simple Syndication (RSS) ist ein weit verbreitetes HTML-ähnliches und XML-basierendes Datenformat, welches zum Austausch von Inhalten benutzt wird. RSS hat eine schäbige Geschichte und eine Vielzahl an unterschiedlichen inkompatiblen RSS Versionen (einige sind auf RDF basiert, aber die meisten sind auf XML basiert). Nichtsdestotrotz ist RSS ein extrem populäres Format, das für den Austausch von Nachrichten, Blogposts, IPradio, IPTV und vielem mehr bestens geeignet ist und enorm an Fahrt gewonnen hat.
- -

Dokumentation

Why RSS Slash is Popular - Counting Your Comments (en)
Ein Artikel von Charles Iliya Krempeaux über das RSS Slash Modul, warum es so populär ist und wie es man schafft einen Zähler für seine Kommentare bereit zu stellen.
Why Well-Formed Web RSS Module is Popular - Syndicating Your Comments (en)
Ein Artikel von Charles Iliya Krempeaux über das RSS Well-Formed Web Modul, warum es so populär ist und wie man damit Kommentare verlinkt.
The Myth of RSS Compatibility (en)
Mark Pilgrim schildert die schäbige Geschichte von RSS und Details zur Inkompatibilität zwischen jeder Version.
Atomic RSS (en)
Tim Bray schildert die Benutzung von Atom 1.0 als Mikroformat und erweiterndes Modul für RSS 2.0 sowie das Beibehalten von RSS 2.0 als Austauschformat, allerdings mit integrierten, ausgewählten Atom 1.0 Elementen.

Alle ansehen...

Community

  • Mozillas XML-Foren:

{{ DiscussionList("dev-tech-xml", "mozilla.dev.tech.xml") }}

RDF, XML
-

{{ languages( { "en": "en/RSS","es": "es/RSS", "fr": "fr/RSS", "it": "it/RSS", "ja": "ja/RSS", "pl": "pl/RSS", "pt": "pt/RSS", "ko": "ko/RSS" } ) }}

diff --git a/files/de/archive/themes/index.html b/files/de/archive/themes/index.html deleted file mode 100644 index a440be2e7a..0000000000 --- a/files/de/archive/themes/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Themes -slug: Archive/Themes -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Themes ---- -

Archived theme documentation.

- -

{{Listsubpages("/en-US/docs/Archive/Themes", 10)}}

diff --git a/files/de/archive/web-standards/index.html b/files/de/archive/web-standards/index.html deleted file mode 100644 index 6b29b8e71c..0000000000 --- a/files/de/archive/web-standards/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Webstandards -slug: Archive/Web-Standards -tags: - - Webstandards -translation_of: Archive/Web_Standards ---- -
- Webstandards wurden sorgfältig entworfen, um für die größtmögliche Zahl von Internet-Nutzern den größtmöglichen Nutzen zu erzielen und gleichzeitig die Langlebigkeit von im Internet veröffentlichten Dokumenten sicherzustellen. Wer sich beim Entwerfen und Erstellen von Websites an diese Standards hält, vereinfacht die Produktion und senkt die Kosten, während gleichzeitig Websites entstehen, die für mehr Menschen und mehr webfähige Endgeräte zugänglich sind. Websites, die gemäß dieser Richtlinien entwickelt wurden, bleiben auch dann voll funktionsfähig, wenn sich herkömmliche Desktop-Browser verändern und neue internetfähige Endgeräte auf den Markt kommen.{{ Ref(1) }}
- - - - - - - -
-

Dokumentation

-
-
- Anwendungen vom Internet Explorer zu Mozilla migrieren
-
- Jemals Probleme mit Internet Explorer-spezifischen Webanwendungen unter Mozilla gehabt? In diesem Artikel werden geläufige Probleme bei der Verwendung von IE-Anwendungen unter Mozilla-basierenden Browsern erläutert.
-
- Verwendung von Webstandards
-
- Dieser Artikel liefert einen Überblick über die Einhaltung von W3C Webstandards für die Inhalte der eigenen Webseite.
-
- Wahl von Webstandards gegenüber proprietären Praktiken
-
- In der Welt der (Web-)Entwicklung gibt es einen Bedarf an Standards, weil Anwendungen für für mehrere Entwicklergruppen entworfen werden.
-
- Vorteile von Webstandards
-
- Wie das Festhalten an Webstandards sowie die Verminderung von proprietären Markup und Technologien dazu beitragen kann, geschäftliche Ziele zu erreichen.
-
-
-

Community

-

Mozillas Webstandardsforen

-
- {{ DiscussionList("dev-web-development", "mozilla.dev.web-development") }}
- -

Tools

- -

Beispiele

- -

Verwandte Themen

-
-
- CSS, DHTML, HTML, Webentwicklung, XHTML, XML
-
-
-

{{ endnote("1") }} - The Web Standards Project

diff --git a/files/de/archive/web-standards/rdf_in_mozilla_faq/index.html b/files/de/archive/web-standards/rdf_in_mozilla_faq/index.html deleted file mode 100644 index cbd3c1194b..0000000000 --- a/files/de/archive/web-standards/rdf_in_mozilla_faq/index.html +++ /dev/null @@ -1,264 +0,0 @@ ---- -title: RDF in Mozilla FAQ -slug: Archive/Web-Standards/RDF_in_Mozilla_FAQ -tags: - - RDF -translation_of: Archive/Web_Standards/RDF_in_Mozilla_FAQ ---- -

Allgemeines

-

Wo fange ich an?

-

RDF dient zwei primären Zielen in Mozilla. Erstens ist es eine einfache, plattformübergreifende Datenbank für kleinere Datenmengen und zweitens - und das ist der Hauptgrund - wird das RDF-Modell zusammen mit XUL Templates als eine abstrakte "API" zur Anzeige von Informationen benutzt. RDF in fünfzig Worten oder weniger ist eine kurze Beschreibung auf hohem Niveau, was RDF in Mozilla macht. Die RDF Back-End Architektur beschreibt die RDF Implementierung in Mozilla detaillierter und gibt eine kurze Übersicht der beteiligten Schnittstellen.

-

Wo finde ich Informationen über Open Directory ("dmoz")?

-

Detaillierte Informationen zu Open Directory gibt es auf www.dmoz.org. Das Open Directory Datenset ist als (riesiger) RDF/XML Dump verfügbar. Es beschreibt tausende von Webseiten, die eine Mischung aus dem Dublin Core Metadaten-Vokabular und der DMoz Klassifizierung benutzen. Für mehr Informationen zu diesem Thema lesen Sie bitte die DMoz RDF Seiten oder odp-rdf-announce für Änderungen an dessen genauem Datenformat. Die Seite ChefMoz (gemeinnütziger Restaurantführer) ist auch als RDF verfügbar.

-

Wenn Sie Probleme mit den Daten von DMoz bzw. ChefMoz haben, ist es das Beste, die Leute hinter diesen Projekten direkt zu kontaktieren. Aber wenn Sie etwas Interessantes mit diesem Inhalt machen (z.B. ihn in Mozilla benutzen, um beispielsweise Teile davon in das XUL UI von einer entfernten Seite zu laden), vergessen Sie bitte nicht, es mozilla-rdf und die RDF Interest Group wissen zu lassen. Diese Gruppen sind wahrscheinlich auch an Tools interessiert, die die DMoz Daten säubern, umgestalten oder speichern. Besuchen Sie die Seiten, die ODP Daten benutzen, um einige Verzeichnisse zu sehen, die auf den ODP RDF Dumps basieren.

-

Was ist eine Datenquelle?

-

RDF kann für gewöhnlich auf zwei verschiedene Arten angezeigt werden: Entweder als Datenmenge mit Knoten und Bogen oder als Gruppierung logischer Aussagen. Eine Datenquelle ist eine Teilmenge (oder eine Ansammlung von Aussagen, abhängig von Ihrem Standpunkt), die aus bestimmten Gründen zusammengefasst werden. Einige Beispiele für bereits existierende Datenquellen sind Browser Lesezeichen, Browser Verlauf, IMAP E-Mail Accounts, NNTP News Server und RDF/XML Dateien.

-

In Mozilla können Datenquellen mit Hilfe der Composite Data Source zusammengefasst werden. Dies entspricht dem Überlagern von Datenmengen oder dem Zusammenfassen von Gruppen von Aussagen. Aussagen über die selbe RDF Ressource können dann gemischt werden: Zum Beispiel das Datum des letzten Besuchs einer bestimmten Webseite kommt aus dem globalen Browser-Verlauf und die Tastenkombination zum Erreichen der Webseite per Tastatur kann aus der Datenquelle für die Browser-Lesezeichen stammen. Beide Datenquellen gehören zur Webseite, die über die URL angesprochen wird: Das ist der Schlüssel, der es erlaubt, die Datenquellen korrekt zu verbinden.

-

Für eine detailliertere Beschreibung, wie man Datenquellen schreibt, lesen Sie sich bitte das RDF Datenquellen Tutorial durch.

-

Wie verwaltet Mozilla Datenquellen?

-

Der RDF Service verwaltet eine Tabelle aller geladenen Datenquellen. Die Tabelle ist mit der URI der Datenquelle verbunden, welche entweder die URL einer RDF/XML Datei oder eine spezielle URI mit "rdf:" am Anfang ist, welche auf eine eingebaute Datenquelle zielt.

-

Datenquellen können über den RDF Service unter Verwendung der GetDataSource() Methode bezogen werden. Wenn sich das URI Argument auf eine URL einer RDF/XML Datei bezieht, wird der RDF Service eine RDF/XML Datenquelle erstellen und diese asynchron parsen. Die Datenquelle bleibt im Cache bis die letzte Referenz der Datenquelle ausgegeben wurde.

-

Wenn sich das URI-Argument auf eine eingebaute Datenquelle bezieht, wird der RDF Service den XPCOM Component Manager verwenden, um eine Komponente zu laden, deren ContractID über eine spezielle URI geladen wurde: prefix@mozilla.org/rdf/datasource;1?name=.

-

Zum Beispiel,

-
rdf:foo
-
-

Würde folgendes laden::

-
@mozilla.org/rdf/datasource;1?name=foo
-
-

Wie bei RDF/XML Datenquellen, wird eine Datenquelle über diesen Weg solange im Cache bleiben die letzte Referenz ausgegeben wurde.

-

Wie erstelle ich eine Datenquelle aus einer RDF/XML Datei?

-

Sie können entweder eine RDF/XML Datenquelle über die RDF Service GetDataSource() Methode erstellen:

-
// Get the RDF service
-var RDF =
-  Components
-  .classes["@mozilla.org/rdf/rdf-service;1"]
-  .getService(Components.interfaces.nsIRDFService);
-// ...and from it, get the datasource. Make sure that your web server
// dishes it up as text/xml (recommended) or text/rdf!
-var ds = RDF.GetDataSource("http://www.mozilla.org/some-rdf-file.rdf"); -// Note that ds will load asynchronously, so assertions will not
// be immediately available
-
-

Alternativ können Sie eine direkt erstellen, indem Sie den XPCOM Component Manager nutzen, so wie im folgendem Codeausschnitt dargestellt:

-
// Create an RDF/XML datasource using the XPCOM Component Manager
-var ds =
-  Components
-  .classes["@mozilla.org/rdf/datasource;1?name=xml-datasource"]
-  .createInstance(Components.interfaces.nsIRDFDataSource);
-// The nsIRDFRemoteDataSource interface has the interfaces
// that we need to setup the datasource.
-var remote = - ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); -// Be sure that your web server will deliver this as text/xml (recommended) or text/rdf! -remote.Init("http://www.mozilla.org/some-rdf-file.rdf"); -// Make it load! Note that this will happen asynchronously. By setting
// aBlocking to true, we could force it to be synchronous, but this
// is generally a bad idea, because your UI will completely lock up!
-remote.Refresh(false); -// Note that ds will load asynchronously, so assertions will not
// be immediately available
-
-

Sie können sich auch dafür entscheiden, die RDF/XML Datenquelle "manuell" zu erstellen, wenn Sie diese synchron statt asynchron laden wollen.

-

Wie lade ich eine RDF/XML Datenquelle neu?

-

Sie können eine RDF/XML Datenquelle (oder jede andere Datenquelle, die nsIRDFRemoteDataSource unterstützen) neu laden, indem Sie die Refresh() Methode von nsIRDFRemoteDataSource nutzen. Refresh() nimmt einen Parameter an, welcher angibt, ob Sie die Operation synchron ("blocking") oder asynchron ("non-blocking") ausführen möchten. Sie sollten niemals einen synchronen Ladevorgang durchführen, wenn Sie nicht wirklich wissen, was Sie tun: Das wird die Benutzeroberfläche zum Einfrieren bringen bis der Ladevorgang abgeschlossen ist!

-

Wie kann ich feststellen, ob eine RDF/XML Datenquelle geladen wurde?

-

Über die nsIRDFRemoteDataSource Schnittstelle ist es möglich die Eigenschaft "loaded" zu befragen, um zu bestimmen, ob die Datenquelle geladen wurde oder nicht:

-
// Get the RDF service
-var RDF =
-  Components
-  .classes["@mozilla.org/rdf/rdf-service;1"]
-  .getService(Components.interfaces.nsIRDFService);
-// Get the datasource.
-var ds = RDF.GetDataSource("http://www.mozilla.org/some-rdf-file.rdf");
-// Now see if it's loaded or not...
-var remote =
-  ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
-
-if (remote.loaded) {
-  alert("the datasource was already loaded!");
-}
-else {
-  alert("the datasource wasn't loaded, but it's loading now!");
-}
-
-

Sagen wir mal, dass die Datenquelle nicht geladen wurde und sie asynchron geladen werden wird. Über diese API und über JavaScript setTimeout() können wird eine Schleife erstellen, die kontinuierlich die "loaded" Eigenschaft prüft. Das ist sehr zusammengeschustert und schlecht, da kein fehlgeschlagener Ladevorgang erkannt wird, beispielsweise, wenn gar keine Daten in der URL vorhanden waren!

-

Aus diesem Grund gibt es ein Observer Interface, welche Ihnen erlaubt den Fortschritt der Datenquelle zu beobachten. Der folgende Code zeigt die Verwendung:

-
// This is the object that will observe the RDF/XML load's progress
-var Observer = {
-  onBeginLoad: function(aSink)
-    {},
-
-  onInterrupt: function(aSink)
-    {},
-
-  onResume: function(aSink)
-    {},
-
-  onEndLoad: function(aSink)
-    {
-      aSink.removeXMLSinkObserver(this);
-      alert("done!");
-    },
-
-  onError: function(aSink, aStatus, aErrorMsg)
-    { alert("error! " + aErrorMsg); }
-};
-// Get the RDF service
-var RDF =
-  Components
-  .classes["@mozilla.org/rdf/rdf-service;1"]
-  .getService(Components.interfaces.nsIRDFService);
-// Get the datasource.
-var ds = RDF.GetDataSource("http://www.mozilla.org/some-rdf-file.rdf");
-// Now see if it's loaded or not...
-var remote =
-  ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
-
-if (remote.loaded) {
-  alert("the datasource was already loaded!");
-}
-else {
-  alert("the datasource wasn't loaded, but it's loading now!");
-  // RDF/XML Datasources are all nsIRDFXMLSinks
-  var sink =
-    ds.QueryInterface(Components.interfaces.nsIRDFXMLSink);
-  // Attach the observer to the datasource-as-sink
-  sink.addXMLSinkObserver(Observer);
-  // Now Observer's methods will be called-back as
// the load progresses.
-} -
-

Beachten Sie, dass der Observer an der RDF/XML Datenquelle angehängt bleibt, bis removeXMLSinkObserver aufgerufen wurde.

-

Wie bekomme ich Zugang zu den Informationen in einer Datenquelle?

-

Das nsIRDFDataSource Interface ist ein Hilfsmittel mit dem Sie die Assertions der Datenquelle erreichen und verändern können.

- -

Sie können außerdem RDF Container Schnittstellen verwenden, um Zugang zu Informationen der RDF Container zu erhalten.

-

Wie kann ich Informationen in der Datenquelle ändern?

-

Um 'Assert' verwenden zu können, um eine Assertion hinzuzufügen und 'Unassert' zu verwenden, um eine zu entfernen, lesen Sie Mozilla RDF Back end Architecture (engl.).

-
ds.Assert(homepage, FV_quality, value, true);
-ds.Unassert(homepage, FV_quality, value, true);
-
-

Wie mache ich Änderungen an einer RDF/XML Datenquelle rückgängig?

-

Eine RDF/XML Datenquelle kann über QueryInterface() der nsIRDFRemoteDataSource Schnittstelle gesteuert werden. Dieses Interface hat eine Flush() Methode, welche versuchen wird, die Inhalte der Datenquelle zurück zur URL, von der Sie kommen, wiederherzustellen. Das geschieht über ein speziellen Protokollmechanismus (z.B., schreibt eine "file:" URL nur die Datei; eine "http:" URL kann einen HTTP-POST ausführen). Flush() schreibt nur zur Datenquelle, wenn sich die Inhalte geändert haben.

-

Wie füge ich zwei oder mehr Datenquellen zusammen, um sie als eine zu sehen?

-

Verwenden Sie nsIRDFCompositeDataSource. Dieses Interface ist von nsIRDFDataSource abgeleitet. Eine Implementierung dieser Schnittstelle kombiniert typischerweise die Aussagen mehrerer Datenquellen zusammen als eine Sammlung. Weil das nsIRDFCompositeDataSource Interface von nsIRDFDataSource abgeleitet ist, kann es genau so abgefragt und verändert werden wie eine individuelle Datenquelle.

-

Wie bekomme ich Zugang zu "eingebauten" Datenquellen?

-

Eine eingebaute Datenquelle ist eine lokal installierte Komponente, die nsIRDFDataSource implementiert. Zum Beispiel den Bookmarks Service. Prüfen Sie zunächst hier, um sicher zu gehen, dass sie Zugang zu einer eingebauten Datenquelle haben. Es gibt mehrere Sicherheitsbeschränkungen für den Zugang zu eingebauten Datenquellen von "unsicherem" XUL und JS.

-

Da eine eingebaute Datenquelle nur eine XPCOM Komponente ist, können Sie diese direkt über den XPConnect Component Manager instanzieren.

-
// Use the component manager to get the bookmarks service
-var bookmarks =
Components.
classes["@mozilla.org/rdf/datasource;1?name=bookmarks"].
getService(Components.interfaces.nsIRDFDataSource);
- -// Now do something interesting with it... -if (bookmarks.HasAssertion( - RDF.GetResource("http://home.netscape.com/NC-rdf#BookmarksRoot"), - RDF.GetResource("http://home.netscape.com/NC-rdf#child"), - RDF.GetResource("http://home.netscape.com/NC-rdf#PersonalToolbarFolder"), - true) { - // ... -} -
-

Alternativ haben einige Datenquellen "spezielle" RDF-freundliche ContractIDs, die es einfach machen, die Datenquelle über die nsIRDFSerivce GetDataSource() Method zu instantiieren oder die Datenquellenattribute auf einem XUL Template. Diese ContractIDs haben die Form

-
@mozilla.org/rdf/datasource;1?name=name
-
-

und sind über GetDataSource() und die Datenquellenattribute über den Kürzel "rdf:name" erreichbar. Beispielsweise zeigt der folgende Codeausschnitt, wie man den Bookmark Service als eine Datenquelle in ein XUL Template hinzufügt.

-
<tree datasources="rdf:bookmarks">
-  ...
-</tree>
-
-

Wie manipuliere ich RDF "container"?

-

Um einen RDF "container" (ein <rdf:Seq>, zum Beispiel) zu manipulieren, können Sie nsIRDFContainerUtils verwenden, welche als Service mit der folgenden ContractID instantiiert werden kann:

-
@mozilla.org/rdf/container-utils;1
-
-

Sie können diesen Service verwenden, um zu ermitteln, ob etwas ein RDF Container ist, indem Sie IsSeq(), IsBag() und IsAlt() benutzen. Sie können eine Quelle in einen Container machen, wenn das nicht schon der Fall ist, in dem Sie MakeSeq(), MakeBag() oder MakeAlt() verwenden. Diese Methoden geben einen nsIRDFContainer zurück, welcher Ihnen erlaubt Container-ähnliche Operationen auszuführen und das Sie sich Ihre Hände schmutzig machen.

-

Alternativ, wenn Ihre Datenquelle bereits ein Objekt hat, welches ein RDF Container ist, können Sie ein nsIRDFContainer Objekt mit der folgenden Zeile instantiieren:

-
@mozilla.org/rdf/container;1
-
-

Mit der ContractID und Init() mit der Datenquelle und der Ressource als Parameter. Beachten Sie, dass dies fehlschlagen wird, wenn die Ressource nicht bereits ein Container ist.

-

XUL Templates

-

XUL Templates werden durch die Angabe eines Datenquellenattributs für ein Element in einem XUL Dokument festgelegt.

-

Es gibt zwei Arten von XUL Templates. Die einfache Art, welche aktuell die meist genutzte im Mozilla Code ist, und die erweiterte Art, welche anspruchsvolle Muster im RDF Graphen bietet. Siehe Vorlagen Tutotrial.

-

Was ich mit einem XUL Template machen?

-

Sie können jede Art von Inhalt mit einem XUL Template verarbeiten. Sie können jede Art von Tags in dem <action> Bereich des <rule> Tags verwenden (auch HTML oder beliebiges XML).

-

Wann sollte ich ein XUL Template verwenden?

-

Eine Alternative zur Verwendung von RDF und XUL Templates ist die Verwendung von W3C DOM APIs, um XUL (oder HTML) Inhaltsmodelle zu verändern. Es kann jedoch sein, dass es dann etwas umständlich werden kann:

-
  1. Es gibt mehrere "views" der Daten. Zum Beispiel erkennen Mozilla mail/news die Verzeichnisstruktur in der Toolbar, das "folder pane", in mehreren Menüs und in einigen Dialogen. Um nicht drei Stücke JS (oder C++) Code zum Aufbau der DOM Trees für <menubutton>, <menu> and <tree> Inhaltsmodell zu erstellen, schreiben Sie einfach drei kompakte Regeln für jedes Inhaltsmodell.
  2. Die Daten können sich verändern. Zum Beispiel kann ein mail/news Benutzer IMAP Ordner löschen oder hinzufügen. (Beachten Sie wie diese Aufgabe das Inhaltsmodell verkompliziert). Der XUL Template Builder verwendet Regeln, um automatisch alle Inhaltsmodelle synchron zu halten.
  3. -
-

Um die Vorteile dieser Funktionen zu nutzen, müssen Sie natürlich in der Lage sein, Ihre Informationen nach der RDF datasource API auszudrücken, entweder durch die Verwendung des eingebauten Datenquellenspeichers, durch RDF/XML zum Speichern Ihrer Informationen oder durch das Schreiben Ihrer eigenen Implementierung (möglicherweise in JavaScript) der nsIRDFDataSource Schnittstelle.

-

Was wird geladen, wenn ich "datasources=" festlege?

-

Das "datasources" Attribut in der Wurzel eines Templates legt eine Leerzeichen-getrennte Liste von Datenquellen URIs zum Laden fest. Aber was ist eine "Datenquellen URI"? Entweder:

- -

In beiden Fällen wird die Datenquelle über die GetDataSource() Methode der nsIRDFService Schnittstelle geladen, daher wird es ähnlich verwaltet wie alle anderen Datenquellen, die auf diesem Weg geladen werden.

-

Was ist das Sicherheitsmodell für RDF/XML in XUL?

-

XUL wird von einer "vertrauten" URL geladen. Jede "chrome:" URL kann jede Datenquellen-URI über das Datenquellenattribut des XUL Templates festlegen.

-

XUL, welches von einer "unvertrauten" URL geladen wurde, kann nur ein RDF/XML Dokument aus der gleichen Codebase (im Sinne von Java) festlegen. Keine speziellen (z.B., rdf:) Datenquellen können von unsicherem XUL geladen werden.

-

Wie füge ich eine Datenquelle zu einem XUL Template hinzu?

-

Obwohl es möglich ist ein XUL Template mit einem eingeschlossenen Set von Datenquellen durch das Datenquellenattribut auszustatten, gibt es oft Situationen bei denen Sie nicht wissen, welche Datenquelle geladen werden soll, bis das XUL geladen wurde. Beispielsweise muss Ihr XUL die Datenquellen erst berechnen, daher brauchen Sie eine onload Routine. Oder es muss eine Datenquelle auf Basis der Benutzeraktionen hinzugefügt werden.

-

Hier ist ein einfaches Beispiel, welches zeigt wie man dies machen kann. fangen wir mit dem folgendem XUL an.

-
<window xmlns="http://www.mozilla.org/keymaster/gat...re.is.only.xul">
-  ...
-  <tree id="my-tree" datasources="rdf:null">
...
</tree>
- ... -</window> -
-

Nehmen wir an, dass wir die Datenquelle irgendwie erhalten haben. Der folgende Beispielcode zeigt, wie man eine Datenquelle zu einem Template hinzufügtund dann das Template auffordert, sich selbst auf Basis der neuen Daten neu zu laden.

-
var ds = /* assume we got this somehow! */;
-// Get the DOM element for 'my-tree'
-var tree = document.getElementById('my-tree');
-// Add our datasource to it
-tree.database.AddDataSource(ds);
-// Force the tree to rebuild *now*. You have to do this "manually"!
-tree.builder.rebuild();
-
-

Jedes XUL Element mit einem "datasources" Attribut wird eine Datenbank- und eine Builder-Eigenschaft erhalten. Die Datenbankeigenschaft bezieht sich auf ein nsIRDFCompositeDataSource Objekt, welches die Datenquellen aus denen ein Template erstellt wird, enthält.

-

Der Builder-Eigenschaft bezieht sich auf ein nsIXULTemplateBuilder Objekt, welches ein "builder" ist, der den Status der Template-Inhalte verwaltet.

-

Hinweis zur rdf:null Datenquelle: Das ist eine spezielle Datenquelle, die sagt, "Hey, Ich habe noch keine Datenquelle für dich, aber ich werde später eine hinzufügen, also mach dich bereit!" Die database und builder Eigenschaften werdn eingerichtet, aber lassen die Datenbank der Datenquellen leer: Sie müssen diese selbst hinzufügen!

-

Kann ich ein XUL Template über DOM APIs manipulieren?

-

Ja: Sie können Regeln hinzufügen und Regeln entfernen, eine Abfrage ändern und den Inhalt, der durch eine Regel erzeugt wird, ändern. Sie können sogar alles über die W3C DOM APIs verändern.

-

Die einzige Einschränkung ist, dass Sie rebuild() aufrufen müssen, bevor die Änderungen sichtbar werden (so als wenn Sie eine Datenquelle zu einem XUL Template hinzufügen).

-

Wie füge ich Plaintext aus einem Template hinzu?

-

Um Plaintext in ein Template hinzuzufügen, verwenden Sie das <text> Element.

-
<template>
-  <rule>
-    <query>...</query>
-    <binding>...</binding>
-    <action>
-      <text value="?some-variable" />
-    </action>
-  </rule>
-</template>
-
-

Das obige Template wird ein Inhaltsmodell erstellen, dass eine Reihe von Textknoten zusammen ausführt.

-

Problemlösungen

-

Tipps und Tricks.

-

Meine RDF/XML Datei wird nicht geladen.

-

Der häufigste Grund dafür, dass RDF/XML nicht von einem Webserver geladen werden kann, ist ein falscher MIME Type. Stellen Sie sicher, dass Ihr Server die Datei als text/xml (empfohlen) oder als text/rdf ausliefert.

-

Beachten Sie, dass die W3C RDF Core WG application/rdf+xml registriert hat, aber dies noch nicht von Mozilla verstanden wird.

-

Ein weiteres, mögliches Problem: Für fern-geladenes XUL und RDF müssen Mozillas Sicherheitsbeschränkungen richtig eingestellt werden (siehe unten für Beispielcode). Wenn XUL nicht in Ihr RDF geladen wurde und der Mimetype OK ist, könnte dies Ihr Problem sein.

-

Sie können die rdfcat und rdfpoll Tools verwenden, um sicherzustellen, dass das RDF/XML valide ist. Beide Programme werden unter Windows geladen, wenn Sie configure --enable-tests festgelegt haben.

- -

Beide Programme sind zu langsam zum Laden und zum Laufen (aber sie werden laufen, letztendlich). Sie initialisieren XPCOM und bringen Necko dazu, die URLs zu laden und auszuführen, so wie es Mozilla tut.

-

Es passiert nichts nachdem ich AddDataSource aufgerufen habe.

-

Beachten Sie, dass der Template-Builder die Inhalte eines Templates nicht automatisch neu aufbaut nachdem AddDataSource oder RemoveDataSource aufgerufen wurden. Um die Inhalte des Templates zu erneuern, müssen Siel elt.builder.rebuild() selbst aufrufen.

-

Warum? Das kommt daher, weil man mehrere Rebuilds verhindern möchte, wenn mehr als eine Datenquelle zur Datenbank hinzugefügt wird.

-

Beispiele

-

Wo kann ich einige (funktionierende) Beispiele finden?

-

Einige Beispiele kann man hier finden. Einige sind in signierten Skripts enthalten und sind über HTTP direkt ausführbar.

-

Siehe auch duplicates.rdf (Live RDF Feed von Mozilla) und duplicates.xul. Beachten Sie, dass sie Mozillas Sicherheitsmodell einhalten müssen. Um das zu tun, fügen Sie die folgende Zeile in Ihre Preferences Datei hinzu. (Schließen Sie Mozilla erst, da sonst die Datei überschrieben wird, wenn Sie Mozilla beenden.)

-
user_pref("signed.applets.codebase_principal_support", true);
-
-

Mozilla wird Sie fragen, ob Sie den Skripten in duplicates.xul Rechte zum Zugang zu XPConnect geben wollen; stimmen Sie dem zu.

-

Aktuell erlaubt Mozilla kein unprivilegierten Zugang zu RDF Schnittstellen und Services; Siehe Bug 122846 für Details.

-

Bitte schicken Sie danbri, mozilla-rdf oder waterson eine Mail mit URLs, wenn Sie weitere Beispiele haben, die wir hier hinzufügen können!

-

Hinweise

-
  1. Siehe auch W3C RDF und Semantic Web für weitere Informationen über RDF und verwandte Technologien.
  2. -
-

Mitwirkende

- -

Autor: Chris Waterson

-
-

Informationen zum Originaldokument

- -
-

{{ languages( { "en": "en/RDF_in_Mozilla_FAQ", "es": "es/Preguntas_frecuentes_sobre_RDF_en_Mozilla", "ja": "ja/RDF_in_Mozilla_FAQ", "ko": "ko/RDF_in_Mozilla_FAQ" } ) }}

diff --git a/files/de/archive/web/index.html b/files/de/archive/web/index.html deleted file mode 100644 index 6f60d315ff..0000000000 --- a/files/de/archive/web/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Archived open Web documentation -slug: Archive/Web -tags: - - Archived - - NeedsTranslation - - TopicStub - - Web -translation_of: Archive/Web ---- -

The documentation listed below is archived, obsolete material about open Web topics.

-

{{SubpagesWithSummaries}}

diff --git a/files/de/archive/web/javascript/arguments.caller/index.html b/files/de/archive/web/javascript/arguments.caller/index.html deleted file mode 100644 index f2d9dd90ad..0000000000 --- a/files/de/archive/web/javascript/arguments.caller/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: arguments.caller -slug: Archive/Web/JavaScript/arguments.caller -tags: - - Functions - - JavaScript - - Obsolete - - Property - - arguments -translation_of: Archive/Web/JavaScript/arguments.caller ---- -
{{jsSidebar("Functions")}}
- -

{{obsolete_header}}

- -

Die veraltete Eigenschaft arguments.caller wird genutzt, um die Funktion, die die aktuelle Funktion ausführt, zu ermittelt. Die Eigenschaft wurde entfernt und kann nicht mehr genutzt werden.

- -

Beschreibung

- -

Die Eigenschaft ist nicht mehr verfügbar, aber man kann {{jsxref("Function.caller")}} benutzen.

- -
function whoCalled() {
-   if (whoCalled.caller == null)
-      console.log('I was called from the global scope.');
-   else
-      console.log(whoCalled.caller + ' called me!');
-}
- -

Beispiele

- -

Der folgende Quelltext wurde eingesetzt, um den Wert der Eigenschaft arguments.caller zu prüfen, jedoch funktioniert dieses nicht mehr.

- -
function whoCalled() {
-   if (arguments.caller == null)
-      console.log('I was called from the global scope.');
-   else
-      console.log(arguments.caller + ' called me!');
-}
-
- -

Spezifikationen

- -

Wurde in keinem Standard spezifiziert. Wurde in JavaScript 1.1 implementiert und wegen {{bug(7224)}} und potenziellen Sicherheitsrisiken wieder entfernt.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.functions.arguments.caller")}}

- -

Siehe auch

- - diff --git a/files/de/archive/web/javascript/ecmascript_7_support_in_mozilla/index.html b/files/de/archive/web/javascript/ecmascript_7_support_in_mozilla/index.html deleted file mode 100644 index 302b230c09..0000000000 --- a/files/de/archive/web/javascript/ecmascript_7_support_in_mozilla/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: ECMAScript 7 Unterstützung in Mozilla -slug: Archive/Web/JavaScript/ECMAScript_7_support_in_Mozilla -translation_of: Archive/Web/JavaScript/ECMAScript_Next_support_in_Mozilla ---- -
{{jsSidebar("New_in_JS")}}
- -

ECMAScript 2016 ist die nächste Erweiterung des ECMA-262 Standards. Neue Sprachfeatures sind bereits im Entwurf der 6. Edition vorgeschlagen und nähern sich der Vollendung. Die aktuellen Vorschläge lassen sich unter dem folgenden GitHub Repository ansehen tc39/ecma262.
- Aktuelle Probleme mit dem Spezifikationsprozess sollen durch die Einführung von Stages und Champions gelöst werden. Außerdem ist ein zweijähriger Release-Zyklus von dem Standard vorgeschlagen.
-
-  Link für weitere Informationen über den post-ES6 Spezifikationsprozess.

- -

Mailing-Liste zur Diskussion von ECMAScript standards: es-discuss

- -

Experimentale Features

- -

Die folgenden Features sind bereits implementiert, jedoch nur zugänglich in Firefox Nightly channel:

- -

Zusätze zu dem Array Objekt

- - - -

Zusätze zu dem ArrayBuffer Objekt

- - - -

Neue TypedObject Objekte

- - - -

Neue SIMD Objekte

- - - -

Features mit zunehmender Stabilität

- -

The following features are supported beyond the Nightly channel, but ongoing specification and implementation work is happening. Features which were originally in the ECMAScript 6 draft and got postponed to ECMAScript 2016 are likely to appear here.

- -

Ausdrücke

- - - -

Noch nicht unterstütze Features

- -

The following features are not yet implemented, but targeted for ECMAScript 2016.

- - - -

Weiterführend

- - diff --git a/files/de/archive/web/javascript/index.html b/files/de/archive/web/javascript/index.html deleted file mode 100644 index 4687b7bf23..0000000000 --- a/files/de/archive/web/javascript/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: JavaScript -slug: Archive/Web/JavaScript -translation_of: Archive/Web/JavaScript ---- - - -

{{Obsolete_Header}}

- -

Obsolete JavaScript features and unmaintained docs

- -

{{SubpagesWithSummaries}}

diff --git a/files/de/archive/web/javascript/legacy_generator_function/index.html b/files/de/archive/web/javascript/legacy_generator_function/index.html deleted file mode 100644 index 8e05b218bd..0000000000 --- a/files/de/archive/web/javascript/legacy_generator_function/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Alter Generatorfunktionsausdruck -slug: Archive/Web/JavaScript/Legacy_generator_function -tags: - - JavaScript - - Legacy Iterator - - Reference -translation_of: Archive/Web/JavaScript/Legacy_generator_function ---- -
Der alte Generatorfunktionsausdruck war eine SpiderMonkey spezifische Funktion, welche in Firefox 58+ entfernt wurde. Für zukünftige Verwendung sollte der {{jsxref("Operators/function*", "function* Ausdruck")}} genutzt werden.
- -
{{jsSidebar("Operators")}}
- -

Das function Schlüsselwort kann benutzt werden, um eine alte Generatorfunktion in einem Ausdruck zu definieren. Um eine Funktion einen alten Generator zu machen, muss der Funktionskörper mindestens einen {{jsxref("Operators/yield", "yield")}} Ausdruck enthalten.

- -

Syntax

- -
function [name]([param1[, param2[, ..., paramN]]]) {
-   statements
-}
- -

Parameter

- -
-
name
-
Der Funktionsname. Kann in fällen einer anonymen Funktion weggelassen werden. Der Name ist nur lokal im Funktionskörper verfügbar.
-
paramN
-
Der Name eines Argumentes, welches der Funktion übergeben wird. Eine Funktion kann bis zu 255 Argumente haben.
-
statements
-
Die Statements, welche den Funktionskörper bilden. Diese müssen mindestens ein {{jsxref("Operators/yield", "yield")}} Ausdruck enthalten.
-
- -

Beschreibung

- -

Ein Überblick über den Einsatz ist auf der Iteratoren und Generatoren Seite verfügbar.

- -

Browserkompatibilität

- -

Kein Support.

- -

Siehe auch

- - diff --git a/files/de/bugzilla/index.html b/files/de/bugzilla/index.html deleted file mode 100644 index 4a16805ef8..0000000000 --- a/files/de/bugzilla/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Bugzilla -slug: Bugzilla -tags: - - Qualitätssicherung - - Tools -translation_of: Mozilla/Bugzilla ---- -

bugzilla.mozilla.org (häufig als b.m.o. abgekürzt) ist das von Mozilla entwickelte Bug-tracking System, eine Datenbank, die Bugs und Verbesserungsanträge für Firefox, Thunderbird, SeaMonkey, Camino, und andere mozilla.org Projekte aufzeichnet.

- -

Bugzilla verwenden

- -

Die Seite »Was man mit Bugzilla macht und was nicht« und die Bugzilla Etiquette zeigen ein paar Regeln auf, was man beim Gebrauch von Bugzilla beachten sollte.

- -

Unter Qualitätssicherung kann man mehr erfahren und die Artikel »Herausfinden, ob ein Bug schon gemeldet wurde« oder die Richtlinien zum Schreiben eines Bugreports geben weiterführende Informationen, wie man einen neuen Bug meldet.

- -

Um zu Erfahren, wie man Code zu Firefox oder anderen Projekten beitragen kann, gibt es unter Einreichen eines Patches weitere Informationen.

- -

Siehe auch

- - diff --git a/files/de/bundles/index.html b/files/de/bundles/index.html deleted file mode 100644 index fa67b9d739..0000000000 --- a/files/de/bundles/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Struktur eines installierbaren Bündels -slug: Bundles -tags: - - Toolkit API -translation_of: Archive/Mozilla/Bundles ---- -

XULRunner Anwendungen, Erweiterungen, und Themes teilen sich eine gemeinsame Verzeichnisstruktur, und in einigen Fällen kann das gleiche Bündel als eigenständige XULRunner-Anwendung und als eine installierbare Anwendungserweiterung genutzt werden. Die Grundstruktur von Bündeln kann einige der folgenden Dateien beinhalten:

-
/install.rdf                        Erweiterung/Theme Installationsmanifest
-/application.ini                    Anwendungsstartmanifest
-/components/*                       Komponenten und XPT Dateien    (>=1.7)
-/defaults/preferences/*.js          Voreinstellungen               (>=1.7)
-/plugins/*                          NPAPI Plugins                  (>=1.8)
-/chrome.manifest                    Chrome-Registrierungsmanifest  (>=1.8)
-/chrome/icons/default/*             Fenstersymbole                 (>=1.8)
-
-

Natürlich benötigt eine Erweiterung nicht all diese Verzeichnisse. Themes sind aus Sicherheitsgründen eingeschränkt, und können normalerweise nur ein chrome.manifest zur Registrierung und eine JAR-Datei mitliefern.

-

 

-

Plattformspezifische Unterverzeichnisse in Gecko 1.9.2 und früher

-
-
-Hinweis zu Gecko 2.0 -
(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)
-
-

Plattformspezifische Unterverzeichnisse wurden mit Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) entfernt. Siehe Plattform-spezifische Dateien für weitere Informationen.

-
-

In einigen Fällen kann eine Erweiterung oder Anwendung es erforderlich machen, eine binäre Komponente oder Plugins für verschiedene Plattformen bereitzustellen, oder Theme-Autoren können mehrere plattformspezifische JAR-Dateien bündeln. Um das zu bewerkstelligen, nutzt der Erweiterungslader besondere Unterverzeichnisse für plattformspezifische Dateien (angefangen ab Toolkit/Gecko 1.8, Firefox/Thunderbird 1.5). Die Plattform-Zeichenkette wird während des Toolkit Build Vorgangs auf einen eindeutigen Wert festgelegt - eine Kombination aus Betriebssystem, Prozessorarchitektur und Compiler. Das Format der Plattform-Zeichenkette ist:

-
{OS_TARGET}_{TARGET_XPCOM_ABI}
-
-

Jede der Dateien, welche vom Erweiterungshauptverzeichnis geladen werden nun vom Unterverzeichnis geladen, wenn es existiert:

-
/platform/{Plattform Zeichenkette}
-
-

Wenn zum Beispiel ein Dritt-Anbieter ein Plugin für Computer unter Linux, Macintosh und Windows bereitstellen möchte, wären folgende Dateien nötig:

-
/platform/Linux_x86-gcc3/plugins/libMyPlugin.so
-/platform/WINNT_x86-msvc/plugins/MyPlugin.dll
-/platform/Darwin_ppc-gcc3/plugins/libMyPlugin.dylib
-
-

Weil XPT-Dateien nicht plattformspezifisch sind, landen zugehörige XPT-Dateien in einem generischen Komponentenverzeichnis:

-
/components/MyPlugin.xpt
-
-

Wenn eine Erweiterung nicht-binären, plattformspezifischen Code (z.B. zur Eintragung in die Windows-Registrierung) beinhaltet, kann einfach der Betriebssystem-Bezeichner als Plattform-Unterverzeichnis dienen:

-
/platform/WINNT/components/registerDoctype.js
-
-

Wenn plattformspezifische JAR-Dateien genutzt werden, sollte jedes Plattformverzeichnis eine eigene chrome.manifest Datei enthalten:

-
chrome.manifest
-chrome/mytheme-base.jar
-platform/Darwin/chrome.manifest
-platform/Darwin/chrome/mytheme-mac.jar
-platform/WINNT/chrome.manifest
-platform/WINNT/chrome/mytheme-win.jar
-
-

Der Ladevorgang verarbeitet zuerst das Basisverzeichnis, gefolgt durch die jeweiligen Plattformverzeichnisse (zuerst /{OS_TARGET}/, dann /{OS_TARGET}_{TARGET_XPCOM_ABI}/). Wenn Voreinstellungen in unterschiedlichen Verzeichnissen gesetzt werden, wird das zuletzt geladene das vorherige überschreiben.

-

Plattform-spezifische Dateien

-

Mit Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) wurde die Unterstützung für Plattform-spezifische Unterverzeichnisse entfernt. Stattdessen müssen nun Manifest-Flags, wie zum Beispiel OS und ABI Flags, im Chrome-Manifest verwendet werden, um Komponenten festzulegen, die von bestimmten Plattformen geladen werden sollen.

-

Zum Beispiel:

-
binary-component components/windows/mycomponent.dll ABI=WINNT_x86-msvc
-binary-component components/mac/mycomponent.dylib ABI=Darwin_x86-gcc3
-binary-component components/mac/mycomponent64.dylib ABI=Darwin_x86-64-gcc3
-binary-component components/linux/mycomponent.so ABI=Linux_x86-gcc3
-
-

Anwendungsspezifische Erweiterungsdateien

-

Zusätzlich zu den oben aufgeführten Erweiterungsdateien, können Anwendungen weitere Dateien aus den Erweiterungen lesen. Firefox 1.5 oder höher liest zum Beispiel Sherlock Suchplugins aus.

-
/searchplugins/*.src
-
-

Firefox 2 und höher werden auch MozSearch und OpenSearch Plugins aus

-
/searchplugins/*.xml
-
-

und Myspell-Wörterbücher aus

-
/dictionaries/*.{aff|dic}
-
-

lesen können.

-

Offizielle Toolkit API Referenzen

-

-

diff --git a/files/de/codeschnipsel/cookies/index.html b/files/de/codeschnipsel/cookies/index.html deleted file mode 100644 index 555505f616..0000000000 --- a/files/de/codeschnipsel/cookies/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Cookies -slug: Codeschnipsel/Cookies -tags: - - Add-ons - - Codeschnipsel - - Cookies - - Erweiterungen -translation_of: Archive/Add-ons/Code_snippets/Cookies ---- -

Existierende Cookies lesen

- -

Cookies für einen gegebenen Host, repräsentiert als nsICookie2 Objekte, können so nummeriert werden:

- -
let enum = Services.cookies.getCookiesFromHost("example.com");
-while (enum.hasMoreElements()) {
-  var cookie = e.getNext().QueryInterface(Ci.nsICookie2);
-  dump(cookie.host + ";" + cookie.name + "=" + cookie.value + "\n");
-}
-
- -

Alle Cookies, regardless vom Host, kann man mit Services.cookies.enumerator rather than getCookiesFromHost().

- -

nummerieren.

- - - -

Der folgende Code zeigt, wie man in Firefox ein Cookie einstellt.

- -
Services.cookies.add(".host.example.com", "/cookie-path", "cookie_name", "cookie_value", is_secure, is_http_only, is_session, expiry_date);
-
- -

Siehe auch

- - - -

{{ languages( { "fr": "fr/Extraits_de_code/Cookies", "ja": "ja/Code_snippets/Cookies", "pl": "pl/Fragmenty_kodu/Ciasteczka" } ) }}

diff --git a/files/de/codeschnipsel/index.html b/files/de/codeschnipsel/index.html deleted file mode 100644 index 31c6bc8bf3..0000000000 --- a/files/de/codeschnipsel/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Codeschnipsel -slug: Codeschnipsel -tags: - - Add-ons - - Erweiterungen -translation_of: Archive/Add-ons/Code_snippets ---- -

Dies ist eine Liste mit nützlichen Codeschnipseln (kleine Code-Beispiele) für Entwickler von Erweiterungen für verschiedene Mozilla Anwendungen. Viele dieser Beispiele können sowohl in XULRunner als auch im aktuellen Mozilla-Code benutzt werden.

-

Diese Beispiele zeigen, wie grundlegende Aufgaben bewältigt werden können, deren Lösung nicht offensichtlich ist.

-

Allgemein

-
Windows
Fenster öffnen und bearbeiten.
Toolbar
Code im Bezug zur Toolbar.
Sidebar
Code im Bezug zur Sidebar.
XML
Beispielcode, um XML zu parsen, zu schreiben und zu verändern.
File I/O
Beispielcode, um Dateien zu lesen und zu schreiben.
Drag & Drop
Beispielcode, um "Drag und Drop" Ereignisse zu verwalten
Dialoge
Beispielcode, um Dialogboxen und Eingabeaufforderungen anzuzeigen.
Warnungen und Meldungen
Modale und nicht-modale Wege den Benutzer zu benachrichtigen.
Einstellungen
Beispielcode, um Einstellungen zu lesen, zu schreiben und zu verändern.
JS XPCOM
Beispielcode, um XPCOM Komponenten in JavaScript aufzurufen
Anwendungen starten
Beispielcode, um andere Anwendungen zu starten.
<canvas>
Auf Canvas bezogener Code.
Signierung einer XPI
Wie eine XPI mit PKI signiert wird.
Threads
Hintergrundoperationen ausführen und die Ausführung verzögern, während Hintergrundoperationen beendet werden.
Diverses
Diverse nützliche Codefragmente.
HTML zu DOM
Verwendung eines versteckten Browserelements, um HTML zu DOM zu parsen.
-
-

Browser-orientierter Code

-
Tabbed Browser (Firefox/SeaMonkey)
Grundlegende Operationen, wie das Laden von Seiten mit dem Tabbed Browser, welche das Herz von Mozilla's Browser Anwendungen darstellen.
Cookies
Lesen, Schreiben, Verändern und Entfernen von Cookies.
Seitenaufbau
Beispielcode, um Seiten zu laden und neu zu laden.
Interaktion zwischen priviligierten und nicht-priviligierten Seiten
Wie man zwischen Erweiterungen und Webseiten kommuniziert.
Dateien herunterladen
Beispielcode, um Dateien und Bilder herunter zu laden und den Downloadfortschritt zu überwachen.
Passwort Manager
Beispielcode, um Passwörter aus/zum integriertem Passwortmanager zu speichern oder auszulesen.
Lesezeichen
Beispielcode, um Lesezeichen auszulesen und zu speichern.
JavaScript Debugger Service
Interaktionen mit dem JavaScript Debugger Service
-
-

SVG

-
Allgemein
Allgemeine Informationen und Werkzeuge.
SVG Animation
Animiertes SVG über JavaScript und SMIL
Interaktives SVG mit JavaScript
Verwendung von JavaScript und DOM Ereignissen, um interaktives SVG zu erstellen.
SVG in HTML und XUL einbetten
Verwendung von SVG, um HTML oder XUL Markup aufzuwerten.
-
-

XUL Widgets

-
HTML Tooltips in XUL
Dynamische Einbettung von HTML in ein XUL Element, um einen Tooltip mit Markup zu versehen.
Beschriftungen und Beschreibungen
Spezielle Verwendungen und Beispiele zu Zeilenumbrüchen.
Tree
Erstellung und Veränderung von Trees mit XUL und JS.
Scrollbar
Das Aussehen der Scrollbar vom Browser sowie Iframes verändern.
Autovervollständigung
Beispielcode, um Autovervollständigung im Browser zu aktivieren.
Boxen
Tipps und Tricks zur Verwendung von Boxen als Container.
Tabbox
Entfernen und Verändern von Tabs in Tabboxen.
-
-

Windows-spezifisch

-
Window Handler (HWND) auffinden (Firefox)
Wie man die Windows API aufruft, um Mozilla Window Handler zu finden. Window Handler können für IPC und Zugänglichkeit gebraucht werden.
Zugang zur Windows Registrierung über XPCOM
Wie man Registrierungschlüssel und -werte auslesen, schreiben, verändern, löschen, aufzählen, und beobachten kann.
-
- -

Die Inhalte auf MozillaZine Example Code werden nach und nach auf diese Seite umgezogen, aber es gibt dort noch einige nützliche Beispiele.

-

{{ languages( { "en": "en/Code_snippets", "fr": "fr/Extraits_de_code", "ja": "ja/Code_snippets", "ko": "ko/Code_snippets", "pl": "pl/Fragmenty_kodu" } ) }}

diff --git a/files/de/codeschnipsel/on_page_load/index.html b/files/de/codeschnipsel/on_page_load/index.html deleted file mode 100644 index ffc64be436..0000000000 --- a/files/de/codeschnipsel/on_page_load/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: On page load -slug: Codeschnipsel/On_page_load -translation_of: Archive/Add-ons/Code_snippets/On_page_load ---- -

Dieser Artikel ist für XUL / JavaScript-Entwickler, die benutzerdefinierte Code haben wollen jedes Mal eine neue Seite wird im Browser / Mail geladen ausgeführt. Wenn Sie genauere Kontrolle über benutzerdefinierte Code-Ausführung, zum Beispiel benötigen, wie Dokumente Laden oder wenn Registerkarten schalteten sehen Fortschritt Hörer.

- -

Fortschritte Zuhörern ermöglichen Erweiterungen der Ereignisse mit Dokumenten Laden in den Browser und mit Tab Umschalten Ereignissen benachrichtigt werden. Fortschritte Zuhörer Umsetzung der nsIWebProgressListener Schnittstelle.

- -

Erstellen eines Overlays

- -

Zuerst müssen Sie einen erstellen, Überlagerung, um eine (oder mehrere, je nachdem, welche Anwendungen Sie zielen) der folgenden XUL-Dokumente:

- - - - - - - - - - - - - - - - - - - - -
AnwendungURI zu überlagern
Firefoxchrome: //browser/content/browser.xul
Thunderbirdchrome: //messenger/content/messenger.xul
Navigator von SeaMonkeychrome: //navigator/content/navigator.xul
- -

Anbringen eines Skripts

- -

Bringen Sie ein Skript, um Ihre einblenden (siehe "Anbringen eines Skripts zum Erstellen einer Overlay"), die eine fügt Last Ereignis-Listener APPCONTENT Element (Browser) oder messagepane (mail):

- -
window.addEventListener("load", function load(event) {
-    window.removeEventListener("load", load, false); // Listener entfernen, da nicht mehr benötigt
-    myExtension.init();  
-}, false);
-
-var myextension = {
-  init: function() {
-    var APPCONTENT = document.getElementById("APPCONTENT"); // Browser
-    if (APPCONTENT) {
-      appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
-    }
-    var messagepane = document.getElementById("messagepane"); // Mail
-    if (messagepane) {
-      messagepane.addEventListener("load", function(event) { myExtension.onPageLoad(event); }, true);
-    }
-  }
-
-  onPageLoad: function(aEvent) {
-    var doc = aEvent.originalTarget; // doc ist das Dokument, das den "onload" Event ausgelöst hat
-    // Tu etwas mit der geladenen Seite.
-    // doc.location ist ein Location-Objekt (siehe Link unten).
-    // Man kann es verwenden, um Code nur auf bestimmten Seiten auszuführen.
-    if (doc.location.href.search ("forum")> -1)
-      alert("Eine Forum-Seite, wird geladen");
-    
-    // Füge Ereignis-Listener für page "unload" hinzu
-    aEvent.originalTarget.defaultView.addEventListener ("unload", function(event) { myExtension.onPageUnload (event); }, true);
-  }
-
-  onPageUnload: function(Aevent) {
-    // Tu etwas
-  }
-};
-
- -

Aktuelle Firefox Stamm Night die onPageLoad Funktion nicht nur für Dokumente, Feuer, aber xul: Bilder (Favicons in Tabbrowser). Wenn Sie nur wollen, Dokumente zu verarbeiten, zu gewährleisten aEvent.originalTarget.nodeName == "#document".

- -

Wenn Sie mit Code auf einer Seite zu laden, ist es wahrscheinlich, würden Sie wollen, um etwas Bereinigungscode auf Seite Entladen laufen. Um in das Unload-Ereignis im obigen Beispiel können Sie den "pagehide" Veranstaltung wie diese verwenden zu befestigen:

- -
appcontent.addEventListener ("pagehide", myExtension.onPageUnload, false);
-
- -

für APPCONTENT und ähnlich für messagepane

- -
messagepane.addEventListener ("pagehide", myExtension.onPageUnload, false);
- -

und fügen Sie den Code zur onPageUnload Methode.

- -

 

- -

 

- -

Basis onPageLoad für ein Browser-Fenster

- -
var myextension = {
-    init: function () {
-        // Das Ereignis kann DOMContentLoaded werden, pageshow, pagehide, laden oder entladen.
-        if (gBrowser) gBrowser.addEventListener ("DOMContentLoaded", this.onPageLoad, false);
-    }
-    onPageLoad: function (Aevent) {
-        var doc = aEvent.originalTarget; // Doc ist Dokument, das das Ereignis ausgelöst hat
-        var win = doc.defaultView; // Sieg ist das Fenster für den doc
-        // Test gewünschten Bedingungen und etwas tun,
-        // If (doc.nodeName = "#document"!) Return; // Nur Dokumente
-        // If (Sieg = win.top!) Return; // nur Top-Fenster.
-        // If (win.frameElement) return; // Überspringen iframes / Rahmen
-        alert ("Seite geladen wird \ n" + doc.location.href);
-    }
-}
-window.addEventListener ("load", Funktion load (event) {
-    window.removeEventListener ("load", Last, false); // Listener zu entfernen, nicht mehr benötigt
-    myExtension.init ();  
-},falsch);
-
- -

Referenzen

- - - -

Sehe auch

- - diff --git a/files/de/codeschnipsel/scrollbar/index.html b/files/de/codeschnipsel/scrollbar/index.html deleted file mode 100644 index 3fa77ebaf7..0000000000 --- a/files/de/codeschnipsel/scrollbar/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Scrollbar -slug: Codeschnipsel/Scrollbar -translation_of: Archive/Add-ons/Code_snippets/Scrollbar ---- -

Dieses Beispiel zeigt, wie die Scrollbars in einer XUL-Applikation verändert werden können.  Scrollbars im Browser werden auch gestylt.
-(Auf Windows XP getestet)

-

Das Beispiel setzt die folgende Struktur voraus:

-
app/chrome/chrome.manifest
-app/chrome/skin/global/
-
-

Kopieren Sie die scrollbars.css von xulrunner/chrome/classic.jar/skin/classic/global nach app/chrome/skin/global/scrollbars.css

-

Öffnen Sie app/chrome/chrome.manifest und fügen Sie folgende Zeilen hinzu:

-
skin app-global standard/1.0 skin/global/
-override chrome://global/skin/xulscrollbars.css chrome://app-global/skin/scrollbars.css
-
-

xulscrollbars.css wird für Windows XP benutzt, nativescrollbars.css auf OSX. Für OSX, fügen Sie noch folgendes an:

-
override chrome://global/skin/nativescrollbars.css chrome://app-global/skin/scrollbars.css
-
-

Ändern Sie nun ein paar Farbwerte in app/chrome/skin/global/scrollbars.css um zu testen, ob das CSS benutzt wird.

-

Beispielfenster in XUL:

-
<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-<window id="sampleWindow" width="320" height="240"
-   xmlns="http://www.mozilla.org/keymaster/gat...re.is.only.xul">
-<hbox flex="1">
-   <browser type="content" src="http://mozilla.org" flex="1"/>
-   <scrollbar orient="vertical"/>
-</hbox>
-</window>
-
-

{{ languages( { "en": "en/Code_snippets/Scrollbar" } ) }}

diff --git a/files/de/codeschnipsel/tabbed_browser/index.html b/files/de/codeschnipsel/tabbed_browser/index.html deleted file mode 100644 index f08d80a7d4..0000000000 --- a/files/de/codeschnipsel/tabbed_browser/index.html +++ /dev/null @@ -1,517 +0,0 @@ ---- -title: Tabbed browser -slug: Codeschnipsel/Tabbed_browser -translation_of: Archive/Add-ons/Tabbed_browser ---- -

Here you should find a set of useful code snippets to help you work with Firefox's tabbed browser. The comments normally mark where you should be inserting your own code.

-

Each snippet normally includes some code to run at initialization, these are best run using a load listener. These snippets assume they are run in the context of a browser window. If you need to work with tabs from a non-browser window, you need to obtain a reference to one first, see Working with windows in chrome code for details.

-

Multiple meanings for the word 'browser'

-

The word 'browser' is used several ways. Of course the entire application Firefox is called "a browser". Within the Firefox browser are tabs and inside each tab is a browser, both in the common sense of a web page browser and the XUL sense of a {{ XULElem("browser") }} element. Furthermore another meaning of 'browser' in this document and in some Firefox source is "the tabbrowser element" in a Firefox XUL window.

-

Getting access to the browser

-

From main window

-

Code running in Firefox's global ChromeWindow, common for extensions that overlay into browser.xul, can access the {{ XULElem("tabbrowser") }} element using the global variable gBrowser.

-
// gBrowser is only accessible from the scope of
-// the browser window (browser.xul)
-gBrowser.addTab(...);
-
-

If gBrowser isn't defined your code is either not running in the scope of the browser window or running too early. You can access gBrowser only after the browser window is fully loaded. If you need to do something with gBrowser right after the window is opened, listen for the load event and use gBrowser in the event listener.

-

If your code does not have access to the main window because it is run in a sidebar or dialog, you first need to get access to the browser window you need before you can use gBrowser. You can find more information on getting access to the browser window in Working with windows in chrome code.

-

From a sidebar

-

Basically, if your extension code is a sidebar you can use:

-
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
-                       .getInterface(Components.interfaces.nsIWebNavigation)
-                       .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
-                       .rootTreeItem
-                       .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
-                       .getInterface(Components.interfaces.nsIDOMWindow);
-
-mainWindow.gBrowser.addTab(...);
-
-

From a dialog

-

If your code is running in a dialog opened directly by a browser window, you can use:

-
window.opener.gBrowser.addTab(...);
-
-

If window.opener doesn't work, you can get the most recent browser window using this code:

-
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
-                   .getService(Components.interfaces.nsIWindowMediator);
-var mainWindow = wm.getMostRecentWindow("navigator:browser");
-mainWindow.gBrowser.addTab(...);
-
-

Opening a URL in a new tab

-
// Add tab
-gBrowser.addTab("http://www.google.com/");
-
-// Add tab, then make active
-gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/");
-
-

Manipulating content of a new tab

-

If you want to work on the content of the newly opened tab, you'll need to wait until the content has finished loading.

-
// WRONG WAY (the page hasn't finished loading yet)
-var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
-alert(newTabBrowser.contentDocument.body.innerHTML);
-
-// BETTER WAY
-var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
-newTabBrowser.addEventListener("load", function () {
-  newTabBrowser.contentDocument.body.innerHTML = "<div>hello world</div>";
-}, true);
-
-

(The event target in the onLoad handler will be a 'tab' XUL element). See tabbrowser for getBrowserForTab(). Note that the code above does not work inside of the Electrolysis (e10s) enabled tabs.

-

Opening a URL in the correct window/tab

-

There are methods available in chrome://browser/content/utilityOverlay.js that make it easy to open URL in tabs such as openUILinkIn and openUILink.

-
-
- openUILinkIn( url, where, allowThirdPartyFixup, postData, referrerUrl )
-
- where: -
    -
  • "current" current tab (if there aren't any browser windows, then in a new window instead)
  • -
  • "tab" new tab (if there aren't any browser windows, then in a new window instead)
  • -
  • "tabshifted" same as "tab" but in background if default is to select new tabs, and vice versa
  • -
  • "window" new window
  • -
  • "save" save to disk (with no filename hint!)
  • -
-
-
- openUILink( url, e, ignoreButton, ignoreAlt, allowKeywordFixup, postData, referrerUrl )
-
-  
-
-

The following code will open a URL in a new tab, an existing tab, or an existing window based on which mouse button was pressed and which hotkeys (ex: Ctrl) are being held. The code given is for a {{ XULElem("menuitem") }}, but will work equally well for other XUL elements. This will only work in an overlay of browser.xul.

-

XUL:

-
<menuitem oncommand="myExtension.foo(event)" onclick="checkForMiddleClick(this, event)" label="Click me"/>
-
-

JS:

-
var myExtension = {
-  foo: function(event) {
-    openUILink("http://www.example.com", event, false, true);
-  }
-}
-

Opening a URL in an on demand tab

-
var gSessionStore = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
-
-// Create new tab, but don't load the content.
-var url = "https://developer.mozilla.org";
-var tab = gBrowser.addTab(null);
-gSessionStore.setTabState(tab, JSON.stringify({
-  entries: [
-    { url: url, title: url }
-  ],
-  lastAccessed: 0,
-  index: 1,
-  hidden: false,
-  attributes: {},
-  image: null
-}));
-
-

Reusing tabs

-

Rather than open a new browser or new tab each and every time one is needed, it is good practice to try to re-use an existing tab which already displays the desired URL--if one is already open. Following this practice minimizes the proliferation of tabs and browsers created by your extension.

-
Reusing by URL/URI
-

A common feature found in many extensions is to point the user to chrome:// URIs in a browser window (for example, help or about information) or external (on-line http(s)://) HTML documents when the user clicks an extension's button or link. The following code demonstrates how to re-use an existing tab that already displays the desired URL/URI. If no such tab exists, a new one is opened with the specified URL/URI.

-
function openAndReuseOneTabPerURL(url) {
-  var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
-                     .getService(Components.interfaces.nsIWindowMediator);
-  var browserEnumerator = wm.getEnumerator("navigator:browser");
-
-  // Check each browser instance for our URL
-  var found = false;
-  while (!found && browserEnumerator.hasMoreElements()) {
-    var browserWin = browserEnumerator.getNext();
-    var tabbrowser = browserWin.gBrowser;
-
-    // Check each tab of this browser instance
-    var numTabs = tabbrowser.browsers.length;
-    for (var index = 0; index < numTabs; index++) {
-      var currentBrowser = tabbrowser.getBrowserAtIndex(index);
-      if (url == currentBrowser.currentURI.spec) {
-
-        // The URL is already opened. Select this tab.
-        tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes[index];
-
-        // Focus *this* browser-window
-        browserWin.focus();
-
-        found = true;
-        break;
-      }
-    }
-  }
-
-  // Our URL isn't open. Open it now.
-  if (!found) {
-    var recentWindow = wm.getMostRecentWindow("navigator:browser");
-    if (recentWindow) {
-      // Use an existing browser window
-      recentWindow.delayedOpenTab(url, null, null, null, null);
-    }
-    else {
-      // No browser windows are open, so open a new one.
-      window.open(url);
-    }
-  }
-}
-
-
Reusing by other criteria
-

Sometimes you want to reuse a previously-opened tab regardless of which URL/URI it displays. This assumes the tab is opened by your extension, not by some other browser component. We can do re-use an arbitrary tab by attaching a custom attribute to it when we first open it. Later, when we want to re-use that tab, we iterate over all open tabs looking for one which has our custom attribute. If such a tab exists, we change its URL/URI and focus/select it. If no such tab exists (perhaps the user closed it or we never opened it in the first place), we create a new tab with our custom attribute.

-
function openAndReuseOneTabPerAttribute(attrName, url) {
-  var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
-                     .getService(Components.interfaces.nsIWindowMediator);
-  for (var found = false, index = 0, tabbrowser = wm.getEnumerator('navigator:browser').getNext().gBrowser;
-       index < tabbrowser.tabContainer.childNodes.length && !found;
-       index++) {
-
-    // Get the next tab
-    var currentTab = tabbrowser.tabContainer.childNodes[index];
-
-    // Does this tab contain our custom attribute?
-    if (currentTab.hasAttribute(attrName)) {
-
-      // Yes--select and focus it.
-      tabbrowser.selectedTab = currentTab;
-
-      // Focus *this* browser window in case another one is currently focused
-      tabbrowser.ownerDocument.defaultView.focus();
-      found = true;
-    }
-  }
-
-  if (!found) {
-    // Our tab isn't open. Open it now.
-    var browserEnumerator = wm.getEnumerator("navigator:browser");
-    var tabbrowser = browserEnumerator.getNext().gBrowser;
-
-    // Create tab
-    var newTab = tabbrowser.addTab(url);
-    newTab.setAttribute(attrName, "xyz");
-
-    // Focus tab
-    tabbrowser.selectedTab = newTab;
-
-    // Focus *this* browser window in case another one is currently focused
-    tabbrowser.ownerDocument.defaultView.focus();
-  }
-}
-
-

The function can be called like so:

-
openAndReuseOneTabPerAttribute("myextension-myattribute", "http://developer.mozilla.org/").
-
-

Closing a tab

-

This example closes the currently selected tab.

-
gBrowser.removeCurrentTab();
-
-

There is also a more generic removeTab method, which accepts a XUL {{ XULElem("tab") }} element as its single parameter.

-

Changing active tab

-

This moves one tab forward (to the right).

-
gBrowser.tabContainer.advanceSelectedTab(1, true);
-
-

This moves one tab to the left.

-
gBrowser.tabContainer.advanceSelectedTab(-1, true);
-
-

Detecting page load

-

See also Code snippets:On page load

-
function examplePageLoad(event) {
-  if (event.originalTarget instanceof Components.interfaces.nsIDOMHTMLDocument) {
-    var win = event.originalTarget.defaultView;
-    if (win.frameElement) {
-      // Frame within a tab was loaded. win should be the top window of
-      // the frameset. If you don't want do anything when frames/iframes
-      // are loaded in this web page, uncomment the following line:
-      // return;
-      // Find the root document:
-      win = win.top;
-    }
-  }
-}
-
-// do not try to add a callback until the browser window has
-// been initialised. We add a callback to the tabbed browser
-// when the browser's window gets loaded.
-window.addEventListener("load", function () {
-  // Add a callback to be run every time a document loads.
-  // note that this includes frames/iframes within the document
-  gBrowser.addEventListener("load", examplePageLoad, true);
-}, false);
-
-...
-// When no longer needed
-gBrowser.removeEventListener("load", examplePageLoad, true);
-...
-
-

Notification when a tab is added or removed

-
function exampleTabAdded(event) {
-  var browser = gBrowser.getBrowserForTab(event.target);
-  // browser is the XUL element of the browser that's been added
-}
-
-function exampleTabMoved(event) {
-  var browser = gBrowser.getBrowserForTab(event.target);
-  // browser is the XUL element of the browser that's been moved
-}
-
-function exampleTabRemoved(event) {
-  var browser = gBrowser.getBrowserForTab(event.target);
-  // browser is the XUL element of the browser that's been removed
-}
-
-// During initialization
-var container = gBrowser.tabContainer;
-container.addEventListener("TabOpen", exampleTabAdded, false);
-container.addEventListener("TabMove", exampleTabMoved, false);
-container.addEventListener("TabClose", exampleTabRemoved, false);
-
-// When no longer needed
-container.removeEventListener("TabOpen", exampleTabAdded, false);
-container.removeEventListener("TabMove", exampleTabMoved, false);
-container.removeEventListener("TabClose", exampleTabRemoved, false);
-
-
-

Note: Starting in {{Gecko("1.9.1") }}, there's an easy way to listen on progress events on all tabs.

-
-

{{ h2_gecko_minversion("Notification when a tab's attributes change", "2.0") }}

-

Starting in Gecko 2.0, you can detect when a tab's attributes change by listening for the TabAttrModified event. The attributes to which changes result in this event being sent are:

- -
function exampleTabAttrModified(event) {
-  var tab = event.target;
-  // Now you can check what's changed on the tab
-}
-
-// During initialization
-var container = gBrowser.tabContainer;
-container.addEventListener("TabAttrModified", exampleTabAttrModified, false);
-
-// When no longer needed
-container.removeEventListener("TabAttrModified", exampleTabAttrModified, false);
-
-

{{ h2_gecko_minversion("Notification when a tab is pinned or unpinned", "2.0") }}

-

Starting in Gecko 2.0, tabs can be "pinned"; that is, they become special application tabs ("app tabs"), which are pinned to the beginning of the tab bar, and show only the favicon. You can detect when a tab becomes pinned or unpinned by watching for the TabPinned and TabUnpinned events.

-
function exampleTabPinned(event) {
-  var browser = gBrowser.getBrowserForTab(event.target);
-  // browser is the XUL element of the browser that's been pinned
-}
-
-function exampleTabUnpinned(event) {
-  var browser = gBrowser.getBrowserForTab(event.target);
-  // browser is the XUL element of the browser that's been pinned
-}
-
-// Initialization
-
-var container = gBrowser.tabContainer;
-container.addEventListener("TabPinned", exampleTabPinned, false);
-container.addEventListener("TabUnpinned", exampleTabUnpinned, false);
-
-// When no longer needed
-
-container.removeEventListener("TabPinned", exampleTabPinned, false);
-container.removeEventListener("TabUnpinned", exampleTabUnpinned, false);
-
-

Detecting tab selection

-

The following code allows you to detect when a new tab is selected in the browser:

-
function exampleTabSelected(event) {
-  var browser = gBrowser.selectedBrowser;
-  // browser is the XUL element of the browser that's just been selected
-}
-
-// During initialisation
-var container = gBrowser.tabContainer;
-container.addEventListener("TabSelect", exampleTabSelected, false);
-
-// When no longer needed
-container.removeEventListener("TabSelect", exampleTabSelected, false);
-
-

Getting document of currently selected tab

-

The following code allows you to retrieve the document that is in the selected tab. This code will work in the scope of the browser window (e.g. you're working from an overlay to the browser window).

-
gBrowser.contentDocument;
-
-

or

-
content.document
-
-

If you're working from a window or dialog that was opened by the browser window, you can use this code to get the document displayed in the selected tab in the browser window that opened the new window or dialog.

-
window.opener.content.document
-
-

From windows or dialogs not opened by the browser window, you can use {{ interface("nsIWindowMediator") }} to get the document displayed in the selected tab of the most recently used browser window.

-
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
-                   .getService(Components.interfaces.nsIWindowMediator);
-var recentWindow = wm.getMostRecentWindow("navigator:browser");
-return recentWindow ? recentWindow.content.document.location : null;
-
-

See also Working with windows in chrome code.

-

Enumerating browsers

-

To go through all browser in a tabbrowser, first get a reference to a browser's window. If your code is executed from a Firefox browser.xul overlay (for example, it is a toolbar button or menu click handler), you can access the current window with the window pre-defined variable. However, if your code is executed from its own window (for example, a settings/options dialog), you can use {{ interface("nsIWindowMediator") }} to get a browser's window.

-

Next, get the <tabbrowser/> element. You can get it with win.gBrowser, where win is the browser's window from the previous step. You can use simply gBrowser instead of window.gBrowser if running in the context of a browser.xul overlay.

-

Finally, use gBrowser.browsers.length to get the number of browsers and gBrowser.getBrowserAtIndex() to get a <browser/> element. For example:

-
var num = gBrowser.browsers.length;
-for (var i = 0; i < num; i++) {
-  var b = gBrowser.getBrowserAtIndex(i);
-  try {
-    dump(b.currentURI.spec); // dump URLs of all open tabs to console
-  } catch(e) {
-    Components.utils.reportError(e);
-  }
-}
-

To learn what methods are available for <browser/> and <tabbrowser/> elements, use DOM Inspector or look in {{ source("toolkit/content/widgets/browser.xml","browser.xml") }} for corresponding XBL bindings (or just look at the current reference pages on {{ XULElem("browser") }} and {{ XULElem("tabbrowser") }}.

-

Getting the browser that fires the http-on-modify-request notification

-

See the Observer notifications page for information on http-on-* notifications.

-

Note that some HTTP requests aren't associated with a tab; for example, RSS feed updates, extension manager requests, XHR requests from XPCOM components, etc. In those cases, the following code returns null.

-
- Warning: This code should be updated to use {{interface("nsILoadContext")}} instead of getInterface(Components.interfaces.nsIDOMWindow), see this example..UPDATED EXAMPLE IS IN SECTION BELOW THIS
-
observe: function (subject, topic, data) {
-  if (topic == "http-on-modify-request") {
-    subject.QueryInterface(Components.interfaces.nsIHttpChannel);
-    var url = subject.URI.spec; /* url being requested. you might want this for something else */
-    var browser = this.getBrowserFromChannel(subject);
-    if (browser != null) {
-      /* do something */
-    }
-  }
-},
-
-getBrowserFromChannel: function (aChannel) {
-  try {
-    var notificationCallbacks =
-      aChannel.notificationCallbacks ? aChannel.notificationCallbacks : aChannel.loadGroup.notificationCallbacks;
-
-    if (!notificationCallbacks)
-      return null;
-
-    var domWin = notificationCallbacks.getInterface(Components.interfaces.nsIDOMWindow);
-    return gBrowser.getBrowserForDocument(domWin.top.document);
-  }
-  catch (e) {
-    dump(e + "\n");
-    return null;
-  }
-}
-
-

Getting the browser that fires the http-on-modify-request notification (example code updated for loadContext)

-

Here an example of the previous section is shown. The previous section was left intact so people can see the old way of doing things.

-
Components.utils.import('resource://gre/modules/Services.jsm');
-Services.obs.addObserver(httpObs, 'http-on-modify-request', false);
-//Services.obs.removeObserver(httpObs, 'http-on-modify-request'); //uncomment this line, or run this line when you want to remove the observer
-
-var httpObs = {
-    observe: function (aSubject, aTopic, aData) {
-        if (aTopic == 'http-on-modify-request') {
-            /*start - do not edit here*/
-            var oHttp = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel); //i used nsIHttpChannel but i guess you can use nsIChannel, im not sure why though
-            var interfaceRequestor = oHttp.notificationCallbacks.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
-            //var DOMWindow = interfaceRequestor.getInterface(Components.interfaces.nsIDOMWindow); //not to be done anymore because: https://developer.mozilla.org/en-US/docs/Updating_extensions_for_Firefox_3.5#Getting_a_load_context_from_a_request //instead do the loadContext stuff below
-            var loadContext;
-            try {
-                loadContext = interfaceRequestor.getInterface(Components.interfaces.nsILoadContext);
-            } catch (ex) {
-                try {
-                    loadContext = aSubject.loadGroup.notificationCallbacks.getInterface(Components.interfaces.nsILoadContext);
-                    //in ff26 aSubject.loadGroup.notificationCallbacks was null for me, i couldnt find a situation where it wasnt null, but whenever this was null, and i knew a loadContext is supposed to be there, i found that "interfaceRequestor.getInterface(Components.interfaces.nsILoadContext);" worked fine, so im thinking in ff26 it doesnt use aSubject.loadGroup.notificationCallbacks anymore, but im not sure
-                } catch (ex2) {
-                    loadContext = null;
-                    //this is a problem i dont know why it would get here
-                }
-            }
-            /*end do not edit here*/
-            /*start - do all your edits below here*/
-            var url = oHttp.URI.spec; //can get url without needing loadContext
-            if (loadContext) {
-                var contentWindow = loadContext.associatedWindow; //this is the HTML window of the page that just loaded
-                //aDOMWindow this is the firefox window holding the tab
-                var aDOMWindow = contentWindow.top.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIWebNavigation).QueryInterface(Ci.nsIDocShellTreeItem).rootTreeItem.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow);
-                var gBrowser = aDOMWindow.gBrowser; //this is the gBrowser object of the firefox window this tab is in
-                var aTab = gBrowser._getTabForContentWindow(contentWindow.top); //this is the clickable tab xul element, the one found in the tab strip of the firefox window, aTab.linkedBrowser is same as browser var above //can stylize tab like aTab.style.backgroundColor = 'blue'; //can stylize the tab like aTab.style.fontColor = 'red';
-                var browser = aTab.linkedBrowser; //this is the browser within the tab //this is what the example in the previous section gives
-                //end getting other useful stuff
-            } else {
-                Components.utils.reportError('EXCEPTION: Load Context Not Found!!');
-                //this is likely no big deal as the channel proably has no associated window, ie: the channel was loading some resource. but if its an ajax call you may end up here
-            }
-        }
-    }
-};
-
-

Here's a cleaner example of the same thing:

-
Cu.import('resource://gre/modules/Services.jsm');
-
-var httpRequestObserver = {
-    observe: function (subject, topic, data) {
-        var httpChannel, requestURL;
-
-        if (topic == "http-on-modify-request") {
-            httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
-            requestURL = httpChannel.URI.spec;
-
-            var newRequestURL, i;
-
-            if (/someurl/.test(requestURL)) {
-                var goodies = loadContextGoodies(httpChannel);
-                if (goodies) {
-                    httpChannel.cancel(Cr.NS_BINDING_ABORTED);
-                    goodies.contentWindow.location = self.data.url('pages/test.html');
-                } else {
-                    //dont do anything as there is no contentWindow associated with the httpChannel, liekly a google ad is loading or some ajax call or something, so this is not an error
-                }
-            }
-
-            return;
-        }
-    }
-};
-Services.obs.addObserver(httpRequestObserver, "http-on-modify-request", false);
-
-
-
-
-
-//this function gets the contentWindow and other good stuff from loadContext of httpChannel
-function loadContextGoodies(httpChannel) {
-    //httpChannel must be the subject of http-on-modify-request QI'ed to nsiHTTPChannel as is done on line 8 "httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);"
-    //start loadContext stuff
-    var loadContext;
-    try {
-        var interfaceRequestor = httpChannel.notificationCallbacks.QueryInterface(Ci.nsIInterfaceRequestor);
-        //var DOMWindow = interfaceRequestor.getInterface(Components.interfaces.nsIDOMWindow); //not to be done anymore because: https://developer.mozilla.org/en-US/docs/Updating_extensions_for_Firefox_3.5#Getting_a_load_context_from_a_request //instead do the loadContext stuff below
-        try {
-            loadContext = interfaceRequestor.getInterface(Ci.nsILoadContext);
-        } catch (ex) {
-            try {
-                loadContext = subject.loadGroup.notificationCallbacks.getInterface(Ci.nsILoadContext);
-            } catch (ex2) {}
-        }
-    } catch (ex0) {}
-
-    if (!loadContext) {
-        //no load context so dont do anything although you can run this, which is your old code
-        //this probably means that its loading an ajax call or like a google ad thing
-        return null;
-    } else {
-        var contentWindow = loadContext.associatedWindow;
-        if (!contentWindow) {
-            //this channel does not have a window, its probably loading a resource
-            //this probably means that its loading an ajax call or like a google ad thing
-            return null;
-        } else {
-            var aDOMWindow = contentWindow.top.QueryInterface(Ci.nsIInterfaceRequestor)
-                .getInterface(Ci.nsIWebNavigation)
-                .QueryInterface(Ci.nsIDocShellTreeItem)
-                .rootTreeItem
-                .QueryInterface(Ci.nsIInterfaceRequestor)
-                .getInterface(Ci.nsIDOMWindow);
-            var gBrowser = aDOMWindow.gBrowser;
-            var aTab = gBrowser._getTabForContentWindow(contentWindow.top); //this is the clickable tab xul element, the one found in the tab strip of the firefox window, aTab.linkedBrowser is same as browser var above //can stylize tab like aTab.style.backgroundColor = 'blue'; //can stylize the tab like aTab.style.fontColor = 'red';
-            var browser = aTab.linkedBrowser; //this is the browser within the tab //this is where the example in the previous section ends
-            return {
-                aDOMWindow: aDOMWindow,
-                gBrowser: gBrowser,
-                aTab: aTab,
-                browser: browser,
-                contentWindow: contentWindow
-            };
-        }
-    }
-    //end loadContext stuff
-}
-

{{ languages( { "fr": "fr/Extraits_de_code/Onglets_de_navigation", "ja": "ja/Code_snippets/Tabbed_browser", "pl": "pl/Fragmenty_kodu/Przegl\u0105danie_w_kartach" } ) }}

diff --git a/files/de/codeschnipsel/tree/index.html b/files/de/codeschnipsel/tree/index.html deleted file mode 100644 index 95ae8ed107..0000000000 --- a/files/de/codeschnipsel/tree/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Tree -slug: Codeschnipsel/Tree -translation_of: Archive/Add-ons/Code_snippets/Tree ---- -

Aufklappen/Zuklappen aller Baumknoten

-

Um alle Baumknoten aufzuklappen:

-
 var treeView = tree.treeBoxObject.view;
- for (var i = 0; i < treeView.rowCount; i++) {
-   if (treeView.isContainer(i) && !treeView.isContainerOpen(i))
-     treeView.toggleOpenState(i);
- }
-
-

Um alle Baumknoten zu zuklappen, wird die Bedingung einfach umgekehrt:

-
 var treeView = tree.treeBoxObject.view;
- for (var i = 0; i < treeView.rowCount; i++) {
-   if (treeView.isContainer(i) && treeView.isContainerOpen(i))
-     treeView.toggleOpenState(i);
- }
-
-

Text der ausgewählten Zeile abrufen

-

Ausgehend von gegebenem Baum:

-
 <tree id="my-tree" seltype="single" onselect="onTreeSelected()">
-
-

Wird das folgende JavaScript verwendet:

-
 function onTreeSelected(){
-   var tree = document.getElementById("my-tree");
-   var cellIndex = 0;
-   var cellText = tree.view.getCellText(tree.currentIndex, tree.columns.getColumnAt(cellIndex));
-   alert(cellText);
- }
-
-

Das Baum-Item einer fokussierten Zeile abrufen

-

Ausgehend von <tree id="my-tree">, kann der folgende Codeausschnitt verwendet werden, um das tree item abzurufen:

-
var view = document.getElementById("my-tree").view;
-var sel = view.selection.currentIndex; //returns -1 if the tree is not focused
-var treeItem = view.getItemAtIndex(sel);
-
-

Zu beachten ist, dass der aktuelle Index unter Umständen nicht ausgewählt sein (z.B. in einem Baum mit mehrfach-Auswahl).

-

Einen treecell von einem Mausklick abrufen

-

Die erste Wahl ist <treecell onclick="yourfunc();"/> oder etwas ähnliches auszuprobieren. das funktioniert nicht. Es können keine Event-Handler zum <treecell> Element hinzugefügt werden. Stattdessen kann ein Event-Handler zum <tree> Element hinzugefügt werden. Dann können event- und andere Methoden benutzt werden, um das <treecell> Element zu finden. Zum Beispiel, ausgehend von:

-
<tree id="my-tree" onclick="onTreeClicked(event)">
-
-

Wird das folgende JavaScript verwendet:

-
function onTreeClicked(event){
-  var tree = document.getElementById("my-tree");
-  var tbo = tree.treeBoxObject;
-
-  // get the row, col and child element at the point
-  var row = { }, col = { }, child = { };
-  tbo.getCellAt(event.clientX, event.clientY, row, col, child);
-
-  var cellText = tree.view.getCellText(row.value, col.value);
-  alert(cellText);
-}
-
-

Ausgewählte Indizes eines mehrfach ausgewählten Baumes abrufen

-
  var start = {}, end = {}, numRanges = tree.view.selection.getRangeCount(), selectedIndices = [];
-
-  for (var t = 0; t < numRanges; t++){
-    tree.view.selection.getRangeAt(t, start, end);
-    for (var v = start.value; v <= end.value; v++)
-      selectedIndices.push(v);
-  }
-
-

Weitere Ressourcen

- -

{{ languages( { "fr": "fr/Extraits_de_code/Tree", "en": "en/Code_snippets/Tree" } ) }}

diff --git a/files/de/codeschnipsel/windows/index.html b/files/de/codeschnipsel/windows/index.html deleted file mode 100644 index 6da2289604..0000000000 --- a/files/de/codeschnipsel/windows/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Windows -slug: Codeschnipsel/Windows -tags: - - Add-ons - - Erweiterungen -translation_of: Archive/Add-ons/Code_snippets/Windows ---- -

Diese Seite zeigt einige interessante Codebeispiele.

-

Neue Browser-Fenster öffnen

-

Um ein neues Browser-Fenster zu öffnen, wird einfach window.open() benutzt. Jedoch gibt window.open() ein Window Objekt für den Inhalt zurück, nicht für das Browser-Fenster selbst, deshalb sollte man sich das Chrome Window zuerst holen. Der einfachste Weg das zu machen, ist nsIWindowMediator zu benutzen.

-

Beispiel

-
window.open();
-var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
-                            .getService(Components.interfaces.nsIWindowMediator);
-var newWindow = wm.getMostRecentWindow("navigator:browser");
-var b = newWindow.getBrowser();
-// why did we do this? we never do anything with |b|
-
-

Ziehbare Fenster

-

Um ein Fenster durch das Klicken auf die Fensterinhalte ziehbar zu machen, können die mousedown und mousemove Ereignisse verwendet werden. Der folgende Code berücksichtigt nicht, welches Element angeklickt wurde, sondern reagiert auf alle mousedown Ereignisse gleich. Dieser Code kann verbessert werden, indem das  Zielelements des Ereignisses überprüft wird und startPos nur festgelegt wird, wenn das Element den Kriterien entspricht.

-

Beispiel

-
var startPos=0;
-var mouseDown = function(event) {
-  startPos = [ event.clientX, event.clientY];
-}
-var mouseMove = function(event) {
-  if (startPos != 0) {
-    var newX = event.screenX-startPos[0];
-    var newY = event.screenY-startPos[1];
-    window.moveTo(newX,newY);
-  }
-}
-var mouseUp = function(event) {
-  startPos=0;
-}
-
-window.addEventListener("mousedown",mouseDown, false);
-window.addEventListener("mouseup",mouseUp, false);
-window.addEventListener("mousemove",mouseMove, false);
-
-

XUL Titelleistenelement

-

XUL Anwendungen können Vorteile aus dem Titlebar Element ziehen, um ein ähnliche Ergebnisse ohne extra JavaScript Code zu erzielen.

-

Wiederbenutzung und Fokussierung von benannten Fenstern

-

Dieser Abschnitt ist inkorrekt und muss neu geschrieben werden. Siehe nsIWindowMediator für eine korrekte Dokumentation.

-
-

Während eine Festlegung des name Parameters bei window.open oder window.openDialog verhindert, dass mehrere Fenster geöffnet werden, wird jeder Aufruf das Fenster Wiederinitialisieren und daher geht alles, was der Benutzer in diesem Fenster gerade getan hat, verloren. Zusätzlich wird es nicht im Vordergrund angezeigt, wenn das Fenster im Hintergrund ist. Dieser Code prüft, ob ein Fenster mit dem gegebenen Namen existiert. Wird eines gefunden, wird es fokussiert. Wenn nicht, wird ein Neues geöffnet.

-
var windowName = "yourWindowName";
-var windowsMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
-var win = windowsMediator.getMostRecentWindow(windowName);
-if (win)
-  win.focus();
-else
-  window.open("chrome://to/your/window.xul", windowName, "features");
-
-
-

Siehe auch

- -

{{ languages( {"en": "en/Code_snippets/Windows", "fr": "fr/Extraits_de_code/Fen\u00eatres", "ja": "ja/Code_snippets/Windows", "pl": "pl/Fragmenty_kodu/Okna" } ) }}

diff --git a/files/de/e4x/index.html b/files/de/e4x/index.html deleted file mode 100644 index ad71bd2778..0000000000 --- a/files/de/e4x/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: E4X -slug: E4X -tags: - - E4X - - JXON - - JavaScript - - NeedsEditorialReview - - NeedsTechnicalReview - - NeedsTranslation - - TopicStub - - XML -translation_of: Archive/Web/E4X ---- -
- {{obsolete_header()}}
-
-  
-
- {{ Warning("E4X is obsolete. It has been disabled by default for webpages (content) in Firefox 17, disabled by default for chrome in Firefox 20, and has been removed in Firefox 21. Use DOMParser/DOMSerializer or a non-native JXON algorithm instead.") }}
-

ECMAScript for XML (E4X) is a programming language extension that adds native XML support to JavaScript. It does this by providing access to the XML document in a form that feels natural for ECMAScript programmers. The goal is to provide an alternative, simpler syntax for accessing XML documents than via DOM interfaces. A valid alternative to E4X is a non-native JXON algorithm.

-

E4X is standardized by Ecma International in ECMA-357 standard (currently in its second edition, December 2005).

-

E4X is implemented (at least partially) in SpiderMonkey (Gecko's JavaScript engine) and in Rhino (JavaScript engine written in Java).

-

 

-
- Note: In Gecko 1.8 based browsers such as Firefox 1.5, E4X is already partially enabled for web page authors. To fully enable E4X, the <script> element needs to have the MIME type "text/javascript;e4x=1" (i.e. have an attribute of the form type="text/javascript;e4x=1"). The difference between the two modes is that without the "e4x=1" MIME type, any statement-level XML/HTML comment literals (<!--...-->) are ignored for backwards compatibility with the comment hiding trick, and CDATA sections (<![CDATA{{ mediawiki.external('...') }}]>) are not parsed as CDATA literals (which leads to a JS syntax error in HTML since HTML's <script> element produces an implicit CDATA section, and therefore cannot contain explicit CDATA sections). -

someone verify the above

-
-

Known bugs and limitations

- -

Workaround:

-
var response = xmlhttprequest.responseText; // bug 270553
-response = response.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, ""); // bug 336551
-var e4x = new XML(response);
-
-

Resources

- -

See also

- -

{{ languages( { "es": "es/E4X", "fr": "fr/E4X", "it": "it/E4X", "ja": "ja/E4X", "ko": "ko/E4X", "pl": "pl/E4X" } ) }}

diff --git a/files/de/e4x/processing_xml_with_e4x/index.html b/files/de/e4x/processing_xml_with_e4x/index.html deleted file mode 100644 index d9fb98a785..0000000000 --- a/files/de/e4x/processing_xml_with_e4x/index.html +++ /dev/null @@ -1,256 +0,0 @@ ---- -title: XML verarbeiten mit E4X -slug: E4X/Processing_XML_with_E4X -translation_of: Archive/Web/E4X/Processing_XML_with_E4X ---- -

{{ Warning("E4X ist veraltet. Es wurde in Firefox 17 standardmäßig abgeschaltet und aus Firefox 21 schließlich vollständig entfernt.  Benutzen Sie statt dessen DOMParser/DOMSerializer oder ein anderes JXON Verfahren.") }}

-

E4X erweitert JavaScript ab Version 1.6 um ein natives XML Objekt und eine Syntax, mit der XML Dokumente direkt in JavaScript Code eingebettet werden können.

-

Eine vollständige Definition von E4X findet sich in der ECMA-357 Spezifikation. Dieses Kapitel liefert einen praxisbezogenen Überblick und ist nicht als Referenz gedacht.

-

Kompatibilitätsaspekte

-

Als das  <script> Element noch nicht von allen Browsern unterstützt wurde, war es üblich, auf einer HTML Seite eingebettetes JavaScript in HTML Kommentare einzuschließen, um so die Anzeige des JavaScript Code durch ungeeignete Browser zu verhindern.  Diese Vorgehensweise ist inzwischen unnötig, aber es existieren noch viele solche HTML-Seiten.  Deshalb ignoriert E4X standardmäßig Kommentare und CDATA Abschnitte.  Sie können jedoch e4x=1 im <script> Element verwenden, wenn Sie diese Einschränkung aufheben wollen:

-
<script type="text/javascript;e4x=1">
-...
-</script>
-
-

Ein XML Objekt erzeugen

-

E4X bietet im Wesentlichen zwei Wege zum Erzeugen eines XML Objekts an.  Beim ersten wird dem XML Konstructor ein String übergeben:

-
var languages = new XML('<languages type="dynamic">
-    <lang>JavaScript</lang>
-    <lang>Python</lang>
-  </languages>');
-
-

Beim zweiten Weg wird der XML Code als Literal direkt im Skript eingetragen:

-
var languages = <languages type="dynamic">
-    <lang>JavaScript</lang>
-    <lang>Python</lang>
-  </languages>;
-
-

In beiden Fällen erhält man ein E4X XML Objekt mit Methoden für den bequemen Zugriff auf seine gekapselten Daten.

-

While the XML object looks and behaves in a similar way to a regular JavaScript object, the two are not the same thing. E4X introduces new syntax that only works with E4X XML objects. The syntax is designed to be familiar to JavaScript programmers, but E4X does not provide a direct mapping from XML to native JavaScript objects; just the illusion of one.

-

It is possible to interpolate variables into an XML literal to create an element name (or to create content).

-
var h = 'html';
-var text = "Here's some text";
-var doc = <{h}><body>{text}</body></{h}>;
-alert(doc.toXMLString());
-// Gives
-<html>
-  <body>Here's some text</body>
-</html>
-
-

Working with attributes

-

XML literal syntax has a significant advantage over the XML constructor when you need to create markup dynamically. With E4X it is easy to embed dynamic values in markup. Variables and expressions can be used to create attribute values by simply wrapping them with braces ({}) and omitting quotation marks that would normally go around an attribute value, as the following example illustrates:

-
 var a = 2;
- var b = <foo bar={a}>"hi"</foo>;
-
-

Upon execution the variable is evaluated and quotes are automatically added where appropriate. The preceding example would result in an XML object which looks like this: <foo bar="2">"hi"</foo>.

-

In attribute substitution, quotation marks are escaped as &quot; while apostrophes are handled normally.

-
var b = 'He said "Don\'t go there."';
-var el = <foo a={b}/>;
-alert(el.toXMLString());
-// Gives: <foo a="He said &quot;Don't go there.&quot;"/>
-
-

Less than and ampersand signs are escaped into their entity equivalents. Since a greater than sign is not escaped, it is possible to get an XML error if the CDATA closing sequence (]]>) is included.

-

It is not possible to directly interpolate variables amidst other literal (or variable) attribute content, however (e.g., bar="a{var1}{var2}"). One must instead either calculate the variable with a JavaScript expression (e.g., bar={'a'+var1+var2}), define a new variable before the element literal which includes the full interpolation and then include that variable or retrieve the attribute after the literal to alter it (see below).

-

While one can interpolate attribute names as well as attribute values:

-
var a = 'att';
-var b = <b {a}='value'/>;
-alert(b);
-// Gives:
-<b att="value"/>
-
-

...one cannot interpolate a whole expression at once (e.g., <b {a}>.)

-

After executing the above example, the variable languages references an XML object corresponding to the <languages> node in the XML document. This node has one attribute, type, which can be accessed and updated in a number of ways:

-
 alert(languages.@type); // Alerts "dynamic"
- languages.@type = "agile";
- alert(languages.@type); // Alerts "agile"
-
-
 alert(languages.toString());
- /* Alerts:
-   <languages type="agile"><lang>JavaScript</lang><lang>Python</lang></languages>
- */
-
-

Note that if one wishes to make comparisons of retrieved attributes with other strings, it is necessary to convert the attribute first, even though the attribute may be converted to a string when used in other contexts (such as insertion into a textbox).

-
if (languages.@type.toString() === 'agile') {
-...
-}
-

or, simply:

-
if (languages.@type == 'agile') {
-...
-}
-
-

Working with XML objects

-

XML objects provide a number of methods for inspecting and updating their contents. They support JavaScript's regular dot and [] notation, but instead of accessing object properties E4X overloads these operators to access the element's children:

-
var person = <person>
-  <name>Bob Smith</name>
-  <likes>
-    <os>Linux</os>
-    <browser>Firefox</browser>
-    <language>JavaScript</language>
-    <language>Python</language>
-  </likes>
-</person>;
-
-alert(person.name); // Bob Smith
-alert(person['name']); // Bob Smith
-alert(person.likes.browser); // Firefox
-alert(person['likes'].browser); // Firefox
-
-

If you access something with more than one matching element, you get back an XMLList:

-
alert(person.likes.language.length()); // 2
-
-

As with the DOM, * can be used to access all child nodes:

-
alert(person.likes.*.length()); // 4
-
-

While the . operator accesses direct children of the given node, the .. operator accesses all children no matter how deeply nested:

-
alert(person..*.length()); // 11
-
-

The length() method here returns 11 because both elements and text nodes are included in the resulting XMLList.

-

Objects representing XML elements provide a number of useful methods, some of which are illustrated below: TODO: Add all of the methods to the JavaScript reference, link from here

-
alert(person.name.text()) // Bob Smith
-
-var xml = person.name.toXMLString(); // A string containing XML
-
-var personCopy = person.copy(); // A deep copy of the XML object
-
-var child = person.child(1); // The second child node; in this case the <likes> element
-
-

Working with XMLLists

-

In addition to the XML object, E4X introduces an XMLList object. XMLList is used to represent an ordered collection of XML objects; for example, a list of elements. Continuing the above example, we can access an XMLList of the <lang> elements in the page as follows:

-
 var langs = languages.lang;
-
-

XMLList provides a length() method which can be used to find the number of contained elements:

-
 alert(languages.lang.length());
-
-

Note that unlike JavaScript arrays length is a method, not a property, and must be called using length().

-

We can iterate through the matching elements like so:

-
 for (var i = 0; i < languages.lang.length(); i++) {
-     alert(languages.lang[i].toString());
- }
-
-

Here we are using identical syntax to that used to access numbered items in an array. Despite these similarities to regular arrays, XMLList does not support Array methods such as forEach, and Array generics such as Array.forEach() are not compatible with XMLList objects.

-

We can also use the for each...in statement introduced in JavaScript 1.6 as part of JavaScript's E4X support:

-
 for each (var lang in languages.lang) {
-     alert(lang);
- }
-
-

for each...in can also be used with regular JavaScript objects to iterate over the values (as opposed to the keys) contained in the object. As with for...in, using it with arrays is strongly discouraged.

-

It is possible to create an XMLList using XML literal syntax without needing to create a well-formed XML document, using the following syntax:

-
 var xmllist = <>
-   <lang>JavaScript</lang>
-   <lang>Python</lang>
- </>;
-
-

The += operator can be used to append new elements to an XMLList within a document:

-
 languages.lang += <lang>Ruby</lang>;
-
-

Note that unlike node lists returned by regular DOM methods, XMLLists are static and are not automatically updated to reflect changes in the DOM. If you create an XMLList as a subset of an existing XML object and then modify the original XML object, the XMLList will not reflect those changes; you will need to re-create it to get the most recent updates:

-
 var languages = <languages>
-   <lang>JavaScript</lang>
-   <lang>Python</lang>
- </languages>;
-
- var lang = languages.lang;
- alert(lang.length()); // Alerts 2
-
- languages.lang += <lang>Ruby</lang>;
- alert(lang.length()); // Still alerts 2
-
- lang = languages.lang; // Re-create the XMLList
- alert(lang.length()); // Alerts 3
-
-

Searching and filtering

-

E4X provides special operators for selecting nodes within a document that match specific criteria. These filter operations are specified using an expression contained in parentheses:

-
var html = <html>
-  <p id="p1">First paragraph</p>
-  <p id="p2">Second paragraph</p>
-</html>;
-
-alert(html.p.(@id == "p1")); // Alerts "First paragraph"
-
-

Nodes matching the path before the expression (in this case the paragraph elements) are added to the scope chain before the expression is evaluated, as if they had been specified using the with statement.

-

Consequently, filters can also run against the value of a single node contained within the current element:

-
var people = <people>
-  <person>
-    <name>Bob</name>
-    <age>32</age>
-  </person>
-  <person>
-    <name>Joe</name>
-    <age>46</age>
-  </person>
-</people>;
-
-alert(people.person.(name == "Joe").age); // Alerts 46
-
-

Filter expressions can even use JavaScript functions:

-
function over40(i) {
-    return i > 40;
-}
-
-alert(people.person.(over40(parseInt(age))).name); // Alerts Joe
-
-

Handling namespaces

-

E4X is fully namespace aware. Any XML object that represents a node or attribute provides a name() method which returns a QName object, allowing easy inspection of namespaced elements.

-

Default

-
default xml namespace = "http://www.w3.org/1999/xhtml";
-// No need now to specify a namespace in the html tag
-var xhtml = <html><head><title></title></head><body>
-            <p>text</p></body></html>;
-alert(xhtml.head); // No need to specify a namespace on subelements here either
-

Non-default

-
var xhtml = <html xmlns="http://www.w3.org/1999/xhtml">
-	<head>
-		<title>Embedded SVG demo</title>
-	</head>
-	<body>
-		<h1>Embedded SVG demo</h1>
-		<svg xmlns="http://www.w3.org/2000/svg"
-			viewBox="0 0 100 100">
-			<circle cx="50"
-				cy="50"
-				r="20"
-				stroke="orange"
-				stroke-width="2px"
-				fill="yellow" />
-		</svg>
-	</body>
-</html>;
-
-alert(xhtml.name().localName); // Alerts "html"
-alert(xhtml.name().uri); // Alerts "http://www.w3.org/1999/xhtml"
-
-

To access elements that are within a non-default namespace, first create a Namespace object encapsulating the URI for that namespace:

-
var svgns = new Namespace('http://www.w3.org/2000/svg');
-
-

This can now be used in E4X queries by using namespace::localName in place of a normal element specifier:

-
var svg = xhtml..svgns::svg;
-alert(svg); // Shows the <svg> portion of the document
-
-

Using Generators/Iterators with E4X

-

As of JavaScript 1.7, it is possible to use generators and iterators, giving more options for traversing E4X.

-

In a manner akin to DOM tree walkers, we can define our own walkers for E4X. While the following is already achievable by iterating an E4X object with for each...in, it demonstrates how a more customized one could be created.

-
function xmlChildWalker (xml) {
-    var i = 0;
-    var child = xml.*[0];
-    while (child != undefined) {
-        yield child;
-        child = xml.*[++i];
-    }
-    yield false;
-}
-
-var a = <a><b/><c/></a>;
-var xcw = xmlChildWalker(a);
-
-var child;
-while ((child = xcw.next()) !== false) {
-    alert(child.toXMLString()); // "<b/>" then "<c/>"
-}
-
-
-

See also

- -

{{ languages( { "zh-cn": "cn/Core_JavaScript_1.5_Guide/Processing_XML_with_E4X", "zh-tw": "zh_tw/E4X/使用_E4X_處理_XML", "fr": "fr/Guide_JavaScript_1.5/Traitement_de_XML_avec_E4X", "ja": "ja/Core_JavaScript_1.5_Guide/Processing_XML_with_E4X" } ) }}

diff --git "a/files/de/einrichten_einer_entwicklungsumgebung_f\303\274r_erweiterungen/index.html" "b/files/de/einrichten_einer_entwicklungsumgebung_f\303\274r_erweiterungen/index.html" deleted file mode 100644 index fec703c13a..0000000000 --- "a/files/de/einrichten_einer_entwicklungsumgebung_f\303\274r_erweiterungen/index.html" +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Einrichten einer Entwicklungsumgebung für Erweiterungen -slug: Einrichten_einer_Entwicklungsumgebung_für_Erweiterungen -tags: - - Erweiterungen -translation_of: Archive/Add-ons/Setting_up_extension_development_environment ---- -

Dieser Artikel soll Anregungen geben wie Sie ihre Mozilla-Anwendung zur Entwicklung von Erweiterungen einrichten können. Dieser Artikel bezieht sich sowohl auf Firefox als auch auf Thunderbird und SeaMonkey in der Version 2.0 und höher.

-

Überblick

- -

Entwicklerprofil

-

Um die Geschwindigkeitseinbußen durch Einstellungen und Erweiterungen zu Entwicklung sowie den Verlust persönlicher Daten zu vermeiden, sollten Sie ein gesondertes Entwicklerprofil einrichten.

-

Sie können zwei Firefox-Instanzen mit unterschiedlichen Profilen nutzen, wenn Sie den Browser mit dem -no-remote Parameter starten. Beispielsweise können Sie mit dem folgenden Befehl Ihr Entwicklerprofil, von dem wir annehmen, dass es "dev" heißt, unabhängig davon starten, ob bereits eine "normale" Instanz von Firefox läuft oder nicht:

-

Unter Ubuntu (und vielen anderen Linux Distributionen):

-
/usr/bin/firefox -no-remote -P dev
-

Unter einigen anderen Distributionen von Linux/Unix:

-
/usr/local/bin/firefox -no-remote -P dev
-
-

Unter Mac:

-
/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev &
-
-

Unter Windows:

-
Start -> Ausführen "%ProgramFiles%\Mozilla Firefox\firefox.exe" -no-remote -P dev
-
-

Unter Windows 64 bit:

-
Start -> Run "%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe" -no-remote -P dev
-

Um Thunderbird oder SeaMonkey zu starten, muss "Firefox" in den Beispielen entsprechend ersetzt werden.

-

Wenn das Profil noch nicht besteht wird es automatisch erstellt. Um Firefox wie gewöhnlich zu starten, kann einfach "firefox" oder "firefox -P default" verwendet werden.

-

Außerdem können gleichzeitig verschiedene Versionen des Firefox installiert werden, um die Kompatibilität der Erweiterung zu testen. Es können sogar stabile Versionen sowie die aktuelle Entwicklerversion auf einem System installiert werden.

-

Siehe auch: Installing Firefox 3 or Minefield while keeping Firefox 2 (englisch)

-

Um mehrere Restarts zu vereinfachen, kann ein Profil für den regulären Gebrauch und ein zweites Für das Testen von Erweiterungen verwendet werden. Durch das "no-remote" Kommando können beide Profile gleichzeitig ausgeführt werden. Eine Beschreibung findet sich unter http://kb.mozillazine.org/Command_line_arguments. Diese beiden Verknüpfungen für Windows sind dazu sehr hilfreich:

-

...firefox.exe -no-remote -p "profile1"

-

...firefox.exe -no-remote -p "profile2"

-
- Diese Zeilen sind Windows-spezifisch. Wenn Sie die gleichen Anweisungen für Linux / Mac OS / etc haben, fügen Sie diese doch hier hinzu.
-

Ersetzen Sie "..." mit einem regulären Pfad. Erstellen Sie beide Verknüpfungen und schon ist es sehr einfach beide Profile gleichzeitig zu verwenden.

-

Entwicklungseinstellungen

-

Diese Einstellungen erleichtern das Debuggen auf Kosten sinkender Geschwindigkeit.

-

Unter Editing Configuration Files und About:config Einstellungen finden sich weitere Informationen wie Einstellungen vorgenommen werden können. Beachten Sie, dass nicht alle relevanten Einstellungen defaultmäßig unter about:config angezeigt werden. Daher müssen für diese Einstellungen neue Einträge (boolean) angelegt werden.

-

Diese Änderungen sollten nur in einem gesondert angelegtem Entwicklerprofil gemacht werden.

- -
-

{{ gecko_callout_heading("2.0") }}

-

Die Fehlerkonsole ist ab Firefox 4 standardmäßig deaktiviert. Sie können sie wieder aktivieren, indem Sie devtools.errorconsole.enabled auf true setzen und den Browser neu starten. Damit wird außerdem standardmäßig javascript.options.showInConsole auf true gesetzt.

-
-

Erweiterungen für Entwickler

-

Diese Erweiterungen könnten bei der Entwicklung helfen:

- -

Erweiterung in benutzerdefiniertem Verzeichnis

-

Anstatt nach jeder Änderung die Erweiterung neu zu installieren und als Schutz vor versehentlichem Löschen, wenn die Anwendung deinstalliert wird, können Sie ein Verzeichnis außerhalb des Profils an einem beliebigen Ort einrichten.

-
    -
  1. Suchen Sie in der in der Erweiterung enthaltenen install.rdf die ID der Erweiterung
  2. -
  3. Erstellen Sie eine leere Datei in dem das_profil_verzeichnis/extensions/ mit der ID als Dateiname. (z.B. 'das_profil_verzeichnis/extensions/i...r@mozilla.org') Wo finde ich meinen Profilordner?
  4. -
  5. In dieser Datei wird dann einfach der vollständige Pfad zur install.rdf gespeichert. -

    z.B. Linux:

    -
    /full/path/to/yourExtension
    -
    -

    Oder Windows:

    -
    C:\sam\workspace\toolbar\helloWorldtoolbar\
    -
    -
  6. -
  7. Platzieren Sie die Datei in den Erweiterungsordner und starten Sie die Anwendung
  8. -
-

Verzeichnisse statt JAR-Archiven benutzen

-

Unabhängig davon, ob Sie Erweiterungsdateien in ein JAR-Archiv oder Verzeichnisse packen, ist es einfacher in einem Verzeichnis zu entwickeln. Auch wenn Sie sich für ein JAR-Archiv für die Veröffentlichung entscheiden, können Sie trotzdem in einem Verzeichnis entwickeln, indem Sie Ihr chrome.manifest ändern.

-

JAR-Archiv:

-
content	myExtension	jar:chrome/myExtension.jar!/content/
-
-

Verzeichnis:

-
content	myExtension	chrome/content/
-
diff --git a/files/de/erstellen_von_firefox_erweiterungen_mit_dem_mozilla_build_system/index.html b/files/de/erstellen_von_firefox_erweiterungen_mit_dem_mozilla_build_system/index.html deleted file mode 100644 index da13f8f840..0000000000 --- a/files/de/erstellen_von_firefox_erweiterungen_mit_dem_mozilla_build_system/index.html +++ /dev/null @@ -1,469 +0,0 @@ ---- -title: Erstellen von Firefox Erweiterungen mit dem Mozilla Build System -slug: Erstellen_von_Firefox_Erweiterungen_mit_dem_Mozilla_Build_System -tags: - - Add-ons - - Erweiterungen - - Mozilla entwickeln - - XPCOM -translation_of: >- - Archive/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System ---- -
- Hinweis: Alle Anweisungen in diesem Artikel gelten nur für Mozilla 1.8 (Firefox 1.5). Wir werden versuchen, die Änderungen aus neueren Versionen zu aktualisieren, aber Sie sollten nicht erwarten, dass dies mit Mozilla 1.7 (Firefox 1.0) oder älter funktioniert.
-

Es gibt sehr viel Informationsmaterial zur Erstellung von Erweiterungen für Firefox. Diese Artikel nehmen jedoch an, dass Sie Ihre Erweiterungen nur mit XUL und JavaScript entwickeln. Für komplexe Erweiterungen ist es unter Umständen nötig, Komponenten in C++ zu erstellen, die erweiterte Funktionen bereitstellten. Gründe für C++ Komponenten in Ihrer Erweiterung:

- -

Dieser Artikel beschreibt, wie Sie eine Entwicklungsumgebung für eine große und komplexe Firefox Erweiterung mit den oben genannten Anforderungen einrichten können. Das Auffinden von Informationen zu diesem Thema war sehr schwierig, da bisher kaum Informationen darüber veröffentlicht wurden, aber viele Mitwirkende aus der Mozilla Community haben dazu beigetragen, etliche Fragen von Neulingen zu beantworten. Ich kann nicht genug darauf hinweisen, dass ich noch weit entfernt von einem Mozilla Experten bin, obwohl ich Fortschritte mache. Es könnten daher Informationen in diesem Dokument vorhanden sein, die nicht komplett, nicht den richtige Weg aufzeigen oder einfach falsch sind. Wenn Sie mehr über dieses Thema wissen, sind Sie angehalten diesen Artikel zu verbessern.

-

Ich sollte auch betonen, dass Sie Mozilla nicht kompilieren müssen oder das Mozilla Build System verwenden müssen, wenn Sie C++ Komponenten für Mozilla erstellen wollen. Wenn Sie nur ein oder zwei XPCOM Komponenten erstellen wollen, ist dieser Weg vielleicht zu übertrieben Sie können stattdessen einen Blick auf diese Anleitung werfen. Wenn Sie auf der anderen Seite ein erfahrener Entwickler sind und wissen, dass Sie eine große komplizierte Erweiterung erstellen wollen, finden Sie in diesem Artikel nützliche Hinweise.

-

Ein letzter Hinweis: Die folgenden Techniken wurden nur mit Firefox getestet, allerdings werden Sie mit wenigen Änderungen auch in anderen Gecko-basierten Anwendungen wie Thunderbird oder Seamonkey funktionieren. Fall das jemand bestätigen kann und Informationen zur Anpassung hat, wäre ein kleiner Abschnitt in diesem Artikel dazu sehr hilfreich.

-

Bambi trifft Mozilla

-

Das ist nichts für schwache Nerven. Die ersten Schritte erfordern unter anderem das Kompilieren von Mozilla, was ein großen - nein gigantisches - Unterfangen ist. Viele schlaue Entwickler standen schon am Rande der Verzweiflung als Sie zum ersten mal versucht haben Mozilla zu kompilieren. Falls Sie kein erfahrener C++ Entwickler sind, würde ich es gar nicht erst versuchen. Bleiben Sie bei JavaScript.

-

Unter Windows Plattformen

-

Als ich das erste Mal Mozilla kompiliert habe, verwendete ich diese Anleitung. Ich weiß nicht mehr warum, aber ich bin an verschiedenen Stellen hängen geblieben und die ganze Sache hat länger gedauert als ich erwartet hatte. Viele Möbel wurden zerstört, viele Haare waren danach nicht mehr auf dem Kopf. Hier ist eine ausführliche Anleitung(engl.), welche gute Rezensionen erhalten hat. Folgen Sie jedem Schritt genau und vielleicht passt am Ende alles. Denken Sie daran, dass wenn Sie das Build einmal erfolgreich hin bekommen haben, es danach umso einfacher ist. Vielleicht.

-

Unter anderen Plattformen

-

Auf anderen Systemen, Linux und MacOS, ist der Prozess um einiges einfacher. Alle Tools zum Kompilieren sind eingebaut und daher können Sie mit einigen Befehlen im Terminal sehr einfach ein Build erstellen. Sie können die vollständigen Anweisungen für fast jedes Betriebssystem hier finden.

-

Strukturierung des Projekts

-

Mozilla enthält eine Reihe von komplexen Erweiterungen, die im Build-Prozess integriert sind. Das ist nötig, um alle Probleme bei der Erstellung und Registrierung von XPCOM Komponenten, der Kompilierung von JAR Dateien und Manifesten, der Installation des Firefox extensions/ Verzeichnisses und so weiter zu lösen. Wir werden diese Infrastruktur nutzen, um unsere Erweiterung zu erstellen.

-

Zunächst denken Sie sich einen schönen Namen für Ihre Erweiterung aus und erstellen ein Verzeichnis unter /mozilla/extensions/. Verwenden Sie nur Kleinbuchstaben. Sie sollten eine Reihe weitere Verzeichnisse (inspector/, reporter/ und so weiter) im gleichen Verzeichnis sehen.

-

Beachten Sie, dass bevor Sie irgendetwas kompilieren, ein Konfigurationsprozess für das Mozilla Build System erforderlich ist, welcher die Datei Makefile.in für das Build erstellt. Die makefile sollte ähnlich oder identisch zur Vorlage sein, aber die zusätzliche Flexibilität durch die dynamische Generierung ist eines der Dinge, welche das Mozilla Build System so mächtig machen.

-

Anatomie einer einfachen C++ Erweiterung

-

Wir nehmen an, dass Sie C++ verwenden, um XPCOM Komponenten zu schreiben, die entweder von anderen C++ Komponenten oder von JavaScript verwendet werden. Der Prozess der Erstellung eines Komponents ist eigentlich relativ unkompliziert, wenn das Mozilla Build System verwendet wird.

-

Im einfachsten Fall besteht eine Komponente aus einem Hauptverzeichnis mit zwei Unterverzeichnissen public/ und src/. Das Hauptverzeichnis und jedes Unterverzeichnis muss eine Makefile.in Datei enthalten (von jetzt beziehe ich mich auf diese Datei als makefile, obwohl wir wissen, dass diese nur verwendet werden, um die wirkliche makefile zu generieren). Diese makefile sagt zwei Sachen. Zuerst werden die Unterverzeichnisse aufgelistet aus denen die Erweiterung besteht, sodass das Build-System weiß, wo nach zusätzlichen makefiles gesucht werden muss. Als Zweites weist diese das Build-System an, eine neue Erweiterung zu installieren, als die Komponenten direkt in das binäre Verzeichnis von Firefox zu kopieren. Der größte Vorteil der Verwendung einer Erweiterung ist das einfache Packen und das installieren auf anderen Rechnern.

-

Hier ist also unsere Grundlage (Makefile.in im Hauptverzeichnis der Erweiterung):

-
DEPTH		= ../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-MODULE = myextension
-
-DIRS		= public src
-
-XPI_NAME		= myextension
-INSTALL_EXTENSION_ID	= myextension@mycompany.com
-XPI_PKGNAME		= myextension
-
-DIST_FILES = install.rdf
-
-include $(topsrcdir)/config/rules.mk
-
-

Eine detaillierte Beschreibung des Prozesses und eine Beschreibung der Schlüsselfunktionen dieser makefile, kann hier gefunden werden. MODULE und XPI_NAME sind beides die Namen Ihrer Erweiterung; Sie sollten in allen Projekt-makefiles wiederholt werden, sodass alle Dateien in dem selben Ort des XPIs landen (siehe unten). INSTALL_EXTENSION_ID ist die einzigartige ID Ihrer Erweiterung. Das kann eine GUID sein, aber das obige Format ist schöner und besser zu behalten. Sie müssen kein XPI_PKGNAME angeben, aber wenn Sie eine XPI Datei erstellen, die zur Auslieferung geeignet sein soll, wird diese automatisch im Wurzelverzeichnis des XPIs erstellt (/mozilla/$(MOZ_OBJDIR)/dist/xpi-stage/).

-

Jede Erweiterung muss eine install.rdf Datei enthalten, die Firefox mitteilt wie die Erweiterung installiert werden soll. Diese Datei sollte im Hauptverzeichnis platziert werden und ungefähr so aussehen:

-
<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-  <Description about="urn:mozilla:install-manifest">
-    <em:id>myextension@mycompany.com</em:id>
-    <em:version>0.1</em:version>
-
-    <em:targetApplication>
-      <!-- Firefox -->
-      <Description>
-        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-        <em:minVersion>1.0+</em:minVersion>
-        <em:maxVersion>1.0+</em:maxVersion>
-      </Description>
-    </em:targetApplication>
-
-    <!-- front-end metadata -->
-    <em:name>My First Extension</em:name>
-    <em:description>Just an example.</em:description>
-    <em:creator>allpeers.com</em:creator>
-    <em:homepageURL>http://www.allpeers.com/blog/</em:homepageURL>
-  </Description>
-</RDF>
-
-

Es gibt eine detaillierte Beschreibung des Formats der install.rdf Datei. Verwenden Sie die Variable DIST_FILES in der makefile, um anzugeben, dass eine Kopie der Datei in das Erweiterungsverzeichnis und (optional) der XPI Datei erstellt wird.

-

Öffentliche Schnittstellen

-

Das public/ Verzeichnis enthält alle Schnittstellen, auf die andere Module zugreifen wollen. Das können IDL Dateien für XPCOM Schnittstellen sein, welche verwendet werden, um normale C++ header Dateien in Ihre Quelldateien einzubinden. Es können auch normale C++ header Dateien sein, die direkt von anderen Modulen verwendet werden. Der einfachste Weg um das zu letzt genannte zu machen, ist Implemenierungen für alle Methode innerhalb vorzunehmen, sodass Sie keine zusätzlichen Verweisabhängigkeiten beachten müssen. Sonst müssen Sie statische Links auf Ihr Modul setzen, wenn Sie diese öffentlichen header in andern Modulen verwenden. Ich persönlich würde diese Praxis vermeiden (neben anderen Dingen, heißt statisches Verlinken, dass der gleiche Code mehrmals geladen wird und der Code nicht von JavaScript oder andern nicht-C++ Sprachen verfügbar ist) und immer wenn es möglich ist auf XPCOM zurückgreifen.

-

Die makefile Datei im public/ Verzeichnis sollte so aussehen:

-
DEPTH		= ../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-MODULE		= myextension
-XPIDL_MODULE	= myextension
-
-XPI_NAME = myextension
-
-EXPORTS = \
-		myHeader.h \
-		$(NULL)
-
-XPIDLSRCS	= \
-		myIFirstComponent.idl \
-		myISecondComponent.idl \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
-
-

XPIDL_MODULE ist der Name der generierten XPT Datei, welche Informationen über Ihre IDL Schnittstellen enthält. Wenn Sie mehrere Module haben, stellen Sie absolut sicher, dass Sie einen anderen Wert für jedes XPIDL_MODULE verwenden. Sonst wird die erste XPT Datei von der zweiten Überschrieben und Sie erhalten NS_ERROR_XPC_BAD_IID Fehler, wenn Sie versuchen die IDL Schnittstellen über Ihren Code zu erreichen. Die Dateien unter EXPORTS werden direkt nach /mozilla/$(MOZ_OBJDIR)/dist/include/myextension/ kopiert und sind daher für andere Module erreichbar (der Wert von MOZ_OBJDIR ist in /mozilla/.mozconfig definiert). XPIDLSRCS läuft durch den IDL Prozessor, und die generierten C++ header werden in das gleiche Verzeichnis kopiert. Außerdem wird eine XPT Datei generiert und im components/ Unterverzeichnis Ihrer Erweiterung abgelegt.

-

Quelldateien

-

Jetzt ist es an der Zeit, die makefile und Quelldateien im src/ Unterverzeichnis zu erstellen. Wenn Sie Schnittstellen implementieren, die Sie über IDL  beschrieben haben, ist der einfachste Weg das src/ Verzeichnis leer zu lassen und nur make im public/ Verzeichnis auszuführen; das wird kurz erklärt.

-

Dann öffnen Sie die generierte header Datei für Ihre Schnittstelle von /mozilla/$(MOZ_OBJDIR)/dist/include/myextension/. Es sind Stücke der Komponenten Dateien .H und .CPP enthalten, die Sie einfach mittels Kopieren und Einfügen in Ihre Implementierungsdateien hinzufügen können. Was Sie tun müssen, ist die Implementierungsstückchen in der C++ Datei zu füllen und Sie sind auf einem guten Weg.

-

Hier ist ein Beispiel der makefile, die Sie in Ihr src Verzeichnis packen müssen:

-
DEPTH		= ../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-IS_COMPONENT = 1
-MODULE = myextension
-LIBRARY_NAME =  myExtension
-USE_STATIC_LIBS = 1
-
-XPI_NAME = myextension
-
-REQUIRES	= xpcom \
-		  string \
-		  $(NULL)
-
-CPPSRCS		= \
-		  myFirstComponent.cpp \
-		  mySecondComponent.cpp \
-		  myExtension.cpp \
-		  $(NULL)
-
-include $(topsrcdir)/config/rules.mk
-
-EXTRA_DSO_LDOPTS += \
-  $(XPCOM_GLUE_LDOPTS) \
-  $(NSPR_LIBS) \
-  $(NULL)
-
-# NOTE: If you are coding against the 1.8.0 branch (not 1.8 branch or trunk), the
-# above line won't work, due to linker flag issues. Use the following
-# variables instead:
-#
-# EXTRA_DSO_LDOPTS += \
-#   $(MOZ_COMPONENT_LIBS) \
-#   $(NULL)
-#
-# Unfortunately, using MOZ_COMPONENT_LIBS links against xpcom_core, which means
-# your components will not work in future versions of Firefox.
-
-

Der Abschnitt REQUIRES teilt make mit, welche Module Ihre Komponente nutzt. Das bringt die Unterverzeichnisse von /mozilla/$(MOZ_OBJDIR)/dist/include/ dazu zum C++ Compiler Pfad hinzugefügt zu werden. Wenn Sie Mozilla header einfügen und der Compiler diese nicht findet, kann es bedeuten, dass Sie nicht alle nötigen Module hier aufgelistet haben. CPPSRCS listet die Quelledateien auf, die kompiliert werden sollen.

-

In diesem Beispiel enthalten die ersten beiden Dateien die Implementierung der zwei Erweiterungskomponenten. Die letzte Datei, myExtension.cpp, enthält den nötigen Code zur Registrierung der Komponenten, wie im nächsten Abschnitt beschrieben.

-

Komponenten registrieren

-

Um Ihre Komponenten in anderen C++ Modulen und JavaScript zu verwenden, müssen Sie diese registrieren. Um das zu machen, muss Ihre Erweiterung eine Klasse implementieren, welches die nsIModule Schnittstelle ausstellt, welche Methoden zum Zugang der Komponenten hat. Glücklicherweise kann dies durch einige einfache Makros erreicht werden, sodass Sie sich nicht um die unwichtigen Details kümmern müssen, was unter der Haube geschieht.

-

Der erste Schritt ist eine CID, contract ID und einen Klassennamen für jede Ihrer Komponenten zu definieren. Platzieren Sie den folgenden Code (mit den entsprechenden #defines) im header jeder Komponente, die Sie über den Komponentenmnager initialisieren möchten:

-
// {00000000-0000-0000-0000-000000000000}
-#define MYFIRSTCOMPONENT_CID \
-	{ 0x00000000, 0x0000, 0x0000, \
-	{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
-
-#define MYFIRSTCOMPONENT_CONTRACTID	"@mycompany.com/myfirst;1"
-#define MYFIRSTCOMPONENT_CLASSNAME	"My First Component"
-
-

Natürlich müssen Sie die CID mit einer echten GUID ersetzen. Unter Windows kann dies über die guidgen.exe geschehen. Unix Anwender können "uuidgen" verwenden (wird mit den meisten Distributionen ausgeliefert).

-

Jetzt erstellen Sie die myExtension.cpp Datei wie folgt:

-
#include "nsXPCOM.h"
-
-#include "nsIGenericFactory.h"
-
-/**
- * Components to be registered
- */
-#include "myFirstComponent.h"
-#include "mySecondComponent.h"
-
-NS_GENERIC_FACTORY_CONSTRUCTOR(myFirstComponent)
-NS_GENERIC_FACTORY_CONSTRUCTOR(mySecondComponent)
-
-//----------------------------------------------------------
-
-static const nsModuleComponentInfo components[] =
-{
-	{
-		MYFIRSTCOMPONENT_CLASSNAME,
-		MYFIRSTCOMPONENT_CID,
-		MYFIRSTCOMPONENT_CONTRACTID,
-		myFirstComponentConstructor
-	},
-	{
-		MYSECONDCOMPONENT_CLASSNAME,
-		MYSECONDCOMPONENT_CID,
-		MYSECONDCOMPONENT_CONTRACTID,
-		mySecondComponentConstructor
-	},
-};
-
-NS_IMPL_NSGETMODULE(MyExtension, components)
-
-

Das NS_IMPL_NSGETMODULE Makro erstellt das passenden Modulobjekt, welches Zugang zu allen Komponenten bereitstellt, die im nsModuleComponentInfo Array aufgelistet sind.

-

Kompilieren

-

Wie oben genannt, möchten Sie Ihre Erweiterung wahrscheinlich direkt nach der Erstellung der IDL Dateien kompilieren, um die C++ stubs für Ihre Komponenten-Implementierung zu generieren. Ich nehme an, dass Sie Firefox bereits erfolgreich kompiliert haben. Wenn nicht gehen Sie sofort zum Anfang dieses Artikels zurück und kommen Sie nicht wieder bis Sie eine funktionierende firefox.exe haben. Gehen Sie nicht weiter. Sammeln Sie keine $200 ein.

-

Immer noch da? Gut, jetzt müssen wir Ihre .mozconfig (im /mozilla/ Verzeichnis) ändern, sodass Ihre Erweiterung mit Mozilla zusammen kompiliert wird. Fügen Sie die folgende Zeile am Ende der Datei an:

-
ac_add_options --enable-extensions=default,myextension
-
-

Starten Sie make vom Mozilla Root:

-
make -f client.mk build
-
-

Selbst wenn Sie ein aktuelles Firefox Build haben, müssen Sie warten bis make durch den kompletten Mozilla Quelltext gegangen ist und nach neuem Code gesucht hat (auf meinem Computer, welcher sehr schnell ist, hat dies gut 10-15 Minuten gedauert). Schließlich wird Ihre Erweiterung erreicht und eine Reihe von Dingen werden unter /mozilla/$(MOZ_OBJDIR)/ erstellt:

- -

Ein Großteil dieser Sachen wird nicht erstellt, wenn make das erste Mal ausgeführt wird, es werden nicht alle Quelldateien Ihrer Komponenten gefunden. Kümmern Sie sich nicht darum. Alles was Sie brauchen, sind die genierten header Dateien, die die C++ Implementierungs-Stubs enthalten. Gehen Sie zurück und arbeiten Sie Ihre C++ Implementierung Ihrer Komponenten aus, sodass das Build beim nächsten Mal komplett ist. Denken Sie dran, niemals die generierten Dateien zu verändern. Ändern Sie immer die Dateien, die verwendet werden, um sie zu generieren und führen Sie make aus. Es können Ausnahmen dieser Regel existieren, aber wenn Sie die generierten Dateien direkt ändern, machen Sie wahrscheinlich irgendetwas falsch.

-

Der Vorgang, der das komplette Mozilla Verzeichnis durchgeht, dauert eine lange Zeit. Wenn Sie bereits ein Mozilla Build haben, können Sie dies vermeiden, indem Sie eine makefile für Ihre Erweiterung direkt erstellen. Gehen Sie zum Wurzelverzeichnis von $(MOZ_OBJDIR) und fügen Sie in eine Eingabeaufforderung folgendes ein:

-
../build/autoconf/make-makefile extensions/myextension
-
-

Wenn sich Ihr $(MOZ_OBJDIR) außerhalb von $(TOPSRCDIR) befindet, müssen Sie folgendes schreiben:

-
$(TOPSRCDIR)/build/autoconf/make-makefile -t $(TOPSRCDIR) extensions/myextension
-
-

Sodass das Skript weiß, wo sich Ihre Quelldateien befinden.

-

Das wird eine eigene makefile für Ihre Erweiterung erstellen. Egal, ob Sie Mozilla komplett kompilieren oder diese Abkürzung verwenden, Sie können nun zu /mozilla/$(MOZ_OBJDIR)/extensions/myextension/ wechseln, "make" in die Kommandozeile tippen und Ihr Build wird erstellt. Es sollte Ihre Komponente ungeachtet vom Rest kompiliert werden. Wenn alles funktioniert, werden Sie Ihre XPI sehen. Außerdem ist eine "exploded" Version des XPIs (das ungezippte Verzeichnis) unter /mozilla/$(MOZ_OBJDIR)/dist/bin/extensions zu finden.

-

Um sicher zu gehen, dass das Build wirklich fertig ist, starten Sie Firefox und überprüfen Sie, ob Ihre Erweiterung unter Extras/Erweiterungen angezeigt wird. Wenn Sie Firefox als Ihren normalen Browser verwenden (und wenn nicht, warum nicht?), nervt es Sie vielleicht, dass Sie Firefox öfters schließen müssen bevor Sie Ihre Version starten. Setzen Sie die MOZ_NO_REMOTE Umgebungsvariable auf "1" bevor Sie die Entwicklungsversion von Firefox starten. Sie müssen außerdem ein anderes Profil für Ihre Entwicklerversion verwenden:

-
firefox -P development
-
-

Wobei development der Name des zusätzlichen Profils ist. Dies erlaubt Ihnen nun beide Versionen gleichzeitig laufen zu lassen.

-

Kein Ort wie Chrome

-

Yippee-yay! Jetzt haben Sie eine Erweiterung, die absolut nichts kann. Es ist Zeit etwas mit den Komponenten zu machen, die Sie implementiert und registriert haben. Am einfachsten geht das über einfachen JavaScript und XUL Code. Jetzt wäre es hilfreich, wenn Sie bereits Erfahrung im Schreiben von "regulären" Erweiterungen (ohne C++ Komponenten) haben. Wenn Sie das noch nie getan haben, ist empfohlen dies zuerst zu tun. Zeigen Sie doch einfach mal ein neues Menü-Item an, welches eine "Hello, World!" Dialogbox öffnet. Dadurch lernen Sie die benötigten Grundlagen kennen.

-

Wenn Sie wissen wie man XUL/JavaScript Erweiterungen schreibt, wissen Sie auch, dass die wichtigste Teil im chrome/ Verzeichnis der Erweiterung liegt. Die Tatsache, dass Sie C++ Komponenten verwenden, ändert daran nichts. Also müssen Sie nun die Ordner content/, locale/ und skin/ erstellen, in welchen Sie Ihre Chrome-Dateien packen.

-

Sobald Sie die notwendigen Chrome-Dateien erstellt haben (zum Beispiel ein Overlay, welches einen Button hinzufügt, der Ihre Komponente aktiviert), müssen sie diese als Teil Ihrer Erweiterung packen. Das wird durch ein JAR Manifest erreicht. Für unser einfaches Beispiel, kann diese Datei in etwa so aussehen:

-
myextension.jar:
-%  content myextension %content/
-%  locale myextension en-US %locale/en-US/
-%  skin myextension classic/1.0 %skin/classic/
-%  overlay chrome://browser/content/browser.xul chrome://myextension/content/MyExtensionOverlay.xul
-	content/MyExtensionOverlay.js		(content/MyExtensionOverlay.js)
-	content/MyExtensionOverlay.xul		(content/MyExtensionOverlay.xul)
-	locale/en-US/MyExtension.dtd		(locale/en-US/MyExtension.dtd)
-	locale/en-US/MyExtension.properties	(locale/en-US/MyExtension.properties)
-	skin/classic/MyExtension.css		(skin/classic/MyExtension.css)
-
-

Packen Sie diesen Code in eine Datei namens jar.mn in das Wurzelverzeichnis Ihrer Erweiterung und stellen Sie sicher, dass die Pfade in den Klammern wirklich auf die entsprechenden Dateien zeigen (relativ zum Wurzelverzeichnis). Sie müssen zudem eine kleine Änderung an der makefile im gleichen Verzeichnis vornehmen: Fügen Sie folgende Zeile hinzu:

-
USE_EXTENSION_MANIFEST = 1
-
-

Das teilt make mit eine einzelne Manifestdatei chrome.manifest zu erstellen, anstatt separate Manifestdateien für jedes Paket zu erstellen.

-

Nun führen Sie make noch einmal aus  und Sie sollten ein chrome Unterverzeichnis sehen (/mozilla/$(MOZ_OBJDIR)/dist/bin/extensions/myextension@mycompany.com/). Beachten Sie, dass das chrome Verzeichnis ein JAR (ZIP) Datei mit allen Chrome-Dateien, die in jar.mn aufgelistet sind und auch die komplette Verzeichnisstruktur der jar Datei, enthält. Die Verzeichnisstruktur ist jedoch leer. Warum? Ich weiß es nicht. Kümmern Sie sich nicht darum, denn die Dateien im JAR sind die, die gebraucht werden.

-

Komplizierte Erweiterungen strukturieren

-

Wenn Sie eine komplexere Erweiterung mit vielen XPCOM Komponenten entwickeln, möchten Sie Ihren Code womöglich in kleinere Module aufteilen.

-
Etwas komplexere Erweiterungen
-

Für mäßig komplexe Erweiterungen ist es wahrscheinlich ausreichend den Code einfach in einzelne Module aufzuteilen. Nehmen wir an, Sie haben ein base/ Modul, welches eine Reihe grundlegender XPCOM Komponenten bereitstellt und ein advanced/ Modul, welches einige Chrome und andere Module bereitstellt. Ihre komplette Verzeichnisstruktur könnte so aussehen:

- -

Sonst ändert sich nicht wirklich etwas. Die makefiles in den base/ und advanced/ Verzeichnissen sollten mehr oder weniger genau so wie die originalen makefiles aussehen. Denken Sie daran die DEPTH Variable zu ändern, falls die Dateien ein Level weiter weg von dem Mozilla Verzeichnis verschoben wurden. Sie müssen außerdem die DIST_FILES Variable entfernen, weil das in der top-level makefile vorhanden sein wird. Jede makefile, die irgendetwas generiert, sollte die XPI_NAME Variable definieren, um sicher zu gehen, dass generierte Dateien in Ihre Erweiterung kommen und nicht in das globale components/ Verzeichnis. Definieren Sie das einfach in jeder makefile, um sicher zu gehen. Sie können das gleiche MODULE in beiden base/ und advanced/ Verzeichnissen verwenden, sodass die generierten Dateien in das gleiche Verzeichnis wandern, aber stellen Sie sicher, dass Sie nicht die gleichen für XPIDL_MODULE in den zwei public/ Verzeichnissen definieren oder eine in einen der Komponenten Bibliotheken (XPT Dateien), sonst wird das andere überschrieben und alles wird kaputt gehen.

-

Jedes Modul muss auch einen unterschiedlichen Wert für die LIBRARY_NAME Variable besitzen. Das ist der Name der generierten dynamischen Bibliothek, wenn wir also die Bibliotheken "myBase" und "myAdvanced" aufrufen, wird eine myBase.dll und myAdvanced.dll (unter Windows zumindest) erstellt. Jedes dieser Module hat eine einzelne C++ Datei zur Registrierung von Komponenten. Es wird also zwei Dateien, die wie myExtension.cpp aussehen, in diesem Beispiel Base.cpp und Advanced.cpp. Schließlich wird jedes Modul ein eigenes jar.mn haben, sodass sie auf die gleichen JAR und Paket Dateinamen zurückgreifen. Die einzige Datei, die so bleibt ist install.rdf, welche immer noch nur einmal in dem Wurzelverzeichnis der Erweiterung steht.

-

Vom top-level der makefile, sieht es nun so aus:

-
DEPTH		= ../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-MODULE = myextension
-
-DIRS		= base advanced
-
-XPI_NAME               = myextension
-INSTALL_EXTENSION_ID   = myextension@mycompany.com
-XPI_PKGNAME		= myextension
-
-DIST_FILES = install.rdf
-
-include $(topsrcdir)/config/rules.mk
-
-
Wirklich komplexe Erweiterungen
-

Wenn ein einzelnes Modul sehr groß wird, wollen Sie dieses sicher in weitere Untermodule aufteilen. Der Unterschied zu einzelnen Modulen und einzelnen Untermodulen, ist, dass die Untermodule alle die gleiche Datei zur Registrierung von Komponenten haben (die berühmte myExtension.cpp Datei) und wenn kompiliert wurde, werden sie als einzelne Bibliothek erstellt. Die Entscheidung zur Unterteilung in Untermodulen liegt nur in der Organisation des Codes und betrifft das Endprodukt nicht wirklich.

-

Um ein Modul in Untermodule aufzuteilen, erstellen Sie zunächst einen Unterordner für jedes Untermodul. Dann erstellen Sie ein zusätzliches Verzeichnis, das build/ genannt wird. Jedes Untermodul wird so konfiguriert, dass eine statische Bibliothek erstellt wird und das build/ Verzeichnis wird diese Bibliotheken zusammenfügen, um eine einzige Komponentenbibliothek zu erstellen. Verwirrt? Hier ist ein Beispiel, welches das advanced/ Unterverzeichnis des myextension/ Verzeichnisses zeigt:

- -

Wie Sie sehen, haben wir advanced/ in zwei Untermodule geteilt: intricate/ und multifarious/ und wir haben einen zusätzlichen Ordner build/ hinzugefügt. Wir haben die Chrome-Verzeichnisse direkt unter advanced/ belassen, das sie nicht an irgendwelche Untermodule gebunden sind. Das bedeutet, dass das jar.mn am gleichen Platz verweilt.

-

Die intricate/ und multifarious/ makefiles werden so wie die originale advanced/ makefile aussehen, aber wir müssen ein paar kleiner Anpassungen vornehmen. Wie immer müssen wir die DEPTH Variable anpassen, da sich die makefiles tiefer in der Verzeichnisstruktur befinden. Wir sollten außerdem die LIBRARY_NAMEs ändern, um anzugeben, das wir statische Bibliotheken für jedes Untermodul anlegen. Das "_s" Suffix ist für diesen Zweck geeignet. Wir nennen sie also "myIntricate_s" und "myMultifarious_s". Schließlich definieren wir FORCE_STATIC_LIB, was eine makefile ergibt, die ungefähr so aussieht:

-
DEPTH		= ../../../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-MODULE = myextension
-LIBRARY_NAME = myIntricate_s
-FORCE_STATIC_LIB = 1
-USE_STATIC_LIBS = 1
-
-XPI_NAME = myextension
-
-...more stuff here...
-
-

Build makefile fügt die statischen Bibliotheken zusammen, die von jedem Untermodul generiert worden sind und erstellt eine einzelne (dynamische) Komponentenbibiliothek:

-
DEPTH		= ../../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-IS_COMPONENT = 1
-MODULE = myextension
-LIBRARY_NAME = myAdvanced
-USE_STATIC_LIBS = 1
-
-XPI_NAME = myextension
-
-DEFINES += XPCOM_GLUE
-
-SHARED_LIBRARY_LIBS = \
-		$(DIST)/lib/$(LIB_PREFIX)myIntricate_s.$(LIB_SUFFIX) \
-		$(DIST)/lib/$(LIB_PREFIX)myMultifarious_s.$(LIB_SUFFIX) \
-                $(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
-                $(DIST)/lib/$(LIB_PREFIX)xpcom.$(LIB_SUFFIX) \
-                $(DIST)/lib/$(LIB_PREFIX)nspr4.$(LIB_SUFFIX) \
-                $(DIST)/lib/$(LIB_PREFIX)plds4.$(LIB_SUFFIX) \
-                $(DIST)/lib/$(LIB_PREFIX)plc4.$(LIB_SUFFIX) \
-		$(NULL)
-
-REQUIRES	= \
-		xpcom \
-		string \
-		$(NULL)
-
-CPPSRCS		= \
-		Advanced.cpp \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
-
-LOCAL_INCLUDES += \
-        -I$(srcdir)/../intricate/src \
-        -I$(srcdir)/../multifarious/src \
-        $(NULL)
-
-

Die makefile im advanced/ Verzeichnis sollte die intricate/, multifarious/ und build/ Verzeichnisse in der DIRS Variable auflisten. Stellen Sie sicher, dass  build/ als letztes genannt wird, da die Komponentenbibliothek nicht erstellt werden kann, solange die makefiles nicht komplett sind.

-

Weitere Themen

-

Data Dateien zur Erweiterung hinzufügen

-

In einigen Fällen möchten Sie vielleicht zusätzliche Dateien zu Ihrer Erweiterung hinzufügen, die nicht in das chrome/ Unterverzeichnis gehören. Beispiele sind Datenbankdateien oder XML-Schemata. Das erreicht werden, indem ein zusätzlicher Schritt zur makefile hinzugefügt wird, welcher diese Dateien in das Erweiterungsverzeichnis kopiert.

-
Data Dateien in ein Zielverzeichnis kopieren
-

Nehmen wir an, dass Sie einige Dateien mit statistischen Daten haben, die Sie in Ihre Erweiterung einfügen wollen und für Komponenten verfügbar machen wollen. Sie haben diese Datei mit der Endung .TXT in ein stats/ Unterverzeichnis getan. Die folgende makefile Regel kann verwendet werden, um die Dateien zu kopieren:

-
export::
-	if test ! -d $(FINAL_TARGET)/stats; then \
-		$(NSINSTALL) -D $(FINAL_TARGET)/stats; \
-	fi
-	$(INSTALL) $(srcdir)/*.txt $(FINAL_TARGET)/stats
-
-
Auf Data Dateien über Komponenten zugreifen
-

Der Trick, welcher Ihre Daten zugänglich macht, ist herauszufinden, wo Ihr Hauptverzeichnis Ihrer Erweiterung ist. Um das möglich zu machen, wird die  nsIExtensionManager Schnittstelle später benötigt. In der Zwischenzeit gibt es einen Hack, der das auf einfache Art und Weise ermöglicht. In der Implementierung von jeder JavaScript XPCOM Komponente gibt es ein spezielles __LOCATION__ (zwei führenden und zwei schließende Unterstriche) Symbol, welches auf die Komponentenimplementierungsdatei zeigt. Sie können also eine einfache Komponente schreiben, die auf das Wurzelverzeichnis Ihrer Erweiterung rückschließt.

-

Dieser Artikel(engl.) erklärt wie man eine XPCOM Komponente in JavaScript erstellt. Sie brauchen dazu eine IDL Datei für eine Schnittstelle, die ungefähr so aussieht:

-
interface myILocation : nsISupports
-{
-    readonly attribute nsIFile locationFile;
-};
-
-

Legen Sie die IDL Datei in public/ Verzeichnis Ihres Projekts ab. Im src/ Verzeichnis platzieren Sie die JavaScript Datei, die die Komponente implementiert. Die Komponentenimplementierung enthält Methoden, die den Pfad zum Hauptverzeichnis der Erweiterung abrufen können:

-
myLocation.prototype =
-{
-  QueryInterface: function(iid)
-  {
-    if (iid.equals(nsISupports))
-      return this;
-    if (iid.equals(myILocation))
-      return this;
-
-    Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
-    return null;
-  },
-
-  get locationFile()
-  {
-     return __LOCATION__.parent.parent;
-  }
-}
-
-

Es wird angenommen, dass sich die Komponente in einem Unterverzeichnis des Erweiterungsverzeichnis befindet (das Verzeichnis wird components/ genannt). Die Eigenschaft von __LOCATION__ gibt das components/ und das überliegende Verzeichnis, also das Hauptverzeichnis, zurück.

-

Der letzte Schritt ist die makfile anzupassen, sodass die JavaScript Datei an die richtige Stelle kopiert wird:

-
export::
-	$(INSTALL) $(srcdir)/*.js $(FINAL_TARGET)/components
-
-

Jetzt können Sie eine Instanz dieser Komponente starten und die locationFile Eigenschaft verwenden, um eine nsIFile Schnittstelle, welche auf Ihr Hauptverzeichnis zeigt, zu bekommen.

-

Drittanbieter Bibliotheken verwenden

-

Für anspruchsvollere Erweiterungen möchten Sie Drittanbieter Bibliotheken einbinden, die Ihnen spezialisierte Funktionen bieten, zum Beispiel für Datenbankverbindungen, Bildprozesse, Netzwerkoperationen und vielem mehr. Wenn Sie möchten, dass Ihre Erweiterungen unter Firefox auf allen Plattformen läuft, müssen Sie den Quelltext für die entsprechenden Bibliotheken haben.

-

Der Beste Ansatz ist, eine makefile im Mozilla-style für diese Bibliothek zu erstellen. Das funktioniert gut für Bibliotheken, die keine intensive Konfiguration erfordern. Ein gutes Beispiel ist die SQLite Bibliothek im Mozilla Build Tree unter db/sqlite. Wenn die makefile so angepasst wird, wird die Bibliothek als des Standard Mozilla Build Prozesses erstellt, welches zusätzliches Schritte unnötig macht. Der Nachteil ist, dass Sie jedes Mal die geänderte makefile aktualisieren müssen, wenn eine neue Version der Bibliothek ausgeliefert wird.

-

Bei Bibliotheken mit komplexen Konfigurationen, die keine Standard-Compiler verwenden oder andere speziellen Charakteristiken haben, kann es numgänglich sein, eine Mozilla-kompatible makefile zu erstellen. In diesem Fall würde ich empfehlen, dass Sie die komplette Bibliothek innerhalb des Projekts platzieren. Wenn die Bibliothek acmelib innerhalb des multifarious/ Unterprojekts verwendet wird, würde diese als Unterverzeichnis unter diesem Unterprojekt auftauchen (auf dem gleichen Level wie public/ und src/).

-

Natürlich bedeutet das, dass Sie die Bibliothek acmelib manuell kompilieren müssen, bevor Sie das Mozilla Build starten. Aber immerhin können Sie sich auf die Dateien beziehen und Bibliotheken importieren, indem Sie relative Pfade verwenden.

-

Kompilierung für mehrere Plattformen

-

TODO

-
-

Informationen zum Originaldokument

- -
-

 

diff --git a/files/de/erweiterungen/index.html b/files/de/erweiterungen/index.html deleted file mode 100644 index 2973c54641..0000000000 --- a/files/de/erweiterungen/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Erweiterungen -slug: Erweiterungen -tags: - - Erweiterungen -translation_of: Mozilla/Add-ons ---- -
- Erweiterung erstellen
- Erklärt Schritt für Schritt, wie eine Firefox Erweiterung erstellt wird.
-
-

Erweiterungen fügen Mozilla Applikationen wie Firefox und Thunderbird neue Funktionalitäten hinzu. Von einem einzelnen Button für die Symbolleiste, bis zu einem komplett neuem Feature können unterschiedlichste Funktionen hinzugefügt werden. Erweiterungen erlauben es, die Anwendung den benutzerspezifischen Anforderungen anzupassen während die Downloadgröße klein gehalten wird.

-

Erweiterungen unterscheiden sich von Plugins, welche dem Browser helfen, bestimmte Inhalte wie beispielweise Multimedia Dateien anzuzeigen. Erweiterungen unterscheiden sich außerdem auch von Suchplugins, welche zusätzliche Suchmaschinen zur Suchleiste hinzufügen.

-
- - - - - - - -
-

Dokumentation

-
-
- Einrichten einer Entwicklungsumgebung für Erweiterungen
-
- Ein paar grundlegende Tipps für die Einrichtung, die die Entwicklung von Erweiterungen vereinfachen.
-
- Bootstrapped Extensions {{ gecko_minversion_inline("2.0") }}
-
- Wie man Erweiterungen erstellt, die installiert, deinstalliert und aktualisiert werden können ohne, dass ein Neustart der Anwendung erforderlich ist.
-
- XUL School Tutorial
-
- Ein umfassendes Tutorial zur Entwicklung von Erweiterungen.
-
- Erweiterung erstellen
-
- Dies soll eine kleine Einführung darstellen, wie man einfachste Erweiterungen für den Firefox erstellt.
-
- Sicherheit von Erweiterungen
-
- Leitfaden, um die Sicherheit von Erweiterungen zu gewährleisten.
-
- Performance von Erweiterungen
-
- Wie Erweiterungen erstellt werden, die schnell sind und nicht die Performance der Anwendung beeinträchtigen.
-
- Packen von Erweiterungen
-
- Beschreibung, wie die Firefox Erweiterung für Download und Installation gepackt wird.
-
- Erweiterungen installieren
-
- Wie Erweiterungen programmgesteuert installiert werden können.
-
- Ein Add-On auf AMO anbieten
-
- Wie man ein Add-On auf AMO veröffentlichen kann.
-
- Häufig gestellte Fragen zu Erweiterungen
-
- Häufige Fragen und Antworten über die Entwicklung von Erweiterungen
-
-

Firefox

-

Thunderbird

-

SeaMonkey (Unterstützung von Erweiterungen in SeaMonkey 2)

-

Fennec (Mobiler Browser)

-

alles anzeigen...

-
-

Community

- -

Tools

- - - -
diff --git a/files/de/erweiterungen_faq/index.html b/files/de/erweiterungen_faq/index.html deleted file mode 100644 index 7b158c3814..0000000000 --- a/files/de/erweiterungen_faq/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Erweiterungen FAQ -slug: Erweiterungen_FAQ -tags: - - Erweiterungen -translation_of: Archive/Mozilla/Extension_Frequently_Asked_Questions ---- -

Dies ist eine Sammlung mit häufig gestellten Fragen zur Entwicklung von Erweiterungen. Die meisten werden derzeit wohl für den Firefox geschrieben. Viele, wenn nicht sogar alle, sollten relativ einfach an SeaMonkey, Thunderbird oder jede andere Anwendung angepasst werden können. Für Thunderbird gibt es außerdem HowTos sowie weitere FAQs.

-

Falls Sie sich fragen, wo Sie am besten beginnen sollten, versuchen Sie es mit unserem Tutorial Erweiterung_erstellen oder dem Getting started Tutorial auf MozillaZine . Sie können den Extension Wizard benutzen, um ein Template für den ersten Start zu erstellen.

-

Richten Sie sich außerdem eine Entwicklungsumgebung ein.

-

Debuggen

-

Sie sollten eine Entwicklungsumgebung einrichten bevor Sie versuchen eine Erweiterung zu debuggen.

-

Der Venkman JavaScript Debugger sollte in schwierigen Fällen nützlich sein. Vergessen Sie dabei nicht die "Debug -> Exclude Browser Files" Option zu deaktivieren, wenn Sie an einer Erweiterung arbeiten.

-

Wie finde ich Fehler in meinem Code?

-

Wenn die Option javascript.options.showInConsole auf true eingestellt ist werden alle Fehler in der Fehlerkonsole gemeldet. Wenn alle JavaScriptfehler in der Konsole geloggt werden, ist es einfacher die Bugs im Code zu verfolgen.

-

Wie kann ich den Ablauf meiner Erweiterung verfolgen?

-

Sie können alert(), dump() oder Components.utils.reportError() benutzen. Mithilfe von {{ Interface("nsIConsoleService") }} können ebenfalls variable Daten sowie Debuggingtexte an die Fehlerkonsole gesendet werden. Alternativ kann die Venkman JavaScript Debugger Erweiterung benutzt werden.

-

Warum läuft mein Skript nicht wie erwartet?

-

Falls sich ihr Script nicht wie erwartet verhält, sollten Sie zu erst die Fehlerkonsole auf Fehler prüfen (sie oben).

-

Häufig wird versucht auf das DOM eines Fensters zuzugreifen noch bevor dieses vollständig geladen wurde. Das passiert, wenn der Initialisierungscode am Anfang des Skriptes eingebunden wird (u.a. außerhalb einer Funktion). Durch die Nutzung eines Loadevent-Listeners kann dieses Problem gelöst werden, da der Code erst ausgeführt wird wenn die Seite vollständig geladen wurde:

-
function exampleBrowserStartup(event)
-{
-  // Packen Sie hier Ihren Code hinein
-}
-window.addEventListener("load", exampleBrowserStartup, false);
-
-

Falls Sie einen ähnlichen Fehler wie etwa »JavaScript error: chrome://myextension/content/overlay.js, line 47: missing ; before statement« sehen, verwenden Sie möglicherweise Funktionen oder Schreibweisen aus JavaScript 1.7, während Ihre Erweiterung unter einer früheren Version betrieben wird.  Um sicherzustellen, dass Ihr Code unter JavaScript 1.7 läuft, schreiben Sie einfach:

-
<script type="application/x-javascript" src="overlay.js;version=1.7"/>
-
-

Warum kann ich auf die angezeigte Webseite nicht zugreifen?

-

Um auf die angezeigte Webseite von einem browser.xul overlay zuzugreifen, müssen Sie content.document statt document benutzen, da dieses das Browserfenster selbst repräsentiert. Weitere Details finden Sie unter Mit Fenstern im Chrome Code arbeiten

-

Außerdem verhindert der XPCNativeWrapper standardmäßig den Zugriff auf Script-definierte Objekte der Webseite und einige andere Dinge.

-

Warum kann ich kein XMLHttpRequest in meiner Erweiterung verwenden?

-

Wenn Sie versuchen Informationen einer Erweiterung über XMLHttpRequest zu senden oder zu empfangen, werden Sie möglicherweise Domain-übergreifend arbeiten. Normalerweise kann dies ein Problem darstellen, aber so lange Sie die Anfrage aus einem Chrome Fenster senden, befinden Sie sich innerhalb des Sicherheitsspielraum und können damit arbeiten.

-

Sie müssen sicherstellen, dass Sie das Domain-übergreifende XMLHttpRequest von einem JavaScript Code ausführen, der von einem XUL Fenster referenziert wird. Wenn Sie versuchen, die Anfrage in Beziehung zum Browser-Inhalt aufzurufen (als "document" des XUL Fenster) werden Sie einen »Zugang Verweigert« Fehler erhalten.

-

Ich bekomme einen XML-Parser-Fehler, aber die Datei sieht einwandfrei aus!

-

Eine häufiger Grund für Parser-Fehler (roter text mit einem -------------^ darunter) ist ein „&“ oder „<“ Zeichen im Script oder ein Attributwert mit einer speziellen Bedeutung in XML. Zum Beispiel:

-
<button oncommand="window.open('http://example.com/q?param1=value&param2=val2')"/>
-
-

oder

-
<script>function lesser(a,b) { return a < b ? a : b; }</script>
-

Das Problem kann auf folgende Arten gelöst werden:

-
  1. Ersetze Sie das Zeichen mit seiner XML-konformen Repräsentation. (z.B.: „&“ wird zu „&amp;“ und „<“ wird zu „&lt;“)
  2. Falls es sich um einen Textknoten wie z.B. ein Script handelt, platzieren Sie diesen in CDATA Tags:
  3. <script><![CDATA[
    -   function lesser(a,b) {
    -     return a < b ? a : b;
    -   }
    - ]]></script>
    -
  4. Verschiebe Sie das Script in eine externe Datei und binden Sie diese ein:
  5. <script type="application/x-javascript" src="our.js"/>
    -
-

Beispiel Code

-

Der einfachste Weg ist es wohl eine passende Erweiterung (oder Teile von Mozilla selbst) zu finden, die genau das tut was man benötigt und dort in den Code schaut. (Die XPI und JAR Dateien sind im ZIP-Format komprimiert).

-

Außerdem gibt noch weitere Dokumentationen. Zu finden sind diese in der Liste relevanter Artikel auf MDC, Codeschnipsel und Beispielcode auf MozillaZine.

-

Wo finde ich weitere Hilfe?

-

Unter Erweiterungen/Andere Ressourcen und Erweiterungen/Community.

-

Bevor Sie nach Hilfe fragen, kontrollieren Sie Ihre Entwicklungsumgebung und überprüfen Sie die Fehlerkonsole auf relevante Einträge. Außerdem sollten Sie zumindest eine einfache Suche durchgeführt haben und diese FAQs gelesen haben.

-

{{ languages( { "en": "en/Extension_Frequently_Asked_Questions", "es": "es/Preguntas_frecuentes_sobre_Extensiones", "fr": "fr/Foire_aux_questions_sur_les_extensions", "it": "it/Domande_frequenti_sulle_Estensioni", "ja": "ja/Extension_Frequently_Asked_Questions", "pl": "pl/Cz\u0119sto_zadawane_pytania_dotycz\u0105ce_rozszerze\u0144", "ru": "ru/FAQ_\u043f\u043e_\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c" } ) }}

diff --git a/files/de/firefox_addons_developer_guide/index.html b/files/de/firefox_addons_developer_guide/index.html deleted file mode 100644 index 8dbc807d9b..0000000000 --- a/files/de/firefox_addons_developer_guide/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Firefox addons developer guide -slug: Firefox_addons_developer_guide -translation_of: Archive/Add-ons/Overlay_Extensions/Firefox_addons_developer_guide ---- -

Kapitel 1: Einführung in Erweiterungen

-

Kapitel 2: Technologien die in den Erweiterungen verwendet werden

-

Kapitel 3: Einführung zu XUL - Wie man eine erweiterte Benutzeroberfläche erstellt

-

Kapitel 4: Verwendung von XPCOM - Umsetzung von fortgeschrittenen Prozessen

-

Kapitel 5: Bauen wir eine Firefox Erweiterung

-

Lizenz und Autoren

- - - -
{{ Next("/de/docs/Firefox_addons_developer_guide/Einführung_in_Erweiterungen")}}
diff --git a/files/de/gecko-dom-referenz/dom_elemente_mittels_selektoren_ermitteln/index.html b/files/de/gecko-dom-referenz/dom_elemente_mittels_selektoren_ermitteln/index.html deleted file mode 100644 index c093fff63b..0000000000 --- a/files/de/gecko-dom-referenz/dom_elemente_mittels_selektoren_ermitteln/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: DOM Elemente mittels Selektoren ermitteln -slug: Gecko-DOM-Referenz/DOM_Elemente_mittels_Selektoren_ermitteln -translation_of: Web/API/Document_object_model/Locating_DOM_elements_using_selectors ---- -

Die Selektoren-API stellt Methoden zur Verfügung, mit der man schnell und einfach {{domxref("Element")}}-Knoten im DOM abrufen kann, indem sie mit einer Menge an Selektoren abgeblichen werden. Dies ist viel schneller als bisherige Techniken, bei denen es zum Beispiel notwendig war, eine Schleife im JavaScript-Code zu verwenden, um die spezifischen Elemente zu finden, die Sie suchen.

- -

Die NodeSelector Schnittstelle

- -

Diese Spezifikation fügt zwei neue Methoden zu jedem Objekt hinzu, welches die {{domxref("Document")}}, {{domxref("DocumentFragment")}} oder {{domxref("Element")}} Schnittstelle implementiert:

- -
-
querySelector
-
Gibt den ersten übereinstimmenden {{domxref("Element")}}-Knoten innerhalb der Teilstruktur des Knotens zurück. Wenn kein übereinstimmender Knoten gefunden wird, wird null zurückgegeben.
-
querySelectorAll
-
Gibt eine {{domxref("NodeList")}} zurück, die alle übereinstimmenden Element-Knoten in der Teilstruktur des Knotens enthält oder eine leere NodeList, wenn keine Übereinstimmungen gefunden werden.
-
- -
Hinweis: Die {{domxref("NodeList")}}, die von {{domxref("Element.querySelectorAll()", "querySelectorAll()")}} zurückgegeben wird, ist nicht live, was bedeutet, dass Änderungen im DOM sich nicht auf die Sammlung auswirken. Dies unterscheidet sich von anderen DOM-Abfragemethoden, die Live-Knotenlisten zurückgeben.
- -

Beispiele und Details finden Sie in der Dokumentation zu den Methoden {{domxref("Element.querySelector()")}} und {{domxref("Element.querySelectorAll()")}} sowie im Artikel Code-Ausschnitte für querySelector.

- -

Selektoren

- -

Die Selektormethoden akzeptieren einen oder mehrere durch Kommas getrennte Selektoren, um zu bestimmen, welches Element bzw. welche Elemente zurückgegeben werden sollen. Um beispielsweise alle Absatz-Elemente (p) in einem Dokument auszuwählen, deren CSS-Klasse entweder eine warning oder ein note ist, können Sie folgendes schreiben:

- -
var special = document.querySelectorAll( "p.warning, p.note" );
- -

Sie können auch die ID abfragen. Zum Beispiel:

- -
var el = document.querySelector( "#main, #basic, #exclamation" );
- -

Nachdem der obige Code ausgeführt wurde, enthält el das erste Element im Dokument, dessen ID main, basic oder exclamation ist.

- -

Sie können jegliche CSS Selektoren mit den Methoden querySelector() und querySelectorAll() verwenden.

- -

Siehe auch

- - diff --git "a/files/de/gecko-dom-referenz/einf\303\274hrung/index.html" "b/files/de/gecko-dom-referenz/einf\303\274hrung/index.html" deleted file mode 100644 index 20cddb4d1c..0000000000 --- "a/files/de/gecko-dom-referenz/einf\303\274hrung/index.html" +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Einführung -slug: Gecko-DOM-Referenz/Einführung -tags: - - DOM -translation_of: Web/API/Document_Object_Model/Introduction ---- -

Diese Sektion bietet eine kurze, konzeptuelle Einführung in das DOM: was es ist, wie es Struktur für HTML und XML Dokumente bietet, wie man darauf zugreifen kann, und wie diese API die Referenz-Information und Beispiele präsentiert. 

- -

Was ist das DOM?

- -

Das Document Object Model (DOM) ist eine Programmier-Schnittstelle für HTML und XML Dokumente. Es liefert eine strukturierte Repräsentation von dem Dokument und bietet Möglichkeiten die Struktur von einem Programm anzusprechen, sodass die Dokument-Struktur, Stil und Inhalt von diesem verändert werden kann. Das DOM bietet die Repräsentation des Dokuments als strukturierte Gruppe von Knoten (nodes) und Objekten, welche Eigenschaften und Methoden haben. Essentiell ist, dass es eine Verbindung von Webseiten mit den Skripte oder Programmiersprachen bietet.

- -

Eine Webseite ist ein Dokument. Diese kann entweder im Browser-Fenster angzeigt werden, oder dessen HTML-Quellcode. In beiden Fällen ist es das gleiche Dokument. Das Dokument Objekt Modul (DOM) bietet einen anderen Weg zum Represäntieren, Lagern und Manipulieren von diesem Dokument. Das DOM ist eine vollkommen objekt-orientierte Repräsentation einer Webseite und kann mit Skript-Sprachen wie JavaScript modifiziert werden.

- -

Der W3C DOM Standard formte die Basis für die Implementierung des DOM in den meisten modernen Browsern. Viele Browser bieten Erweiterung außerhalb vom W3C-Standard an, sodass Obacht beim Benutzen dieser im Web geboten werden sollte, da Dokumente vielleicht von verschiedenen Browsern unterschiedliche DOMs haben.

- -

Als Beispiel definiert das W3D DOM die getElementsByTagName Methode und dessen Ausgabewert als eine Liste aller <p>-Elemente in dem Dokument:

- -
var paragraphs = document.getElementsByTagName("P");
-// paragraphs[0] is the first <p> element
-// paragraphs[1] is the second <p> element, etc.
-alert(paragraphs[0].nodeName);
-
- -

Alle diese Eigenschaften, Methoden und Events werden als organisierte Objekte vom DOM zur Verfügung gestellt und dienen der Manipulation und dem Erstellen von Webseiten. Als Beispiel: das document Objekt, welches sich selbst repräsentiert, das table Objekt, welches die spezielle HTMLTableElement DOM-Eingabemaske für den Zugriff von HTML-Tabellen bietet, usw). Diese Dokumentation bietet eine von Objekt-zu-Objekt Referenz der DOM implementierten und Gecko-basiertem Browsern (z.B. Firefox).

- -

DOM und JavaScript

- -

Das kurze Beispiel oberhalb, wie nahezu alle Beispiele in dieser Referenz, ist JavaScript. Das heißt es ist in JavaScript geschrieben, aber es nutzt das DOM um Zugriff auf das Dokument und seine Elemente zu erhalten. Das DOM ist keine Programmiersprache, aber ohne dieses würde JavaScript überhaupt kein Model oder Darstellung der Web-Seite, XML-Seite und dessen Elemente haben, um welche es sich normalerweise kümmert. Jedes Element in einem Dokument - das Dokuement als Ganzes, der Kopf, Tabellen innerhalb des Dokuments, Tabellen-Köpfe, Text innerhalb der Tabellen-Zellen - sind Teile des Dokument-Objekt-Moduls für das Dokument. Also können diese alle über das DOM und einer Skriptsprache wie JavaScript angesprochen und manipuliert werden.

- -

Am Anfang war JavaScript und das DOM stark verflochten, aber schließlich haben sich in eigenständiges Dasein entwickelt. Der Seiteninhalt wird im DOM gelagert und kann via JavaScript angesprochen und manipuliert werden, sodass wir diese ungefähre Gleichung schreiben können:

- -

API (web or XML page) = DOM + JS (scripting language)

- -

Das DOM wurde kreiert ohne eine Abhängigkeit von irgendeine spezielle Programmiersprache zu haben, welche die Struktur eines Dokuments repräsentiert und diese als eine einzelne, konsistente API (Programmierschnittstelle) zur Verfügung stellt. Obwohl wir uns in dieser Dokumentation speziell auf JavaScript konzentrieren, können die Inhalte des  DOM von jeder Programmiersprache, wie z.B. Python, genutzt werden - was dieses Beispiel demonstriert:

- -
# Python DOM example
-import xml.dom.minidom as m
-doc = m.parse("C:\\Projects\\Py\\chap1.xml");
-doc.nodeName # DOM property of document object;
-p_list = doc.getElementsByTagName("para");
-
- -

Für weitere Informationen darüber, welche Technologien in das Schreiben von JavaScript im Web involviert sind, siehe JavaScript Technologie Übersicht.

- -

 

- -

Wie greife ich auf das DOM zu?

- -

Du brauchst nichts besonderes machen um das DOM zu nutzen. Verschiedene Browser haben unterschiedliche Ausführungen vom DOM, und diese Ausführungen  weisen unterschiedliche Konformitätsgrade des eigentlichen DOM Standards auf - ein Thema, welches wir in dieser Dokumentation vermeiden zu versuchen. Aber jeder Browser benutzt ein Dokument-Objekt-Modl um eine Webseite für Skripte zugänglich zu machen.

- -

Wenn du ein Skript erstellst - ob in-line im <script>-Element oder eingebunden in der Webseite, das bedeutet von einer Anweisung, welches ein Skript lädt, - kannst du die API sofort nutzen um die document oder window Elemente des Dokuments selbst zu manipulieren oder zu dessen Kind-Elemente zu gelangen, welche eine Vielzahl an Elementen in einer Webseite sind. Deine DOM-Programmierung könnte vielleicht so simpel sein wie das Folgende, welches eine Aufruf-Nachricht (alert message) beim Ausführen der alert() Funktion von dem window Objekt ist. Oder du nutzt anspruchsvollere DOM-Methoden um neue Inhalte zu erstellen, wie im folgenden Beispiel unterhalb.

- -
<body onload="window.alert('welcome to my home page!');">
-
- -

Neben dem <script> Element, in welchem das JavaScript definiert ist, setzt dieses JavaScript eine Funktion in Gange, wenn das Dokument geladen ist (und wenn das ganze DOM zum Gebrauch erreichbar ist).

- -

Diese Funktion erstellt ein neues H1 Element, fügt Text zum Element, und dann fügt es die H1 in den Baum des Dokuments hinein:

- -
<html>
-  <head>
-    <script>
-       // Diese Funktion ausführen, wenn das Dokument geladen ist.
-       window.onload = function() {
-
-       // Erstellen Sie ein paar Elemente in einer ansonsten leeren HTML-Seite
-       var heading = document.createElement("h1");
-       var heading_text = document.createTextNode("Big Head!");
-       heading.appendChild(heading_text);
-       document.body.appendChild(heading);
-      }
-    </script>
-  </head>
-  <body>
-  </body>
-</html>
-
- -

Wichtige Daten-Typen

- -

Diese Dokumenation versucht eine vielzahl an Objekten und Typen so leicht wie möglich zu erklären. Aber es gibt eine Anzahl verschiedener Daten-Typen, welche sich rund um die API behandelt werden - also achte darauf. Einfachheitshalber sind die Syntax-Beispiele in dieser API-Referenz referenzieren typischerweise an nodes (Knoten) als Elemente, an Arrays von nodes als nodeLists (oder einfach elements), und an Attribut-Knoten (attribute nodes), einfach als attributes.

- -

Die folgende Tabelle beschreibt kurz diese Daten-Typen:

- - - - - - - - - - - - - - - - - - - - - - - - -
document -

Wenn ein Mitglied ein Objekt des Typs document wiedergibt (z.B. die ownerDocument Eigenschaft eines Elements gibt das document wieder, zu welchem es gehört), ist diese Objekt das oberste document Objekt selbst. Das Kapitel DOM document Referenz  beschreibt  das document Objekt.

-
element -

element gehört zu einem Element oder einer node des Typs element, wiedergegeben von einem Mitglied der DOM API. Anstatt zu sagen, dass die document.createElement() Methode ein Objekt wiedergibt, welches zu einer node referenziert wird, sagen wir dass die Methode ein element wiedergibt, dass gerade in dem DOM erstellt wurde. Element Objekte implementieren das DOM Element-Interface und ebenso das einfachere Node-Interface, welche diese Referenz beide beinhaltet.

-
nodeList -

Eine nodeList ist eine Ansammlung von Elementen, ähnlich wie diese von der Methode document.getElementsByTagName() zurückgegeben werden. Inhalte in einer nodeList werden könne auf zwei Wegen anhand des Indexes angesprochen werden. Diese beiden sind gleichwertig:

- -
    -
  • list.item(1)
  • -
  • list[1]
  • -
- -

Im Ersten item() ist die einzelne Methode auf das nodeList Objekt. Das Zeichen nutzt die typische Array-Syntax um den zweiten Inhalt in der Liste abzuholen.

-
attributeWhen an attribute is returned by a member (e.g., by the createAttribute() method), it is an object reference that exposes a special (albeit small) interface for attributes. Attributes are nodes in the DOM just like elements are, though you may rarely use them as such.
namedNodeMap -

Eine namedNodeMap ist wie ein Array. Aber die Inhalte werden beim Namen oder Index angesprochen. Obwohl dieser letztere Fall nur eine Bequemlichkeit für die Aufzählung ist, da sie in keiner bestimmten Reihenfolge in der Liste sind. Eine namedNodeMap hat eine item() Methode für diesen Fall - du kannst ebenfalls Inhalte zu einer namedNodeMap hinzufügen oder entfernen.

-
- -

DOM Schnittstellen

- -

This guide is about the objects and the actual things you can use to manipulate the DOM hierarchy. It's often a matter of indifference that the object representing the HTML FORM element gets its name property from the HTMLFormElement interface but its className property from the HTMLElement interface proper. In both cases, the property you want is simply in the form object.

- -

But the relationship between objects and the interfaces that they implement in the DOM can be confusing, and so this section attempts to say a little something about the actual interfaces in the DOM specification and how they are made available.

- -

Schnittstellen und Objekte

- -

Many objects borrow from several different interfaces. The table object, for example, implements a specialized HTML Table Element Interface, which includes such methods as createCaption and insertRow. But since it's also an HTML element, table implements the Element interface described in the DOM element Reference chapter. And finally, since an HTML element is also, as far as the DOM is concerned, a node in the tree of nodes that make up the object model for a web page or an XML page, the table element also implements the more basic Node interface, from which Element derives.

- -

When you get a reference to a table object, as in the following example, you routinely use all three of these interfaces interchangeably on the object, perhaps without knowing it.

- -
var table = document.getElementById("table");
-var tableAttrs = table.attributes; // Node/Element interface
-for (var i = 0; i < tableAttrs.length; i++) {
-  // HTMLTableElement interface: border attribute
-  if(tableAttrs[i].nodeName.toLowerCase() == "border")
-    table.border = "1";
-}
-// HTMLTableElement interface: summary attribute
-table.summary = "note: increased border";
-
- -

Interne Schnittstellen des DOM

- -

This section lists some of the most commonly-used interfaces in the DOM. The idea is not to describe what these APIs do here but to give you an idea of the sorts of methods and properties you will see very often as you use the DOM. These common APIs are used in the longer examples in the DOM Examples chapter at the end of this book.

- -

Document and window objects are the objects whose interfaces you generally use most often in DOM programming. In simple terms, the window object represents something like the browser, and the document object is the root of the document itself. Element inherits from the generic Node interface, and together these two interfaces provide many of the methods and properties you use on individual elements. These elements may also have specific interfaces for dealing with the kind of data those elements hold, as in the table object example in the previous section.

- -

The following is a brief list of common APIs in web and XML page scripting using the DOM.

- - - -

Das DOM API testen

- -

This document provides samples for every interface that you can use in your own web development. In some cases, the samples are complete HTML pages, with the DOM access in a <script> element, the interface (e.g, buttons) necessary to fire up the script in a form, and the HTML elements upon which the DOM operates listed as well. When this is the case, you can cut and paste the example into a new HTML document, save it, and run the example from the browser.

- -

There are some cases, however, when the examples are more concise. To run examples that only demonstrate the basic relationship of the interface to the HTML elements, you may want to set up a test page in which interfaces can be easily accessed from scripts. The following very simple web page provides a <script> element in the header in which you can place functions that test the interface, a few HTML elements with attributes that you can retrieve, set, or otherwise manipulate, and the web user interface necessary to call those functions from the browser.

- -

You can use this test page or create a similar one to test the DOM interfaces you are interested in and see how they work on the browser platform. You can update the contents of the test() function as needed, create more buttons, or add elements as necessary.

- -
<html>
-  <head>
-    <title>DOM Tests</title>
-    <script type="application/javascript">
-    function setBodyAttr(attr,value){
-      if (document.body) eval('document.body.'+attr+'="'+value+'"');
-      else notSupported();
-    }
-    </script>
-  </head>
-  <body>
-    <div style="margin: .5in; height: 400;">
-      <p><b><tt>text</tt>color</b></p>
-      <form>
-        <select onChange="setBodyAttr('text',
-        this.options[this.selectedIndex].value);">
-          <option value="black">black
-          <option value="darkblue">darkblue
-        </select>
-        <p><b><tt>bgColor</tt></b></p>
-        <select onChange="setBodyAttr('bgColor',
-        this.options[this.selectedIndex].value);">
-          <option value="white">white
-          <option value="lightgrey">gray
-        </select>
-        <p><b><tt>link</tt></b></p>
-        <select onChange="setBodyAttr('link',
-        this.options[this.selectedIndex].value);">
-          <option value="blue">blue
-          <option value="green">green
-        </select>  <small>
-        <a href="http://www.brownhen.com/dom_api_top.html" id="sample">
-        (sample link)</a></small><br>
-      </form>
-      <form>
-        <input type="button" value="version" onclick="ver()" />
-      </form>
-    </div>
-  </body>
-</html>
-
- -

To test a lot of interfaces in a single page-for example, a "suite" of properties that affect the colors of a web page-you can create a similar test page with a whole console of buttons, textfields, and other HTML elements. The following screenshot gives you some idea of how interfaces can be grouped together for testing.

- -
-
Bild 0.1 Beispiel DOM Test Seite
-Image:DOM_Ref_Introduction_to_the_DOM.gif
- -

In this example, the dropdown menus dynamically update such DOM-accessible aspects of the web page as its background color (bgColor), the color of the hyperlinks (aLink), and color of the text (text). However you design your test pages, testing the interfaces as you read about them is an important part of learning how to use the DOM effectively.

- - - - diff --git a/files/de/gecko-dom-referenz/index.html b/files/de/gecko-dom-referenz/index.html deleted file mode 100644 index d8498ba791..0000000000 --- a/files/de/gecko-dom-referenz/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Gecko DOM Referenz -slug: Gecko-DOM-Referenz -tags: - - DOM - - Gecko - - Gecko-DOM-Referenz -translation_of: Web/API/Document_Object_Model ---- -

Dies ist die Übersichtsseite der Gecko DOM Referenz.

-
Diese Referenz ist im Moment noch sehr unvollständig. Hilf mit: registriere dich und schreib mit!
-
Diese Referenz trennt zwischen Methoden und Eigenschaften die für Webinhalte verfügbar oder nur für Entwickler von Erweiterungen verfügbar sind. Erweiterungsentwickler halten sich bitte an die englische Funktionsreferenz im Mozilla Developer Center.
-

Einleitung (englisch)

- -

Einführung (englisch)

- -

DOM Objekt Referenzen

-

DOM window Referenz

- -

DOM document Referenz

- -

DOM element Referenz

- -

DOM event Referenz

-

(mit den Unterobjekten UIEvent, KeyEvent, MouseEvent)

- -

DOM range Referenz

- -

DOM selection Referenz

- -

Plugin

-

DOM style Referenz

- -

DOM - Andere Objekte

- -

HTML Schnittstellen

-

HTMLDocument (Siehe auch document)

-

HTML Elementschnittstellen

- -

Canvas-Schnittstelle

- -

Medien-bezogene Schnittstellen

-

Diese Schnittstellen werden für Aufgaben im Bereich von Audio und Video verwendet.

-
HTMLAudioElement
Repräsentiert das HTML5 {{ HTMLElement("audio") }} Element.
HTMLVideoElement
Repräsentiert das HTML5 {{ HTMLElement("video") }} Element.
NotifyAudioAvailableEvent
Beschreibt ein Ereignis, welches ausgelöst wird, wenn Skripten Zugang zu Audiostream-Daten erlaubt wurde.
-
-

Collection Schnittstellen

-

HTMLCollection, HTMLAllCollection, HTMLFormControlsCollection, HTMLOptionsCollection, HTMLPropertiesCollection

-

Andere HTML Schnittstellen

-

DOMTokenList, DOMSettableTokenList, DOMStringMap, RadioNodeList

-

DOM Beispiele (englisch)

- -

{{ languages( { "en" : "en/Gecko_DOM_Reference", "es": "es/Referencia_DOM_de_Gecko", "fr": "fr/R\u00e9f\u00e9rence_du_DOM_Gecko", "it": "it/Reference_del_DOM_di_Gecko", "ja": "ja/Gecko_DOM_Reference", "ko": "ko/Gecko_DOM_Reference", "pl": "pl/Dokumentacja_Gecko_DOM", "zh-cn": "cn/Gecko_DOM_\u53c2\u8003" } ) }}

diff --git a/files/de/gecko_user_agent_string_referenz/index.html b/files/de/gecko_user_agent_string_referenz/index.html deleted file mode 100644 index 6af733f131..0000000000 --- a/files/de/gecko_user_agent_string_referenz/index.html +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: Referenz der User-Agent-Strings für Gecko -slug: Gecko_user_agent_string_referenz -translation_of: Web/HTTP/Headers/User-Agent/Firefox ---- -

{{ gecko_minversion_header("2.0") }}

-

Dieses Dokument beschreibt den User-Agent-String (Browsertyp-Indefitizierungstext), der seit Firefox 4 und in Gecko 2.0 (oder höher) -basierenden Programmen verwendet wird. Bezüglich des Verlaufs der Änderungen auf dem Text in Gecko 2.0, konsultiern Sie den Blog-Post Final User Agent string for Firefox 4. Schauen Sie auch in unserer Dokumentation zu user agent sniffing (Erkennen von Browsertypen) und den Blog-Post über die Hacks.

-

Allgemeine Form

-

AU-String von Firefox besteht aus vier Teilen:

-

Mozilla/5.0 (Platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion

- -
- Note: The recommended way of sniffing for Gecko-based browsers (if you have to sniff for the browser engine instead of using feature detection) is by the presence of the "Gecko" and "rv:" strings, since some other browsers include a "like Gecko" token.
-

For other products based on Gecko, the string can take one of two forms, where the tokens have the same meaning except those noted below:

-

Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail appname/appversion
- M
ozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion appname/appversion

- -

{{ h2_gecko_minversion("Mobile and Tablet indicators", "11.0") }}

-

The platform part of the UA string indicates if Firefox is running on a phone-sized or tablet device. When Firefox runs on a device that has the phone form factor, there is a Mobile; token in the platform part of the UA string. When Firefox runs on a tablet device, there is a Tablet; token in the platform part of the UA string instead. For example:

-

Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0

-

Mozilla/5.0 (Android; Tablet; rv:13.0) Gecko/13.0 Firefox/13.0

-

The preferred way to target content to a device form factor is to use CSS Media Queries. However, if you use UA sniffing to target content to a device form factor, please look for Mobi (to include Opera Mobile, which uses "Mobi") for the phone form factor and do not assume any correlation between "Android" and the device form factor. This way, your code will work if/when Firefox ships on other phone/tablet operating systems or Android is used for laptops. Also, please use touch detection to find touch devices rather than looking for "Mobi" or "Tablet" - there may be touch devices which are not tablets.

-
- Note: Firefox OS devices identify themselves without any operating system indication; for example: "Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0". The web is the platform.
-

Windows

-

Windows user agents have the following variations, where x.y is the Windows NT version (for instance, Windows NT 6.1).

- - - - - - - - - - - - - - - - - - - - - -
Windows versionGecko user agent string
Windows NT on x86Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0
Windows NT, Win64 on x64Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0
Windows NT, WOW64Mozilla/5.0 (Windows NT x.y; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0
-

Macintosh

-

Here, x.y is the version of Mac OS X (for instance, Mac OS X 10.6).

- - - - - - - - - - - - - - - - - -
Mac OS X versionGecko user agent string
Mac OS X on Intel x86 or x86_64Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0
Mac OS X on PowerPCMozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0
-

Linux

-

Linux is a more diverse platform. A few common examples are given below.

- - - - - - - - - - - - - - - - - - - - - - - - - -
Linux versionGecko user agent string
Linux desktop, i686Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0
Linux desktop, x86_64Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0
Linux desktop, i686 running on x86_64Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0) Gecko/20100101 Firefox/10.0
Nokia N900 Linux mobile, on the Fennec browserMozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0
-

Android

- - - - - - - - - - - - - - - - - - - -
Form factorGecko user agent string
PhoneMozilla/5.0 (Android; Mobile; rv:26.0) Gecko/26.0 Firefox/26.0
TabletMozilla/5.0 (Android; Tablet; rv:26.0) Gecko/26.0 Firefox/26.0
-

Firefox OS

- - - - - - - - - - - - - - - - - - - -
Form factorGecko user agent string
PhoneMozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0
TabletMozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0
Device-specifcMozilla/5.0 (Mobile; nnnn; rv:26.0) Gecko/26.0 Firefox/26.0
-

Device-specific user agent strings

-

Although it is discouraged by Mozilla, some handset manufacturers include a token in their device's UA string that represents their device id. If this is the case, the Firefox OS UA string will look like the device-specific string in the table above, where nnnn; is the manufacturer's code for the device. This code could be something like NexusOne; or ZTEOpen;We provide this information to assist with your UA detection logic, but Mozilla discourages the detection of a device id in UA strings.

-

Here is a JavaScript regular expression that will detect all mobile devices, including devices with a device id in their UA string:

-
/mobi/i
-

The i makes it case-insensitive, and mobi matches all mobile browsers.

-

Firefox OS version number

-

While the version number for Firefox OS is not included in the UA string, it is possible to infer version information from the Gecko version number present in the UA string. Beginning with Firefox OS 1.2, each minor version should correspond to two major Gecko revisions.

- - - - - - - - - - - - - - - - - - - - - - - - - -
Firefox OS version numberGecko version number
1.0.118.0
1.118.1
1.226.0
1.328.0
-

Firefox OS has a 4 digit version number: X.X.X.Y. The first 2 digits are owned by the Mozilla product team and will denote versions with new features (eg: v1.1, 1.2, etc). The third digit will be incremented with regular version tags (~every 6 weeks) for security updates, and the fourth will be OEM owned.

-

Other Gecko-based browsers

-

These are some sample UA strings from other Gecko-based browsers on various platforms. Note that many of these have not yet been released on Gecko 2.0!

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BrowserGecko user agent string
Firefox for Maemo (Nokia N900)Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1
Camino on MacMozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1
SeaMonkey on WindowsMozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1
SeaMonkey on MacMozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1
SeaMonkey on LinuxMozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1
-

Implementation notes for applications, vendors, and extensions

-

Prior to Firefox 4 and Gecko 2.0, it was possible for extensions to add user agent parts through the general.useragent.extra.identifier preferences, (see the obsolete User Agent Strings Reference). But that has not been possible since {{ Bug(581008) }}.

-

In the past, specific plug-ins, add-ons or extensions added user agent parts to notify sites they were installed. The recommended way to do this, if it's absolutely necessary (remember that it slows down every request) is to set a custom HTTP header.

-

See Also

- -
-

Comments to mozilla.dev.platform

-

{{ languages( { "ja": "ja/Gecko_user_agent_string_reference"} ) }}

diff --git a/files/de/installationsmanifest/index.html b/files/de/installationsmanifest/index.html deleted file mode 100644 index b0ce828915..0000000000 --- a/files/de/installationsmanifest/index.html +++ /dev/null @@ -1,328 +0,0 @@ ---- -title: Installationsmanifest -slug: Installationsmanifest -tags: - - Add-ons - - Erweiterungen - - Toolkit API -translation_of: Archive/Add-ons/Install_Manifests ---- -

Einführung

-

Ein Installationsmanifest ist eine Datei, die von einer XUL-Anwendung mit einem Add-on Manager benutzt wird, um Information über das zu installierende Add-on zu erhalten. Es enthält Metadaten zur Identifikation des Add-ons und gibt Auskunft darüber, wer es erstellt hat, wo weiterführende Informationen zu finden sind, welche Versionen mit welcher Anwendung kompatibel ist, wie das Add-on zu aktualisieren ist, usw.

-

Das Format eines Installationsmanifests ist RDF/XML.

-

Die Datei muss den Namen install.rdf haben und sich auf der obersten Verzeichnisebene in der XPI-Datei eines Add-ons befinden.

-

Aufbau

-

Der grundlegende Aufbau eines Installationsmanifests sieht folgendermaßen aus:

-
<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-  <Description about="urn:mozilla:install-manifest">
-    <!-- Eigenschaften -->
-  </Description>
-</RDF>
-
-

Einige Eigenschaften sind erforderlich, andere sind optional. Einige sind einfache Zeichenketten, während andere komplexe Ressourcen sind.

-

Referenz erforderlicher Eigenschaften

-

Diese Eigenschaften müssen in Ihrem Installationsmanifest korrekt angegeben werden, andernfalls wird Ihr Add-on eventuell nicht installiert.

-

id

-

Die ID der Erweiterung, nämlich entweder eine:

- -

Letztere Form ist deutlich einfacher zu erzeugen und zu verändern. Firefox 1.5 ist in der Lage sicherzustellen, dass Ihre ID dem einen oder anderen Format entspricht und wird die Installation eines Add-ons verweigern, sollte die ID nicht wohlgeformt sein.

-

Beispiele

-
<em:id>myextension@mysite.com</em:id>
-
-<em:id>{daf44bf7-a45e-4450-979c-91cf07434c3d}</em:id>
-
-

version

-

Eine Zeichenkette, welche die Version des vorliegendenAdd-ons angibt.

-

Für Firefox/Thunderbird 1.0 muss das Format den Regeln genügen, die in "Versionen, Aktualisierung und Kompatibilität von Add-ons" beschrieben sind.
- Für Firefox/Thunderbird 1.5, siehe Toolkit Versionsformate.

-

Beispiele

-
<em:version>2.0</em:version>
-
-<em:version>1.0.2</em:version>
-
-<em:version>0.4.1.2005090112</em:version>
-
-
-

Firefox 1.5 / XULRunner 1.8 - Add-ons mit einem ungültigen Versionsformat werden nicht installiert. Das Format unterscheidet sich vom 1.0er, ist jedoch dazu abwärtskompatibel.

-

Für auf addons.mozilla.org bereitgestellte Add-ons - Mozillas Aktualisierungswebseite verpackt Ihr Add-on möglicherweise neu und berichtigt Versionszeichenketten oder weist sie zurück.

-

type

-

Ein ganzzahliger Wert, der für den Typ des Add-ons steht.

- - - - - - - - - - - - - - - - - - - -
2Erweiterungen
4Theme
8Lokalisierung
32Multiple Item Package
-

Beispiele

-
<em:type>2</em:type>
-
-

{{ Fx_minversion_inline(1.5) }} Diese Eigenschaft wurde in Firefox 1.5 hinzugefügt und ist nur erforderlich für Add-on Typen, die keine Erweiterungen und Themen sind.

-

{{ Fx_minversion_inline(3) }} Firefox 2 und früher unterstützen einen Wert von "16", welcher Plug-ins repräsentierte. In Firefox 3 wurde dies entfernt.

-

targetApplication

-

Ein Objekt, welches eine Ziel-Applikation des Add-ons festlegt. Das bedeutet, dass das Add-on mit der Anwendung arbeitet, welche mit der ID Eigenschaft (<em:id>) festgelegt wurde (eine Liste von Anwendungs-IDs und gültigen min/maxVersions für diese, siehe Valid application versions for add-on developers[engl.]) und welche der minimalen Version (<em:minVersion>) bis und einschließlich der maximalen Version (<em:maxVersion>) entspricht. Diese Versionsangaben sind in der gleichen Weise formatiert, wie auch die version Eigenschaft und wird mit der Anwendungsversion verglichen. Das erlaubt dem Erweiterungsautor, festzulegen, welche Version von Firefox getestet wurde.

-
- Erweiterungen, die kompatibel mit Firefox 3.5 sind, sollten eine maxVersion von 3.5.* festlegen, sodass sie automatisch kompatibel mit Sicherheitsupdates sind. Für Firefox 3.0 sollte eine maxVersion von 3.0.* verwendet werden. Erweiterungen, die nur mit Firefox oder Thunderbird 2 kompatibel sind, sollten eine maxVersion von 2.0.0.* festlegen.
-

Das Installationsmanifest muss wenigsten eine dieser Objekte festlegen und kann weitere festlegen, wenn das Add-on auf mehrere Anwendungen zielt, die der Add-on Manager unterstützt (z.B. Firefox and Thunderbird).

-

Beispiele

-
<em:targetApplication>
- <Description>
-  <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> Firefox
-  <em:minVersion>1.5</em:minVersion>
-  <em:maxVersion>3.0.*</em:maxVersion>
- </Description>
-</em:targetApplication>
-
-

{{ Fx_minversion_inline(3) }} Auf Gecko 1.9 basierte Anwendungen erlauben Ihnen eine spezielle targetApplication ID toolkit@mozilla.org zu verwenden, um auszudrücken, dass das Add-on kompatibel mit jeder Toolkit-Anwendung ist, die auf die minVersion und maxVersion passt.

-

name

-

Der Name des Add-ons - vorgesehen für die Anzeige auf der Benutzeroberfläche.

-

Beispiele

-
<em:name>Meine Erweiterung</em:name>
-
-

Referenz optionaler Eigenschaften

-

Abhängig von den Fähigkeiten Ihres Add-ons müssen diese Eigenschaften gegebenenfalls angegeben werden.

-

bootstrap

-

{{ Fx_minversion_inline(4) }} Ein boolescher Wert, welcher der Anwendung mitteilt, ob die Erweiterung ohne Neustart installiert, deinstalliert oder aktualisiert werden kann. Das funktioniert zur Zeit nur für Add-ons mit em:type="2". Der Standardwert ist false. Für weitere Informationen, siehe Bootstrapped Extensions.

-

unpack

-

{{ Fx_minversion_inline(4) }} Ein boolescher Wert, welcher angibt, ob die Erweiterung es erfordert, dass die ihre Dateien in ein Verzeichnis entpackt werden müssen, damit diese funktioniert oder ob die Erweiterung direkt vom XPI geladen werden kann. In Versionen vor Gecko 2.0 werden alle Erweiterungen entpackt, in Gecko 2.0 und später wird standardmäßig nicht entpackt. Falls eine Erweiterung folgendes enthält, muss diese entpackt werden:

- -

localized

-

{{ Fx_minversion_inline(3) }} Den Namen, die Beschreibung, die Namen von Mitwirkenden und weitere Metadaten können Sie hiermit sprachlich anpassen. Mindestens ein em:locale muss von der angepassten Beschreibung spezifiziert werden, um anzuzeigen für welche Sprachregionen die Information genutzt werden soll.

-

Beispiele

-

Dies legt ein Reihe von Add-on Metadaten fest, die angezeigt werden, wenn die Anwendung im de-DE Sprachpaket läuft.

-
<em:localized>
-  <Description>
-    <em:locale>de-DE</em:locale>
-    <em:name>Tab Sidebar</em:name>
-    <em:description>Zeigt in einer Sidebar Vorschaubilder der Inhalte aller offenen Tabs an.</em:description>
-  </Description>
-</em:localized>
-
-

Die folgenden Eigenschaften, die auch auf dieser Seite genannt werden, können in die Eigenschaft "localized" eingefügt werden:

- -

Weitere Dokumentation lässt sich unter Lokalisierung von Erweiterungsbeschreibungen finden.

-

description

-

Eine Kurzbeschreibung des Add-ons - vorgesehen für die Anzeige auf der Benutzeroberfläche. Die Beschreibung sollte in einer kurzen Textzeile Platz finden.

-

Beispiele

-
MegaInternetPhoneCall;em:description>Fortgeschrittene foo-Werkzeuge.</em:description>
-
-

creator

-

Der Name des Erstellers/Hauptentwicklers - vorgesehen für die Anzeige auf der Benutzeroberfläche.

-

Beispiele

-
<em:creator>John Doe</em:creator>
-
-

oder

-
<em:creator>CoolExtension Team</em:creator>
-
-

developer

-

{{ Fx_minversion_inline(2) }} Entwicklername(n). Sie können diesen Wert mehrfach angeben, um die Namen mehrerer Entwickler anzugeben.

-

Beispiele

-
<em:developer>Jane Doe</em:developer>
-<em:developer>Koos van der Merwe</em:developer>
-
-

translator

-

{{ Fx_minversion_inline(2) }} Übersetzername(n). Sie können diesen Wert mehrfach angeben, um die Namen mehrerer Übersetzer anzugeben.

-

Beispiele

-
<em:translator>Janez Novak</em:translator>
-<em:translator>Kari Nordmann</em:translator>
-
-

contributor

-

Name(n) zusätzliche(r) Mitwirkende(r). Sie können diesen Wert mehrfach angeben, um die Namen mehrerer Mitwirkender anzugeben.

-

Beispiele

-
<em:contributor>John Doe</em:contributor>
-
-<em:contributor>John Doe</em:contributor>
-<em:contributor>Jane Doe</em:contributor>
-<em:contributor>Elvis Presley</em:contributor>
-
-

homepageURL

-

Eine Verknüpfung zur Seite des Zusatzes - vorgesehen für die Anzeige auf der Benutzeroberfläche.

-

Beispiele

-
<em:homepageURL>http://www.foo.com/</em:homepageURL>
-
-

updateURL

-

Ein Link zu einer Aktualisierungsdatei des Manifests, welches verfügbare Updates für das Add-on festlegt. Das Format ist unten beschrieben. Wenn aktiviert, überprüft der Add-on Manager regelmäßig diese Manifestdatei, um festzustellen, ob neuere Versionen verfügbar sind.

-
- Hinweis: Es wird stark empfohlen, dass die updateURL ein HTTPS (sicherer) Link ist. Nicht sicherere Aktualisierungs-URLs können von Malware infiziert werden und führen dazu, dass Malware auf den Computer des Benutzers geschleust wird. Alternativ können Sie Ihre Erweiterung auf AMO bereitstellen und updateURL komplett weglassen. Sicherheitsupdates werden automatisch bereitgestellt.
-

{{ Fx_minversion_inline(3) }} Aus Sicherheitsgründen erfordern Gecko 1.9 Anwendungen, dass Sie eine HTTPS updateURL oder einen updateKeyangeben müssen.

-

Ihr Server muss diese Datei als text/rdf, text/xml oder application/xml+rdf ausliefern, sonst funktioniert der Update-Checker nicht.

-

Der Add-on Manager wird die folgenden Werte in der URLersetzen, falls Sie das RDF dynamisch generieren wollen, z.B. mit PHP oder CGI:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%REQ_VERSION%Die Version der Anfrage. Aktuell 1
%ITEM_ID%Die id des Add-ons, welches aktualisiert werden soll
%ITEM_VERSION%Die version des Add-ons, welches aktualisiert werden soll
%ITEM_MAXAPPVERSION%Die maxVersion des targetApplication Objekts, im Bezug zur aktuellen Anwendung für das zu aktualisierende Add-on.
%ITEM_STATUS%{{ Fx_minversion_inline(2) }} Komma-getrennte Liste der Add-on Status in der Applikation. Enthält mindestens entweder userEnabled oder userDisabled plus eine Nummer von incompatible, blockslisted oder needsDependencies.
%APP_ID%Die id der aktuellen Anwendung
%APP_VERSION%Die Version der Anwendung, um auf Updates zu prüfen
%CURRENT_APP_VERSION%{{ Fx_minversion_inline(3.5) }} Die Version der aktuellen Anwendung
%APP_OS%{{ Fx_minversion_inline(1.5) }} Der Wert von OS_TARGET aus dem Firefox Build-System, welcher das verwendete Betriebssystem identifiziert.
%APP_ABI%{{ Fx_minversion_inline(1.5) }} Der Wert von TARGET_XPCOM_ABI aus dem Firefox Build-System, welcher die Architektur zur Kompilierung der aktuellen Anwendung enthält.
%APP_LOCALE%{{ Fx_minversion_inline(3) }} Die aktuelle Sprache der Anwendung.
-

Beispiele

-
<em:updateURL>http://www.foo.com/update.cgi?id=%ITEM_ID%&amp;version=%ITEM_VERSION%</em:updateURL>
-<em:updateURL>http://www.foo.com/extension/windows.rdf</em:updateURL>
-
-

Für Add-ons, die auf addons.mozilla.org bereitgestellt werden: Sie müssen keine updateURL Eigenschaft angeben. Standardmäßig werden Mozilla Applikationen über den Addon Manager (wie Firefox und Thunderbird) automatisch Anfragen an addons.mozilla.org senden. Jedes Mal, wenn Sie eine neue Version Ihres Add-ons hochladen oder die Kompatibilitätsparameter ändern, wird Ihr Update-Manifest automatisch generiert. Add-ons, die aktuell als experimental markiert sind, werden aus Gründen der Sicherheit nicht aktualisiert.

-

Format des Update-Manifests: Das Update-Manifest ist eine RDF/XML Datenquelle. Beispiele eines Update-Manifests, siehe Versionen, Aktualisierung und Kompatibilität von Add-ons.

-

updateKey

-

{{ Gecko_minversion_header(1.9) }} {{ Fx_minversion_header(3) }}

-

Um die Sicherheit eines Updates von RDF Daten zu gewährleisten, welches über HTTP empfangen wird, müssen Sie eine digitale Signatur, um die Inhalte der Daten zu verifizieren, hinzufügen. Um dies zu machen, müssen Sie den öffentlichen Teil des kryptographischen Schlüssel in einem updateKey in der install.rdf Datei des Add-ons notieren. Dieser kann über ein Tool generiert werden: McCoy. Zeilenumbrüche und Leerzeichen werden ignoriert.

-

Beispiele

-
 <em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
-               Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
-               NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
-               awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
-
-

optionsURL

-

Die chrome:// URL des Dialogfensters für die Optionen der Erweiterung. Nur für Erweiterungen von Nutzen. Sofern diese Eigenschaft angegeben ist, wird bei Auswahl dieser Erweiterung in der Erweiterungsliste die Schaltfläche "Einstellungen" auswählbar, welche auf Klick hin dieses Dialogfenster anzeigt.

-

Beispiele

-
<em:optionsURL>chrome://myext/content/options.xul</em:optionsURL>
-
-

aboutURL

-

Die chrome://-URL des Dialogfensters für Information über die Erweiterung. Nur für Erweiterungen von Nutzen. Sofern diese Eigenschaft angegeben ist, wird bei Auswahl dieser Erweiterung in der Erweiterungsliste ein entsprechender Eintrag im Kontextmenü der Erweiterung verfügbar, welcher auf Auswahl hin dieses Dialogfenster statt einer vorgegebenen Variante anzeigt.

-

Beispiele

-
<em:aboutURL>chrome://myext/content/about.xul</em:aboutURL>
-
-

iconURL

-

Eine chrome:// URL zu einem 32x32 Icon, welches in der Add-on List angezeigt wird. Wird diese Eigenschaft nicht angegeben, wird das Standardicon verwendet.

-
<em:iconURL>chrome://myext/skin/icon.png</em:iconURL>
-
- Hinweis: Damit das obige Beispiel funktioniert, müssen Sie auch ein skin Paket in Ihre chrome.manifest Datei hinzufügen. Siehe Chrome Registrierung#skin. Alternativ können Sie Ihr Icon in das Verzeichnis packen, welches Sie in Ihrem content Paket festgelegt haben.
-

{{ gecko_minversion_note("1.9.2", "Ab Gecko 1.9.2 (Firefox 3.6) können Sie auch einfach Ihr Icon icon.png nennen und es in das Basisverzeichnis des Add-ons platzieren. Das erlaubt Ihnen Ihr Add-on Icon sogar anzuzeigen, wenn Ihr Add-on deaktiviert ist oder im Manifest kein iconURL Eintrag vorhanden ist.") }}

-

targetPlatform

-

{{ Fx_minversion_inline(1.5) }} Eine Zeichenkette, welche die Plattform angibt, die vom Add-on unterstützt wird. Enthält entweder den Wert von OS_TARGET allein oder in Kombination mit TARGET_XPCOM_ABI, getrennt durch einen Unterstrich (_).

-

Sie können die Eigenschaft targetPlatform je Manifest mehrfach angeben. Passt einer der Werte zu den Parametern, mit denen die Anwendung gebaut wurde, wird das Add-on installiert; anderenfalls erhält der Benutzer eine entsprechende Fehlermeldung.

-

Beispiele

-
<em:targetPlatform>WINNT_x86-msvc</em:targetPlatform>
-
-<em:targetPlatform>Linux</em:targetPlatform>
-
-<em:targetPlatform>Darwin_ppc-gcc3</em:targetPlatform>
-
-<em:targetPlatform>SunOS_sparc-sunc</em:targetPlatform>
-
-

Normalerweise verwenden Sie nur den OS Teil für Themes und Erweiterungen, die nicht komplett System-übergreifend sind. Für Erweiterungen mit binären (kompilierten) Komponenten sollten sie aber niemals das OSalleine sonder mit ABI (s) angeben, mit welchen Sie die Komponenten kompiliert haben. Wenn Sie mehrere Versionen der Komponenten einbinden wollen, sollten Sie Plattform-spezifische Unterverzeichnisse verwenden.

-

Hinweise

- - -

Diese Eigenschaft wurde für Firefox/Thunderbird 1.5 hinzugefügt. Vorherige Versionen dieser Anwendungen werden die Einschränkungen ignorieren und das Add-on ungeachtet der Plattform installieren.

-

requires

-

{{ Fx_minversion_inline(2) }} Dieses Tag hat ein ähnliches Syntax wie das <em:targetApplication> Tag. Wenn das Add-on ,von dem <em:id> Tag festgelegt, nicht installiert ist oder eine nicht kompatible Version hat, wird der Erweiterungsmanager die Erweiterung deaktivieren und die Nachricht anzeigen "Erfordert zusätzliche Funktionen". Sie können so viele <em:requires> Tags wie Sie möchten hinzufügen. Ihre Erweiterung wird deaktiviert, wenn eines der festlegten Anforderungen fehlschlägt.

-

Beispiele

-
<em:requires>
-   <Description>
-     <!-- Lightning -->
-     <em:id>{e2fda1a4-762b-4020-b5ad-a41df1933103}</em:id>
-     <em:minVersion>0.5pre</em:minVersion>
-     <em:maxVersion>0.5pre</em:maxVersion>
-   </Description>
- </em:requires>
-
-

Hinweise

- -

Diese Eigenschaft wurde in Firefox/Thunderbird 2 hinzugefügt. Vorherige Versionen dieser Anwendungen werden diese Einschränkungen ignorieren und das Add-on unabhängig von den Anforderungen installieren.

-

Referenz veralteter Eigenschaften

-

Diese Eigenschaften waren in alten Versionen des Add-on Managers vorhanden, wurden aber mittlerweile durch neuere und bessere Mechanismen ersetzt.

-

file

-

Firefox 1.0 Diese Eigenschaft verwies auf eine chrome .jar Datei, die Chrome-Pakete enthielt, die eine Registrierung mit der Chrome-Registry erforderten.

-

Die <em:file> Eigenschaft hat einen komplexen Objektwert. Die uri des Wertes ist urn:mozilla:extension:file:jarFile.jar wobei jarFile.jar derName der jar Datei ist, welche die Dateien des Chrome-Pakets enthält. Das könnte auch der Name eines Verzeichnisses sein, welches die Dateien des Chrome-Pakets enthält, un-jarred (z.B. urn:mozilla:extension:file:directory). In beiden Fällen müssen die Chrome Paketdatei(en) in dem chrome Unterverzeichnis des XPI Archivs platziert werden.

-

Dieses Objekt hat eine package Eigenschaft (mit einem Pfad in der jar Datei oder Verzeichnis, welches zum Ort der contents.rdf Datei führt, um die das Paket zu registrieren), eine locale Eigenschaft (genauso, registriert aber die Sprache) und eine skin Eigenschaft (genauso, aber registriert das Theme-Material).

-

Bei Erweiterungen für Firefox 1.5, ist diese Eigenschaft nicht länger notwendig: Das chrome.manifest im XPI wird verwendet um die Registrierungsareit zu verrichten. Wenn kein chrome.manifest vorhanden ist, wird diese Eigenschaft vom Addon Manager gelesen und ein chrome.manifest wird generiert.

-

Beispiele

-
<em:file>
- <Description about="urn:mozilla:extension:file:myext.jar">
-  <em:package>content/myext/</em:package>
-  <em:locale>locale/en-US/myext/</em:locale>
-  <em:skin>skin/classic/myext/<em:skin>
- </Description>
-</em:file>
-
-

Ein Installationsmanifest kann mehrere file Eigenschaften festlegen, eine für jede jar Datei oder Unterverzeichnis, welches Chrome zum registrieren enthält.

-

hidden

-

Firefox 1.0 - 3.5 Ein boolscher Wert, falls true wird das Add-on nicht in der Add-on Liste angezeigt, vorausgesetzt, dass das Add-on in einer {{ Anch("Restricted access area") }} installiert ist. (sodass es nicht für installierte Add-ons im Profil arbeitet).

-
- Hinweis: Diese Eigenschaft wird nicht mehr von Gecko 1.9.2 (Firefox 3.6)oder später unterstützt, um zu verhindern, dass Erweiterungen installiert werden, von denen der Benutzer nichts mitbekommt.
-

Beispieie

-
<em:hidden>true</em:hidden>
-
-

Glossar

-

Restricted access area

-

Ein restricted access area ist ein Installationort, welcher durch einen restricted-access Account eingeschränkt werden kann, unabhängig ob der Ort mit den aktuellen Benutzerrechten eingeschränkt ist oder nicht (siehe {{ Source("toolkit/mozapps/extensions/public/nsIExtensionManager.idl#80", "nsIInstallLocation::restricted") }}). Zur Zeit sind die ($APPDIR)/extensions Ordner und die Registry Installationsorte unter HKEY_LOCAL_MACHINE (siehe Erweiterungen über die Windows Registrierung hinzufügen für Details) eingeschränkt

-

Die ($PROFILE)/extensions und HKEY_CURRENT_USER Installationsorte sind hingegen nicht beschränkt.

diff --git a/files/de/installing_mercurial/index.html b/files/de/installing_mercurial/index.html deleted file mode 100644 index 823cf02406..0000000000 --- a/files/de/installing_mercurial/index.html +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Installing Mercurial -slug: Installing_Mercurial -translation_of: Mozilla/Mercurial/Installing_Mercurial ---- -

{{ Note('If you have not yet read the Mercurial basics do so now, or see Mercurial for other resources.') }}

-

Installing

-

We recommend running a Mercurial no older than version 2.8. Version 2.9 or greater is highly recommended, as there are numerous bug fixes and performance enhancements.

-
-
- On Windows:
-
- Mercurial comes with MozillaBuild, in the folder 'hg'.  See also wikimo:Mercurial on Windows.
-
- Firefox build bootstrapper
-
- Try running the one-line system bootstrapper described here. This will help ensure a modern version of Mercurial is installed.
-
- Using a package manager:
-
- If you use apt-get, emerge, port, yast, or yum to install software, just do the usual. If this gives you an old version (pre-1.5 -- check with hg version), you can update it using easy_install as follows: -
    -
  • Using apt-get: -
    sudo apt-get install python-setuptools python-dev build-essential
    -sudo easy_install -U mercurial
    -
  • -
  • Using yum: -
    sudo yum install python-setuptools python-devel.i686
    -sudo easy_install -U mercurial
    -
  • -
-
-
-
-
- Other systems
-
- Otherwise, the Mercurial binary packages are for you.
-
-

Basic configuration

-

You should configure Mercurial before submitting patches to Mozilla.

-

If you will be pulling the Firefox source code or one of the derived repositories, the easiest way to configure Mercurial is to run the mercurial-setup mach command:

-
./mach mercurial-setup
-

This command starts an interactive wizard that will help ensure your Mercurial is configured with the latest recommended settings. This command will not change any files on your machine without your consent.

-

If you don't have the Firefox source code available, you should edit your Mercurial configuration file to look like the following:

-
[ui]
-username = Your Real Name <user@example.com>
-merge = your-merge-program (or internal:merge)
-
-[diff]
-git = 1
-showfunc = 1
-unified = 8
-
-[defaults]
-commit = -v
-
-

On Windows, these settings can be added to $HOME\.hgrc or $HOME\Mercurial.ini, or, if you'd like global settings, C:\mozilla-build\hg\Mercurial.ini or C:\Program Files\Mercurial\Mercurial.ini. On UNIX-like systems, they should be in your $HOME/.hgrc file.

-

You can configure the editor to use for commit messages using the editor option in the [ui] section or by setting the EDITOR environment variable.

-

If you are trying to access the repository through a proxy server, see these instructions.

-

Other configuration tips

-

Merge program

-

After installing, choose a merge program. Seriously. Do it now. If you don't, Mercurial will choose one for you and spring it on you when you least expect it.

-

A reasonable thing to do is to set ui.merge=internal:merge in the Mercurial configuration file (see below), which makes Mercurial try to merge changes and add the conflict markers (a la CVS) to the files that couldn't be merged.

-

Under Ubuntu, you can install meld package, then in in the Mercurial configuration file (see below) set ui.merge=meld

-

You can see the list of merge conflicts by looking for "merging ... failed!" in the update output.

-

Configuring kdiff3 as a merge tool

-

If you're on Linux and you have kdiff3 installed, you probably want to configure kdiff3 as a merge tool.  (It's better than meld because it will actually resolve a bunch of the conflicts without prompting you, generally quite accurately.)  You can do this by adding the following lines (which come from contrib/mergetools.hgrc in the Mercurial distribution):

-
[merge-tools]
-kdiff3.args=--auto -L1 base --L2 local --L3 other $base $local $other -o $output
-kdiff3.regkey=Software\KDiff3
-kdiff3.regappend=\kdiff3.exe
-kdiff3.fixeol=True
-kdiff3.gui=True
-
-
-

Extensions

-

There's a number of extensions you can enable. See http://mercurial.selenic.com/wiki/UsingExtensions. Almost everyone should probably enable the following:

- -

These can all be turned on by just adding this to your .hgrc file:

-
[extensions]
-color =
-rebase =
-histedit =
-progress =
-transplant =
-pager =
-mq =
-
-[defaults]
-qnew = -U
-
-[mq]
-plain = True
-

In addition, there are some 3rd party extensions that are incredibly useful for basic development:

-
-
- mozext
-
- Mozilla-specific functionality to aid in developing Firefox/Gecko.
-
- qcrecord
-
- Provides a nice easy gui for splitting up patches into chunks. For a given patch you can type: -
hg qcrefresh
-
-
-
- mqext
-
- Overrides qrefresh, qnew, qrename, qdelete, qimport, and qfinish to commit to your versioned patch queue automatically. This can be done through arguments to the commands, or automatically if you edit your .hgrc to include: -
  [mqext]
-  mqcommit = auto
-
- It also includes commands to suggest reviewers (reviewers) and a bug component (components) for your patch, to find bugs touching the files you are modifying (bugs), to show a patch (qshow), and to show what files the current patch touches (qtouched).
-
- trychooser
-
- Automatically creates a try commit message and then pushes changes to Mozilla's Try infrastructure. Just run: -
hg trychooser
-
-
- qimportbz
-
- Import patches from Bugzilla. Creates a filename and commit message for you based on the bug's metadata. -
hg qimport bz://1234567
-  
-
-
- bzexport
-
- Export patches to Bugzilla. There are quite a few optional arguments here to create new or update existing bugs with the attment, as well as auto matically request reviews. Type hg help bzexport for a full list but the basic syntax is: -
hg bzexport -i 1234567
-
-
-

Installing these is fairly easy. You'll just need to find a place on your system to store the extensions, and clone the extension repos into it:

-
hg clone https://bitbucket.org/edgimar/crecord
-hg clone https://bitbucket.org/sfink/mqext
-hg clone https://hg.mozilla.org/users/robarnold_cmu.edu/qimportbz
-git clone https://github.com/pbiggar/trychooser
-
-

And then add then to your .hgrc file

-
[extensions]
-qcrecord =  /path/to/crecord/crecord
-mqext =  path/to/mqext
-qimportbz =  path/to/qimportbz
-trychooser = path/to/trychooser/trychooser
-
-

Configuring the try repository

-

If you have access to the try server you may want to configure Mercurial so you can refer to it simply as "try", since it can be useful from all your trees.  This can be done by adding this to your ~/.hgrc (or Mercurial.ini):

-

 

-
[paths]
-try = ssh://hg.mozilla.org/try/
-
-

You can also configure short names like this that are specific to a particular repository by adding a [paths] section to the .hg/hgrc file within a repository.  There are two magic names, "default" and "default-push", which are used as the default push/pull targets.  (If "default" is specified and "default-push" is not, "default" is used for both.)

-

Alternatively, you can install the trychooser extension (older version).

-

{{ languages( { "fr": "fr/Installation_de_Mercurial" } ) }}

diff --git a/files/de/list_of_mozilla-based_applications/index.html b/files/de/list_of_mozilla-based_applications/index.html deleted file mode 100644 index ebf63ce2c5..0000000000 --- a/files/de/list_of_mozilla-based_applications/index.html +++ /dev/null @@ -1,1265 +0,0 @@ ---- -title: List of Mozilla-Based Applications -slug: List_of_Mozilla-Based_Applications -translation_of: Archive/List_of_Mozilla-Based_Applications ---- -

The following is a list of all known active applications that are built using Mozilla technologies. This list is likely to be incomplete since we think there are many dark matter projects that we don't know about. If you have information about a new project or extra information about an existing project, please feel free to update this page.

-

A list of former Mozilla-based applications is also available.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionAdditional Information
389 Directory ServerLDAP serverUses NSS
A380 seatback entertainment systemmedia softwareThis blog post mentions a reference to Mozilla being used but I couldn't find more information about it.
Abstractaccounting tool 
Adobe Acrobat and Adobe ReaderPortable Document Format (PDF) softwareUses Mozilla SpiderMonkey
Adobe Flash Playerpopular browser plug-inUses NSS in Linux version
AdWatchcontent management systemUses XUL and XPCOM
AICPCU/IIA exam appexam delivery software 
Aliwal Geocodergeocoding & data on a map 
Amarok XUL remoteremote control for AmaroK music player 
Ample SDKJavascript GUI-framework 
AOL Instant MessengerIM clientUses NSS
Apacheweb serverDoesn't use NSS by default, but can be configured to use NSS with mod_nss SSL module
ApicaWatchsite performance monitoring toolUses Firefox as part of its monitoring package
Astyle CSS editorediting tool 
Atmailwebmail client 
Aviva for Javamainframe connectivity productUses Mozilla Rhino
BabelgumInternet TV service 
BatikJava-based toolkitUses Mozilla Rhino
BitBoxsecurity focused browserSeemingly based on Firefox
Blackbirdbrowser for African American community 
BlueGriffonwysiwyg editorNext generation version of Composer
BuzzbirdTwitter clientBuilt on XULRunner
Caminobrowser2.5m downloads and ~400,000 active users ... 
Celtxmedia tool 
Cenzic Hailstormvulnerability assessment and management toolUses Gecko
ChatZillaIRC clientStandalone version (XULRunner)
Chromium and Google Chromeweb browserUses Mozilla NSS and NPAPI libraries 
Chromelessbrowser with HTML-based interface 
ClassillaMozilla browser for Mac OS 9 
Clinesa clone of Color Lines (game)Standalone version
Cloudweb operating system 
Cloud BrowseiPhone/iPad/iPod Touch browserSeems to be Firefox running remotely on servers that people access through device
Conkerorkeyboard-oriented browser 
Convertigo Enterprise Mashup Serverserver tool for transactional web scraping and for web clipping 
CometBirdanother Firefox modModified version of Firefox
Correoemail 
Couac (fr)web-based email and jabber app 
CouchDBdocument-oriented databaseUses Spidermonkey
Courtanet Benefit (fr)underwriting software for French insurance brokers 
Crosscheckbrowserless testing frameworkUses Mozilla Rhino
Crowbarserver tool 
Cycloctopusscreen scraping console 
Cyclone3content management system 
Dangermobile platformUses Gecko on the server side -- no longer active?
Desktop 2internal browser and portal clientExpeditors International of Washington, Inc.
Dogtagcertificate systemUses NSS
DojoJavaScript toolkitUses Mozilla Rhino in ShrinkSafe
Eclipse platformopen development platformThe AJAX Toolkit Framework, Standard Widget Toolkit and EclipseMozilla projects make use of Mozilla
Elixon WCMS/XULWeb Content Management SystemFully remote XUL WCMS (no need to install extensions).
Entelechychat botUses XULRunner
Epic Browserweb browser for India 
eMusic Download Managermusic downloader for emusic 
eMusic Remotemusic manager 
Enlis Genome Personalgenome browser 
ESXXJavaScript application server -

Uses Mozilla Rhino

-
EtnaXML wysiwyg editor 
Eudoramail and news applicationThe upcoming version 8 will be based on Thunderbird
Evergreenlibrary automation system 
Evolutionemail clientUses NSS
eXeeLearning XHTML editorSeems to be using XUL for some of their webui
Facebook Open PlatformFacebook Open PlatformThe FBML parser used in the platform is based on Mozilla code
FennecBrowser for mobilesAs Mark notes: Fennec is not Firefox, it’s a completely different application
FindThatFont!font management tool 
Firecastdigital signage and interactive kiosk toolsAlso used in Firecast EasyStart
Mozilla Firefoxweb browserWeb Browser usage stats from Global Stats
FossaMailemail client for Windows platform, based on Mozilla ThunderbirdDeveloped by Moonchild Productions, creator of the Pale Moon web browser
Flickr Uploadrimage upload toolsee Flickr Uploadr: Open Source and Powered by XULRunner
Foxkeh Clockclock 
FrizioneJavaScript development, testing and deployment environmentUses Mozilla Rhino
GeckoFXembeddable Gecko 
GjsJavascript bindings for GNOME 
GlobalMojobrowser that raises money for your favorite causes 
GLUEscripta JavaScript engine which can be used as a general purpose languageUses Mozilla SpiderMonkey and formerly called wxJavaScript
Gnomeoperating systemGnome 3 will use SpiderMonkey through Gjs
Google AdWords Editoreditor 
Google Gadgets for LinuxGoogle’s Desktop Widget engineUses XULRunner according to the Build Instructions
GraniGrain sizing assessment toolAccording to this wiki page Grani is based on XUL and XPCOM Daim
gwt-mosaic-xulXUL builder for Google Web Tools 
Hachette's Multimedia Encyclopediaelectronic encyclopediaThis product was using Mozilla in 2004 but I’m not sure if new version still does
HacketyHacklittle coders 
Helmaweb application frameworkUses Mozilla Rhino
Holt McDougal CD-ROMseducational CD-ROMsActivity Generator and Lab Generator are both based on custom Firefox distributions
Houdini3d animation toolsUses Gecko in embedded help viewer
HttpUnitautomated testing frameworkUses Mozilla Rhino
HtmlUnitbrowser for Java programsUses Mozilla Rhino
HyperInfoWeb Application plat formUses GoeckoFX
IBM WebSphere Lombardi Editionbusiness process management systemUses Mozilla Rhino and Mozilla XPCOM Eclipse plug-in. (Product was formerly known as Lombardi Teamworks)
IceDragonfast, secure and feature-rich Internet browserBased on Firefox
IDAe-Learning authoring systemAbout 200 users
IMVU3d chat client 
Incredimailmail clientSeems to use XULRunner
InstantbirdIM clientXULRunner application
ItsNatJava AJAX Component based Web Framework 
Javasoftware platformUses Mozilla Rhino
JavaLikeScriptJavaScript extensible tooling frameworkUses NSPR and SpiderMonkey
JaxerAjax server 
jslibsJavaScript development runtime environmentUses SpiderMonkey (Note: this is separate from the Javascript library jsLib)
JoyBiddereBay auction toolStandalone version uses XULRunner
jUST (fr)audioA tool for setting temporal tags in audio documents
JsDoc Toolkitdocumentation toolUses Mozilla Rhino
K-MeleonGecko-based web browser for WindowsEmbeds Gecko in MFC
KaiRo.at Mandelbrotcreates images of Mandelbrot setsXULRUnner application
KazehakaseGecko-based web browser for Unix 
Kirix Stratadata browser 
Kiwixoffline version of Wikipedia 
Kneemailprayer, praise, and journal application 
Komodo and Komodo Edit and Open Komododevelopment toolsMozilla-based application (pre-XULRunner style), XUL UI
KompoZerwysiwyg HTML editorunofficial bug-fix release of NVu
Kylovideo browserUses Gecko
BioFortis Labmatrixweb-accessible software application used for information management and integration of patient clinical, specimen, genetic and molecular assay dataBased on XUL
Liaison Groupwareclient for Novell’s email and collaboration serverPreviously called MozNGW
Linbox Kiosk Browser (fr)web browserDedicated browser for french prefecture and town hall
litlInternet computer for homeUses SpiderMonkey and Gecko
LiziLayersGIS application3Liz also creates some GIS Firefox add-ons
Logitech Harmony Remote Softwaresoftware for remote control deviceUses GRE or XULrunner
Longman Dictionary of Contemporary EnglishCD-ROM 
Lotus Notes / SametimegroupwareThe latest version of IBM Lotus Notes and Sametime can embed XUL applications
Lucidore-book reader 
Lx-Officeaccounting toolLooks like it makes at least some use of XUL
Maavissimple UI & communications for accessibilityFramework designed for elderly people with dementia but other applications
Mac OS Xoperating systemMakes use of some MPL files such as libsecurity_asn1
Maemo Browserbrowser for Maemo Internet tabletDevelopment name is MicroB
MagooClientbusiness process management toolUses Mozilla Rhino
Mantrasecurity tool 
McCoysecure update tool for add-onsXULRunner application
MediaCodermedia converterTranscoder for video, audio, and even devices such as Zen, Zune, PocketPCs, iPods, and PSPs
MekhalabrowserPart of the KhmerOS Linux distro
midbrowsermobile web browser 
Mockerymockup creation toolBuilt on XULRunner
mongoDBdatabase projectUses SpiderMonkey
Moyuraemail clientPart of the KhmerOS Linux distro
-

MozCards, JoliStopwatch, JoliTimer

-
simple apps for MaemoUses XULRunner
MozNet .NET Controlembeddable Gecko for .NET applicationsWraps XulRunner for use in .NET applications
My Internet Browserlocalized browserUses Gecko
Myna Application ServerJavaScript application server for JavaUses Mozilla Rhino
NextCMS (fr)CMS 
Nightingalemusic playerCommunity run effort to continue Songbird support for Linux
OLPC Web Browserbrowser 
OneTeamJabber client 
OpenDocument Viewerviewer 
OpenGate's toolsCD burner, file browser, and hardware diagnostic softwaresOpenGate is the OpenSource side of the EasyNeuf project, “A Free Software Computer, Easy and Preinstalled”
Open Mashupsdevelopment tool 
OpenOffice.orgoffice suiteUses NSS
Openswanimplementation of IPsec for LinuxUses NSS
Orca Browserweb browserGecko-based version of Avant browser
Pale Moonweb browserCustom-built and optimized Firefox browser for GNU/Linux & Windows platforms
Palo SuiteExcel extensionUses Prism
PartyGamingonline gaming productUses Gecko
Penciltool for making diagrams and GUI prototypingAvailable as a firefox extension or a standalone app
Pentaho BI Suitecommercial open source business intelligenceUses XUL and Mozilla Rhino
Perseveretools for persistence and distributed computingUses Mozilla Rhino
Phlonemepublishing tool for Vocab Collab 
PhpEDPHP EditorEmbedded Mozilla browser in product
PidginIM clientUses NSS
Plain Old Webserverextension and standalone webserver5,000 users and 30,000 downloads
POE::XULframework for remote XUL application in POE 
Postboxemail clientStarted as a fork of Thunderbird
Printgroove JT Suiteprint process softwareUses XULRunner and Spidermonkey
Prism (was WebRunner)single-site browserXULRunner application
Pro/ENGINEER WildfireCADCAM product 
PsycRunnerChat, Messenger, Multicast toolkitAbout 1,000 users – XULRunner version of PsycZilla extension
Pyjamas-Desktopa Python Web Widget toolkitUses XULrunner DOM to implement the widgets and event handling. python-hulahop is required
Python-Hulahopa Python GTK WidgetUses embedded XULrunner, providing full access to nsI DOM and all other XULrunner interfaces, in a GTK window. It's possible to create your own python web browser with hulahop, and much much more besides.
QSOS XUL Editortool for the QSOS methodQSOS stands for Qualification and Selection of Opensource Software
Qtraxmusic clientBased on Songbird
QuickSTAFGUI client for Software Testing Automation FrameworkUses XULRunner
QuteComphone softwarePreviously named OpenWengo
Redcartext editorSeems to use XULRunner
Red Hat Directory Serverserver productUses NSS
Red Hat Certificate Systemserver productUses NSS
Regex Renamertool to rename files 
SamePlaceIM client 
Scenari Platformapplication suite for designing publishing chains 
Script ItAndroid development platformUses Mozilla Rhino, develop directly on your Android device
SeaMonkeysuiteA volunteer community legally backed by Mozilla Foundation with 2.5 million downloads
Secure Browserbrowser that uses virtualizationCreated by Dell
SEPTCMS for LeMonde.fr web siteMore information here (in English) and here (in French)
Skyfiremobile browser 
SipearIM client 
SmartReport Supervision Appliancenetwork monitoring and performance managementSmartReport is an appliance created by Acipia (France). XUL and the Mozilla Framework are heavily used in the GUI
SnapstickInternet on TVArticle that talks about Snapstick using Firefox
SOGogroupwareFront-end uses Thunderbird code
SongbirdmusicXULRunner application
Spicebirdcollaboration suite 
SpiderApeembedding toolUses Mozilla SpiderMonkey
Splashtop Web BrowserbrowserPart of instant-on operating system
sqlite-managerdatabase managerStandalone version of add-on
StealthSurfersecure Internet tools on USB keyUses Firefox and Thunderbird
StreamBasecomplex event processing platformSeems to use XULRunner
Stylizer CSS EditorCSS editorCSS Editor with built-in Firebug-like diagnostics and Gecko 1.8 preview
Sun Java Enterprise Systemserver productsUses NSS
Sundialbrowser with advanced domain name technologyBased on Firefox
SurfEasyprivate and secure web browsing 
Sweet16Apple II computer emulatorUses SpiderMonkey as a scriptable debugger for software running in the emulator
Mozilla Sunbird/Mozilla Lightningcalendar 
TabPressauthoring tool 
Talend Open Studodata integration softwareSeems to use XULRunner
Talking Clipboardtext to speech softwareRead ePub books, web pages, CHM, PDF, MS Word, RTF, RSS feeds
TaskPoolproductivity 
Telasocialkiosk appUses XULRunner
TeleKastteleprompter 
TenFourFoxbrowser for PowerPC-based Macs 
Timberwolfbrowser for Amiga OS4Based on Firefox - Project Page
Mozilla Thunderbirdemail47 million DL
TomTom HOME 2PC application to manage TomTom GPS devicesReview article from GPS Magazine; over 2.4m users
TopStyleHTML, XHTML and CSS editorSeems to have optional Gecko embedding but doesn't use it by default
ToxToxMedia Browser for TV5000 downloads
TrixulGUI toolkitUses Mozilla SpiderMonkey
TrustedBirdemail clientThunderbird bundled with a set of extensions (formerly known as Milimail)
TuneUpmusic collection organizerListed on XULRunner Hall of Fame but haven't seen information elsewhere
TuxGuitartabulature editorUses XULRunner
TwitFactorystandalone twitter/identi.ca client 
UISUniversity Information SystemIntranet application, 1000 users, Thin client based on FF3
Unison Desktopenterprise emailI think it's using mailnews code but don't have any information to link to. Feel free to supply references.
UOX3Ultima Online server-emulatorUses Mozilla SpiderMonkey
VerbosioXML EditorNo releases available
VerseMinderBible passage app 
Virgin Media Securitysecurity toolsSeems to use XULRunner
VirtualBoxvirtualization toolUse XPCOM as its component model on Linux
Waterfox64-bit variant of FirefoxBased on Firefox
Webissimoweb browserBased on XULRunner
Websecurifyweb Application Security Testing Environment 
Wesabemoney management toolAutomatic Uploader is a XULRunner application that runs headless in Xvfb
WikipediaOnDVD and Wikimedia by moulinoffline versions of WikipediaBlog post about projects
Wineimplementation of the Windows APIUses Mozilla SpiderMonkey and the Gecko ActiveX control
worksmart.netsuite of web-based workplace appsUses Prism
wxWebConnectWeb Browser Control Library 
Wyzobrowser 
xB Browseranonymous web browser 
Xbusinesscreate and send branded invoices, quotes or estimates 
XDFbilling and quotes software 
XiphosBible study software 
xmlDBEditordatabase editor 
xPUDLinux desktopxPUD: Linux with an XUL Interface, 10 Second Boot Time
XRapXulRunner Application Packager 
XUL Daimimage tool 
XUL Explorerdevelopment toolXULRunner application
XULJetJavaScript frameworkUses XULRunner
XULminegameStandalone version
Yahoo! Widgetsdesktop widgetsUses Mozilla SpiderMonkey
Yoono Desktopsocial networking appStandalone version of Yoono Firefox add-on
ZapSIP clientstatus update from August 2008
Zimbra Desktopemail and calendar applicationUses Prism
Zincvideo browserAccording to FAQ the standalone version is based on Firefox
ZKweb application frameworkMakes use of XUL
Zoteroreference managerFirefox extension and XULRunner application
-

Note: this page was previously hosted on mozpad.org and the history for that page can be found on that site.

-

Other places to find Mozilla applications include:

- diff --git a/files/de/lokalisierbaren_code_schreiben/index.html b/files/de/lokalisierbaren_code_schreiben/index.html deleted file mode 100644 index 9d8f8172aa..0000000000 --- a/files/de/lokalisierbaren_code_schreiben/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Lokalisierbaren Code schreiben -slug: Lokalisierbaren_Code_schreiben -tags: - - Lokalisierung -translation_of: Mozilla/Localization/Writing_localizable_code ---- -

Diese Seite beschreibt Richtlinien im Umgang mit dem Code der Benutzeroberfläche unter Berücksichtigung der Lokalisierung. Diese Seite ist für Entwickler von Mozilla und Erweiterungen gedacht.

-

Für weitere technische Details finden sich im XUL Tutorial weitere Informationen.

-

Über Lokalisierer

-

Einige Anmerkungen für Entwickler, die nur selten mit Übersetzer zu tun haben:

- -

Richtlinien

-

Es existieren einige Richtlinien, an die sich Entwickler halten sollten, um ihren Code besser lokalisierbar zu machen.

-
Gute Schlüsselnamen „key names“ wählen 
Der gewählte Name für einen Schlüssel (egal ob es eine DTD oder eine properties-Datei ist) sollte selbstbeschreibend sein. Wenn Sie die Semantik eines lokalisierten Strings ändern, so ändern Sie auch den zugehörigen Schlüssel. Dies wird den String besser beschreiben und Übersetzungstools helfen zu erkennen, dass die Veränderung nicht lediglich die Korrektur eines Sprachfehlers ist.
Zusammengesetzten Strings keine Grammatik untermischen 
Das unachtsame Aufsplitten von Sätzen induziert eine Grammatik und Satzstruktur, die meistens schwierig zu übersetzen ist und eventuell auf andere Sprachen nicht zutrifft. Vermeiden Sie daher wenn möglich das Aufsplitten von Sätzen; wenn es allerdings unvermeidbar sein sollte, dann lassen Sie dem Übersetzer einen Freiraum. Ein Beispiel für einen bedacht zusammengesetzten String ist Firefox's Einstellungsfeld für besuchte Seiten: Der Übersetzer kann ohne weiteres die Position des Textfeldes verändern.
Keine „preprocessor macros“ verwenden 
Wir bitten darum weder #if, #else, #endif noch #expand zu verwenden. Es gibt einige Einwände gegen diese Vorgehensweise, aber hauptsächlich geht es darum, dass die lokalisierte Datei mit Standards harmonieren solte und nicht erst durch Compilierer umgewandelt werden muss. Wenn Ihre lokalisierten Dateien mit kompiliert werden müssen, so kontaktieren Sie vorher bitte l10n@. In den meisten Fällen kann der zu kompilierende Code einfach in den Code des Inhalts eingesetzt und unterschiedliche Übersetzungsschlüssel (key-value-pairs) referenziert werden.
Eine gute „source directory“ Struktur verwenden 
Legen Sie die lokalisierbaren Dateien am richtigen Ort ab. Das Hinzufügen neuer Toplevel-Verzeichnisse ist ein Kompromiss zwischen Modulbesitz im cvsroot repository und der Einfachheit der Lokalisierung.
Eine gute „chrome directory“ Struktur verwenden
Für ein bestimmtes Modul mod, wurde der Zielpfad jar:ab-CD.jar!/locale/ab-CD/mod/foo.dtd getestet und hat sich als ein guter Ort für Dateien, die in chrome://mod/locale/foo.dtd verlinkt werden, herausgestellt. Wird diese Verzeichnisstruktur verwendet, wird der Lokalisierungsprozess ohne den Quellcode vereinfacht und wird vor allem  Autoren von Erweiterungen empfohlen. Ein JAR Manifest kann das noch vereinfachen.
-
-

l10n impact

-

Bei geschlossenen Trees, gibt es die Regel keine l10n-impact Veränderungen einzureichen. Was bedeutet das? l10n-impact ist

- -

{{ languages( { "en": "en/Writing_localizable_code", "es": "es/Escribir_código_localizable" ,"fr": "fr/\u00c9criture_de_code_localisable" } ) }}

diff --git a/files/de/lokalisierung_von_erweiterungsbeschreibungen/index.html b/files/de/lokalisierung_von_erweiterungsbeschreibungen/index.html deleted file mode 100644 index 7c5e17ddfc..0000000000 --- a/files/de/lokalisierung_von_erweiterungsbeschreibungen/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Lokalisierung von Erweiterungsbeschreibungen -slug: Lokalisierung_von_Erweiterungsbeschreibungen -tags: - - Erweiterungen - - Lokalisierung -translation_of: Mozilla/Localization/Localizing_extension_descriptions ---- -

Lokalisierung in Gecko 1.9

-

{{ Gecko_minversion_header(1.9) }} {{ Fx_minversion_header(3) }}

-

Gecko 1.9 beinhaltet eine neue, verbesserte Methode, um Add-on Beschreibungen und andere Metadaten zu lokalisieren. Die verschiedenen Beschreibungen können jetzt in der install.rdf Datei durch die em:localized Eigenschaften angegeben werden, wovon jede mindestens eine em:locale Eigenschaft besitzt, die die Sprache angibt. Zusätzlich können noch Name und Beschreibung der Erweiterung angegeben werden. Das folgende Beispiel demonstriert dies (die anderen Manifest-Eigenschaften wurden der Einfachheit halber weggelassen):

-
<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-  <Description about="urn:mozilla:install-manifest">
-    <em:id>TabSidebar@blueprintit.co.uk</em:id>
-    <em:localized>
-      <Description>
-        <em:locale>de-DE</em:locale>
-        <em:name>Tab Sidebar</em:name>
-        <em:description>Zeigt in einer Sidebar Vorschaubilder der Inhalte aller offenen Tabs an.</em:description>
-      </Description>
-    </em:localized>
-    <em:localized>
-      <Description>
-        <em:locale>es-ES</em:locale>
-        <em:name>Tab Sidebar</em:name>
-        <em:description>Muestra una vista previa de sus pestañas en su panel lateral.</em:description>
-      </Description>
-    </em:localized>
-    <em:localized>
-      <Description>
-        <em:locale>nl-NL</em:locale>
-        <em:name>Tab Sidebar</em:name>
-        <em:description>Laat voorbeeldweergaven van uw tabbladen in de zijbalk zien.</em:description>
-      </Description>
-    </em:localized>
-    <em:name>Tab Sidebar</em:name>
-    <em:description>Displays previews of your tabs in your sidebar.</em:description>
-  </Description>
-</RDF>
-
-

Alle unten erwähnten Metadaten können auf diese Weise lokalisiert werden. Die Informationen zur Lokalisierung, die durch die em:localized Eigenschaft gegeben sind, können durch ein Set an lokalisierten Einstellungen überschrieben werden. Mehr dazu weiter unten.

-

Das Verfahren zur Auswahl der em:localized Eigenschaft einer speziellen Sprache lautet wie folgt:

-
    -
  1. Wenn eine Eigenschaft mit einem em:locale existiert, die zu der eingestellten Sprache passt, dann wird diese verwendet.
  2. -
  3. Wenn es ungenaue Treffer gibt, dann wird derjenige verwendet, der die meisten Teiltreffer aufweist, sprich Teile, die durch einen Bindestrich getrennt sind (z. B. würde »es« einen Treffer für »es-ES« ergeben und umgekehrt).
  4. -
  5. Falls es mehr als eine Sprachumgebung mit der gleichen Anzahl an Teiltreffern gibt, dann wird die allgemeinste verwendet (z. B. wird »en« gegenüber »en-GB« bevorzugt, falls nach »en-US« gesucht wird).
  6. -
-

Zunächst wird nach einer Übersetzung in der aktuellen Anwendungssprache gesucht. Falls keine Übersetzung existiert, wird nach »en-US« gesucht.

-

Falls weder eine Einstellung gesetzt ist, noch eine passende em:localized Eigenschaft für die aktuelle Spracheinstellung oder en-US existiert, dann werden direkt die Eigenschaften aus dem Installationsmanifest verwendet, da diese für Gecko 1.9 immer verwendet wurden.

-

Lokalisierung vor Gecko 1.9

-

Vor Gecko 1.9 mussten Add-on Entwickler ein spezielles Verfahren beachten, um lokalisierte Beschreibungen für Add-on unterstützende sowie Toolkit basierte Anwendungen (wie Firefox oder Thunderbird) zu definieren.

- -

Lokalisierbare Zeichenketten

-

Die folgenden Add-on Metadaten können auf diese Weise übersetzt werden:

- -

Lokalisierbare Listen

-

In Fällen, in denen mehrere Werte existieren können, wird ein numerischer Index an das Ende des Namens der Eigenschaft angehängt:

-
extensions.ERWEITERUNGS_ID.contributor.1=LOKALISIERTER_NAME_DES_ERSTEN_MITWIRKENDEN
-extensions.ERWEITERUNGS_ID.contributor.2=LOKALISIERTER_NAME_DES_ZWEITEN_MITWIRKENDEN
-extensions.ERWEITERUNGS_ID.contributor.3=LOKALISIERTER_NAME_DES_DRITTEN_MITWIRKENDEN
-
-pref("extensions.ERWEITERUNGS_ID.contributor.1", "PFAD_ZUR_LOKALISATIONS_DATEI");
-pref("extensions.ERWEITERUNGS_ID.contributor.2", "PFAD_ZUR_LOKALISATIONS_DATEI");
-pref("extensions.ERWEITERUNGS_ID.contributor.3", "PFAD_ZUR_LOKALISATIONS_DATEI");
-
-

Die folgenden Add-on Metadaten können auf diese Weise übersetzt werden:

- diff --git a/files/de/making_sure_your_theme_works_with_rtl_locales/index.html b/files/de/making_sure_your_theme_works_with_rtl_locales/index.html deleted file mode 100644 index 0852b2e1f5..0000000000 --- a/files/de/making_sure_your_theme_works_with_rtl_locales/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Making sure your theme works with RTL locales -slug: Making_Sure_Your_Theme_Works_with_RTL_Locales -translation_of: Archive/Themes/Making_sure_your_theme_works_with_RTL_locales ---- -

Some languages are written from right to left. Of the languages Firefox and Thunderbird are shipped in, that includes Arabic and Hebrew, with Persian available as beta, for a total population in excess of 100 million potential users. The important thing to understand about these locales, is that the entire interface is mirrored right-to-left. That means that text that had a left margin will have a right margin instead (or -moz-margin-start), arrows that pointed right will have to point left and vice versa, and so on.

-
- A screenshot of Firefox 2 in Hebrew
- A screenshot of Firefox 2 in Hebrew
-

What you need to do

-

At this stage you might ask yourself, "How would I know what language is my theme installed on? Should I make a special theme for these locales?" Don't despair: making a theme RTL-compatible is fairly easy!

-

Gecko 1.9.2 and later

-

Gecko 1.9.2 introduced the :-moz-locale-dir CSS pseudoclass, which matches based on whether the user interface is being rendered left-to-right or right-to-left:

- -

Example

-
toolbar[iconsize="large"][mode="icons"] #back-button {
-  -moz-image-region: rect(0px 396px 34px 360px);
-}
-
-toolbar[iconsize="large"][mode="icons"] #back-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 516px 34px 480px);
-}
-
-

This specifies the default, left-to-right version of the button, then offers an override if the user's interface is being rendered in right-to-left mode.

-

Gecko 1.9.1 (Firefox 3.5) and earlier

-

The chromedir attribute

-

Firefox, Thunderbird and SeaMonkey expose an attribute named chromedir on certain elements. All you have to do is add CSS rules to your theme that test for the value of this attribute, and use that to apply any RTL-specific rules that you may have. That's how the default theme works, so you can use it as an example.

-
toolbar[iconsize="large"][mode="icons"] #back-button {
-  -moz-image-region: rect(0px 398px 34px 360px);
-}
-
-toolbar[iconsize="large"][mode="icons"] #back-button[chromedir="rtl"] {
-  -moz-image-region: rect(0px 516px 34px 478px);
-}
-
-

This way, if chromedir is "rtl", the second rule will override the first, and the theme will work in RTL.

-

Note that not all elements will have the chromedir attribute, so you may need to refer to an ancestor element that does. For example:

-
/* We want to apply a RTL rule to #c; neither it nor its
- * parent element #b has a chromedir attribute, but its
- * grandparent element #a does.
- */
-
-#a > #b > #c {
-  /* normal rules */
-}
-
-#a[chromedir="rtl"] > #b > #c {
-  /* RTL rules */
-}
-
-

Tip: sometimes, like in the back and forward arrows, you don't really need new versions of the images. Instead, just use the opposite arrow when in RTL context.

-

Using start/end rules instead of left/right rules

-

Directions are mirrored in RTL mode, so left becomes right and right becomes left. As a result, you almost never want to use left/right rules for paddings, borders, and margins. Instead, you should use the following start/end rules instead to ensure RTL compatibility:

- -
#urlbar-search-splitter {
-  min-width: 8px;
-  -moz-margin-start: -4px;
-  border: none;
-  background: transparent;
-}
-

Testing your theme

-

Testing your theme for RTL compatibility is easy, and you do not even have to go through the hassle of downloading a RTL locale. The Force RTL extension enables you to switch the interface of Firefox from LTR to RTL and the other way around dynamically by toggling a menu item.

-

{{ languages( { "ja": "ja/Making_Sure_Your_Theme_Works_with_RTL_Locales" } ) }}

diff --git a/files/de/mercurial/index.html b/files/de/mercurial/index.html deleted file mode 100644 index 35b8843732..0000000000 --- a/files/de/mercurial/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Mercurial -slug: Mercurial -translation_of: Mozilla/Mercurial ---- -

Mercurial (also known as "hg"), is the distributed version control software used for the development of Firefox, Thunderbird, and the shared Gecko core. It replaced CVS after Mozilla 1.9 was branched.

- -

hg is the Mercurial command-line tool, Hg being the chemical symbol for the element mercury.

- -

Installation, configuration, and getting the source

- -

See Installing Mercurial for installation and configuration tips.

- -

See Getting Mozilla Source Code Using Mercurial for getting a tree to build.

- -

Learning to use Mercurial

- -

If you are new to Mercurial, you should start with the official guide.

- -

Then, move on to Mercurial basics and Mercurial FAQ and the version control tool docs for Mozilla-centric Mercurial information.

- -

Further reading

- -

See Mercurial Queues for managing queues of patches, and how to integrate Mercurial with Bugzilla.

- -

The Mercurial tag lists the Mercurial-related articles on MDN.

- -

And on wiki.mozilla.org, these helpful pages:

- - - -

{{ languages( { "es": "es/Mercurial", "fr": "fr/Mercurial", "ja": "ja/Mercurial" } ) }}

diff --git a/files/de/midas/index.html b/files/de/midas/index.html deleted file mode 100644 index 547ad3f550..0000000000 --- a/files/de/midas/index.html +++ /dev/null @@ -1,328 +0,0 @@ ---- -title: Midas -slug: Midas -tags: - - DOM - - Midas - - NeedsContent - - NeedsHelp - - NeedsTechnicalReview - - NeedsTranslation - - TopicStub - - needsattention -translation_of: Mozilla/Projects/Midas ---- -

Introduction

- -

Midas is the code name for Gecko's built-in rich text editor. Midas can be enabled via JavaScript on an HTML document. When Midas is enabled, the document becomes editable by the user. Scripting for Midas is based on the DHTML commands supported by Internet Explorer. Internet Explorer supports the ability to make an entire document editable by setting the designMode property of the {{domxref("document")}} object; this is how Midas is invoked in Gecko. Internet Explorer also supports the ability to edit specific elements using the contentEditable attribute; Starting with Firefox 3, Gecko also supports contentEditable. Once Midas is invoked, a few more methods of the document object become available.

- -

Properties

- -
-
document.designMode
-
By setting this property to "on", the document becomes editable.
-
- -

Notes

- -

Since an entire document becomes editable, authors often load the editable document into an IFRAME and do the bulk of the scripting in the parent document. According to standards, The IFRAME element has the contentDocument property that refers to the document in the inline frame. It also has a property called contentWindow that refers to the window object inside the inline frame. This also avoids problems with {{bug(198155)}}.

- -

In addition to the built-in commands, advanced editing can be done by manipulating the {{domxref("Selection")}} and {{domxref("range")}} objects. It is beneficial to be familiar with these objects when working with an editable document.

- -

Examples

- -

This example shows the basic structure described in the Notes section :

- -
<html>
-	<head>
-		<title>Simple Edit Box</title>
-	</head>
-	<body>
-		<iframe
-			id="MidasForm"
-			src="about:blank"
-			onload="this.contentDocument.designMode='on';"
-		></iframe>
-	</body>
-</html>
-
- -

Methods

- -
-
{{domxref("Document.execCommand")}}
-
Executes the given command.
-
{{domxref("Document.queryCommandEnabled")}}
-
Determines whether the given command can be executed on the document in its current state.
-
{{domxref("Document.queryCommandIndeterm")}}
-
Determines whether the current selection is in an indetermined state.
-
{{domxref("Document.queryCommandState")}}
-
Determines whether the given command has been executed on the current selection.
-
{{domxref("Document.queryCommandValue")}}
-
Determines the current value of the document, range, or current selection for the given command.
-
- -

Supported Commands

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CommandValueDescription
backcolorA color code.This command will set the background color of the document.
bold If there is no selection, the insertion point will set bold for subsequently typed characters. -

If there is a selection and all of the characters are already bold, the bold will be removed. Otherwise, all selected characters will become bold.

-
contentReadOnly This command will make the editor readonly(true)or editable(false). Anticipated usage is for temporarily disabling input while something else is occurring elsewhere in the web page.
copy If there is a selection, this command will copy the selection to the clipboard. If there isn't a selection, nothing will happen. -

note: this command won't work without setting a pref or using signed JS. See: more about security preferences

- -

note: the shortcut key will automatically trigger this command (typically accel-C) with or without the signed JS or any code on the page to handle it.

-
createlinkA URI.This command will not do anything if no selection is made. If there is a selection, a link will be inserted around the selection with the url parameter as the href of the link.
cut If there is a selection, this command will copy the selection to the clipboard and remove the selection from the edit control. If there isn't a selection, nothing will happen. -

note: this command won't work without setting a pref or using signed JS. See: more about security preferences

- -

note: the shortcut key will automatically trigger this command (typically accel-X) with or without the signed JS or any code on the page to handle it.

-
decreasefontsize This command will add a <small> tag around selection or at insertion point.
delete This command will delete all text and objects that are selected. If no text is selected it deletes one character to the right. This is similar to the Delete button on the keyboard.
fontnameA font nameThis command will set the font face for a selection or at the insertion point if there is no selection. -

The given string is such as would be used in the "face" attribute of the font tag, i.e., a comma-separated list of font names.

-
fontsizeA numberThis command will set the fontsize for a selection or at the insertion point if there is no selection. -

The given number is such as would be used in the "size" attribute of the font tag.

-
forecolorA color codeThis command will set the text color of the selection or at the insertion point.
formatblockH1, H2, H3, H4, H5, H6, P, DIV, ADDRESS, BLOCKQUOTE (more?)The selection surrounded by the given block element.
headingH1, H2, H3, H4, H5, H6Selected block will be formatted as the given type of heading.
hilitecolorA color codeThis command will set the hilite color of the selection or at the insertion point. It only works with styleWithCSS enabled.
increasefontsize This command will add a <big> tag around selection or at insertion point.
indent Indent the block where the caret is located. If the caret is inside a list, that item becomes a sub-item one level deeper.
insertbronreturntrue/falseSelects whether pressing return inside a paragraph creates another paragraph or just inserts a <br> tag.
inserthorizontalrulenull/string (when string is the Line's id)This command will insert a horizontal rule (line) at the insertion point. -

Does it delete the selection? Yes!

-
inserthtmlA string.This command will insert the given html into the <body> in place of the current selection or at the caret location. -

The given string is the HTML to insert.

-
insertimageA URI.This command will insert an image (referenced by the given url) at the insertion point.
insertorderedlist Depends on the selection. If the caret is not inside a non-LI block, that block becomes the first LI and an OL. If the caret is inside a bulleted item, the bulleted item becomes a numbered item.
insertunorderedlist Depends on the selection. If the caret is not inside a non-LI block, that block becomes the first LI and UL. If the caret is inside a numbered item, the numbered item becomes a bulleted item.
insertparagraph Inserts a new paragraph.
italic If there is no selection, the insertion point will set italic for subsequently typed characters. -

If there is a selection and all of the characters are already italic, the italic will be removed. Otherwise, all selected characters will become italic.

-
justifycenter Center-aligns the current block.
justifyfull Fully-justifies the current block.
justifyleft Left-aligns the current block.
justifyright Right aligns the current block.
outdent Outdent the block where the caret is located. If the block is not indented prior to calling outdent, nothing will happen. -

If the caret is in a list item, the item will bump up a level in the list or break out of the list entirely.

-
paste This command will paste the contents of the clipboard at the location of the caret. If there is a selection, it will be deleted prior to the insertion of the clipboard's contents. -

note: this command won't work without setting a pref or using signed JS. user_pref("capability.policy.policynames", "allowclipboard"); user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); See: more about security preferences

- -

note: the shortcut key will automatically trigger this command (typically accel-V) with or without the signed JS or any code on the page to handle it.

-
redo This command will redo the previous undo action. If undo was not the most recent action, this command will have no effect. -

note: the shortcut key will automatically trigger this command (typically accel-shift-Z)

-
removeformat Removes inline formatting from the current selection.
selectall This command will select all of the contents within the editable area. -

note: the shortcut key will automatically trigger this command (typically accel-A)

-
strikethrough If there is no selection, the insertion point will set strikethrough for subsequently typed characters. -

If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.

-
styleWithCSS This command is used for toggling the format of generated content. By default (at least today), this is true. An example of the differences is that the "bold" command will generate <b> if the styleWithCSS command is false and generate css style attribute if the styleWithCSS command is true.
subscript If there is no selection, the insertion point will set subscript for subsequently typed characters. -

If there is a selection and all of the characters are already subscripted, the subscript will be removed. Otherwise, all selected characters will be drawn slightly lower than normal text.

-
superscript If there is no selection, the insertion point will set superscript for subsequently typed characters. -

If there is a selection and all of the characters are already superscripted, the superscript will be removed. Otherwise, all selected characters will be drawn slightly higher than normal text.

-
underline If there is no selection, the insertion point will set underline for subsequently typed characters. -

If there is a selection and all of the characters are already underlined, the underline will be removed. Otherwise, all selected characters will become underlined.

-
undo This command will undo the previous action. If no action has occurred in the document, then this command will have no effect. -

note: the shortcut key will automatically trigger this command (typically accel-Z)

-
unlink If the insertion point is within a link or if the current selection contains a link, the link will be removed and the text will remain.
{{Deprecated_header}}
readonly This command has been replaced with contentReadOnly. It takes the same values as contentReadOnly, but the meaning of true and false are inversed.
useCSS This command has been replaced with styleWithCSS. It takes the same values as styleWithCSS, but the meaning of true and false are inversed.
diff --git a/files/de/midas/sicherheitseinstellungen/index.html b/files/de/midas/sicherheitseinstellungen/index.html deleted file mode 100644 index acd8aaa5ad..0000000000 --- a/files/de/midas/sicherheitseinstellungen/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Sicherheitseinstellungen -slug: Midas/Sicherheitseinstellungen -tags: - - Security preferences - - Sicherheitseinstellungen - - einfügen - - kopieren -translation_of: Mozilla/Projects/Midas/Security_preferences ---- -
-
Um private Informationen der Benutzer zu schützen, können nicht privilegierte Skripten die Befehle Ausschneiden, kopieren und Einfügen in den Mozilla-rich-Text-Editor aufrufen, damit die entsprechenden Tasten auf der Mozilla-Rich-Text-Editing Demo-Seite nicht funktionieren. Um diese Funktionen zu Zwecken der Demo zu aktivieren, müssen Sie Ihre Browsereinstellungen ändern.
-
- -

Ändern Sie die Einstellungen in Firefox

- -
    -
  1. -
    -
    Beenden Sie Firefox. Wenn Sie Schnellstartleiste ausgeführt haben (Dies ist unter Windows ein Symbol in der Symbolleiste), die zu beenden.
    -
    -
  2. -
  3. Finden Sie Ihr Firefox-Profil-Verzeichnis.
  4. -
  5. -
    Öffnen Sie die Datei user.js, aus diesem Verzeichnis in einem Texteditor. Wenn keine Datei user.js vorhanden ist, erstellen.
    -
  6. -
  7. -
    Fügen Sie diese Zeilen in user.js:
    - -
    user_pref("capability.policy.policynames", "allowclipboard");
    -user_pref("capability.policy.allowclipboard.sites", "https://www.mozilla.org");
    -user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
    -user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");
    -
  8. -
  9. -
    -
    Ändern Sie die Url https://www.mozilla.org auf die Site ab, wofür Sie diese Funktion aktivieren möchten.
    -
    -
  10. -
  11. -
    -
    Speichern Sie die Datei und starten Sie Firefox neu. Die Zwischenablage-Tasten sollten jetzt funktionieren.
    -
    -
  12. -
- -
-
-
Hinweis: Die Einstellung ist Website sowie spezifische Protokoll. Zum Beispiel:
-
- -
user_pref("capability.policy.allowclipboard.sites", "http://www.mozilla.org")
- -

ist nicht dasselbe wie:

- -
user_pref("capability.policy.allowclipboard.sites", "https://www.mozilla.org")
- -

Dies ist da die erste HTTP verwendet, während die zweite HTTPS verwendet.

-
- -
-
Wenn Sie mehreren URLs die Einfügeoperation Zugriff zulassen möchten, trennen Sie die URLs mit einem Leerzeichen. Zum Beispiel:
-
- -
user_pref("capability.policy.allowclipboard.sites",
-
- "https://www.mozilla.org https://developer.mozilla.org")
-
- -

See also

- -

Lesen Sie weitere Informationen zu den Sicherheitsrichtlinien hier:
- Configurable Security Policies.

diff --git a/files/de/mozilla/add-ons/add-on_guidelines/index.html b/files/de/mozilla/add-ons/add-on_guidelines/index.html deleted file mode 100644 index e781073547..0000000000 --- a/files/de/mozilla/add-ons/add-on_guidelines/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Add-on guidelines -slug: Mozilla/Add-ons/Add-on_guidelines -tags: - - Zusatzgerä -translation_of: 'https://extensionworkshop.com/documentation/publish/add-on-policies/' ---- -

These add-on guidelines were created to foster an open and diverse add-on developer community while ensuring an excellent user experience. They apply to all add-ons and add-on updates regardless of where they are hosted, and also apply to customizations performed by installers that configure Firefox without using an add-on. Add-ons hosted on AMO are subject to additional policies.

- -

Be Transparent

- - - -

Be Respectful to Users

- - - -

Be Safe

- - - -

Be Stable

- - - -

Exceptions

- - - -

Other exceptions may apply.

- -

Enforcement

- -

Add-ons that do not follow these guidelines may qualify for blocklisting, depending on the extent of the violations. Guidelines qualified with the wordmust are especially important, and violations thereof will most likely result in a blocklisting nomination.

- -

The Add-ons Team will do their best to contact the add-on's developers and provide a reasonable time frame for the problems to be corrected before a block is put in place. If an add-on is considered malicious or its developers have proven unreachable or unresponsive, or in case of repeat violations, blocklisting may be immediate.

- -

Guideline violations should be reported via Bugzilla, under Tech Evangelism > Add-ons. Questions can be posted in the #addons IRC channel.

- -

These guidelines may change in the future. All updates will be announced in the Add-ons Blog.

diff --git a/files/de/mozilla/add-ons/amo/index.html b/files/de/mozilla/add-ons/amo/index.html deleted file mode 100644 index 5867afab50..0000000000 --- a/files/de/mozilla/add-ons/amo/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: AMO -slug: Mozilla/Add-ons/AMO -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Add-ons/AMO ---- -

Seiten, die addons.mozilla.org dokumentieren:

diff --git a/files/de/mozilla/add-ons/amo/policy/index.html b/files/de/mozilla/add-ons/amo/policy/index.html deleted file mode 100644 index 45bdc8ac09..0000000000 --- a/files/de/mozilla/add-ons/amo/policy/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: AMO Policies -slug: Mozilla/Add-ons/AMO/Policy -translation_of: Mozilla/Add-ons/AMO/Policy ---- -

{{AddonSidebar}}

- -

Mozilla ist bestrebt, unseren Nutzern und Entwicklern eine großartige Add-On-Erfahrung zu bieten. Bitte lesen Sie die folgenden Richtlinien, bevor Sie Ihr Add-on abschicken.

- - -
-
Developer Agreement
-
Effective January 5, 2016
Review Process
-
Add-ons extend the core capabilities of Firefox, allowing users to modify and personalize their Web experience. A healthy add-on ecosystem, built on trust, is vital for developers to be successful and users to feel safe making Firefox their own. For these reasons, Mozilla requires all add-ons to comply with the following set of policies on acceptable practices. The below is not intended to serve as legal advice, nor is it intended to serve as a comprehensive list of terms to include in your add-on’s privacy policy.
Featured Add-ons
-
How up-and-coming add-ons become featured and what's involved in the process.
Contacting us - -

Wie Sie uns bezüglich dieser Richtlinien oder Ihres Add-ons kontaktieren können.

- -
diff --git a/files/de/mozilla/add-ons/bootstrapped_extensions/index.html b/files/de/mozilla/add-ons/bootstrapped_extensions/index.html deleted file mode 100644 index 582b48c775..0000000000 --- a/files/de/mozilla/add-ons/bootstrapped_extensions/index.html +++ /dev/null @@ -1,243 +0,0 @@ ---- -title: Bootstrapped extensions -slug: Mozilla/Add-ons/Bootstrapped_extensions -translation_of: Archive/Add-ons/Bootstrapped_extensions ---- -

{{ gecko_minversion_header("2.0") }}

-
-

Note: All extensions created using the Add-on SDK are bootstrapped! All the bootstrapping code is generated for you, so you don't really need to think about it. Not using the Add-on SDK? Read on...

-
-

Traditional extensions include overlays, wherein the application can load up XUL from the extension's package and automatically apply it atop its own UI. While this makes creating extensions that add to the application's user interface relatively easy, it means that updating, installing, or disabling an extension requires an application restart.

-

Gecko 2.0 {{ geckoRelease("2.0") }} introduces bootstrapped extensions. These are special extensions that, instead of using overlays to apply their user interface to the application, programmatically insert themselves into the application. This is done using a special script file that's included in the extension that contains functions the browser calls to command the extension to install, uninstall, start up, and shut down.

-

All the application does is call into this script file; the extension is responsible for adding and removing its user interface and handling any other setup and shutdown tasks it requires.

-

This article discusses how bootstrapped extensions work. See this tutorial on converting from an overlay extension to restartless for a practical step by step guide to migrating.

-

The startup and shutdown process

-

A key feature of bootstrapped extensions is that they must be able to be started up and shut down on demand by the application. When the extension's startup() function is called, it must manually inject its user interface and other behavior into the application. Similarly, when its shutdown() function is called, it must remove anything it's added to the application, as well as all references to any of its objects.

-

There are several scenarios in which the startup() function may be called; for example:

- -

Some examples of when the shutdown() function may be called:

- -

Notes on modifying the application user interface

-

chrome.manifest in bootstrapped add-ons

-

You can use a chrome.manifest file in bootstrapped add-ons to:

-
    -
  1. make your add-on's content available via a chrome:// URL (using the content, locale, and skin instructions in the manifest);
  2. -
  3. replace existing chrome:// URIs with your content (using the override instruction).
  4. -
-

Not all chrome.manifest instructions are supported in bootstrapped add-ons, for example you still cannot register XUL Overlays from a bootstrapped add-on. See the chrome.manifest documentation for details.

-

In Firefox 10 and later the chrome.manifest file located in the root of the add-on's XPI (i.e. a sibling of the install.rdf) is loaded automatically. In Firefox 8 and 9 you had to load/unload the manifest manually using {{ ifmethod("nsIComponentManager", "addBootstrappedManifestLocation") }} and {{ ifmethod("nsIComponentManager", "removeBootstrappedManifestLocation") }}. This feature was unavailable in Firefox versions before 8.

-

Adding user interface manually

-

If you decide to go ahead and try to develop a bootstrapped extension that modifies the application's user interface, here are a few suggestions to get you started.

-

You need to look up the relevant application UI elements by their ID by calling {{ domxref("document.getElementById()") }}, then manipulate them to inject your UI. For example, you can get access to the menu bar in Firefox with document.getElementById("main-menubar").

-

Be sure that at shutdown time, you remove any user interface you've added.

-

Creating a bootstrapped extension

-

To mark an extension as bootstrappable, you need to add the following element to its install manifest:

-
<em:bootstrap>true</em:bootstrap>
-

Then you need to add a bootstrap.js file that contains the required functions; this should be alongside the install.rdf file in the extension's package.

-

Backward compatibility

-

Because older versions of Firefox don't know about the bootstrap property or bootstrap.js file, it's not overly difficult to create an XPI that will work on both as a bootstrappable extension and as a traditional extension. Create your extension as a bootstrappable extension, then add the traditional overlays as well. Newer versions of Firefox will use the bootstrap.js script, ignoring the components and overlays, while older versions will use the overlays.

-

Bootstrap entry points

-

The bootstrap.js script should contain several specific functions, which are called by the browser to manage the extension. The script gets executed in a privileged sandbox, which is cached until the extension is shut down.

-

startup

-

Called when the extension needs to start itself up. This happens at application launch time or when the extension is enabled after being disabled (or after it has been shut down in order to install an update. As such, this can be called many times during the lifetime of the application.

-

This is when your add-on should inject its UI, start up any tasks it may need running, and so forth.

-
void startup(
-  data,
-  reason
-);
-
-
Parameters
-
-
- data
-
- A bootstrap data structure.
-
- reason
-
- One of the reason constants, indicating why the extension is being started up. This will be one of APP_STARTUP, ADDON_ENABLE, ADDON_INSTALL, ADDON_UPGRADE, or ADDON_DOWNGRADE.
-
-

shutdown

-

Called when the extension needs to shut itself down, such as when the application is quitting or when the extension is about to be upgraded or disabled. Any user interface that has been injected must be removed, tasks shut down, and objects disposed of.

-
void shutdown(
-  data,
-  reason
-);
-
-
Parameters
-
-
- data
-
- A bootstrap data structure.
-
- reason
-
- One of the reason constants, indicating why the extension is being shut down. This will be one of APP_SHUTDOWN, ADDON_DISABLE, ADDON_UNINSTALL, ADDON_UPGRADE, or ADDON_DOWNGRADE.
-
-

install

-

Your bootstrap script must include an install() function, which the application calls before the first call to startup() after the extension is installed, upgraded, or downgraded.

-
- Note: This method is never called if the extension has never been started; for example, if an extension is installed but isn't compatible with the current version of the application, install() never gets called if it is uninstalled before becoming compatible. However, if the extension gets upgraded to a version that's compatible with the application, its install() function will be called at that time, before the first startup() call.
-
void install(
-  data,
-  reason
-);
-
-
Parameters
-
-
- data
-
- A bootstrap data structure.
-
- reason
-
- One of the reason constants, indicating why the extension is being installed. This will be one of ADDON_INSTALL, ADDON_UPGRADE, or ADDON_DOWNGRADE.
-
-

uninstall

-

This function is called after the last call to shutdown() before a particular version of an extension is uninstalled. This will not be called if install() was never called.

-
- Note: It's important to keep in mind that uninstall() can be called even on extensions that are currently disabled, or are not compatible with the current application. Because of this, it's crucial that the function be implemented to gracefully handle APIs that may not be present in the application. This function will also not be called if a third-party application removes the extension while Firefox isn't running. Simply having code function install() {} IS NOT ENOUGH, if you have code in uninstall it will not run, you MUST run some code in the install function, at the least you must set arguments on the install function so like: function install(aData, aReason) {} then uninstall WILL WORK.
-
- Note: If you open addon manager and then click "Remove" on addon, it will not call uninstall function right away. Because it was soft uninstalled, as the "Undo" button is there. If you close addon manager or something to make that "Undo" button to go away then the hard uninstall takes place.
-
- Note: The uninstall function fires on downgrade and upgrade as well so you should make sure it is an uninstall by doing this:
- function uninstall(aData, aReason) {
-      if (aReason == ADDON_UNINSTALL) {
-           console.log('really uninstalling');
-      } else {
-           console.log('not a permanent uninstall, likely an upgrade or downgrade');
-      }
- }
-
void uninstall(
-  data,
-  reason
-);
-
-
Parameters
-
-
- data
-
- A bootstrap data structure.
-
- reason
-
- One of the reason constants, indicating why the extension is being uninstalled. This will be one of ADDON_UNINSTALL, ADDON_UPGRADE, or ADDON_DOWNGRADE.
-
-

Reason constants

-

The bootstrap functions accept a reason parameter, which explains to the extension why it's being called. The reason constants are:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ConstantValueDescription
APP_STARTUP1The application is starting up.
APP_SHUTDOWN2The application is shutting down.
ADDON_ENABLE3The add-on is being enabled.
ADDON_DISABLE4The add-on is being disabled. (Also sent during uninstallation)
ADDON_INSTALL5The add-on is being installed.
ADDON_UNINSTALL6The add-on is being uninstalled.
ADDON_UPGRADE7The add-on is being upgraded.
ADDON_DOWNGRADE8The add-on is being downgraded.
-

Bootstrap data

-

Each of the entry points is passed a simple data structure containing some useful information about the add-on being bootstrapped. More information about the add-on can be obtained by calling AddonManager.getAddonByID(). The data is a simple JavaScript object with the following properties:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescription
idstringThe ID of the add-on being bootstrapped.
versionstringThe version of the add-on being bootstrapped.
installPathnsIFileThe installation location of the add-on being bootstrapped. This may be a directory or an XPI file depending on whether the add-on is installed unpacked or not.
resourceURInsIURIA URI pointing at the root of the add-ons files, this may be a jar: or file: URI depending on whether the add-on is installed unpacked or not. {{ gecko_minversion_inline("7.0") }}
oldVersionstringThe previously installed version, if the reason is ADDON_UPGRADE or ADDON_DOWNGRADE, and the method is install or startup. {{ gecko_minversion_inline("22.0") }}
newVersionstringThe version to be installed, if the reason is ADDON_UPGRADE or ADDON_DOWNGRADE, and the method is shutdown or uninstall. {{ gecko_minversion_inline("22.0") }}
-
-

Note: An add-on may be upgraded/downgraded at application startup, in this case the startup method reason is APP_STARTUP, and the oldVersion property is not set. Also be aware that in some circumstances an add-on upgrade/downgrade may occur without the uninstall method being called.

-
-

Add-on debugger

-

From Firefox 31 onwards, you can use the Add-on Debugger to debug bootstrapped add-ons.

-

Further reading

- diff --git a/files/de/mozilla/add-ons/performance_best_practices_in_extensions/index.html b/files/de/mozilla/add-ons/performance_best_practices_in_extensions/index.html deleted file mode 100644 index 5a1c7e8052..0000000000 --- a/files/de/mozilla/add-ons/performance_best_practices_in_extensions/index.html +++ /dev/null @@ -1,156 +0,0 @@ ---- -title: Best Practice für Performance in Erweiterungen -slug: Mozilla/Add-ons/Performance_best_practices_in_extensions -tags: - - Add-ons - - Best Practice - - Erweiterungen - - Leitfaden - - Performanz -translation_of: Archive/Add-ons/Performance_best_practices_in_extensions ---- -

Einer der größten Vorteile von Firefox ist seine Erweiterbarkeit. Erweiterungen können beinahe jede beliebige Funktion erfüllen. Doch dieses Konzept hat einen Nachteil: Eine schlecht geschriebene Erweiterung kann sich stark negativ auf das Nutzungserlebnis auswirken, und auch zu allgemeinen Leistungseinbußen in Firefox führen. Der folgende Artikel soll eine Reihe von Vorschlägen liefern, um die Leistung und Geschwindigkeit Deiner Erweiterung zu erhöhen, und dadurch auch von Firefox selbst.

- -

Die Startup Leistung Verbessern

- -

Erweiterungen werden immer dann geladen und gestartet, wenn eine neues Browser Fenster geöffnet wird. Im Umkehrschluss bedeutet das aber, dass Deine Erweiterung einen direkten Einfluss darauf hat, wie lange ein Benutzer beim Laden einer neuen Seite warten muss. Es gibt mehrere Möglichkeiten, die Startzeit Deiner Erweiterung zu optimieren und somit die Verzögerung für den Endbenutzer zu minimieren.

- -

Lade nur, was nötig ist

- -

Lade keine Ressourcen beim Startup, die nicht direkt benötigt werden. Das sind Daten, die erst nach einer Benutzerinteraktion, etwa ein Klick auf einen Button, benötigt werden, oder Daten die nur bei bestimmten Einstellungen zum Tragen kommen. Auch wenn Deine Erweiterung Features anbietet, die nur funktionieren wenn der Benutzer sich in ein Service eingeloggt hat, lade die Ressourcen für diese Features erst beim tatsächlichen Login.

- -

Nutze JavaScript Code Module

- -

Du kannst Teile deiner Erweiterung in JavaScript code modules kapseln. Diese Module können zur Laufzeit bei Bedarf geladen werden und reduzieren somit den Ladeaufwand zum Programmstart.

- -

Die JavaScript Code Module bieten hier einen Vorteil gegenüber XPCOM Modulen, die immer zu Beginn geladen werden.

- -

Natürlich hängt es von der Komplexität der Erweiterung ab, ob eine Modularisierung des Codes sinnvoll ist.

- -

Verschiebe alles, was verschoben werden kann

- -

Die meisten Erweiterungen fangen das load event eines Fensters ab, um ihren Startup Code auszuführen. Hier sollte so wenig wie möglich getan werden. Das Browser Fenster wird so lange blockiert, bis der load Handler deiner Erweiterung abgeschlossen ist. Das bedeutet, je länger die Erweiterung dafür braucht, desto langsamer wirkt Firefox für den Benutzer.

- -

Jede Operation, die nicht sofort ausgeführt werden muss, kann mittels einem {{ interface("nsITimer") }} oder mit der {{ domxref("window.setTimeout()") }} Funktion für einen späteren Zeitpunkt geplant werden. Sogar kurze Verzögerungen in diesem Programmbereich können eine große Auswirkung auf die Ladegeschwindigkeit haben.

- -

General Performance Tips

- -

Vermeide Speicherlecks

- -

Speicherlecks können die Leistung deiner Erweiterung stark reduzieren, weil sie dafür sorgen, dass der Garbage Collector und der Cycle Collector mehr Arbeit haben.

- -

Sogenannte Zombiebereiche sind eine Form von Speicherlecks, die Du selbst sehr einfach entdecken und verhindern kannst. Lies dazu den Artikel zu Zombie compartments, speziell die Sektion Proactive checking of add-ons.

- -

Im Artikel Common causes of memory leaks in extensions werden weitere Möglichkeiten, wie Du Zombiebereiche und andere Formen von Speicherlecks verhindern kannst, besprochen.

- -

Neben der direkten Suche nach den oben genannten Lecks solltest Du auch allgemein ein Auge auf die Speichernutzung deines Addons haben und regelmäßig unter about:memory überprüfen. Als Beispiel sei bug 719601 genannt, bei dem ein "System Principal" JavaScript Bereich auf mehrere 100 MB an Speicher anwuchs, was sehr viel größer ist als im Regelfall.

- -

Nutze JavaScript Module

- -

JavaScript Module verhalten sich wie jeder andere JavaScript Code, mit dem feinen Unterschied, dass sie als Singletons agieren und daher von Firefox in den Cache abgelegt werden können. Dadurch können sie beim nächsten Start sehr viel effizienter geladen werden. Wann immer deine Erweiterung JavaScript Code von einem {{ HTMLElement("script") }} Element lädt, solltest du überlegen, stattdessen ein JavaScript Modul zu nutzen. Weitere Information über JavaScript Module und ihre Verwendung werden im Artikel Using JavaScript Code Modules besprochen.

- -

Vermeide Langsamen CSS Code

- - - -

Vermeide DOM Mutation Event Listeners

- -

Durch das Hinzufügen eines DOM Mutation Listeners in einem Dokument werden die meisten DOM Mutation Optimierungen deaktiviert und die Performanz von weiteren Änderungen der DOM-Struktur des Dokuments wird stark herabgesetzt. Des weiteren kann dieser Effekt durch das Deaktivieren eines Mutation Listeners nicht wieder rückgängig gemacht werden. Die folgenden Events sollten daher strikt vermieden werden: DOMAttrModified, DOMAttributeNameChanged, DOMCharacterDataModified, DOMElementNameChanged, DOMNodeInserted, DOMNodeInsertedIntoDocument, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMSubtreeModified

- -

Weitere Information zu diesen veralteten Events findest Du im Artikel Mutation events. Stattdessen sollten Mutation Observers benutzt werden.

- -

Benutze Lazy Load für Services

- -

Das JavaScript Modul XPCOMUtils bietet zwei Möglichkeiten für Lazy Loading:

- - - -

Seit Firefox 4.0 werden viele übliche Services bereits in Services.jsm gecached.

- -

Reduziere File I/O

- -

TODO: Hier fehlen Beispiele, wie etwa Links zu Code, Bugs, oder Docs.

- - - -

Benutze die Richtige Kompressionsstufe für JAR und XPI Dateien

- -

Daten von komprimierten Archiven zu lesen ist zeitaufwändig. Je stärker ein Archiv komprimiert ist, desto mehr Aufwand muss auch für das Lesen der darin befindlichen Daten erbracht werden. Daher sollten alle JAR Dateien in deiner Erweiterung mit Kompressionslevel 0 (keine Kompression) gepackt werden. Es mag kontraproduktiv klingen, aber dadurch wird zwar die Dateigröße der JAR Datei erhöht, die Größe der XPI Datei aber reduziert, weil dadurch die Möglichkeit gegeben ist, dass beim Komprimiered der XPI Datei Kompressionen der einzelnen im JAR enthaltenen Dateien stattfinden können. (Das kann als eine Art progressive Kompression bezeichnet werden).

- -

Wenn deine Erweiterung nicht explizit em:unpack verwendet, wird das XPI file ab Firefox 4 nicht entpackt, sondern direkt genutzt. Aus diesem Grund ist eine niedrige Kompressionsstufe zu bevorzugen, wobei wir zu Kompressionslevel 1 raten. Selbst im Vergleich mit maximaler Kompression wird dadurch die Größe des Downloads nur geringfügig angehoben.

- -

Benutze asynchrone I/O

- -

Diese Regel kann nicht oft genug wiederholt werden: Benutze niemals synchrone I/O in einem GUI Thread.

- - - -

Unnötige Verwendung von onreadystatechange in XHR

- -

Für die meisten Anwendungsfälle sind addEventListener(load/error) und/oder xhr.onload/.onerror völlig ausreichend und bieten den Vorteil, dass sie nur einmal aufgerufen werden, im Gegensatz zu onreadystatechange. In vielen Fällen wird onreadystatechange aus Kompatibilitätsgründen verwendet, wenn XHR in einer Webseite verwendet wird. Das ist oft auchreichend, um Ressourcen zu laden oder Fehler zu behandeln. Allerdings werden load/error Event Listener viel seltener aufgerufen als onreadystatechange, genauer gesagt nur einmal, und es ist nicht notwendig jedes mal den readyState  zu überprüfen oder herauszufinden, ob es sich um ein error Event handelt. onreadystatechange sollte nur benutzt werden, wenn es notwendig ist, eine Antwort noch während ihrem Einlangen zu behandeln.

- -

Entferne Event Listeners

- -

Entferne Event Listener, wenn sie nicht mehr benötigt werden. Es ist viel effizienter, Event Listener zu entfernen, als sie etwa durch Flags zu deaktivieren; denn bei zweiterem Ansatz muss bei jedem auftretenden Event die Flag abgefragt werden. Konstrukte wie function onMouseOver(evt) { if (is_active) { /* doSomeThing */ } } sollten also vermieden werden. Auch "Einmal-Events" sollten danach wieder deaktiviert werden:

- -
 function init() {
-   var largeArray;
-   addEventListener('load', function onLoad() {
-        removeEventListener('load', onLoad, true);
-        largeArray.forEach();
- }, true);
-
- -

Andernfalls kann es vorkommen, dass Closure Objekte des Listeners weiter referenziert werden (in obigem Beispiel die Variable largeArray). Der Listener wird dadurch weit über seine nötige Lebensdauer im Speicher gehalten.

- -

Befülle Menüs nach Bedarf

- -

Befülle Kontextmenüs (page, tabs, tools) nur nach Bedarf und reduziere Berechnungen auf ein Minimum, um die Reaktionsgeschwindigkeit der UI zu erhalten. Es ist nicht notwendig, bei jeder Änderung das gesamte Menü neu zu befüllen. Diese Aufgabe kann warten, bis der Benutzer das Menü tatsächlich verwenden will. Füge einen Listener für das "popupshowing" Event hinzu und erstelle/befülle das Kontextmenü dort.

- -

Vermeide Maus-Bewegungs-Events

- -

Vermeide die Verwendung von Mausbewegungsevents (enter, over, exit) oder minimiere zumindest die Berechnungen, die beim Auslösen eines solchen Events durchgeführt werden auf ein Minimum. Solche Events, besonders das mouseover Event, treten überlichweise sehr häufig auf. Es wird geraten, im Eventhandler nur neue Information zu speichern und die Berechnung erst dann auszuführen, wenn der Benutzer sie benötigt (zum Beispiel bei einem popupshowing Event). Vergiss auch nicht darauf, nicht mehr benötigte Event Listener auszuschalten (siehe oben).

- -

Vermeide Polling

- -

Benutze die {{ interface("nsIObserverService") }} Funktion stattdessen. Jede Erweiterung darf via {{ interface("nsIObserverService") }} eigene Benachrichtigungen versenden, aber die wenigsten benutzen diese Funktionalität. Auch viele andere Services bieten Funktionalität zur Beobachtung, etwa nslPrefBranch2.

- -

aPNG/aGIF sind oft nicht zu Empfehlen

- -

Animationen benötigen viel Ladezeit, weil eine große Anzahl an Bildern dekodiert werden muss (die Frames der Animation). Animierte Bilder werden häufig aus dem Cache entfernt, was dazu führt, dass sie immer wieder neu geladen werden müssen. Besonders anfällig dafür ist {{ interface("nsITree") }} / {{ XULElem("tree") }}, das unter manchen Umständen gar kein Caching betreibt.

- -

base64/md5/sha1 Implementierungen

- -

Verwende keine eigenen base64/md5/sha1 Implementierungen. Die eingebauten Funktionen für base64 atob/btoa sind völlig ausreichend und können in overlay Scripts sowie in JavaScript Modulen verwendet werden. Hashes können mit {{ interface("nsICryptoHash") }}, berechnet werden, das entweder einen String oder {{ interface("nsIInputStream") }} akzeptiert.

- -

Image sprites

- -

Mehrere Bilder können in ein Sprite kombiniert werden. Siehe {{ cssxref("-moz-image-region") }}. Die meisten XUL Widgets, die zum Anzeigen von Bildern verwendet werden können (inklusive {{ XULElem("button") }} und {{ XULElem("toolbarbutton") }}) erlauben auch die Verwendung von {{ cssxref("list-style-image") }}. Vermeide die Benutzung der imagesrc/src Attribute für die einbettung von Bildern.

- -

Verwende Chrome Workers

- -

Für lange andauernde Berechnungen oder Datenverarbeitung kann {{ domxref("ChromeWorker") }} verwendet werden.

- - - - diff --git a/files/de/mozilla/add-ons/sdk/builder/index.html b/files/de/mozilla/add-ons/sdk/builder/index.html deleted file mode 100644 index d243acec45..0000000000 --- a/files/de/mozilla/add-ons/sdk/builder/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Builder -slug: Mozilla/Add-ons/SDK/Builder -tags: - - builder -translation_of: Archive/Add-ons/Add-on_SDK/Builder ---- -

Der Add-on Builder war ein web-basiertes Entwicklungssystem welches Entwicklern erlaubt hat, mit den SDK APIs Addons zu erstellen ohne das cfx Kommando-Zeilen-Tool verwenden zu müssen. Es wurde am 1. April 2014 eingestellt und jetzt leitet es auf die builder.addons.mozilla.org-Seite weiter.
-
- Falls sie bisher das SDK nur über den Builder verwendet haben, wissen sie bereits das meiste, das sie benötigen um direkt mit dem SDK arbeiten zu können. Die high-level und low-level APIs, die für Builder Addons verwendet wurden sind jeweils die gleichen. Mit folgenden Schritten können sie zum SDK wechseln:

- - diff --git a/files/de/mozilla/add-ons/sdk/guides/content_scripts/index.html b/files/de/mozilla/add-ons/sdk/guides/content_scripts/index.html deleted file mode 100644 index a94176f2cb..0000000000 --- a/files/de/mozilla/add-ons/sdk/guides/content_scripts/index.html +++ /dev/null @@ -1,484 +0,0 @@ ---- -title: Content Scripts -slug: Mozilla/Add-ons/SDK/Guides/Content_Scripts -translation_of: Archive/Add-ons/Add-on_SDK/Guides/Content_Scripts ---- -
-

Viele Add-ons müssen den Inhalt von Webseiten modifizieren oder auf diesen zugreifen können. Der Grundcode des Add-on  bekommt aber keinen direkten Zugriff auf Webinhalte. Stattdessen müssen SDK Add-ons den Code,  der Zugriff auf Webinhalte erhält in seperate Skripte auslagern, die sogenannten "Content Scripts". Diese Seite beschreibt wie man Content Scripts entwickelt und diese implementiert.

- -

Content Scripts sind einer der verwirrenderen Aspekte beim Arbeiten mit der SDK, aber Sie werden mit Sicherheit mit ihnen arbeiten müssen. Es gibt fünf grundlegende Prinzipien:

- - - -

Dieses komplette Add-on zeigt alle diese Prinzipien. Die "main.js" hängt ein Content Skript an den aktuellen Tab, mittels den tabs Modules, an. In diesem Fall wird der Content Skript in Form eines Strings übergeben. Das Content Skript ersetzt einfach nur den Inhalt der Seite:

- -
// main.js
-var tabs = require("sdk/tabs");
-var contentScriptString = 'document.body.innerHTML = "<h1>Diese Seite wurde aufgegessen</h1>";'
-
-tabs.activeTab.attach({
-  contentScript: contentScriptString
-});
- -

Die folgenden high-level SDK Module können Content Skripts benutzen, um Webseiten zu bearbeiten:

- - - -

Zusätzlich sind manche SDK Benutzeroberflächen Komponenten - Panel, Sidebar, frames - darauf ausgelegt HTML zu benutzen und haben deshalb seperate Skripte um mit ihrem Inhalt zu interagieren. In vielen Punkten sind diese Skripte wie Content Skripte, aber dies ist nicht Teil dieses Artikels. Um mehr über die Interaktion des Inhalts eines Benutzeroberflächenmoduls zu erfahren, schauen Sie sich die modulspezifischen Dokumentationen: panel, sidebar, frame an.

- -

Fast alle diese Beispiele, die in dieser Anleitung präsentiert werden, sind als komplette, aber minimalistische, Add-ons in der addon-sdk-content-scripts repository auf Github vorhanden.

- -

Content Skripts laden

- -
-

Sie können ein einzelnes Skript laden, indem Sie einen String an die contentScript oder die contentScriptFile Option übergeben. Die contentScript Option behandelt den übergebenen String wie ein eigenes Skript:

- -
// main.js
-
-var pageMod = require("sdk/page-mod");
-var contentScriptValue = 'document.body.innerHTML = ' +
-                         ' "<h1>Page matches ruleset</h1>";';
-
-pageMod.PageMod({
-  include: "*.mozilla.org",
-  contentScript: contentScriptValue
-});
- -

Die contentScriptFile Option behandelt den String wie eine resource:// URL, die auf ein Skript zeigt, dass in ihrem Add-on Verzeichnis "data" gespeichert ist. jpm erstellt standardmäßig keinen "data" Ordner, also muss dieser erst erstellt werden, wenn Sie ihre Content Scripts verwenden wollen.

- -

Das Add-on liefert eine URL, die auf die Datei "content-script.js" zeigt, welche im data Unterordner des Add-on Stammverzeichnisses enthalten ist:

- -
// main.js
-
-var data = require("sdk/self").data;
-var pageMod = require("sdk/page-mod");
-
-pageMod.PageMod({
-  include: "*.mozilla.org",
-  contentScriptFile: data.url("content-script.js")
-});
- -
// content-script.js
-
-document.body.innerHTML = "<h1>Seite erfüllt die Regeln.</h1>";
- -
-

Ab Firefox 34 , kann "./content-script.js" als Alias für self.data.url("content-script.js") verwendet werden. Die main.js kann also auch folgendermaßen geschrieben werden:

- -
var pageMod = require("sdk/page-mod");
-
-pageMod.PageMod({
-  include: "*.mozilla.org",
-  contentScriptFile: "./content-script.js"
-});
-
-
- -
-

Wenn ihr Content Skript nicht sehr simpel ist oder aus einem statischen String besteht, sollten Sie contentScript:  nicht benutzen. Wenn Sie es doch tun, könnten Sie Probleme haben Ihr Add.on auf AMO verifiziert zu bekommmen.

- -

Stattdessen sollten Sie ihr Skript in einer seperaten Datei schreiben und mit contentScriptFile laden. Das macht ihren Code übersichtlicher und er ist einfacher zu Warten, sichern und debuggen.

-
- -

Sie können auch mehrere Skripte in contentScript oder contentScriptFile laden, indem Sie ein Array von Strings übergeben:

- -
// main.js
-
-var tabs = require("sdk/tabs");
-
-tabs.on('ready', function(tab) {
-  tab.attach({
-      contentScript: ['document.body.style.border = "5px solid red";', 'window.alert("hi");']
-  });
-});
-
- -
// main.js
-
-var data = require("sdk/self").data;
-var pageMod = require("sdk/page-mod");
-
-pageMod.PageMod({
-  include: "*.mozilla.org",
-  contentScriptFile: [data.url("jquery.min.js"), data.url("my-content-script.js")]
-});
- -

Wenn Sie das tuen, können die Skripte direkt miteinander kommunizieren, als wären es Skripte der gleichen Webseite.

- -

Sie können auch contentScript und contentScriptFile zusammen benutzen. Wenn Sie das tun, werden die Skripte, die sie in contentScriptFile spezifizieren vor denen in contentScript geladen. Das ermöglicht es Ihnen javaScript Bibliotheken, wie JQuery über eine URL zu laden und dann ein simples Skript inline zu verwenden, dass diese Bibliothek benutzt:

- -
// main.js
-
-var data = require("sdk/self").data;
-var pageMod = require("sdk/page-mod");
-
-var contentScriptString = '$("body").html("<h1>Page matches ruleset</h1>");';
-
-pageMod.PageMod({
-  include: "*.mozilla.org",
-  contentScript: contentScriptString,
-  contentScriptFile: data.url("jquery.js")
-});
- -
-

Wenn ihr Content Skript nicht sehr simpel ist oder aus einem statischen String besteht, sollten Sie contentScript:  nicht benutzen. Wenn Sie es doch tun, könnten Sie Probleme haben Ihr Add.on auf AMO verifiziert zu bekommmen.

- -

Stattdessen sollten Sie ihr Skript in einer seperaten Datei schreiben und mit contentScriptFile laden. Das macht ihren Code übersichtlicher und er ist einfacher zu Warten, sichern und debuggen.

-
- -

Kontrollieren, wann das Skript angehängt werden soll.

- -

Die contentScriptWhen Option spezifiziert, wann das/die Content Skript/e geladen werden sollen. Diese brauch eine dieser Parameter:

- -
    -
  • "start": Läd das Skript sofort, nach dem das Dokumentelement der Seite in den DOM eingefügt wird. ZU diesem Zeitpunkt wurde der DOM Inhalt noch nicht geladen,, deshalb kann das Skript nicht damit interagieren.
  • -
  • "ready": Läd das Skript nachdem der DOM der Seite geladen wurde: Dies ist der Fall, wenn das DOMContentLoaded Event  abgefeuert wird. Ab diesem Zeitpunkt können Content Skripts mit dem DOM interagieren, aber extern referenzierte Stylesheets und Bilder könnten noch nicht geladen sein.
  • -
  • "end": Läd das Skript nachdem der komplette Inhalt (DOM, JS, CSS, images) der Seute geladen wurde. Zu diesem Zeitpunkt wird das window.onload event abgefeuert.
  • -
- -

Der Standardwert ist "end".

- -

Die Funktion tab.attach() akzepiert contentScriptWhen nicht, da es generell aufgerufen wird wenn die Seite geladen wurde.

- -

Übergabe von Konfigurationsoptionen

- -

Das contentScriptOptions Objekt ist ein JSON Objekt, das den Content Skripts als "read-only" Wert als self.options Eigenschaft übergeben wird:

- -
// main.js
-
-var tabs = require("sdk/tabs");
-
-tabs.on('ready', function(tab) {
-  tab.attach({
-      contentScript: 'window.alert(self.options.message);',
-      contentScriptOptions: {"message" : "hello world"}
-  });
-});
- -

Jeder Wert (Objekt, Feld, String, etc), dass in JSON dargestellt werden kann, kann hier benutzt werden.

- -

Zugriff auf den DOM

- -

Content Skripts können natürlich wie jedes andere Skript, dass die Seite geladen hat ( Page Skripts) auf den DOM zugreifen. Content Skripts und Page Skripts sind wie folgt von einander isoliert:

- -
    -
  • Content Skripts sehen keine JavaScript Objekte, die der Seite über Page Skripts hinzugefügt wurden.
  • -
  • Auch wenn ein Page Skript das Verhalten eines DOM Objekts verändert hat, sieht das Content Skript nur das Originalverhalten.
  • -
- -

Das gleiche gilt auch umgekehrt: Page Skripts sehen keine JavaScript Objekte, die von Content Skripts hinzugefügt wurden.

- -

Stellen Sie sich eine Seite vor, die zum Beispiel eine Variable foo über ein Page Skript zum window Objekt hinzufügt:

- -
<!DOCTYPE html">
-<html>
-  <head>
-    <script>
-    window.foo = "hello from page script"
-    </script>
-  </head>
-</html>
- -

Ein anderes Skript, dass nach diesem Skript in die Seite geladen wird, kann auf foo zugreifen. Ein Content Skript kann dies nicht:

- -
// main.js
-
-var tabs = require("sdk/tabs");
-var mod = require("sdk/page-mod");
-var self = require("sdk/self");
-
-var pageUrl = self.data.url("page.html")
-
-var pageMod = mod.PageMod({
-  include: pageUrl,
-  contentScript: "console.log(window.foo);"
-})
-
-tabs.open(pageUrl);
- -
console.log: my-addon: null
-
- -

Es gibt gute Gründe für diese Isolation. Erstens können Content Skripts so keine Objekte an Webseiten übermitteln und somit Sicherheitslücken schaffen. Zweitens können Content Skripts so Objekte erzeugen, ohne sich Sorgen machen zu müssen, dass diese mit Objekten kollidieren, die in Page Skripts erzeugt wurden.

- -

Die Isulation bedeutet, dass wenn zum Beispiel eine Webseite die JQuery Bibliothek läd, das Content Skript nicht in der Lage ist dieses zu sehen, aber eine eigene JQuery Bibliothek laden kann ohne das es ein Problem mit der Version gibt, die über das Page Skript hinzugefügt wurde.

- -

Interaktion mit Page Skripts

- -

Normalerweise möchte man Content Skripts und Page Skripts voneinander isolieren. Wenn dies nicht der Fall ist, da Sie zum Beispiel Objekte zwischen beiden Skripten austauschen wollen, oder Nachrichten zwischen ihnen schicken wollen können Sie mehr zum Thema unter  Interaktion mit Page Skripts finden.

- -

Event Listeners

- -

Man kann in Content Skripts genau wie in einem Page Skript auf DOM Events warten. Es gibt nur zwei wichtige Unterschieden:

- -

Erstens: Falls Sie einen Event Listener als String an setAttribute() übergeben, wird der Listener im Seitenkontext ausgeführt und hat somit keinen Zugriff auf Variablen, die im Content Skript definiert wurden.

- -

Zum Beispiel, wird dieses Content Skript mit der Fehlermeldung "theMessage is not defined" ausgeben:

- -
var theMessage = "Hello from content script!";
-anElement.setAttribute("onclick", "alert(theMessage);");
- -

Zweitens: Falls Sie einen Event Listener per direkter Zuweisung einem globalen Event Handler  wie onclick zuweisen, könnten Zuweisungen, die die Seite vornimmt überschrieben werden. Zur Veranschaulichung ist hier ein Add-on, das versucht einen click Handler per Zuweisung an window.onclick anzufügen:

- -
var myScript = "window.onclick = function() {" +
-               "  console.log('unsafewindow.onclick: ' + window.document.title);" +
-               "}";
-
-require("sdk/page-mod").PageMod({
-  include: "*",
-  contentScript: myScript,
-  contentScriptWhen: "start"
-});
- -

Das wird auf den meisten Seiten funktionieren, bis auf denen, die ebenfalls ein onclick zuweisen:

- -
<html>
-  <head>
-  </head>
-  <body>
-    <script>
-    window.onclick = function() {
-      window.alert("it's my click now!");
-    }
-    </script>
-  </body>
-</html>
- -

Aus diesen Gründen ist es besser Event Listeners per addEventListener() hinzuzufügen. So definieren Sie einen Listener als Funktion:

- -
var theMessage = "Hello from content script!";
-
-anElement.onclick = function() {
-  alert(theMessage);
-};
-
-anotherElement.addEventListener("click", function() {
-  alert(theMessage);
-});
- -

Kommunikation mit dem Add-on

- -

Damit Add-On Sktipts und Content Skripts miteinander kommunizieren können, haben beide Seiten der Konversation Zugriff auf ein port Objekt.

- -
    -
  • Um eine Nachricht von einer Seite zur anderen zu schicken nutzen Sie port.emit()
  • -
  • Um eine Nachricht von der anderen Seite zu empfangen nutzen port.on()
  • -
- -

Nachrichten sind asyncron, was bedeutet, dass der Sender nicht wartet, bis er eine Antwort des Empfängers erhält, sondern die Nachricht schickt und das weiter arbeitet.

- -

Hier ist ein simples Beispieladd-on, das eine Nachricht an ein Content Skript per port schickt:

- -
// main.js
-
-var tabs = require("sdk/tabs");
-var self = require("sdk/self");
-
-tabs.on("ready", function(tab) {
-  worker = tab.attach({
-    contentScriptFile: self.data.url("content-script.js")
-  });
-  worker.port.emit("alert", "Message from the add-on");
-});
-
-tabs.open("http://www.mozilla.org");
- -
// content-script.js
-
-self.port.on("alert", function(message) {
-  window.alert(message);
-});
- -
-

Das context-menu Modul benutzt das Kommunikationsmodul, das hier beschrieben wird nicht. Um etwas über die Kommunikation mit geladenen Content Skripts im context-menu zu erfahren, schauen Sie in die context-menu Dokumentation.

-
- -

Zugriff auf port im Content Skript

- -

Im Content Skript ist das port Objekt als Eigenschaft im globalen Objekt self verfügbar. So versenden Sie eine Nachricht vom Content Skript:

- -
self.port.emit("myContentScriptMessage", myContentScriptMessagePayload);
- -

Um eine Nachricht vom Add-on Code zu bekommen:

- -
self.port.on("myAddonMessage", function(myAddonMessagePayload) {
-  // Handle the message
-});
- -
-

Das globale self Objekt ist etwas komplett anderes als das self Modul, das einer API in einem Add-on die Möglichkeit bietet auf Daten und die ID des Add-ons zuzugreifen.

-
- -

Zugriff auf port im Add-on Skript

- -

Im Add-on Code ist das Bindeglied zur Kommunikation zwischen Add-on und einem spezifischen Content Skript das  worker Objekt. Das port Objekt ist also eine Eigenschaft des  worker Objekts.

- -

Der worker wird aber im Add-on Code nicht von allen Modulen gleich verwendet.

- -

Vom page-worker

- -

Das page-worker Objekt integriert die worker API direkt. Um also eine Nachricht von einem Content Skript zu erhalten, das mit dem page-worker assoziiert wird benutzt man pageWorker.port.on():

- -
// main.js
-
-var pageWorkers = require("sdk/page-worker");
-var self = require("sdk/self");
-
-var pageWorker = require("sdk/page-worker").Page({
-  contentScriptFile: self.data.url("content-script.js"),
-  contentURL: "http://en.wikipedia.org/wiki/Internet"
-});
-
-pageWorker.port.on("first-para", function(firstPara) {
-  console.log(firstPara);
-});
- -

Um eine benutzerdefinierte Nachricht vom Add-on zu schicken, nutz man pageWorker.port.emit():

- -
// main.js
-
-var pageWorkers = require("sdk/page-worker");
-var self = require("sdk/self");
-
-pageWorker = require("sdk/page-worker").Page({
-  contentScriptFile: self.data.url("content-script.js"),
-  contentURL: "http://en.wikipedia.org/wiki/Internet"
-});
-
-pageWorker.port.on("first-para", function(firstPara) {
-  console.log(firstPara);
-});
-
-pageWorker.port.emit("get-first-para");
- -
// content-script.js
-
-self.port.on("get-first-para", getFirstPara);
-
-function getFirstPara() {
-  var paras = document.getElementsByTagName("p");
-  if (paras.length > 0) {
-    var firstPara = paras[0].textContent;
-    self.port.emit("first-para", firstPara);
-  }
-}
- -

Vom page-mod

- -

Ein einziges  page-mod Objekt kann ein Skript an mehrere Seiten anhängen. Jede dieser Seiten hat ihren eigenen Context, in dem sie dieses Skript aufrufen. Daher benötigt es seperate Kanäle(worker) für jede Seite.

- -

page-mod integriert also die worker API nicht direkt, sondern es wird jedes Mal wenn ein Content Skript an eine Seite angehängt wird das attach Event aufgerufen,  dessen listener einen worker für den Kontext übergeben bekommt. Durch das bereit stellen eines listeners bei attach kann man das port Objekt für das Content Skript, dass dieser Seite angefügt wurde über diesen page-mod verwenden:

- -
// main.js
-
-var pageMods = require("sdk/page-mod");
-var self = require("sdk/self");
-
-var pageMod = pageMods.PageMod({
-  include: ['*'],
-  contentScriptFile: self.data.url("content-script.js"),
-  onAttach: startListening
-});
-
-function startListening(worker) {
-  worker.port.on('click', function(html) {
-    worker.port.emit('warning', 'Do not click this again');
-  });
-}
- -
// content-script.js
-
-window.addEventListener('click', function(event) {
-  self.port.emit('click', event.target.toString());
-  event.stopPropagation();
-  event.preventDefault();
-}, false);
-
-self.port.on('warning', function(message) {
-  window.alert(message);
-});
-
- -

Im oben gezeigten Add-on gibt es zwei Nachrichten:

- -
    -
  • click wird vom page-mod an das Add-on geschickt, wenn der Nutzer auf ein Element auf der Seite klickt
  • -
  • warning schickt einen String zurück an den page-mod
  • -
- -

Von Tab.attach()

- -

Die Tab.attach() methode liefert einen worker zurück, den man zur Kommunikation mit dem/den Content Skript/Content Skripts, die angehängt wurden, verwenden kann.

- -

Das Add-on fügt einen Button zu Firefox hinzu: Wenn der Benutzer den Button drückt, fügt das Add-on ein Content Skript an den aktuellen Tab an. Das Skript sendet eine Nachricht namens "my-addon-message" und wartet auf eine Antwort namens "my-script-response":

- -
//main.js
-
-var tabs = require("sdk/tabs");
-var buttons = require("sdk/ui/button/action");
-var self = require("sdk/self");
-
-buttons.ActionButton({
-  id: "attach-script",
-  label: "Attach the script",
-  icon: "./icon-16.png",
-  onClick: attachScript
-});
-
-function attachScript() {
-  var worker = tabs.activeTab.attach({
-    contentScriptFile: self.data.url("content-script.js")
-  });
-  worker.port.on("my-script-response", function(response) {
-    console.log(response);
-  });
-  worker.port.emit("my-addon-message", "Message from the add-on");
-}
-
- -
// content-script.js
-
-self.port.on("my-addon-message", handleMessage);
-
-function handleMessage(message) {
-  alert(message);
-  self.port.emit("my-script-response", "Response from content script");
-}
- -

Die port API

- -

Schaue unter der Referenzseite für das port Objekt.

-
- -

Die postMessage API

- -

bevor das port Objekt hinzugefügt wurde, kommunizierten Add-on Code und Content Skripts über eine andere API:

- - - -

Die API ist immer noch verfügbar und dokumentiert, aber es gibt keinen Grund sie statt der port API zu verwenden, die hier beschrieben wird. Die Ausnahme bildet das context-menu Modul, welches immer noch postMessage verwendet.

- -

Content Skript zu Content Skript

- -

Content Skripts können nur direkt miteinander kommunizieren, wenn diese im gleichen Kontext geladen wurden. Beispiel: Wenn ein einziger Aufruf von  Tab.attach()  zwei Content Skripts anhängt, können diese sich gegenseitig sehen. Wenn aber Tab.attach() zweimal aufgerufen wird, und die Content Skripts einzeln anhängt,können die Content Skripte nicht miteinander kommunizieren. Dann müssen die Nachrichten über die  port API über den Add-on code gesendet werden.

- -

Cross-domain Content Skripts

- -

Grundsätzlich hat ein Content Skript keine cross-domain Privilegien. Sie können also keinen Inhalt eines iframes auslesen, wenn dieser Inhalt von einer anderen Domain stammt, oder XMLHttpRequests an eine andere Domain schicken.

- -

Um dieses Feature für spezielle Domains hinzuzufügen fügen Sie dem package.json ihres Add-ons den Schlüssel "cross-domain-content" unter dem "permissions" Schlüssel hinzu. Siehe dafür den Artikel  cross-domain content scripts.

-
diff --git a/files/de/mozilla/add-ons/sdk/guides/index.html b/files/de/mozilla/add-ons/sdk/guides/index.html deleted file mode 100644 index fbb8311866..0000000000 --- a/files/de/mozilla/add-ons/sdk/guides/index.html +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Leitfäden -slug: Mozilla/Add-ons/SDK/Guides -translation_of: Archive/Add-ons/Add-on_SDK/Guides ---- -

Auf dieser Seite sind theoretische und detailliertere Artikel über das SDK auffindbar.

-
-

Für Mitwirkende

-
-
-
-
- Erste Schritte
-
- Erfahre, wie du zu dem SDK beitragen kannst: den Quellcode erhalten, Bugs melden und beheben, Patches einreichen, Überprüfungen und Hilfe erhalten.
-
- Module
-
- Erfahre mehr über das vom SDK verwendete Modulsystem (basierend auf der CommonJS-Spezifikation), wie Sandboxes und Compartments zum Erhöhen der Sicherheit verwendet werden können, und über den im SDK enthaltenen Modul-Loader Cuddlefish.
-
- Klassen und Vererbung
-
- Erfahre, wie Klassen und Vererbungen in JavaScript implementiert werden können, unter Verwendung von Konstruktoren und Prototypen, und über die Helper-Funktion des SDKs zum Vereinfachen dieser Prozesse.
-
-
-
-
-
- Private Eigenschaften
-
- Erfahre, wie private Eigenschaften in JavaScript unter Verwendung von Prefixes, Closures und WeakMaps implementiert werden können und wie das SDK private Eigenschaften durch das Verwenden von Namespaces (eine Verallgemeinerung von WeakMaps) unterstützt.
-
- Prozesse
-
- Das SDK wurde dafür entwickelt, in einer Umgebung zu arbeiten, in welcher Code zum Manipulieren von Web-Inhalten in unterschiedlichen Prozessen wie der Haupt-Code des Add-ons ausgeführt wird. Dieser Artikel erklärt die wichtigsten Vorteile dieses Konzepts.
-
-
-
-
-

SDK-Infrastruktur

-
-
-
-
- Modulstruktur des SDKs
-
- Das SDK selbst sowie die dafür konzipierten Add-ons bestehen aus wiederverwendbaren JavaScript-Modulen. Dieser Artikel erklärt, worum es sich bei diesen Modulen handelt, wie sie geladen werden können und wie die Modul-Baumstruktur des SDKs aufgebaut ist.
-
- SDK-API-Lebenszyklus
-
-  Einführung in den Lebenszyklus der SDK-APIs, beinhaltet Stabilitätsbewertungen für APIs.
-
-
-
-
-
- Programm-ID
-
- Die Programm-ID ist ein eindeutiger Bezeichner für ein Add-on. Dieser Leitfaden zeigt, wie sie erstellt wird, und wozu sie dient.
-
- Firefox-Kompatibilität
-
- Lerne, mit welchen Firefox-versionen eine SDK-Version kompatibel ist und wie Kompatibilitätsprobleme behandelt werden können.
-
-
-
-
-

SDK-Spracheigenschaften

-
-
-
-
- Arbeiten mit Events
-
- Erstelle Event-basierten Code mit Hilfe des SDK-Eventausgabe-Frameworks.
-
-
-
-
-
- Zwei Arten von Scripts
-
- Dieser Artikel erklärt die Unterschiede zwischen den vom Haupt-Code des Add-ons verwendbaren APIs und von denen, die von einem Content-Script verwendet werden können.
-
-
-
-
-

Content-Scripts

-
-
-
-
- Einführung in Content-Scripts
-
- Eine Übersicht über Content-Scripts.
-
- Laden von Content-Scripts
-
- Laden von Content-Scripts in Webseiten, Einbindung entweder von Strings oder von eigenen Dateien und Festlegen des Ausführungszeitpunktes.
-
- Auf das DOM zugreifen
-
- Informationen über den Zugriff von Content-Scripts auf das DOM (Document Object Model).
-
- Kommunikation mit anderen Scripts
-
- Erfahre, wie ein Content-Script mit der main.js-Datei, mit anderen Content-Scripts und von der Webseite selbst geladenen Scripts kommunizieren kann.
-
-
-
-
-
- Verwendung von "port"
-
- Kommunikation zwischen einem Content-Script und den anderen Bestandteilen des Add-ons über das port-Objekt.
-
- Verwendung von "postMessage()"
-
- Kommunikation zwischen einem Content-Script und den anderen Bestandteilen des Add-ons über die postMessage()-API und ein Vergleich dieser Technik mit dem port-Objekt.
-
- Domainübergreifende Content-Scripts
-
- Lerne, wie man Content-Scripts dazu befähigt, mit Inhalten von anderen Domains zu interagieren.
-
- Reddit-Beispiel
-
- Ein einfaches Add-on mit Content-Scripts.
-
-
-
-
-

XUL-Portierung

-
-
-
-
- XUL Portierungsleitfaden
-
- Techniken zum Portieren eines XUL Add-ons auf das SDK.
-
- XUL versus SDK
-
- Ein Vergleich der Stärken und Schwächen des SDK's mit denen der traditionellen XUL-basierten Add-ons.
-
-
-
-
-
- Portierungs-Beispiel
-
- Ein Walkthrough durch das Portieren eines relativ einfachen XUL-basierten Add-ons auf das SDK.
-
-
-
diff --git a/files/de/mozilla/add-ons/sdk/index.html b/files/de/mozilla/add-ons/sdk/index.html deleted file mode 100644 index 4a73b5fbeb..0000000000 --- a/files/de/mozilla/add-ons/sdk/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Add-on SDK -slug: Mozilla/Add-ons/SDK -translation_of: Archive/Add-ons/Add-on_SDK ---- -

Das Add-on SDK ermöglicht es, Add-ons für Firefox unter Verwendung der Standard-Webtechnologien zu entwickeln: JavaScript, HTML und CSS. Das SDK beinhaltet JavaScript APIs zum Erstellen, Ausführen, Testen und Packen von Add-ons.

- -
-

Tutorials

- -
- - -
-
-
Benutzeroberflächen
-
Erstelle Benutzeroberflächenkomponenten wie Toolbar-Buttons, Kontextmenüs, Menüeinträge oder Dialoge.
-
Inhalte von Webseiten bearbeiten
-
Inhalte von Seiten über ein spezifisches URL-Muster oder dynamisch einen bestimmten Tab bearbeiten.
-
Zusammenfassung
-
Walk-through durch das Beispiel-Add-on "Annotator".
-
-
-
- -
-

Leitfäden

- -
-
-
-
Zum SDK beitragen
-
Trage zum SDK bei und lerne die wichtigsten im SDK-Quelltext verwendeten Objekte wie Module, Klassen und Vererbung, private Eigenschaften und Inhaltsabläufe kennen.
-
SDK-Aufbau
-
Verstehe die Technologien, die dem SDK zugrunde liegen: Modulstruktur, Programm-ID und die Regeln, die die Firefox-Kompatibilität definieren.
-
Content-Scripts
-
Eine detaillierte Anleitung zum Arbeiten mit Content-Scripts. Erklärt wird das Laden von Content-Scripts, auf welche Objekte ein Content-Script zugreifen kann und wie man zwischen einem Content-Script und dem Rest des Add-ons kommunizieren kann.
-
-
- - -
- -
-

Referenzen

- -
-
-
-
High-Level-APIs
-
Dokumentation der High-Level-SDK-APIs.
-
Tools-Referenz
-
Dokumentation des cfx-Tools zum Entwickeln, Testen und Packen von Add-ons, der Konsole, die global zum Loggen verwendet wird und der package.json-Datei.
-
-
- -
-
-
Low-Level-APIs
-
Dokumentation der Low-Level-SDK-APIs.
-
-
-
- -

 

diff --git a/files/de/mozilla/add-ons/sdk/tools/index.html b/files/de/mozilla/add-ons/sdk/tools/index.html deleted file mode 100644 index 8c67b4644e..0000000000 --- a/files/de/mozilla/add-ons/sdk/tools/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Tools -slug: Mozilla/Add-ons/SDK/Tools -tags: - - Add-on SDK - - CFX - - JPM - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons/Add-on_SDK/Tools ---- -

Articles listed here provide a reference for the SDK's tools:

- -

{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Tools", 7) }}

diff --git a/files/de/mozilla/add-ons/sdk/tools/jpm/index.html b/files/de/mozilla/add-ons/sdk/tools/jpm/index.html deleted file mode 100644 index 86e6a82aa3..0000000000 --- a/files/de/mozilla/add-ons/sdk/tools/jpm/index.html +++ /dev/null @@ -1,497 +0,0 @@ ---- -title: jpm -slug: Mozilla/Add-ons/SDK/Tools/jpm -translation_of: Archive/Add-ons/Add-on_SDK/Tools/jpm ---- -
-

Sie können jpm ab Firefox 38 verwenden.

- -

Dieser Artikel bezieht sich auf jpm.

-
- -

Der Node-basierte Ersatz für cfx, erlaubt das Testen, Starten und Paketieren von Add-Ons.

- -

Schauen Sie sich das jpm-Tutorial als Einführung an.

- -

jpm wird folgendermaßen verwendet:

- -
jpm [command] [options]
-
- -

jpm unterstützt die folgenden globalen Optionen:

- -
-h, --help        - Zeigt eine Hilfsnachricht
--V, --version     - Anzeigen der JPM Versionsnummer
-
- -

Installation

- -

jpm wird über den Node Package Manager (npm) installiert. npm ist im Installer von Node.js enthalten, welchen Sie auf nodejs.org finden.

- -

Nachdem Sie npm installiert haben, können Sie jpm wie jedes andere npm-Paket installieren:

- -
npm install jpm -g
- -

Abhängig von ihren Einstellungen müssen Sie den Befehl möglicherweise mit Adminrechten ausführen:

- -
sudo npm install jpm -g
- -

Tippen Sie folgendes in die Eingabeaufforderung:

- -
jpm
- -

Es sollte sich eine Zusammenfassung der jpm-Kommandos öffnen. Im Gegensatz zu cfx ist jpm in jeder Eingabeaufforderung verwendbar, solange Sie es mit der Option -g installiert haben.

- -

Probleme?

- -

Falls Sie die Zusammenfassung nicht verstehen, fragen Sie nach Hilfe. SDK-Nutzer und Teammitglieder des Projekts diskutieren über Probleme und Vorschläge in der  Projekt- Mailingliste. Andere könnten das selbe Problem wie Sie gehabt haben, also suchen Sie bitte zuerst im Listenarchiv. Sie können mit anderen SDK-Nutzern im Kanal #jetpack in Mozillas IRC-Netzwerk chatten.

- -

Command reference

- -

There are six jpm commands:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
jpm initCreate a skeleton add-on as a starting point for your own add-on.
jpm runLaunch an instance of Firefox with your add-on installed.
jpm testRuns your add-on's unit tests.
jpm xpiPackage your add-on as an XPI file, which is the install file format for Firefox add-ons.
jpm postPackage your add-on as an XPI file, then post it to some url.
jpm watchpostPackage your add-on as an XPI file whenever there is a file changed, and post that to some url.
- -

jpm init

- -

This command initializes a new add-on from scratch.

- -

Create a new directory, change into it, and run jpm init.

- -
mkdir my-addon
-cd my-addon
-jpm init
- -

You'll then be asked to supply some information about your add-on: this will be used to create your add-on's package.json file.

- - - -

Most of these fields have a default, which is shown in brackets after the question. If you just press Enter, your add-on will get the default value.

- -

Once you've supplied a value or accepted the default for these properties, you'll be shown the complete contents of "package.json" and asked to accept it.

- -

Then jpm will create an skeleton add-on, as a starting point for your own add-on development, with the following file structure:

- - - -

jpm run

- -

This command runs a new instance of Firefox with the add-on installed:

- -
jpm run
- -

jpm run accepts the following options:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-b --binary BINARY -

Use the version of Firefox specified in BINARY. BINARY may be specified as a full path or as a path relative to the current directory.

- -
-jpm run -b /path/to/Firefox/Nightly
- See Selecting a browser version.
--binary-args CMDARGS -

Pass extra arguments to Firefox.

- -

For example, to pass the -jsconsole argument to Firefox, which will launch the Browser Console, try the following:

- -
-jpm run --binary-args -jsconsole
- -

To pass multiple arguments, or arguments containing spaces, quote them:

- -
-jpm run --binary-args '-url mzl.la -jsconsole'
-
--debugRun the add-on debugger attached to the add-on.
-o --overload PATH -

Rather than use the SDK modules built into Firefox, use the modules found at PATH. If -o is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.

- -

See Overloading the built-in modules for more information.

-
-p --profile= PROFILE -

By default, jpm uses a clean temporary Firefox profile each time you call jpm run. Use the --profile option to instruct jpm to launch Firefox with an existing profile.

- -

The PROFILE value may be a profile name or the path to the profile.

- -

See Using profiles for more information.

-
-v --verboseVerbose operation.
--no-copy -
Use with caution because jpm run|test changes many preferences, never use with your main profile.
- -
This only applies when --profile is used.
- Disables the copying of the profile used, which allows one to reuse a profile.
 
- -

jpm test

- -

Use this command to run an add-on's unit tests. It will:

- - - -
jpm test
-
- -

See the tutorial on unit testing and the reference documentation for the assert module for more details on this.

- -

jpm test accepts the following options:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-b --binary BINARY -

Use the version of Firefox specified in BINARY. BINARY may be specified as a full path or as a path relative to the current directory.

- -
-jpm test -b /path/to/Firefox/Nightly
- -

See Selecting a browser version.

-
--binary-args CMDARGS -

Pass extra arguments to Firefox.

- -

For example, to pass the -jsconsole argument to Firefox, which will launch the Browser Console, try the following:

- -
-jpm test --binary-args -jsconsole
- -

To pass multiple arguments, or arguments containing spaces, quote them:

- -
-jpm test --binary-args '-url mzl.la -jsconsole'
-
--debugRun the add-on debugger attached to the add-on.
-f --filter FILE[:TEST] -

Only run tests whose filenames match FILE and optionally match TEST, both regexps.

- -
-jpm test --filter base64:btoa
- -

The above command only runs tests in files whose names contain "base64", and in those files only runs tests whose names contain "btoa".

-
-o --overload PATH -

Rather than use the SDK modules built into Firefox, use the modules found at PATH. If -o is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.

- -

See Overloading the built-in modules for more information.

-
-p --profile PROFILE -

By default, jpm uses a clean temporary Firefox profile each time you call jpm run. Use the --profile option to instruct jpm to launch Firefox with an existing profile.

- -

The PROFILE value may be a profile name or the path to the profile.

- -

See Using profiles for more information.

-
--stop-on-error -

By default jpm test keeps running tests even after tests fail. Specify --stop-on-error to stop running tests after the first failure:

- -
-jpm test --stop-on-error
-
--tbplPrint test output in Treeherder format
--times NUMBER -

Run tests NUMBER of times:

- -
-jpm test --times 2
-
-v --verboseVerbose operation.
--no-copy -
Use with caution because jpm run|test changes many preferences, never use with your main profile.
- -
This only applies when --profile is used.
- Disables the copying of the profile used, which allows one to reuse a profile.
- -

jpm xpi

- -

This command packages the add-on as an XPI file, which is the install file format for Mozilla add-ons.

- -
jpm xpi
- -

It looks for a file called package.json in the current directory and creates the corresponding XPI file. It ignores any ZIPs or XPIs in the add-on's root, and any test files.

- -

Once you have built an XPI file you can distribute your add-on by submitting it to addons.mozilla.org.

- -

jpm xpi accepts the following option:

- - - - - - - - -
-v --verbose -

Verbose operation:

- -
-jpm xpi -v
-
- -

jpm post

- -

This command packages the add-on as an XPI file, the posts it to some url.

- -
jpm post
- -

It looks for a file called package.json in the current directory and creates a XPI file with which to post to the --post-url.

- -

jpm post accepts the following options:

- - - - - - - - - - - - -
--post-url URL -

The url to post the extension to after creating a XPI.

- -
-jpm post --post-url http://localhost:8888/
- -

See Using Post and Watchpost for more information.

-
-v --verbose -

Verbose operation:

- -
-jpm post --post-url http://localhost:8888/ -v
-
- -

jpm watchpost

- -

This command packages the add-on as an XPI file, the posts it to some url whenever a file in the current working directory changes.

- -
jpm watchpost
- -

Creates a XPI whenever a file in the current working directory changes and posts that to the --post-url.

- -

jpm watchpost accepts the following options:

- - - - - - - - - - - - -
--post-url URL -

The url to post the extension to after creating a XPI.

- -
-jpm watchpost --post-url http://localhost:8888/
- -

See Using Post and Watchpost for more information.

-
-v --verbose -

Verbose operation:

- -
-jpm watchpost --post-url http://localhost:8888/ -v
-
- -

Techniques

- -

Selecting a browser version

- -

By default, jpm run and jpm test will run the release version of Firefox. You can instruct jpm to use a different version in one of two ways:

- - - -

Using .jpmignore to ignore files

- -

Using .jpmignore is similar to using .gitignore with git, .hgignore with Mercurial, or .npmignore with npm. By using this file you can let jpm know which files you would like it to ignore when building a .xpi file with jpm xpi.

- -

Here is an example:

- -
# Ignore .DS_Store files created by mac
-.DS_Store
-
-# Ignore any zip or xpi files
-*.zip
-*.xpi
-
- -

A .jpmignore file with the above contents would ignore all zip files and .DS_Store files from the xpi generated by jpm xpi.

- -

Using profiles

- -

By default, jpm run uses a new profile each time it is executed. This means that any profile-specific data entered from one run of jpm will not, by default, be available in the next run.

- -

This includes, for example, any extra add-ons you installed, or your history, or any data stored using the simple-storage API.

- -

To make jpm use a specific profile, pass the --profile option, specifying the name of the profile you wish to use, or the path to the profile.

- -
jpm run --profile boogaloo
-
- -
jpm run --profile path/to/boogaloo
- -

If you supply --profile but its argument is not the name of or path to an existing profile, jpm will open the profile manager,  enabling you to select and existing profile or create a new one:

- -
jpm run --profile i-dont-exist
- -

Developing without browser restarts

- -

Because jpm run restarts the browser each time you invoke it, it can be a little cumbersome if you are making very frequent changes to an add-on. An alternative development model is to use the Extension Auto-Installer add-on: this listens for new XPI files on a specified port and installs them automatically. That way you can test new changes without needing to restart the browser:

- - - -

You could even automate this workflow with a simple script. For example:

- -
jpm watchpost --post-url http://localhost:8888/
-
- -

Note that the logging level defined for the console is different when you use this method, compared to the logging level used when an add-on is run using jpm run. This means that if you want to see output from console.log() messages, you'll have to tweak a setting. See the documentation on logging levels for the details on this.

- -

Overloading the built-in modules

- -

The SDK modules you use to implement your add-on are built into Firefox. When you run or package an add-on using jpm run or jpm xpi, the add-on will use the versions of the modules in the version of Firefox that hosts it.

- -

As an add-on developer, this is usually what you want. But if you're developing the SDK modules themselves, of course, it isn't. In this case you need to:

- - - -
jpm run -o
-
- -

This instructs jpm to use the local copies of the SDK modules, not the ones in Firefox. If you don't want to set the JETPACK_ROOT environment variable, you can pass the location of your copy of the SDK modules along with -o:

- -
jpm run -o "/path/to/SDK/"
diff --git a/files/de/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html b/files/de/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html deleted file mode 100644 index c5f41a2baf..0000000000 --- a/files/de/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Einen Button zur Toolbar hinzufügen -slug: Mozilla/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Adding_a_Button_to_the_Toolbar ---- -
- Für dieses Tutorial wird die erfolgreiche Installation des SDK und erlernte Vorkenntnisse von cfx vorrausgesetzt.
-
-

Dieses Widget wird ab Firefox 29 nicht mehr verwendet/funktionieren. Um Buttons in Firefox 29 (+) hinzuzufügen, benutze bitte die UI Module, besonders die Action-Buttons oder Toogle-Buttons APIs.

-
-

Um einen Button zur Toolbar hinzuzufügen, verwende das widget-Module.

-

Erstelle ein neues Verzeichnis, navigiere mit der Eingabeaufforderung in dieses Verzeichnis, und gib cfx init ein. Dann öffne die Datei "main.js" im "lib"-Verzeichnis und gib folgenden Code ein:

-
var widgets = require("sdk/widget");
-var tabs = require("sdk/tabs");
-
-var widget = widgets.Widget({
-  id: "mozilla-link",
-  label: "Mozilla website",
-  contentURL: "http://www.mozilla.org/favicon.ico",
-  onClick: function() {
-    tabs.open("http://www.mozilla.org/");
-  }
-});
-

Das Widget wird wird zur AddOn-Leiste (unten am Fensterrand) hinzugefügt:

-

Du kannst leider nicht die Standart-Position des Icons ändern, aber der User kann den Standort jederzeit verändern. Das id-Attribut ist zwingend erforderlich. Es speichert die Position des Icons und sollte nicht verändert weren, da sonst wieder der Standart wiederhergestellt wird.

-

Beim Aktivieren wird dieser Link geöffnet: http://www.mozilla.org.

-
-  
-

Das Icon angeben (URL)

-

Wenn Du dieses Widget verwendest, kannst Du das Icon via contentURL: anzeigen. Das kann eine lokale, aber auch eine externe Datei sein. Allerdings lässt es sich nicht empfehlen Icons im Internet zu verwenden, da bei einem Serverausfall die Grafik nicht geladen werden kann. Das Beispiel verwendet eine Grafik namens "my-icon.png" aus dem AddOn-Verzeichnis (data):

-
-
var widgets = require("sdk/widget");
-var tabs = require("sdk/tabs");
-var self = require("sdk/self");
-
-var widget = widgets.Widget({
-  id: "mozilla-link",
-  label: "Mozilla website",
-  contentURL: self.data.url("my-icon.png"),
-  onClick: function() {
-    tabs.open("http://www.mozilla.org/");
-  }
-});
-
-

Du kannst das Icon immer mit contentURL ändern!

-

Responding To the User

-

You can listen for click, mouseover, and mouseout events by passing handler functions as the corresponding constructor options. The widget example above assigns a listener to the click event using the onClick option, and there are similar onMouseover and onMouseout options.

-

To handle user interaction in more detail, you can attach a content script to the widget. Your add-on script and the content script can't directly access each other's variables or call each other's functions, but they can send each other messages.

-

Here's an example. The widget's built-in onClick property does not distinguish between left and right mouse clicks, so to do this we need to use a content script. The script looks like this:

-
window.addEventListener('click', function(event) {
-  if(event.button == 0 && event.shiftKey == false)
-    self.port.emit('left-click');
-  if(event.button == 2 || (event.button == 0 && event.shiftKey == true))
-    self.port.emit('right-click');
-    event.preventDefault();
-}, true);
-

It uses the standard DOM addEventListener() function to listen for click events, and handles them by sending the corresponding message to the main add-on code. Note that the messages "left-click" and "right-click" are not defined in the widget API itself, they're custom events defined by the add-on author.

-

Save this script in your data directory as "click-listener.js".

-

Next, modify main.js to:

- -
var widgets = require("sdk/widget");
-var tabs = require("sdk/tabs");
-var self = require("sdk/self");
-
-var widget = widgets.Widget({
-  id: "mozilla-link",
-  label: "Mozilla website",
-  contentURL: "http://www.mozilla.org/favicon.ico",
-  contentScriptFile: self.data.url("click-listener.js")
-});
-widget.port.on("left-click", function(){
-  console.log("left-click");
-});
-widget.port.on("right-click", function(){
-  console.log("right-click");
-});
-

Now execute cfx run again, and try right- and left-clicking on the button. You should see the corresponding string written to the command shell.

-

Attaching a Panel

- -

-

If you supply a panel object to the widget's constructor, then the panel will be shown when the user clicks the widget:

-
var data = require("sdk/self").data;
-var clockPanel = require("sdk/panel").Panel({
-  width:215,
-  height:160,
-  contentURL: data.url("clock.html")
-});
-require("sdk/widget").Widget({
-  id: "open-clock-btn",
-  label: "Clock",
-  contentURL: data.url("History.png"),
-  panel: clockPanel
-});
-

To learn more about working with panels, see the tutorial on displaying a popup.

-

Learning More

-

To learn more about the widget module, see its API reference documentation.

-

To learn more about content scripts, see the content scripts guide.

diff --git a/files/de/mozilla/add-ons/sdk/tutorials/getting_started/index.html b/files/de/mozilla/add-ons/sdk/tutorials/getting_started/index.html deleted file mode 100644 index dbafb57553..0000000000 --- a/files/de/mozilla/add-ons/sdk/tutorials/getting_started/index.html +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: Getting started -slug: Mozilla/Add-ons/SDK/Tutorials/Getting_started -translation_of: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29 ---- -

This tutorial walks through creating a simple add-on using the SDK.

- -

Prerequisites

- -

To create add-ons for Firefox using the SDK, you'll first need to follow the instructions to install and activate the SDK. Once you've done that, you'll be looking at a command prompt.

- -

Initializing an empty add-on

- -

In the command prompt, create a new directory. The directory doesn't have to be under the SDK root: you can create it anywhere you like. Navigate to it, type cfx init, and hit enter:

- -
mkdir my-addon
-cd my-addon
-cfx init
-
- -

You'll see some output like this:

- -
* lib directory created
-* data directory created
-* test directory created
-* doc directory created
-* README.md written
-* package.json written
-* test/test-main.js written
-* lib/main.js written
-* doc/main.md written
-Your sample add-on is now ready for testing:
-try "cfx test" and then "cfx run". Have fun!"
-
- -

Implementing the add-on

- -

Now you can write the add-on's code, which goes in the "main.js" file in your "lib" directory. This file was created for you in the previous step. Open it and add the following code:

- -
var buttons = require('sdk/ui/button/action');
-var tabs = require("sdk/tabs");
-
-var button = buttons.ActionButton({
-  id: "mozilla-link",
-  label: "Visit Mozilla",
-  icon: {
-    "16": "./icon-16.png",
-    "32": "./icon-32.png",
-    "64": "./icon-64.png"
-  },
-  onClick: handleClick
-});
-
-function handleClick(state) {
-  tabs.open("https://www.mozilla.org/");
-}
-
- -

Save the file.

- -

Next, save these three icon files to the "data" directory:

- - - - - - - - - - - - - - - - -
icon-16.png
icon-32.png
icon-64.png
- -

Back at the command prompt, type:

- -
cfx run
-
- -

This is the SDK command to run a new instance of Firefox with your add-on installed. When Firefox launches, in the top-right corner of the browser you'll see an icon with the Firefox logo. Click the icon, and a new tab will open with https://www.mozilla.org/ loaded into it.

- -
-

You might see an error message like this when you type cfx run:

- -
A given cfx option has an inappropriate value:
-  ZIP does not support timestamps before 1980
- -

If so, you've run into bug 1005412, meaning that the icon files you downloaded are given a timestamp of 1970. Until this bug is fixed, the workaround is to use the touch command to update the timestamps:

- -
touch icon-16.png
-
- -

That's all this add-on does. It uses two SDK modules: the action button module, which enables you to add buttons to the browser, and the tabs module, which enables you to perform basic operations with tabs. In this case, we've created a button whose icon is the Firefox icon, and added a click handler that loads the Mozilla home page in a new tab.

- -

Try editing this file. For example, we could change the page that gets loaded:

- -
var buttons = require('sdk/ui/button/action');
-var tabs = require("sdk/tabs");
-
-var button = buttons.ActionButton({
-  id: "mozilla-link",
-  label: "Visit Mozilla",
-  icon: {
-    "16": "./icon-16.png",
-    "32": "./icon-32.png",
-    "64": "./icon-64.png"
-  },
-  onClick: handleClick
-});
-
-function handleClick(state) {
-  tabs.open("https://developer.mozilla.org/");
-}
- -

At the command prompt, execute cfx run again. This time clicking it takes you to https://developer.mozilla.org/.

- -

Packaging the add-on

- -

When you've finished the add-on and are ready to distribute it, you'll need to package it as an XPI file. This is the installable file format for Firefox add-ons. You can distribute XPI files yourself or publish them to https://addons.mozilla.org so other users can download and install them.

- -

To build an XPI, just execute the command cfx xpi from the add-on's directory:

- -
cfx xpi
-
- -

You should see a message like:

- -
Exporting extension to my-addon.xpi.
-
- -

To test that this worked, try installing the XPI file in your own Firefox installation. You can do this by pressing the Ctrl+O key combination (Cmd+O on Mac) from within Firefox, or selecting the "Open" item from Firefox's "File" menu. This will bring up a file selection dialog; navigate to the "my-addon.xpi" file, open it and follow the prompts to install the add-on.

- -

Summary

- -

In this tutorial we've built and packaged an add-on using three commands:

- - - -

These are the three main commands you'll use when developing SDK add-ons. There's comprehensive reference documentation covering all the commands you can use and all the options they take.

- -

The add-on code itself uses two SDK modules, action button and tabs. There's reference documentation for all the high-level and low-level APIs in the SDK.

- -

What's next?

- -

To get a feel for some of the things you can do with the SDK APIs, try working through some of the tutorials.

- -

Advanced techniques

- -

Overriding the built-in modules

- -

The SDK modules you use to implement your add-on are built into Firefox. When you run or package an add-on using cfx run or cfx xpi, the add-on will use the versions of the modules in the version of Firefox that hosts it.

- -

As an add-on developer, this is usually what you want. But if you're developing the SDK modules themselves, of course, it isn't. In this case it's assumed that you have checked out the SDK from its GitHub repo and will have run the bin/activate script from the root of your checkout.

- -

Then when you invoke cfx run or cfx xpi, you pass the "-o" option:

- -
cfx run -o
-
- -

This instructs cfx to use the local copies of the SDK modules, not the ones in Firefox.

- -

Developing without cfx run

- -

Because cfx run restarts the browser each time you invoke it, it can be a little cumbersome if you are making frequent changes to an add-on. An alternative development model is to use the Extension Auto-Installer add-on: this listens for new XPI files on a specified port and installs them automatically. That way you can test new changes without needing to restart the browser:

- - - -

You could even automate this workflow with a simple script. For example:

- -
while true ; do cfx xpi ; wget --post-file=codesy.xpi http://localhost:8888/ ; sleep 5 ; done
-
- -

Note that the logging level defined for the console is different when you use this method, compared to the logging level used when an add-on is run using cfx run. This means that if you want to see output from console.log() messages, you'll have to tweak a setting. See the documentation on logging levels for the details on this.

- -

Another example using grunt and grunt-shell:

- -
module.exports = function(grunt) {
-  'use strict';
-  require('matchdep').filterDev('grunt-!(cli)').forEach(grunt.loadNpmTasks);
-  grunt.initConfig({
-    shell: {
-      xpi: {
-        command: [
-          'cd pluginpath',
-          'cfx xpi',
-          'wget --post-file=pluginname.xpi http://localhost:8888/ || echo>/dev/null'
-        ].join('&&')
-      }
-    },
-    watch: {
-      xpi: {
-        files: ['pluginpath/**'],
-        tasks: ['shell:xpi']
-      }
-    }
-  });
-
-  grunt.loadNpmTasks('grunt-contrib-watch');
-  grunt.loadNpmTasks('grunt-shell');
-  grunt.registerTask('default', ['watch']);
-};
diff --git a/files/de/mozilla/add-ons/sdk/tutorials/index.html b/files/de/mozilla/add-ons/sdk/tutorials/index.html deleted file mode 100644 index 6eb7e95b49..0000000000 --- a/files/de/mozilla/add-ons/sdk/tutorials/index.html +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Tutorials -slug: Mozilla/Add-ons/SDK/Tutorials -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials ---- -

Auf dieser Seite wird gezeigt, wie man spezifische praktische Aufgaben unter Verwendung des SDKs bewältigen kann.

-
-

Erste Schritte

-
-
-
-
- Installation
-
- Download, Installation und Einrichtung des SDKs unter Windows, OS X und Linux.
-
-
-
- Fehlerbehebung
-
- Lösungsansätze zum Beheben klassischer Probleme und Möglichkeiten zum Erhalten weiterer Hilfe.
-
-
-
-
-
- Erste Schritte mit cfx
-
- Die elementaren cfx-Befehle zum Erstellen von Add-ons.
-
-
-
-
-

Benutzeroberflächen erstellen

-
-
-
-
- Toolbar-Button hinzufügen
-
- Einen Button zur Firefox-Toolbar hinzufügen.
-
- Hauptmenü erweitern
-
- Items den Hauptmenüs von Firefox hinzufügen.
-
-
-
-
-
- Popups anzeigen
-
- Einen Popup-Dialog unter Verwendung von HTML und JavaScript anzeigen.
-
- Kontextmenü erweitern
-
- Items dem Kontextmenü von Firefox hinzufügen.
-
-
-
-
-

Interagieren mit dem Browser

-
-
-
-
- Webseiten öffnen
-
- Mit Hilfe des tabs-Moduls eine Seite in einem neuen Tab oder einem neuen Fenster öffnen und auf deren Inhalt zugreifen.
-
- Auf das Laden von Webseiten reagieren
-
- Mit dem tabs-Modul erkennen, wenn neue Webseiten geladen werden und auf deren Inhalte zugreifen.
-
-
-
-
-
- Geöffnete Tabs auflisten
-
- Mit dem tabs-Modul geöffnete Tabs auflisten und auf ihre Inhalte zugreifen.
-
-
-
-
-

Inhalte von Webseiten bearbeiten

-
-
-
-
- Webseiten basierend auf deren URL bearbeiten
-
- URL-Filter für Webseiten erstellen und ein Script darin ausführen, sobald eine Seite geladen wird, deren URL mit einer URL im Filter übereinstimmt.
-
-
-
-
-
- Aktive Webseite bearbeiten
-
- Ein Script dynamisch in der aktuell aktiven Website ausführen.
-
-
-
-
-

Entwicklungstechnologien

-
-
-
-
- Loggen
-
- Nachrichten auf der Konsole für Diagnosezwecke ausgeben.
-
- Wiederverwendbare Module erstellen
-
- Gliedere dein Add-on in einzelne Module und erleichtere somit das Entwickeln, Debuggen und Erhalten des Add-ons. Erstelle wiederverwendbare Pakete, die deine Module enthalten, damit auch andere Add-on-Entwickler diese verwenden können.
-
- Testen der Bestandteile
-
- Erstellen und Ausführen von Tests mit dem SDK-test-Framework.
-
- Chrome-Autorität
-
- Erhalte Zugriff auf das Components-Objekt und erlaube deinem Add-on XPCOM-Objekte zu laden und zu verwenden.
-
- Erstellen von benutzerdefinierten Events
-
- Erlaube deinen erstellten Objekten, eigene Events auszugeben.
-
-
-
-
-
- Auf das Starten und Beenden des Add-ons reagieren
-
- Werde benachrichtigt, wenn ein Add-on von Firefox gestartet oder beendet wird und übergebe Argumente an das Add-on über die Kommandozeile.
-
- Module von Drittanbietern verwenden
-
- Installation und Verwendung von zusätzlichen Modulen, die nicht im SDK enthalten sind.
-
- Lokalisierung
-
- Entwicklung lokalisierbarer Add-ons.
-
- Entwicklung für mobile Endgeräte
-
- Entwicklung von Add-ons für Firefox Mobile für Android.
-
-
-
-
-

Zusammenfassung

-
-
-
-
- Add-on "Annotator"
-
- Walk-through durch das Beispiel-Add-on "Annotator".
-
-
-
-

 

diff --git a/files/de/mozilla/add-ons/sdk/tutorials/installation/index.html b/files/de/mozilla/add-ons/sdk/tutorials/installation/index.html deleted file mode 100644 index 28e899226e..0000000000 --- a/files/de/mozilla/add-ons/sdk/tutorials/installation/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Installation -slug: Mozilla/Add-ons/SDK/Tutorials/Installation -translation_of: Mozilla/Add-ons/SDK/Tools/jpm#Installation ---- -
-

Die cfx Installation ist veraltet. Sie sollten stattdessen  jpm benutzen.

- -

Mehr Informationen finden Sie unter JPM replaces CFX for Firefox 38.

-
- -

Vorraussetzungen

- -

Um mit dem Add-on SDK zu entwickeln, brauchen Sie:

- - - -

Installation

- -

Installation auf FreeBSD/ OS X / Linux

- -

Entpacken Sie die Dateien an einen beliebigen Ort und navigieren Sie mit einer Kommandozeile/Shell in das Stammverzeichnis der SDK. Zum Beispiel so:

- -
tar -xf addon-sdk.tar.gz
-cd addon-sdk
-
- -

Danach aktivieren Sie so die SDK, wenn Sie ein Bash Benutzer sind (was die meisten sind):

- -
source bin/activate
-
- -

Als nicht-Bash Benutzer, müssen Sie folgenden Befehl verwenden:

- -
bash bin/activate
-
- -

In Ihrer Eingabeaufforderung sollten Sie jetzt einen neuen Prefix haben, der den Namen des SDK's root Verzeichniss hat:

- -
(addon-sdk)~/mozilla/addon-sdk >
-
- -

Installation auf Mac mit Homebrew

- -

Falls Sie ein Mac Benutzer sind, können Sie die SDK auch mithilfe von Homebrew und dem folgenden Befehl installieren:

- -
brew install mozilla-addon-sdk
- -

Sobald die Installation erfolgreich abgeschlossen wurde, können Sie das cfx Programm jederzeit in der Kommandozeile verwenden und benötigen keine vorherige Aktivierung.

- -

Installation auf Windows

- -

Entpacken Sie die Dateien an einen beliebigen Ort und navigieren Sie mit einer Kommandozeile/Shell in das Stammverzeichnis der SDK. Zum Beispiel so:

- -
7z.exe x addon-sdk.zip
-cd addon-sdk
-
- -

Dann führen Sie folgenden Befehl aus:

- -
bin\activate
-
- -

In Ihrer Eingabeaufforderung sollten Sie jetzt einen neuen Prefix haben, der den Namen des SDK's root Verzeichniss hat:

- -
(C:\Users\mozilla\sdk\addon-sdk) C:\Users\Work\sdk\addon-sdk>
-
- -

Plausibilitätsprüfung

- -

Rufen Sie diesen Befehl in einer Kommandozeile auf:

- -
cfx
-
- -

Es sollte eine Meldung produzieren, die in etwa so aussieht, gefolgt von einer Auflistung der Benutzungsoptionen:

- -
Usage: cfx [options] [command]
-
- -

Das ist das cfx Kommandozeilen Programm. Es ist ihr primäres Interface für das Add-on SDK. Damit können Sie Firefox starten und ihr Add-on testen, ihr Add-on zur Veröffentlichung verpacken, sich Dokumentationen ansehen und Unit tests durchführen.

- -

Nächste Schritte

- -

Schauen Sie sich als nächstes das Tutorial  Getting Started With cfx an, das erklärt, wie man ein Add-on mit dem CFX Tool erstellt.

- -

Fortgeschrittene Themen

- -

Das SDK von Git verwenden

- -

Die SDK wurde in GitHub entwickelt. Statt das verpackte Release zu verwenden, können Sie von GitHub repository den letzten Entwicklungsstand, statt dem offiziellen Release verwenden.

- -

Wenn Sie den letzten Entwicklungsstand verwenden, benötigen Sie eine Nightly Version von Firefox und Sie können keine Add-ons bei addons.mozilla.org (AMO) einreichen, da AMP den offiziellen Release vorraussetzt.

- -

Erweiterungen für AMO von Git Quellen entwickeln

- -

Zum Einreichein bei AMO können nur der neuste git release tag für die Add-On SDK Quelldateien benutzt werden.

- -

Der Gitarchivbefehl wird benötigt um ein Paar  Git Atrributplatzhalter im Git Klonverzeichnis zu erweitern.

- -

git checkout 1.16

- -

git archive 1.16 python-lib/cuddlefish/_version.py | tar -xvf -

- -

Permanente Aktivierung

- -

Sie können die Aktivierung permanent machen, in dem Sie die Variablen in ihrer Umgebung permanent setzen, so dass jede Eingabeaufforderung sie lesen kann. In diesem Fall müssen nicht jedesmal den activate Befehl verwenden, sobald Sie eine neue Eingabeaufforderung öffnen.

- -

Da sich die Anzahl der zu setzenden Variable mit jeder neuen Version des SDK ändern kann, ist es am Besten sich nach den jeweiligen Aktivierungsskripten zu richten um Festzustellen welche Variablen verwendet werden. Die Aktivierung benutzt verschieden Skripte für Bashumgebungen (Linux und OS X) und Windowsumgebungen.

- -

Windows

- -

Bei Windows, benutzt bin\activate die activate.bat Datei. Sie können die Aktivierung permanent machen, indem Sie in der Kommandozeile das setx tool verwenden.

- -

Linux / OS X

- -

Auf Linux und OS X benutz source bin/activate das activate bash Skript. Die Aktivierung kann per ~/.bashrc (Linux) oder ~/.bashprofile (OS X) Permanent gemacht werden.

- -

Eine Alternative ist das Erstellen eines symbolischen Links im Ordner ~/bin, der auf das cfx Programm verweist:

- -
ln -s PATH_TO_SDK/bin/cfx ~/bin/cfx
-
- -

Falls Sie Homebrew zur Installation des SDKs verwenden, werden die Umgebungsvariablen bereits permanent für Sie gesetzt.

- -

activate

- -

Der activate Befehl setzt Umgebungsvariablen, die zur Nutzung der SDK nötig sind. Er setzt die Variablen nur für die aktuelle Kommandozeile. Das heisst, wenn Sie eine neue Kommandozeile öffnen, müssen Sie den Befehl erneut ausführen, bevor Sie die SDK wieder benutzen können.

- -

Das bedeutet, dass Sie mehrere Kopien der SDK an verschiedenen Orten ihrer Festplatte haben können und zwischen diesen wechseln können, oder sogar gleichzeitig in verschiedenen Eingabeaufforderungen aktiviert haben können.

diff --git a/files/de/mozilla/add-ons/sdk/tutorials/mobile_development/index.html b/files/de/mozilla/add-ons/sdk/tutorials/mobile_development/index.html deleted file mode 100644 index 9d33162519..0000000000 --- a/files/de/mozilla/add-ons/sdk/tutorials/mobile_development/index.html +++ /dev/null @@ -1,476 +0,0 @@ ---- -title: Developing for Firefox Mobile -slug: Mozilla/Add-ons/SDK/Tutorials/Mobile_development -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Mobile_development ---- -
-

Developing add-ons for Firefox Mobile is still an experimental feature of the SDK. Although the SDK modules used are stable, the setup instructions and cfx commands are likely to change.

-
-
-

To follow this tutorial you'll need to have installed the SDK and learned the basics of cfx.

-
-

Firefox for Android implements its UI using native Android widgets instead of XUL. With the add-on SDK you can develop add-ons that run on this new version of Firefox Mobile as well as on the desktop version of Firefox.

-

You can use the same code to target both desktop Firefox and Firefox Mobile, and just specify some extra options to cfx run, cfx test, and cfx xpi when targeting Firefox Mobile.

-

Right now not all modules are fully functional, but we're working on adding support for more modules. The tables at the end of this guide list the modules that are currently supported on Firefox Mobile.

-

This tutorial explains how to run SDK add-ons on an Android device connected via USB to your development machine. We'll use the Android Debug Bridge (adb) to communicate between the Add-on SDK and the device.

-

-

It's possible to use the Android emulator to develop add-ons for Android without access to a device, but it's slow, so for the time being it's much easier to use the technique described below.

-

Setting up the Environment

-

First you'll need an Android device capable of running the native version of Firefox Mobile. Then:

- -

On the development machine:

- -

Next, attach the device to the development machine via USB.

-

Now open up a command shell. Android Platform Tools will have installed adb in the "platform-tools" directory under the directory in which you installed the Android SDK. Make sure the "platform-tools" directory is in your path. Then type:

-
adb devices
-
-

You should see some output like:

-
List of devices attached
-51800F220F01564 device
-
-

(The long hex string will be different.)

-

If you do, then adb has found your device and you can get started.

-

Running Add-ons on Android

-

You can develop your add-on as normal, as long as you restrict yourself to the supported modules.

-

When you need to run the add-on, first ensure that Firefox is not running on the device. Then execute cfx run with some extra options:

-
cfx run -a fennec-on-device -b /path/to/adb --mobile-app fennec --force-mobile
-
-

See "cfx Options for Mobile Development" for the details of this command.

-

In the command shell, you should see something like:

-
Launching mobile application with intent name org.mozilla.fennec
-Pushing the addon to your device
-Starting: Intent { act=android.activity.MAIN cmp=org.mozilla.fennec/.App (has extras) }
---------- beginning of /dev/log/main
---------- beginning of /dev/log/system
-Could not read chrome manifest 'file:///data/data/org.mozilla.fennec/chrome.manifest'.
-info: starting
-info: starting
-zerdatime 1329258528988 - browser chrome startup finished.
-
-

This will be followed by lots of debug output.

-

On the device, you should see Firefox launch with your add-on installed.

-

console.log() output from your add-on is written to the command shell, just as it is in desktop development. However, because there's a lot of other debug output in the shell, it's not easy to follow. The command adb logcat prints adb's log, so you can filter the debug output after running the add-on. For example, on Mac OS X or Linux you can use a command like the below to filter only the lines of console output:

-
adb logcat | grep console
-
-

You can experiment with different filter strings on adb logcat to focus in on the lines relevant to you.

-

Running cfx test is identical:

-
cfx test -a fennec-on-device -b /path/to/adb --mobile-app fennec --force-mobile
-
-

cfx Options for Mobile Development

-

As you see in the quote above, cfx run and cfx test need four options to work on Android devices.

- - - - - - - - - - - - - - - - - - - - - - - -
-a fennec-on-deviceThis tells the Add-on SDK which application will host the add-on, and should be set to "fennec-on-device" when running an add-on on Firefox Mobile on a device.
-b /path/to/adb -

As we've seen, cfx uses the Android Debug Bridge (adb) to communicate with the Android device. This tells cfx where to find the adb executable.

-

You need to supply the full path to the adb executable.

-
--mobile-app -

This is the name of the Android intent. Its value depends on the version of Firefox Mobile that you're running on the device:

-
    -
  • fennec: if you're running Nightly
  • -
  • fennec_aurora: if you're running Aurora
  • -
  • firefox_beta: if you're running Beta
  • -
  • firefox: if you're running Release
  • -
-

If you're not sure, run a command like this (on OS X/Linux, or the equivalent on Windows):

-
-adb shell pm list packages | grep mozilla
-

You should see "package" followed by "org.mozilla." followed by a string. The final string is the name you need to use. For example, if you see:

-
-package:org.mozilla.fennec
-

...then you need to specify:

-
---mobile-app fennec
-

This option is not required if you have only one Firefox application installed on the device.

-
--force-mobile -

This is used to force compatibility with Firefox Mobile, and should always be used when running on Firefox Mobile.

-
-

Packaging Mobile Add-ons

-

To package a mobile add-on as an XPI, use the command:

-
cfx xpi --force-mobile
-
-

Actually installing the XPI on the device is a little tricky. The easiest way is probably to copy the XPI somewhere on the device:

-
adb push my-addon.xpi /mnt/sdcard/
-
-

Then open Firefox Mobile and type this into the address bar:

-
file:///mnt/sdcard/my-addon.xpi
-
-

The browser should open the XPI and ask if you want to install it.

-

Afterwards you can delete it using adb as follows:

-
adb shell
-cd /mnt/sdcard
-rm my-addon.xpi
-
-

-

Module Compatibility

-

Modules not supported in Firefox Mobile are marked in the tables below.

-

High-Level APIs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addon-pageNot supported
base64Supported
clipboardNot supported
context-menuNot supported
hotkeysSupported
indexed-dbSupported
l10nSupported
notificationsSupported
page-modSupported
page-workerSupported
panelNot supported
passwordsSupported
private-browsingNot supported
querystringSupported
requestSupported
selectionNot supported
selfSupported
simple-prefsSupported
simple-storageSupported
systemSupported
tabsSupported
timersSupported
uiNot supported
urlSupported
widgetNot supported
windowsSupported
-

Low-Level APIs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
loaderSupported
chromeSupported
console/plain-textSupported
console/tracebackSupported
content/contentSupported
content/loaderSupported
content/modSupported
content/workerSupported
core/heritageSupported
core/namespaceSupported
core/promiseSupported
event/coreSupported
event/targetSupported
frame/hidden-frameSupported
frame/utilsSupported
io/byte-streamsSupported
io/fileSupported
io/text-streamsSupported
lang/functionalSupported
lang/typeSupported
loader/cuddlefishSupported
loader/sandboxSupported
net/urlSupported
net/xhrSupported
places/bookmarksNot supported
places/faviconNot supported
places/historyNot supported
platform/xpcomSupported
preferences/serviceSupported
stylesheet/styleSupported
stylesheet/utilsSupported
system/environmentSupported
system/eventsSupported
system/globalsSupported
system/runtimeSupported
system/unloadSupported
system/xul-appSupported
tabs/utilsSupported
test/assertSupported
test/harnessSupported
test/httpdSupported
test/runnerSupported
test/utilsSupported
ui/button/actionNot supported
ui/button/toggleNot supported
ui/frameNot supported
ui/idSupported
ui/sidebarNot supported
ui/toolbarNot supported
util/arraySupported
util/collectionSupported
util/deprecateSupported
util/listSupported
util/match-patternSupported
util/objectSupported
util/uuidSupported
window/utilsSupported
-

 

diff --git a/files/de/mozilla/add-ons/security_best_practices_in_extensions/index.html b/files/de/mozilla/add-ons/security_best_practices_in_extensions/index.html deleted file mode 100644 index 689a9b9679..0000000000 --- a/files/de/mozilla/add-ons/security_best_practices_in_extensions/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Sicherheitsleitfaden bei Erweiterungen -slug: Mozilla/Add-ons/Security_best_practices_in_extensions -tags: - - Add-ons - - Anleitung - - Erweiterungen - - Leitfaden - - Sicherheit -translation_of: Archive/Add-ons/Security_best_practices_in_extensions ---- -

{{ draft() }}

- -

Dieses Dokument ist dazu gedacht, für Entwickler als Leitfaden zu bestmöglichen Vorgensweisen bei der Absicherung ihrer Erweiterung zu dienen. Dein Ziel ist es, deine Nutzer zu schützen. Einige Einträge sind strikte Richtlinien, was Bedeutet, dass wenn Du diesen nicht folgst, dein Add-On im Gegenzug auf Mozilla Add-Ons nicht akzeptiert wird. Andere Einträge sind Empfehlungen. Der Unterschied wird klar gekennzeichnet.

- -

Es ist aus der Perspektive einer Firefox Erweiterung geschrieben, aber die meisten Einträge beziehen sich auf Erweiterungen für andere Mozilla-basierte Applikationen wie Thunderbird oder SeaMonkey.

- -

Handhabung von Webinhalten

- -

Im Allgemeinen ist der beste Weg sicherzustellen, dass der Browser beim Laden von Inhalten nicht kompromittiert wird, dafür zu sorgen, dass diese keine entsprechenden Rechte haben. Eine detailliertere Erklärung dieses Prozesses findet sich unter Webinhalte ohne Sicherheitsprobleme in einer Erweiterung anzeigen.

- -

Die Rechte, die ein Dokument bekommt, hängen auch davon ab, wo es herkommt.  Zum Beispiel: Wenn Du eine chrome URL lädst, bedeutet es, dass der Inhalt in Firefox registriert wurde und vollen Zugriff hat. Inhalt von einer Domain (wie http://example.com) kann nur auf die gleiche Domain zugreifen. Über das File Protocol geladene Dateien können auf solche zugreifen, die auf der Festplatte und anderen lokalen Datenträgern liegen. Es gibt Wege, die content/chrome Sicherheitsbarriere zu umgehen, falls Du zum Beispiel möchtest, dass eine Webseite eine Notifikation an ein Add-On sendet (oder umgekehrt). Ein Weg das zu tun ist es, eigene DOM Events zu nutzen; siehe Interaktionen zwischen priviligierten und nicht-priviligierten Seiten.

- -

Unabhängig davon, wo das Dokument herkommt, kannst du weiter Beschränken, was es kann, indem du Eigenschaften zum Dokumentenhalter - auch bekannt als docshell - zuweist.

- -

frame.docShell.allowImages = false;
- frame.docShell.allowJavascript = false;
- frame.docShell.allowPlugins = false;

- -

Es gibt mehr Beispiele in dem oben gelisteten Dokument. Unter gewissen Umständen möchte man Code in der Erweiterung ausführen, allerdings solltest du ihm eingeschränkte Rechte geben. Einer der besten Wege das zu tun ist Components.utils.evalInSandbox() zu nutzen. Beachte, dass Objekte, die an die Sandbox weitergegeben werden, eingeschränkt sind, aber solche, die wieder herauskommen es nicht sind. Nimm Bezug auf den Artikel, um herauszufinden, wie du solche Tücken vermeidest. Für weitere Informationen, siehe den Abschnitt evalInSandbox.

- -

Die Sidebar: Ein Anwendungsfall

- -

Die Sidebar in Firefox ist dafür gestaltet, sowohl chrome (priviligierte) Inhalte, als auch Web (nichtpriviligierte) Inhalte zu beinhalten - letzteres in Form von Webseiten. Diese Webseiten können von einem Server oder von lokalen HTML Dateien, die mit der Erweiterung gekommen sind, stammen. Für Seiten, die vom Server kommen, musst du Schritte vornehmen, um zu sicherzustellen, dass die Inhalte nicht in den Browser rückrufen und Schadcode ausführen. Hauptsächlich wird dies bewerkstelligt, indem man ein Iframe- oder Browserelement in der Sidebar erstellt und dort die Inhalte lädt. Gebe dem Inhalt ein type="content" Attribut, welches den Code im Wesentlichen sandboxed und alle Rückrufe direkt nach chrome blockiert.

- -

eval() in einer Erweiterung nutzen

- -

Das Nutzen der eingebauten JavaScript Funktion {{jsxref("eval")}} ist im Kontext von Erweiterungen verpönt. Während es einige Fälle gibt, in denen die Nutzung legitim ist, gibt es meist sicherere Alternativen. Dieser Blogeintrag bietet einige exzellente Beispiele, warum man eval() nicht nutzen sollte.

- -

Gesandboxte HTTP Verbindungen

- -

Der Hauptzweck von gesandboxten HTTP Verbindungen ist es, mit einem Webdienst zu kommunizieren, ohne mit im Browser zu der Website/dem Service gesetzten Cookies zu interferieren. Wenn Du zum Beispiel Fotos oder andere Daten von einer photo sharing Seite lädst, kannst du die Verbindungen sandboxen, sodass normales Surfen des Nutzers auf der Webseite nicht beeinflusst wird. Für einen echten Anwendungsfall, siehe diesen Blogeintrag.

- -

Umgang mit Logins und Passwörtern

- -

Es gibt viele Möglichkeiten, Daten in Firefox zu speichern, aber für Logins und Passwörter, solltest Du den Login Manager nutzen. Das ist der gleiche Speicher, welcher Logins von Webseiten beinhaltet und Passwörter können nur abgerufen werden, indem die Kombination von Seite/Username dem Author bekannt sind. Die Gepflogenheit für Erweiterungen ist es, eine chrome URL als den Seitenidentifikator zu nutzen, um Konflikte mit Logins für Seiten zu verhindern. Es könnte der Fall sein, dass deine Erweiterung ein anderes Werkzeug oder andere Werkzeuge für Dienste auf deiner Seite anbietet.

- -

Diese Herangehensweise ist vorzuziehen, da es den Nutzern eine gewohnte Oberfläche für die Interaktion mit Logins über den Firefox Passwort Manager bietet. Wenn Nutzer Logins über die "Neueste Chronik löschen" Option säubern, wird das die Daten deiner Erweiterung miteinbeziehen.

- -

APIs und Umgang mit anderen Daten

- -

Web Inhalte sind mehr als nur Seiten, und mehr und mehr Add-Ons interagieren über das Application Programming Interfae (API) mit Webdiensten.

- - - -

Remote Javascript und -Inhalte

- -

Es gibt eine Zahl von Arten, wie Remotescripte in Erweiterungen genutzt werden können. Sie können in Inhalten eingebettet oder in Intervallen heruntergeladen werden.

- -

Nicht-chrome URLs in chrome XUL oder HTML, so wie im folgenden Beispiel sind nicht erlaubt:

- -

<script type="text/javascript" src="http://mysite.greatsite.com/js/wow-content.js" />

- -

Im Allgemeinen sind Skripte von Remotequellen, die im Kontext von chrome laufen, nicht akzeptabel, da die Quelle der Skripte nie zu 100% garantiert werden kann und sie für Man-In-The-Middle Attacken empfindlich sind. Die einzig legitime Umgebung für Remoteskripte ist es, in einer Sandbox zu laufen. Für mehr Informationen, siehe die Sektion evalInSandbox().

- -

evalInSandbox

- -

Das evalInSandbox Dokument erklärt die Funktion ziemlich gut, also wird es hier keine Wiederholung geben. Die Nützlichkeit und Kraft der Funktionsweise wird von der beliebten Erweiterung Greasemonkey veranschaulich, welche unter der Prämisse arbeitet, dass Skripte heruntergeladen und gespeichert werden, um im Kontext von Webinhalten via der Sandbox injiziert zu werden. Viele Erweiterungen nutzen den Greasemonkey compiler, um die Funktion aus Bequemlichkeit in ihrer Erweiterung zu bündeln. Wenn Du dich entscheidest das zu tun, sei vorsichtig beim Editieren von gebündelten Dateien, insofern als, gut durchdachte Sicherheitsarchitekturen nicht zu verletzen.

- -

Drittanbieter JavaScript

- -

Im Kontext von Webseiten, ist das Nutzen von JavaScripten, welche von anderen geschrieben wurden sehr geläufig. Auch in Add-Ons ist es nicht unbekannt und kann einen nützlichen Weg darstellen, um Codewiederholungen zu vermeiden und die Entwicklung zu beschleunigen. Dieser Artikel ist über Webseiten, aber liefert einige Einsichten in generelle Risiken. Wenn Du andere Skripte einbettest, gibt es eine Reihe von Dingen, die du tun kannst, um ihre Integrität und Sicherheit für Nutzer zu gewährleisten. Als erstes, es immer von einer glaubwürdigen Quelle zu beziehen. Eine andere Sache, die du tun solltest, ist das Namespacen, nur für den Fall, dass andere Add-Ons es inkludieren. Zum Beispiel, wenn Du jQuery nutzt, gibt es da jQuery.noConflict().

- -

Fazit

- -

Sicherheit kann nicht als selbstverständlich angesehen werden und jede Veröffentlichung deines Add-Ons, sollte es eine neue Sicherheitsprüfung geben. Ein guter Ort, um mit Mozillas Sicherheitsmeldungen und Sicherheitsdiskussionen mitzuhalten, ist im  Mozilla Security Blog.

diff --git a/files/de/mozilla/add-ons/themes/obsolete/index.html b/files/de/mozilla/add-ons/themes/obsolete/index.html deleted file mode 100644 index d420b6ebf0..0000000000 --- a/files/de/mozilla/add-ons/themes/obsolete/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Obsolete -slug: Mozilla/Add-ons/Themes/Obsolete -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Add-ons/Themes/Obsolete ---- -

This page collects theme docs that we don't expect will ever be updated, but which we're keeping for the time being as potential source material for updated docs.

-

{{ ListSubPages ("/en-US/Add-ons/Themes/Obsolete", 5) }}

diff --git "a/files/de/mozilla/add-ons/\303\274berliegende_erweiterungen/index.html" "b/files/de/mozilla/add-ons/\303\274berliegende_erweiterungen/index.html" deleted file mode 100644 index 0214de4021..0000000000 --- "a/files/de/mozilla/add-ons/\303\274berliegende_erweiterungen/index.html" +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Legacy-Erweiterungen -slug: Mozilla/Add-ons/überliegende_Erweiterungen -tags: - - Add-ons - - Erweiterungen -translation_of: Archive/Add-ons/Overlay_Extensions ---- -

Diese Seite enthält Links zu der Dokumentation für die approach für Entwickeln von Erweiterungen für Gecko-basierte Applikationen welche benutzen:

- - - -

Priorität zu Firefox 4, und der Gecko-2- Engine welche es ermöglicht, dies war die einzige Möglichkeit Erweiterungen zu entwickeln. Diese Methode wurde sehr übertroffen von Neustartlosen Erweiterungen, und der Add-on SDK, welche an ihrer Spitze gebaut ist. Die privilegierten JavaScript APIs, welche hier beschrieben wurden, können in diesen neueren Typen von Add-ons immer noch benutzt werden.

- -

XUL-Schule

- -

XUL-Schule ist ein verständliches Addonentwicklungstutorial, fokussierend auf die Entwicklung von Firefoxerweiterungen, aber ist meistens übertragbar auf andere Gecko-basierte Applikationen.

- -

Mehr Ressourcen

- -
-
-
-
Setting up your environment
-
Setting up the application for extension development.
-
XUL
-
Tutorials and reference for the user interface language used by XUL extensions.
-
Code snippets
-
Sample code for many of the things you'll want to do.
-
Installing extensions
-
How to install an extension by copying the extension files into the application's install directory.
-
Firefox add-ons developer guide
-
A guide to developing overlay extensions.
-
-
- -
-
-
JavaScript code modules
-
JavaScript modules available to extension developers.
-
Extension preferences
-
How to specify the preferences for your extension that will appear in the Add-ons Manager.
-
Extension packaging
-
How extensions are packaged and installed.
-
Binary Firefox extensions
-
Creating binary extensions for Firefox.
-
-
-
- -

 

diff --git a/files/de/mozilla/chrome_registration/index.html b/files/de/mozilla/chrome_registration/index.html deleted file mode 100644 index 44fb60e26f..0000000000 --- a/files/de/mozilla/chrome_registration/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Chrome registration -slug: Mozilla/Chrome_Registration -translation_of: Mozilla/Chrome_Registration ---- -

Was ist chrome?

- -

Chrome ist eine Gruppe von Benutzeroberflächenelementen des Anwendungsfensters, die sich außerhalb des Inhaltsbereichs des Fensters befinden. Symbolleisten, Menüleisten, Fortschrittsleisten und Fenstertitelleisten sind Beispiele für Elemente, die normalerweise zum Chrom gehören.

- -

Mozilla sucht und liest die root-Datei chrome.manifest nach Erweiterungen und Designs.

- -
-

Note: With {{Gecko("1.9.2")}} and older, Mozilla reads chrome/*.manifest files from applications. Starting with {{Gecko("2.0")}}, the root chrome.manifest is the only manifest used; you can add manifest commands to that file to load secondary manifests.

-
- -

Chrome Anbieter

- -

Ein Anbieter von Chrom für einen bestimmten Fenstertyp (z. B. für das Browserfenster) wird als Chromanbieter bezeichnet. Die Anbieter arbeiten zusammen, um einen vollständigen Chromsatz für ein bestimmtes Fenster bereitzustellen, von den Bildern auf den Symbolleistenschaltflächen bis zu den Dateien, die den Text, den Inhalt und das Erscheinungsbild des Fensters selbst beschreiben.
-
- Es gibt drei grundlegende Arten von Chromanbietern:
-
- Inhalt
-     
Die Hauptquelldatei für eine Fensterbeschreibung stammt vom Inhaltsanbieter und kann von jedem Dateityp sein, der in Mozilla angezeigt werden kann. Normalerweise handelt es sich um eine XUL-Datei, da XUL zur Beschreibung des Inhalts von Fenstern und Dialogen gedacht ist. Die JavaScript-Dateien, die die Benutzeroberfläche definieren, sind auch in den Inhaltspaketen sowie in den meisten {{Glossary ("XBL")}} - Bindungsdateien enthalten.

- -

Gebietsschema
-     
Lokalisierbare Anwendungen speichern alle lokalisierten Informationen in Gebietsschemaanbietern. Dadurch können Übersetzer ein anderes Chrome-Paket zum Übersetzen einer Anwendung einstecken, ohne den Rest des Quellcodes zu ändern. Die zwei Haupttypen von lokalisierbaren Dateien sind {{Glossary ("DTD")}} - Dateien und Java-Eigenschaftendateien.

- -

Skin
-     
Ein Skin-Anbieter ist dafür verantwortlich, einen vollständigen Satz von Dateien bereitzustellen, der das optische Erscheinungsbild des Chroms beschreibt. Normalerweise stellt ein Skin-Provider Dateien und Bilder {{Glossary ("CSS")}} bereit.

- -

 

- -
-

Hinweis: Aus Skin-Paketen geladene Skripts ( einschließlich der in XBL gefundenen) werden nicht ausgeführt.

-
- -

 

diff --git a/files/de/mozilla/creating_a_spell_check_dictionary_add-on/index.html b/files/de/mozilla/creating_a_spell_check_dictionary_add-on/index.html deleted file mode 100644 index 6fea30e835..0000000000 --- a/files/de/mozilla/creating_a_spell_check_dictionary_add-on/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: >- - Auf dieser Seite wird beschrieben, wie Sie ein Wörterbuch für die - Rechtschreibprüfung von Hunspell als Firefox-Add-On -slug: Mozilla/Creating_a_spell_check_dictionary_add-on -tags: - - Deutsch - - German Translation - - Lesen Sie die Tagging-Anleitung. - - Übersetzung -translation_of: Mozilla/Creating_a_spell_check_dictionary_add-on ---- -
-

This paDieserge describes how to package a Hunspell spell check dictionary as a Firefox add-on, or how to update your existing add-on, so that it can be installed, uninstalled and updated without a restart.

-
- -

Parts neededdictionary add-on, you first need two things:

- - - -

If you are creating a new dictionary, as opposed to updating an existing one, please make sure that there is not already a dictionary available for your locale. If there already is one, try contacting the author to get it updated, or contact AMO editors if the author does not respond.

- -

Packaging

- -

A Firefox add-on is a ZIP file renamed to use an .xpi file extension instead of the normal .zip file extension. To create a dictionary add-on, simply create a ZIP file which contains the following files and folders:

- -

my-dictionary.xpi

- - - -

The .dic and .aff files must be placed in a subfolder named dictionaries within the ZIP file. Both files must have the locale code as their file name. You also have to add a file named install.rdf to the root of the ZIP file. This file contains information about your add-on such as name and version number (see below). In addition to these required files, you may add optional files, for example to give your add-on an icon or to describe the license of the dictionary.

- -

Here is an example of the install.rdf file. You can create and edit it with a plain text editor such as Notepad.

- -

<?xml version="1.0"?>
- <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-   <Description about="urn:mozilla:install-manifest">
-     <em:id>locale-code@dictionaries.addons.mozilla.org</em:id>
-     <em:version>version number</em:version>
-     <em:type>64</em:type>
-     <em:unpack>true</em:unpack>
-     <em:name>Name</em:name>
-     <!--
-       Other install.rdf metadata such as em:localized, em:description, em:creator,
-       em:developer, em:translator, em:contributor or em:homepageURL
-     -->

-
-     <!-- Firefox -->
-     <em:targetApplication>
-       <Description>
-         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-         <em:minVersion>18.0a1</em:minVersion>
-         <em:maxVersion>46.0</em:maxVersion>
-       </Description>
-     </em:targetApplication>
-
-     <!-- Thunderbird -->
-     <em:targetApplication>
-       <Description>
-         <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
-         <em:minVersion>18.0a1</em:minVersion>
-         <em:maxVersion>22.0</em:maxVersion>
-       </Description>
-     </em:targetApplication>
-
-     <!-- SeaMonkey -->
-     <em:targetApplication>
-       <Description>
-         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
-         <em:minVersion>2.15a1</em:minVersion>
-         <em:maxVersion>2.49</em:maxVersion>
-       </Description>
-     </em:targetApplication>
-   </Description>
- </RDF>

- -

There are some rules about how you should adapt the install.rdf file:

- - - -

Once you have added these files to your ZIP file and renamed the file to have the .xpi extension, you can install your add-on in Firefox and test it. After a successful test, you can upload your add-on to addons.mozilla.org and ask for it to be included in the Dictionaries & Language Packs page.

- -

Reference

- - diff --git a/files/de/mozilla/css/index.html b/files/de/mozilla/css/index.html deleted file mode 100644 index 52ff0c90d6..0000000000 --- a/files/de/mozilla/css/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Mozilla internal-only CSS -slug: Mozilla/CSS -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Gecko/Chrome/CSS ---- -

This set of pages details CSS features that are only available internally in the Firefox browser — i.e. only inside the US stylesheet.

- -

{{SubpagesWithSummaries}}

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 ---- -
{{FirefoxSidebar}}

- -

Eine Version von Firefox, maßgeschneidert für Webentwickler.

- -

Firefox Developer Edition herunterladen

- -
-
-
-

Die neuesten Firefox-Features

- -

Firefox Developer Edition ersetzt den Aurora-Kanal im Firefox Release-Prozess. Wie bei Aurora werden Features alle sechs Wochen in die Developer Edition einfließen, nachdem sie in den Nightly-Builds stabilisiert wurden.

- -

Indem Sie die Developer Edition nutzen, erhalten Sie Zugriff auf Tools und Plattform-Features mindestens 12 Wochen, bevor sie den Firefox Release-Kanal erreichen.

- -

Finden Sie heraus, was neu in der Developer Edition ist.

-
- -
-

Experimentelle Entwickler-Tools

- -

Wir binden experimentelle Tools ein, die noch nicht für eine allgemeine Veröffentlichung bereit sind.

- -

Zum Beispiel enthält die Developer Edition den Firefox Tools-Adapter, mit dem Sie die Firefox Tools für Webentwickler mit anderen Browsern verbinden können, wie Chrome auf Android und Safari auf iOS.

-
-
- -
-
-

Ein unabhängiges Profil

- -

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.

-
- -
-

Für Webentwickler eingestellt

- -

Wir haben die Standard-Einstellungswerte für Webentwickler zugeschnitten. Zum Beispiel sind Chrome- und Remote-Debugging standardmäßig aktiviert.

-
-
- -
-
-

Ein eigenständiges Theme

- -

Dies beinhaltet schnelleren Zugriff auf die Entwicklertools.

-
- -
 
-
- -

 

diff --git "a/files/de/mozilla/firefox/developer_edition/zur\303\274ckkehren/index.html" "b/files/de/mozilla/firefox/developer_edition/zur\303\274ckkehren/index.html" deleted file mode 100644 index 7e5b838c6c..0000000000 --- "a/files/de/mozilla/firefox/developer_edition/zur\303\274ckkehren/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 ---- -
{{FirefoxSidebar}}

Vom Developer Edition Theme zurück wechseln

- -


- 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.

- -

{{EmbedYouTube("OvJwofTjsNg")}}

- -

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.

- -

Zurückkehren zu Firefox Aurora

- -


- 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:

- -
    -
  1. Ö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.
  2. -
  3. 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.
  4. -
- -

{{EmbedYouTube("0Ofq-vlw8Qw")}}

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 ---- -
{{FirefoxSidebar}}
- -

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.

- -

Den Headless-Mode verwenden

- -

Dieser Bereich bietet eine grunsätzliche Anleitung wie man den Headless-Mode verwendet.

- -

Grundsätzliche Verwendung

- -

Auf der Komandozeile kannst du Firefox im Headless-Mode starten indem du das -headless Flag anhängst. Zum Beispiel:

- -
/path/to/firefox -headless
- -

Screenshots aufnehmen

- -

Seit Firefox 57 ermöglicht es das -screenshot Flag auf Webseiten im Headless-Mode Screenshots aufzunehmen. Grundsätzlich sieht das dann so aus:

- -
/path/to/firefox -headless -screenshot https://developer.mozilla.org/
- -

Das erzeugt einen Screenshot in voller Höhe von https://developer.mozilla.com in das aktuelle Verzeichnis mit dem Dateinamen screenshot.png, mit einer Viewport-Breite von 800px.

- -

Beachte, dass du -headless  weg lassen kannst, wenn du -screenshot angibst— es ist implizit enthalten.

- -
/path/to/firefox -screenshot https://developer.mozilla.org/
- -

Um die Default-Werte, die oben angegeben sind, zu überschreiben,kannst du folgende Flags/Features verwenden:

- - - -

Zum Beispiel erzeugt der folgende Befehl einen Screenshot von https://developer.mozilla.com im aktuellen Verzeichnis mit Dateinamen test.jpg, mit einer Breite von 800px und einer Höhe von 1000px:

- -
/path/to/firefox -screenshot test.jpg https://developer.mozilla.org/ --window-size=480,1000
- -

Browser support

- -

Headless Firefox works on Fx55+ on Linux, and 56+ on Windows/Mac.

- -

Automated testing with headless mode

- -

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.

- -

Selenium in Node.js

- -

Here we'll create a Selenium test using Node.js and the selenium-webdriver 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 Setting up Selenium in Node guide first, then come back.

- -

First, of all, make sure you've got Node installed on your system, and the selenium-webdriver package installed, then create a new file called selenium-test.js and follow the steps below to populate it with test code.

- -
-

Note: Alternatively, you could clone our headless-examples repo; this also includes a package file so you can just use npm install to install necessary dependencies.

-
- -
    -
  1. -

    Let's add some code. Inside this file, start by importing the main selenium-webdriver module, and the firefox submodule:

    - -
    var webdriver = require('selenium-webdriver'),
    -    By = webdriver.By,
    -    until = webdriver.until;
    -
    -var firefox = require('selenium-webdriver/firefox');
    -
  2. -
  3. -

    Next, we will create a new binary object representing Firefox Nightly, and add the -headless argument to it so that it will be run in headless mode:

    - -
    var binary = new firefox.Binary(firefox.Channel.NIGHTLY);
    -binary.addArguments("-headless");
    -
  4. -
  5. -

    Now let's create a new driver instance for Firefox, and use setFirefoxOptions() 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):

    - -
    var driver = new webdriver.Builder()
    -    .forBrowser('firefox')
    -    .setFirefoxOptions(new firefox.Options().setBinary(binary))
    -    .build();
    -
  6. -
  7. -

    Finally, add the following code, which performs a simple test on the Google search homepage:

    - -
    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();
    -
  8. -
  9. -

    Finally, run your test with following command:

    - -
    node selenium-test
    -
  10. -
- -

That's it! After a few seconds, you should see the message "Test passed" returned in the console.

- -

Headless Firefox in Node.js with selenium-webdriver by Myk Melez contains additional useful tips and tricks for running Node.js Selenium tests with headless mode.

- -

Selenium in Java

- -
-

Note: Thanks a lot to nicholasdipiazza for writing these instructions!

-
- -

This guide assumes that you already have Geckodriver on your machine, as explained in our Setting up Selenium in Node guide, and that you have an IDE set up that supports Gradle projects.

- -
    -
  1. -

    Download our headlessfirefox-gradle.zip archive (see the source here), extract it, and import the headlessfirefox folder into your IDE as a gradle project.

    -
  2. -
  3. -

    Edit the build.gradle file to set selenium to a later version if needed. At the time of writing, we used 3.5.3.

    - -
    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'
    -}
    -
  4. -
  5. -

    Edit the webdriver.gecko.driver property in the HeadlessFirefoxSeleniumExample.java file to equal the path where you installed geckodriver (see line 15 below).

    - -
    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();
    -   }
    - }
    -}
    -
  6. -
  7. -

    Run the java class and you should see the HTML content of this page printed in your console/terminal.

    -
  8. -
- -

Other testing solutions

- - - -

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.

- -

Troubleshooting and further help

- -

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.

- - - -

If you want to ask the engineers a question, the best place to go is the #headless channel on Mozilla IRC. If you are pretty sure you've found a bug, file it on Mozilla Bugzilla.

- -

See also

- - 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 ---- -
{{FirefoxSidebar}}

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).

- -

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).

- -

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.

- -

Anstatt direkt auf Content zuzugreifen, muss das chrome JavaScript den message manager nutzen, um auf Content zuzugreifen. Um den Übergang zu erleichtern, haben wir Cross Process Object Wrappers implementiert und einige Kompabilitäts-Shims für Add-On-Entwickler zur Verfügung gestellt. Falls du ein Add-On-Entwickler bist und dich fragst, ob du davon betroffen bist, siehe auch den Guide zur Arbeit mit dem Multiprozess-Firefox.

- -

Multiprozess-Firefox ist momentan in der Developer Edition standardmäßig aktiviert.

- -
-
-
-
-
Technische Übersicht
-
Ein sehr abstrakter Überbllick über die Implementierung des Multiprozess-Firefox.
-
Web Content Kompatibilitätsanleitung
-
Leitlinien und details zu potentiellen Web-Seiten-Kompatibilitätsproblemen, die durch den Übergang entstehen könnten. Tip: Es gibt nicht sehr viele!
-
Glossar
-
Ein Nachschlagewerk für den Jargon, der in Multiprozess-Firefox benutzt wird.
-
Message manager
-
Vollständiger Guide zu den Objekten, die für die Kommunikation zwischen Chrome (Benutzeroberfläche) und Content (Webseiten Code) benutzt werden.
-
SDK basierte Add-ons
-
Wie Add-ons, die mit dem Add-on SDK entwickelt wurden, migriert werden können.
-
Welche URIs laden wo
-
Eine schnelle Einführung darüber, welche URIs (chrome:, about:, file:, resource:), in welchem prozess laden.
-
-
- -
-
-
Motivation
-
Die Gründe, wieso wir den Multiprozess-Firefox implementieren: Performanz, Sicherheit und Stabilität.
-
Add-on migrations Anleitung
-
Wenn du ein Add-on-Entwickler bist, finde heraus, ob du betroffen bist und wie du deinen Code aktuallisieren kannst.
-
Cross Process Object Wrappers
-
Cross Process Object Wrappers sind eine Migrationshilfe, die Chrome Code synchronen zugriff auf Content erlaubt.
-
Debugging von Content-Prozessen
-
Wie Code, der im Content-Prozess läuft (einschließlich Frame- und Prozessskripte), debugt werden kann.
-
Tab auswahl in Multiprozess-Firefox
-
Wie Tab-Wechsel funktioniert in Multiprozess-Firefox.
-
-
-
- -
-
-
-
-
Einschränkungen von Chrome-Skripten
-
Praktiken, die in Chrome-Code nicht mehr funktionieren und wie man dies behebt.
-
-
- -
-
-
Einschränkungen von Frame-Skripten
-
Praktiken, die innerhalb von Frame-Skripten nicht funktionieren werden und was stattdessen zutun ist.
-
-
-
- -
-

Kontaktiere uns

- -

Finde mehr über das Projekt heraus, mach mit oder frag uns etwas.

- - 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 ---- -
{{FirefoxSidebar}}
-

Diese Seite ist ein bearbeiteter Auszug aus Bill McCloskey's Blogbeitrag Multiprozess Firefox:(engl) http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/

-
- -

Auf einer sehr hohen Ebene arbeitet Multiprozess Firefox wie folgt. Der Prozess, der beginnt, wenn Firefox startet wird übergeordneter Prozess genannt. Zunächst arbeitet dieses Verfahren ähnlich wie Einzelprozess. Es wird ein Firefox Fenster geöffnet, das alle wichtigen Elemente der Benutzeroberfläche für Firefox enthält ( browser.xul). Firefox hat eine flexibles GUI-Toolkit namens XUL, das GUI-Elemente deklarativ beschreibt, ähnlich wie bei Web-Content. Genau wie Web-Inhalte, hat das Firefox-UI ein Fenster-Objekt, das eine Dokumenteigenschaft hat, und dieses Dokument enthält alle XML-Elemente aus der browser.xul. Alle Firefox Menüs, Symbolleisten, Seitenleisten und Tabs sind XML-Elemente in diesem Dokument. Jedes Register enthält ein <browser> -Element um Web-Inhalte anzuzeigen.
-
- Die erste Stelle, an der Multiprozess Firefox von Single-Prozess Firefox abweicht ist, dass jedes <browser> Element ein remote = "true" -Attribut besitzt. Wenn ein solches Browser Element in das Dokument eingefügt wird, wird ein neuer Inhaltsprozess gestartet. Dieser Prozess wird als ein untergeordneter Prozess bezeichnet. Ein IPC-Kanal erstellt, der die Eltern-Kind-Prozesse verknüpft. Anfangs zeigt das Kind about: blank, aber die Eltern können dem Kind einen Befehl senden, um an anderer Stelle zu navigieren.

- -

Zeichnen

- -

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 off main thread compositing (OMTC). In brief, each Firefox window is broken into a series of layers, 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.

- -

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.

- -

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.

- -

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.

- -

User input

- -

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 <browser> 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.

- -

With multiple processes, event handling works the same way until the <browser> 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.

- -

Inter-process communication

- -

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.

- -

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 IPDL, which sort of stands for “inter-* protocol definition language”. A typical IPDL file is PNecko.ipdl. It defines a set messages and their parameters. Parameters are serialized and included in the message. To send a message M, C++ code just needs to call the method SendM. To receive the message, it implements the method RecvM.

- -

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:

- -
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;
-}
-
- -

When AddHistoryEntry 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 AddHistoryEntry on its side.

- -

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 this code. Notice the content process check followed by the SendVisitURI call and an immediate return. The message is received here; this code just calls VisitURI in the parent.

- -

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.

- -

Frame scripts

- -

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 the message manager 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 <browser> element. A message manager can be used to load JS code into the child process and to exchange messages with it.

- -

As a simple example, imagine that we want to be informed every time a load 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:

- -
// Get the global message manager.
-let mm = Cc["@mozilla.org/globalmessagemanager;1"].
-         getService(Ci.nsIMessageListenerManager);
-
-// Wait for load event.
-mm.addMessageListener("GotLoadEvent", function (msg) {
-  dump("Received load event: " + msg.data.url + "\n");
-});
-
-// Load code into the child process to listen for the event.
-mm.loadFrameScript("chrome://content/content-script.js", true);
-
- -

For this to work, we also need to have a file content-script.js:

- -
// Listen for the load event.
-addEventListener("load", function (e) {
-  // Inform the parent process.
-  let docURL = content.document.documentURI;
-  sendAsyncMessage("GotLoadEvent", {url: docURL});
-}, false);
-
- -

This file is called a frame script. When the loadFrameScript function call runs, the code for the script is run once for each <browser> 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 true parameter to loadFrameScript). Since the script is run once per browser, it can access the browser’s window object and docshell via the content and docShell globals.

- -

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 message manager guide.

- -

Cross-process APIs

- -

There are a lot of APIs in Firefox that cross between the parent and child processes. An example is the webNavigation property of XUL <browser> elements. The webNavigation property is an object that provides methods like loadURI, goBack, and goForward. 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.

- -

The webNavigation 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 <browser> and <tabbrowser>. The <browser> customizations reside in browser.xml. Here is how browser.webNavigation is defined:

- -
<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>
-
- -

This code is invoked whenever JavaScript code in Firefox accesses browser.webNavigation, where browser is some <browser> element. It checks if the result has already been cached in the browser._webNavigation field. If it hasn’t been cached, then it fetches the navigation object based off the browser’s docshell. 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 webNavigation accessor runs in the parent process, this.docShell above will just return null. As a consequence, this code will fail completely.

- -

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 <browser> elements. It is called remote-browser.xml, and it extends the existing browser.xml binding.

- -

The remote-browser.xml binding returns a JavaScript shim object whenever anyone uses browser.webNavigation or other similar objects. The shim object is implemented in its own JavaScript module. It uses the message manager to send messages like "WebNavigation:LoadURI" to a content script loaded by remote-browser.xml. The content script performs the actual action.

- -

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.

- -

Cross-process object wrappers

- -

The message manager API does not allow the parent process to call sendSyncMessage; 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 sendAsyncMessage 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.

- -

These objects are called cross-process object wrappers, frequently abbreviated to CPOWs. They’re created using the message manager. Consider this example content script:

- -
addEventListener("load", function (e) {
-  let doc = content.document;
-  sendAsyncMessage("GotLoadEvent", {}, {document: doc});
-}, false);
-
- -

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 sendAsyncMessage 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:

- -
let mm = Cc["@mozilla.org/globalmessagemanager;1"].
-         getService(Ci.nsIMessageListenerManager);
-
-mm.addMessageListener("GotLoadEvent", function (msg) {
-  let uri = msg.objects.document.documentURI;
-  dump("Received load event: " + uri + "\n");
-});
-mm.loadFrameScript("chrome://content/content-script.js", true);
-
- -

It’s important to realize that we’re send object references. The msg.objects.document object is only a wrapper. The access to its documentURI 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.

- -

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.

- -

Another problem with CPOWs is that they violate some assumptions people might have about message ordering. Consider this code:

- -
mm.addMessageListener("GotLoadEvent", function (msg) {
-  mm.sendAsyncMessage("ChangeDocumentURI", {newURI: "hello.com"});
-  let uri = msg.objects.document.documentURI;
-  dump("Received load event: " + uri + "\n");
-});
-
- -

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 uri to come back as "hello.com". 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 documentURI property will be processed before the "ChangeDocumentURI" message, in which case uri will have some other value.

- -

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.

- -

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.

- -

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.

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 ---- -
{{FirefoxSidebar}}

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.

- -

Events

- -

Here you'll find information about events whose behaviors have changed due to multiprocess Firefox's implementation.

- -

No bubbling of events from <option> to <select>

- -

Historically, Firefox has allowed keyboard and mouse events to bubble up from the <option> 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 <select> element is displayed as a drop-down list. This behavior is unchanged if the <select> is presented inline and it has either the multiple attribute defined or a size attribute set to more than 1.

- -

Rather than watching <option> elements for events, you should watch for {event("change")}} events on {{HTMLElement("select")}}. See {{bug(1090602)}} for details.

- -

See also

- - 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 ---- -
{{FirefoxSidebar}}
- -

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 enterprise@mozilla.org.

- -

Die richtige Variante

- -

RR (Rapid Release)

- -

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.

- -

Die geplanten Veröffentlichungen finden Sie in der Spalte "release date" in der  Future branch dates tabelle in der Mozilla wiki (Englisch).

- -

ESR (Extended Support Release)

- -

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.

- -

Die ESR-Veröffentlichungen waren bisher die Versionen 10, 17, 24, und 31. 

- -

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.

- -

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.

- -

Installation

- -
    -
  1. Den kompletten, weiterverteilbaren Installer bekommen Sie von  http://www.mozilla.org/firefox/all/ (RR) oder https://www.mozilla.org/firefox/organizations/all.html (ESR).
  2. -
  3. Installieren Sie ihre Version, in dem Sie die Softwareverteilungsmethode ihrer Wahl nutzen. Die Kommand-Zeile für eine stille Installation ist -ms
  4. -
  5. 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 Installer Command Line Arguments.
  6. -
- -

Konfiguration

- -
    -
  1. Finden Sie den Firefox Programmverzeichnis in dem Firefox' ausführende Datei liegt. In Windows7x64 ist er meist C:\Program Files (x86)\Mozilla Firefox; in OSX 10.8 zumeist /Applications/Firefox.app/Contents/MacOS. Unterordner die unten genannt werden sind abhängig von diesem Pfad. 
  2. -
  3. Erstellen Sie eine Javascript Datei in defaults/pref (für gewöhlich, autoconfig.js - 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 Customizing Firefox default preference files/). -

    Die zwei Zeilen die Sie brauchen sind:

    - -
    pref("general.config.obscure_value", 0);
    -pref("general.config.filename", "mozilla.cfg");
    -
  4. -
  5. Erstellen Sie eine .cfg Datei (für gewöhlich, mozilla.cfg — es kann wirklich jeder Name sein; es muss nur zu dem passen, was in  general.config.filename 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: -
    -
    pref
    -
    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 "vom Benutzer eingestellt" angezeigt.
    -
    defaultPref
    -
    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.
    -
    lockPref
    -
    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 "blockiert". Manche Einstellungen benötigen lockPref um geändert zu werden, wie beispielsweise app.update.enabled. Es funktioniert nicht, wenn es nur mit pref geändert wird.
    -
    clearPref
    -
    kann benutzt werden um einige Einstellungen auszublenden. Dies kann nützlich sein, um einige Funktionen zu deaktivieren, die darauf basieren Versionsnummern zu vergleichen.
    -
    -
  6. -
- -

Sehen Sie sich auch Firefox' autoconfig-Dateien ändern und Firefox' autoconfig-Dateien ändern (Fortführung) an, um mehr zu erfahren. Für tiefergehende Einstellungen, wie beispielsweise das Ausschalten bestimmter Elemente der graphischen Benutzeroberfläche, können Sie die CCK2-Extension nutzen.

- -

Beispiel für eine config-Datei

- -

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 Wissensdatenbank.

- -
// 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);
-
-// Disable all data upload (Telemetry and FHR)
-lockPref("datareporting.policy.dataSubmissionEnabled", false);
-
-// Deaktiviert den 'crash reporter'
-lockPref("toolkit.crashreporter.enabled", false);
-Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false; 
-
- -

Packaging Extensions

- -
    -
  1. Installieren Sie die Erweiterung auf einem Rechner zu Testzwecken. Sehen Sie in about:support unter Extensions nach um die GUID zu fnden. 
  2. -
  3. Sehen Sie im Profilverzeichnis (z.B.: %APPDATA%\Mozilla\Firefox\Profiles auf Win7; um diesen zu finden, klicken Sie auf Ordner anzeigen 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.
  4. -
  5. Entscheiden Sie wie Sie sie nutzen wollen. Die einfachste Methode ist, die .xpi Datei oder den Ordner in Programmverzeichnis/distribution/extensions 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 Integrating add-ons into Firefox/ (Englisch) an, um alternative Methoden zu lernen.
  6. -
- -

Beachten Sie auch: Add-on scopes redux/ (Englisch)

- -

Änderungen mit der Zeit

- -

Änderungen in der Verzeichnisstruktur

- -

Die Verzeichnisstruktur des Programmpfades wurde zweimal geändert. Sollten Sie einer Anleitung für eine Firefox-Version vor Version 21 folgen, dann müssen Sie vermutlich diese Änderungen beachten:

- - - -

Die Einstellungen preferences general.config.filename und general.config.obscure_value zur AutoConfiguration können immer noch in defaults/pref vorgenommen werden, jedoch sollte der Dateiname mit dem Buchstaben 'a' beginnen, wie zum Beispiel autoconfig.js.

- -

Sollte es in defaults/pref in einer zuünftigen Version von Firefox nicht mehr funktionieren, probieren Sie browser/defaults/preferences als den wahrscheinlichsten Platz für die Datei.

- -

Änderungen in ESR 24.x mit Adobe PDF Files

- -

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, selbst wenn ein externer Viewer bereits eingestellt wurde. Der Name des Dateitypes wurde von Adobe Acrobat Document zu Portable Document Format (PDF) geändert, was die Lokalisierung durch die Tools-, Options- oder Applications-Tabs erschwert. Um dies abzustellen, ändern Sie pdfjs.disabled zu true wie auch im oben genannten Beispiel.

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 ---- -
{{FirefoxSidebar}}

{{ ListSubpages () }}

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 ---- -
{{FirefoxSidebar}}
- -

Was ist Verfolgungsschutz?

- -

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.

- -

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.

- -

Wenn Firefox Inhalte blockiert, wird die folgende Nachricht ausgegeben:

- -
Die Ressource auf "https://some/url" wurde blockiert, weil das Blockieren von Seitenelementen aktiviert ist.
- -
-

Die Ausgaben auf der Konsole in Firefox für Android können über den Remote Debugger angezeigt werden.

-
- -

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.

- -

Wie entscheidet Firefox was blockiert wird?

- -

Inhalte werden auf Basis der Domain blockiert, von der sie geladen werden.

- -

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

- -

Seiten die User tracken sind hauptsächlich externe Werbe- und Analyseseiten

- -

Was bedeutet das für deine Webseite?

- -

Zuerst einmal bedeutet das offensichtlich, dass wenn der Trackingschutz aktiviert ist:

- - - -

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.

- -

Zum Beispiel solltest du Google Analytics nicht so verwenden:

- -
<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>
- -

Stattdessen solltest  du den Fall berücksichtigen, dass Google Analytics fehlt, in dem du überprüftst ob das ga Objekt initialisiert wurde.

- -
<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 && ga.loaded) {
-         ga('send', 'event', 'outbound', 'click', url, {
-         'transport': 'beacon',
-         'hitCallback': function() { document.location = url; }
-       });
-    } else {
-        document.location = url;
-    }
-}
-</script>
-
- -

Mehr Informationen zu dieser Technik ist verfügbar auf Google Analytics, Privacy, and Event Tracking.

- -
-

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.

-
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 ---- -
{{FirefoxSidebar}}
- -
Es gibt eine Menge wichtiger Informationen über Firefox, die sich hinter dem about: URL-Protokoll verbergen. Am wichtigsten ist die URL about:config, die Einstellungen anzeigt, die sich dort betrachten und ändern lassen. Hier ist eine komplette Liste mit allen URLs  des about:-Pseudo-Protokolls::
- -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
about: SeiteBeschriebung
about:Zeigt die Versionsnummer, Buildinformationen, Links zu den Beitragenden, Lizenzinformationen und Einstellungen zur Build-Konfiguration an.
about:aboutZeigt einen Überblick über alle about:-Seiten an.
about:accountsZeigt Informationen zur Sync-Funktion an.
about:addonsÖffnet den Add-ons-Manager
about:app-managerÖffnet den App-Manager
about:buildconfigZeigt die für die Version von Firefox verwendete Konfiguration und Plattform an.
about:cacheZeigt Informationen zum Speicher, Speichermedium und Arbeitsspeicher an.
about:compartments -
-

Seit Firefox 26 können diese Informationen unter "Other Measurements" in about:memory gefunden werden.

-
- -

Zeigt Informationen zu einzelnen "Compartments".

-
about:configBietet eine Möglichkeit, Einstellungen in Firefox zu untersuchen und zu ändern.
about:crashesListet alle Abstürze, die während der gesamten Lebenszeit von Firefox passierten, auf.
about:creditsListet alle Ünterstützer und Mitwirkenden des Firefox-Projektes auf.
about:customizingWechselt zur Anpassungsseite, die Anpassungen der Benutzeroberfläche von Firefox erlaubt.
about:downloadsListet alle Downloads von Firefox aus auf.
about:healthreportZeigt Leistungsinformationen von Firefox an (nur wenn der Nutzer dies aktiviert hat).
about:homeÖffnet die Startseite, die beim Öffnen eines neuen Fensters erscheint.
about:licenseZeigt Lizenzinformationen an.
about:logoZeigt das Firefox-Logo an.
about:memoryBietet eine Möglichkeit, die Speicherverwendung anzuzeigen, als Bericht zu speichern oder GC und CC auszuführen.
about:mozillaDiese Sonderseite zeigt eine Nachricht aus dem "The Book of Mozilla".
about:networkingZeigt Netzwerk-Informationen an.
about:newtabÖffnet die Startseite für einen neuen Tab.
about:permissions -
-

Wurde mit Firefox 45 entfernt. ({{bug(933917)}})

-
- -

Bietet eine Möglichkeit, Berechtigungen anzuzeigen und verwalten zu lassen.

-
about:pluginsZeigt Informationen zu installierten Plugins an.
about:preferencesÖffnet die Einstellungen zu Firefox (auch erreichbar über das Firefox-Menü > Optionen)
about:privatebrowsingÖffnet die Startseite, die beim Öffnen eines privaten Tabs angezeigt wird.
about:profilesZeigt und verwaltet Firefox-Profile.
about:rightsZeigt rechtliche Informationen an.
about:robotsDiese Sonderseite zeigt Informationen zu Robots an.
about:serviceworkersZeigt aktuell laufende Service Workers an.
about:sessionrestoreÖffnet die Sitzungswiederherstellungsseite (wird nach einem Absturz angezeigt).
about:supportÖffnet die Fehlerbehebungsseite (auch erreichbar über das Firefox-Menü > ? (Fragezeichen) > Informationen zur Fehlerbehebung)
about:sync-logZeigt ein Synchronisations-Protokoll bezogen auf die Sync-Funktion an.
about:sync-progressZeigt die Seite, die nach der Einrichtung der Sync-Funktion aufgerufen wird.
about:sync-tabsZeigt synchronisierbare Tabs an (für die Sync-Funktion).
about:telemetryZeigt die von Firefox gesammelten und an Mozilla gesendeten telemetrischen Daten an (nur wenn der Nutzer Telemetrie aktiviert hat).
about:webrtcZeigt Informationen zur Verwendung von WebRTC an.
about:welcomebackZeigt die Seite, die nach einer Zurücksetzung aufgerufen wird.
- -

Diese URLs wurden in {{source("docshell/base/nsAboutRedirector.cpp")}} innerhalb des kRedirMap-Arrays definiert. Der Array zeigt die meisten der URLs, wie config in URLs im chrome:-Pseudo-Protokoll, wie chrome://global/content/config.xul an.  Der Ort der about:-Informationen wurde aus {{source("docshell/build/nsDocShellModule.cpp")}} kopiert..

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 ---- -
{{FirefoxSidebar}}

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 Firefox 5 for developers.

- -

Do you need to do anything at all?

- -

If your add-on is distributed on addons.mozilla.org (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 need to be recompiled for every major Firefox release), have automatically been updated on AMO to indicate that they work in Firefox 5.

- -

So you should start by visiting AMO and looking to see if your add-on needs any work done at all.

- -
Note: 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.
- -

Once you've confirmed that you need to make changes, come on back to this page and read on.

- - - -

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.

- -

Determining the UI language

- -

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 Accept-Language header for the current document. If you need to detect the UI language, you should instead look at the value of the general.useragent.locale preference.

- -

DOM changes

- -

The behaviors of {{ domxref("window.setTimeout()") }} and {{ domxref("window.setInterval()") }} have changed; the minimum allowed time has changed, and varies depending on the situation. In addition, timeouts and intervals are clamped to one per second in inactive tabs (that is, tabs the user isn't currently looking at).

- -

JavaScript changes

- -

The following keywords are now reserved in JavaScript, even when you're not in strict mode:

- - - -

Don't use those keywords anywhere in your code, even as object property names.

- -
Note: 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.
- -

Interface changes

- -

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 load event is fired.

- -

To fix this, simply move your instantiation of these services into your load event handler:

- -
var MyObject = {
-  comp : null,
-  init: function() {
-    this.comp = Components.classes[...].getService(...);
-  },
-  ...
-}
-window.addEventListener("load", function() { MyObject.init(); }, false);
-
- -

An even better solution, of course, is to follow performance best practices and to not instantiate services until you need to use them.

- -

See also

- - diff --git a/files/de/mozilla/firefox_fuer_android/compatibility_testing/index.html b/files/de/mozilla/firefox_fuer_android/compatibility_testing/index.html deleted file mode 100644 index e8c5b26907..0000000000 --- a/files/de/mozilla/firefox_fuer_android/compatibility_testing/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Site Compatibility Testing for Firefox for Android -slug: Mozilla/Firefox_fuer_Android/Compatibility_Testing -translation_of: Mozilla/Firefox_for_Android/Compatibility_Testing ---- -

Overview

-

Our goal, is to open up the Web to all mobile browsers via promotion of standards and best practices.

-

However, some websites serve content either that doesn't function well or that is different than that served to some specific popular mobile browsers of the moment. This content may be:

- -

We refer to this category of issues as Web compatibility issues. Web compatibility issues (for Firefox for Android, Firefox OS and other browsers with limited market share in one or more regions) typically result from one or more of several causes:

-
-
- User-agent sniffing
-
- Identifying the browser by its user-agent string and sending different content.
-
- Use of non standard (typically Webkit) CSS properties
-
- Using non standard CSS properties that the browser does not recognize, causing layout or style issues
-
- Use of non standard (typically Webkit) DOM properties
-
- Using non standard DOM properties in JavaScript that the browser does not recognize, causing functional issues
-
- Browser limitations
-
- Using standard CSS and DOM properties that the browser does not currently implement or that have functional or performance issues
-
-

For Firefox specifically, we need your help to identify sites that do not work well by reporting the specific issues that you find in your investigation. Other browsers vendors have bug reporting systems, where you can report the issues as well for their specific browser.

-

Outlined below are steps that you can follow to identify and report site issues.

-

Setup

-

To start, let's set up your hardware and software for compatibility testing.

-
    -
  1. An Android phone is a prerequisite for testing Firefox for Android. See our list of supported devices for Firefox for Android to ensure that your phone is supported.
  2. -
  3. Install Firefox for Android from Google Play.
  4. -
  5. Install the Phony Add-on for Firefox on Android. This add-on lets Firefox for Android pretend to be another browser by changing the user-agent string that is sent with each HTTP request.
  6. -
  7. Set up an account on bugzilla so that you can report issues.
  8. -
-

Optional steps:

- -
-

Note: See the article Browser detection using the user agent for an in-depth explanation about browser user-agents.

-
-

Compatibility Testing

-

The following steps walk you through the method that Mozilla QA uses for compatibility testing:

-
    -
  1. Select a site to test. -
      -
    • This may be a site that you already visited and saw that something is wrong in your daily browser usage.
    • -
    • Alternatively, you can select one of the top sites listed on the Are We Compatible Yet report. Sites that have not yet been investigated are shown in white.
    • -
    -
  2. -
  3. Open the site that you selected in Firefox for Android. Test the functionality of the site by exploring different areas of the site. For example, if the site displays articles, pictures, and videos, you should explore all three areas of the site. Click on links, use forms, create accounts, sign in, and question: -
      -
    1. Is the site a desktop site? If so, skip to #3 and #4 to determine if Safari on iPhone and the Android browser are served the same desktop content.
    2. -
    3. Does the site have obvious layout problems? Are elements positioned on top of one another? Is there missing content? Do menus display correctly? Are header background colors correct? Are areas of the page shown correctly? Does the site simply look bad?
      -  
    4. -
    -
  4. -
  5. Visit the same website using your device’s Android browser, using the same exploration methods in #2, and question: -
      -
    1. Is the site a desktop site? Does the content greatly differ than what you saw on Firefox for Android? If so, how is it different? Is it a mobile optimized site?
    2. -
    3. Are there any similar layout issues as seen in Firefox for Android? If so, what problems do you see with Firefox for Android that you do not see in the Android browser?
      -  
    4. -
    -
  6. -
  7. Make Firefox for Android appear to the site as though it is Safari on iPhone by clicking Menu->Phony and selecting iPhone. After selecting iPhone click Menu->Reload. Visit the same site again and continue with the same exploration methods in #2 and question: -
      -
    1. Is the site a desktop site? Does the content greatly differ than what you previously saw in Firefox for Android? If so, how is it different? Is it a mobile optimized site?
    2. -
    3. Does the site have any layout problems? If so, what are those problems?
    4. -
    -
  8. -
-

Reporting Results

-

For any site that looks or functions differently in Firefox for Android, the Android browser, or Safari on iPhone you should report each issue in Bugzilla. To report an issue, file a bug in the Firefox for Android Evangelism component and provide as much information about the issue as you can. Here are some pieces of information that are typically helpful to submit with your report:

-
-
-
-
- Summary
-
- Summarize the issue that you have identified with the site. It is helpful to include the domain name, such as mozilla.org, in the summary.
-
- Description
-
- Describe the issue as best as you can. Include details such as how the content differs between Firefox for Android, Android browser, and Safari on iPhone, the specific places (titles, article list, options menu) where the site does not look correct, and what parts of the site (articles are unreadable, videos don't play, can't click on links) that do not function as you expected that they would.
-
- If you have some knowledge of HTML, CSS, and JavaScript, it is also very helpful to have references to the lines of code that are the root cause of the issue.
-
- Attachments
-
- It is also valuable to attach a screen capture that shows the problem in Firefox for Android. How to take a screenshot on Android differs based on your version of the operating system.
-
-

Contact Information

-

If you have any questions about compatibility testing or want to become involved in Mozilla’s mobile web compatibility effort, please sign up for the compatibility@lists.mozilla.org mailing list.

diff --git a/files/de/mozilla/firefox_fuer_android/index.html b/files/de/mozilla/firefox_fuer_android/index.html deleted file mode 100644 index 1df1e939c9..0000000000 --- a/files/de/mozilla/firefox_fuer_android/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Firefox für Android -slug: Mozilla/Firefox_fuer_Android -translation_of: Mozilla/Firefox_for_Android ---- -

Für mehr und mehr Menschen sind Mobilgeräte der Hauptweg, oder sogar der einzige Weg, Zugang zum Web zu erlangen. Firefox für Android (Codename Fennec) ist ein offener, hackbarer, auf Standards basierender Browser, genau wie Firefox für den Desktop.

- -

Firefox für Android erzeugt seine Benutzeroberfläche aus systemeigenen Android Widgets anstatt aus XUL: dies verbessert die Performanz außerordentlich, insbesondere die Zeit des Startvorgangs, und den Speicherbedarf.

- -

Zu Firefox für Android beitragen

- -

Die Hauptbezugsquelle für Informationen über das Firefox für Android Projekt selbst ist die Wikiseite des Projekts.

- -

Sie können uns helfen Firefox für Android zu gestalten und zu verbessern:

- - - -

Entwickeln für das mobile Web

- -

Wir haben begonnen eine Anleitung zum Gestalten von Websites für Mobilgeräte zusammenzuschreiben.

- -

Mit Firefox für Android erhalten Sie Zugang zu einer Reihe von APIs, die das unterliegende Leistungsvermögen des Gerätes zum Vorschein bringen und somit die Lücke zwischen Web und systemeigenen Anwendungen schließen:

- - - -

Um Ihre Website auf Firefox für Android zu testen, können Sie ihn auf Ihrem Android Gerät installieren oder ihn auf ihrem Desktop mithilfe des Android Emulators laufen lassen.

- -

Erstellen mobiler Add-ons

- -

Firefox für Android unterstützt Add-ons durch genau das gleiche Erweiterungssystem, das auch alle anderen Gecko-basierten Anwendungen verwenden. Wir haben kein neues Add-on-System erfunden. Das bedeutet, dass beim Erstellen eines Add-ons für Firefox für Android der gleiche Prozess verwendet wird wie für den Desktop Firefox. Add-ons, die im Desktop Firefox laufen, laufen nicht automatisch im Firefox auf Android. Die Benutzeroberflächen sind einfach zu unterschiedlich.

- -
Firefox auf Android hat eine eindeutige Anwendungskennung, die in install.rdf angegeben werden muss. Die Kennung ist {aa3c5121-dab2-40e2-81ca-7ea25febc110}
- -

Sowohl die klassischen Add-on-Herangehensweisen, die einen Neustart erfordern, als auch die neueren Add-on-Herangehensweisen, die ohne Neustart auskommen, werden unterstützt. Die Herangehensweise, die ohne Neustart auskommt, ist wann immer möglich die bevorzugte, weil gegenüber dem erzwungenen Anwendungsneustart beim Installieren und Entfernen von Add-ons das Nutzererlebnis hier weitaus besser ist.

- -

Kurzer Überblick

- - - -

Erhalten Sie Hilfe zu Firefox für Android

- -

Dokumentationen und Tutoriale zur Verwendung und Fehlerbehebung von Firefox für Android sind auf der Mozilla Support Website verfügbar.

diff --git a/files/de/mozilla/javascript_code_modules/deutsch/index.html b/files/de/mozilla/javascript_code_modules/deutsch/index.html deleted file mode 100644 index 361b8eaa94..0000000000 --- a/files/de/mozilla/javascript_code_modules/deutsch/index.html +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Benutzung von JavaScript Code Modulen -slug: Mozilla/JavaScript_code_modules/Deutsch -tags: - - Anleitung - - Erweiterungen - - JavaScript - - XPCOM -translation_of: Mozilla/JavaScript_code_modules/Using ---- -
{{gecko_minversion_header("1.9")}}
- -

Das Konzept von JavaScript Code Modulen wurde in {{Gecko("1.9")}} eingeführt und dient der gemeinsamen Verwendung von Code in unterschiedlichen Anwendungsbereichen. Module können außerdem dazu genutzt werden, globale JavaScript Singletons anzulegen, wofür früher JavaScript XPCOM Objekte nötig waren. Ein javaScript Code Modul ist nichts weiter als eine Sammlung von JavaScript code, der an einem bestimmten Ort abgelegt ist. Solch ein Modul wird mit Components.utils.import() oder Components.utils["import"]() in einen bestimmten JavaScript Anwendungsbereich geladen, etwa ein XUL oder JavaScript XPCOM Script.

- -

Erstellen eines JavaScript Code Moduls

- -

Ein sehr einfaches JavaScript Modul sieht so aus:

- -
var EXPORTED_SYMBOLS = ["foo", "bar"];
-
-function foo() {
-  return "foo";
-}
-
-var bar = {
-  name : "bar",
-  size : 3
-};
-
-var dummy = "dummy";
-
- -

Wie zu sehen ist, verwendet das Modul reguläres JavaScript, um Funktionen, Objekte, Konstanten und jeden anderen JavaScript Datentyp anzulegen. Das Modul definiert außerdem eine spezielle Variable namens EXPORTED_SYMBOLS. Alle JavaScript Objekte, die in EXPORTED_SYMBOLS angeführt sind, werden aus dem Modul exportiert und in den Anwendungsbereich geladen, der das Modul einbindet. Ein Beispiel:

- -
Components.utils.import("resource://app/my_module.jsm");
-
-alert(foo());         // displays "foo"
-alert(bar.size + 3);  // displays "6"
-alert(dummy);         // displays "dummy is not defined" because 'dummy' was not exported from the module
-
- -
Hinweis: Wenn Änderungen an einem Modul getestet werden sollen, muss immer darauf geachtet werden, die Versionsnummer der Anwendung zu erhöhen. Andernfalls kann es passieren, dass die vorherige Version des Moduls verwendet wird.
- -

Die URL eines Code Moduls

- -

Wie im obigen Beispiel ersichtlich ist, benötigt man für den Import eines Code Moduls eine URL. (Die URL im Beispielcode ist "resource://app/my_module.jsm".)

- -

Code Module können nur mit einer chrome: ({{gecko_minversion_inline("2")}}), resource:, oder file: URL geladen werden.

- - - -

Gemeinsame Verwendung von Objekten

- -

Eine besonders wichtige Eigenschaft von Components.utils.import() ist es, dass Module beim erstmaligen Importieren im Zwischenspeicher abgelegt werden und alle weiteren Importvorgänge diese gespeicherte Version verwenden anstatt das Modul neu zu laden. Das bedeutet, dass das Modul von allen Anwendungsbereichen die es importiert haben, gemeinsam verwendet wird. Alle Änderungen von Daten, Objekten oder Funktionen sind in jeden Anwendungsbereich, der das Modul benutzt, sichtbar. Wenn wir beispielsweise unser einfaches Modul in zwei JavaScript Bereichen importieren, können Änderungen aus einem Bereich auch im anderen Bereich beobachtet werden.

- -

Bereich 1:

- -
Components.utils.import("resource://app/my_module.jsm");
-
-alert(bar.size + 3);  // displays "6"
-
-bar.size = 10;
-
- -

Bereich 2:

- -
Components.utils.import("resource://app/my_module.jsm");
-
-alert(foo());         // displays "foo"
-alert(bar.size + 3);  // displays "13"
-
- -

Durch diese Eigenschaft können Module als Singleton Objekte verwendet werden um Daten zwischen verschiedenen Fenstern, oder auch zwischen XUL Scripten und XPCOM Objekten, auszutauschen.

- -

{{Note("Jeder Bereich, der ein Modul importiert, erhält eine Kopie (by-value) aller exportierten Symbole des Moduls. Änderungen der Werte in dieser Kopie werden nicht an andere Bereiche weitergeleitet (allerdings werden Objekteigenschaften per Referenz manipuliert).")}}

- -

Bereich 1:

- -
Components.utils.import("resource://app/my_module.jsm");
-
-bar = "foo";
-alert(bar);         // displays "foo"
-
- -

Bereich 2:

- -
Components.utils.import("resource://app/my_module.jsm");
-
-alert(bar);         // displays "[object Object]"
-
- -

Der Haupteffekt dieser by-value Kopie besteht darin, dass globale Variablen eines einfachen Typs nicht in allen Bereichen geteilt werden. Variablen sollten daher immer in eine Wrapper Klasse gehüllt werden (siehe bar im obigen Beispiel).

- -

{{h2_gecko_minversion("Code Module Entladen", "7.0")}}

- -

Mit Components.utils.unload() kann ein zuvor importiertes Modul wieder entladen werden. Nach dem Aufruf dieser Funktion sind zwar alte Referenzen auf das Modul weiterhin gültig, aber ein nachträgliches Importieren wird das Modul neu laden und ihm auch eine neue Referenz zuweisen.

- -

Beispiele

- - - -

Erweiterung von resource: URLs

- -

Vor der Einführung von {{Gecko("2.0")}} war der übliche Weg, ein Modul einzubinden, die resource: URL. Die grundlegende Syntax sieht wie folgt aus:

- -
resource://<alias>/<relative-path>/<file.js|jsm>
-
- -

<alias> bezeichnet einen Ort, üblicherweise einen physikalischen Ort relativ zur Anwendung oder der XUL Laufzeitumgebung. Die XUL Laufzeitumgebung bietet verschiedene vordefinierte Aliase:

- - - -

Der Pfad in <relative-path> kann beliebig tief sein und ist immer relativ zum in <alias> angegbenen Ort. Der übliche relative Pfad, der auch von XUL Runner und Firefox verwendet wird, ist "modules". Code Module sind einfache JavaScript Dateien mit einer .js oder .jsm Dateiendung.

- -

Das verwendete <alias> muss für jede Erweiterung einzigartig sein, da alle definierten Alias Werte aller Anwendungen und Erweiterungen in einem gemeinsamen Namespace gespeichert werden.

- -

Mittels chrome.manifest

- -

Die einfachste Möglichkeit, ein neues Alias für eine Erweiterung oder XUL Anwendung anzulegen, besteht darin, eine Zeile wie die Folgende in chrome manifest einzufügen:

- -
resource aliasname uri/to/files/
-
- -

Wenn zum Beispiel die XPI deiner foo Erweiterung einen top-level Ordner namens modules/ besitzt, in dem sich das bar.js Modul befindet (das beudeutet, der modules/ Ordner liegt neben chrome.manifest und install.rdf), kann ein Alias etwa so angelegt werden:

- -
resource foo modules/
-
- -

(Beachte den Schrägstrich am Ende!) Danach kannst du das Modul wie folgt in deinen JavaScript Code importieren:

- -
Components.utils.import("resource://foo/bar.js");
-
- -

Programmatisches Hinzufügen eines Alias

- -

Aliase auf Pfade, die als {{interface("nsILocalFile")}} dargestellt werden können, können auch programmatisch angelegt werden. Zum Beispiel:

- -
// Import Services.jsm unless in a scope where it's already been imported
-Components.utils.import("resource://gre/modules/Services.jsm");
-
-var resProt = Services.io.getProtocolHandler("resource")
-                      .QueryInterface(Components.interfaces.nsIResProtocolHandler);
-
-var aliasFile = Components.classes["@mozilla.org/file/local;1"]
-                          .createInstance(Components.interfaces.nsILocalFile);
-aliasFile.initWithPath("/some/absolute/path");
-
-var aliasURI = Services.io.newFileURI(aliasFile);
-resProt.setSubstitution("myalias", aliasURI);
-
-// assuming the code modules are in the alias folder itself
-
- -

Anmerkungen

- -

Eigene Module und XPCOM Komponenten

- -

In früheren Versionen als {{Gecko("2.0")}} werden JavaScript XPCOM Komponenten bereits vor der Chrome Registrierung geladen. Das bedeutet, dass Components.utils.import() nicht mit einer eigenen URL in einer Komponente verwendet werden kann. Eine mögliche Lösung des Problems besteht darin, den Aufruf von Components.utils.import() in den Konstruktor der XPCOM Komponente zu legen (Diskussion).

- -

Packaging Anmerkungen

- -

Unter normalen Umständen gibt es keinen guten Grund JavaScript Code Module in einer JAR Datei zu verpacken. Von Firefox 3.6 wird diese Form der Distribution gar nicht unterstützt. Nur in einem Anwendungsfall kann es sinnvoll sein, Module in JAR zu packen: In einer Erweiterung, die nur Firefox 4 unterstützt, und die ungepackt installiert werden muss. In allen anderen Fällen wird dadurch nur unnötigerweise die Kompatibilität zerstört.

- -

CommonJS Module Importieren

- -

Die hier beschriebenen JavaScript Code Module sind nicht zu verwechseln mit CommonJS modules, aber auch CommonJS Module können in jeden Bereich importiert werden, der Components.utils.import unterstützt. Der folgende Aufruf wird require() in deinen Anwendungsbereich importieren:

- -
const { require } = Cu.import("resource://gre/modules/commonjs/toolkit/require.js", {})
- -

Damit können danach andere CommonJS Module importiert werden. Auch Add-on SDK Module können auf die selbe Art importiert werden, wie aus einem SDK Add-on:

- -
// import the SDK's base64 module
-
-var base64 = require("sdk/base64");
-base64.encode("hello"); // "aGVsbG8="
- -

Auch andere CommonJS Module können importiert werden, solange der Pfad bekannt ist:

- -
// import my module
-
-var myModule = require("resource://path/to/my/module.js");
- -

In diesem Fall kann es aber ratsam sein, einen eigenen Loader zu entwickeln, damit das paths Attribut selbst gewählt werden kann.

- -

Weiterführende Links

- - diff --git a/files/de/mozilla/javascript_code_modules/index.html b/files/de/mozilla/javascript_code_modules/index.html deleted file mode 100644 index 1a977f72f2..0000000000 --- a/files/de/mozilla/javascript_code_modules/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: JavaScript code modules -slug: Mozilla/JavaScript_code_modules -tags: - - Add-ons - - Extensions - - JavaScript - - Landing - - Modules - - NeedsTranslation - - TopicStub - - XPCOM -translation_of: Mozilla/JavaScript_code_modules ---- -

JavaScript code modules let multiple privileged JavaScript scopes share code. For example, a module could be used by Firefox itself as well as by extensions, in order to avoid code duplication.

- -

General topics

- -
-
Using JavaScript code modules
-
An introduction to how to use JavaScript code modules.
-
Components.utils.import
-
How to import a JavaScript code module.
-
Components.utils.unload
-
How to unload a JavaScript code module.
-
Code snippets: Modules
-
Examples of how to use code modules.
-
Mozilla Labs JS Modules
-
This page features a list of JS modules, along with download links and documentation, that extension developers can use in their code.
-
- -
-
- -

Standard code modules

- -
-
AddonManager.jsm
-
Interface to install, manage, and uninstall add-ons.
-
AddonRepository.jsm
-
Allows searching of the add-ons repository.
-
Assert.jsm
-
Implements the CommonJS Unit Testing specification version 1.1, which provides a basic, standardized interface for performing in-code logical assertions with optional, customizable error reporting.
-
BookmarkHTMLUtils.jsm
-
Provides utility functions for importing and exporting bookmarks from the old-school "bookmarks.html" style bookmark files.
-
ctypes.jsm
-
Provides an interface that allows JavaScript code to call native libraries without requiring the development of an XPCOM component.
-
CustomizableUI.jsm
-
Allows you to interact with customizable buttons and items in Firefox's main window UI.
-
DeferredTask.jsm
-
Run a task after a delay.
-
Dict.jsm
-
Provides an API for key/value pair dictionaries.
-
DownloadLastDir.jsm
-
Provides the path to the directory into which the last download occurred.
-
Downloads.jsm
-
Provides a single entry point to interact with the downloading capabilities of the platform.
-
FileUtils.jsm
-
Provides helpers for dealing with files.
-
Geometry.jsm
-
Provides routines for performing basic geometric operations on points and rectangles.
-
HTTP.jsm
-
A wrapper for XMLHttpRequest that provides convenient and simplified API for dealing with HTTP requests.
-
JNI.jsm
-
Abstracts the js-ctypes to provide an interface that allows JavaScript code to call code running in native JVMs.
-
ISO8601DateUtils.jsm
-
Provides routines to convert between JavaScript Date objects and ISO 8601 date strings.
-
Log.jsm (formerly log4moz)
-
Provides a log4j style API for logging log messages to various endpoints, such as the Browser Console or a file on disk. This module was formerly
-
NetUtil.jsm
-
Provides helpful networking utility functions, including the ability to easily copy data from an input stream to an output stream asynchronously.
-
openLocationLastURL.jsm
-
Provides access to the last URL opened using the "Open Location" option in the File menu.
-
OSFile.jsm
-
Provides routines to access files. Read, write, rename, create directories, ...
-
PerfMeasurement.jsm
-
Provides access to low-level hardware and OS performance measurement tools.
-
PluralForm.jsm
-
Provides an easy way to get the correct plural forms for the current locale, as well as ways to localize to a specific plural rule.
-
PopupNotifications.jsm
-
Provides an easy way to present non-modal notifications to users.
-
Promise.jsm
-
Implements the Promises/A+ proposal as known in April 2013.
-
PromiseWorker.jsm
-
A version of {{domxref("ChromeWorker")}} which uses promises to return the worker's result instead of using an event to do so.
-
Services.jsm
-
Provides getters for conveniently obtaining access to commonly-used services.
-
source-editor.jsm
-
The Source Editor is used by developer tools such as the Style Editor; this interface implements the editor and lets you interact with it.
-
Sqlite.jsm
-
A Promise-based API to mozIStorage/SQLite.
-
Task.jsm
-
Implements a subset of Task.js to make sequential, asynchronous operations simple, using the power of JavaScript's yield operator.
-
Timer.jsm
-
A pure JS implementation of window.setTimeout.
-
Webapps.jsm
-
Provides an interface to manager Open Web Apps.
-
WebRequest.jsm
-
Provides an API to add event listeners for the various stages of making an HTTP request. The event listener receives detailed information about the request, and can modify or cancel the request.
-
XPCOMUtils.jsm
-
Contains utilities for JavaScript components loaded by the JS component loader.
-
diff --git a/files/de/mozilla/localization/index.html b/files/de/mozilla/localization/index.html deleted file mode 100644 index 54d427c2de..0000000000 --- a/files/de/mozilla/localization/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Lokalisation bei Mozilla -slug: Mozilla/Localization -tags: - - Landing - - Localization - - Mozilla - - NeedsTranslation - - TopicStub - - Translation - - l10n -translation_of: Mozilla/Localization ---- -

Localization (L10n) ist die Übersetzung der Benutzeroberfläche von einer Sprache in die andere, um diese so einer anderen Sprache und Kultur anzupassen. Diese Quellen stehen jedem zur Verfügung, der sich für die technischen Aspekte der L10n interessiert - Entwicklern und Helfern

- -

Siehe auch

- -
-
Lokalisieren von MDN
-
Diese Ressource beinhaltet die Lokalization der Dokumentation hier bei MDN.
-
App localization
-
Diese Sammlung von Dokumenten bezieht sich genauer auf das Lokalisieren von Apps, inklusive Firefox OS apps.
-
L10n
-
Referenzdokumente für die L10n API, die Mozilla für das Lokalisieren von Firefox OS nutzt.
-
diff --git a/files/de/mozilla/localization/kodierung_fuer_lokalisierungs-dateien/index.html b/files/de/mozilla/localization/kodierung_fuer_lokalisierungs-dateien/index.html deleted file mode 100644 index 46b60bbf1f..0000000000 --- a/files/de/mozilla/localization/kodierung_fuer_lokalisierungs-dateien/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Kodierungen für Lokalisierungsdateien -slug: Mozilla/Localization/Kodierung_fuer_Lokalisierungs-Dateien -tags: - - Internationalisierung - - Lokalisierung -translation_of: Mozilla/Localization/Encodings_for_localization_files ---- -

Beim Erstellen einer Lokalisierung für Mozilla Produkte ist es wichtig die Kodierung der Dateien zu beachten, die man generiert.

- -

Im Allgemeinen sind Dateien im Mozilla Repository UTF-8 kodiert. Es gibt allerdings einige wenige Ausnahmen.

- -

Installer

- -

Der Windows Installer unterstützt UTF-8 nicht, sondern nur die von Windows vorgegebenen Zeichensatztabellen. Die Einbindung in den Erstellungsprozess ist kompliziert, daher hier einige Hinweise:  

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DateiKodierungHinweise
toolkit/installer/windows/charset.mkASCIIDie Variable WIN_INSTALLER_CHARSET muss eine Kodierung haben, die mit dem Parameter CHARSET= aus toolkit/installer/windows/install.it übereinstimmt. Geeignete Werte siehe in der Tabelle unten. 
toolkit/installer/windows/install.it -

Eine Zeichensatztabelle von Windows. Der Parameter CHARSET= in dieser Datei und der Parameter WIN_INSTALLER_CHARSET in der Datei charset.mk müssen mit dem Zeichensatz übereinstimmen.

-
Die Parameter FONTNAME/FONTSIZE/CHARSET in dieser Datei müssen geeigete Werte haben. Für die meisten westlichen Zeichensätze sind die Werte "MS Sans Serif" und "8" sinnvolle Standardwerte. Für östliche Schriftsätze müssen geeignete Schriftarten aus dem Lieferumfang von Windows ausgewählt werden. Geeignete Werte für den Parameter CHARSET= siehe in der Tabelle unten.
browser/installer/installer.incUTF-8 
toolkit/installer/unix/install.itUTF-8{{ Deprecated_inline() }}
- -

Native Windows-Kodierungen

- -

Die nachfolgende Tabelle beinhaltet native Windows-Kodierungen und die jeweiligen Werte für WIN_INSTALLER_CHARSET und CHARSET=:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KodierungsbezeichnungWIN_INSTALLER_CHARSET (charset.mk)CHARSET= (windows/install.it)
ANSI_CHARSETCP12520
BALTIC_CHARSETCP1257186
CHINESEBIG5_CHARSETCP950136
EASTEUROPE_CHARSETCP1250238
GB2312_CHARSETCP936134
GREEK_CHARSETCP1253161
HANGUL_CHARSETCP949129
RUSSIAN_CHARSETCP1251204
SHIFTJIS_CHARSETCP932128
TURKISH_CHARSETCP1254162
VIETNAMESE_CHARSETCP1258163
Windows Sprachversionen Middle East:
ARABIC_CHARSETCP1256178
HEBREW_CHARSETCP1255177
Windows Sprachversionen Thai:
THAI_CHARSETCP874222
diff --git a/files/de/mozilla/localization/localization_content_best_practices/index.html b/files/de/mozilla/localization/localization_content_best_practices/index.html deleted file mode 100644 index d5b4c70dfc..0000000000 --- a/files/de/mozilla/localization/localization_content_best_practices/index.html +++ /dev/null @@ -1,324 +0,0 @@ ---- -title: Localization content best practices -slug: Mozilla/Localization/Localization_content_best_practices -translation_of: Mozilla/Localization/Localization_content_best_practices ---- -
-

 

- -

Dieses Dokument stellt Entwicklern bewährte Methoden zum Erstellen von standortabhängigem Code bereit und beschreibt wie man häufige Fehler, bei der Lokalisierbarkeit verhindert.

-
- -
-

Note: If you're a localizer and you want to contribute to the localization of Mozilla products, you might want to read our Localization quick start guide for information on localizing Mozilla code.

-
- -

Note on localizers

- -

Mozilla localizers a volunteers with very diverse technical skills: some of them rely exclusively on translation tools, others prefer to work directly with text editors and don't have problems working with VCS systems.

- -

It's important to consider this when adding strings, and especially localization comments for strings that contain references, or obscure technical details.

- -

Localization files

- -

Choose good key IDs

- -

The IDs (names) chosen for your keys, regardless of the file format, should always be descriptive of the string, and its role in the interface (button label, title, etc.). Think of them as long variable names. When you have to change a key ID, adding a progressive number to the existing key should always be used as a last resort. For example, suppose this string needs to be changed from "Event" to "Add New Event":

- -
new-event-header = Event
- -

add-new-event-header is definitely a better choice for the new string than new-event-header1.

- -

If a string is tied to an accesskey or a tooltip, use string IDs that highlight this relation:

- -
neweventbtn.label = Add event
-neweventbtn.accesskey = A
-neweventbtn.tooltip = Add a new event
-
- -

Don't duplicate IDs

- -

If you're adding new strings, check that you're not duplicating an existing ID. Depending on the parser logic, one of these two translations will be ignored.

- -

Add localization notes

- -

Localizers usually work on the localizable files without the context of the source files including the localized strings; it is important to add comments to the localizable files themselves, too. These comments are generally referred to as localization notes.

- -

Don't forget to add a localization note when:

- - - -

There is an established format for localization comments: it's important to follow the format as closely as possible, since there are a number of automated tools that parse these comments for easier access and use by localizers.

- -

DTD files

- -
<!-- LOCALIZATION NOTE (entity name): \{{privacy}} will be replaced at run-time by an
-     active link. the string 'privacy-link' will be used as text for this link. -->
-
- -

Properties files

- -
# LOCALIZATION NOTE(privacy-text): \{{privacy}} will be replaced at run-time by an
-# active link. the string 'privacy-link' will be used as text for this link.
-privacy-text = By proceeding you accept the \{{privacy}}.
-privacy-link = Privacy Terms
-
- -

File-wide comments should use the same format, they should be at the top of the file (after the license header) and just drop the (entity name/key) reference.

- -

Land good quality strings

- - - -

Use Unicode characters over their ASCII counterparts when possible

- -

Strings should use directional quotation marks when possible.

- - - -

Non-directional single, and double, quotation marks should be used in reference to HTML code, or other languages where ASCII character usage is required, such as HTML. HTML does not prefer one over the other, and our codebase uses them interchangeably as of March 2016.

- - - -

U+2026 (\u2026) is the horizontal ellipsis character. This character should be used in place of three consecutive periods.

- -

Create localizable strings

- -

Don't assume grammar structures

- -

You need to consider the need for different grammar structures in different locales, and add switching mechanisms to present them appropriately. You shouldn't make assumptions as to what those structures will be: instead, let locales/localizers decide. When in doubt, ask the localizers.

- -

Date and time formats

- -

For example, you shouldn't hard code date formats into applications:

- -
%A, %b %e
-// resulting in Wednesday, May 20
- -

This is fine in English, but in Italian results in "Mercoledì, Mag 20", which sounds unnatural. Every time you use this kind of structure, you should have a localizable string behind it, and let localizers decide the best order for their language.

- -

Units

- -

Another example is localizing percentages or units. Some locales use a space between the number and the % symbol, some don't, some use a non-breaking space.

- -

Splitting

- -

Splitting sentences into several keys often inadvertently presumes a grammar, a sentence structure, and such composite strings are often very difficult to translate. When a composite string is needed, try to give the translators "room to move".

- -

Word Order

- -

If a string will contain a placeholder, always add the placeholder to the string to allow the localizer to change the word order if necessary. For example, it might seem ok in English to present the strings [username] says: to localizers simply as says: but this will cause serious issues in many other languages as the agent of an action often will not come in front of the verb, but some other position. For example in Irish/Gaelic the correct order is be [username] at saying:. If a placeholder is present, this can be correctly localized as Tá %s ag rádh: but not without.

- -

Similarly, if the UI string is Flash Version, do not simply present the translator with Version for translation. Present the whole string or, if there is a significant need for a placeholder, use a placeholder. the word Version may have to go before or after Flash and one or both may need to be inflected.

- -

Idiom

- -

Idiom, in a loose sense, also has an impact on localization if it leads to strings being prepared in a way that renders them unlocalizable. For example, in English all the following begin with the same clause: The URL of this feed is invalid; The URL of this feed cannot be reached; The URL of this feed cannot be parsed. It might be tempting to 'save time' by presenting this as The URL of this feed %s and then is invalid; cannot be reached and cannot be parsed. However, linguistically these are different types of sentences and will be handled differently in other languages. This is usually not a case of translator choice but obligatory in the language. For example, in Gaelic these sentences must be translated as Tha URL an inbhir seo mì-dhligheach;Cha ruig sinn URL an inbhir seo and Cha ghabh URL an inbhir seo a pharsadh.

- -
-

Unless there are significant savings of translation volume involved, it is usually easier and quicker for translators to handle these as fixed strings rather than composed strings, especially considering the time needed for locating, checking and potentially fixing composed strings.

-
- -

Case and inflections

- -

(Also see section on Placeholders)

- -

Many languages have features like noun classes (i.e. nouns belonging to different categories and are treated differently by the grammar), case and inflections (changes are made to a word to indicate differences in meaning or use) and so on. In modern English, such features are rare and are mainly restricted to plural -s and verb forms (e.g. go > went is a form of inflection). Examples from other languages:

- - - -
-

Implication: Using placeholders for something like 'the text' or 'the file' works well in English but is likely to cause severe headaches for localizers if the placeholders cannot be inflected.

-
- -

Use proper plural forms

- -

Firefox supports proper plural forms. As a native English speaker, you might find it natural to use

- -
delete-cookie = Delete cookie
-delete-cookies = Delete cookies
-
- -

In Firefox this should be

- -
# LOCALIZATION NOTE (delete-cookies): Semi-colon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# #1 is the number of cookies to delete
-# example:
-delete-cookies = Delete #1 cookie;Delete #1 cookies
- -
-

Important: always include the localization note with this format if you use a plural form in Firefox. This comment is used by tools to identify strings with plural forms.

-
- -

One last advice: never use plural form as a replacement for single/multiple conditional. See {{ Bug("658191") }} for more details.

- -

Use ordered variables in string with multiple variables

- -

Consider this string from /browser:

- -
generalSiteIdentity=This website is owned by %S\nThis has been verified by %S
- -

First thing: always add a localization comment explaining what these variables mean, even if it seems obvious. Using multiple %S give the impression that the order of variables if fixed, which is actually not.

- -
# LOCALIZATION NOTE(generalSiteIdentity): %1$S is the owner of the current website,
-# %2$S is the name of the Certification Authority signing the certificate.
-generalSiteIdentity=This website is owned by %1$S\nThis has been verified by %2$S
- -

Avoid concatenations, use placeholders instead

- -

Consider this string:

- -
tos-text = By proceeding you accept the
-tos-link = Terms of Services
-
- -

Most developers would consider this a good solution and display the concatenation of tos-text+tos-link, with an active link on the second part. Unfortunately, this won't work at all: you need at least a third string to place after the link, without that some languages won't be able to create a natural sounding sentence.
-
- A much more flexible solution would be:

- -
# LOCALIZATION NOTE(tos-text): \{{link}} will be replaced at run-time
-# by an active link. String with ID 'tos-link' will be used as text
-# for this link.
-tos-text = By proceeding you accept the \{{link}}
-tos-link = Terms of Services
- -

And then replace \{{link}} at run-time with the second string. Note also the localization comments and make sure it is clear to the localizer which placeholder string will appear in lieu of the placeholder as this may affect translation and/or inflection. For example, By proceeding you accept the \{{Terms of Service}} will result in the Gaelic translation Ma leanas tu air adhart, bidh tu a' gabhail ri \{{teirmichean na seirbheise}}. But in another grammatical context, \{{Terms of Service}} may require a different inflection, for example \{{theirmichean na seirbheise}}. So if the localizer is left unsure as to which string goes into which placeholder, this may lead to bad translations.

- -

Don't reuse strings in different contexts

- -

This is particularly important for mobile, where different context often means different font and available space for the string. For example, if you're adding a new menu item in Settings on Android, don't use the same string for the menu item and the following screen header.

- -

Another example, some locales use nouns for titles, and verbs for actions (for example button labels). Sometimes they coincide with English, but they rarely do in other languages. Take Bookmark: it can be both a noun and a verb in English. A developer could be tempted to reuse the same string "Bookmark" in the button to add a bookmark, and in the header for the next dialog. This won't work in some languages.

- -

Avoid unnecessary complexity in strings

- -

Consider this string:

- -
privacy-link = <p>By proceeding you accept the <a href="https://www.mozilla.org/privacy" class="external">Privacy Terms</a>.</p>
- -

In this case, you shouldn't put the URL inside the localization string, unless you need it to be localizable. If you change the URL, you're going to need a new string ID; the same goes for the anchor's attributes, or the paragraph markup. Instead, you should use the following strings

- -
# LOCALIZATION NOTE(privacy-text): \{{link}} will be replaced at run-time
-# by an active link. String with ID 'privacy-link' will be used as text
-# for this link.
-privacy-text = By proceeding you accept the \{{link}}.
-privacy-link = Privacy Terms
- -

And then replace {{link}} at run-time with the link.

- -

Don't hardcode characters

- -

Typically white spaces, commas, or other separators (":", "|").

- -

If you need a trailing white space in a string, use the Unicode character \u0020 (that's usually a bad sign, you're concatenating it to another string). At some point, someone will accidentally trim that whitespace.

- -

Remove unused strings

- -

If you're removing features, don't leave around unused strings in the .properties file.

- -

Tooltips

- -

If a string is used as a tooltip, it should not end in a period (in English). Tooltips are never written in imperative mood but infinitive mood instead. Hence the proper absence of periods to indicate this isn't just a matter of consistency for en-US, as it is also vital info for localizers.

- - - -

The labels on controls and menu titles, menu option strings, and so forth should not end in periods (in English). These are generally not complete sentences, but instead, phrases that convey the idea of a concept or action. Therefore, for both correctness and consistency within en-US, please leave out the trailing periods for these items. This also helps with localization.

- -

Developer tools key shortcuts

- -

When translating Firefox strings from /devtools/ folder, you may see some keys like this:

- -
inspector.searchHTML.key=CmdOrCtrl+F
- -

The first part of the string `CmdOrCtrl` should not be translated. You may only translate the letter to better match your locale. This key shortcut definition matches the Electron key shortcut definition.

- -

Create localizable UI

- -

CSS issues

- -

Some CSS text/font properties may cause problems with text legibility when applied to certain language texts.

- - - -

Design for +50%

- -

Bear in mind that English strings will likely be a lot shorter than their international equivalents, so you need to leave some space in your UI to allow for this. Some examples:

- - - -

Another good example is Yes/No. There are two types of languages, those that have Yes/No as a single word, and those that don't and work on mirroring the verb. For example, a Do you want to open the page? > Yes/No dialog works in English, but in Gaelic/Irish/Welsh and several other languages the equivalent answer is Want/Not want.

- -

W3C has a good guide on the length ratios a developer should be prepared for.

- -

Test localizability

- -

As a developer, you should always test your patches not just for code errors, but also for localizability issues in case they involve string or UI changes.

- -

Gecko and mozilla-central

- -

First, make sure that there are no hard-coded strings, and all strings are available in localization files (.dtd, .properties). One possible way to test a patch for localizability issues is to alter the en-US localization files, adding extraneous characters to the original strings: this can help to identify both hard-coded strings and "flexibility issues" in the UI.

- -

Changing existing strings

- -

Updating Entity Names

- -

If you are changing a string such that its meaning has changed, you must update the entity or property name for the string to match the new meaning. If your changes are relevant only for English — for example, to correct a typographical error or to make letter case consistent — then there is generally no need to update the entity name.

- -

Changing the string ID will invalidate the existing translation, the new string will be reported as missing in all tools, and localizers will have to retranslate it. Given the diversity of tools used by localization teams, this is the only reliable method to ensure that localizers update existing localizations.

- -

If you change the entity or property name of a string, you must also update all instances where that entity or property name is used in the source code, including localization comments.

- -

If you change the entity or property name of a string, and the string has an accompanying access key, command key, or tooltip, you should update their names as well for consistency. This change is fundamental for access keys, since many localization tools use the entity name to connect an access key to its label. For example, to check if it's using a character not available in the original string, given entities "useBookmark.label" and "useBookmark.accesskey", if you change to "chooseBookmark.label" due to a string change, change the access key entity to "chooseBookmark.accesskey" to match it.

- -

String freeze

- -

Some repositories are considered to be string-frozen. This means that string changes are not allowed to land, and each case must be evaluated before landing. As a general rule, it's recommended to fix strings on the trunk/master repository, and create ad-hoc patches for string frozen repositories that don't involve string changes. Note that even removing strings is considered a breakage.

- -

In the case of Firefox and Thunderbird, string frozen repositories are: mozilla-aurora, mozilla-beta, mozilla-release.

- -

Bugzilla and l10n

- -

Do I need l10n feedback?

- -

Feedback from l10n-drivers is not necessary for each landing involving strings, as long as you're following the basic rules described in this document. If you have doubts about the localizability of some text or structure (not about the text itself, that would need copywriters), it's definitely good to ask feedback.

- -

Keywords: l12y, late-l10n

- -

Two keywords are generally used on Bugzilla:

- - - -

Alias :l10n

- -

The :l10n alias on Bugzilla (community@localization.bugs) is followed by some localizers and it could be CC'd to gather opinions from the wider l10n community (no point in opening NEEDINFO or requiring actions from this alias). There is also a dev-l10n mailing list and a #l10n channel on IRC, they might be a good place to ask questions.

diff --git a/files/de/mozilla/localization/lokalisierung_mit_mercurial/index.html b/files/de/mozilla/localization/lokalisierung_mit_mercurial/index.html deleted file mode 100644 index 6f7835ed1b..0000000000 --- a/files/de/mozilla/localization/lokalisierung_mit_mercurial/index.html +++ /dev/null @@ -1,252 +0,0 @@ ---- -title: Lokalisierung mit Mercurial -slug: Mozilla/Localization/Lokalisierung_mit_Mercurial -translation_of: Mozilla/Localization/Localizing_with_Mercurial ---- -

Für Mozillla verwenden wir das Versionskontrollsystem von Mercurial (Hg) zur Verwaltung des Quellcodes und der Lokalisierungen. Mit Mercurial können Lokalisierer lokal arbeiten (auf dem eigenen Rechner) und dann die Änderungen an ein Remote-Repository hochladen (push), das überlicherweise auf den Mozilla-Servern (hg.mozilla.org) gehostet wird. Für die Lokalisierung aktueller Versionen von Firefox, Thunderbird und SeaMonkey wird Mercurial verwendet. Falls die Dokumentation unvollständig ist oder du Fragen hast, schau bitte bei den #l10n- oder #hg-Kanälen oder auf irc.mozilla.org vorbei. Es lohnt sich auch die Mercurial FAQ zu lesen, falls du auf ein Problem stoßen solltest.

- -

Für die Motivierten und Schnellen unter euch folgen hier Anweisungen zur Installation und Konfiguration von Mercurial, eine Anleitung dazu, wie man Hochlade-Rechte für seinen Hg-Account erhält und einige Aufgaben, die ohne Account-Rechte erfüllt werden können.

- -

Mercurial installieren

- -

Befolge die nachfolgenden Anweisungen um Mercurial auf deinem System zu installieren. Sobald du mit der Installation von Mercurial fertig bist, zeigen wir dir Schritt für Schritt wie man Mercurial konfiguriert.

- -

Mercurial unter Linux

- -

Mit einem der folgenden Befehle ist es ganz einfach möglich Mercurial aus der Befehlszeile  heraus zu installieren. Wähle den zu deiner Distribution passenden Befehl aus und stelle sicher, dass das Terminal als root läuft.

- -
# Debian/ubuntu
-$ apt-get install mercurial
-
-# Fedora
-$ yum install mercurial
-
-# Gentoo
-$ emerge mercurial
-
-# Arch Linux
-$ pacman -S mercurial
-
-# OpenSolaris
-$ pkg install SUNWmercurial
-
- -

Wenn du eine grafische Oberfläche bevorzugst kannst du MercurialEclipe hier herunterladen und istallieren.

- -

Hat es funktioniert?

- -

Öffne ein Terminalfenster und gib folgenden Befehl ein: hg --version. Wenn eine Meldung mit der Version von Mercurial erscheint (z. B. Mercurial Distributed SCM (version 1.3.1)), war die Installation von Mercurial erfolgreich.

- -

Weitere Details

- -

Weitere Details zur Installation von Hg auf Linus-Systemen findest in den Anweisungen auf der Download-Seite von Mercurial

- -

Mercurial unter Windows

- -

Unter Windows gibt es zwei Möglichkeiten zur Installation:

- - - -

Mercurial Installer.pngBei derr Befehlszeileninstallation von Hg unter Windows ist es wichtig sicherzustellen, dass sich die ausführbare Datei von hg in der Variable %PATH% des Systems befindet (für TortoiseHg is dieser Schritt nicht nötig). Verwende das Hilfsprogramm add_path.exe, das unter C:\mozilla-build\hg zu finden ist, um diesen Schritt auszuführen.

- -
PS C:\Users\your_id> cd C:\mozilla-build\hg
-PS C:\mozilla-build\hg> .\add_path.exe /result .
-
- -

Beachte, dass der Punkt (".") am Ende des zweiten Befehl für das aktuelle Verzeichnis steht. Wenn das Hilfsprogramm %PATH% erfolgreich modifiziert hat, öffnet sich ein Dialog mit der Meldung "%PATH% wurde korrekt aktualisiert".

- -

Alternativ kann die Variable %PATH% auch manuell bearbeitet werden. Klicke hierfür mit der rechten Maustaste auf den Eintrag Computer im Startmenü, gehe zu Eigenschafte > Erweitert > Umgebungsvariablen, wähle PATH und klicke auf Bearbeiten. Wenn xx in der Auswahl nicht angezeigt wird, musst du auf Hinzufügen klicken und die Bearbeitung innerhalb des Dialogs Hinzufügen vornehmen (Beispiel siehe Screenshot).
- PATH.jpg

- -

Hat es funktioniert?

- -
    -
  1. Gehe zu Start > Ausführen...
  2. -
  3. Gib cmd.exe ein und klicke auf OK. Ein neues Shell-Fenster sollte erscheinen.
  4. -
  5. Gib im neuen Shell-Fenster hg --version ein. Wenn eine Meldung mit der Version von Mercurial erscheint (z. B. Mercurial Distributed SCM (version 1.3.1)), war die Installation von Mercurial erfolgreich.
  6. -
- -

Weitere Details

- -

Weitere Details zur Installation von Hg unter Windows findest in den Anweisungen auf der Download-Seite von Mercurial.

- -

Mercurial unter Mac OSX

- -

Die Installation von Hg unter Mac OSX ist sehr einfach. Mit Hilfe von MacPorts kann Mercurial über das Terminal mit folgendem Befehl installiert werden:

- -

$ sudo port install mercurial

- -

Es ist außerdem möglich Mercurial über die dmg-Datei von der Hg Download-Seite zu installieren. Hier wird man über einen Installations-Dialog Schritt für Schritt durch den Prozess geleitet.

- -

Wenn du eine grafische Oberfläche bevorzugst, kannst du MercurialEclipse hier herunterladen und installieren.

- -

Hat es funktioniert?

- -

Öffne ein Terminal-Fenster und gib folgenden Befehl ein: hg --version. Wenn eine Meldung mit der Version von Mercurial erscheint (z. B. Mercurial Distributed SCM (version 1.3.1)), war die Installation von Mercurial erfolgreich.

- -

Weitere Details

- -

Weitere Details zur Installation von Hg unter Mac OSX findest in den Anweisungen auf der Download-Seite von Mercurial.

- -

Mercurial konfigurieren

- -

Sobald Mercurial installiert wurde, muss es konfiguriert werden, um genutzt werden zu können.

- -

Die Mercurial-Konfiguration befindet sich in einer config-Datei, die du selbst erstellen musst. Je nach Betriebssystem heißt die config-Datei entweder ~/.hgrc (UNIX-Systeme) oder Mercurial.ini (Windows).

- -

Die config-Datei sollte die folgenden Einstellungen haben:

- -
[ui]
-username = Your Real Name <user@example.com>
-merge = internal:merge
-
-[defaults]
-commit = -v
-
-[diff]
-git = 1
-showfunc = 1
-unified = 8
- -

Befolge folgende Schritte für die Konfiguration von Hg: 

- -
    -
  1. Erstelle eine neue Datei in einem Texteditor deiner Wahl. 
  2. -
  3. Kopiere die Einstellungen oben und füge sie in diese neue Datei ein. 
  4. -
  5. Speichere die Datei entweder unter dem Namen .hgrc (UNIX-Systeme) oder Mercurial.ini (Windows) und lege Sie in unter $HOME/ oder C:\mozilla-build\hg\ or C:\Program Files\Mercurial\ ab.
  6. -
- -

Wenn die Installation und Konfiguration von Hg abgeschlossen ist, gibt es einige Aufgaben die ohne Upload-Rechte für Hg ausgeführt werden können. 

- -

Repositorys klonen und aktualisieren

- -

Es gibt ein paar Repositorys mit  en-US Quelldateien, die für die meisten Localea relevant sind:

- - - -
-

Wenn man das comm-central Repository erstellt, beinhaltet dieses auch das mozilla-central repository. Es ist also möglich, das für die Entwicklung von Firefox, SeaMonkey und Thunderbird konfigurierte Repository zu verwenden, ohne mozilla-central ein weiteres Mal anlegen zu müssen. 

-
- -

So erstellt (oder klont) man die en-US Quelldateien beim ersten Mal:

- - - -
hg clone https://hg.mozilla.org/mozilla-central/
-
- -

So wird das mozilla-central Repository ins Verzeichnis mozilla-central geklont.

- - - -
hg clone https://hg.mozilla.org/comm-central/
-cd comm-central
-python client.py checkout
-
- -

Der erste Befehl erstellt einen Klon des comm-central Repositorys. Der zweite Befehl führt dich zu diesem Verzeichnis. Der dritte Befehl erstellt einen Klon von mozilla-central und legt einige weitere hg-Repositorys an. Die anderen Verzeichnisse werden für SeaMonkey und Thunderbird benötigt.

- - - -
hg clone https://hg.mozilla.org/l10n-central/ab-CD/
- -

Lokale Repositorys aktualisieren

- - - -
hg pull -u
-
- -

Dieser Befehl ruft neue Changesets von mozilla-central ab und wendet diese Änderungen auf deine Arbeitskopie an.

- - - -
python client.py checkout
- -

Dieser Befehl ruft neue Changesets von comm-central, mozilla-central und anderen passenden Repositorys ab und wendet diese Änderungen auf deine Arbeitskopie an.

- - - -
hg pull -u
- -

L10n-Patches erstellen

- -

Another thing you can do with Hg without needing account priviledges is creating L10n patches of your work for someone else to commit to your remote L10n repo on the Mozilla servers. Doing this ensures that your dashboards are always accurate, as they look at your remote repo.

- -

Here's how to create a L10n patch with Hg and the Mq extension:

- -
    -
  1. Enable Mq by adding hg.ext =  to your Mercurial config file (~/.hgrc on Unix-like systems or Mercurial.ini on Windows) under the [extensions] section.
  2. -
  3. Open your command line tool and navigate to your L10n directory.
  4. -
  5. Inside your L10n directory, init your repo with Mq by running hg init --mq.
  6. -
  7. To create a new patch, run hg qnew -m "Your commit message" patch-name.patch. The commit message should take the form of "Bug 123456 - Change this thing to work better by doing something; r=reviewers" if you are to fix a bug.
  8. -
  9. Make your change.
  10. -
  11. Once you finish making your change, run hg qrefresh to commit your changes to the patch.
  12. -
  13. Navigate to your <repository>/.hg/patches to find your .patch.
  14. -
  15. You may repeat from step 4 to create another patch. Your patches will be incremental, i.e. new patches are created based on old patches. If you want to commit all the patches to the repository and cleanup the patch queue, run hg qfinish.
  16. -
- -

Please refer to MqTutorial and Mq documentation for further uses of Mq extension to manage patches.

- -

Mercurial account priviledges

- -

Eventually, you or your team leader will need Hg account priviledges. Let's face it, it's just more convenient to commit and push your work to the remote repo yourself, rather than creating patches and asking someone else to push them for you.

- -

To get write access to the l10n hg repositories on the Mozilla server, there's a bit of paper work to be done. The localization team owner needs to file a bug requesting an hg account. This bug will request level 1 L10n priviledges. You need to follow the instructions regarding the contributor form. Write access to the hg repositories requires a ''voucher'', which, for the owner, will be done based on the review by Mozilla. For peers of a localization, the owner can vouch (once she or he is registered).

- -

Sending changes to Mozilla

- -

Now that you have Hg account privileges, you can send your work to Mozilla all by yourself. Here are the steps to send your L10n work using Mercurial:

- -
    -
  1. Since your L10n work takes place in your own local repository, you should ensure that there are no changes made to the remote repository before committing your work. To do this, update your locale, as per the section above.
  2. -
  3. After finishing a change or set of changes and checking you have updated to the latest, you should commit by entering this command:
  4. -
- -
hg commit -m "your message identifying the change (bug 555)"
- -

Committing won’t send your changes to Mozilla’s repository, but prepares them for it. The next step will send your changes to your remote repo via push.

- -
    -
  1. To push to mozilla-hosted repositories, you have to have committer access, and you must edit the file (your-local-hg-root AKA the directory you pulled your locale into)/.hg/hgrc (note, this is NOT your ~/.hgrc) to add these lines (replacing ab-CD with your locale code):
  2. -
- -
[paths]
-default = https://hg.mozilla.org/l10n-central/ab-CD/
-default-push = ssh://hg.mozilla.org/l10n-central/ab-CD/
-
- -
    -
  1. You’ll also need to tell ssh which account to use for your pushes, too, by editing ~/.ssh/config and adding these lines, where user@host.domain is your account:
  2. -
- -
Host hg.mozilla.org
-User user@host.domain
-
- -
    -
  1. Now you can push your work to the repository (and check the result on the dashboard) by entering this command from your local directory:
  2. -
- -
hg push
- -

And tah dah! You're done! Congratulations on finishing the tutorial. Take a break and grab a snack, you deserve it

diff --git a/files/de/mozilla/localization/lokalisierung_von_pontoon/index.html b/files/de/mozilla/localization/lokalisierung_von_pontoon/index.html deleted file mode 100644 index edd35eb17e..0000000000 --- a/files/de/mozilla/localization/lokalisierung_von_pontoon/index.html +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Lokalisierung von Pontoon -slug: Mozilla/Localization/Lokalisierung_von_Pontoon -translation_of: Mozilla/Localization/Localizing_with_Pontoon ---- -

Lokalisierung von Pontoon is a web-based, What-You-See-Is-What-You-Get (WYSIWYG), localization (l10n) tool. At Mozilla, we use Pontoon to localize all Mozilla products and websites, ranging from Firefox to Mozilla.org. Pontoon is a very simple and intuitive tool that requires little to no technical skill to use in the l10n workflow. Here we'll discuss how to use Pontoon to localize projects, from first sign-in to finalizing your contributions. Along the way, we'll point out some sweet features that will make you more efficient and make your l10n contributions easier.

- -
-

Are you a developer? Read about implementing Pontoon in your project or learn how to get involved on GitHub.

-
- -

First steps

- -

Pontoon's home page is very easy to use. To begin localizing the project, click on the Persona icon and sign in. Next, simply select the project you want to work on and your locale from the dropdown menus. Pontoon will automatically open that locale's project for you to get started. Note that for our purposes here, we'll be using Firefox Affiliates website to demo Pontoon's functionality and workflow. And there it is, opened inside Pontoon:

- -

Browser app and workspace

- -

Main toolbar

- -

As you can see, most of the interface is taken by the website being translated. Only the toolbar on top belongs to Pontoon, containing the following items (from left to right):

- -

Main toolbar

- -

List of strings

- -

Opens a sidebar with a list of all strings to localize.

- -

Project selector (Affiliates)

- -

Switches between projects to localize.

- -

Resource selector (Homepage)

- -

Switches between project resources to localize, like subpages or localization files. Hidden if no resources available for project.

- -

- -
-
- -

Locale selector (Slovenian)

- -

Switches between languages to localize.

- -

Go

- -

Opens project-resource-locale selection.

- -

Progress indicator

- -

Displays your progress on the resource being localized. More details are available in the popup.

- -
-
- -

User menu

- -

Allows for user-specific tasks, like commiting to repository, downloading files and signing out.

- -

Info menu

- -

Gives important information, like the anticipated project timeline and a list of keyboard shortcuts.

- -
-
- -

Alright, how about we do some translating now?

- -
-
- -

Translate strings

- -

When using Pontoon for localization, you have a couple of options to translate your strings. You can translate in-context, out-of-context, or a combination of the two. We'll start with looking at in-context translation.

- -

In-context

- -

Pontoon's in-context translation mode is what puts it above others. It opens a web page (or web app) and enables real-time editing of that page. Here's how you translate your first string:

- -

In-context localization

- -
    -
  1. Hover over the text you want to translate with your mouse.
  2. -
  3. An edit button appears over that text. Click on it to enable the translate mode.
  4. -
  5. Replace the original text with its translation into your language.
  6. -
  7. Click the save button to save your translation.
  8. -
- -
-

Out-of-context

- -

Some strings are impossible to translate in-context, e.g. the contents of the <title> tag in websites and strings with placeables or different plural forms. By clicking on the hamburger icon in the main toolbar, a list of all strings and available translations will open in the sidebar. You can also use the sidebar for out-of-context localization:

- -

Out-of-context localization: list Out-of-context localization: translate

- -
    -
  1. Click on the string you'd like to translate.
  2. -
  3. Translation panel with original string and its details (e.g. comments) opens.
  4. -
  5. Translate the string in the translation area below.
  6. -
  7. Click the save button to save your translation.
  8. -
- -

As you translate strings out-of-context, translations will also appear in website, if they could also be translated in-context.

- -

Translation helpers

-
- -

As you can see, suggestions from history, translation memory, machine translation and other locales are also available in the out-of-context translation panel. We call all of these translation helpers and here's how each of them will help you as you translate strings:

- -

Translation helpers: History Translation helpers: Machinery Translation helpers: Other locales Translation helpers: Search

- -

History

- -

Displays previously suggested translations, including from other users.

- -

Machinery

- -

Displays matches from various services: internal translation memory, Mozilla Transvision, open source translation memory, Microsoft terminology and machine translation.

- -

Other locales

- -

Displays matching translations from other locales.

- - - -

Almost like machinery, but takes provided keyword as input parameter instead of the original string.

- -

By clicking a suggestion, it gets copied into translation area.

- -
-
- -

Publishing your localization

- -

Suppose you now want to publish your l10n work by committing it to a repo. Pontoon lets you do that too! Actually, it does that for you by automatically syncing with repositories on hourly basis. You can now pat yourself on the back, do a little dance, go to sleep or do something else to celebrate your work!

diff --git a/files/de/mozilla/localization/lokalisierung_von_xliff-dateien/index.html b/files/de/mozilla/localization/lokalisierung_von_xliff-dateien/index.html deleted file mode 100644 index b11efae69b..0000000000 --- a/files/de/mozilla/localization/lokalisierung_von_xliff-dateien/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Lokalisierung von XLIFF-Dateien für iOS -slug: Mozilla/Localization/Lokalisierung_von_XLIFF-Dateien -translation_of: Mozilla/Localization/Localizing_XLIFF_files ---- -

Firefox für iOS verwendet das XML-basierte Dateiformat XLIFF zur Speicherung und Weitergabe von Lokalisierungsdaten. XLIFF (eXtensible Localisation Interchange File Format) ist ein Lokaliserungsstandard, der von der Normungsorganisation OASIS verwaltet wird. Ziel dieses Standards ist ein XML-basiertes Dateiformat, das ohne das Risiko von Datenverlust oder -beschädigung zum Austausch von Lokaliserungsdaten zwischen verschiedenen Tools verwendet werden kann. Die meisten Übersetzungstools unterstützen den XLIFF-Standard, sodass die Lokalisierung von XLIFF-Dateien für Firefox für iOS einfach mit diesen Tools erfolgen kann. Die direkte Bearbeitung einer XLIFF-Datei ist recht simpel, besonders wenn man sich mit XML auskennt. Dieses Tutorial wird Schritt für Schritt zeigen wie Strings in einer XLIFF-Datei übersetzt werden. 

- -

String-Repository für Firefox auf iOS

- -

Die Datei firefox-ios.xliff befindet sich im SVN.

- -
    -
  1. Entscheiden Sie, wo auf Ihrem lokalen Computer Sie die Kopie aus dem github-Repository speichern möchten und navigieren Sie im Terminal dorthin.
  2. -
  3. Geben Sie folgenden Befehl ein: git clone https://github.com/mozilla-l10n/firefoxios-l10n/your-locale-code/
  4. -
  5. Das Projekt firefox-os sollte sich nun zusammen mit der Datei firefox-ios.xliff in dem von Ihnen gewählten Ordner befinden.
  6. -
- -

Übersetzen der XLIFF-Datei

- -
    -
  1. Öffnen Sie die Datei firefox-ios.xliff in einem Texteditor Ihrer Wahl.
  2. -
  3. Fügen Sie im <file>-Tag das Attribut target-language mit dem Code Ihrer Locale als Wert hinzu (z. B. target-language="xx-XX"). Beachten Sie, dass es innerhalb eines XLIFF-Dokuments viele <file>-Tags geben kann. Jedes <file>-Tag muss das Attribut target-language mit dem Code Ihrer Locale als Wert enthalten (z. B. target-language="xx-XX").
  4. -
  5. Strings befinden sich zwischen <trans-unit>-Tags. Englische Quell-Strings befinden sich zwischen den Child-Tags <source>. Nachfolgend ein Beispiel einer solchen <trans-unit>. -
    <trans-unit id="Add to Bookmarks">
    -    <source>Add to Bookmarks</source>
    -</trans-unit>
    -
  6. -
  7. Ihre Übersetzung muss sich zwischen den Child-Tags <target> befinden. Gehen Sie die gesamte XLIFF-Datei durch und fügen Sie unter jedem <source>-Tag das Tagpaar <target></target> hinzu. Dies wird Ihnen helfen, die Strings auszumachen, die übersetzt werden müssen. Das Tagpaar <source> darf nicht gelöscht werden. -
    <trans-unit id="Add to Bookmarks">
    -    <source>Add to Bookmarks</source>
    -    <target>YOUR_TRANSLATION_HERE</target>
    -</trans-unit>
    -
    -
  8. -
  9. Fügen Sie die Übersetzungen der Strings zwischen den <source>-Tags zwischen die <target>-Tags darunter ein. Bitte beachten Sie, dass folgende Zeichenfolgen nicht übersetzt werden dürfen. -
      -
    1. $(SOME_TEXT_HERE) ein Variablenformat,
    2. -
    3. %1$@ ist ein weiteres Variablenformat.
    4. -
    5. <note>-Tags beinhalten Hinweise der Entwickler zur Lokalisierung und sollten nicht übersetzt werden. 
    6. -
    - -
    <trans-unit id="Add to Bookmarks">
    -    <source>Add to Bookmarks</source>
    -    <target>Agregar a marcadores</target>
    -    <note>No comment provided by engineer.</note>
    -</trans-unit>
    -
    -
  10. -
  11. Speichern Sie Ihre Übersetzungen regelmäßig.
  12. -
  13. Wenn Sie mit Ihrer Übersetzung fertig sind, ist es wichtig sicherzustellen, dass der XML-Code in der XLIFF-Datei valide ist (z. B. keine beschädigten Tagpaare enthält). Öffnen Sie die Datei in Firefoy, um eine Validitätsprüfung auszuführen und verbessern Sie alle Fehler, die gemeldet werden. 
  14. -
- -

Hochladen der XLIFF-Datei

- -
    -
  1. Laden Sie mit dem folgenden Befehl die übersetzte XLIFF-Datei in das Verzeichnis Ihrer Locale hoch: git commit -m "Commit message here" .
  2. -
  3. Speichern Sie Ihre Version im github-Repository: git push
  4. -
  5. Legen Sie die Füße hoch, gönnen Sie sich ein Bier (oder eine Limo) und seien Sie stolz darauf etwas Neues, Anderes und Aufregendes gemacht zu haben! 
  6. -
diff --git "a/files/de/mozilla/localization/programm\303\274bersetungen_mit_mercurial/index.html" "b/files/de/mozilla/localization/programm\303\274bersetungen_mit_mercurial/index.html" deleted file mode 100644 index f2dd7ac06d..0000000000 --- "a/files/de/mozilla/localization/programm\303\274bersetungen_mit_mercurial/index.html" +++ /dev/null @@ -1,284 +0,0 @@ ---- -title: Programmübersetzungen mit Mercurial -slug: Mozilla/Localization/Programmübersetungen_mit_Mercurial -translation_of: Mozilla/Localization/Application_Translation_with_Mercurial ---- -

{{draft}}

- -

Herausfinden, wo Übersetzungen fehlen

- -
    -
  1. Herausfinden, für welche Ableger der Mozilla-Familie noch Übersetzungen fehlen. Dazu sollte die Übersetzungsseite des verantwortlichen Sprachteams gelesen werden (dazu hier den richtigen Sprachcode - z. B. "de" für Deutsch - anklicken). Das Lokalisationstem kennt die Ableger. Der Standard-Lokalisationsableger ist aurora.
  2. -
  3. Als nächstes muss überprüft werden, was noch unübersetzt ist, dazu zur Lokalisations-Statusseite gehen und die Seite der Zielsprache aufrufen.
  4. -
  5. Im Abschnitt "Applications & Sign-offs" befinden sich verschiedene Produkte und deren Ableger, die noch nicht fertig übersetzt sind. -
      -
    • gaia-* bezeichnet Ableger von Firefox OS, dem Betriebssystem für Mobilgeräte.
    • -
    • Firefox und fx-* beueichnen Ableger vom Desktop-Firefox, dem Browser für PCs und Laptops auf Windows, Mac OS oder Linux.
    • -
    • Fennec und fennec-* bezeichnen Ableger vom mobilen Firefox, dem Firefoxbrowser für Android.
    • -
    • Thunderbird und tb-* bezeichen Ableger von Thunderbird, dem E-Mail-Programm, Newsgroup- und Feedreader und Chatprogramm. Die Lokalisation des Lightning Kalendar Add-Ons findet auch hier statt.
    • -
    • SeaMonkey und sea-* bezeichnen Ableger von SeaMonkey, der All-in-One Internetsuite, die Browser, E-Mail- und Chatprogramm und mehr enthält.
    • -
    • Lightning und cal-* bezeichnen Ableger von Lightning, dem Kalender Add-On für Thunderbird. Die Lokalisation von Lightning findet inzwischen in Thunderbirds tb-*-Teil statt, der cal-*-Bereich wird nicht länger verwendet.
    • -
    -
  6. -
  7. In diesem Beispiel soll der Aurora-Ableger des Desktop-Firefox übersetzt werden. Deshalb zu fx_aurora scrollen.
  8. -
  9. Der Text daneben zeigt den Übersetzungsstatus an. -
      -
    • Wenn dort 'Translated' steht, ist der Ableger schon fertig übersetzt. Nun können Sie entweder ein anderes Produkt übersetzen oder jemanden von der Lokalisationsseite (siehe oben) kontaktieren, damit er Sie informieren kann, wenn neue unübersetzte Texte vorhanden sind.
    • -
    • Wenn es ein roter Text ist, der aus einer Nummer und dem Wort 'missing' besteht, sind unübersetzte Texte vorhanden und die Anleitung kann weiter ausgeführt werden.
      -  
    • -
    -
  10. -
- -

Required Tools

- -

Build pre-requisites

- -

First, get the required programs to compile Mozilla applications like Firefox and Thunderbird from Build Instructions. This is only necessary once.

- -
-

Install MozillaBuild 1.9.0pre from https://groups.google.com/forum/#!topic/mozilla.dev.platform/aIFUKRrb3IY

-
- -
-

MozillaBuild must be installed into an absolute file path without whitespaces, else it will break.

-
- -

File comparison program

- -

For the translation, it is recommend to use file comparison program to compare the English file (containing the new texts) with the file of your locale (which is still missing the new strings). This example uses WinMerge: Download and install it. A comparison of alternatives (e.g. for Linux and Mac OS) is available on Wikipedia.

- -

File and text editor

- -

For editing individual files a text editor can be a better choice than a file comparion program, e.g. because the file is new and everything has to be translated, the file is too customized to compare it to the English one, or special functionality is required (e.g. bookmarking untranslated lines). Use a text editor you are comfortable with. This example uses Notepad++.

- -

Progress tracking tool

- -

To track which strings and files already have been translated and later also to see which new strings have already been tested in the product as being a good translation for the functionality behind the translated strings and that the translated texts fit into the available, the translation progress should be tracked. This can be done in a text editor or word processor or any other tool in which you can attach different kind of states to the individual texts to translate. The Firefox extension Scrapbook is used in this guide. Install it into your default Firefox profile (you will have more than one profile when following this guide).

- -

Getting the current Texts in English and your Locale

- -

Obtaining the English texts with the source code

- -

Get the source code by downloading the following file:

- - - -

In the next step, we will unpack the source code:

- -
    -
  1. Open an input shell, e.g. by pressing the Windows key and R on the keyboard Screenshot of Windows key + R key or by calling the "Run..." command from the Windows "Start" button, and then typing cmd and pressing the Enter key.
  2. -
  3. Launch the installed MozillaBuild toolset by launching it with its path, e.g. C:\Mozilla\Coding\Buildtools\MozillaBuild\start-shell-msvc2010.bat You can autocomplete the file path after typing a few characters and then pressing the Tabulator key.
    - If you launch the start-shell-l10n.bat, compiling features will be disabled. You can create translation patches, but creating language packs for the application, binary repacks of the application (changing the localization of the program), and compiling the application likely won't work.
  4. -
  5. You are now in the Mozilla development environment which emulates a Linux environment. Now go to the directory where you want to put the source code. It's highly recommended to put it onto the fastest hard drive in the device. File paths here work starting with a slash (/) followed by the drive letter, and then the directory structure like on Windows, but using slashes (/) instead of backslashes (\). So let's go to C:\Mozilla by typing
    - cd /c/Mozilla/
  6. -
  7. Create a new directory for the source code:
    - mkdir mozilla-aurora
  8. -
  9. Initialize the new directory as new repository:
    - hg init mozilla-aurora
  10. -
  11. Go into the new directory:
    - cd mozilla-aurora
  12. -
  13. Unpack the source code:
    - hg unbundle /path/to/the/downloaded/mozilla-aurora.hg
    - This can take some time, mostly depending on the performance of the hard drive.
  14. -
- -

Obtaining the texts of your localization

- -
    -
  1. Go back to the parent folder of mozilla-aurora:
    - cd ..
  2. -
  3. Find the localization repository for your branch and language on http://hg.mozilla.org/ E.g. for aurora and German (language code 'de'), it is http://hg.mozilla.org/releases/l10n/mozilla-aurora/de/ Copy that url to the clipboard.
  4. -
  5. Copy the repository to your computer by running the following command:
    - hg clone http://hg.mozilla.org/releases/l10n/mozilla-aurora/de/ de-mozilla-aurora
    - This should proceed pretty fast.
    - On Windows, you can paste the url by calling the Paste command from the window menu in the upper left corner of the window.
  6. -
- -

Configuring your Mercurial user settings

- -

Still in the command prompt, go to your home directory in the file system, e.g. for a Windows user, it looks like C:\Users\MyName , depending on your Windows version:

- -

cd /c/Users/MyName

- -

Now list all the files here:

- -

ls -l

- -

If there is no file called .hgrc , create it with

- -

> .hgrc

- -

This file stores your general Mercurial settings (Mercurial is the tool which manages the source code and its history of changes).

- -

Now go in the file system to the file and open it in your favorite text editor. Windows users can use e.g. Notepad++.

- -

Paste the following content into the file:

- -
[ui]
-username = Firstname Lastname <mynick@example.com>
-merge = internal:merge
-
-[alias]
-qexport = export -g -r qtip
-qexportall = diff -r qparent
-
-[defaults]
-commit = -v
-diff = -p -U 8
-qdiff = -p -U 8
-qnew = -U
-
-[diff]
-git = 1
-showfunc = 1
-unified = 8
-
-[extensions]
-hgext.mq =
-progress =
-
-[hooks]
-
-
- -

Put in your name and email address which later will be public on the internet after your translation patch got accepted and uploaded. Save the file and close it.

- -

Enabling Mercurial queues (revertable patches)

- -

Some time will pass between the moment in which you start the localization, finish it, test it, improve it, upload it for review and get review (maybe not approved on first try). Other localizers will likely have done changes to the translation, either adding new texts, removing obsolete ones or improving the current texts. This can cause conflicts between the changes you created and theirs. For this reason, updating patches kann be necessary so Mercurial is still able to find the lines in the files which it has to replace or where it has to add them. Mercurial queues allow to revert changes and also pull changes and reapply your local changes.

- -

Go back to the localization directory:

- -

cd /c/Mozilla/de-mozilla-aurora

- -

Initiate Mercurial queues:

- -

hg qinit

- -

Get to know the translation style

- -

For having good chances that the translation suggestions get accepted, they should match the translation style of the texts in the application already translated. In general, the labels in the applications should have the same style like the operating system, e.g. use the same order of subject, verb and objects; decline verbs or not like the operating system does.

- -

The following resources can help figuring out the translation style and translate according to them:

- - - -

Choosing what to translate

- -

Go to the Localization status page and click on the '<number> missing' label of the Firefox branch on which you want to translate, e.g. fx_aurora. The page which opens has a bar holding information about how many texts (strings) have already been translated, how many there are in English and your locale and have the same text, and how many are missing in your local. The interesting part follows below as list of missing texts.

- -

unchanged localization report

- -

The first line shows the locale for which the texts are bing translated (in this example: de - German). With the second line start the file paths of the files which require changes. The file paths follow the directory structure of the locale repository downloaded for translation. In this example, the file aboutDialog can be found in the folder browser/chrome/browser/. The text striked through are texts which have been removed in the English version and can also be removed from the locale being worked on. In this example we will translate the one new text with the id privatebrowsingpage.howToStart4 in the file aboutPrivateBrowsing.dtd.

- -

Tips for finding files with usually easily translateable texts:

- - - -

Tracking the translation progress

- -

If you translate more than a few strings, you usually want to keep track of what has already been translated (and later if the text has been tested in the product as fitting into the available area and suiting the functionality it describes). This guide achieves this with the Firefox extension Scrapbook.

- -
    -
  1. You installed Scrapbook earlier, now open it in Firefox either by calling it from the Firefox menu bar (press the Alt key to show it if necessary) using "View" > "Sidebar" > "Scrapbook" or by clicking its toolbar button which you likely have to add by toolbar customization if you didn't do this before.
  2. -
  3. Drag the tab with the localization error showing missing and obsolete strings to the sidebar.
  4. -
  5. After Scrapbook has saved the web page to your local disk, click with the right mouse button on the page in the sidebar and choose "Properties" from the context menu which gets opened. Rename it something meaningful, e.g. "Firefox <version number> translation".
  6. -
  7. After you saved the dialog, click with the left mouse button on the page in the sidebar to open the locally saved copy.
  8. -
- -

Opening English files and the target locale side-by-side

- -

The localization report shows the IDs of added or removed texts, but the English text itself is still unknown. We get this by comparing the English version of the file with the one of the locale we are translating in. To do so,

- -
    -
  1. Launch WinMerge.
  2. -
  3. From its "File" menu, choose "Save project".
  4. -
  5. For the file path of the left directory, go to the downloaded mozilla-aurora source code and then into its browser/locales/en-US/ folder. In this example, the absolute file path is C:\Mozilla\mozilla-aurora\browser\locales\en-US.
  6. -
  7. Enable read-only mode for the left directory.
  8. -
  9. For the file path of the right directory, go to the downloaded translation directory de-mozilla-aurora and then into its browser folder. In this example, the absolute file path is C:\Mozilla\de-mozilla-aurora\browser.
  10. -
  11. Save this comparison as project so you can easily relaunch this comparision without selecting the directories again. A good name is e.g. translation-mozilla-aurora-browser.winmerge
  12. -
  13. Open the comparison you just saved.
  14. -
- -

The translation

- -
    -
  1. -

    Bring the console with Mercurial to the front.

    -
  2. -
  3. -

    Start tracking changes you make against the localization repository by telling it that with the qnew subcommand to save these changes as patch in a mercurial queue. This patch needs a name, choose something meaning full like "Firefox-<version number>-more-details". In this example, Firefox-29-aboutPrivateBrowsing will be used.
    - hg qnew Firefox-29-aboutPrivateBrowsing

    -
  4. -
  5. Switch back to WinMerge and navigate to browser/chrome/browser/ and open the aboutPrivateBrowsing.dtd file. You will see something like this:
    - single file comparision in WinMerge without changes by the user
    - On the left, you see an overview of the comparison of the English and the non-English file. Gray parts indicate blocks of texts which can't be found in that file, dark yellow represents changed lines and light yellow the parts of text in it which is different.
  6. -
  7. Below the license header which should never changed, the texts are organized in the following format:
    - <!ENTITY stringid "Text which will be shown in Firefox">
  8. -
  9. As you can see there is a bigger block of text not recognized. This is due to the texts which have in the English versionmoved from below the string with the id privatebrowsingpage.howToStart3 to a position above it. Cut and paste these strings in the localized file so their position corresponds to the on in the English file.
  10. -
  11. Press the F5 key or click the reload button in WinMerge's toolbar to re-compare the files.
  12. -
  13. Now copy the empty lines below privatebrowsingpage.learnMore and the line <!-- TO BE REMOVED POST-AUSTRALIS --> to the localized file. This text is a comment (which in .dtd files always can be found between <!-- and -->). There is no need to translate this text.
  14. -
  15. Now we copy the two missing lines from the English file and insert them in the localized file:
    - <!-- LOCALIZATION NOTE (privatebrowsingpage.howToStart4): please leave &newPrivateWindow.label; intact in the translation -->
    - <!ENTITY privatebrowsingpage.howToStart4               "To start Private Browsing, you can also select &newPrivateWindow.label; from the menu.">

    - The first line is a comment providing information on the localization of the text in the following line. &newPrivateWindow.label; has to be left unchanged so it can be replaced with the text of the string id &newPrivateWindow.label; whis is stored elsewhere.
  16. -
  17. Translation time: Translate the text. Afterwars, the line should look somehow like this:
    - <!ENTITY privatebrowsingpage.howToStart4               "Der private Modus kann auch über den Menü-Eintrag &newPrivateWindow.label; gestartet werden.">
  18. -
  19. Save the file.
  20. -
- -

Exporting the changes as patch

- -

A patch is a file containing recorded changes to a repository. It can be used to apply these changes to a copy of the repository yet without these changes.

- -
    -
  1. Tell Mercurial to store the changes in the Mercurial queue with the qref command. We also create a commit message which will describe the changes in the patch and later get used when the patched gets checked in ('added') to the official repository with the localized files. For the commit message, we have to use the -m command line flag,
    - hg qref -m "Firefox 29: Localize missing string in aboutPrivateBrowsing.dtd"
    - You can change the commit message in the Mercurial queue every time by calling hg qref again.
  2. -
  3. Now export the patch to the file system using the qexport command which is defined in the .hgrc file (see above):
    - hg qexport > ../firefox-29-aboutPrivateBrowsing-v1.patch
    - This creates a patch file called firefox-29-aboutPrivateBrowsing-v1.patch containing the changes in the parent directory of de-mozilla-aurora (in this example: C:\Mozilla\).
  4. -
- -

Proof-reading and altering the patch

- -

Now proof-read the patch. This detects often more than 90 percent of the possible reasons for the reviewer to not accept the patch. If you find that changes have to be done, edit the real aboutPrivateBrowsing.dtd file from the localization repository, save it and follow the steps from Exporting the changes as patch (see above).

- -

Validating the translation in the product

- -

This guide hasn't yet a section about the validation of the translation. Please follow the instructions from the QA phase section of the Localization quick start guide.

- -

Submitting the patch for review

- -

Now the patch has to be shared so the people currently trusted to change the official translation can review the suggested changes.

- -
    -
  1. File a bug ("ticket") in the Mozilla Localization product and choose as component the localization for which you have translated.
  2. -
  3. Choose a meaningful bug summary which will be shown for searches etc. like in this example "Firefox 29: aboutPrivateBrowsing.dtd"
  4. -
  5. Fill any important and additional information into the description field.
  6. -
  7. Click the 'Add attachment' button.
  8. -
  9. Select the exported patch file with the file picker. The checkbox for 'patch' should get automatically checked.
  10. -
  11. Add a meaningful name for the attachment, e.g. aboutPrivateBrowsing.dtd, patch, v1
  12. -
  13. Go to the review 'Flags' category and set the one for review to ?, meaning that you request review for the patch.
  14. -
  15. In the text field next to it, add the mail address of the person leading the translation of the locale. This information can be found on the page of the localization team.
  16. -
  17. Submit the bug report.
  18. -
  19. Now you have to wait for the review of that person. This can happen on the same day, on the next weekend or later, but should happen in the timeframe given for the localization of aurora. If the person requests changes, follow the instructions under Proof-reading and altering the patch. If the reviewer accepts the changes, the patch will get uploaded and your translation will officially be added to Firefox.
  20. -
diff --git a/files/de/mozilla/mathml_project/index.html b/files/de/mozilla/mathml_project/index.html deleted file mode 100644 index b1f0bf57d0..0000000000 --- a/files/de/mozilla/mathml_project/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Mozilla MathML Project -slug: Mozilla/MathML_Project -tags: - - MathML - - MathML Project - - TopicStub -translation_of: Mozilla/MathML_Project ---- -

Das Mozilla MathML Project ist Mozillas Projekt, um MathML-Unterstützung mit Firefox und anderen Mozilla-basierten Applikationen zu erstellen und zu verbessern. Für einen schnellen Überblick, sehen Sie die Aufgaben für die Entwickler bei Mozilla Summit 2013.

- -

Updates

- -

Mathzilla

- - - -

Community

- - - - - - - -

Beispiel-MathML-Dokumente

- - - -

MathML Dokumente erstellen

- - - -
-

Original Document Information

- - -
diff --git a/files/de/mozilla/mathml_project/mathml_torture_test/index.html b/files/de/mozilla/mathml_project/mathml_torture_test/index.html deleted file mode 100644 index f48515f89d..0000000000 --- a/files/de/mozilla/mathml_project/mathml_torture_test/index.html +++ /dev/null @@ -1,1323 +0,0 @@ ---- -title: MathML Härtetest -slug: Mozilla/MathML_Project/MathML_Torture_Test -tags: - - Beispiel - - Intermediate - - MathML -translation_of: Mozilla/MathML_Project/MathML_Torture_Test ---- -

MathML Härtetest

- -
-

HTML Content

- -
<p>
-  Render mathematics with:
-  <select name="MathFont" id="MathFont">
-    <option value="Default" selected="selected">Default fonts</option>
-    <option value="Asana">Asana</option>
-    <option value="Cambria">Cambria</option>
-    <option value="LatinModern">Latin Modern</option>
-    <option value="LucidaBright">Lucida Bright</option>
-    <option value="Minion">Minion</option>
-    <option value="STIX">STIX</option>
-    <option value="TeXGyreBonum">TeX Gyre Bonum</option>
-    <option value="TeXGyrePagella">TeX Gyre Pagella</option>
-    <option value="TeXGyreSchola">TeX Gyre Schola</option>
-    <option value="TeXGyreTermes">TeX Gyre Termes</option>
-    <option value="XITS">XITS</option>
-    <option value="XITSRTL">XITS RTL</option>
-  </select> <br/>
-</p>
-
-<table>
-
-<tr>
-<td></td>
-<th scope="col">As rendered by TeX</th>
-<th scope="col">As rendered by your browser</th></tr>
-
-<tr>
-<td>1</td>
-
-<td><img src="https://developer.mozilla.org/@api/deki/files/4578/=ex1.png" width="38" height="22"
-alt="TeXbook, 16.2-16.3" /></td>
-<td>
-<math display="block">
-<mrow>
-  <msup>
-    <mi>x</mi>
-    <mn>2</mn>
-  </msup>
-  <msup>
-    <mi>y</mi>
-
-    <mn>2</mn>
-  </msup>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>2</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4579/=ex2.png" width="30" height="17" alt="TeXbook, 16.2-16.3" /></td>
-<td>
-<math display="block">
-<!--
-<mrow>
-  <msub><mi></mi><mn>2</mn></msub>
-  <msub><mi>F</mi><mn>3</mn></msub>
-</mrow>
--->
-<mrow>
-
-  <mmultiscripts>
-    <mi>F</mi>
-    <mn>3</mn><none/>
-    <mprescripts/>
-    <mn>2</mn><none/>
-  </mmultiscripts>
-</mrow>
-</math>
-
-</td></tr>
-
-<tr>
-<td>3</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4586/=ex21.png" width="58" height="47" alt="TeXbook, 17-17.1" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mfrac>
-    <mrow>
-      <mi>x</mi>
-      <mo>+</mo>
-
-      <msup>
-        <mi>y</mi>
-        <mn>2</mn>
-      </msup>
-    </mrow>
-    <mrow>
-      <mi>k</mi>
-
-      <mo>+</mo>
-      <mn>1</mn>
-    </mrow>
-  </mfrac>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>4</td>
-
-<td><img src="https://developer.mozilla.org/@api/deki/files/4587/=ex22.png" width="76" height="25" alt="TeXbook, 17-17.1" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mi>x</mi>
-  <mo>+</mo>
-  <msup>
-    <mi>y</mi>
-    <mfrac>
-
-      <mn>2</mn>
-      <mrow>
-        <mi>k</mi>
-        <mo>+</mo>
-        <mn>1</mn>
-      </mrow>
-    </mfrac>
-
-  </msup>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>5</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4588/=ex23.png" width="30" height="42" alt="TeXbook, 17-17.1" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mfrac>
-    <mi>a</mi>
-
-    <mrow>
-      <mi>b</mi>
-      <mo>/</mo>
-      <mn>2</mn>
-    </mrow>
-  </mfrac>
-</mrow>
-</math>
-
-</td></tr>
-
-<tr>
-<td>6</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4589/=ex24.png" width="220" height="138" alt="TeXbook, 17.5-17.6" /></td>
-<td>
-<math display="block">
-<mrow>
-  <msub>
-    <mi>a</mi>
-    <mn>0</mn>
-
-  </msub>
-  <mo>+</mo>
-  <mfrac>
-    <mn>1</mn>
-    <mstyle displaystyle="true" scriptlevel="0">
-      <msub>
-        <mi>a</mi>
-
-        <mn>1</mn>
-      </msub>
-      <mo>+</mo>
-      <mfrac>
-        <mn>1</mn>
-        <mstyle displaystyle="true" scriptlevel="0">
-          <msub>
-
-            <mi>a</mi>
-            <mn>2</mn>
-          </msub>
-          <mo>+</mo>
-          <mfrac>
-            <mn>1</mn>
-            <mstyle displaystyle="true" scriptlevel="0">
-
-              <msub>
-                <mi>a</mi>
-                <mn>3</mn>
-              </msub>
-              <mo>+</mo>
-              <mfrac>
-                <mn>1</mn>
-
-                <mstyle displaystyle="true" scriptlevel="0">
-                  <msub>
-                    <mi>a</mi>
-                    <mn>4</mn>
-                  </msub>
-                </mstyle>
-              </mfrac>
-            </mstyle>
-          </mfrac>
-
-        </mstyle>
-      </mfrac>
-    </mstyle>
-  </mfrac>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>7</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4590/=ex25.png" width="200" height="85" alt="TeXbook, 17.5-17.6" /></td>
-<td>
-
-<math>
-<mrow>
-  <msub>
-    <mi>a</mi>
-    <mn>0</mn>
-  </msub>
-  <mo>+</mo>
-  <mfrac>
-
-    <mn>1</mn>
-    <mrow>
-      <msub>
-        <mi>a</mi>
-        <mn>1</mn>
-      </msub>
-      <mo>+</mo>
-
-      <mfrac>
-        <mn>1</mn>
-        <mrow>
-          <msub>
-            <mi>a</mi>
-            <mn>2</mn>
-          </msub>
-
-          <mo>+</mo>
-          <mfrac>
-            <mn>1</mn>
-            <mrow>
-              <msub>
-                <mi>a</mi>
-                <mn>3</mn>
-
-              </msub>
-              <mo>+</mo>
-              <mfrac>
-                <mn>1</mn>
-                <mrow>
-                  <msub>
-                    <mi>a</mi>
-
-                    <mn>4</mn>
-                  </msub>
-                </mrow>
-              </mfrac>
-            </mrow>
-          </mfrac>
-        </mrow>
-      </mfrac>
-
-    </mrow>
-  </mfrac>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>8</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4591/=ex26.png" width="54" height="50" alt="TeXbook, 17.5-17.6" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mo>(</mo>
-
-  <mfrac linethickness="0px">
-    <mi>n</mi>
-    <mrow>
-      <mi>k</mi>
-      <mo>/</mo>
-      <mn>2</mn>
-    </mrow>
-
-  </mfrac>
-  <mo>)</mo>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>9</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4592/=ex27.png" width="237" height="50" alt="TeXbook, 17.7" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mrow>
-
-
-    <mo>(</mo>
-    <mfrac linethickness="0px">
-      <mi>p</mi>
-      <mn>2</mn>
-    </mfrac>
-    <mo>)</mo>
-  </mrow>
-
-  <msup>
-    <mi>x</mi>
-    <mn>2</mn>
-  </msup>
-  <msup>
-    <mi>y</mi>
-    <mrow>
-
-      <mi>p</mi>
-      <mo>-</mo>
-      <mn>2</mn>
-    </mrow>
-  </msup>
-  <mo>-</mo>
-  <mfrac>
-
-    <mn>1</mn>
-    <mrow>
-      <mn>1</mn>
-      <mo>-</mo>
-      <mi>x</mi>
-    </mrow>
-  </mfrac>
-
-  <mfrac>
-    <mn>1</mn>
-    <mrow>
-      <mn>1</mn>
-      <mo>-</mo>
-      <msup>
-        <mi>x</mi>
-
-        <mn>2</mn>
-      </msup>
-    </mrow>
-  </mfrac>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>10</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4593/=ex29.png" width="116" height="63" alt="TeXbook, 17.7-17.8" /></td>
-
-<td>
-<math display="block">
-<mrow>
-  <munder>
-    <mo>&sum;</mo>
-    <mrow>
-      <mfrac linethickness="0px">
-        <mrow>
-          <mn>0</mn>
-          <mo>&leq;</mo>
-
-          <mi>i</mi>
-          <mo>&leq;</mo>
-          <mi>m</mi>
-        </mrow>
-        <mrow>
-          <mn>0</mn>
-          <mo>&lt;</mo>
-
-          <mi>j</mi>
-          <mo>&lt;</mo>
-          <mi>n</mi>
-        </mrow>
-      </mfrac>
-    </mrow>
-  </munder>
-  <mi>P</mi>
-
-  <mo stretchy="false">(</mo>
-  <mi>i</mi>
-  <mo>,</mo>
-  <mi>j</mi>
-  <mo stretchy="false">)</mo>
-</mrow>
-</math>
-
-</td></tr>
-
-<tr>
-<td>11</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4580/=ex3.png" width="27" height="18" alt="TeXbook, 16.2-16.3" /></td>
-<td>
-<math display="block">
-<mrow>
-<msup>
-  <mi>x</mi>
-  <mrow>
-    <mn>2</mn>
-
-    <mi>y</mi>
-  </mrow>
-</msup>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>12</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4594/=ex30.png" width="175" height="61" alt="TeXbook, 17.8" /></td>
-<td>
-<math display="block">
-<mrow>
-
-  <munderover>
-    <mo>&sum;</mo>
-    <mrow>
-      <mi>i</mi>
-      <mo>=</mo>
-      <mn>1</mn>
-    </mrow>
-
-    <mi>p</mi>
-  </munderover>
-  <munderover>
-    <mo>&sum;</mo>
-    <mrow>
-      <mi>j</mi>
-      <mo>=</mo>
-
-      <mn>1</mn>
-    </mrow>
-    <mi>q</mi>
-  </munderover>
-  <munderover>
-    <mo>&sum;</mo>
-    <mrow>
-      <mi>k</mi>
-
-      <mo>=</mo>
-      <mn>1</mn>
-    </mrow>
-    <mi>r</mi>
-  </munderover>
-  <msub>
-    <mi>a</mi>
-
-    <mrow>
-      <mi>i</mi>
-      <mi>j</mi>
-    </mrow>
-  </msub>
-  <msub>
-    <mi>b</mi>
-
-    <mrow>
-      <mi>j</mi>
-      <mi>k</mi>
-    </mrow>
-  </msub>
-  <msub>
-    <mi>c</mi>
-
-    <mrow>
-      <mi>k</mi>
-      <mi>i</mi>
-    </mrow>
-  </msub>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-
-<td>13</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4595/=ex31.png" width="405" height="100" alt="TeXbook, 17.9-17.10" /></td>
-<td>
-<math display="block">
-<mrow>
-  <msqrt>
-    <mn>1</mn>
-    <mo>+</mo>
-    <msqrt>
-      <mn>1</mn>
-
-      <mo>+</mo>
-      <msqrt>
-        <mn>1</mn>
-        <mo>+</mo>
-        <msqrt>
-          <mn>1</mn>
-          <mo>+</mo>
-
-          <msqrt>
-            <mn>1</mn>
-            <mo>+</mo>
-            <msqrt>
-              <mn>1</mn>
-              <mo>+</mo>
-              <msqrt>
-
-                <mn>1</mn>
-                <mo>+</mo>
-                <mi>x</mi>
-              </msqrt>
-            </msqrt>
-          </msqrt>
-        </msqrt>
-
-      </msqrt>
-    </msqrt>
-  </msqrt>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>14</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4596/=ex34.png" width="272" height="50" alt="TeXbook, 17.10" /></td>
-<td>
-<math display="block">
-<mrow>
-
-  <mrow>
-    <mo>(</mo>
-    <mfrac>
-      <msup>
-        <mo>&part;</mo>
-        <mn>2</mn>
-      </msup>
-      <mrow>
-
-        <mo>&part;</mo>
-        <msup>
-          <mi>x</mi>
-          <mn>2</mn>
-        </msup>
-      </mrow>
-    </mfrac>
-    <mo>+</mo>
-
-    <mfrac>
-      <msup>
-        <mo>&part;</mo>
-        <mn>2</mn>
-      </msup>
-      <mrow>
-        <mo>&part;</mo>
-        <msup>
-
-          <mi>y</mi>
-          <mn>2</mn>
-        </msup>
-      </mrow>
-    </mfrac>
-    <mo>)</mo>
-  </mrow>
-
-  <msup>
-    <mrow>
-      <mo minsize="150%">|</mo>
-      <mi>&#x3C6; <!-- \varphi --></mi>
-      <mo stretchy="false">(</mo>
-      <mi>x</mi>
-      <mo>+</mo>
-
-      <mi mathvariant="normal">i</mi>
-      <mi>y</mi>
-      <mo stretchy="false">)</mo>
-      <mo minsize="150%">|</mo>
-    </mrow>
-    <mn>2</mn>
-
-  </msup>
-  <mo>=</mo>
-  <mn>0</mn>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>15</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4581/=ex4.png" width="31" height="22" alt="TeXbook, 16.2-16.3" /></td>
-<td>
-
-<math display="block">
-<mrow>
-  <msup>
-    <mn>2</mn>
-    <msup>
-      <mn>2</mn>
-      <msup>
-        <mn>2</mn>
-
-        <mi>x</mi>
-      </msup>
-    </msup>
-  </msup>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>16</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4597/=ex40.png" width="55" height="49" alt="TeXbook, 18.10-18.11" /></td>
-
-<td>
-<math display="block">
-<mrow>
-  <msubsup>
-    <mo stretchy="false">&int;</mo>
-    <mn>1</mn>
-    <mi>x</mi>
- </msubsup>
- <mfrac>
-
-   <mrow><mi>d</mi><mi>t</mi></mrow>
-   <mi>t</mi>
- </mfrac>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>17</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4599/=ex41.png" width="91" height="47" alt="TeXbook, 18.12-18.13" /></td>
-<td>
-
-<math display="block">
-<mrow>
-  <msub>
-    <mo>&#x222C; <!-- \iint --></mo>
-    <mi>D</mi>
-  </msub>
-  <mi>d</mi><mi>x</mi>
-  <mspace width="thinmathspace"/>
-
-  <mi>d</mi><mi>y</mi>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>18</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4600/=ex43.png" width="250" height="66" alt="TeXbook, 18.23" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mi>f</mi>
-
-  <mo stretchy="false">(</mo>
-  <mi>x</mi>
-  <mo stretchy="false">)</mo>
-  <mo>=</mo>
-  <mrow>
-    <mo>{</mo>
-
-    <mtable>
-      <mtr>
-        <mtd columnalign="center">
-          <mrow>
-            <mn>1</mn>
-            <mo>/</mo>
-            <mn>3</mn>
-
-          </mrow>
-        </mtd>
-        <mtd columnalign="left">
-          <mrow>
-            <mtext>if&nbsp;</mtext>
-            <mn>0</mn>
-            <mo>&leq;</mo>
-            <mi>x</mi>
-
-            <mo>&leq;</mo>
-            <mn>1</mn>
-            <mo>;</mo>
-          </mrow>
-        </mtd>
-      </mtr>
-      <mtr>
-        <mtd columnalign="center">
-
-          <mrow>
-            <mn>2</mn>
-            <mo>/</mo>
-            <mn>3</mn>
-          </mrow>
-        </mtd>
-        <mtd columnalign="center">
-
-          <mrow>
-            <mtext>if&nbsp;</mtext>
-            <mn>3</mn>
-            <mo>&leq;</mo>
-            <mi>x</mi>
-            <mo>&leq;</mo>
-            <mn>4</mn>
-
-            <mo>;</mo>
-          </mrow>
-        </mtd>
-      </mtr>
-      <mtr>
-        <mtd columnalign="center">
-          <mn>0</mn>
-        </mtd>
-
-        <mtd columnalign="left">
-          <mtext>elsewhere.</mtext>
-        </mtd>
-      </mtr>
-    </mtable>
-  </mrow>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>19</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4601/=ex44.png" width="101" height="44" alt="TeXbook, 18.23-18.24" /></td>
-<td>
-<math display="block">
-<mover>
-  <mrow>
-    <mi>x</mi>
-    <mo>+</mo>
-    <mo>...</mo>
-
-    <mo>+</mo>
-    <mi>x</mi>
-  </mrow>
-  <mover>
-    <mo>&OverBrace;</mo>
-    <mrow><mi>k</mi> <mspace width="thinmathspace"/> <mtext>times</mtext></mrow>
-  </mover>
-
-</mover>
-</math>
-</td></tr>
-
-<tr>
-<td>20</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4582/=ex5.png" width="25" height="13" alt="TeXbook, 16.2-16.3" /></td>
-<td>
-<math display="block">
-<mrow>
-  <msub>
-    <mi>y</mi>
-    <msup>
-
-      <mi>x</mi>
-      <mn>2</mn>
-    </msup>
-  </msub>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>21</td>
-
-<td><img src="https://developer.mozilla.org/@api/deki/files/4602/=ex51.png" width="253" height="56" alt="TeXbook, 18.40" /></td>
-<td>
-<math display="block">
-<mrow>
-  <munder>
-    <mo>&sum;</mo>
-    <mrow>
-      <mi>p</mi>
-      <mtext>&nbsp;prime</mtext>
-    </mrow>
-
-  </munder>
-  <mi>f</mi>
-  <mo stretchy="false">(</mo>
-  <mi>p</mi>
-  <mo stretchy="false">)</mo>
-  <mo>=</mo>
-
-  <msub>
-    <mo stretchy="false">&int;</mo>
-    <mrow>
-      <mi>t</mi>
-      <mo>&gt;</mo>
-      <mn>1</mn>
-    </mrow>
-  </msub>
-
-  <mi>f</mi>
-  <mo stretchy="false">(</mo>
-  <mi>t</mi>
-  <mo stretchy="false">)</mo>
-  <mspace width="thinmathspace"/>
-  <mi>d</mi>
-  <mi>&pi;</mi>
-  <mo stretchy="false">(</mo>
-  <mi>t</mi>
-  <mo stretchy="false">)</mo>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>22</td>
-
-<td><img src="https://developer.mozilla.org/@api/deki/files/4603/=ex52.png" width="159" height="81" alt="TeXbook, 18.41" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mo stretchy="false">{</mo>
-  <munder>
-    <mrow>
-      <mover>
-        <mrow>
-          <mpadded width="0em"><mphantom><mo>(</mo></mphantom></mpadded>
-          <mi>a</mi>
-          <mo>,</mo>
-          <mo>...</mo>
-          <mo>,</mo>
-          <mi>a</mi>
-        </mrow>
-
-        <mover>
-          <mo>&OverBrace;</mo>
-          <mrow>
-            <mi>k</mi>
-            <mtext>&nbsp;</mtext>
-            <mi>a</mi>
-            <mtext>'s</mtext>
-
-          </mrow>
-        </mover>
-      </mover>
-      <mo>,</mo>
-      <mover>
-        <mrow>
-          <mpadded width="0em"><mphantom><mo>(</mo></mphantom></mpadded>
-          <mi>b</mi>
-          <mo>,</mo>
-          <mo>...</mo>
-          <mo>,</mo>
-          <mi>b</mi>
-        </mrow>
-
-        <mover>
-          <mo>&OverBrace;</mo>
-          <mrow>
-            <mi>&ell;</mi>
-            <mtext>&nbsp;</mtext>
-            <mi>b</mi>
-            <mtext>'s</mtext>
-          </mrow>
-
-        </mover>
-      </mover>
-    </mrow>
-    <munder>
-      <mo>&UnderBrace;</mo>
-      <mrow>
-        <mi>k</mi>
-        <mo>+</mo>
-
-        <mi>&ell;</mi>
-        <mtext>&nbsp;elements</mtext>
-      </mrow>
-    </munder>
-  </munder>
-  <mo stretchy="false">}</mo>
-</mrow>
-</math>
-</td></tr>
-
-<tr>
-<td>23</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4604/=ex53.png" width="213" height="108" alt="TeXbook, 18.42" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mo>(</mo>
-  <mtable>
-    <mtr>
-      <mtd columnalign="center">
-
-        <mrow>
-          <mo>(</mo>
-          <mtable>
-            <mtr>
-              <mtd columnalign="center">
-                <mi>a</mi>
-              </mtd>
-              <mtd columnalign="center">
-
-                <mi>b</mi>
-              </mtd>
-            </mtr>
-            <mtr>
-              <mtd columnalign="center">
-                <mi>c</mi>
-              </mtd>
-              <mtd columnalign="center">
-
-                <mi>d</mi>
-              </mtd>
-            </mtr>
-          </mtable>
-          <mo>)</mo>
-        </mrow>
-      </mtd>
-      <mtd columnalign="center">
-
-        <mrow>
-          <mo>(</mo>
-          <mtable>
-            <mtr>
-              <mtd columnalign="center">
-                <mi>e</mi>
-              </mtd>
-              <mtd columnalign="center">
-
-                <mi>f</mi>
-              </mtd>
-            </mtr>
-            <mtr>
-              <mtd columnalign="center">
-                <mi>g</mi>
-              </mtd>
-              <mtd columnalign="center">
-
-                <mi>h</mi>
-              </mtd>
-            </mtr>
-          </mtable>
-          <mo>)</mo>
-        </mrow>
-      </mtd>
-    </mtr>
-
-    <mtr>
-      <mtd columnalign="center">
-        <mn>0</mn>
-      </mtd>
-      <mtd columnalign="center">
-        <mrow>
-          <mo>(</mo>
-          <mtable>
-
-            <mtr>
-              <mtd columnalign="center">
-                <mi>i</mi>
-              </mtd>
-              <mtd columnalign="center">
-                <mi>j</mi>
-              </mtd>
-            </mtr>
-
-            <mtr>
-              <mtd columnalign="center">
-                <mi>k</mi>
-              </mtd>
-              <mtd columnalign="center">
-                <mi>l</mi>
-              </mtd>
-            </mtr>
-
-          </mtable>
-          <mo>)</mo>
-        </mrow>
-      </mtd>
-    </mtr>
-  </mtable>
-  <mo>)</mo>
-</mrow>
-
-</math>
-</td></tr>
-
-<tr>
-<td>24</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4605/=ex54.png" width="344" height="130" alt="TeXbook, 18.43" /></td>
-<td>
-<math display="block">
-<mrow>
-  <mi>det</mi>
-  <mo>|</mo>
-  <mtable>
-
-    <mtr>
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-          <mn>0</mn>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-
-        <msub>
-          <mi>c</mi>
-          <mn>1</mn>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-
-          <mn>2</mn>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <mo>&mldr;</mo>
-      </mtd>
-      <mtd columnalign="center">
-        <msub>
-
-          <mi>c</mi>
-          <mi>n</mi>
-        </msub>
-      </mtd>
-    </mtr>
-    <mtr>
-      <mtd columnalign="center">
-        <msub>
-
-          <mi>c</mi>
-          <mn>1</mn>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-
-          <mn>2</mn>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-          <mn>3</mn>
-
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <mo>&mldr;</mo>
-      </mtd>
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-
-          <mrow>
-            <mi>n</mi>
-            <mo>+</mo>
-            <mn>1</mn>
-          </mrow>
-        </msub>
-      </mtd>
-
-    </mtr>
-    <mtr>
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-          <mn>2</mn>
-        </msub>
-      </mtd>
-
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-          <mn>3</mn>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <msub>
-
-          <mi>c</mi>
-          <mn>4</mn>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <mo>&mldr;</mo>
-      </mtd>
-      <mtd columnalign="center">
-
-        <msub>
-          <mi>c</mi>
-          <mrow>
-            <mi>n</mi>
-            <mo>+</mo>
-            <mn>2</mn>
-          </mrow>
-
-        </msub>
-      </mtd>
-    </mtr>
-    <mtr>
-      <mtd columnalign="center">
-        <mo>&#x22EE;</mo>
-      </mtd>
-      <mtd columnalign="center">
-        <mo>&#x22EE;</mo>
-
-      </mtd>
-      <mtd columnalign="center">
-        <mo>&#x22EE;</mo>
-      </mtd>
-      <mtd columnalign="center">
-      </mtd>
-      <mtd columnalign="center">
-        <mo>&#x22EE;</mo>
-      </mtd>
-
-    </mtr>
-    <mtr>
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-          <mi>n</mi>
-        </msub>
-      </mtd>
-
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-          <mrow>
-            <mi>n</mi>
-            <mo>+</mo>
-            <mn>1</mn>
-
-          </mrow>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-          <mrow>
-            <mi>n</mi>
-
-            <mo>+</mo>
-            <mn>2</mn>
-          </mrow>
-        </msub>
-      </mtd>
-      <mtd columnalign="center">
-        <mo>&mldr;</mo>
-      </mtd>
-
-      <mtd columnalign="center">
-        <msub>
-          <mi>c</mi>
-          <mrow>
-            <mn>2</mn>
-            <mi>n</mi>
-          </mrow>
-
-        </msub>
-      </mtd>
-    </mtr>
-  </mtable>
-  <mo>|</mo>
-  <mo>&gt;</mo>
-  <mn>0</mn>
-</mrow>
-
-</math>
-</td></tr>
-
-<tr>
-<td>25</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4598/=ex6.png" width="25" height="14" alt="TeXbook, 16.2-16.3" /></td>
-<td>
-<math display="block">
-<msub>
-  <mi>y</mi>
-  <msub>
-    <mi>x</mi>
-
-    <mn>2</mn>
-  </msub>
-</msub>
-</math>
-</td></tr>
-
-<tr>
-<td>26</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4583/=ex7.png" width="90" height="23" alt="TeXbook, 16.4-16.5" /></td>
-<td>
-<math display="block">
-<mrow>
-  <msubsup>
-
-    <mi>x</mi>
-    <mn>92</mn>
-    <mn>31415</mn>
-  </msubsup>
-  <mo>+</mo>
-  <mi>&pi;</mi>
-</mrow>
-
-</math>
-</td></tr>
-
-<tr>
-<td>27</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4584/=ex8.png" width="27" height="36" alt="TeXbook, 16.4-16.5" /></td>
-<td>
-<math display="block">
-<msubsup>
-  <mi>x</mi>
-  <msubsup>
-    <mi>y</mi>
-
-    <mi>b</mi>
-    <mi>a</mi>
-  </msubsup>
-  <msubsup>
-    <mi>z</mi>
-    <mi>c</mi>
-    <mi>d</mi>
-
-  </msubsup>
-</msubsup>
-</math>
-</td></tr>
-
-<tr>
-<td>28</td>
-<td><img src="https://developer.mozilla.org/@api/deki/files/4585/=ex9.png" width="24" height="22" alt="TeXbook, 16.4-16.5" /></td>
-<td>
-<math display="block">
-<msubsup>
-  <mi>y</mi>
-  <mn>3</mn>
-  <mo>&#x2034;</mo>
-</msubsup>
-</math>
-
-</td></tr>
-</table>
- -

CSS Content

- -
  /* Table style */
-
-  body {
-   text-align: center;
-  }
-
-  table
-  {
-  border: solid thin;
-  border-collapse: collapse;
-  margin-left: auto;
-  margin-right: auto;
-  }
-
-  th
-  {
-  background-color: #ddf;
-  border: solid thin;
-  color: black;
-  padding: 5px;
-  }
-
-  td
-  {
-  border: solid thin;
-  padding: 5px;
-  text-align: center;
-  }
-
-  .Asana math { font-family: Asana Math; }
-  .Cambria math { font-family: Cambria Math; }
-  .LatinModern math { font-family: Latin Modern Math; }
-  .LucidaBright math { font-family: Lucida Bright Math; }
-  .Minion math { font-family: Minion Math; }
-  .STIX math { font-family: STIX Math; }
-  .TeXGyreBonum math { font-family: TeX Gyre Bonum Math; }
-  .TeXGyrePagella math { font-family: TeX Gyre Pagella Math; }
-  .TeXGyreSchola math { font-family: TeX Gyre Schola Math; }
-  .TeXGyreTermes math { font-family: TeX Gyre Termes Math; }
-  .XITS math { font-family: XITS Math; }
-  .XITSRTL math { font-family: XITS Math; direction: rtl; }
-
- -

JavaScript Content

- -
  function updateMathFont()
-  {
-  var mathFont = document.getElementById("MathFont").value;
-  if (mathFont == "Default") {
-    document.body.removeAttribute("class");
-  } else {
-    document.body.setAttribute("class", mathFont);
-  }
-  }
-
-  function load()
-  {
-  document.getElementById("MathFont").
-  addEventListener("change", updateMathFont, false)
-  }
-
-  window.addEventListener("load", load, false);
-
-
-
- -

Der folgende Test enthält TeX-Beispielformeln aus Knuths TeX book und vergleichbare MathML-Repräsentationen. Es vergleicht das Rendering von der XeTeX - Engine, die das standarte Latin Modern Font benutzt, und das MathML-Rendering von Ihrem Browser, welcher das standarte Math Font oder ein alternatives OpenType MATH Font benutzt. Um das beste Rendering zu erhalten, stellen Sie sicher, dass sie diese Mathematischen Fonts auf Ihrem Betriebssystem installiert haben und einen Browser mit OpenType Math - Support, wie Gecko 31.0 {{GeckoRelease("31.0")}} oder höher, benutzen. Sie können sich auch diese Seite für Tests von Mathematischen OpenType Fonts, welche stattdessen auf Web Fonts basiert. Zuletzt können Sie sich diese Tabelle anschauen wollen, die vergleicht, wie die Tests von verschiedenen Screen Readern für Mozilla-Browser gelesen werden.

- -

{{ EmbedLiveSample('MathML_Torture_Test', '100%', '2500px') }}

- -
 
diff --git a/files/de/mozilla/mathml_project/start/index.html b/files/de/mozilla/mathml_project/start/index.html deleted file mode 100644 index 69d5538254..0000000000 --- a/files/de/mozilla/mathml_project/start/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: MathML in Aktion -slug: Mozilla/MathML_Project/Start -translation_of: Mozilla/MathML_Project/Start ---- -

MathML in Aktion

- -

Sehen Sie schlaue Formeln auf dieser Seite? Nicht? Zu schlecht. Hier ist ein Screenshot von dem, was Sie verpassen. Downloaden Sie einen Mozilla-Browser, der MathML untestützt, um diese traurige Situation zu ändern.

- -

You already have a MathML-enabled build but what you see on the screenshot is not what you get? In that case you are probably missing some crucial MathML fonts.

- -

Now that you are well-equipped, you should be able to see this inline equation with varying accents: x ^ + xy ^ + xyz ^ . Next to it is this tiny formula, det | a c b d | = a d - b c , which can also be typeset in displaystyle as det | a b c d | = a d - b c .

- -

Mathematical typesetting is picky. MathML in Mozilla aims at complying with the MathML specification so thatWhat You See Is What You Markup, or to put it another wayWhat You See Is What You Made, or in short "WYSIWYM". The difference between these two is in the markup! ( ... ( ( a 0 + a 1 ) n 1 + a 2 ) n 2 + ... + a p ) n p ( ... ( ( a 0 + a 1 ) n 1 + a 2 ) n 2 + ... + a p ) n p

- -

The roots of this bold equation y 3 + p y + q = 0 are also bold y = - q 2 + q 2 4 + p 3 27 2 3 + - q 2 - q 2 4 + p 3 27 2 3 .

- -

As for the roots of the equation a x 2 + b x + c = 0 , click anywhere in the yellow area to zoom-in/zoom-out:

- -
-

Zoomable Math

- -

HTML Content

- -
    <p>
-      <math display="block">
-        <mstyle id="zoomableMath" mathbackground="yellow">
-          <mrow>
-            <mi>x</mi>
-            <mo>=</mo>
-            <mfrac>
-              <mrow>
-                <mrow>
-                  <mo>-</mo>
-                  <mi>b</mi>
-                </mrow>
-                <mo>&#xB1;</mo>
-                <msqrt>
-                  <mrow>
-                    <msup>
-                      <mi>b</mi>
-                      <mn>2</mn>
-                    </msup>
-                    <mo>-</mo>
-                    <mrow>
-                      <mn>4</mn>
-                      <mi>a</mi>
-                      <mi>c</mi>
-                    </mrow>
-                  </mrow>
-                </msqrt>
-              </mrow>
-              <mrow>
-                <mn>2</mn>
-                <mi>a</mi>
-              </mrow>
-            </mfrac>
-          </mrow>
-        </mstyle>
-      </math>
-    </p>
-
-
- -

JavaScript Content

- -
      function zoomToggle()
-      {
-      if (this.hasAttribute("mathsize")) {
-      this.removeAttribute("mathsize");
-      } else {
-      this.setAttribute("mathsize", "200%");
-      }
-      }
-
-      function load()
-      {
-      document.getElementById("zoomableMath").
-      addEventListener("click", zoomToggle, false);
-      }
-
-      window.addEventListener("load", load, false);
-
- -

{{ EmbedLiveSample('Zoomable_Math') }}

- -

Consider an interesting markup like this { u t + f ( u ) x = 0 u ( 0 , x ) = { u - if  x < 0 u + if  x > 0 or other complex markups like these Ell ^ Y ( Z ; z , τ ) := Y ( l ( y l 2 π i ) θ ( y l 2 π i - z ) θ ( 0 ) θ ( - z ) θ ( y l 2 π i ) ) × ( k θ ( e k 2 π i - ( α k + 1 ) z ) θ ( - z ) θ ( e k 2 π i - z ) θ ( - ( α k + 1 ) z ) ) π ( n ) = m = 2 n ( k = 1 m - 1 ( m / k ) / m / k ) - 1 ϕ W s k ( Ω g ) ( | α | k α ϕ ξ α L s ( Ω g ) s ) 1 / s

- -

For more examples, refer to links on the MathML Project page, and if you are building your own Mozilla binary, see the directorymozilla/layout/mathml/tests.

- -

Now, what next? As you try out MathML in Mozilla, what to do with those few things that appear to you not to work as per the MathML spec? Or what about those things that just seem itchy, and that you wish could be done just a little better? Or what about those things that were working before and are not working anymore (a.k.a. regressions)? In either case, head over to Bugzilla to report the discrepancies. Bugzilla has a big memory for these things, and besides, how would your problems be fixed if they are not reported?!

- -

Getting involved is part of your contribution towards enriching Gecko with an elegant standards-compliant MathML renderer. Your feedback can be manifested by putting MathML content on the web, reporting bugs in Bugzilla, and, if you can help with code, inspecting/improving the current code, and/or picking up an item in the ToDo list.

- -
 
diff --git a/files/de/mozilla/mobile/index.html b/files/de/mozilla/mobile/index.html deleted file mode 100644 index b3a3dc1803..0000000000 --- a/files/de/mozilla/mobile/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Mobil -slug: Mozilla/Mobile -tags: - - Mozilla - - mobil -translation_of: Mozilla/Mobile ---- -

Firefox OS

- -

Firefox OS ist ein Open Source Betriebssystem, welches Linux und Mozilla's Gecko Rendering Engine verwendet um eine Benutzeroberfläche und viele Anwendungen bereit zu stellen, die komplett in HTML, CSS und JavaScript geschrieben sind.

- -

Informiere Dich darüber wie Firefox OS installiert wird und wie Apps für Firefox OS entwickelt werden.

- -

Firefox für Android

- -

Firefox für Android ist Mozilla's Web Browser für Android-Geräte. Firefox für Android wurde vor kurzem komplett überarbeitet um Android's natives User Interface zu nutzen und um es schneller, schlanker und besser anpassbar zu machen. Es unterstützt hardware-nahe APIs um z.B. auf die Kamera und die Telefonfunktionen zugreifen zu können.

- -

Informiere Dich darüber wie Du beim Aufbau von Firefox für Android helfen kannst, wie die APIs benutzt werden und wie mobile Add Ons entwickelt werden.

- -

Mobile Web Entwicklung

- -

Mobile Geräte haben deutlich andere Hardware-Voraussetzungen als PCs oder Laptops und viele der genutzen APIs sind noch nicht standardisiert.

- -

Informiere Dich darüber wie Web-Seiten entwickelt werden, die auf Mobil-Geräten gut aussehen und erfahre mehr über die neuen Möglichkeiten dieser Technologien. Lerne wie Du sicherstellen kannst, dass Deine Web-Seiten auf verschiedenen Browsern gut funktionieren.

diff --git a/files/de/mozilla/mobile/viewport_meta_tag/index.html b/files/de/mozilla/mobile/viewport_meta_tag/index.html deleted file mode 100644 index c17554471a..0000000000 --- a/files/de/mozilla/mobile/viewport_meta_tag/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Using the viewport meta tag to control layout on mobile browsers -slug: Mozilla/Mobile/Viewport_meta_tag -translation_of: Mozilla/Mobile/Viewport_meta_tag ---- -

Hintergrund

- -

 

- -

Der {{glossary("viewport")}} des Browsers ist der Bereich des Fensters, in dem Webinhalte zu sehen sind. Dies ist oft nicht die gleiche Größe wie die komplette gerenderte Seite. In diesem Fall stellt der Browser Scrollbars zur Verfügung, mit denen der Benutzer umherscrollen und auf alle Inhalte zugreifen kann.

- -

Geräte mit schmalem Display (z.B. Handys) rendern Seiten in einem virtuellen Fenster oder Ansichtsfenster, das normalerweise breiter als der Bildschirm ist, und verkleinern dann das gerenderte Ergebnis, so dass es auf einmal zu sehen ist. Die Benutzer können dann schwenken und zoomen, um verschiedene Bereiche der Seite zu sehen. Wenn beispielsweise ein mobiler Bildschirm eine Breite von 640px hat, können Seiten mit einem virtuellen Ansichtsfenster von 980px gerendert und dann verkleinert werden, um in den 640px-Bereich zu passen.

- -

Dies geschieht, weil viele Seiten nicht mobil optimiert sind und bei einer kleinen Ansichtsfensterbreite brechen (oder zumindest schlecht aussehen). Dieses virtuelle Ansichtsfenster ist eine Möglichkeit, nicht-mobile optimierte Seiten auf schmalen Bildschirmen besser aussehen zu lassen.

- -

Enter viewport meta tag

- -

However, this mechanism is not so good for pages that are optimized for narrow screens using media queries — if the virtual viewport is 980px for example, media queries that kick in at 640px or 480px or less will never be used, limiting the effectiveness of such responsive design techniques.

- -

To mitigate this problem, Apple introduced the "viewport meta tag" in Safari iOS to let web developers control the viewport's size and scale. Many other mobile browsers now support this tag, although it is not part of any web standard. Apple's documentation does a good job explaining how web developers can use this tag, but we had to do some detective work to figure out exactly how to implement it in Fennec. For example, Safari's documentation says the content is a "comma-delimited list," but existing browsers and web pages use any mix of commas, semicolons, and spaces as separators.

- -

Learn more about viewports in different mobile browsers in A Tale of Two Viewports at quirksmode.org.

- -

Viewport basics

- -

A typical mobile-optimized site contains something like the following:

- -
<meta name="viewport" content="width=device-width, initial-scale=1">
- -

The width property controls the size of the viewport. It can be set to a specific number of pixels like width=600 or to the special value device-width, which is the width of the screen in CSS pixels at a scale of 100%. (There are corresponding height and device-height values, which may be useful for pages with elements that change size or position based on the viewport height.)

- -

The initial-scale property controls the zoom level when the page is first loaded. The maximum-scale, minimum-scale, and user-scalable properties control how users are allowed to zoom the page in or out.

- -

A pixel is not a pixel

- -

In recent years, screen resolutions have risen to the size that individual pixels are hard to distinguish with the human eye. For example, recent smartphones generally have a 5-inch screens with resolutions upwards of 1920—1080 pixels (~400 dpi). Because of this, many browsers can display their pages in a smaller physical size by translating multiple hardware pixels for each CSS "pixel". Initially this caused usability and readability problems on many touch-optimized web sites. Peter-Paul Koch wrote about this problem in A pixel is not a pixel.

- -

On high dpi screens, pages with initial-scale=1 will effectively be zoomed by browsers. Their text will be smooth and crisp, but their bitmap images will probably not take advantage of the full screen resolution. To get sharper images on these screens, web developers may want to design images – or whole layouts – at a higher scale than their final size and then scale them down using CSS or viewport properties. This is consistent with the CSS 2.1 specification, which says:

- -
-

If the pixel density of the output device is very different from that of a typical computer display, the user agent should rescale pixel values. It is recommended that the pixel unit refer to the whole number of device pixels that best approximates the reference pixel. It is recommended that the reference pixel be the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm's length.

-
- -

For web developers, this means that the size of a page is much smaller than the actual pixel count and browsers may size their layouts and images accordingly. But remember that not all mobile devices are the same width; you should make sure that your pages work well in a large variation of screen sizes and orientations.

- -

The default pixel ratio depends on the display density. On a display with density less than 200dpi, the ratio is 1.0. On displays with density between 200 and 300dpi, the ratio is 1.5. For displays with density over 300dpi, the ratio is the integer floor(density/150dpi). Note that the default ratio is true only when the viewport scale equals 1. Otherwise, the relationship between CSS pixels and device pixels depends on the current zoom level.

- -

Viewport width and screen width

- -

Sites can set their viewport to a specific size. For example, the definition "width=320, initial-scale=1" can be used to fit precisely onto a small phone display in portrait mode. This can cause problems when the browser doesn't render a page at a larger size. To fix this, browsers will expand the viewport width if necessary to fill the screen at the requested scale. This is especially useful on large-screen devices like the iPad. (Allen Pike's Choosing a viewport for iPad sites has a good explanation for web developers.)

- -

For pages that set an initial or maximum scale, this means the width property actually translates into a minimum viewport width. For example, if your layout needs at least 500 pixels of width then you can use the following markup. When the screen is more than 500 pixels wide, the browser will expand the viewport (rather than zoom in) to fit the screen:

- -
<meta name="viewport" content="width=500, initial-scale=1">
- -

Other attributes that are available are minimum-scale, maximum-scale, and user-scalable. These properties affect the initial scale and width, as well as limiting changes in zoom level.

- -

Not all mobile browsers handle orientation changes in the same way. For example, Mobile Safari often just zooms the page when changing from portrait to landscape, instead of laying out the page as it would if originally loaded in landscape. If web developers want their scale settings to remain consistent when switching orientations on the iPhone, they must add a maximum-scale value to prevent this zooming, which has the sometimes-unwanted side effect of preventing users from zooming in:

- -
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
-
- -

Common viewport sizes for mobile and tablet devices

- -

If you want to know what mobile and tablet devices have which viewport widths, there is a comprehensive list of mobile and tablet viewport sizes here. This gives information such as viewport width on portrait and landscape orientation as well as physical screen size, operating system and the pixel density of the device.

- -

Specifications

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('CSS3 Device', '#viewport-meta', '<meta name="viewport">')}}{{Spec2('CSS3 Device')}}Non-normatively describes the Viewport META element
- -

There is clearly demand for the viewport meta tag, since it is supported by most popular mobile browsers and used by thousands of web sites. It would be good to have a true standard for web pages to control viewport properties. As the standardization process proceeds, we at Mozilla will work to keep up to date with any changes.

diff --git a/files/de/mozilla/performance/index.html b/files/de/mozilla/performance/index.html deleted file mode 100644 index 1127358db7..0000000000 --- a/files/de/mozilla/performance/index.html +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Performance -slug: Mozilla/Performance -tags: - - Add-ons - - Debugging - - Development - - Mozilla - - NeedsTranslation - - Performance - - TopicStub -translation_of: Mozilla/Performance ---- -

The articles linked to from here will help you improve performance, whether you're developing core Mozilla code or an add-on.

- - - - - - - - -
-

Documentation

- -
-
Reporting a Performance Problem
-
A user friendly guide to reporting a performance problem. A development environment is not required.
-
Benchmarking
-
Tips on generating valid performance metrics.
-
Performance best practices in extensions
-
A performance "best practices" guide for extension developers.
-
Measuring Add-on Startup Performance
-
A guide for add-on developers on how to set up a performance testing environment.
-
XUL School: Add-on Performance
-
Tips for add-on developers to help them avoid impairing application performance.
-
GPU performance
-
Tips for profiling and improving performance when using a GPU.
-
Scroll-Linked Effects
-
Information on scroll-linked effects, their effect on performance, related tools, and possible mitigation techniques.
-
Automated Performance Testing and Sheriffing
-
Information on automated performance testing and sheriffing at Mozilla.
-
Best practices for Front-end Engineers
-
Tips for reducing impacts on browser performance in front-end code.
-
- -

View all pages tagged with "Performance"...

- -

Memory profiling and leak detection tools

- -
-
The Developer Tools "Memory" panel
-
The memory panel in the devtools supports taking heap snapshots, diffing them, computing dominator trees to surface "heavy retainers", and recording allocation stacks.
-
- -
-
about:memory
-
about:memory is the easiest-to-use tool for measuring memory usage in Mozilla code, and is the best place to start. It also lets you do other memory-related operations like trigger GC and CC, dump GC & CC logs, and dump DMD reports. about:memory is built on top of Firefox's memory reporting infrastructure.
-
DMD
-
DMD is a tool that identifies shortcomings in about:memory's measurements, and can also do multiple kinds of general heap profiling.
-
Are We Slim Yet
-
areweslimyet.com (a.k.a. AWSY) is a memory usage and regression tracker.
-
BloatView
-
BloatView prints per-class statistics on allocations and refcounts, and provides gross numbers on the amount of memory being leaked broken down by class. It is used as part of Mozilla's continuous integration testing.
-
Refcount tracing and balancing
-
Refcount tracing and balancing are ways to track down leaks caused by incorrect uses of reference counting. They are slow and not particular easy to use, and thus most suitable for use by expert developers.
-
GC and CC logs
-
GC and CC logs can be generated and analyzed to in various ways. In particular, they can help you understand why a particular object is being kept alive.
-
Valgrind
-
Valgrind is a tool that detects various memory-related problems at runtime, including leaks. Valgrind is used as part of Mozilla's continuous integration testing, though the coverage is limited because Valgrind is slow.
-
LeakSanitizer
-
LeakSanitizer (a.k.a. LSAN) is similar to Valgrind, but it runs faster because it uses static source code instrumentation. LSAN is part of Mozilla's continuous integration testing, with most tests running through it as part of the AddressSanitizer (a.k.a. ASAN) test jobs.
-
Apple tools
-
Apple provides some tools for Mac OS X that report similar problems to those reported by LSAN and Valgrind. The "leaks" tool is not recommended for use with SpiderMonkey or Firefox, because it gets confused by tagged pointers and thinks objects have leaked when they have not (see bug 390944).
-
Leak Gauge
-
Leak Gauge is a tool that can be used to detect certain kinds of leaks in Gecko, including those involving documents, window objects, and docshells.
-
LogAlloc
-
LogAlloc is a tool that dumps a log of memory allocations in Gecko. That log can then be replayed against Firefox's default memory allocator independently or through another replace-malloc library, allowing the testing of other allocators under the exact same workload.
-
Memory Profiler
-
The memory profiler samples allocation events and provides different views to analyze the allocation characteristic.
-
- -

See also the documentation on Leak-hunting strategies and tips.

-
-

Profiling and performance tools

- -
-
Profiling with the Developer Tools Profiler
-
The profiler built into the developer tools has a high-level waterfall, detailed call tree, allocations and GC profiling, and flame graphs. It is available on all platforms and release channels, and also supports remote profiling b2g and Fennec.
-
- -
-
Profiling with the Gecko Profiler {{ gecko_minversion_inline("16.0") }}
-
The Gecko Profiler is a good tool to start with, particularly for understanding where time is spent within C++ code in Firefox.
-
Profiling with Instruments
-
How to use Apple's Instruments tool to profile Mozilla code.
-
Profiling with Xperf
-
How to use Microsoft's Xperf tool to profile Mozilla code.
-
Profiling with Concurrency Visualizer
-
How to use Visual Studio's Concurrency Visualizer tool to profile Mozilla code.
-
Profiling with Zoom
-
Zoom is a profiler for Linux done by the people who made Shark
-
Measuring performance using the PerfMeasurement.jsm code module {{ gecko_minversion_inline("2.0") }}
-
Using PerfMeasurement.jsm to measure performance data in your JavaScript code.
-
Adding a new Telemetry probe
-
Information on how to add a new measurement to the Telemetry performance-reporting system
-
Profiling JavaScript with Shark (obsolete - replaced by Instruments)
-
How to use the Mac OS X Shark profiler to profile JavaScript code in Firefox 3.5 or later.
-
Profiling with Shark (obsolete - replaced by Instruments)
-
How to use Apple's Shark tool to profile Mozilla code.
-
Investigating CSS Performance
-
How to figure out why restyle is taking so long
-
- -

Power profiling

- -
-
Power profiling overview
-
This page provides an overview of relevant information, including details about hardware, what can be measured, and recommended approaches. It should be the starting point for anybody new to power profiling.
-
tools/power/rapl (Mac, Linux)
-
tools/power/rapl is a command-line utility in the Mozilla codebase that uses the Intel RAPL interface to gather direct power estimates for the package, cores, GPU and memory.
-
powermetrics (Mac-only)
-
powermetrics is a command-line utility that gathers and displays a wide range of global and per-process measurements, including CPU usage, GPU usage, and various wakeups frequencies.
-
TimerFirings logging (All platforms)
-
TimerFirings logging is a built-in logging mechanism that prints data on every time fired.
-
Activity Monitor, Battery Status Menu and top (Mac-only)
-
The battery status menu, Activity Monitor and top are three related Mac tools that have major flaws but often consulted by users, and so are worth understanding.
-
Intel Power Gadget (Windows, Mac, Linux)
-
Intel Power Gadget provides real-time graphs for package and processor RAPL estimates. It also provides an API through which those estimates can be obtained.
-
perf (Linux-only)
-
perf is a powerful command-line utility that can measure many different things, including energy estimates and high-context measurements of things such as wakeups.
-
turbostat (Linux-only)
-
turbostat is a command-line utility that gathers and displays various power-related measurements, with a focus on per-CPU measurements such as frequencies and C-states.
-
powertop (Linux-only)
-
powertop is an interactive command-line utility that gathers and displays various power-related measurements.
-
- - - -
-
JavaScript, XPCOM, Developing Mozilla, Extensions, Addons
-
-
- -

 

diff --git a/files/de/mozilla/persona/bootstrapping_persona/index.html b/files/de/mozilla/persona/bootstrapping_persona/index.html deleted file mode 100644 index f4405da59f..0000000000 --- a/files/de/mozilla/persona/bootstrapping_persona/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Bootstrapping Persona -slug: Mozilla/Persona/Bootstrapping_Persona -tags: - - ich kann nur deutsch -translation_of: Archive/Mozilla/Persona/Bootstrapping_Persona ---- -

To be truly successful and decentralized, Persona needs support from three different groups:

- -

This creates a chicken-and-egg problem: none of these groups would significantly benefit unless there was a critical mass of users, but a distributed system can't get a critical mass of users without support from the above groups.

-

To solve this problem, https://login.persona.org hosts three resources:

-
    -
  1. A fallback Identity Provider, which vouches for users whose email providers don't support Persona.
  2. -
  3. A cross-browser, JavaScript implementation of the navigator.id APIs for browsers without native support.
  4. -
  5. A hosted verification API to make it easy for sites to verify user credentials.
  6. -
-

Together, this allows web sites to offer Persona to users regardless of browser and without email providers needing to get involved.

-

These services are temporary, and the Persona system is designed such that they transparently and automatically drop away as native support gets added to browsers and email providers. Thus, they will become less relevant as Persona matures, and may eventually be removed all together. At that point, https://login.persona.org won't feature at all in the Persona system.

-

Fallback Identity Provider

-

Any domain can become an Identity Provider as long as relying parties are willing to trust the certificates issued by that domain. We expect email providers to act as an IdPs for the addresses they administer, making the user experience of Persona seamless for those users.  It allows the user to leverage their existing relationship with the email provider when authenticating at other sites.

-

However, email providers won't become IdPs until there is significant demand from their users. In the meantime, Mozilla operates a fallback IdP at https://login.persona.org. This fallback allows users to sign into sites with their existing email address, regardless of whether or not the email provider supports Persona. The fallback IdP will certify email addresses from any domain using its own authentication flow and its own password, so long as the user is able to prove control of an address by clicking a link in a verification email.

-

Once an email provider supports Persona natively, its users will transparently begin use it instead of the fallback IdP.

-

Cross-browser API Library

-

For Persona to work, the user's browser must support the navigator.id API. Eventually, browsers will add native support for these APIs, but until then a cross-browser implementation is available at https://login.persona.org/include.js. By including this file, web sites can already begin using Persona. Once native implementations of the API are available, the library will automatically defer to those.

-

Remote verification service

-

At https://login.persona.org Mozilla hosts a remote verification service that web sites can use to verify identity assertions sent from users. This makes it simpler for web sites to support Persona as it takes care of parsing the assertion and cryptographically verifying user identities.

-

Once the Persona data formats stabilize, verification will most likely be done locally on each site's server. This transition is especially important for user privacy, since it will make it impossible for the fallback IdP to track its users. Even with remote verification, users of native IdPs can't be tracked by that IdP.

diff --git a/files/de/mozilla/persona/branding/index.html b/files/de/mozilla/persona/branding/index.html deleted file mode 100644 index f35f03575c..0000000000 --- a/files/de/mozilla/persona/branding/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Branding resources -slug: Mozilla/Persona/branding -translation_of: Archive/Mozilla/Persona/User_interface_guidelines ---- -

Einloggen mit Persona Buttons

-

Bilder

-

Der "Einloggen" Button ist in drei Versionen und drei Farben erhältlich:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Einloggen mit EmailadresseEinloggen mit PersonaEinloggen
Schwarz
Blau
Rot
-

CSS-Basis

-

Sawyer Hollenshead erzeugte ein Set exzellenter CSS-basierter Buttons. Download (.zip)

-

Mehr Info

-

Mehr Informationen über Persona's visuelles Design bei Sean Martell's style primer.

diff --git a/files/de/mozilla/persona/browser_compatibility/index.html b/files/de/mozilla/persona/browser_compatibility/index.html deleted file mode 100644 index 716b5c3c46..0000000000 --- a/files/de/mozilla/persona/browser_compatibility/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Browser Kompatibilität -slug: Mozilla/Persona/Browser_compatibility -translation_of: Archive/Mozilla/Persona/Browser_compatibility ---- -

Unterstützte Browser

-

Persona wird mit den folgenden Browsern entwickelt und getestet. Dank Personas plattformübergreifender JavaScript Bibliothek benötigen Nutzer keine Add-Ons, um Persona zu nutzen.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Desktop Browser
Internet Explorer8.0*, 9.0, 10.0** (siehe Kompatibilitätsmodus)
FirefoxAktuelle Version, Beta, Aurora, Nightly, und Extended Support Versionen, vorige stabile Version
ChromeLetzte stabile Version
SafariLetzte stabile Version
OperaLetzte stabile Version
iOS Browser
Mobile SafariiOS 5.x — 6.x
Android Browser
Standardbrowser2.2 — 4.x
FirefoxAktuelle Version, Beta, Aurora, Nightly, und Extended Support Versionen, vorige stabile Version
ChromeLetzte stabile Version
-

*: für Windows XP. : für Windows Vista und Windows 7. **Windows 8.  : As time allows.

-

Nicht unterstützte Browser

- -

Internet Explorer Kompatibilitätsmodus

-

Ab Version 8.0 unterstützt der Internet Explorer eine Funktion namens Kompatibilitätsmodus, die zur Emulation älterer Internet Explorer Versionen beim Rendern einer Seite dient. Die Funktion kann über drei verschiedene Wege kontrolliert werden:

-
    -
  1. Als lokale Einstellung im Browser
  2. -
  3. Basierend auf der Präsenz und dem Inhalt der DOCTYPE Deklaration auf der Seite.
  4. -
  5. Als "X-UA-Compatible" header anstatt eines HTTP headers oder als <meta> tag auf einer Seite. Diese Mehtode überschreibt die beiden ersten.
  6. -
-

Weil nur Internet Explorer 8.0 und neuer von Persona unterstützt werden, werden Internet Explorer, die eine ältere Version emulieren, nicht mit Persona funktionieren. Dies ist typisch für einen der folgenden Gründe:

- -

Für weitere Informationen siehe "Understanding Compatibility Modes in Internet Explorer 8" und "IE8 and IE9 Complications".

-

Andere Browser

-

Obwohl nicht explizit unterstützt, jeder Browser der {{ domxref("window.postMessage()") }} und {{ domxref("Storage", "localStorage") }} unterstützt sollte funktionieren. Diese APIs werden seit März 2010 von allen bekannten Browsern untertützt.

-

Bekannte Fehler

- diff --git a/files/de/mozilla/persona/index.html b/files/de/mozilla/persona/index.html deleted file mode 100644 index 0a8aa84850..0000000000 --- a/files/de/mozilla/persona/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Persona -slug: Mozilla/Persona -tags: - - Persona -translation_of: Archive/Mozilla/Persona ---- -
-

Bleibe informiert oder bekomme Hilfe!

- -

Verfolge unseren Blog, trete unserer Mailingliste bei oder finde uns in #identity in IRC.

-
- -

Mozilla Persona ist ein browserunabhängiges Login-System für das Web, das einfach zu verwenden und einfach einzusetzen ist. Es funktioniert mit allen wichtigen Browsern und du kannst noch heute beginnen.

- -

Warum solltest du Persona auf deiner Seite verwenden?

- -
    -
  1. Persona löst Webseiten-spezifische Passwörter vollständig ab, wodurch es Benutzer und Websites von der Last der Erstellung, Verwaltung und sicheren Speicherung von Passwörtern befreit.
  2. -
  3. Persona ist einfach zu bedienen. Mit nur zwei Klicks kann sich ein Persona-Benutzer bei einer neuen Website wie Voost registrieren und dabei alle Probleme bei der Account-Erstellung umgehen.
  4. -
  5. Persona ist einfach zu implementieren. Entwickler können Persona zu einer Website in einem einzigen Nachmittag hinzufügen.
  6. -
  7. Das Beste von allem, es gibt kein Lock-in. Entwickler erhalten eine verifizierte E-Mail-Adresse für alle ihre Benutzer und Benutzer können eine beliebige E-Mail-Adresse mit Persona verwenden.
  8. -
- -

Und Persona wird stetig besser: Es basiert auf einem offenen, dezentralisierten Protokoll, das dafür ausgelegt ist, eine direkte Integration in Browser und native Unterstützung von E-Mail-Providern zu erlauben. Webseiten die Persona heute implementieren werden diese Verbesserungen automatisch in Erfahrung bringen, ohne irgendeinen Code ändern zu müssen.

- -
Hinweis: Persona befindet sich in aktiver Entwicklung. Verfolge unseren Blog um von neuen Funktionen zu erfahren oder trete unserer Mailingliste bei und gib uns dein Feedback!
- -

Verwenden von Persona auf Ihrer Webseite

- - - - - - - - - - - - -
-

Der Einstieg

- -
-
Warum Persona?
-
- -

Sehen Sie, wieso Persona entwickelt wurde und warum es so toll ist! Und auch den Vergleich mit anderen Diensten scheuen wir uns nicht.

- -
-
Schnellstart
-
Ein Schnellrundgang zeigt Ihnen, wie Sie Persona auf Ihrer Webseite integrieren können.
-
-
-

Persona API Referenz

- -
-
Die navigator.id API-Referenz
-
Referenz für das navigator.id Objekt, welches Webentwickler nutzen können, um Persona in Webseiten einzubinden.
-
Verifikations-API-Referenz
-
Die Referenz für die remote verification API finden Sie auf https://verifier.login.persona.org/verify.
-
-
-

Leitfaden

- -
-
Sicherheitsaspekte
-
Praktiken und Techniken um sicherzustellen, dass Ihre Persona-Einbindung sicher ist.
-
Browserkompatiblität
-
Erfahre ganau, welche Browser Persona unterstützen.
-
Internationalisierung
-
Erfahre, wie Persona mit unterschiedlichen Sprachen umgeht.
-
Leitfaden für Website-Entwickler
-
Tipps von Web-Seiten, die eine Unterstützung für PERSONA bereits anbieten
-
-
-

Ressourcen

- -
-
Libraries und Plugins
-
Finde eine drop-in Bibliothek für deine bevorzugte Programmiersprache, Web-Framework, Blog oder Content-Management-System.
-
Das Persona Kochbuch
-
Beispiel Sourcecode für Persona-Seiten. Beinhaltet Schnipsel in PHP, Node.JS und mehr.
-
Branding resources
-
Anmelde-Buttons und andere Grafiken, die dabei helfen Persona Ihren Nutzern zu präsentieren.
-
-
- -

 

- - - - - - - - -
-

Informationen für Identitäts-Provider

- -

Wenn du ein E-Mail Betreiber oder ein Idäntitäts-Provider bist, dann schau dir die folgenden Links an in denen man ein Persona Idäntitäts-Provider werden kann.

- -
-
IdP Überblick
-
Ein hoher Rang von Persona Idäntitäts-Providern.
-
Implementieren eines IdP
-
Ein detaillierter Leitfaden zu den technischen Details, wie man ein IdP wird.
-
.well-known/browserid
-
Ein Überblick über die Struktur und den Zweck der .well-known/browserid Datei, welche IdPs benutzen, um auf deren Unterstützung für das Protokoll hinzuweisen.
-
-
-

Das Persona Projekt

- -
-
Glossary
-
Die BrowserID und Persona Fachsprache.
-
FAQ
-
Antworten zu gängigen Fragen.
-
Überblick des Protokolls
-
Gewinnen Sie einen Überblick über das verwendete BrowserID-Protokoll.
-
Kryptographie
-
Ein Blick auf die kryptographischen Konzepte und Sicherheitsfunktionen hinter Persona und BrowserID.
-
Die Spezifikation
-
Tiefe technische Details gibt es hier.
-
Die Persona Webseite
-
Damit Persona perfekt funktionieren kann verwenden wir drei Dienste auf: https://login.persona.org: Eine Rückfall-System für die Anmeldun, eine browser- und systemunabhängige Implementierung der {{ domxref("navigator.id") }} APIs und natürlich einen Verifizierungs-Dienst.
-
Der Persona Quellcode
-
Der Code hinter der Persona-Webseite liegt in einem Repository bei GitHub. Helfer sind immer ❤ Willkommen!
-
-
- -

 

diff --git a/files/de/mozilla/persona/protocol_overview/index.html b/files/de/mozilla/persona/protocol_overview/index.html deleted file mode 100644 index 44c6eab3da..0000000000 --- a/files/de/mozilla/persona/protocol_overview/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Protokoll Überblick -slug: Mozilla/Persona/Protocol_Overview -translation_of: Archive/Mozilla/Persona/Protocol_Overview ---- -

Persona baut auf dem BrowserID Protokoll auf. Diese Seite beschreibt das BrowserID Protokoll auf hohem Niveau.

-

Akteure

-

Das Protokoll umfasst drei Akteure:

- -

Persona und das BrowserID Protokoll benutzen E-mail Adressen als Identität, daher ist es üblich, dass der E-mail Provider die Rolle des IdPs einnimmt.

-

Mozilla betreibt einen "fallback IdP", so dass Benutzer jede E-mail Adresse für Persona benutzen können, sogar wenn eine Domain keinen IdP Status besitzt.

-

Protocol Steps

-

There are three distinct steps in the protocol:

-
    -
  1. User Certificate Provisioning
  2. -
  3. Assertion Generation
  4. -
  5. Assertion Verification
  6. -
-

As a prerequisite, the user should have an active identity (email address) that they wish to use when logging in to websites. The protocol does not require that IdP-backed identities are SMTP-routable, but it does require that identities follow the user@domain format.

-

User Certificate Provisioning

-

In order to sign into an RP, a user must be able to prove ownership of their preferred email address. The foundation of this proof is a cryptographically signed certificate from an IdP certifying the connection between a browser's user and a given identity within the IdP's domain.

-

Because Persona uses standard public key cryptography techniques, the user certificate is signed by the IdP's private key and contains:

- -

The user's browser generates a different keypair for each of the user's email addresses, and these keypairs are not shared across browsers. Thus, a user must obtain a fresh certificate whenever one expires, or whenever using a new browser or computer. Certificates must expire within 24 hours of being issued.

-

When a user selects an identity to use when signing into an RP, the browser checks to see if it has a fresh user certificate for that address. If it does, this step is complete and the browser continues with the assertion generation step below. If the browser does not have a fresh certificate, it attempts to obtain one from the domain associated with the chosen identity.

-
    -
  1. The browser fetches the /.well-known/browserid support document over SSL from the identity's domain.
  2. -
  3. Using information from the support document, the browser passes the user's email address and associated public key to the IdP and requests a signed certificate.
  4. -
  5. If necessary, the user is asked to sign into the IdP before provisioning proceeds.
  6. -
  7. The IdP creates, signs, and gives a user certificate to the user's browser.
  8. -
-

With the certificate in hand, the browser can continue with generating an identity assertion and signing into an RP.

-

user-certificate-provisioning.png

-

Assertion Generation

-

The user certificate establishes a verifiable link between an email address and a public key. However, this is alone not enough to log into a website: the user still has to show their connection to the certificate by proving ownership of the private key.

-

In order to prove ownership of a private key, the user's browser creates and signs a new document called an "identity assertion." It contains:

- -

The browser then presents both the user certificate and the identity assertion to the RP for verification.

-

Assertion Verification

-

The combination of user certificate and identity assertion is sufficient to confirm a user's identity.

-

First, the RP checks the domain and expiration time in the assertion. If the assertion is expired or intended for a different domain, it's rejected. This prevents malicious re-use of assertions.

-

Second, the RP validates the signature on the assertion with the public key inside the user certificate. If the key and signature match, the RP is assured that the current user really does possess the key associated with the certificate.

-

Last, the RP fetches the IdP's public key from its /.well-known/browserid document and verifies that it matches the signature on the user certificate. If it does, then the RP can be certain that the certificate really was issued by the domain in question.

-

Once verifying that this is a current login attempt for the proper RP, that the user certificate matches the current user, and that the user certificate is legitimate, the RP is done and can authenticate the user as the identity contained in the certificate.

-

assertion-generation-and-verify.png

-

The Persona Fallback IdP

-

What if a user's email provider doesn't support Persona? In that case, the provisioning step would fail. By convention, the user's browser handles this by asking a trusted third party, https://login.persona.org/, to certify the user's identity on behalf of the unsupported domain. After demonstrating ownership of the address, the user would then receive a certificate issued by the fallback IdP, login.persona.org, rather than the identity's domain.

-

RPs follow a similar process when validating the assertion: the RP would ultimately request the fallback IdP's public key in order to verify the certificate.

diff --git a/files/de/mozilla/persona/schnellstart/index.html b/files/de/mozilla/persona/schnellstart/index.html deleted file mode 100644 index 31a45b7553..0000000000 --- a/files/de/mozilla/persona/schnellstart/index.html +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Schnellstart -slug: Mozilla/Persona/Schnellstart -translation_of: Archive/Mozilla/Persona/Quick_Setup ---- -

Sie benötigen nur 5 Schritte um Persona ihrer Webseite hinzuzufügen:

-
    -
  1. Binden Sie die Persona JavaScript Bibliothek in ihre Webseite ein.
  2. -
  3. Fügen Sie jeweils einen "Login" und "Logout" Button hinzu.
  4. -
  5. Achten Sie auf die Aktionen der Nutzer.
  6. -
  7. Überprüfen Sie die Informationen des Nutzers.
  8. -
  9. Beachten Sie die Informationen für Sicheres Einbinden.
  10. -
-

Sie sollten in der Lage sein, Persona an einem einzigen Nachmittag zu implementieren. Zuvor sollten Sie sich allerdings in den Persona notices Newsletter eintragen. Der Newsletter versendet nur sicherheitsrelevante E-Mails.

-

Schritt 1: Einbinden der Persona Bibliothek

-

Persona ist Browser-neutral programmiert und unterstützt alle großen Desktop- und Mobilbrowser.

-

Wir erwarten für die Zukunft, dass die Browser Persona direkt und ohne externe Bibliothek unterstützten. Solange dies nicht der Fall ist, stellen wir eine JavaScript Bibliothek bereit, die die Benutzeroberfläche und den Client-seitigen Teil des Persona-Protokolls übernimmt. Durch die Einbindung dieser Bibliothek kann sich jeder Nutzer anmelden, egal, ob sein Browser Persona direkt unterstützt, oder nicht.

-

Sobald die Bibliothek in der Seite geladen ist, sind die Persona Funktionen ({{ domxref("navigator.id.watch()", "watch()") }}, {{ domxref("navigator.id.request()", "request()") }}, und {{ domxref("navigator.id.logout()", "logout()") }}) im globalen navigator.id Knoten vorhanden.

-

Um die Persona JavaScript Bibliothek einzubinden plazieren Sie diesen script Tag am Ende der HTML-Seite:

-
<script src="https://login.persona.org/include.js"></script>
-
-

Sie müssen dies am Ende jeder Seite einfügen, die {{ domxref("navigator.id") }}  benutzen soll. Da sich Persona immer noch in der Entwicklung befindet, sollten Sie die Persona include.js Datei nicht selber bereitstellen.

-

Unterdrückung des Kompatibilitätsmodus

-

Damit Persona auch im Internet Explorer funktioniert, sollten Sie dessen Kompatibilitätsmodus unterdrücken. Dies kann auf zwei Wegen geschehen:

- -

Für weitere Informationen schauen Sie bitte bei IE Compatibility Mode und "IE8 and IE9 Complications" vorbei.

-

Schritt 2: Hinzufügen der Login und Logout Buttons

-

Da Persona als Bestandteil der DOM API entwickelt wurde, müssen Sie Funktionen ausführen, sobald ein Nutzer auf einen der beiden Button klickt. Um den Anmelden Dialog auszuführen, sollten sie {{ domxref("navigator.id.request()") }} aufrufen. Für den Logout starten Sie bitte {{ domxref("navigator.id.logout()") }}. Notiz: Der Aufruf von {{ domxref("navigator.id.logout()", "logout()") }} muss in dem Click-Handler des Logout-Buttons ausgeführt werden.

-

Als Beispiel:

-
var signinLink = document.getElementById('signin');
-if (signinLink) {
-  signinLink.onclick = function() { navigator.id.request(); };
-}
-
-var signoutLink = document.getElementById('signout');
-if (signoutLink) {
-  signoutLink.onclick = function() { navigator.id.logout(); };
-}
-
-

Wie sollten diese Buttons aussehen? Betrachte unsere Branding Resources Seite für vorgefertigte Persona-Bilder und CSS-basierte Buttons.

-

Schritt 3: Warte auf Login und Logout Aktionen

-

Damit Persona funktioniert, musst du ihm mitteilen, wenn sich ein Nutzer an- bzw. abmeldet. Dies geschieht durch Übergabe dreier Parameter an die Funktion {{ domxref("navigator.id.watch()") }}. Die drei Parameter sind:

-
    -
  1. -

    Die E-Mail Adresse des momentan angemeldeten Nutzers, oder aber, wenn niemand angemeldet ist null Beispielsweise kannst du den Cookie auslesen, um herauszufinden, wer angemeldet ist.

    -
  2. -
  3. -

    Eine Funktion für den Fall, dass onlogin ausgelöst wird. This function is passed a single parameter, an “identity assertion,” which must be verified.

    -
  4. -
  5. -

    Eine Funktion, die aufzurufen ist, wenn onlogout ausgelöst wird. Dieser Funktion werden keine Parameter mitgegeben.

    -
  6. -
-
-
-

Beachte: Sie müssen immer beide, onlogin und onlogout übergeben, wenn Sie {{ domxref("navigator.id.watch()") }} aufrufen.

-
-
-

Wenn beispielsweise Bob angemeldet ist, müssen Sie folgendes tun:

-
var currentUser = 'bob@example.com';
-
-navigator.id.watch({
-  loggedInUser: currentUser,
-  onlogin: function(assertion) {
-    // Ein Nutzer hat sich angemeldete. Hier müssen Sie:
-    // 1. Send the assertion to your backend for verification and to create a session.
-    // 2. Aktualisiere die Oberfläche
-    $.ajax({ /* <-- This example uses jQuery, but you can use whatever you'd like */
-      type: 'POST',
-      url: '/auth/login', // This is a URL on your website.
-      data: {assertion: assertion},
-      success: function(res, status, xhr) { window.location.reload(); },
-      error: function(xhr, status, err) {
-        navigator.id.logout();
-        alert("Login failure: " + err);
-      }
-    });
-  },
-  onlogout: function() {
-    // A user has logged out! Here you need to:
-    // Tear down the user's session by redirecting the user or making a call to your backend.
-    // Also, make sure loggedInUser will get set to null on the next page load.
-    // (That's a literal JavaScript null. Not false, 0, or undefined. null.)
-    $.ajax({
-      type: 'POST',
-      url: '/auth/logout', // This is a URL on your website.
-      success: function(res, status, xhr) { window.location.reload(); },
-      error: function(xhr, status, err) { alert("Logout failure: " + err); }
-    });
-  }
-});
-
-

In this example, both onlogin and onlogout are implemented by making an asynchronous POST request to your site’s backend. The backend then logs the user in or out, usually by setting or deleting information in a session cookie. Then, if everything checks out, the page reloads to take into account the new login state.

-

Note that if the identity assertion can't be verified, you should call {{ domxref("navigator.id.logout()") }}: this has the effect of telling Persona that none is currently logged in. If you don't do this, then Persona may immediately call onlogin again with the same assertion, and this can lead to an endless loop of failed logins.

-

You can, of course, use AJAX to implement this without reloading or redirecting, but that’s beyond the scope of this tutorial.

-

Here is another example, this time not using jQuery.

-
function simpleXhrSentinel(xhr) {
-    return function() {
-        if (xhr.readyState == 4) {
-            if (xhr.status == 200){
-                // reload page to reflect new login state
-                window.location.reload();
-              }
-            else {
-                navigator.id.logout();
-                alert("XMLHttpRequest error: " + xhr.status);
-              }
-            }
-          }
-        }
-
-function verifyAssertion(assertion) {
-    // Your backend must return HTTP status code 200 to indicate successful
-    // verification of user's email address and it must arrange for the binding
-    // of currentUser to said address when the page is reloaded
-    var xhr = new XMLHttpRequest();
-    xhr.open("POST", "/xhr/sign-in", true);
-    // see http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
-    var param = "assertion="+assertion;
-    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
-    xhr.setRequestHeader("Content-length", param.length);
-    xhr.setRequestHeader("Connection", "close");
-    xhr.send(param); // for verification by your backend
-
-    xhr.onreadystatechange = simpleXhrSentinel(xhr); }
-
-function signoutUser() {
-    // Your backend must return HTTP status code 200 to indicate successful
-    // sign out (usually the resetting of one or more session variables) and
-    // it must arrange for the binding of currentUser to 'null' when the page
-    // is reloaded
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", "/xhr/sign-out", true);
-    xhr.send(null);
-    xhr.onreadystatechange = simpleXhrSentinel(xhr); }
-
-// Go!
-navigator.id.watch( {
-    loggedInUser: currentUser,
-         onlogin: verifyAssertion,
-        onlogout: signoutUser } );
-
-

You must call navigator.id.watch() on every page with a login or logout button. To support Persona enhancements like automatic login and global logout for your users, you should call this function on every page of your site.

-

Persona will compare the email address you've passed into loggedInUser with its own knowledge of whether a user is currently logged in, and who they are. If these don't match, it may automatically invoke onlogin or onlogout on page load.

-

 

-

Step 4: Verify the user’s credentials

-

Instead of passwords, Persona uses “identity assertions,” which are kind of like single-use, single-site passwords combined with the user’s email address. When a user wants to log in, your onlogin callback will be invoked with an assertion from that user. Before you can log them in, you must verify that the assertion is valid.

-

It’s extremely important that you verify the assertion on your server, and not in JavaScript running on the user’s browser, since that would be easy to forge. The example above handed off the assertion to the site’s backend by using jQuery’s $.ajax() helper to POST it to /auth/login.

-

Once your server has an assertion, how do you verify it? The easiest way is to use a helper service provided by Mozilla. Simply POST the assertion to https://verifier.login.persona.org/verify with two parameters:

-
    -
  1. assertion: The identity assertion provided by the user.
  2. -
  3. audience: The hostname and port of your website. You must hardcode this value in your backend; do not derive it from any data supplied by the user.
  4. -
-

For example, if you’re example.com, you can use the command line to test an assertion with:

-
$ curl -d "assertion=<ASSERTION>&audience=https://example.com:443" "https://verifier.login.persona.org/verify"
-
-

If it’s valid, you’ll get a JSON response like this:

-
{
-  "status": "okay",
-  "email": "bob@eyedee.me",
-  "audience": "https://example.com:443",
-  "expires": 1308859352261,
-  "issuer": "eyedee.me"
-}
-
-

You can learn more about the verification service by reading The Verification Service API. An example /auth/login implementation, using Python, the Flask web framework, and the Requests HTTP library might look like this:

-
@app.route('/auth/login', methods=['POST'])
-def login():
-    # The request has to have an assertion for us to verify
-    if 'assertion' not in request.form:
-        abort(400)
-
-    # Send the assertion to Mozilla's verifier service.
-    data = {'assertion': request.form['assertion'], 'audience': 'https://example.com:443'}
-    resp = requests.post('https://verifier.login.persona.org/verify', data=data, verify=True)
-
-    # Did the verifier respond?
-    if resp.ok:
-        # Parse the response
-        verification_data = json.loads(resp.content)
-
-        # Check if the assertion was valid
-        if verification_data['status'] == 'okay':
-            # Log the user in by setting a secure session cookie
-            session.update({'email': verification_data['email']})
-            return 'You are logged in'
-
-    # Oops, something failed. Abort.
-    abort(500)
-
-

For examples of how to use Persona in other languages, have a look at the cookbook.

-

The session management is probably very similar to your existing login system. The first big change is in verifying the user’s identity by checking an assertion instead of checking a password. The other big change is ensuring that the user’s email address is available for use as the loggedInUser parameter to {{ domxref("navigator.id.watch()") }}.

-

Logout is simple: you just need to remove the user’s session cookie.

-

Step 5: Review best practices

-

Once everything works and you’ve successfully logged into and out of your site, you should take a moment to review best practices for using Persona safely and securely.

-

If you're making a production site, have a look at the implementor's guide, where we've collected tips for adding the kind of features often needed in real-world login systems.

-

Lastly, don’t forget to sign up for the Persona notices mailing list so you’re notified of any security issues or backwards incompatible changes to the Persona API. The list is extremely low traffic: it’s only used to announce changes which may adversely impact your site.

-

 

diff --git a/files/de/mozilla/persona/warum_persona/index.html b/files/de/mozilla/persona/warum_persona/index.html deleted file mode 100644 index 337a84a544..0000000000 --- a/files/de/mozilla/persona/warum_persona/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Warum Persona? -slug: Mozilla/Persona/Warum_Persona -translation_of: Archive/Mozilla/Persona/Why_Persona ---- -

 

-

Das existierende System von Benutzernamen und Paswörtern ist inakzeptabel: Von den Nutzern wird erwartet, dass sie ein neues, komplexes Passwort für jede Site und jeden Dienst erstellen und sich an dieses erinnern. Und jede Site muss das Passwort sicher speichern. Allerdings zeigen Hacker-Angriffe gerade in letzter Zeit, dass sogar namhafte Unternehmen Lücken in der Passwortsicherheit haben und die Daten ihrer Nutzer damit in Gefahr bringen.

-

Persona ist ein offenes, verteiltes, webweites Identitätssystem, das die Passworteingabe für jede Site ersetzt.  Es orientiert sich an der Benutzerfreundlichkeit und begegnet den Datenschutzmängeln von Systemen wie OpenID, ohne dabei auf die zentrale Infrastruktur zurückzugreifen wie sie beispielsweise Facebook Connect nutzt.

-

Persona macht Passwörter für jede Site überflüssig

-

Anstatt eines Passworts für jede einzelne Site, erlaubt Persona die Anmeldung mit nur zwei Klicks, nach Abschluß eines einfachen, einmaligen Vorgangs für jede Identität.  Das ist sicher, geschützt und basiert auf einem öffentlichen Schlüssel modernster Kryptografie. Statt eines Passworts erzeugt der Browser des Nuzers eine kryptografische "Idenditätserklärung", die nach wenigen Minuten abläuft und nur für eine einzelne Site gültig ist. Weil es keine seitenspezifischen Passwörter gibt, brauchen sich Websites, die Persona nutzen, nicht um die sichere Speicherung oder den potentiellen Verlust der Passwortdatenbank kümmern.

-

Der schnelle Registriervorgang reduziert außerdem den "Nutzerwiderstand" beim Besuch neuer Sites.

-

Persona Identitäten sind Email-Addressen

-

Anstatt eines freien Usernamens verwendet Persona Email-Addressen als Identitäten. Dies hat zahlreiche Vorteile sowohl für den Nutzer als auch den Entwickler:

-

Nutzervorteile bei Verwendung von Email-Adressen

- -

Vorteile für Entwickler bei Verwendung von Email-Addressen

- -

Ganz zu schweigen davon, dass Email ein bereits bestehendes, ausgereiftes System mit Milliarden von Konten unzähliger Anbieter darstellt.

-

Worin unterscheidet sich Persona von anderen Einmal-Zugangsanbietern?

-

Persona ist sicher, geschützt und einfach. Es schützt die Privatspähre, die Kontrolle und die Wahlfreiheit der Nutzer in einer Art, wie es andere Anbieter nicht tun oder nicht können.

-

Viele soziale Netzwerke wie Facebook and Google+ benötigen Nutzer die ihren realen Namen verwenden und schränken die Nutzer auf ein einziges Konto ein. Dadurch, dass Persona auf Email-Adressen beruht, erlaubt es den Nutzern ihre verschiedenen Arbeits-, Heim-, Schul- und andere Identitäten zu trennen.

-

Persona ist offen und dezentral: Jeder mit einer Email-Adresse kann sich bei Sites anmelden, die Persona verwenden. Zudem kann jeder seine eigene Identität hosten oder delegieren - eben genau wie Emails. Dies steht im Gegensatz zu Zugangsdiensten sozialer Netzwerke, die ein einziges, zentrales Konto benötigen.

-

Persona bietet außerdem einen neuen Ansatz um die Privatspähre der Nutzer zu schützen, indem es den Browser des Nutzers in den Mittelpunkt des Authentifzierungsprozesses stellt: Der Browser erhält Anmeldeinformationen vom Email-Anbieter des Nutzers und stellt diese Informationen der Website zur Verfügung. Der Email-Anbieter kann den Nutzer nicht nachverfolgen ("tracken"), aber Websiten können dennoch durch die kryptografisches Verifikation der Anmeldeinformationen der Identität des Nutzers vertrauen. Die meisten anderen Systeme, selbst dezentrale wie OpenID, verlangen, dass die Site "nach Hause telefoniert" bevor sie dem Nutzer die Anmeldung gestatten.

diff --git a/files/de/mozilla/preferences/eine_kurze_anleitung_zu_mozilla_einstellungen/index.html b/files/de/mozilla/preferences/eine_kurze_anleitung_zu_mozilla_einstellungen/index.html deleted file mode 100644 index ac734def51..0000000000 --- a/files/de/mozilla/preferences/eine_kurze_anleitung_zu_mozilla_einstellungen/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Eine kurze Anleitung zur Mozilla- Einstellungen -slug: Mozilla/Preferences/Eine_kurze_Anleitung_zu_Mozilla_Einstellungen -tags: - - Favoriten -translation_of: Mozilla/Preferences/A_brief_guide_to_Mozilla_preferences ---- -

Dieser Artikel ist für Mozilla viel Nutzer und Systemadministratoren, das darauf abzielt einen allgemeinen Überblick in den Mozilla- Einstellungen zu gewährleisten.
- Insbesondere über das speichern

-

Datei-für-Datei so wie das Bearbeiten der Ladesequenz dieser

diff --git a/files/de/mozilla/preferences/index.html b/files/de/mozilla/preferences/index.html deleted file mode 100644 index 1169ecabf1..0000000000 --- a/files/de/mozilla/preferences/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Preferences -slug: Mozilla/Preferences -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Preferences ---- -

The preference system makes it possible to store data for Mozilla applications using a key/value pairing system. These articles provide information about how to use the preference system.

- - - - - - - -
-

Documentation

-
-
Preferences system
-
An introduction to using the preference system in Mozilla.
-
XUL School: Handling preferences
-
The XUL School tutorial chapter on preferences.
-
Mozilla preference reference
-
A reference guide to all Mozilla preferences; currently a work in progress.
-
A brief guide to Mozilla preferences
-
An introductory guide to where preferences are stored and other useful information about the core preference system.
-
Using preferences from application code {{gecko_minversion_inline("6.0")}}
-
Firefox 6 introduced static functions for accessing preferences efficiently from within application code. This API is not available for add-ons, but if you're working on a Gecko application, this API is the preferred way to access preferences.
-
Mozilla networking preferences
-
A guide to key networking-related preferences.
-
Mozilla preferences for uber-geeks
-
A guide to preferences that only truly elite geeks should play with.
-
-

View all pages tagged with "Preferences"...

-
-

Examples

-
-
Code snippets
-
Preference-related code snippets.
-
Adding preferences to an extension
-
How to add preferences to an existing extension.
-
- - -
diff --git a/files/de/mozilla/projects/deutsch/index.html b/files/de/mozilla/projects/deutsch/index.html deleted file mode 100644 index e422dcde65..0000000000 --- a/files/de/mozilla/projects/deutsch/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Emscripten -slug: Mozilla/Projects/Deutsch -translation_of: Mozilla/Projects/Emscripten ---- -
-

Emscripten is an LLVM to JavaScript compiler. It takes LLVM bytecode (e.g. generated from C/C++ using Clang, or from another language) and compiles that into JavaScript, which can be run on the Web.

-
-
-

The resources here provide you with all you need to know to get up and running with Emscripten at a basic level, allowing you to take your first steps with Emscripten, and discover how Emscripten can be leveraged to produce more powerful web apps. For a more detailed set of documentation, you should consult the official Emscripten Wiki.

-

Using Emscripten, you can

- -

If you are new to Emscripten you start off by installing Emscripten on your system, and working through our Introducing Emscripten section.

-
-

Note: the current release version of Emscripten is 1.7.8.

-
-
- -
    -
  1. Introducing Emscripten -
      -
    1. Emscripten beginner's tutorial
    2. -
    3. What is Emscripten and how does it work?
    4. -
    5. The nature of Emscripten-compiled JavaScript
    6. -
    7. Putting Emscripten in your toolchain
    8. -
    -
  2. -
  3. Web abilities and limitations
  4. -
  5. Download and install
  6. -
  7. Workflow and tools
  8. -
  9. Emscripten Techniques
  10. -
diff --git a/files/de/mozilla/projects/index.html b/files/de/mozilla/projects/index.html deleted file mode 100644 index 6291137b31..0000000000 --- a/files/de/mozilla/projects/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Projects -slug: Mozilla/Projects -tags: - - Mozilla - - NeedsContent - - NeedsTranslation - - Projects - - TopicStub -translation_of: Mozilla/Projects ---- -

{{ draft() }}

-

This page needs to become a pretty index to Mozilla projects whose documentation is located under it.

-

{{ LandingPageListSubpages() }}

diff --git a/files/de/mozilla/projects/nss/index.html b/files/de/mozilla/projects/nss/index.html deleted file mode 100644 index f69cd1dab7..0000000000 --- a/files/de/mozilla/projects/nss/index.html +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Network Security Services -slug: Mozilla/Projects/NSS -tags: - - JSS - - NSS - - NeedsMigration - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Projects/NSS ---- -

Network Security Services (NSS) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards.

- -

For detailed information on standards supported, see Overview of NSS. For a list of frequently asked questions, see the FAQ.

- -

NSS is available under the Mozilla Public License. For information on downloading NSS releases as tar files, see Download PKI Source.

- -

If you're a developer and would like to contribute to NSS, you might want to read the documents highlevel overview of internal details of NSS and getting started with NSS.

- - - - - - - - -
-

Documentation

- -

Background Information

- -
-
Overview of NSS
-
Provides a brief summary of NSS and its capabilities.
-
NSS FAQ
-
Answers basic questions about NSS.
-
Introduction to Public-Key Cryptography
-
Explains the basic concepts of public-key cryptography that underlie NSS.
-
Introduction to SSL
-
Introduces the SSL protocol, including information about cryptographic ciphers supported by SSL and the steps involved in the SSL handshake.
-
- -

Getting Started

- -
-
NSS Releases
-
This page contains information about the current and past releases of NSS.
-
Get the source code and Build it
-
Instructions on how to build NSS on the different supported platforms.
-
Get Mozilla Source Code Using Mercurial
-
Information about with working with Mercurial.
-
Get Mozilla Source Code Using CVS (deprecated)
-
Old deprecated CVS documentation.
-
- -

NSS APIs

- -
-
Introduction to Network Security Services
-
Provides an overview of the NSS libraries and what you need to know to use them.
-
NSS Public Functions
-
Summarizes the APIs exported by the NSS shared libraries.
-
NSS Reference
-
API used to invoke SSL operations.
-
NSS API Guidelines
-
Explains how the libraries and code are organized, and guidelines for developing code (naming conventions, error handling, thread safety, etc.)
-
NSS Technical Notes
-
Links to NSS technical notes, which provide latest information about new NSS features and supplementary documentation for advanced topics in programming with NSS.
-
- -

Tools, testing, and other technical details

- -
-
Build Instructions for NSS
-
Describe how to check out and build NSS releases.
-
- -
-
NSS Developer Tutorial
-
How to make changes in NSS. Coding style, maintaining ABI compatibility.
-
- -
-
NSS Tools
-
Tools for developing, debugging, and managing applications that use NSS.
-
Sample Code
-
Demonstrates how NSS can be used for cryptographic operations, certificate handling, SSL, etc.
-
NSS 3.2 Test Suite
-
Archived version. Describes how to run the standard NSS tests.
-
NSS Performance Reports
-
Archived version. Links to performance reports for NSS 3.2 and later releases.
-
Encryption Technologies Available in NSS 3.11
-
Archived version. Lists the cryptographic algorithms used by NSS 3.11.
-
NSS 3.1 Loadable Root Certificates
-
Archived version. Describes the scheme for loading root CA certificates.
-
cert7.db
-
Archived version. General format of the cert7.db database.
-
- -

PKCS #11 information

- - - -
-
- -

CA certificates pre-loaded into NSS

- - - -
-
- -

NSS is built on top of Netscape Portable Runtime (NSPR)

- -
-
Netscape Portable Runtime
-
NSPR project page.
-
NSPR Reference
-
NSPR API documentation.
-
- -

Additional Information

- - - -

Testing

- - - -

Planning

- -

Information on NSS planning can be found at wiki.mozilla.org, including:

- - -
-

Community

- -
    -
  • View Mozilla Security forums...
  • -
- -

{{ DiscussionList("dev-security", "mozilla.dev.security") }}

- -
    -
  • View Mozilla Cryptography forums...
  • -
- -

{{ DiscussionList("dev-tech-crypto", "mozilla.dev.tech.crypto") }}

- - - - -
- -

 

diff --git a/files/de/mozilla/projects/nss/nss_3.33_release_notes/index.html b/files/de/mozilla/projects/nss/nss_3.33_release_notes/index.html deleted file mode 100644 index 6bcaf94043..0000000000 --- a/files/de/mozilla/projects/nss/nss_3.33_release_notes/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: NSS 3.33 release notes -slug: Mozilla/Projects/NSS/NSS_3.33_release_notes -translation_of: Mozilla/Projects/NSS/NSS_3.33_release_notes ---- -

Einführung

- -

Das Network Security Services (NSS) Team hat NSS 3.33 veröffentlicht, was eine Nebenversion darstellt.

- -

Distribution information

- -

The hg tag is NSS_3_33_RTM. NSS 3.33 requires Netscape Portable Runtime (NSPR) 4.17 or newer.

- -

NSS 3.33 source distributions are available on ftp.mozilla.org for secure HTTPS download:

- - - -

Bedeutende Änderungen in NSS 3.33

- - - -

Neu in NSS 3.33

- -

Neue Funktionalität

- - - -

Neue Funktionen

- - - -

Fehler behoben in NSS 3.33

- -

This Bugzilla query returns all the bugs fixed in NSS 3.33:

- -

https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.33

- -

Kompatibilität

- -

NSS 3.33 shared libraries are backward compatible with all older NSS 3.x shared libraries. A program linked with older NSS 3.x shared libraries will work with NSS 3.33 shared libraries without recompiling or relinking. Furthermore, applications that restrict their use of NSS APIs to the functions listed in NSS Public Functions will remain compatible with future versions of the NSS shared libraries.

- -

Rückmeldung

- -

Entdeckte Fehler sollten durch das Ausfüllen eines Fehlerberichts mithilfe von bugzilla.mozilla.org gemeldet werden (Produkt NSS).

diff --git a/files/de/mozilla/projects/nss/nss_sample_code/index.html b/files/de/mozilla/projects/nss/nss_sample_code/index.html deleted file mode 100644 index a765114f0b..0000000000 --- a/files/de/mozilla/projects/nss/nss_sample_code/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: NSS Beispielcode -slug: Mozilla/Projects/NSS/NSS_Sample_Code -translation_of: Mozilla/Projects/NSS/NSS_Sample_Code ---- -

NSS Beispielcode

- -

Die Sammlung an Beispielcode demonstriert wie NSS für Kryptographische Operationen, Zertifikat Handhabung, SSL, etc. verwendet werden kann. Außerdem werden einige "best practices" in der Anwendung von Kryptographie demonstriert.

- -
    -
  1. Beispielcode 1: Schlüsselgenerierung und Transport zwischen Servern
  2. -
  3. Beispielcode 2: Symmetrische Verschlüsselung
  4. -
  5. Beispielcode 3: Hashing, MAC
  6. -
  7. Beispielcode 4: PKI Verschlüsselung
  8. -
  9. Beispielcode 5: PKI Verschlüsselung mit rohem öffentlichem & privatem Schlüssel im DER Format
  10. -
  11. Beispielcode 6: Konstante Symmetrische Schlüssel in der NSS Datenbank
  12. -
- -


- Dies sind sehr alte Code Beispiele die ersetzt werden müssen. Siehe https://bugzilla.mozilla.org/show_bug.cgi?id=490238

- -

Die Beispiele können wie folgt heruntergeladen werden:

- -
hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH
-
diff --git a/files/de/mozilla/projects/nss/pkcs11/index.html b/files/de/mozilla/projects/nss/pkcs11/index.html deleted file mode 100644 index 1bb5996d30..0000000000 --- a/files/de/mozilla/projects/nss/pkcs11/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: PKCS11 -slug: Mozilla/Projects/NSS/PKCS11 -tags: - - NSS - - NeedsTranslation - - Security - - TopicStub -translation_of: Mozilla/Projects/NSS/PKCS11 ---- -

 

- -

PKCS #11 information for implementors of cryptographic modules:

- - diff --git a/files/de/mozilla/projects/nss/pkcs11/module_installation/index.html b/files/de/mozilla/projects/nss/pkcs11/module_installation/index.html deleted file mode 100644 index 158c1944b0..0000000000 --- a/files/de/mozilla/projects/nss/pkcs11/module_installation/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Installation des PKCS11-Moduls -slug: Mozilla/Projects/NSS/PKCS11/Module_Installation -translation_of: Mozilla/Projects/NSS/PKCS11/Module_Installation ---- -

PKCS #11 Module sind externe Module, die Firefox-Unterstützung für Smartcard-Lesegeräte, biometrische Sicherheitsgeräte und externe Zertifikatspeicher ergänzen. Dieser Artikel behandelt die beiden Methoden zum Installieren von PKCS-#11 Modulen in Firefox. Benutzer können das Einstellungsdialogfeld verwenden, um PKCS #11-Modul zu installieren oder zu entfernen. Erweiterungen können PKCS-#11 Module nsIPKCS11 programmgesteuert verwalten.

- -
Hinweis: Die Informationen in diesem Artikel sind spezifisch für Firefox 3.5 und neuer. Ältere Versionen von Firefox unterstützen möglicherweise die window.pkcs11-Eigenschaft für die Installation von PKCS #11 Modulen.
- -

Verwenden der Firefox-Einstellungen zum Installieren von PKCS-#11 Modulen

- -
    -
  1. Speichern des PKCS-#11-Moduls an einem dauerhaften Speicherort auf Ihrem lokalen Computer
  2. -
  3. Öffnen Sie das Dialogfeld Firefox-Einstellungen. Wählen Sie "Erweitert" > "Verschlüsselung" > "Sicherheitsgeräte"
  4. -
  5. Wählen Sie "Load"
  6. -
  7. Geben Sie einen Namen für das Sicherheitsmodul ein, z. B. "Meine Clientdatenbank". HINWEIS: Es gibt derzeit einen Fehler in Firefox, bei dem internationale Zeichen Probleme verursachen können.
  8. -
  9. Wählen Sie "Durchsuchen..." , um den Speicherort des PKCS-#11-Moduls auf Ihrem lokalen Computer zu finden, und wählen Sie "OK", wenn Sie fertig sind.
  10. -
- -

Bereitstellen von PKCS-#11-Modulen mithilfe der pkcs11-API

- -

Ab Firefox 58 können Erweiterungen die Browsererweiterungs-API verwenden, um PKCS-#11 Module aufzuzählen und sie dem Browser als Schlüssel- und Zertifikatquellen zugänglich zu machen.pkcs11

- -

Siehe auch

- - diff --git a/files/de/mozilla/projects/thunderbird/thunderbird_lokalisation/index.html b/files/de/mozilla/projects/thunderbird/thunderbird_lokalisation/index.html deleted file mode 100644 index 5b4c9e60d8..0000000000 --- a/files/de/mozilla/projects/thunderbird/thunderbird_lokalisation/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Thunderbird Lokalisation -slug: Mozilla/Projects/Thunderbird/Thunderbird_Lokalisation -tags: - - Lokalisation - - thunderbird -translation_of: Mozilla/Projects/Thunderbird/Thunderbird_Localization ---- -

Diese Seite richtet sich an aktuelle und zukünftige Lokalisierer Thunderbirds, Mozilla Messagings E-Mail- und Usenet- Client. Sie deckt viele Aspekts ab, die ein Lokalisierer Thunderbirds kennen sollte, wie, notwendige Werkzeuge und wie man Informationen über lokalisationsrelevante Veranstaltungen und verschiedene andere interessante Angelegenheiten bekommt.

- -

Erstellen einer Thunderbird-Lokalisation

- -

Eine neue Lokalisation erstellen (Mercurial) - Dieser Artikel beschreibt, wie du eine neue Lokalisation Thunderbirds erstellen kannst.

- -

Über Repostorien und Entwicklungszweige

- -

Es gibt 3 aktive Repositorien für die Thunderbird-Entwicklung. Der Entwicklungsfortschritt Thunderbirds wird von einem Zweig zum nächsten alle sechs Wochen zusammengeführt.

- - - -

Most locales will being working on comm-aurora. This repository/branch is stable with respect to strings for each six week period. Completing work here means it is ready for the first beta, and you won't need to work on beta branch. Your work will also automatically be carried forward.

- -

Lokalisationsanforderungen

- -

There are not significant restrictions on what locales can change. However, we need to work together on providing search engines for Thunderbird users to use to get the right balance of search engines and the correct options set. For further information see this page.

- -

Lokalisationsübersicht

- -

Die Lokalisations-Übersicht für Thunderbird gibt Lokalisierern eine präzise Übersicht über den aktuellen Zustand ihrer Lokalisationen. Weitere Informationen gibt es auf der  L10n Übersichts-Seite.

- -

A localization will added to the l10n dashboard on request when it has reached a high-level of completion (> 80%) as shown by the compare-locales output. To request the addition of your locale to the dashboard, file a bug in the Thunderbird product/Build Config component.

- -

L10n-relevante Informationen erhalten

- -

Nachrichtengruppen & E-Mail-Verteiler

- -

Localizers of Thunderbird should read the localization newsgroups (mozilla.dev.l10n.announce mozilla.dev.l10n) to stay informed of Thunderbird-specific and general l10n-related items of interest to them. They are further encouraged to read the Thunderbird development newsgroup (mozilla.dev.apps.thunderbird) to stay informed of recent Thunderbird-related developments.

- -

These newsgroups can also be accessed via the dev-l10n-announce@lists.mozilla.org, dev-l10n@lists.mozilla.org (localization mailinglist) or dev-apps-thunderbird@lists.mozilla.org (Thunderbird development mailinglist) mailinglists, which mirror the newsgroups mentioned above. You can subscribe to or unsubscribe from these mailinglists via the web interface at lists.mozilla.org.

- -

Bugzilla

- -

Localizers should watch the thunderbird@localization.bugs mail address (or its alias :tb-l10n) to stay current on bugs that might affect Thunderbird localizers. This can be done by adding this mail address to the "User Watching" section of your Email preferences in bugzilla.

- - - - - -

Sprachumgebungsschichten

- -

Locale tiers reflect locales that we need to have in a good state for release. There are 10 locales in tier 1, which are the most important for Thunderbird, because of their number of Thunderbird users or potential for growth.

- -

These locales are being treated as first-class citizens, as important as en-US, which is to say that any Tier 1 locale that does not meet the requirements may block a final release of Thunderbird.

- -

Schicht 1

- -

The following are P1 (Priorität 1) locales in order of priority:

- -
* de             -  Deutsch
-* fr             -  Französisch
-* ja, ja-JP-mac  -  Japanisch
-* en-GB          -  Britisches Englisch
-* es-ES          -  Spanisch (kontinentaleuropäisch)
-* it             -  Italienisch
-* pl             -  Polnisch
-* ru             -  Russisch
-* nl             -  Niederländisch
-* pt-BR          -  Brasilianisches Portugiesisch
-
- -

Schicht 2

- -

Alle anderen unterstützten Sprachumgebungen befinden sich in der Schicht 2.

diff --git a/files/de/mozilla/qa/index.html b/files/de/mozilla/qa/index.html deleted file mode 100644 index b6efbed387..0000000000 --- a/files/de/mozilla/qa/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: 'QA: Quality assurance at Mozilla' -slug: Mozilla/QA -tags: - - NeedsTranslation - - QA - - Testing - - TopicStub -translation_of: Mozilla/QA ---- -

Es gibt viele Dinge, die im Bereich der Qualitätssicherung erledigt werden müssen und dabei muss man nicht zwingend programmieren können. Einige Aufgaben erfordern nicht mal Kenntnisse in HTML oder andren Webtechnologien. Wenn Sie interessiert sind uns beim Testen von Anwendungen oder anderen Aufgaben der Qualitätssicherung zu unterstützen, können Sie zunächst einmal auf den Seiten von quality.mozilla.org vorbei schauen.

- - - - - - - - - - -
-

Dokumentation

- -
-
Richtlinien zum Schreiben eines Bugreports
-
Je besser ein Bug gemeldet worden ist, umso besser wird ein Entwickler ihn sofort beseitigen. Wenn Sie diesen Leitfaden befolgen, können Sie helfen, dass ihre Bugs an oberster Stelle der Entwicklerliste stehen, und sie umso schneller beseitigt werden können.
-
Unbestätigte Bugs bestätigen
-
Nützliche Fehlermeldungen identifizieren und restliche Meldungen schließen.
-
Doppelte Fehlermeldungen aussortieren
-
Helfen Sie uns Fehler schneller zu beseitigen, indem Sie vermeiden doppelte Fehlermeldungen zu senden oder doppelte Einträge auszusortieren.
-
Reduzierte Testfällen
-
Verbessern Sie ihre Fehlermeldungen in dem Sie fehlerhafte Webseiten auf einfache Testseiten reduzieren, welche Entwicklern schnell helfen den Fehler zu verstehen und außerdem für automatisierte Tests verwendet werden können.
-
Tests entwickeln
-
Tests sichern, dass zukünftige Veränderungen an Mozilla nichts kaputt machen, was vorher korrekt funktioniert hat.
-
- -

Alles anzeigen...

-
-

Community

- - - - - - - -

Tools

- - - -

Verwandte Themen

- -
-
Mozilla entwickeln
-
-
diff --git a/files/de/mozilla/tech/index.html b/files/de/mozilla/tech/index.html deleted file mode 100644 index f9682e62e1..0000000000 --- a/files/de/mozilla/tech/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Mozilla technologies -slug: Mozilla/Tech -tags: - - Landing - - Mozilla - - NeedsTranslation - - Reference - - TopicStub - - XUL -translation_of: Mozilla/Tech ---- -

Mozilla has several technologies used as components of its projects. These are documented here. (flesh out this text).

-

{{LandingPageListSubpages}}

diff --git a/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html b/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html deleted file mode 100644 index a81f28519f..0000000000 --- a/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Empfang von Benachrichtigungen zum Startprozeß -slug: Mozilla/Tech/XPCOM/Guide/empfang_von_benachrichtigungen_zum_startprozess -translation_of: Mozilla/Tech/XPCOM/Guide/Receiving_startup_notifications ---- -

Manchmal brauchen XPCOM Komponenten Benachrichtigungen über den Fortschritt beim Hochfahren der Anwendung, zum Beispiel um neue Dienste zur passenden Zeit starten können

-

Empfang von Benachrichtigungen zum Startprozeß ab Gecko 2.0 (Firefox 4)

-

Der XPCOM Startprozeß wurde verändert um die zum Hochfahren benötigte Zeit zu verbessern. Siehe Der Startprozeß für Details über die Funktionsweise, wenn dich die Einzelheiten interessieren.

-

Die entscheidende Änderung ist, daß man jetzt entsprechende Zeilen zum chrome.manifest hinzufügt damit die Anwendung sich darum kümmert, anstelle die Registrierung programmatisch mit dem Category Manager durchzuführen wie früher. Zum Beispiel:

-
category profile-after-change MyComponent @foobar/mycomponent;1
-
- Wichtig: Bisher begann die Contract ID des Kategorie-EIntrags mit "service," wenn die Komponente als Dienst (Service) implementiert war. Das ist nicht länger der Fall, dieses muß bei der Codemigration entfernt werden..
-

Hinzu kommt, daß die früheste Benachrichtigung beim Startprozeß, die man erhalten kann, jetzt  profile-after-change ist. Dein Add-On wird keine xpcom-startup oder app-startup Benachrichtigungen mehr erhalten.

-

Der Startprozeß

-

Während des Startprozesses wird aus dem Manifest der Anwendung die Liste der Komponenten ausgelesen, die registriert werden müssen, und diese Komponenten werden dann gestartet. Damit sind dann XPCOM und die Anwendung soweit hochgefahren, daß der Erweiterungs-Manager geladen werden kann, um sich um Installation, Deinstallation und Aktualisierung von Erweiterungen zu kümmern.

-

Sobald dieser Prozess abgeschlossen ist, können Erweiterungen einfach dadurch geladen werden, daß ihr Manifest gelesen, ihre Komponenten geladen und der Anwendungsstart fortgesetzt wird, ohne den Browser neu starten zu müssen.

-

Empfang von Benachrichtigungen zum Startprozeß vor Gecko 2.0 (Firefox 4)

-

Um Benachrichtigungen zum Startprozeß zu empfangen muß man {{ interface("nsICategoryManager") }} benutzen um sich für die "app-startup" Kategorie zu registrieren. Damit wird die Komponente dann unter anderem folgende Benachrichtigungen zum Anwendungsstart erhalten:

-
-
- xpcom-startup
-
- Wird gesendet, wenn XPCOM fertig mit dem Hochfahren ist. Die meisten Anwendungsdienste sind dann noch nicht verfügbar, aber XPCOM selbst steht bereit.
-
- app-startup
-
- Wird gesendet, wenn die Anwendung mit dem Startprozess fertig ist.
-
- final-ui-startup
-
- Wird gesendet eben bevor das erste Anwendungsfenster dargestellt wird.
-
-

Registrierung am Kategorien-Manager

-

Um sich beim Kategorien-Manager anzumelden, muß man nur dessen Methode {{ ifmethod("nsICategoryManager", "AddCategoryEntry") }} aufrufen:

-
categoryManager->AddCategoryEntry(APPSTARTUP_CATEGORY,
-                                  "mycomponentname",
-                                  "contract-id",
-                                  PR_TRUE, PR_TRUE,
-                                  getter_Copies(previous));
-
-

Das bewirkt, daß die Komponente mit {{ ifmethod("nsIComponentManager","createInstance") }} instanziiert wird.

-

Wenn die Komponente als Dienst (Service) laufen soll, laß die Contract ID mit "service," beginnen:

-
categoryManager->AddCategoryEntry(APPSTARTUP_CATEGORY,
-                                  "mycomponentname",
-                                  "service,contract-id",
-                                  PR_TRUE, PR_TRUE,
-                                  getter_Copies(previous));
-

Wenn "service," angegeben ist, wird die Komponente mit {{ ifmethod("nsIComponentManager","getService") }} instanziiert.

-

In beiden Fällen braucht man keine weitere Registrierung für die Benachrichtigungen zum Startprozeß, die Registrierung am Kategorien-Manager reicht dazu aus.

-

Wie es weitergeht

-

Nachdem die Registrierung am Kategorien-Manager erfolgt ist, wird zum Zeitpunkt des Starts von Mozilla (oder wenn bei einer eingebetteten Anwendung die Funktion NS_InitEmbedding() aufgerufen wurde) die AppStartupNotifier Komponente instanziiert und ihre Observe() Methode aufgerufen; Diese wiederum läuft über alle Komponenten in der app-startup Kategorie und sendet ihnen die passenden Benachrichtigungen.

-

Siehe auch

- diff --git a/files/de/mozilla/tech/xpcom/guide/index.html b/files/de/mozilla/tech/xpcom/guide/index.html deleted file mode 100644 index 781a596b2e..0000000000 --- a/files/de/mozilla/tech/xpcom/guide/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: XPCOM guide -slug: Mozilla/Tech/XPCOM/Guide -tags: - - Landing - - Mozilla - - NeedsTranslation - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Guide ---- -

These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.

-

{{LandingPageListSubpages}}

diff --git a/files/de/mozilla/tech/xpcom/reference/index.html b/files/de/mozilla/tech/xpcom/reference/index.html deleted file mode 100644 index 29d07953d6..0000000000 --- a/files/de/mozilla/tech/xpcom/reference/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: XPCOM reference -slug: Mozilla/Tech/XPCOM/Reference -tags: - - Add-ons - - Extensions - - Landing - - Mozilla - - NeedsTranslation - - Reference - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Reference ---- -

This reference describes the interfaces and functions provided by the XPCOM library. In addition, it details the various helper classes and functions, as well as the components, provided by the XPCOM glue library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.

- -
-

WebExtensions are becoming the new standard for creating add-ons. Eventually support for XPCOM add-ons will be deprecated, so you should begin to investigate porting your add-ons to use the WebExtensions API, and report any missing functionality so we can be sure to address your concerns. Work is ongoing on WebExtension capabilities, so your input will help prioritize and plan the work. To learn more about the kinds of changes that will be needed, see Comparison with XUL/XPCOM extensions. In addition, any binaries you use will then need to be converted for use with the WebExtensions native messaging API, or compiled using WebAssembly or Emscripten.

-
- -
-

If you're working on a module in the Mozilla codebase that's compiled with the MOZILLA_INTERNAL_API flag set, some of these APIs -- the string functions and classes in particular -- are not the ones you should be using. See the XPCOM internal string guide for documentation of the internal string API used within the Mozilla codebase.

-
- -

{{LandingPageListSubpages}}

- -

Many XPCOM pages return an nsresult. Prior to Gecko 19 {{geckoRelease(19)}}, this was an integer that simply returned an error code. It is now a strongly typed enum when XPCOM is built using a C++11 compiler. This causes compile-time errors to occur when improper values are returned as nsresult values, thereby making it easier to catch many bugs.

diff --git a/files/de/mozilla/tech/xpcom/reference/interface/index.html b/files/de/mozilla/tech/xpcom/reference/interface/index.html deleted file mode 100644 index d098cf8402..0000000000 --- a/files/de/mozilla/tech/xpcom/reference/interface/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: XPCOM Interface Reference -slug: Mozilla/Tech/XPCOM/Reference/Interface -tags: - - NeedsTranslation - - TopicStub - - XPCOM - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface ---- -

This is a reference to the XPCOM interfaces provided by the Mozilla platform.

- -
{{tree('','1')}}
- -

See also

- - diff --git a/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/index.html b/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/index.html deleted file mode 100644 index 2c354b2b2b..0000000000 --- a/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/index.html +++ /dev/null @@ -1,420 +0,0 @@ ---- -title: nsILoginManager -slug: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager -tags: - - Firefox 3 - - Interfaces - - 'Interfaces:Scriptable' - - Login Manager - - NeedsTranslation - - Thunderbird 3 - - TopicStub - - XPCOM - - XPCOM API Reference - - thunderbird -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager ---- -

-
toolkit/components/passwordmgr/public/nsILoginManager.idlScriptable
- - -Used to interface with the built-in Password Manager - - -
- -
1.0
- -
66
- -
- -
- -
Introduced
-
Gecko 1.9
- -
- -
- -
-Inherits from: nsISupports -Last changed in Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)
-

- -

Replaces nsIPasswordManager which was used in older versions of Gecko.

- -

Implemented by: @mozilla.org/login-manager;1. To create an instance, use:

- -
var loginManager = Components.classes["@mozilla.org/login-manager;1"]
-                   .getService(Components.interfaces.nsILoginManager);
-
- -

Method overview

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void addLogin(in nsILoginInfo aLogin);
nsIAutoCompleteResult autoCompleteSearch(in AString aSearchString, in nsIAutoCompleteResult aPreviousResult, in nsIDOMHTMLInputElement aElement);
unsigned long countLogins(in AString aHostname, in AString aActionURL, in AString aHttpRealm);
boolean fillForm(in nsIDOMHTMLFormElement aForm);
void findLogins(out unsigned long count, in AString aHostname, in AString aActionURL, in AString aHttpRealm, [retval, array, size_is(count)] out nsILoginInfo logins);
void getAllDisabledHosts([optional] out unsigned long count, [retval, array, size_is(count)] out wstring hostnames);
void getAllLogins([optional] out unsigned long count, [retval, array, size_is(count)] out nsILoginInfo logins);
boolean getLoginSavingEnabled(in AString aHost);
void modifyLogin(in nsILoginInfo oldLogin, in nsISupports newLoginData);
void removeAllLogins();
void removeLogin(in nsILoginInfo aLogin);
void searchLogins(out unsigned long count, in nsIPropertyBag matchData, [retval, array, size_is(count)] out nsILoginInfo logins);
void setLoginSavingEnabled(in AString aHost, in boolean isEnabled);
- -

Methods

- -

addLogin()

- -

Stores a new login in the Login Manager.

- -

Hinweis: Default values for the nsILoginMetaInfo properties are created if the specified login doesn't explicitly specify them.

- -
void addLogin(
-  in nsILoginInfo aLogin
-);
-
- -
Parameters
- -
-
aLogin
-
The login to store.
-
- -
Exceptions thrown
- -
-
 
-
An exception is thrown if the login information is already stored in the Login Manager. To change a login, you have to use modifyLogin().
-
- -

autoCompleteSearch()

- -

Generates results for a user field autocomplete menu.

- -

Hinweis: This method is provided for use only by the FormFillController, which calls it directly. It should not be used for any other purpose.

- -
nsIAutoCompleteResult autoCompleteSearch(
-  in AString aSearchString,
-  in nsIAutoCompleteResult aPreviousResult,
-  in nsIDOMHTMLInputElement aElement
-);
-
- -
Parameters
- -
-
aSearchString
-
Missing Description
-
aPreviousResult
-
Missing Description
-
aElement
-
Missing Description
-
- -
Return value
- -

Missing Description

- -

countLogins()

- -

Returns the number of logins matching the specified criteria. Called when only the number of logins is needed, and not the actual logins (which avoids prompting the user for a Master Password, as the logins don't need to be decrypted).

- -
unsigned long countLogins(
-  in AString aHostname,
-  in AString aActionURL,
-  in AString aHttpRealm
-);
-
- -
Parameters
- -
-
aHostname
-
The hostname to which to restrict searches, formatted as a URL. For example, "http://www.bar.com". To match all hostnames, specify "" (empty string). A value of null will cause countLogins() to not match any logins.
-
aActionURL
-
For form logins, this parameter should specify the URL to which the form will be submitted. To match any form login, specify "" (empty string). To not match any form logins (For example when interested in protocol logins only), specify null.
-
aHttpRealm
-
For protocol logins, specify the HTTP Realm for which the login applies; this is obtained from the WWW-Authenticate header (see RFC 2617). To match any protocol login, specify "" (empty string). To not match any protocol logins (For example when interested in form logins only), specify null.
-
- -
Return value
- -

The number of logins matching the parameters passed.

- -

fillForm()

- -

Fills out a form with login information, if appropriate information is available.

- -

Hinweis: This method will attempt to fill out the form regardless of the setting of the signon.autofillForms preference.

- -
boolean fillForm(
-  in nsIDOMHTMLFormElement aForm
-);
-
- -
Parameters
- -
-
aForm
-
The HTMLform to attempt to fill out.
-
- -
Return value
- -

true if the form was successfully filled out; otherwise false.

- -

findLogins()

- -

Searches for logins matching the specified criteria. Called when looking for logins that might be applicable to a given form or authentication request.

- -
void findLogins(
-  out unsigned long count,
-  in AString aHostname,
-  in AString aActionURL,
-  in AString aHttpRealm,
-  [retval, array, size_is(count)] out nsILoginInfo logins
-);
-
- -
Parameters
- -
-
count
-
The number of elements in the returned array. JavaScript callers can simply use the array's length property and supply a dummy argument for this parameter.
-
aHostname
-
The hostname to restrict searches to, formatted as a URL. For example, "http://www.bar.com".
-
aActionURL
-
For form logins, this parameter should specify the URL to which the form will be submitted. For protocol logins, specify null. An empty string ("") will match any value (except null).
-
aHttpRealm
-
For protocol logins, specify the HTTP Realm for which the login applies; this is obtained from the WWW-Authenticate header (see RFC 2617). For form logins, this parameter should be null. An empty string ("") will match any value (except null).
-
logins
-
An array of nsILoginInfo objects.
-
- -
Example
- -

This method can be called from JavaScript like this:

- -
 var logins = myLoginMgr.findLogins({}, 'https://bugzilla.mozilla.org', '', '', {});
-
- -

getAllDisabledHosts()

- -

Returns a list of all hosts for which login saving is disabled.

- -
void getAllDisabledHosts(
-  [optional] out unsigned long count,
-  [retval, array, size_is(count)] out wstring hostnames
-);
-
- -
Parameters
- -
-
count
-
The number of elements in the returned array. JavaScript callers can simply use the array's length property and supply a dummy argument for this parameter.
-
hostnames
-
An array of hostname strings in URL format without a pathname. For example: "https://www.site.com".
-
- -
Example
- -

You can call this method from JavaScript like this:

- -
 var disabledHosts = myLoginMgr.getAllDisabledHosts({});
-
- -

getAllLogins()

- -

Returns an array containing all logins recorded by the Login Manager.

- -

If you just want to see if any logins are stored, use countLogins() instead. It's more efficient, and avoids the possibility of the user being prompted for their master password.

- -
void getAllLogins(
-  [optional] out unsigned long count,
-  [retval, array, size_is(count)] out nsILoginInfo logins
-);
-
- -
Parameters
- -
-
count
-
The number of elements in the returned array. JavaScript callers can simply use the array's length property and supply a dummy argument for this parameter.
-
logins
-
An array of nsILoginInfo objects containing all the logins the Login Manager has on record.
-
- -
Example
- -

You can call this method from JavaScript like this:

- -
 var logins = myLoginMgr.getAllLogins({});
-
- -

getLoginSavingEnabled()

- -

Reports whether or not saving login information is enabled for a host.

- -
boolean getLoginSavingEnabled(
-  in AString aHost
-);
-
- -
Parameters
- -
-
aHost
-
The hostname to check. This argument should be in the origin URL format, with no pathname. For example: "https://www.site.com".
-
- -
Return value
- -

true if login saving is enabled for the host, otherwise false.

- -

modifyLogin()

- -

Modifies an existing login by replacing it with a new one.

- -

If newLoginData is a nsILoginInfo, all of the old login's nsILoginInfo properties are changed to the values from newLoginData (but the old login's nsILoginMetaInfo properties are unmodified).

- -

If newLoginData is a nsIPropertyBag, only the specified properties will be changed. The nsILoginMetaInfo properties of oldLogin can be changed in this manner.

- -

If the propertybag contains an item named "timesUsedIncrement", the login's timesUsed property will be incremented by the item's value.

- -
void modifyLogin(
-  in nsILoginInfo oldLogin,
-  in nsISupports newLoginData
-);
-
- -
Parameters
- -
-
oldLogin
-
The login to be modified.
-
newLoginData
-
The login information to replace the oldLogin with. This may be specified as either an nsILoginInfo or an nsIPropertyBag2 object.
-
- -

removeAllLogins()

- -

Removes all logins known by the Login Manager. This works without a need for the master password, if one is set.

- -
void removeAllLogins();
-
- -
Parameters
- -

None.

- -

removeLogin()

- -

Removes a login from the Login Manager.

- -

Hinweis: The specified login must exactly match a stored login. However, the values of any nsILoginMetaInfo properties are ignored.

- -
void removeLogin(
-  in nsILoginInfo aLogin
-);
-
- -
Parameters
- -
-
aLogin
-
The login to remove from the Login Manager. Only a login that is an exact match is deleted.
-
- -

searchLogins()

- -

Searches for logins in the login manager's data store, returning an array of matching logins. If there are no matching logins, an empty array is returned.

- -
void searchLogins(
-  out unsigned long count,
-  in nsIPropertyBag matchData,
-  [retval, array, size_is(count)] out nsILoginInfo logins
-);
-
- -
Parameters
- -
-
count
-
The number of elements in the returned array.
-
matchData
-
The data used for the search. This does not follow the same requirements as findLogins() for those fields; wildcard matches are not specified.
-
logins
-
An array of matching nsILoginInfo objects.
-
- -
Example
- -

This method can be called from JavaScript like this:

- -
 var logins = myLoginMgr.searchLogins({}, matchData);
- var numLogins = logins.length;
-
- -

setLoginSavingEnabled()

- -

Enables or disables storing logins for a specified host. When login storing is disabled, the Login Manager won't prompt the user to store logins for that host. Existing logins are not affected.

- -
void setLoginSavingEnabled(
-  in AString aHost,
-  in boolean isEnabled
-);
-
- -
Parameters
- -
-
aHost
-
The hostname to adjust the setting for. This argument should be in the origin URL format, with no pathname. For example: "https://www.site.com".
-
isEnabled
-
If true, login saving is enabled for the specified host. If false, login saving is disabled.
-
- -

See also

- - diff --git a/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/using_nsiloginmanager/index.html b/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/using_nsiloginmanager/index.html deleted file mode 100644 index 2cc68a291f..0000000000 --- a/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/using_nsiloginmanager/index.html +++ /dev/null @@ -1,212 +0,0 @@ ---- -title: Using nsILoginManager -slug: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager/Using_nsILoginManager -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager/Using_nsILoginManager ---- -
{{ Gecko_minversion_header("1.9") }}
- -

Den Login-Manager verwenden

- -

Extensions speichern oftmals - auch wenn es eigentlich gar nicht wirklich nötig wäre - Paßwörter zu Webseiten, web-apps und so weiter. To do so securely, they can use nsILoginManager, which provides for secure storage of sensitive password information and nsILoginInfo, which provides a way of storing login information.

- -

Getting nsILoginManager

- -

To get a component implementing nsILoginManager, use the following:

- -
-
var passwordManager = Components.classes["@mozilla.org/login-manager;1"].getService(
-	Components.interfaces.nsILoginManager
-);
-
- -

Most Login Manager functions take an nsILoginInfo object as a parameter. An nsILoginInfo object contains the following attributes: hostname, form submit URL, HTTP realm, username, username field, password, and password field. The hostname, username and password attributes are mandatory, while the other fields are set based on whether the login is for a web page form or an HTTP/FTP authentication site login. See the nsILoginInfo attribute definitions for more details. Defining an nsILoginInfo object is simple:

- -
-
var nsLoginInfo = new Components.Constructor(
-	"@mozilla.org/login-manager/loginInfo;1",
-	Components.interfaces.nsILoginInfo,
-	"init"
-);
-
-var loginInfo = new nsLoginInfo(
-	hostname, formSubmitURL, httprealm, username, password, usernameField, passwordField
-);
-
-
- -

Examples

- -

Creating a login for a web page

- -
var formLoginInfo = new nsLoginInfo(
-	'http://www.example.com',
-	'http://login.example.com',
-	null,
-	'joe',
-	'SeCrEt123',
-	'uname',
-	'pword'
-);
- -

This login would correspond to a HTML form such as:

- -
<form action="http://login.example.com/foo/authenticate.cgi">
-	<div>Please log in.</div>
-	<label>Username:</label> <input type="text" name="uname">
-	<label>Password:</label> <input type="password" name="pword">
-</form>
-
- -

Creating a site authentication login

- -
var authLoginInfo = new nsLoginInfo(
-	'http://www.example.com',
-	null,
-	'ExampleCo Login',
-	'alice',
-	'SeCrEt321',
-	"",
-	""
-);
-
- -

This would correspond to a login on http://www.example.com when the server sends a reply such as:

- -
 HTTP/1.0 401 Authorization Required
- Server: Apache/1.3.27
- WWW-Authenticate: Basic realm="ExampleCo Login"
-
-
- -

Creating a local extension login

- -
var extLoginInfo = new nsLoginInfo(
-	'chrome://firefoo',
-	null,
-	'User Registration',
-	'bob',
-	'123sEcReT',
-	"",
-	""
-);
- -

From a component creating a new info block is done slightly differently:

- -
var nsLoginInfo = new Components.Constructor("@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo, "init");
-var extLoginInfo = new nsLoginInfo('chrome://firefoo', null, 'User Registration', 'bob', '123sEcReT', '', '');
-//var extLoginInfo = new nsLoginInfo(aHostname, aFormSubmitURL, aHttpRealm, aUsername, aPassword, aUsernameField, aPasswordField)
-
- -

The Login Manager treats this as if it was a web site login. You should use your extension's chrome:// URL to prevent conflicts with other extensions, and a realm string which briefly denotes the login's purpose.

- -

Storing a password

- -

To store a password in the Login Manager, you first need to create an nsILoginInfo object as defined above. Then you simply need to call the nsILoginManager method addLogin().

- -
myLoginManager.addLogin(loginInfo);
-
- -

{{ Note("This will throw an exception if both the httprealm and formSubmitURL parameters are NULL. One must be specified when storing a password. The hostname, username and password parameters are also mandatory.") }}

- -

Retrieving a password

- -

Retrieving a password from the Login Manager is slightly more difficult. In order to locate a password, the hostname, formSubmitURL and httprealm must match exactly what is stored for the password to be found. The only exception is that if the stored formSubmitURL is blank, in which case the formSubmitURL parameter is ignored. Note that the hostname and formSubmitURL arguments should not include the path from the full URL. The example below should serve as a starting point for matching form logins:

- -
var hostname = 'http://www.example.com';
-var formSubmitURL = 'http://www.example.com';  // not http://www.example.com/foo/auth.cgi
-var httprealm = null;
-var username = 'user';
-var password;
-
-try {
-	// Get Login Manager
-	var myLoginManager = Components.classes["@mozilla.org/login-manager;1"].
-		getService(Components.interfaces.nsILoginManager);
-
-	// Find users for the given parameters
-	var logins = myLoginManager.findLogins({}, hostname, formSubmitURL, httprealm);
-
-	// Find user from returned array of nsILoginInfo objects
-	for (var i = 0; i < logins.length; i++) {
-		if (logins[i].username == username) {
-			password = logins[i].password;
-			break;
-		}
-	}
-}
-
-catch(ex) {
-	// This will only happen if there is no nsILoginManager component class
-}
- -

Note that the user will be prompted for their master password if they have chosen to set one to secure their passwords.

- -

Removing a password

- -

Removing a password is simple:

- -
myLoginManager.removeLogin(loginInfo);
-
- -

When removing a password the specified nsILoginInfo object must exactly match what was stored or an exception will be thrown. This includes the password attribute. Here's an example on how to remove the password without actually knowing what the password is:

- -
// example values
-var hostname = 'http://www.example.com';
-var formSubmitURL = 'http://www.example.com';
-var httprealm = null;
-var username = 'user';
-
-try {
-	// Get Login Manager
-	var passwordManager = Components.classes["@mozilla.org/login-manager;1"].
-		getService(Components.interfaces.nsILoginManager);
-
-	// Find users for this extension
-	var logins = passwordManager.findLogins({}, hostname, formSubmitURL, httprealm);
-
-	for (var i = 0; i < logins.length; i++) {
-		if (logins[i].username == username) {
-			passwordManager.removeLogin(logins[i]);
-			break;
-		}
-	}
-}
-catch(ex) {
-	// This will only happen if there is no nsILoginManager component class
-}
- -

Changing stored login information

- -

Changing a password is rather simple. Since all this does is make a removeLogin() call followed by an addLogin() call, it has the same caveats as both of them: namely that the oldLogin must match an existing login exactly (see above) and that the newLogin attributes must be set correctly.:

- -
myLoginManager.modifyLogin(oldLogin, newLogin);
- -

Login Manager notifications

- -

{{ fx_minversion_note("3.5", "The Login Manager notifications were added in Firefox 3.5.") }}

- -

Firefox 3.5 and later send assorted notifications when various Login Manager related events occur, including when form autofill does not occur for various reasons, as well as when changes are made to the Login Manager's database. See the Login Manager section of the article on observer notifications for details.

- -

Debugging

- -

The login manager implementation has the ability to send debug messages to the Error Console, which can provide some visibility into what it's doing. To enable the debug logging, see http://wiki.mozilla.org/Firefox:Pass...ager_Debugging.

- -

Supporting older versions of Gecko

- -

If you want your extension to support both Gecko 1.9 (Firefox 3, Thunderbird 3, SeaMonkey 2) and older versions it will need to implement both the nsILoginManager and nsIPasswordManager components. A simple method to do this is as follows:

- -
if ("@mozilla.org/passwordmanager;1" in Components.classes) {
-	// Password Manager exists so this is not Firefox 3 (could be Firefox 2, Netscape, SeaMonkey, etc).
-	// Password Manager code
-} else if ("@mozilla.org/login-manager;1" in Components.classes) {
-	// Login Manager exists so this is Firefox 3
-	// Login Manager code
-}
- -

See also

- - diff --git a/files/de/mozilla/tech/xpcom/reference/interface/nsixmlhttprequest/index.html b/files/de/mozilla/tech/xpcom/reference/interface/nsixmlhttprequest/index.html deleted file mode 100644 index 3907d126bd..0000000000 --- a/files/de/mozilla/tech/xpcom/reference/interface/nsixmlhttprequest/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: nsIXMLHttpRequest -slug: Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequest -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequest ---- -
-

Obsolete since Gecko 60 (Firefox 60 / Thunderbird 60 / SeaMonkey 2.57)
- This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

-
- - - -

nsIXMLHttpRequest along with nsIJSXMLHttpRequest and nsIXMLHttpRequestEventTarget are Mozilla's implementation details of the DOM XMLHttpRequest object.

- -
Note: If you're a web developer or a Mozilla add-on developer, please refer to the XMLHttpRequest documentation instead.
- -

This page contains documentation, specific to Mozilla application and add-on developers.

- -

The interface definition: https://dxr.mozilla.org/mozilla-central/source/dom/xhr/nsIXMLHttpRequest.idl

- -

Elevated Privileges

- -

As mentioned in the "Non-Standard Properties" the property of channel was read-only. When using the XPCOM interface, as seen below in Example 2, we can get access to this. The most obvious benefit is that we can set nsiRequest - Constants in the xhr.channel.loadFlags. For instance, as done in Example 2, the flag of LOAD_ANONYMOUS is added, this strips all user data (cookies, tokens, etc).

- -

Using event handlers from native code

- -

(Not sure if it's up-to-date)

- -

From native code, the way to set up onload and onerror handlers is a bit different. Here is a comment from Johnny Stenback <jst@netscape.com>:

- -
The mozilla implementation of nsIXMLHttpRequest implements the interface nsIDOMEventTarget and that's how you're supported to add event listeners. Try something like this: nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(myxmlhttpreq)); target->AddEventListener(NS_LITERAL_STRING("load"), mylistener, PR_FALSE) where mylistener is your event listener object that implements the interface nsIDOMEventListener. The 'onload', 'onerror', and 'onreadystatechange' attributes moved to nsIJSXMLHttpRequest, but if you're coding in C++ you should avoid using those.
- -

Though actually, if you use addEventListener from C++ weird things will happen too, since the result will depend on what JS happens to be on the stack when you do it....

- -

Conclusion: Do not use event listeners on XMLHttpRequest from C++, unless you're aware of all the security implications. And then think twice about it.

- -

Example code

- -

This is a simple example code for opening a simple HTTP request from a xul application (like a Mozilla extension) without using observers:

- -
 var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
- req.open('POST', "http://www.foo.bar:8080/nietzsche.do", true);
- req.send('your=data&and=more&stuff=here');
-
- -

Example 2

- -
var {Cu: utils, Cc: classes, Ci: instances} = Components;
-Cu.import('resource://gre/modules/Services.jsm');
-function xhr(url, cb) {
-    let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
-
-    let handler = ev => {
-        evf(m => xhr.removeEventListener(m, handler, !1));
-        switch (ev.type) {
-            case 'load':
-                if (xhr.status == 200) {
-                    cb(xhr.response);
-                    break;
-                }
-            default:
-                Services.prompt.alert(null, 'XHR Error', 'Error Fetching Package: ' + xhr.statusText + ' [' + ev.type + ':' + xhr.status + ']');
-                break;
-        }
-    };
-
-    let evf = f => ['load', 'error', 'abort'].forEach(f);
-    evf(m => xhr.addEventListener(m, handler, false));
-
-    xhr.mozBackgroundRequest = true;
-    xhr.open('GET', url, true);
-    xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS | Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_PERSISTENT_CACHING;
-    xhr.responseType = "arraybuffer"; //dont set it, so it returns string, you dont want arraybuffer. you only want this if your url is to a zip file or some file you want to download and make a nsIArrayBufferInputStream out of it or something
-    xhr.send(null);
-}
-
-xhr('https://www.gravatar.com/avatar/eb9895ade1bd6627e054429d1e18b576?s=24&d=identicon&r=PG&f=1', data => {
-    Services.prompt.alert(null, 'XHR Success', data);
-    var file = OS.Path.join(OS.Constants.Path.desktopDir, "test.png");
-    var promised = OS.File.writeAtomic(file, new UInt8Array(data));
-    promised.then(
-        function() {
-            alert('succesfully saved image to desktop')
-        },
-        function(ex) {
-             alert('FAILED in saving image to desktop')
-        }
-    );
-});
diff --git a/files/de/mozilla/thunderbird/autokonfiguration/index.html b/files/de/mozilla/thunderbird/autokonfiguration/index.html deleted file mode 100644 index 300c47d686..0000000000 --- a/files/de/mozilla/thunderbird/autokonfiguration/index.html +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: Automatische Konfiguration in Thunderbird -slug: Mozilla/Thunderbird/Autokonfiguration -tags: - - Administration - - enterprise -translation_of: Mozilla/Thunderbird/Autoconfiguration ---- -

Author: Ben Bucksch
- Bitte nehmen Sie keine Änderungen an diesem Dokument vor ohne den Autor zu kontaktieren

- -

Thunderbird 3.1 und neuer (sowie 3.0 zu einem gewissen Grad) beinhalten eine Funktion zur automatischen Konfiguration des E-Mail Kontos. Das Ziel der Autokonfiguration ist es, den Nutzern die Herstellung einer Verbindung zwischen Thunderbird und den Mail-Servern zu erleichtern. In den meisten Fällen sollten Nutzer in der Lage sein Thunderbird herunterzuladen und zu installieren sowie anschließend ihren Namen, E-Mail Adresse und Passwort in dem Einrichtungsassistenten einzugeben, wodurch sie einen voll funktionsfähigen E-Mail Client erhalten und ihre Mails so sicher wie möglich verschicken können. 

- -

Siehe auch:

- - - -

Dieses Dokument beschreibt wie die automatische Konfiguration in Thunderbird funktioniert und wie man E-Mail Servern die Autokonfiguration ermöglicht.

- -

Mechanismen

- -

Thunderbird erhält die Server-Einstellungen über verschiedene Wege, wovon jeder für einen bestimmten Fall geeignet ist:

- - - -

All the lookup mechanisms use the email address domain as base for the lookup. For example, for the email address fred@example.com , the lookup is performed as (in this order):

- -
    -
  1. tb-install-dir/isp/example.com.xml on the harddisk
  2. -
  3. check for autoconfig.example.com
  4. -
  5. look up of "example.com" in the ISPDB
  6. -
  7. look up "MX example.com" in DNS, and for mx1.mail.hoster.com, look up "hoster.com" in the ISPDB
  8. -
  9. try to guess (imap.example.com, smtp.example.com etc.)
  10. -
- -

We may in the future add DNS SRV records as supported mechanism in the future, but we currently do not.

- -

How to add support for your domain

- -

Classification

- -

If you are a big ISP (> 100,000 users) providing email addresses solely under a few domains like "example.com" and "example.de", you may either submit the configuration to the ISPDB or set up a configuration server.
-
- If you support email aliases and the user's login name is not part of the email address (for example, users may have "hero@example.com" as email address, but the IMAP/POP/SMTP login name is neither "hero" nor "hero@example.com", but "u67578"), you need to set up a configuration server, which does the email address -> login name lookup.
-
- If you host customer domains, i.e. you are "hoster.com", but your customers have "fred@flintstone.com" and "louis@kent.com" as domains, with only a few users per domain, you need to set up a configuration server (or rely on DNS MX).
-
- If you are a small company installing Thunderbird on your employees' desktops, you can place a configuration file in the Thunderbird installation folder.

- -

ISPDB

- -

Database URL is <https://live.mozillamessaging.com/autoconfig/v1.1/>, append domain name, e.g. <https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de>.
-
- Current process: File a bug in Bugzilla, Product "Webtools", Component "ISPDB Database Entries", with a configuration file that matches the requirements described below.  The component is actively watched for new bugs (as of November 2015) so there is no need to request review on the file.

- -

Configuration server at ISP

- -

Given the email address "fred@example.com", Thunderbird first checks <http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com> and then <http://example.com/.well-known/autoconfig/mail/config-v1.1.xml>.

- -

Small company

- -

If you are a small company, you can put the XML configuration file on your web server, at URL <http://example.com/.well-known/autoconfig/mail/config-v1.1.xml>. (This is not yet finalized and subject to change.)

- -

Domain hoster

- -

If you are an ISP that hosts domains for your customers - for example, you are hoster.com and your customer registers fancy.com or example.com, and your servers accept and serve the mail for example.com -, you should set up an autoconfig server.

- -

DNS

- -

For each customer domain, you add a DNS record (in addition to the existing MX, A www etc. DNS records):
- autoconfig IN A 10.2.3.4
- or
- autoconfig IN CNAME autoconfig.hoster.com.
- ... where 10.2.3.4 and autoconfig.hoster.com are IP addresses / hostnames you own.
- This allows Thunderbird to find you as hoster.

- -

To make the Version without an autoconfig DNS Entry work you have to make sure that example.com points to the Webserver you will place the config-v1.1.xml on.

- -

Example: example.com A 10.2.3.4

- -

Web server

- -

You set up a web server bound to a physical IP address. This may be on the same machine as other web servers, but the web server must be configured to the content to any requested domain.
-
- You must use an virtual host that match all autoconfig.* domains of your customers. In Apache terms, you can use a "ip-based virtual host". In the Apache configuration files, that means something like: Listen 10.2.3.4:80 (of course, you use a public IP address that you own)

- -
<VirtualHost 10.2.3.4:80> #Must be the first and only virtual host with this ip!
-    DocumentRoot /var/www/autoconfig/
-    ServerName autoconfig.hoster.com
-    <Directory /var/www/autoconfig>
-	Order allow,deny
-	allow from all
-    </Directory>
-</VirtualHost>
- -

Place the configuration file at the URL /mail/config-v1.1.xml on that host.

- -

All config files must be served as Content-Type: text/xml (or application/xml), otherwise the file will be ignored. Also, they must use charset UTF-8 (esp. if there are any non-ASCII-characters).

- -

If you like to use name-based virtual hosts. You probably don't want to setup the autoconfig subdomain for every domain of your customers.
- You can add a Rewriterule in the default virtual host (on debian /etc/apache2/sites-enabled/000-default)  to match all autoconfig.* subdomains:

- -
<VirtualHost *:80> #Must be the first Virtual host
-	ServerAdmin webmaster@hoster.com
-	ServerName www
-	DocumentRoot /var/www
-	RewriteEngine On
-	RewriteCond %{HTTP_HOST} ^autoconfig\. [NC]
-	RewriteRule ^/(.*)	http://autoconfig.hoster.com/$1 [L,R=301,NE]
-        #...
-</VirtualHost>
-<VirtualHost *:80>
-    DocumentRoot /var/www/autoconfig/
-    ServerName autoconfig.hoster.com
-    <Directory /var/www/autoconfig>
- 	Order allow,deny
-	allow from all
-    </Directory>
-</VirtualHost>
-
- - - - - -

Configuration file

- -

This is described at How to create a configuration file and defined on the sub-pages.

- -

{{ languages( { "ja": "ja/Thunderbird/Autoconfiguration" } ) }}

diff --git a/files/de/mozilla/thunderbird/index.html b/files/de/mozilla/thunderbird/index.html deleted file mode 100644 index 7bf0a47087..0000000000 --- a/files/de/mozilla/thunderbird/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Thunderbird -slug: Mozilla/Thunderbird -translation_of: Mozilla/Thunderbird ---- -

Thunderbird ist Mozillas Mail- und Nachrichtenprogramm. Diese Seiten dokumentieren Thunderbird und bieten außerdem Links zu Dokumentationen über das MailNews-Backend, welches in weiteren Projekten wie Eudora/Penelope, Seamonkey und Correo genutzt wird.

-

Thunderbird ist das Geschwisterkind von Firefox und auf der gleichen technischen Platform aufgebaut wie der Web-Browser. Nach vielen Jahren der Entwicklung ist Thunderbird einer der meist genutzen, quelloffenen Mail-Clients und wird von Millionen von Menschen weltweilt genutzt, um alle ihre Mail-Accounts, Newsgroups und Nachrichtenfeeds in einer bekannten, hochproduktiven Umgebung zusammenzubringen. (Von Anfang 2007 bis Anfang 2011 wurde Thunderbird von Mozilla Messaging entwickelt, einer Tochtergesellschaft von Mozilla.)

- - - - - - - -
-

Dokumentation

-
-
- Thunderbird erstellen
-
- Informationen über das Erstellen von Thunderbird-Builds mit dem comm-central Repository. Es gibt außerdem Infos darüber,  wie comm-central arbeitet, wie der Bewertungsprozess läuft  und wie der Mozilla Symbol-Server Hilfe zum Debuggen anbietet.
-
- MailNews Protokolle
-
- Eine - eher ungenaue - Dokumentation über Mailprotokolle...
-
- Datenbankzugriffe
-
- Informationen über das Backend von {{ Interface("nsIMsgDBView") }} und verwandten Schnittstellen...
-
- Thunderbird API-Dokumentation
-
- Die Dokumentation über Thunderbirds Programmierschnittstellen (APIs)
-
- Dokumentationen von Erweiterungen
-
- Einführungen und Tipps zum Erstellen von Erweiterungen für Thunderbird
-
- Automatisiertes Testen
-
- Details über automatisiertes Testen von Thunderbird
-
- Thunderbird in Firmen
-
- Hilfe beim Entwickeln von Thunderbird für große Organisationen
-
-

Alle anzeigen...

-
-

Community

- -

Tools

- - - -
-

 

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension/index.html deleted file mode 100644 index d6209dea6a..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 1: Einleitung' -slug: Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension -tags: - - Addons - - Erweiterungen - - thunderbird -translation_of: Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension ---- -

{{AddonSidebar}}

- -

Thunderbird ist eine von der community gemanagete Open-Source Emailanwendung. Sie verwendet viele der Technologien, die auch Mozilla Firefox verwendet, einschließlich  JavaScript, der Gecko Layout Engine, der XUL XML User Interface Language und dem XPCOM plattformübergreifenden Komponentenobjektmodell . Ähnlich wie bei Firefox kann die Funktionalität von Thunderbird durch Erweiterungen erweitert und angepasst werden.

- -

Hinweis: Diese Dokumentationsserie ist noch nicht für die Firefox Version 60 aktualisiert.  Thunderbird 60, das im Sommer 2018 veröffentlicht wurde, führt Veränderungen bei Erweiterung ein, die im Thunderbird 57-60 add-ons guide dokumentiert sind.

- -

Dieses Tutorial dient der Einführung in die Komponenten einer Thunderbird-Erweiterung und es wird gezeigt, wie man seine eigene Erweiterung entwickelt. Das Tutorial setzt sich aus folgenden Seiten zusammen:

- -
    -
  1. Einleitung (Diese Seite)
  2. -
  3. Das Erweiterungsdateisystem (das lokale System vorbereiten und aufsetzen)
  4. -
  5. Installation des manifests (Die install.rdf Datei. Sie beinhaltet die Metainformationen der Erweiterung)
  6. -
  7. Chrome Manifest (Eine Liste von Packages und Overlays)
  8. -
  9. XUL (Die XML User Interface Language, die eingesetzt wird, um die Benutzeroberfläche von Thunderbird zu verändern)
  10. -
  11. Hinzufügen von JavaScript (beschreibt wie man seiner Thunderbird-Erweiterung simplen JavaScriptcode hinzufügen kann)
  12. -
  13. Lokale Installation (Aktivieren der Erweiterung in der lokalen Thunderbirdinstanz)
  14. -
  15. Packaging (Erstellen eines Distributionspakets, das die Erweiterung beinhaltet)
  16. -
  17. Veröffentlichung (auf der eigenen Website oder auf https://addons.mozilla.org/)
  18. -
- -

Dieses Tutorial ist kompatibel mit den Thunderbirdversionen 2, 3 und 5. Alle Thunderbird Builds sind auf dieser FTP-Seite verfügbar.

- -

Verweise und Ressourcen

- -

Tools und Hilfserweiterungen

- -

Es gibt viele Tools, die dabei helfen Thunderbird-Erweiterungen zu entwickeln. Das Mindeste, was benötigt wird:

- - - -

Darüber hinaus gibt es eine große Zahl von Erweiterungen und Anwendungen, die nützlich sind zum Testen und Debuggen von Thunderbird-Erweiterungen, wie z. B. JavaScript-Konsolen und XPCOM Inspektoren. Diese werden auf der Seite "Aufsetzen einer Erweiterungs-Entwicklungsumgebung" beschrieben.

- -

Dokumentation

- - - -

Community

- -

Die Thunderbird-Development-Community hat eine Mailing-Liste mit einem umfangreichen und durchsuchbaren Archiv. Es lässt sich auch mit der Community sprechen über den #maildev IRC channel.

- -

{{ Next("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_2:_Erweiterungs-Dateisystem") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_3_colon__install_manifest/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_3_colon__install_manifest/index.html deleted file mode 100644 index 69c95d4d01..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_3_colon__install_manifest/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 3: Manifest installieren' -slug: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_3:_install_manifest -tags: - - Addons - - Erweiterungen - - thunderbird -translation_of: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_3:_install_manifest ---- -

{{AddonSidebar}}

- -

Die install.rdf Datei ist eine XML-Datei, die allgemeine Informationen zur Erweiterung enthält.

- -

Öffne die Datei namens install.rdf, die du oben in der Erweiterungsverzeichnishierarchie erstellt haben, und füge den folgenden Text in die Datei ein:

- -
<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
-  <Description about="urn:mozilla:install-manifest">
-    <em:id>myfirstext@jen.zed</em:id>
-    <em:name>My First Extension</em:name>
-    <em:version>1.0</em:version>
-    <em:creator>jenzed</em:creator>
-
-    <em:targetApplication>
-      <Description>
-        <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
-        <em:minVersion>1.5</em:minVersion>
-        <em:maxVersion>5.0.*</em:maxVersion>
-      </Description>
-    </em:targetApplication>
-
-  </Description>
-</RDF>
-
- -

 Die folgende Elemente (Fett markiert) sollten für deine Erweiterung verändert werden:

- - - -

Es gibt weitere optionale Elemente, die in install.rdf angegeben werden können. Diese werden auf der Seite Installationsmanifeste beschrieben. Beachte, dass Elemente in beliebiger Reihenfolge angegeben werden können, solange sie dem Knoten <Description> untergeordnet sind.

- -

{{ Previous("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_2:_Erweiterungs-Dateisystem") }}

- -

{{ Next("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_4:_Chrome_Manifest") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_7_colon__installation/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_7_colon__installation/index.html deleted file mode 100644 index 4448e0b311..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_7_colon__installation/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 7: Installation' -slug: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_7:_Installation -translation_of: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_7:_Installation ---- -

{{AddonSidebar}}

- -

Während du die Erweiterung entwickelst, gibt es zwei Möglichkeiten, wie du Thunderbird die Erweiterung laden lässt, um sie zu testen. Du kannst den Ordner mit den Erweiterungsdateien entweder direkt im Erweiterungsordner von Thunderbird ablegen oder eine Datei dort ablegen, die Thunderbird mitteilt, wo sich deine Erweiterung befindet. (In Schritt 8 erfährst Du, wie Du eine .xpi-Datei für die Veröffentlichung und Installation erstellst.)

- -

Um den Erweiterungsordner von Thunderbird zu finden, navigiere zum Profilverzeichnis von Thunderbird und öffne den Ordner extensions /. Je nach Betriebssystem befindet es sich an einem der folgenden Speicherorte:

- - - -
Um sicherzustellen, dass deine aktuellen E-Mails und Einstellungen während des Tests nicht durcheinander geraten, ist es sicherer, bei der Entwicklung von Erweiterungen ein Testprofil anstelle deines Standardprofils zu verwenden. In diesem Artikel der Mozilla-Knowledgedatenbank erfahren Sie, wie Sie mehrere Profile einrichten.
- -
Wenn das Verzeichnis extensions/ noch nicht existiert, musst du es erstellen.
- -

Verwenden einer Textdatei zum Verweisen auf deine Erweiterungsdateien (empfohlen):

- -
    -
  1. Wenn Du deine Erweiterung in einem anderen Ordner entwickelst (z.B. "...\Dokumente\Code\Thunderbird Erweiterungen\myfirstext@jen.zed\"), kannst Du eine Textdatei im Ordner extensions/ erstellen, die auf deine Erweiterung verweist. Der Name der Textdatei muss genau dem Wert von <em:id> aus install.rdf entsprechen. In unserem Fall erhält die Datei den Namen myfirstext@jen.zed.
  2. -
  3. Die Datei muss eine einzige Zeile mit dem absoluten Pfad der Erweiterung enthalten. -
    -
    Der Ordner, auf den verwiesen wird, muss mit dem Wert von <em: id> von install.rdf identisch sein.
    - -
    .C:\Users\<Nutzername>\Documents\Code\Thunderbird Erweiterungen\myfirsttext@jen.zed\
    -
    -
  4. -
- -

Die Erweiterungsdatei direkt in den Erweiterungsordner einfügen (Alternativ):

- -
    -
  1. Nachdem du den Ordner extensions/ geöffnet hast, erstelle einen Unterordner mit dem Namen deiner Erweiterung. Dieser Name muss genau der ID des Feldes <em:id> in der Datei install.rdf entsprechen. In unserem Fall heißt der Ordner: myfirstext@jen.zed/. Je nach Format Ihrer ID kann der Ordnername auch eine GUID sein.
  2. -
- -

Jetzt können Sie Thunderbird starten. Thunderbird wird die Erweiterung erkennen und versuchen, sie zu laden.

- -

Informationen zum Einrichten eines Entwicklerprofils und zum Aktivieren von Debugging-Funktionen findest Du unter Setting up extension development environment.

- -

Du kannst jetzt zurückgehen und Änderungen an der .xul-Datei vornehmen. Wenn Du Thunderbird schließst und neu startest, sollten sie angezeigt werden.

- - - -
-
-
Es besteht auch die Möglichkeit, Thunderbird mit dem Firefox-Debugger zu Remote-debuggen. In diesem Artikel der Mozilla-Knowledgedatenbank erfährst du, wie du das Remote-Debugging einrichtest.
-
-
- -

{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_6:_Javascript_hinzufuegen", "Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_8:_packaging") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_8_colon__packaging/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_8_colon__packaging/index.html deleted file mode 100644 index d33997f94e..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_8_colon__packaging/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 8: Packaging' -slug: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_8:_packaging -translation_of: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_8:_packaging ---- -

{{AddonSidebar}}

- -

Wenn Du mit den Funktionen deiner Erweiterung zufrieden bist, packe sie für die Bereitstellung und Installation.

- -

Zipe den Inhalt des Erweiterungsordners (nicht den Erweiterungsordner selbst) und benenne die ZIP-Datei um, so dass sie die Endung .xpi hat. In Windows 7 wähle alle Dateien und Unterordner im Erweiterungsordner aus, klicke mit der rechten Maustaste und wähle "Senden an -> Komprimierter (gezippter) Ordner". Eine ZIP-Datei wird erstellt. Umbenennen und fertig!

- -

Unter Mac OS X kannst Du mit der rechten Maustaste auf den Inhalt des Erweiterungsordners klicken und "Archiv erstellen ..." wählen, um die ZIP-Datei zu erstellen. Seit Mac OS X zum Verfolgen von Dateimetadaten ausgeblendete Dateien in Ordner hinzufügte, solltest Du stattdessen das Terminal verwenden, die versteckten Dateien löschen (deren Namen mit einem Punkt beginnen) und dann den Befehl zip in der Befehlszeile zum Erstellen der Zip-Datei verwenden. Die Dateien haben normalerweise den Namen .DS_Store.

- -

Unter Linux solltest Du ebenfalls das Befehlszeilen-Zip-Tool verwenden.

- -
 cd ~/Erweiterungen/Meine_Erweiterungen
- zip -r ../sample.xpi *
-
- -

Wenn er in das Verzeichnis (Benutzerprofil)/extension eingefügt wird, öffnet Thunderbird die xpi-Datei, überprüft die ID in der Datei install.rdf und erstellt dieses Verzeichnis für Ihr Package. Es wird dann in dieses Verzeichnis kopiert und die Dateien werden entpackt, wodurch eine Kopie deiner ~/Erweiterung/Meine_Erweiterungen-Verzeichnisstruktur und -Dateien erstellt wird.

- -

{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_7:_Installation", "Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_9:_distributing") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_9_colon__distributing/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_9_colon__distributing/index.html deleted file mode 100644 index 8177b45f65..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_9_colon__distributing/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 9: Verbreitung' -slug: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_9:_distributing -translation_of: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_9:_distributing ---- -

{{AddonSidebar}}

- -

Verwenden von addons.mozilla.org

- -

Die Website addons.mozilla.org ist eine Veröffentlichungssite, auf der Du deine Erweiterung kostenlos hosten kannst. Deine Erweiterung wird im Mirror-Netzwerk von Mozilla gehostet werden. Die Mozilla-Site bietet Benutzern eine einfachere Installation und stellt Benutzern deiner älteren Versionen automatisch neue Versionen zur Verfügung, wenn Du sie hochlädst. Darüber hinaus können Benutzer mit Mozilla Update deine Erweiterung kommentieren und Feedback geben.Es ist empfohlen, AMO zu verwenden.

- -

Besuche http://addons.mozilla.org/developers/, um ein Konto zu erstellen und mit dem Veröffentlichen deiner Erweiterungen zu beginnen. Beachte, dass deine Erweiterung schneller genehmigt und häufiger heruntergeladen wird, wenn Du eine gute Beschreibung und Screenshots der Erweiterung in Aktion hast.

- -

Installation von einer Webseite

- -

Es gibt verschiedene Möglichkeiten, Erweiterungen von Webseiten zu installieren, einschließlich der direkten Verknüpfung mit den XPI-Dateien und der Verwendung des InstallTrigger-Objekts. Erweiterungs- und Web-Autoren sollten die InstallTrigger-Methode zum Installieren von XPIs verwenden, da sie den Benutzern die beste Benutzererfahrung bietet.

- -

Registrieren von Erweiterungen in der Windows-Registry

- -

Unter Windows können der Registry Informationen zu Erweiterungen hinzugefügt werden. Die Erweiterungen werden beim nächsten Start der Anwendung automatisch abgerufen. Auf diese Weise können Anwendungsinstallationsprogramme Integrations-Hooks als Erweiterungen hinzufügen. Weitere Informationen finden Sie unter Adding Extensions using the Windows Registry.

- -

{{ Previous("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_8:_packaging") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/ein_thunderbird_addon_programmieren_5_colon__xul/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/ein_thunderbird_addon_programmieren_5_colon__xul/index.html deleted file mode 100644 index 4f227fe3d1..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/ein_thunderbird_addon_programmieren_5_colon__xul/index.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 5: XUL' -slug: >- - Mozilla/Thunderbird/Thunderbird_extensions/Ein_Thunderbird_Addon_programmieren_5:_XUL -tags: - - Addons - - Erweiterung - - thunderbird -translation_of: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_5:_XUL ---- -

{{AddonSidebar}}

- -

Thunderbirds Nutzerinterface ist in XUL und JavaScript geschrieben. XUL ist eine XML Art, die Nutzerinterfacewidgets wie Knöpfe, Menüs, Toolbars, Trees etc. bietet. Wir fügen Widgets hinzu, indem wir neue XUL DOM Elemente in das Programmfenster hinzufügen und sie mit Scripts und angehängten Event Handlern modifizieren. Während XUL die Elemente des Nutzerinterfaces bietet, sind die Aktionen in JavaScript geschrieben.

- -

Bei unserer erster Erweiterung fügen wir Text in die Thunderbird Statusbar ein. Die Statusbar ist ist in einer XUL Datei namens messenger.xul implementiert, die sich im chrome/messenger/content/messenger  Ordner innerhalb des omni.ja Archives befindet. Um diese XUL Datei lesen zu können, nutze die DOM Inspector Erweiterung (Nicht mehr ünterstützt) oder schau in das omni.ja Archiv, welches sich im Thunderbird Programmordner befindet. omni.ja kann ganz einfach durchsucht werden, indem man die Datei an einen anderen Speicherplatz kopiert und sie in omni.zip umbenennt. Solltest du mit einem Zip Manager Probleme haben (wie 7Zip), nutze einen anderen (wie WinRAR). In messenger.xul finden wir die Statusbar, welche ungefähr so ausschaut:

- -
<statusbar id="status-bar" ...>
- ... <statusbarpanel>s ...
-</statusbar>
-
- -

<statusbar id="status-bar"> ist ein "Zusammenführungspunkt" für ein XUL Overlay. XUL Overlays sind eine Methode, andere UI Widgets zu einem XUL Dokument anzuhängen, sobald die Erweiterung startet. Ein XUL Overlay ist eine .xul Datei die XUL-Fragmente spezifiziet, um sie bei bestimmten Zussamenführungspunkten innerhalb eines "Haupt"-Dokuments" einzufügen. Diese Fragmente können Widgets zum Einfügen, Entfernen oder Bearbeiten spezifizieren. In diesem Beispiel fügst du eine Linie der Statusbar hinzu. Deshalb wird es zu einem Element mit der ID "Statusleiste". Das zeigt, wie die Thunderbirdarchitektur Erweiterungen erlaubt, die Nutzererfahrung zu ändern, ohne dabei die Installationsdateien zu ändern. Das erlaubt auch Versionsunabhängigkeit zwischen Thunderbird und Thunderbird-Erweiterungen.

- -

Beispiel XUL Overlay Dokument

- -

Erstelle eine neue Datei namens myhelloworld.xul innerhalb des content Ordners, den du vorhin erstellt hast, mit folgendem Inhalt:

- -
<?xml version="1.0"?>
-<overlay id="sample"
-xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/javascript" src="chrome://myfirstext/content/overlay.js"/><!-- A reference to your JavaScript file -->
- <statusbar id="status-bar">
-  <statusbarpanel id="my-panel" label="Date"/>
- </statusbar>
-</overlay>
-
- -

Das <statusbar> Widget names status-bar spezifiziert den Zusammenführungspunkt innerhalb des Programmfensters, das wir anhängen wollen. Wenn unsere Overlay Datei geparsed wird, nimmt die XUL Engine alle Unterelemente des <statusbar> Tags und führt die mit dem orginalen XUL Dokuments <statusbar> Tag zusammen. In dem Bespiel überhalb haben wir ein neues <statusbarpanel> Element definiert (Das als my-panel bezeichnet wird), das eine neue Instanz dieses Widgettyps erstellt und am Ende der Statusbar hinbaut. In Thunderbird erscheint es als Label auf der rechten Seite der Statusbar von Thunderbird und zeigt "Date" an.  Wir haben auch einen <script> Tag geschrieben, der eine Refezenz zur JavaScript Datei overlay.js beinhaltet. In der nächsten Sektion wirst du lernen, wie du JavaScript nutzt um dein Label so zu modifizieren, dass es das momentane Datum anzeigt.

- -
Die overlay.js Datei wird in einer späteren Sektion erstellt. Deine Erweiterung wird auch ohne diese Datei funktionieren. Momentan kannst du diese Linie ignorieren, aber erinnere dich daran, dass das hier ist, wie du auf eine JavaScript Datei verweist.
- -

{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_4:_Chrome_Manifest", "Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_6:_Javascript_hinzufuegen") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_2_colon__erweiterungs-dateisystem/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_2_colon__erweiterungs-dateisystem/index.html deleted file mode 100644 index f023c7b8c8..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_2_colon__erweiterungs-dateisystem/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 2: Erweiterungs-Dateisystem' -slug: >- - Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_2:_Erweiterungs-Dateisystem -translation_of: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_2:_extension_filesystem ---- -

{{AddonSidebar}}

- -

Erweiterungen sind in Archiv-Dateien (Auch Bundles genannt) mit der XPI ( “zippy” ausgesprochen)-Dateiendung gepackt und verteilt. Sie enthalten mindestens eine install.rdf, ein chrome.manifest und einen "chrome/ Ordner. Ein content/ Ordner enthält manchmal die eigentlichen Kontentdateien. Diese Dateien enthalten den Code, der deine Erweiterung etwas machen lässt. Wenn dieses Tutorial fertig ist, wird unsere Erweiterung so ausschauen:

- -
myfirstext.xpi:                                //Erstellt in Schritt 8
-              /install.rdf                     //Erstellt in Schritt 3
-              /chrome.manifest                 //Erstellt in Schritt 4
-              /chrome/
-              /content/
-              /content/myhelloworld.xul        //Erstellt in Schritt 5
-              /content/overlay.js              //Erstellt in Schritt 6
-              /chrome/locale/*                 //Erstellen einer Erweiterungslokalisierung
-              /chrome/skin/
-              /defaults/preferences/           // Erstellen von Erweiterungs-Standarddateien
-
- -

Die folgende Tutorialseiten werden erklären, wie man jede dieser Dateien schreibt (Außer locale/ und defaults/) und sie in eine XPI (zippy) Datei packt. Du kannst Informationen über die locale/ und defaults/ Ordner in der allgemeineren "Building an Extension" Dokumentation.

- -

Um mit dem Tutorial zu starten, erstelle manuell die anfängliche Verzeichnisstruktur für die Erweiterung, wie sie oben in einem Ordner namens myfirstext@jen.zed dargestellt ist. Dieses Verzeichnis kann an einem beliebigen Ort im Dateisystem erstellt werden.

- -


- {{ Previous("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension") }}

- -

{{ Next("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_3:_install_manifest") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_4_colon__chrome_manifest/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_4_colon__chrome_manifest/index.html deleted file mode 100644 index 639204a1ef..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_4_colon__chrome_manifest/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 4: Chrome Manifest' -slug: >- - Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_4:_Chrome_Manifest -tags: - - Addons - - Extensions - - thunderbird -translation_of: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_4:_chrome_manifest ---- -

{{AddonSidebar}}

- -

Die Datei namens chrome.manifest teilt Thunderbird mit, welche Packages und Overlays von der Erweiterung bereitgestellt werden. Öffne die von dir erstellte Datei chrome.manifest und füge diesen Code hinzu:

- -
content     myfirstext    content/
-
- - - -

Diese Zeile besagt, dass wir für ein Chrome-Package myfirstext die Kontentdateien im Verzeichnis content/ finden können (das ist ein Pfad relativ zum Speicherort von chrome.manifest).

- -

Um die Thunderbird-Benutzeroberfläche so zu ändern, dass sie die Erweiterung unterstützt, erstelle ein Overlay und führe es mit dem Standard Thunderbird-Interface zusammen. Im weiteren Verlauf des Tutorials werden wir eine XUL-Overlay-Datei erstellen, die mit der Standarddatei messenger.xul zusammengeführt wird. An dieser Stelle legen wir in chrome.manifest die Existenz des Overlays fest (das wir später erstellen werden).

- -
-
 
-
- -

Füge diese Zeile am Ende von chrome.manifest hinzu:

- -
-
overlay chrome://messenger/content/messenger.xul chrome://myfirstext/content/myhelloworld.xul
-
- -

Dies sagt Thunderbird, dass myhelloworld.xul beim Laden von messenger.xul mit messenger.xul zusammengeführt wird. Weitere Informationen zu Chrome-Manifesten und den unterstützten Eigenschaften findest du in der Chrome-Manifestreferenz.

-
- -
Es kann hilfreich sein, eine Erweiterung wie den DOM Inspector zu installieren, um das Layout der vorhandenen XUL-Dateien besser zu verstehen und eigene Overlays zu debuggen. (nicht unterstützt ab Thunderbird 60)
- -

{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_3:_install_manifest", "Mozilla/Thunderbird/Thunderbird_extensions/Ein_Thunderbird_Addon_programmieren_5:_XUL") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_6_colon__javascript_hinzufuegen/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_6_colon__javascript_hinzufuegen/index.html deleted file mode 100644 index 959e9dc753..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_6_colon__javascript_hinzufuegen/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: 'Eine Thunderbird-Erweiterung programmieren 6: JavaScript hinzufügen' -slug: >- - Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_6:_Javascript_hinzufuegen -translation_of: >- - Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_6:_Adding_Javascript ---- -

{{AddonSidebar}}

- -

In diesem Schritt erstellen wir ein kleines Stück JavaScript-Code, der das aktuelle Datum ins Statusleisten-Widget einfügt. Die Statusleiste wird normalerweise am unteren Rand des Thunderbird-Fensters angezeigt. Je nach installiertem Theme sieht das Ergebnis etwa so aus:

- -

current_date.png

- -

XUL Elemente mit JavaScript modifizieren

- -
-
Speichere den folgenden JavaScript-Code im content/ Ordner neben der Datei myhelloworld.xul und nenne ihn overlay.js.
-
- -
window.addEventListener("load", function(e) {
-	startup();
-}, false);
-
-window.setInterval(
-	function() {
-		startup();
-	}, 60000); //Aktualisiert das Datum jede Minute
-
-function startup() {
-	var myPanel = document.getElementById("my-panel");
-	var date = new Date();
-	var day = date.getDay();
-	var dateString = date.getFullYear() + "." + (date.getMonth()+1) + "." + date.getDate();
-	myPanel.label = "Date: " + dateString;
-}
- -

Der erste Teil registriert einen neuen Ereignis-Listener, der beim Laden von Thunderbird automatisch ausgeführt wird. Der Ereignis-Listener ruft dann die Startup-Funktion auf, die unser <statusbarpanel> -Element mit der ID my-panel aus dem DOM-Tree des Dokuments erhält.Dann verwendet es die Date-Klasse von JavaScript, um das aktuelle Datum abzurufen, das in eine String konvertiert wird, der das Format YYYY.MM.DD hat.Da der Monat nullbasiert ist, müssen wir beim Monat eins addieren. Schließlich wird das Label unseres Panels auf "Date:" gesetzt und mit der Datums-String verkettet, die das formatierte Datum enthält.

- -

Wir verwenden die Funktion window.setInterval, um das Datum zu aktualisieren, falls Thunderbird länger als einen Tag läuft.. Dadurch können wir die Startup-Funktion wiederholt mit einem Intervall von 60000 ms (jede Minute) aufrufen.

- -

Weitere Dokumentation

- -

Weitere Funktionen für die DOM-Objekte findest du unter:

- - - -

Das Javascript Cheat Sheet kann auch sehr nützlich sein.

- -

{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Ein_Thunderbird_Addon_programmieren_5:_XUL", "Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_7:_Installation") }}

diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/index.html deleted file mode 100644 index 8dba5ff294..0000000000 --- a/files/de/mozilla/thunderbird/thunderbird_extensions/index.html +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Thunderbird extensions -slug: Mozilla/Thunderbird/Thunderbird_extensions -tags: - - Add-ons - - Extensions - - NeedsTranslation - - TopicStub - - thunderbird -translation_of: Mozilla/Thunderbird/Thunderbird_extensions ---- -
Entwickeln einer Thunderbird Erweiterung
-Schritt-für-Schritt Anleitung zur Erstellung einer Erweiterung für Thunderbird.
- -
-

{{AddonSidebar}}

-Die nachfolgende Dokumentation dient als Hilfestellung zur Entwicklung von Erweiterungen für den Thunderbird email client. Ähnlichkeiten zu den Firefox extensions sind vorhanden, jedoch ebenso Unterschiede die den zukünftigen Thunderbird Entwickler verwirren können. Diese Dokumentenreihe beschäftigt sich mit Thunderbird.
- -

-Sie benötigen Hilfe zu einem spezifischen Thema? Fragen Sie die Community / Communications.
- -
- -
Bitte helfen Sie! Sie können ein how-to (eine Frage, eine Antwort, ein Codeschnipsel), eine relevante newsgroup Diksussion zusammenfassen und verlinken oder ein Tutorial verfassen.
- -
- - - - - - - - -
-

Dokumentation

- -

Erste Schritte mit Thunderbird

- -

Ein mutiger, junger Entwickler möchte eine eine Erweiterung für Thunderbird entwickeln. Nachfolgende Links helfen ihm auf dieser Reise.  Hinweis: Diese Dokumentation wurde noch nicht für Version 60 aktualisiert.

- -
    -
  • Beginnen Sie mit dem Studium des Tutorials und lernen Sie, wie Sie eine Thunderbird Erweiterung erstellen können.  Beachten Sie auch den Thunderbird 57-60 add-ons guide für mit Thunderbird 60 eingeführte Änderungen.
  • -
  • Erfahren Sie mehr über die Hauptfenster und lernen Sie die « thread pane », « preview pane », und « folder pane » kennen.
  • -
  • Spielen Sie mit einem demo add-on welches erweiterte Thunderbird-spezifische features bietet.
  • -
  • Sie möchten mehr tun?  Erfinden Sie nicht das Rad neu: bedienen Sie sich bei dem thunderbird-stdlib Projekt (Doku hier). Funktionen zum Umgang mit Nachrichten (löschen, archivieren, tags ändern, etc.) sind hier enthalten. MailUtils.js.
  • -
  • Nicht das gefunden, was Sie benötigen? Lesen Sie die Thunderbird how-tos; sie enthalten viele Vorgehensweisen für Dinge, die Erweiterungen tun möchten.
  • -
  • Sie hängen fest?  Fragen Sie in einem Kommunikationskanal (auf der rechten Seite) nach.
  • -
  • Richtig mutig? Lesen Sie den source in einer ausgefallenen Oberfläche fancy interface (der Link ist tot); Sie können oftmals Tests finden, die zeigen was Sie versuchen zu erreichen.
  • -
- -

Die Gloda Datenbank

- -

Thunderbird verfügt über ein subsystem Namens Gloda. Gloda steht für « Global Database », und erzeugt Thunderbird-weite Beziehungen zwischen Objekten. Gloda stellt Konzepte wie Unterhaltungen, Nachrichten, Identitäten, Kontakte zur Verfügung. Alles diese Konzepte sind verbunden: Eine Unterhaltung enthält Nachrichten, die mit Identitäten verknüpft sind (from Feld, to Feld), die widerum selbst Teil eines Kontaktes sind. Tatsächlich: ein Kontakt hat mehrere Identitäten.

- -

Typischer Anwendungsfall für Gloda: Finde alle Nachrichten deren Betreff übereinstimmt [Suchbegriff], finde alle Nachrichten von [Person], finde alle Nachrichten im gleichen Thread wie [eine vorgegebene Nachricht], finde alle Nachrichten mit [Person] etc. etc.

- -

Gloda ist extrem mächtig und wird sehr stark von add-ons wie z. B. Thunderbird Conversations genutzt.
- Erfahren Sie mehr über Gloda:

- - - - - -

Manche Links können veraltet sein, jedoch stellten sie immer noch wertvolle Informationen zur codebase zur Verfügung.

- - - - - - -
-

Community / Communications

- -

Thunderbird spezifisch :

- - - -

Mehr allgemein :

- - - -

Tools

- - - -

... weitere Tools ...

- -

Alle anzeigen...

- - - -
-
XUL, JavaScript, XPCOM, Themes, Developing Mozilla
-
-
- -

Categori

diff --git a/files/de/mozilla/verbinden/index.html b/files/de/mozilla/verbinden/index.html deleted file mode 100644 index a103f9d5f9..0000000000 --- a/files/de/mozilla/verbinden/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Mit Mozilla verbinden -slug: Mozilla/Verbinden -tags: - - Landung -translation_of: Mozilla/Connect ---- -
-

Ermöglichen, inspirieren und zusammenarbeiten damit das Internet die primäre Plattform wird um auf allen verbundenen Endgeräten Erlebnisse zu erschaffen.

-
- - -
-
-
- -
- -
- -
- -
- -
-
- -
-

Mit Mozilla verbinden

-Entwickler erschaffen die Zukunft indem Sie Dienste und Apps für Menschen auf der ganzen Welt aufbauen. Das Ziel der Mozilla Entwickler Beziehung ist es Entwickler dabei zu unterstützen offene und standardisierte Web Technologien zu verwenden um damit erfolgreich Ihre Ziele zu erreichen. Zusätzlich zu der Dokumentation hier auf MDN bieten wir auf verschiedenen anderen Kanälen Hilfe und Ressourcen an um dieses Ziel zu erreichen. Wir laden Sie ein sich zu beteiligen, zu lernen und Ihr eigenes Wissen zu teilen.
-Um spezielle technische Fragen und Herausforderungen zu beantworten, bieten wir Hilfe über Q&A auf Stack Overflow. Unser Newsletter hält Sie über die neusten Ereignisse in der Webszene rund um Web Apps und andere Themen auf dem Laufenden.
-Wir haben viele Pläne und Ideen um unsere Entwickler Beziehungen iterativ auszubauen, wir möchten dich beteiligen genau wie wir es sind.  Folgen Sie den Tags auf Stack Overflow, Abonnieren Sie den Hacks blog, und Melden Sie sich für einen Account an!
- -
-
-

Q&A auf Stack Overflow Ansicht aller Q&A...

- -

Wir haben ein Q&A um Herausforderungen und Fragen beim Entwickeln zu diskutieren. Insbesondere für Firefox OS und open Web auf Handys. Zu finden auf Stack Overflow unter der einfachen URL http://stackoverflow.com/r/mozilla.

- - -
Stack Formular
- -

Neuste Q&A Themen

-
- -
 
-
- -

Developers at a Firefox OS workshop in Madrid.

- -
-
-

Wo ist Mozilla? Sehen Sie Teilnehmer und Einzelheiten auf unserer Veranstaltungseite...

- -

Hier ist eine Liste von Mozilla Repräsentanten die auf einer Veranstaltung in Ihrer Nähe sprechen. Sprechen Sie mit Ihnen!

-
- - -
-
- -

 

diff --git "a/files/de/mozilla/\303\274ber_colon_omni.ja_(ehemals_omni.jar)/index.html" "b/files/de/mozilla/\303\274ber_colon_omni.ja_(ehemals_omni.jar)/index.html" deleted file mode 100644 index 381dc0e052..0000000000 --- "a/files/de/mozilla/\303\274ber_colon_omni.ja_(ehemals_omni.jar)/index.html" +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Über omni.ja (ehemals omni.jar) -slug: 'Mozilla/Über:omni.ja_(ehemals_omni.jar)' -tags: - - Firefox - - Gecko - - Guide - - Mozilla -translation_of: Mozilla/About_omni.ja_(formerly_omni.jar) ---- -

{{ gecko_minversion_header("2.0") }}

- -

Firefox und Thunderbird erreichen Verbesserungen der Performance, indem sie viele ihrer internen Teile, bestehend aus einzelnen Dateien oder mehreren  JAR-Dateien in eine einzige JAR-Datei,  omni.ja genannt, auslagern; dies reduziert die I/O-Menge, die benötigt wird, um die Anwendung zu laden. Seit Firefox und Thunderbird 10 wird die Dateierweiterung .ja genutzt, weil die Windows Systemwiederherstellung Dateien mit der .jar Erweiterung nicht sichert,  .ja Dateien dagegen schon.

- -

omni.ja inspizieren

- -
Hinweis: Während der Extrahierung von omni.ja könnten Fehlmeldungen einiger Antivirenprogramme auftreten.
- -

Einige Kompressionsprogramme und Archive ( jede Version von 7-Zip mit einbezogen) können omni.ja aufgrund der Optimierungen, die in der Datei angewendet wurden, zurzeit nicht lesen. Windows 7 Nutzern wird empfohlen die Datei zu entpacken, indem sie in omni.zip umbenannt wird und sie mit Windows Explorer zu extrahieren. Nutzer älterer Versionen von Windows können das InfoZip's UnZip tool verwenden, um Dateien zu entpacken - fertigen sie eine Kopie von omni.ja an und bewegen sie es per Drag n' Drop auf unzip.exe.

- -

omni.ja ist auch aus der anderen Richtung mit Zip-Dateien inkompatibel; das Bearbeiten extrahierter Dateien wird Firefox nicht beeinflussen und wieder zurückgepackte editierte Dateien könnten Firefox zum Absturz bringen, wenn sie während des Packens nicht die richtigen Einstellungen nutzen. Der korrekte Befehl, um Dateien in omni.ja zu packen, ist:

- -
zip -qr9XD omni.ja *
- -
Hinweis: Vor dem Erscheinen von Firefox 10 und Thunderbird 10, wurde die omni.ja  noch omni.jar genannt.
- -

Die Inhalte von omni.ja

- -

omni.ja enthält ausgewählte Programmressourcen:

- -
-
chrome.manifest
-
Das chrome Manifest.
-
/chrome/
-
UI-Dateien der Anwendung
-
/chrome/localized.manifest
-
Manifest für lokalisierten Inhalt; bezieht sich auf das chrome Manifest.
-
/chrome/nonlocalized.manifest
-
Manifest für nicht lokalisierten Inhalt; bezieht sich auf das chrome Manifest.
-
/components/
-
XPCOM-Komponenten, auf die sich die Anwendung stützt.
-
/defaults/
-
Standarddateien.
-
/modules
-
JavaScript Codemodule.
-
/res/
-
Verschiedene Ressourcen.
-
- -

Siehe auch

- - - -
-

{{ languages( { "ja": "ja/About_omni.jar" } ) }}

-
diff --git "a/files/de/neue_kompatibilit\303\244tstabellen_in_beta/index.html" "b/files/de/neue_kompatibilit\303\244tstabellen_in_beta/index.html" deleted file mode 100644 index a353880b4b..0000000000 --- "a/files/de/neue_kompatibilit\303\244tstabellen_in_beta/index.html" +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Neue Kompatibilitätstabellen in Beta -slug: Neue_Kompatibilitätstabellen_in_Beta -translation_of: Archive/MDN/New_Compatibility_Tables_Beta ---- -

Sie sind wahrscheinlich hier, weil sie einem Beta-Hinweis von einer unserer neuen Kompatibilitäts-Tabellen gefolgt sind. (Nein? Wollen Sie die neuen Tabellen sehen? Beta-Tester werden (auf Englisch).)

- -

Danke, dass Sie uns helfen, diese Kompatibilitäts-Tabellen zu testen. Sie sind Teil eines größeren Projekts. Wir ändern alle unsere Browser-Kompatibilitätsdaten zu strukturiertem JSON.

- -

Die neuen Tabellen werden nach und nach auf den Seiten auftauchen, je nachdem wie die Daten kovertiert werden.

- -

Bearbeitung

- -

Unsere Kompatibilitäts-Daten wurden zu JSON-Dateien im "browser-compat-data" GitHub-Repository geändert.

- -

Um Kompatibilitäts-Daten beizutragen, können Sie jetzt einen Pull Request starten oder einen neuen Issue erstellen.

- -

Wie kann ich helfen?

- -

Wenn Sie ein Problem mit den Daten feststellen, dann erstellen Sie bitte einen Issue im GitHub-Repository.

- -

Wenn die Tabelle nicht richig dargestellt wird oder nicht richtig funktioniert, nutzen Sie bitte den "report an error"-Knopf im Drop-Down-Menü über der Tabelle.

- -

Wenn sie einen Moment Zeit haben, würden wir uns freuen, wenn Sie  an unserer Umfrage teilnehmen (auf Englisch).

diff --git a/files/de/packen_von_erweiterungen/index.html b/files/de/packen_von_erweiterungen/index.html deleted file mode 100644 index 5b824abfb4..0000000000 --- a/files/de/packen_von_erweiterungen/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Packen von Erweiterungen -slug: Packen_von_Erweiterungen -tags: - - Erweiterungen - - Toolkit API -translation_of: Archive/Add-ons/Extension_Packaging ---- -

Erweiterungen sind eine Art installierbare Pakete, welche vom Benutzer heruntergeladen und direkt in der Anwendung installiert werden können. Außerdem können Erweiterungen bereits mit der Anwendung mitgeliefert oder von einem anderen Programm eingebunden werden. Erweiterungen benutzen eine Verzeichnisstruktur, die Platz für Chromedateien, Komponenten und andere Daten bietet, um die Funktionalität der XUL-Anwendung zu erweitern.

-

Jede Erweiterung benötigt eine install.rdf Datei mit beschreibenden Informationen über die Erweiterung, wie eine einmalige ID, Version, Urheber oder Informationen zur Kompatibilität.

-

Nachdem die Erweiterung sowie die install.rdf vorbereitet wurden, gibt es verschiedene Wege, um diese zu installieren. Das Erweiterungsverzeichnis kann als Installationspaket (xpinstall) gepackt, direkt in das Anwendungs- oder Profilverzeichnis kopiert oder in der Windows Registry eingetragen werden.

-
-
-Hinweis zu Gecko 2.0 -
(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)
-
-

Ab Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) werden XPI Dateien nicht mehr entpackt, wenn Erweiterungen installiert werden. Stattdessen wird die XPI-Datei in das Erweiterungsverzeichnis kopiert und die Dateien werden direkt aus dem Paket geladen. Siehe Erweiterungen für Firefox 4 aktualisieren für weitere Details.

-
-

Erweiterung als Installationspaket

-

Eine XPI-Datei (XPInstall) ist eine einfache Zip-Datei, die die Erweiterung sowie die install.rdf im Wurzelverzeichnis des Archivs enthält. Benutzer können ein Installationspaket sowohl von einer Webseite als auch als lokale Datei installieren. Dazu muss das Paket lediglich geöffnet oder in den Addon-Manager per Drag & Drop gezogen werden.

-

Der, vom Firefox so erkannte, MIME-Typ einer XPI-Datei ist application/x-xpinstall. Da die meisten HTTP-Server defaultmäßig nicht konfiguriert sind diesen MIME-Typ für das .xpi Endung zurückzugeben, werden Sie vermutlich die Konfiguration Ihres HTTP-Servers anpassen müssen. Beim Apache HTTP-Server kann dies ganz einfach gemacht werden, indem folgende Anweisung in der Konfiguration oder .htaccess-Datei hinzugefügt wird:

-
AddType application/x-xpinstall .xpi
-
-

Eine Erweiterung direkt installieren

-

Wenn Sie den Pfad der Anwendung kennen, weil Sie z.B. die Erweiterung zusammen mit der Anwendung installieren, können Sie die Erweiterung direkt nach <appdir>/extensions/<extensionID> installieren. Die Erweiterung wird vom Addon-Manager automatisch gefunden sobald die Anwendung das nächste mal gestartet wird.

-

Wenn Sie diese Methode wählen, müssen Sie sichergehen, dass die Zugriffsrechte für die Verzeichnisse und Dateien richtig gesetzt sind. Ansonsten kann der Addon-Manager unter Umständen nicht richtig mit der Erweiterung funktionieren.

-

Add-ons in eine benutzerdefinierte Anwendung einfügen

-

Eine benutzerdefinierte Anwendung kann Add-ons einbinden (auch Erweiterungen und Themes), indem diese in das <appdir>/distribution/bundles Verzeichnis gepackt werden.

-

Eine Erweiterung in der Windows Registry registrieren

-

Externe Installationsroutinen, wie z.B. die Java Laufzeitumgebung, können eine Anwendung als Erweiterung integrieren, obwohl diese noch nicht installiert ist. Die Installation wird dann mit Hilfe der Windows Registry beendet.

-

Multi-Item Extension XPIs

-

Manchmal werden mit einer einzelnen XPI-Datei mehrere Erweiterungen/Themes installiert. Ein spezieller Typ Gruppen Paket zeigt wie dieser Typ gepackt wird. (Firefox 1.5/XULRunner 1.8 wird benötigt.)

-

Offizielle Toolkit API Referenzen

-

-

diff --git "a/files/de/plugins/beispiele_und_testf\303\244lle/index.html" "b/files/de/plugins/beispiele_und_testf\303\244lle/index.html" deleted file mode 100644 index 484eef64f4..0000000000 --- "a/files/de/plugins/beispiele_und_testf\303\244lle/index.html" +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Beispiele und Testfälle -slug: Plugins/Beispiele_und_Testfälle -tags: - - Add-ons - - Plugins -translation_of: Archive/Plugins/Samples_and_Test_Cases ---- -

NPAPI Plugin Beispiele

-

Einige NPAPI Plugin-Beispiele finden sich im Mozilla Quellcode unter /modules/plugin/sdk/samples.

-

Die Beispiele können unter Umständen nicht mehr auf allen Plattformen kompiliert werden. Es gibt Pläne die Beispiel-Plugins zu erneuern - bessere Organisation, aktualisierte Build-Systeme sowie Builds auf allen Plattformen. Auch wenn ein Beispiel nicht kompiliert werden kann, sind sie als Code-Referenz immer noch sehr wertvoll.

-

Es gibt eine Anleitung zur Kompilierung des npruntime Beispiels in Visual Studio.

-

Zusätzlich zu diesen Beispielen gibt es zwei weitere Plugins, die hilfreich sein könnnten.

- -

NPAPI Plugin Testfälle

- -

{{ languages( { "en": "en/Plugins/Samples_and_Test_Cases" } ) }}

diff --git a/files/de/plugins/index.html b/files/de/plugins/index.html deleted file mode 100644 index 6ee5358256..0000000000 --- a/files/de/plugins/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Plugins -slug: Plugins -tags: - - Add-ons - - Plugins -translation_of: Archive/Plugins ---- -
-

Plugins (oder Plug-ins) sind Softwaremodule zur Darstellung von speziellen Inhalten im Browserfenster, die der Browser selbst nicht interpretieren und darstellen kann. Ein bekanntes Beispiel ist das Adobe Reader Plugin, mit dem der Anwender PDF-Dateien direkt im Browserfenster öffnen kann. Mit dem Quicktime und Realplayer Plugin können Videos in verschiedenen Formaten und mit unterschiedlichen Transportprotokollen auf einer Webseite abgespielt werden.

-

Plugins können für Anwendungen nützlich sein, die das Mozilla Framework verwenden. Zum Beispiel benutzt {{ interwiki('wikipedia', 'ActiveState_Komodo', 'ActiveState Komodo') }} Plugins, um den {{ interwiki('wikipedia', 'Scintilla_(editing_component)', 'Scintilla Editor') }} in seine XUL-basierte Benutzeroberfläche einzubetten.

-

Plugins werden mit der NPAPI erstellt, der browserübergreifenden API für Plugins. Die NPAPI ist in der Gecko Plugin API Referenz dokumentiert. Um ein Plugin scriptingfähig zu machen, kann die npruntime verwendet werden. Die älteren, XPCOM- und LiveConnect- basierten APIs für Plugins sollten nicht mehr benutzt werden. Die in diesen APIs verwendeten Technologien werden weiterhin benutzt, jedoch nicht mehr für Plugins.

-

Für eine einfachere Erstellung von scriptgesteuerten Grafik- und Animationskomponenten können SVG und Canvas benutzt werden.

-

Plugins unterscheiden sich von Erweiterungen, welche die Funktionalität des Browsers selbst verändern oder erweitern. Weiterhin unterscheiden sich Plugins von OpenSearch Plugins, die zusätzliche Suchmaschinen in der Suchleiste implementieren.

-
- - - - - - - -
-

Dokumentation

-
-
- Gecko Plugin API Referenz (NPAPI)
-
- Dieses Dokument beschreibt die Schnittstellen für Anwendungsprogramme zur Erstellung von NPAPI Plugins.
-
- Scripting plugins (npruntime)
-
- Dieses Dokument beschreibt die neuen browserübergreifenden NPAPI-Erweiterungen, mit denen scriptingfähige Plugins erstellt werden können, die auch auf Scriptobjekte im Browser zugreifen können.
-
- Gecko Plugin SDK
-
- Das Gecko plugin SDK enthält alle Werkzeuge und Headerdateien die benötigt werden, um scriptingfähige Plugins für Gecko erstellen zu können. Enthalten sind auch der XPIDL Compiler/Linker und die neueste Version der npapi.h.
-
- Out-of-process Plugins
-
- Firefox 3.6.4 führt sogenannte „out-of-process“ Plugins ein, welche in einzelnen Threads ausgeführt werden, sodass der Crash eines Plugins nicht mehr den kompletten Browser betrifft.
-
- Verwendung von XPInstall zur Installation von Plugins
-
- XPInstall ermöglicht eine einfache Installation von Plugins durch den Anwender innerhalb der Browseroberfläche, ohne dass ein separates Installationsprogramm gestartet werden muss.
-
- Plugins finden
-
- "Da es offensichtlich Situationen gibt, in denen es sinnvoll ist, Plugins zu benutzten, stellt sich die Frage, wie zu verfahren ist, wenn das erforderliche Plugin nicht installiert ist."
-
- Scripting Plugins: Macromedia Flash
-
- Dieser Artikel erklärt, wie JavaScript benutzt werden kann, um auf Methoden des Flash-Plugins zuzugreifen und wie man FSCommands verwendet, um auf JavaScript-Funktionen aus der Flash-Animation heraus aufzurufen.
-
- Plugins: Das Erstinstallationsproblem
-
- Das Erstinstallationsproblem tritt auf, wenn ein Plugin oder integrierbare Softwarekomponenten sich auf einem System installieren, bevor irgendein Gecko-basierter Browser vorhanden ist.
-
- ActiveX Control zur Integration von Netscape Plug-ins im IE
-
- Microsoft hat die Unterstützung für Netscape-Plugins aus seinem Browser IE 5.5 SP2 (und höher) entfernt. Für Plugin-Autoren dürfte dieses Projekt eine große Arbeitserleichterung sein!
-
- Plugins: Beispiele und Testfälle
-
- NPAPI Plugin Beispiele und Testfälle.
-
- Externe Seiten zur Plugin-Erstellung
-
- Externe Projekte, Frameworks und Blogeinträge, die zur Erstellung von Plugins nützlich sein können.
-
- XEmbed Erweiterung für Mozilla Plugins
-
- Neuere Versionen von Mozilla enthalten eine Erweiterung zum Erstellen von Plugins, die XEmbed verwendet, anstatt der alten Xt-basierten Hauptschleife, die von den meisten Plugins seit der Zeit von Netscape 3.x benutzt wird.
-
-

Alles ansehen...

-
-

Community

-
    -
  • Mozillas Plugin Foren:
  • -
-

{{ DiscussionList("dev-tech-plugins", "mozilla.dev.tech.plugins") }}

-

Verwandte Themen

-
-
- Erweiterungen, SVG, Canvas
-
-
-

{{ languages( { "en": "en/Plugins", "es": "es/Plugins", "fr": "fr/Plugins", "ja": "ja/Plugins", "pl": "pl/Wtyczki", "pt": "pt/Plugins", "ko": "ko/Plugins" } ) }}

diff --git a/files/de/preferences_system/index.html b/files/de/preferences_system/index.html deleted file mode 100644 index 882de5958a..0000000000 --- a/files/de/preferences_system/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Preferences System -slug: Preferences_System -tags: - - XUL -translation_of: Mozilla/Preferences/Preferences_system ---- -

Dieses Dokument beschreibt das neue Aviary Toolkit Einstellungssystem. Mit der Verwendung dieses Systems ist es möglich Einstellungsfenster zu erstellen, die auf verschiedenen Plattformen (Windows, MacOS X und GNOME) angezeigt und ausgeführt werden können.

-

Hinweis: Das Einstellungssystem ist erst ab Firefox/Thunderbird 1.5 (und deren alpha und beta Releases) verfügbar. Es kann nicht in Firefox 1.0-basierenden Anwendungen und Erweiterungen benutzt werden.

-

Das neue System ist durch einige XUL Elemente und Attribute implementiert. Referenzinformationen über diese sind unter den folgenden Links verfügbar:

-

Einstellungssystemdokumentation:

-

Verwendung

-

Der Code für ein typisches Einstellungsfenster könnte in etwa so aussehen:

-
<prefwindow id="appPreferences"
-            xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-  <prefpane id="pane1" label="&pane1.title;">
-    <preferences>
-      <preference id="pref1" name="pref.name" type="bool"/>
-    </preferences>
-
-   .. UI elements that refer to the preferences above, e.g.:
-    <checkbox id="check1" preference="pref1"
-              label="&check1.label;" accesskey="&check1.accesskey;"/>
-  </prefpane>
-
-  <prefpane id="pane2" label="&pane2.title;" src="chrome://uri/to/pane.xul"/>
-</prefwindow>
-
-

Die pane Inhalte können inline festgelegt werden oder eine externe chrome URI sorgt für die Inhalte über ein dynamisches Overlay. Die HIGs sollten für die angestrebten Plattformen gründlich gelesen werden und der XUL Präprozessor sollte, wenn nötig, verwendet werden, um unterschiedlich passende Fenstertitel festzulegen. Außerdem sollte man vorsichtig sein, wenn man die Breite des Fensters (in em) angibt, genau wie die Höhe des Fenster (in em), denn bei einigen Plattformen verändert sich die Fenstergröße nicht so wie das ausgewählte Panel verändert wird (z.B. Windows).

-

Verwendung in XULRunner Anwendungen

-

Wird openDialog() aufgerufen, um einen Einstellungsdialog zu öffnen, sollte "toolbar" im features String enthalten sein. Beispiel:

-
var features = "chrome,titlebar,toolbar,centerscreen,modal";
-window.openDialog(url, "Preferences", features);
-
-

Bugzilla

-

Die Komponente für Bugs in den „Preferences bindings“ (aber nicht in den Options UIs von Firefox/Thunderbird) ist »Toolkit:Preferences« (Fehler melden Offene Bugs auflisten).

diff --git a/files/de/profile_manager/index.html b/files/de/profile_manager/index.html deleted file mode 100644 index 06b118354e..0000000000 --- a/files/de/profile_manager/index.html +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Profilmanager -slug: Profile_Manager -translation_of: Mozilla/Profile_Manager ---- -

Firefox und andere XULRunner Anwendungen speichern Benutzereinstellungen und -daten in speziellen Ordnern, den sogenannten Profilen. Firefox stellt ein eingebautes Hilfsprogramm zum Verwalten dieser Profile bereit, allerdings könnte dieser zukünftig entfernt werden (siehe bug 214675), weshalb eine neue, eigenständige Profilmanager-Anwendung entwickelt wurde die mit jeder XULRunner-Anwendung funktioniert und etliche Funktionen enthält, die in der in Firefox eingebauten Version nicht zu finden waren.

- -

Herunterladen

- -

Binaries

- -

Du kannst die Profilmanager-Builds unter ftp://ftp.mozilla.org/pub/mozilla.org/utilities/profilemanager/1.0/ herunterladen. Es gibt kein Installationsprogramm; entpacke einfach die Dateien aus dem Archiv.

- -

Systemanforderungen:

- - - -

Quelltext

- -

You can download the source as well:

- -

hg clone http://hg.mozilla.org/automation/profilemanager/

- -

Instructions for building can be found in BUILD.txt.

- -

Fehler melden

- -

Fehler im Profilmanager sollten in Bugzilla unter Testing -> ProfileManager berichtet werden.

- -

Profilmanager starten

- -

Starte einfach die profilemanager.exe (unter Windows) oder profilemanager-bin (unter Linux und Mac). Standardmäßig verwaltet der Profilmanager Firefox-Profile, aber du kannst ihn auch für Profile anderer Xulrunner-Anwendungen wie Thunderbird oder SeaMonkey verwenden. Um den Profilmanager mit einer anderen Anwendung als Firefox zu verwenden, musst du ihn mit dem Namen der gewünschten Anwendung als Argument starten, z.B.:

- -

-

profilemanager-bin seamonkey

-

- -

Profile und Programmversionen

- -

Der Profilmanager verwaltet zwei verschiedene Listen: eine mit Benutzerprofilen und die andere mit den Anwendungsversionen, die mit den Profilen benutzt werden kann. Standardmäßig heißt das, er beobachtet eine Liste der Firefox-Installationen auf deinem System sowie eine Liste der Profile, die von Firefox genutzt werden.

- -

Ein Profil kann jeweils mit einer bestimmten Firefox-Installation verknüpft werden, sodass diese Version von Firefox startet, wenn das betreffende Profil gewählt wird. Z.B. könnte Profil A mit einer Installation von Firefox 3.6.10 verknüpft sein, Profil B mit einer Installation von Firefox 3.5.3.

- -

Nach dem Start sucht der Profilmanager in einigen Standard-Pfaden nach installierten Versionen von Firefox bzw. anderen Anwendungen, für die du den Profilmanager verwendest. Außerdem kannst du Firefox-Versionen manuell hinzufügen, indem du die Schaltfläche "Firefox-Versionen verwalten..." anklickst:

- -

 

- -

Jede Firefox-Version in der Liste hat die folgenden Eigenschaften: Pfad, Version und Standard. Die Eigenschaft "Standard" gibt an, dass diese Firefox-Version mit Profilen verwendet wird, mit denen keine bestimmte Anwendung verknüpft ist.

- -

 

- -

-

Ein Profil erstellen

-

- -

To create a new profile, just click the New button from Profile Manager's toolbar.  A dialog will appear that allows you to specify the profile's name, and optionally the profile's path, and the version of Firefox (or other application) that will be used with this profile:

- -

- -

- -

 

- -

Firefox mit einem Profil starten

- -

To launch Firefox with a specific profile, select the profile in the main window, and hit the "Start Firefox" button:  Firefox will be launched with that profile, and Profile Manager will terminate.  The version of Firefox which will be launched is indicated in the "Firefox version" dropdown in the Launch Options box:

- -

- -

- -

Für Firefox sind mehrere zusätzliche Startparameter verfügbar. Diese führen dazu, dass Firefox mit unterschiedlichen Kommanodzeilenargumenten gestartet wird.  Auf der Seite Command Line Options erhältst du eine Beschreibung dieser Parameter.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
StartoptionKommandozeilenparameter
Führe Firefox im Offline-Modus aus-offline
Führe Firefox im Safe-Mode aus-safe-mode
Starte Firefox mit einer Konsole-console
Starte eine neue Instanz-no-remote
- -

Hinweis: Es ist nicht möglich eine zweite Firefox-Instanz zu starten ohne den Parameter -no-remote anzugeben. Aus diesem Grund wird für dich, unabhängig davon ob diese Startoption gesetzt wurde, automatisch der Parameter -no-remote hinzugefügt, falls du versuchst den Profilmanager zu nutzen und erkannt wird, dass bereits eine Instanz von Firefox läuft.

- -

 

- -

Gesperrte Profile

- -

Some profiles may be shown as locked in the main window.   Such profiles are currently being used by an instance of Firefox.  If you attempt to perform any operation on a locked profile, you'll get a warning; if you choose to continue despite the warning, you may encounter errors or corrupt a profile.

- -

- -

It's strongly recommended to avoid operations on locked profiles.  If you need to do something with a locked profile, close the instance of Firefox which is using the profile first.

- -

 

- -

Sichern und Wiederherstellen von Profilen

- -

Der Profilmanager bietet zwei unterschiedliche Mechanismen an um Profile zu sichern und wiederherzustellen.

- -

- -

Backup folder

- -

Profile Manager has a local backup folder where it can manage profile backups.  This is the easiest way to backup and restore profiles. 

- -

To backup a profile:  select the profile you want to backup, and choose "backup to->backup folder" from the toolbar's Backup menu.  The profile will be backed up, and the backup will appear under the backups column in the main display:

- -

- -

Wiederherstellen eines Profils: select the backup in the main display, open the context menu, and choose "restore".  When you restore a profile, the backup is retained, so you can restore from the same backup at a later date.

- -

Löschen einer Sicherung:  select the backup in the main display, open the context menu, and choose "delete".

- -

Profilarchive

- -

Profile Manager can also backup to and restore from .zip archives.  Profile Manager does not track these backups in the UI, but using profile archives is an easy way to move profiles between machines.

- -

To backup a profile to an archive:  select the profile you want to backup, and choose "backup to->archive" from the toolbar's backup menu.  You'll be prompted for a name and location for the archive.

- -

To create a profile from a profile archive:  Select "restore from->archive" from the toolbar's backup menu.  You'll be prompted for the location of the archive, and then for the name of the profile you'd like to create from the archive.

- -

 

- -

Andere Operationen

- -

Ein rechtsklick auf ein Profil in der Profilliste öffnet ein Optionsmenü mit den folgenden Befehlen:

- - - -

 

- -

Zukünftige Erweiterungen

- - - -

 

- -

{{ languages( {"es" : "es/Administrador_de_perfiles" ,"zh-cn" : "zh-cn/Profile_Manager" } ) }}

diff --git "a/files/de/qualit\303\244tssicherung/stress_testing/index.html" "b/files/de/qualit\303\244tssicherung/stress_testing/index.html" deleted file mode 100644 index 0678872b51..0000000000 --- "a/files/de/qualit\303\244tssicherung/stress_testing/index.html" +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Qualitätssicherung/Stress_Testing -slug: Qualitätssicherung/Stress_Testing -tags: - - QA - - 'QA:Tools' - - Tools -translation_of: Archive/Mozilla/Stress_testing ---- -

Werkzeuge für Microsoft Windows

-

Consume.exe aus den Windows Server 2003 Resource Kit Toolskann verschiedene Ressourcen verwenden: physikalischer Speicher, CPU-Zeit, Speicherplatz und auch Kernel Pool. Obwohl es für  Win2003 gedacht ist, sollte es problemlos auf WinXP installiert werden können (Win2000-Kompatibilität ist unbekannt). Die einzige Schattenseite ist, dass Sie nicht angeben können, wie viel Rechenleistung prozentual gebraucht werden darf, sondern nur absolut. Also seine Sie gewarnt: Gebrauchen sie sich immer die "-time" Option oder Sie werden den Reset-Button früher drücken müssen als Sie wollen!

-

{{ languages( { "en": "en/QA/Stress_Testing", "fr": "fr/Assurance_qualit\u00e9/Tests_en_charge" } ) }}

diff --git a/files/de/quickstart_lokalisierung/index.html b/files/de/quickstart_lokalisierung/index.html deleted file mode 100644 index 5b9f007bff..0000000000 --- a/files/de/quickstart_lokalisierung/index.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: 'Lokalisierung: Kurz-Anleitung' -slug: Quickstart_Lokalisierung -tags: - - Anleitung - - Lokalisierung - - l10n - - Übersetzung -translation_of: Mozilla/Localization/Quick_start_guide ---- -

Willkommen bei der Mozilla Lokalisierung (kurz l10n)!

- -

Ob Du Deine eigene Lokalisierungs-Community für Deine Sprache im Mozilla-Projekt gründen oder einer bereits vorhandenen beitreten möchtest - hier bist Du richtig. Hier erfährst Du alles Wesentliche über die technischen Grundlagen des Mozilla l10n-Programms. Wir erklären Dir alle notwendigen Schritte, vom Aufsetzen einer entsprechenden Umgebung bis hin zum Testen und Veröffentlichen Deiner eigenen Lokalisierung. Dabei lernst Du alles über die verschiedenen Projekte, zu denen Du beitragen kannst und über die dafür benötigten Werkzeuge.

- -

Wir nehmen unsere Beispiele gerne aus dem Firefox-Projekt, weil dessen Lokalisierung vom gesamten Mozilla-Projekt am weitesten fortgeschritten ist. Kurz vor Ende dieser Anleitung solltest Du in der Lage sein, etwas an Deiner lokalen Firefox-Installation zu ändern und diese Änderung anschließend in der Oberfläche zu sehen. Am Ende wirst Du alle notwendigen Werkzeuge haben um mit dem Lokalisieren zu beginnen!

- -

Bitte denke daran, dass diese Anleitung nur eine Einweisung in die technischen Aspekte der Mozilla-Lokalisierung ist. Auf der Seite l10n-Prozess erfährst Du alles über den Gesamtprozess.

- -
-

Vorbereiten

-Technische Vorbereitungen vor der Lokalisierung.
- -
-

Übersetzen

-L10n Anleitungen zu Übersetzungs-Werkzeugen.
- -
-

Testen

-L10n Anleitungen zum Testen von Lokalisierungen.
- -
-

Freigeben

-Schritte zum Veröffentlichen Deiner Lokalisierung.
- -
Das sind die vier technischen Phasen des l10n Prozesses, für Details klicke auf die jeweiligen Links. Um einen Gesamtüberblick zu bekommen solltest Du die Anleitungen aller Phasen lesen.
- -

 

- -
Hinweis: Diese Anleitung wurde für zwei Gruppen von Mitwirkenden geschrieben: Für diejenigen, die eine neue Lokalisierungs-Community gründen möchten und für diejenigen, die einer vorhandenen Community beitreten möchten. Es ist wichtig zu wissen, welche Information zu welcher dieser beiden Vorhaben gehört. Um Dir zu helfen die wichtigsten Informationen herauszufiltern haben wir alle ausschließlich zum Gründen einer neuen Lokalisierungs-Community gehörenden Informationen in orange dargestellt. Alle Informationen die ausschließlich das Beitreten zu einer bestehenden Lokalisierungs-Community betreffen sind blauer Schrift dargestellt.
- -

 

- -

{{ Next("Localization_Quick_Start_Guide/Initial_setup") }}

diff --git a/files/de/quickstart_lokalisierung/initial_setup/index.html b/files/de/quickstart_lokalisierung/initial_setup/index.html deleted file mode 100644 index 42cbc9f7d7..0000000000 --- a/files/de/quickstart_lokalisierung/initial_setup/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: 'Lokalisierung: Vorbereitung' -slug: Quickstart_Lokalisierung/Initial_setup -tags: - - Lokalisierung - - Vorbereiten -translation_of: Mozilla/Localization/Quick_start_guide/Initial_setup ---- -

Eine Voraussetzung zum Lokalisieren ist der Zugriff auf Code und Werkzeuge und eine entsprechend konfigurierte lokale Arbeitsumgebung (d.h., auf Deinem Computer). Zudem musst Du herausfinden, ob für Deine Sprache bereits eine Lokalisierungs-Community existiert. An dieser Stelle beschäftigen wir uns mit den benötigten Benutzer-Konten sowie den verwendeten Werkzeugen und deren Konfigurationen, die für das Lokalisieren benötigt werden.

- -

Neu oder bereits vorhanden

- -

Als Erstes musst Du wissen, ob Du eine neue Lokalisierungs-Community gründen oder einer bereits vorhandenen beitreten möchtest. Davon hängt ab, welche Informationen in dieser Anleitung für Dich nützlich sind.

- -

Das hast Du zu tun:

- -

Prüfe im Localization Community Directory, ob zu Deiner Sprache bereits eine Community existiert.

- -
    -
  1. Wenn bereits eine Community existiert: Melde Dich dort und frag wie Du helfen kannst.
  2. -
  3. Wenn noch keine Community existiert: Sende eine e-Mail an die new-locales newsgroup für weitere Unterstützung.
  4. -
- -

Benutzer-Konten

- -

Es gibt eine Handvoll Benutzer-Konten, die Du zu Beginn Deiner Lokalisierungs-Arbeit kennen solltest. Sie sind nicht notwendig, um an der Lokalisierung mitzuwirken. Aber sie werden notwendig, wenn Du Deine Arbeiten veröffentlichen möchtest. Momentan sollst Du nur wissen, dass sie für Deine Arbeit wichtig sein werden. Unter diesen Benutzer-Konten werden Dein Code und Deine anderen Tätigkeiten gespeichert und sie werden Dir bei der Veröffentlichung Deiner Lokalisierungs-Arbeiten helfen.

- -
-
hg (Mercurial)
-
Mercurial ist eine Umgebung zum Verwalten von Software-Versionen und besteht hauptsächlich aus Mozilla Quellcode, es enthält aber auch lokalisierten Code für jede offizielle Mozilla Lokalisation. Du wirst es brauchen, um Mozilla Anwendungen zu lokalisieren. Eine Berechtigung zum Speichern ist zu Beginn Deiner Arbeit nicht notwendig in hg. Wenn Du etwas Erfahrung mit hg gesammelt hast, dann wirst Du vielleicht eine Speicher-Berechtigung haben wollen. Dazu besuchst Du bitte die Mozilla Commiter Page und folgst dem dort beschriebenen Prozess. Hier ist eine Beispiel-Meldung, die den Prozess verdeutlicht. Nutze diese Vorlage zum Ausfüllen Deiner hg Registrierungs-Anfrage. Lege eine Meldung zu Deinem neuen Lokalisierungs-Projekt in der new locales newsgroup an.
-
SVN
-
SVN ist eine Umgebung zum Verwalten von Software-Versionen, die Mozilla zum Betreiben seiner eigenen Quellcode-Webseiten und deren offiziellen Lokalisierungen verwendet. Auf dieser Wiki-Seite ist der Registrierungs-Prozess von SVN beschrieben. Die Anleitung für SVN Lokalisierer hilft Dir beim Lernen der wichtigsten SVN Kommandos für l10n. Lege eine Meldung zu Deinem neuen Lokalisierungs-Projekt in der new locales newsgroup an.
-
- -
-
Web-basierte L10n Werkzeuge
-
Darüber werden wir später ein paar Worte verlieren. Für den Moment reicht es zu wissen, dass Du zum Nutzen dieser Werkzeuge einen eigenen Benutzer-Zugang benötigst.
-
Mozilla LDAP
-
Du wirst einen LDAP Benutzer brauchen, wenn Du Deine Lokalisierung im Lokalisierungs-Verzeichnis von Mozilla registrieren möchtest. Lege eine Meldung zu Deinem neuen LDAP Zugang in der new locales newsgroup an.
-
Lokalisierungsspezifische Bugzilla Kompenente
-
Eine eigene Bugzilla "Component" für Deine Lokalisierung hilft uns beim Nachverfolgen Deines Lokalisierungs-Prozesses von den ersten Schritten bis zur Veröffentlichung. Zudem werden wir so informiert falls Du Probleme hast, die eindeutig Deiner Lokalisierungs-Arbeit zuzuordnen sind. Lege eine Meldung zu Deiner neuen Bugzilla Component in der new locales newsgroup an.
-
- -

Lokale Werkzeuge

- -

Ähnlich wie bei den Benutzer-Konten gibt es auch einige lokale Werkzeuge, die auf Deinem Computer installiert werden sollten. Diese Werkzeuge dienen dem Speichern Deiner Arbeit, dem Erzeugen von Mozilla Anwendungen, dem Erzeugen von Sprachpaketen und dem Testen.

- -
-
Hg (Mercurial)
-
Wie oben erwähnt nutzen wir Mercurial zum Pflegen von Mozilla Quellcode und lokalisiertem Code. Du wirst nicht nur ein Lokalisierungs-Repository zum Speichern Deiner Objekte brauchen, sondern es muss auch auf Deinem Rechner installiert und konfiguriert sein. Hier findest Du alles, was Du zum Installieren und Konfigurieren von Mercurial wissen musst.
-
- -
-
compare-locales
-
compare-locales ist ein Python Skript zum Prüfen Deiner Arbeit, ohne dass Firefox oder eine andere Anwendung laufen muss. Installationsanweisungen findest Du hier.
-
L10n checks
-
L10n checks ist ein weiteres Python Skript zum Prüfen Deiner Arbeit, ohne dass Firefox oder eine andere Anwendung laufen muss. Installationsanweisungen findest Du hier.
-
autoconf 2.13
-
autoconf ist ein Hilfsmittel zum manuellen Erzeugen von Mozilla Anwendungs-Builds und Sprachpaketen. Wir verwenden Version 2.13 und höher für diese Builds. Installationsdateien und -anleitungen findest Du hier.
-
wget
-
wget ist ein Kommandozeilen-Werkzeug zum Laden von Dateien über Internet-Protokolle. Wir nutzen es zum Laden von Dateien aus Repositories. Installationsdateien und -anleitungen findest Du hier.
-
Perl
-
Perl ist eine Programmiersprache, mit der Du Mozilla Anwendungs-Builds und Sprachpakete erstellen kannst. Installationsdateien und -anleitungen findest Du hier.
-
Python
-
Python ist eine Programmiersprache, in der viele unserer L10n Test-Skripte geschrieben sind. Installationsdateien und -anleitungen findest Du hier.
-
Locale Switcher oder Quick Locale Switcher
-
Sowohl Locale Switcher als auch Quick Locale Switcher sind Add-Ons für Mozilla Anwendungen. Eines von beiden brauchst Du zum Anzeigen Deiner Lokalisierungen in einer Mozilla Anwendung. Du kannst sie über den Add-On Manager im Firefox Browser installieren oder über diese Links.
-
Einen guten, unicode-basierten Text-Editor
-
Hier einige Empfehlungen: - -
-
GNU make
-
Make ist ein Werkzeug zur Versions-Verwaltung von ausführbaren Dateien. Du findest die Version 3.79.1 oder höher hier. Andere Varianten von make funktionieren leider nicht.
-
- -

Ende der Vorbereitungen

- -

Nun, nachdem alle Vorbereitungen getroffen sind, ist es Zeit für den schönsten Teil: Übersetzen!

- -

{{ PreviousNext("Localization_Quick_Start_Guide", "Localization_Quick_Start_Guide/Translation_phase") }}

diff --git a/files/de/quickstart_lokalisierung/translation_phase/index.html b/files/de/quickstart_lokalisierung/translation_phase/index.html deleted file mode 100644 index e1bddf447d..0000000000 --- a/files/de/quickstart_lokalisierung/translation_phase/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: 'Lokalisierung: Übersetzung' -slug: Quickstart_Lokalisierung/Translation_phase -tags: - - Lokalisation - - Werkzeuge - - Übersetzung -translation_of: Mozilla/Localization/Quick_start_guide/Translation_phase ---- -

Glückwunsch zur erfolgreichen Vorbereitung Deiner Lokalisierung! Als Belohnung für Deine Mühen kommen wir nun zum eigentlichen Grund Deiner Mitarbeit: Mozilla Projekte lokalisieren. "Wo ist da die Belohnung?" fragst Du Dich natürlich!

- -

Ab hier unterteilt sich der technische Part des Prozesses. Bei Mozilla lokalisieren wir viele verschiedene Projekte, die in drei Gruppen unterteilt werden können. Jede dieser Gruppen benötigt einen anderen Typ l10n Werkzeug zum, Du ahnst es, Lokalisieren des Projekts. Die l10n Werkzeuge sollen Dir helfen, den lokalisierten Inhalt von Version zu Version zu pflegen und bereits lokalisierte Objekte beim Lokalisieren neuer Inhalte zu beeinflussen.

- -

Wir identifizieren hier diese Gruppen von Projekten und die mit ihnen verbundenen l10n Werkzeuge. Auf diesem Weg werden wir Dich auf die technischen Grundlagen-Tutorien zum Lokalisieren der jeweiligen Projekt-Gruppe hinweisen. Es ist an Dir und Deiner Lokalisierungs-Community herauszufinden, welche l10n Werkzeuge am besten Euren Bedürfnissen entsprechen. Mit zunehmender Erfahrung möchtest Du vielleicht unabhängig von den von Mozilla entwickelten l10n Werkzeugen lokalisieren, auch das werden wir hier behandeln.

- -

Projekte

- -

Die Mozilla-Projekte und ihre l10n Abläufe werden in diese Gruppen unterteilt: Mozilla Anwendungen, Mozilla Webseiten und Add-Ons. Weiter unten findest Du eine Liste mit Mozilla-Projekten, ihren zugeordneten l10n Werkzeugen und Links zu Tutorien mit Beschreibungen zu den jeweiligen Abläufen.

- -

Mozilla Anwendungen

- -

Du bist also am Lokalisieren von Mozilla Anwendungen interessiert. Jedes l10n Werkzeug folgt einem anderen Ablauf zum Lokalisieren von Mozilla Anwendungs-Projekten. Zu jedem unten angegebenen l10n Werkzeug haben wir einen Link zu einem Einweisungs-Tutorial eingefügt. Folge den Tutorien und entscheide selbst, welches l10n Werkzeug Deinen speziellen Bedürfnissen entspricht.

- -

Das sind die l10n Werkzeuge, die wir zum Lokalisieren von Mozilla Anwendungen nutzen:

- -
-
Pootle
-
Ein benutzerfreundliches Web-Portal basierend auf dem Translate Toolkit API. Diese Anwendung enthält Arbeitsbereiche zum Übersetzen und Überprüfen von Strings und Projekt-Dashboards. Siehe Beispiel für die Lokalisierung von Mozilla Anwendungen mit Pootle.
-
- -
-
Koala
-
Ein l10n Add-On für den nicht netzwerkfähigen Komodo Edit Text-Editor.
-
Mozilla Translator
-
Ein nicht netzwerkfähiges, Java-basiertes l10n Werkzeug zum Übersetzen, welches die eigenen Repositories integriert. Schaue auf der Mozilla Translator (MT) Download Seite zum Herunterladen eines MT Clients. Version 5.26 ist die aktuelle Version.
-
Virtaal
-
Eine nicht netzwerkfähige Version von Pootle, ebenfalls auf dem Translate Toolkit API basierend.
-
- -

Die folgenden Mozilla Anwendungen wurden mit den oben vorgestellten l10n Werkzeugen lokalisiert:

- -
-
Firefox
-
Der preisgekrönte Firefox® Web Browser ist sicher, schnell und hat neue Features, die Deine Art der Web-Nutzung verändern werden. Siehe diese Liste der kritischsten zu lokalisierenden Strings in Firefox und ebenso die Beschreibung um zu verstehen, wie diese organisiert sind.
-
Thunderbird
-
Geniesse sicheres, schnelles und einfaches Mailen nach Art von Mozilla. Der Thunderbird® E-Mail Client enthält intelligente Spam-Filter, leistungsfähige Suchmöglichkeiten und individuell anpassbare Ansichten.
-
Seamonkey
-
SeaMonkey® ist die Alles-in-Einem Anwendung, früher bekannt als die "Mozilla Application Suite", mit einem Web Browser, einem E-Mail und einem Newsgroups Client, einem HTML-Editor, Werkzeugen für Web-Entwickler und einem IRC Chat Client.
-
Firefox Mobile
-
Durch das Hinzufügen von Firefox® zu Deinem Smartphone hast Du Zugriff auf unzählige Web-Inhalte und Du kannst Deine bevorzugten Firefox Features überall geniessen.
-
Lightning
-
Lightning ist eine beliebte Erweiterung für Kalender-, Terminverwaltungs- und Aufgabenplanungs-Anwendungen.
-
- -

Falls für Deine Sprache ein hg Repository im Mozilla-Netzwerk existiert, kannst Du Deine aktuellen Lokalisierungsarbeiten in den l10n Dashboards verfolgen.

- -
-

Hinweis: Wenn Du eine neue Lokalisierung startest und Dich für ein Offline-Werkzeug zum Lokalisieren von Mozilla Anwendungen entscheidest, dann solltest Du Dich mit der Bedienung von Mercurial (hg) vertraut machen. Lese hierfür das hg Anwender-Tutorial.

-
- -

Mozilla Webseiten

- -

Du bist also am Lokalisieren von Mozilla Webseiten interessiert. Jedes l10n Werkzeug folgt einem anderen Ablauf zum Lokalisieren von Mozilla Webprojekten. Zu jedem unten angegebenen l10n Werkzeug haben wir einen Link zu einem Einweisungs-Tutorial eingefügt. Folge den Tutorien und entscheide selbst, welches l10n Werkzeug Deinen speziellen Bedürfnissen entspricht.

- -

Das sind die l10n Werkzeuge, die wir zum Lokalisieren von Mozilla Webprojekten nutzen:

- -
-
Verbatim
-
Eine angepasste, von Mozilla betriebene Pootle-Version zum Lokalisieren von Mozilla Webseiten, speziell von Mozilla Mitmach-Kampagnen. Zudem beinhaltet es Funktionen zur Projektverwaltung, um den Projekt-Fortschritt zu kontrollieren. Besuche Verbatim hier.
-
Pontoon
-
Ein Web-basiertes What-You-See-Is-What-You-Get (WYSIWYG) l10n Werkzeug zum Lokalisieren von Mozilla Webseiten innerhalb der Seite selbst. Besuche Pontoon hier. Bitte beachte, dass Pontoon zur Zeit noch nicht für alle Webprojekte verfügbar ist.
-
- -

Die folgenden Mozilla Webprojekte wurden mit den oben vorgestellten l10n Werkzeugen lokalisiert:

- -
-
mozilla.org
-
Der Einstieg für alle.
-
addons.mozilla.org (AMO)
-
Ein Portal für alle, die Add-Ons für ihre Mozilla Anwendungen finden wollen. Lese die Anleitungen zum Lokalisieren von AMO direkt vom AMO Team.
-
developer.mozilla.org (MDN)
-
Wo Du gerade bist! Helfe beim Lokalisieren der MDN Benutzeroberfläche für alle in Deiner Region.
-
support.mozilla.com (SUMO)
-
Ein Portal für alle, die technische Unterstützung für ihre Mozilla Anwendungen brauchen. Helfe beim Lokalisieren der SUMO Benutzeroberfläche für alle in Deiner Region.
-
Mozilla Mitmach-Kampagnen
-
Individuelle Mozilla Kampagnen zum Gewinnen neuer Mitwirkender.
-
hacks.mozilla.org
-
Für alle, die an den technisch tiefer gehenden Sachen interessiert sind, die die Anwender mit Mozilla Firefox und dem Open Web so machen.
-
In-product Seiten
-
Eine Sammlung von Seiten zum Kommunizieren mit den Anwendern und zum Informieren der Anwender bei deren Einstieg in Mozilla Anwendungen.
-
- -

Wenn Du Deine eigene Lokalisation anlegst, dann gibt es eine Fülle von Mozilla Webseiten die lokalisiert werden müssen bevor Deine Arbeit eine offiziell freigegebene Lokalisation wird. Siehe Liste der lokalisierten Mozilla Webseiten.

- -

Ausserdem solltest Du mehr Informationen über das Lokalisieren von Mozilla Webprojekten lesen.

- -
-
 
-
- -

Add-Ons

- -

l10n für Add-Ons wird von mindestens zwei weiteren Organisationen/Teams namens Babelzilla und Adofex durchgeführt. Beide haben umfangreiche Projekte und l10n Werkzeuge aufgebaut, zum Lokalisieren aller eigenen Add-ons und aller Add-Ons von Drittanbietern für Mozilla Anwendungen. Besuche ihre Webseiten um zu sehen, wie Du Dich einbringen kannst.

- - - -

Werkzeug-unabhängige Lokalisation

- -

Du bist ein Meister der Kommandozeilen? Du bevorzugst Unicode Text-Editoren vor allen anderen Anwendungen auf diesem Planeten? Dein Liebling ist ein CAT (computer-assisted translation) Werkzeug wie OmegaT? Dann bist Du vielleicht nicht interessiert daran, eines der oben vorgestellten Werkzeuge für Deine Lokalisierungen zu benutzen. Wenn das der Fall ist,  dann ist dieser Abschnitt für Dich!

- -

Für Lokalisierer, die das Lokalisieren ohne spezielle Werkzeuge bevorzugen ist der Ablauf zum Lokalisieren von Mozilla Anwendungen und Mozilla Webseiten grundsätzlich gleich. Dieses Tutorial sollte Dich mit allen benötigten technischen Informationen zum Erhalt und zur Pflege Deiner Unabhängigkeit versorgen.

- -

Produktisierung

- -

Produktisierung ist ein unverzichtbarer Teil beim Lokalisieren von Mozilla Produkten. In diesem Schritt implementierst Du die zu verwendenden Plug-Ins für die Suche, die Content- und Protokoll-Steuerung, Lesezeichen und die Links zu den empfohlenen Stellen in den in-product Seiten, die die Anwender in Deiner Sprache zu den jeweiligen Mozilla Produkten benötigen.

- -

Dieses Tutorial geht mit Dir die einzelen Produktisierungs-Schritte durch, also durch das Anlegen von Produktisierungs-Patches und deren Weiterleitung an die Qualitätssicherung.

- -

{{ PreviousNext("Localization_Quick_Start_Guide/Initial_setup", "Localization_Quick_Start_Guide/QA_phase") }}

diff --git a/files/de/rdf/index.html b/files/de/rdf/index.html deleted file mode 100644 index d110399eae..0000000000 --- a/files/de/rdf/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: RDF -slug: RDF -tags: - - RDF -translation_of: Archive/Web/RDF ---- -

Resource Description Framework (RDF) ist eine Familie von Spezifikationen für ein Metadaten-Modell, das meist als XML-Anwendung implementiert ist. Die verschiedenen RDF Spezifikationen werden durch das World Wide Web Consortium (W3C) gewartet.

-

Das RDF-Metadaten-Modell basiert auf der Idee, Aussagen über Ressourcen in der Form eines Subjekt-Prädikat-Objekt-Ausdrucks zu machen, welchen man in der RDF-Terminologie als Triple bezeichnet. Das Subjekt ist die Ressource, das zu beschreibende "Ding". Das Prädikat ist ein Merkmal oder Aspekt dieser Ressource, und meist Ausdruck einer Beziehung zwischen dem Subjekt und dem Objekt. Das Objekt ist das Objekt der Beziehung oder der Wert dieses Merkmals.

- -

Dokumentation

Entwicklungen der Mozilla RDF Engine (en)
Diese Präsentation zeigt neue Entwicklungen in Mozillas RDF Engine. Es gibt Pläne die RDF-API als öffentlichen Webinhalt freizugeben, sowie Performance und Genauigkeit zu verbessern .
Was ist RDF
Tim Brays Einführung in das Resource Description Framework auf XML.com.
RDF in Mozilla FAQ
Häufig gestellte Fragen zum Resource Description Framework in Mozilla.
RDF in fünfzig Worten oder weniger
Eine schnelle Einführung in das Resource Description Framework.
RDF Datenquellen Tutorial
Ein Artikel, der die Zutaten für eine systemeigene und clientseitige Datenquelle liefert, die mit Mozillas RDF Implementierung zusammenarbeitet.
Füllen der In-Memory Datenquelle
Benutzen von XPCOM Aggregation mit der In-Memory-Datenquelle.

Alle anzeigen...

Community

  • Mozillas RDF Foren:

{{ DiscussionList("dev-tech-rdf", "mozilla.dev.tech.rdf") }}

Tools

Verwandte Themen

XML
-

{{ languages( { "en": "en/RDF", "es": "es/RDF", "fr": "fr/RDF", "it": "it/RDF", "ja": "ja/RDF", "ko": "ko/RDF", "pl": "pl/RDF", "pt": "pt/RDF", "ru": "ru/RDF" } ) }}

diff --git a/files/de/rhino/index.html b/files/de/rhino/index.html deleted file mode 100644 index 2505563c91..0000000000 --- a/files/de/rhino/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Rhino -slug: Rhino -translation_of: Mozilla/Projects/Rhino ---- -

Image:rhino.jpg

-

Rhino ist eine Open-Source-Implementierung von JavaScript, die vollständig in Java entwickelt wurde. Sie wird typischerweise in Java-Anwendungen eingebettet, um Endanwendern Skripting zu ermöglichen. In J2SE 6 wird Rhino als Standard-Scripting-Engine mitgeliefert.

-

Rhino Downloads

-

Wie man an Sourcen und Binaries kommt. 

-

Rhino Dokumentation

-

Informationen zu Rhino für das Schreiben von Skripten und das Einbetten in Applikationen.

-

Rhino Hilfe

-

Ein paar Resourcen, für den Fall, dass man nicht mehr weiter kommt.

-

{{ languages( { "ja": "ja/Rhino" } ) }}

diff --git a/files/de/rhino_documentation/index.html b/files/de/rhino_documentation/index.html deleted file mode 100644 index c664463d0d..0000000000 --- a/files/de/rhino_documentation/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Rhino Dokumentation -slug: Rhino_documentation -translation_of: Mozilla/Projects/Rhino/Documentation ---- -

Information zu Rhino für das Schreiben von Skripten und das Einbetten in Appliketionen.

-

Allgemein

-
-
- Überblick
-
- Ein Überblick über die Sprache JavaScript und Rhino.
-
- Lizenz
-
- Rhino Lizenzinformationen.
-
- Vorraussetzungen und Einschränkungen
-
- Was man braucht, um Rhino zu nutzen; was Rhino nicht kann.
-
- Downloadarchiv
-
- Ältere Versionen von Rhino mit ihren Releasenotes
-
- Optimierungen
-
- Details zu den verschiedenen Optimierungsstufen.
-
- FAQ
-
- Antworten zu häufig über Rhino gestellten Fragen.
-
- Rhino Historie
-
- Historie des Tiers.
-
-

Schreiben von Skripten

-
-
- Scripting Java
-
- How to use Rhino to script Java classes.
-
- Scripting Java
-
- How to use Rhino to script Java classes (an older treatment).
-
- Performance Hints
-
- Some tips on writing faster JavaScript code.
-
-

JavaScript Tools

-
-
- Rhino Shell
-
- Interactive or batch execution of scripts.
-
- JavaScript Debugger
-
- Debugging scripts running in Rhino.
-
- JavaScript Compiler
-
- Compiling scripts into Java class files.
-
- Running the Rhino tests
-
- Running the JavaScript test suite with Rhino.
-
-

Embedding Rhino

-
-
- Embedding tutorial
-
- A short tutorial on how to embed Rhino into your application.
-
- API javadoc Reference (Link broken?  Try this at Jarvana.)
-
- An annotated outline of the programming interface to Rhino (tip only).
-
- Scopes and Contexts
-
- Describes how to use scopes and contexts for the best performance and flexibility, with an eye toward multithreaded environments.
-
- Serialization
-
- How to serialize JavaScript objects and functions in Rhino.
-
- Runtime
-
- A brief description of the JavaScript runtime.
-
- Small Footprint
-
- Hints for those interested in small-footprint embeddings.
-
- Examples
-
- A set of examples showing how to control the JavaScript engine and build JavaScript host objects.
-
- Using Rhino with Bean Scripting Framework (BSF)
-
- How to use Rhino with apps that support BSF (Bean Scripting Framework) from the Apache Jakarta project.
-
-

External references

-
-
- Scripting Languages for Java
-
- An article comparing and contrasting Rhino and Jython.
-
-

Rhino contributors

-

Interested in contributing to Rhino? Check out the Rhino Wish List.

diff --git a/files/de/richtlinien_zum_schreiben_eines_bugreports/index.html b/files/de/richtlinien_zum_schreiben_eines_bugreports/index.html deleted file mode 100644 index a62c84c82c..0000000000 --- a/files/de/richtlinien_zum_schreiben_eines_bugreports/index.html +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Richtlinien zum Schreiben eines Bugreports -slug: Richtlinien_zum_Schreiben_eines_Bugreports -tags: - - QA - - Qualitätssicherung -translation_of: Mozilla/QA/Bug_writing_guidelines ---- -
Wenn Sie Hilfe mit Mozilla-Software benötigen (zum Beispiel Firefox oder Thunderbird), nutzen Sie bitte die Supportseiten. Ändern Sie diese Seite nicht. - -

Wenn Sie noch nie einen Bugreport verfasst haben, möchten Sie vielleicht Hilfe von erfahrenen Mitarbeitern erhalten. Schauen Sie dazu auf die Community-Links auf der Seite zur Qualitätssicherung. Wenn Sie einen Firefox-Bug melden wollen, können Sie auch im #firefox.de IRC-Channel Hilfe suchen.

-
- -

Grundsätze

- -

Genau beschriebene Fehlermeldungen werden schneller behoben. Dieser Leitfaden erklärt, wie Sie solche Berichte schreiben sollten.

- - - -

Vorbereitungen

- -
    -
  1. Reproduzieren Sie Ihren Bug, indem Sie die neueste Version der Software benutzen, um zu sehen, ob der Bug schon behoben wurde.
  2. -
  3. Suchen Sie in Bugzilla, um zu sehen, ob Ihr Bug schon gemeldet wurde.
  4. -
- -

Einen neuen Bug melden

- -

Wenn Sie den Bug in einer neuen Version reproduziert haben und noch niemand den Bug gemeldet hat, dann:

- -
    -
  1. Wählen Sie "Einen neuen Bug melden"
  2. -
  3. Falls Sie noch keinen Bugzilla-Account haben, erstellen Sie hier einen
  4. -
  5. Loggen Sie sich ein
  6. -
  7. Wählen Sie das Produkt, in welchem Sie den Bug gefunden haben
  8. -
  9. Füllen Sie das Formular aus. Hier ist eine kleine Hilfe, um die Einzelheiten zu verstehen:
  10. -
- -

Component: In welchem Teil der Software besteht der Bug?

- -

Dieses Feld wird benötigt. Klicken Sie auf "Component" um eine Beschreibung aller Komponenten zu sehen. Falls keins angebracht scheint, suchen Sie nach einer "General" Komponente.

- -

Version: Das Feld zeigt die früheste Version, mit der der Bug nachgewiesen wurde. Entwickler benötigen diese Information, um die Code-Änderung, die das Problem verursacht, aufzuspüren. Außderdem dient die Versions-Information der Unterscheidung von Bugs mit unterschiedlichen Ursachen, aber ähnlchen oder gar gleichen Symptomen: Bugs, die defenitiv mit unterschiedlichen Produkt-Versionen auftraten, haben mit großer Sicherheit tatsächlich unterschiedliche Ursachen und sind keine DUPLICATEs.

- -

OS: Auf welchem Betriebssystem haben Sie den Bug gefunden? (z.B. Linux, Windows XP, Mac OS X)

- -

Wenn Sie wissen, dass der Bug auf mehreren Betriebssystemen besteht, klicken Sie "All". Wenn ihr Betriebssystem nicht aufgelistet ist, klicken Sie auf "Other".

- -

Summary: Wie würden Sie den Bug beschreiben, möglichst in 60 oder weniger Buchstaben?

- -

Eine gute Kurzfassung sollte eine Bug-Meldung schnell und unverwechselbar beschreiben. Sie sollte das Problem erklären, nicht Ihre vorgeschlagene Lösung.

- - - -

Description: Die Details ihrer Bug-Meldung, einschließlich:

- -

Overview: Detailliertere Beschreibung der Zusammenfassung.

- -
Drag-selecting any page crashes Mac builds in the NSGetFactory function.
- -

Steps to Reproduce: Kleine, einfache Schritte, um den Bug nachzumachen. Mit Hinweisen zum Setup.

- -
1) View any web page. (I used the default sample page,
-resource:/res/samples/test0.html)
-
-2) Drag-select the page. (Specifically, while holding down
-the mouse button, drag the mouse pointer downwards from any
-point in the browser's content region to the bottom of the
-browser's content region.)
-
- -

Actual Results: Was die Applikation macht, nachdem Sie die oben aufgeführten Schritte durchgeführt haben.

- -
The application crashed.
- -

Expected Results: Was die Applikation hätte tun sollen, wenn der Bug nicht da wäre.

- -
The window should scroll downwards. Scrolled content should be selected.
-(Or, at least, the application should not crash.)
-
- -

Build Date & Platform: Datum und Betriebssystem auf dem die Applikation lief, als sie den Bug zum ersten Mal gesehen haben.

- -
Build 2006-08-10 on Mac OS 10.4.3
- -

Additional Builds and Platforms: Falls Sie wissen, dass der Bug auch in anderen Betriebssystemen (oder Browsern) auftritt (oder nicht), schreiben Sie dies dazu.

- -
Doesn't Occur On Build 2006-08-10 on Windows XP Home (Service Pack 2)
- -

Additional Information: Andere wichtige Informationen.

- -

Für Bugs, die den Browser abstürzen lassen:

- - - -
Date/Time:      2006-12-26 12:15:20.089 -0500
-OS Version:     10.4.8 (Build 8L2127)
-Report Version: 4
-
-Command: firefox-bin
-Path:    /Applications/Firefox.app/Contents/MacOS/firefox-bin
-Parent:  WindowServer [71]
-
-Version: 2.0.0.1 (2.0.0.1)
-
-PID:    114
-Thread: 0
-
-Exception:  EXC_BAD_ACCESS (0x0001)
-Codes:      KERN_PROTECTION_FAILURE (0x0002) at 0x000000ca
-
-Thread 0 Crashed:
-0   libxpcom_core.dylib 	0x0186329b AppendUTF8toUTF16(char const*, nsAString_internal&) + 31
-1   libxpcom_core.dylib 	0x01822916 nsTextFormatter::smprintf_free(unsigned short*) + 3248
-... (many many more lines like this) ...
- -

Add an attachment: Sie können relevante Dateien an ihre Bug-Meldung anfügen. Debugging-Informationen, die länger als 20 Zeilen sind, sollten auf diesem Weg geliefert werden. Sollten Sie eine HTML-Datei haben, die diesen Bug beschreibt, sollten Sie sie anfügen. Sie können anfänglich nur eine Datei anfügen. Sollte ihre Meldung mehr Dateien angehängt haben, besuchen Sie den neu hinzugefügten Bug später noch einmal, um das zu tun. Hängen Sie zuerst untergeordnete Dateien an (z.B. Bilder) und ändern Sie anschließend die HTML-Datei, sodass die Demo unabhängig ist. Fragen Sie, bevor Sie mehr als 5 Dateien anhängen.

- -

Prüfen Sie Ihren Report zweimal auf Fehler und drücken Sie dann "Commit". Ihre Bug-Meldung wird nun in die Bugzilla-Datenbank kommen.

- -
-

Informationen zum Originaldokument

- - -
- -

 

diff --git a/files/de/sandbox/index.html b/files/de/sandbox/index.html deleted file mode 100644 index 2f88f3ca0f..0000000000 --- a/files/de/sandbox/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Junk -slug: Sandbox -translation_of: Sandbox ---- -

Hallo Welt1

- -

HTML Inhalt1

- -

Hallo Welt!

- -

<p>Das ist ein <i>unglaublicher1</i>Paragraph</p>

- -

 

- -

Dies ist eine exmperimentelle Seite für Leute, die als MDN Beiträger starten.

- -
-

CSS Inhalt1

-
- -
-
-
-
1  h1{
-2  color: yellow;
-3  }
-4
-5  p{
-6  font-size: low;
-7  }
-
-
-
- -

 

- -

Testvorlage

- -

HTML Inhalt

- -
1  <canvas id='the_canvas'></canvas>
- - -

mathvariant-Examples

- -

HTML-Inhalt

- -
normal (Standardwert) ; Beispiel
-bold ; Beispiel
-italic ; Beispiel
-bold-italic ; Beispiel
-double-struck ; Beispiel
-bold-fraktur ; Beispiel
-script ; Beispiel
-bold-script ; Beispiel
-fraktur ; Beispiel
-sans-serif ; Beispiel
-bold-sans-serif ; Beispiel
-sans-serif-italic ; Beispiel
-sans-serif-bold-italic ; Beispiel
-monospace ; Beispiel
-initial ; مثال
-tailed ; مثال
-looped ; مثال
-stretched ; مثال
-
- -

{{ EmbedLiveSample('mathvariant-Examples') }}

diff --git a/files/de/social_api/index.html b/files/de/social_api/index.html deleted file mode 100644 index 38ad560b63..0000000000 --- a/files/de/social_api/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Social API -slug: Social_API -translation_of: Archive/Social_API ---- -

Die Social API macht es einfacher für Webentwickler, soziale Dienste in den Webbrowser zu integrieren. Ist ein Dienstanbieter einmal für Firefox implementiert, so kann der Browser benutzerdefinierte Steuerelemente und Informationen zu einem konkreten Dienst anzuzeigen. Die folgenden Artikel erklären, wie man einen solchen Anbieter implementiert.  

-
-

Anmerkung:  Viele der Inhalte der hier aufgeführten Unterseiten wurden entworfen, aber noch nicht in diesen Baum migriert; Temporär sind diese hier aufzufinden.

-
-
-
-

Social API Dokumentation

-
-
- Social API Glossar
-
- Stellt Definitionen der wichtigsten Begriffe bereit, die du wissen musst, um die Social API zu benutzen.
-
- Social API und Anleitung für soziale Dienste
-
- Vorstellung und Einführung in die Social API und zugehörige Dienste.
-
- Manifest sozialer Dienste
-
- Eine Beschreibung des (TBD: und Anleitung für die Erstellung) Manifests notwendig
-
- Worker API sozialer Dienste
-
- Eine Referenz zur Worker API sozialer Dienste.
-
- Social service content API: MozSocial
-
- Eine Referenz für die social service content API, die vom 
-
- {{domxref("navigator.MozSocial")}} Objekt bereitgestellt wird. 
-
-
-
-
- Social service widgets
-
- Eine Anleitung für Widgets, die von sozialen Diensten bereitgestellt werden.
-
- Implementieren von Chatfunktionalität
-
- Eine Anleitung für die Implementiereung von Chatfunktionalitäten mit der Social API.
-
-

Alle anzeigen...

-
-
-

Hilfe von der Community erhalten

-

Du brauchst Hilfe bei einem Problem, dass die Social API betrifft und kannst keine Lösung in der Dokumentation finden?

-
    -
  • Stelle deine Frage im Mozilla IRC channel: #socialdev
  • -
-

Vergiss die netiquette nicht...

-

 

-

Tools und Demos

- -

Alle anzeigen...

- - -
-
-

 

diff --git a/files/de/spidermonkey/build_documentation/index.html b/files/de/spidermonkey/build_documentation/index.html deleted file mode 100644 index 9502dcd4be..0000000000 --- a/files/de/spidermonkey/build_documentation/index.html +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: SpiderMonkey Build Documentation -slug: SpiderMonkey/Build_Documentation -tags: - - Build Dokumentation - - Guide - - Linux Build - - SpiderMonkey - - Windows Build -translation_of: Mozilla/Projects/SpiderMonkey/Build_Documentation ---- -
{{SpiderMonkeySidebar("General")}}
- -

SpiderMonkey erstellen

- -

Befolgen Sie diese Schritte um den aktuellsten SpiderMonkey Build zu erstellen.

- -

Bevor Sie jedoch beginnen, stellen Sie sicher, dass sich die richtigen Build Werkzeuge auf Ihrem Computer befinden: Linux, Windows, Mac, others. Sollten Sie eine ältere Version als 28 erstellen wollen, benötigen Sie zusätzlich NSPR.

- -

Selbstverständlich benötigen Sie auch den SpiderMonkey Quellcode.

- -

Non-developer (optimierter) Build

- -

Befolgen Sie diese Schritte wenn Sie SpiderMonkey einfach nur installieren oder es als Bibliothek nutzen wollen. (Wenn Sie SpiderMonkey an sich verbessern wollen, sollten Sie zusätzlich einen Developer/Debug-Build wie unten beschrieben erstellen.)

- -
cd js/src
-autoconf-2.13
-
-# This name should end with "_OPT.OBJ" to make the version control system ignore it.
-mkdir build_OPT.OBJ
-cd build_OPT.OBJ
-../configure
-# Use "mozmake" on Windows
-make
-
- -

Beachten Sie, dass autoconf version 2.13 benötigt wird. Keine ältere Version wird funktionieren. Das MozillaBuild Paket für Windows beeinhaltet autoconf 2.13.

- -
-

Hinweis: Sollten Sie einen Mac nutzen und eine ähnliche Fehlermeldung wie folgendes erhalten:

- -

"checking whether the C compiler (gcc-4.2  ) works... no
- configure: error: installation or configuration problem: C compiler cannot create executables.
"

- -

Dann können Sie versuchen es so zu konfigurieren :

- -
CC=clang CXX=clang++  ../configure
-
- -

Dies erstellt eine ausfühbare Datei mit Namen js im Verzeichnis build-release/dist/bin. Sie können es mit dist/bin/js --help testen,  welches eine Hilfeseite anzeigt. An diesem Punkt sind Sie bereit die Shell auszuführen und zu testen.

- -

Auf Mac, Linux, oder UNIX können Sie SpiderMonkey auf Ihrem System mit dem zusätzlichen Befehl make install installieren. Dies installiert die geteilte Bibliothek nach /usr/local/lib, die C-Header-Dateien nach /usr/local/include, und die ausführbare js  nach /usr/local/bin.

- -

Developer (debug) Build

- -

Um SpiderMonkey zu debuggen und zu verbessern ist es das Beste beide, einen Debug-Build  (für alltägliches debugging) und einen optimierten Build (zum Testen der Performance), in separaten Build Verzeichnissen zu haben. Daher sollten Sie zusätzlich zu den oben genannten Schritten auch einen Debug-Build mit den folgenden Schritten erstellen:

- -
cd js/src
-autoconf-2.13
-
-# This name should end with "_DBG.OBJ" to make the version control system ignore it.
-mkdir build_DBG.OBJ
-cd build_DBG.OBJ
-../configure --enable-debug --disable-optimize
-# Use "mozmake" on Windows
-make
-
- -

Sie können auch Debug-Builds von SpiderMonkey mit der Option JS_GC_ZEAL  erstellen, die SpiderMonkey eine neue integrierte Funktion hinzufügt, mit der Sie eine eifrige Garbage Collection konfigurieren können. Dies ist nützlich um Speicherlecks und andere speicherbezogene Probleme zu beheben. Siehe JS_SetGCZeal() für weitere Details.

- -

Für eine Liste anderer verfügbarer Build-Optionen geben Sie Folgendes ein (vorausgesetzt, das aktuelle Arbeitsverzeichnis ist eines der oben erstellten Build-Verzeichnisse):

- -
../configure --help
-
- -

Windows Builds

- -
-

Seit Version 28, sind threadsafe Builds Standard und sollten auf allen POSIX-Plattformen sofort einsatzbereit sein. Daher sollten die folgenden Anweisungen nur relevant sein, wenn Sie unter Windows arbeiten oder eine ältere Version von SpiderMonkey kompilieren.

-
- -

Die MozillaBuild-Batch-Datei, die Sie zum Öffnen Ihrer Shell verwendet haben (z. B. start-shell-msvc2013.bat oder start-shell-msvc2013-x64.bat), bestimmt, ob die Compiler-Toolchain auf 32-Bit- oder 64-Bit-Builds abzielt. Um einen 64-Bit-Build zu erstellen beachten Sie, dass Sie mit --target=x86_64-pc-mingw32 --host=x86_64-pc-mingw32 konfigurieren müssen. 

- -

Da die POSIX NSPR-Emulation für Windows nicht verfügbar ist, muss eine funktionierende Version von NSPR für Ihren Build verfügbar sein. Die einfachste Option ist die Konfiguration mit --enable-nspr-build. Diese Konfigurationsoption erstellt die In-Tree-Version von NSPR, die Sie wahrscheinlich verwenden möchten. Da SpiderMonkey neuere NSPR-Symbole verwendet, funktioniert der mit Ihrem Betriebssystem ausgelieferte NSPR wahrscheinlich nicht.

- -

Wenn --enable-nspr-build nicht funktioniert, teilen Sie configure explizit mit, wo es NSPR findet, indem Sie die Konfigurationsoptionen -with-nspr-cflags und --with-nspr-libs verwenden. Angenommen, Ihr lokaler NSPR wurde in C:/mozilla-build/msys/local installiert:

- -
./configure --with-nspr-cflags="-IC:/mozilla-build/msys/local/include" \
-            --with-nspr-libs="C:/mozilla-build/msys/local/lib/libnspr4.a \
-                              C:/mozilla-build/msys/local/lib/libplds4.a \
-                              C:/mozilla-build/msys/local/lib/libplc4.a"
-
- -

Sollten Sie beim Laden von Symbolen oder der dynamischen Bibliothek Fehler erhalten, können Sie erzwingen den korrekten NSPR mit:

- -
PATH="$PATH;C:/mozilla-build/msys/local/lib/" ./js
- -

zu laden.

- -

Angeben der Installationsverzeichnisse

- -

make install legt Dateien standardmäßig in den folgenden Verzeichnissen ab. Sie können dies überschreiben, indem Sie Optionen an das configure-Skript übergeben:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Was es istWo es abgelegt wirdconfigure Option
ausführbare Dateien, Shell-Skripte/usr/local/bin--bindir
Bibliotheken, Daten/usr/local/lib--libdir
architekturunabhängige Daten/usr/local/share--sharedir
C-Header-Dateien/usr/local/include--includedir
- -

Der Einfachhalt halber können Sie dem configure Script (Konfigurationsskript) eine Option der Form --prefix=<PREFIXDIR> übergeben, die <PREFIXDIR> für /usr/local in allen obigen Einstellungen in einem Schritt ersetzt. Dies ist normalerweise die am wenigsten problematische Sache, da es die typische Anordnung von lib, bin und dem Rest beibehält. 

- -
Hinweis: Alle Verzeichnisse, die Sie zur configure übergeben, werden im generierten makefile aufgezeichnet, sodass Sie sie erst erneut angeben müssen, wenn Sie configure erneut ausführen.
- -

SpiderMonkey als statische Bibliothek erstellen

- -

Standardmäßig wird SpiderMonkey als gemeinsam genutzte Bibliothek erstellt. Sie können SpiderMonkey jedoch als statische Bibliothek erstellen, indem Sie beim Ausführen von configure das Flag --disable-shared-js angeben. 

- -

Angeben der Compiler und Compiler Flags

- -

Wenn Sie einen anderen Compiler verwenden möchten als den, den das configure -Skript standardmäßig für Sie auswählt, können Sie die CXX-Variable in der Umgebung festlegen, wenn Sie configure ausführen. Dadurch werden die Werte gespeichert, die Sie im generierten Makefile angegeben haben. Wenn Sie diese Makefile einmal festgelegt haben, müssen Sie dies erst wieder tun, wenn Sie configure rneut ausführen.

- -

Wenn Sie bestimmte Flags an den Compiler übergeben möchten, können Sie die CXXFLAGS -Umgebungsvariable beim Ausführen von configure festlegen. Wenn Sie beispielsweise die GNU-Toolchain verwenden, wird im Folgenden das Flag -g3 an den Compiler übergeben, wodurch Debug-Informationen zu Makros ausgegeben werden. Dann können Sie diese Makros in gdb -Befehlen verwenden:

- -
$ CXXFLAGS=-g3 $SRC/configure
-...
-checking whether the C++ compiler (c++ -g3 ) works... yes
-...
-$
-
- -

Um eine 32-Bit Version auf einem 64-Bit Linux System zu erstellen können Sie Folgendes verwenden:

- -
PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig CC="gcc -m32" CXX="g++ -m32" AR=ar $SRC/configure --target=i686-pc-linux
-
- -

Um eine 64-Bit Version auf einem 32-Bit Mac System (bspw. Mac OS X 10.5) zu erstellen können Sie Folgendes verwenden:

- -
AR=ar CC="gcc -m64" CXX="g++ -m64" ../configure --target=x86_64-apple-darwin10.0.0
-
- -

Um eine 64-Bit Version für Windows zu erstellen können Sie Folgendes verwenden:

- -
$SRC/configure --host=x86_64-pc-mingw32 --target=x86_64-pc-mingw32
-
- -
Hinweis: Sie müssen Ihre MozillaBuild Shell mit dem korrekten -x64.bat Skript gestartet haben, damit sich die 64-Bit Compiler in Ihrem PATH befinden.
- -

Die Compiler und Flags, die Sie configure (Konfiguration) übergeben, werden in der generierten Makefile aufgezeichnet. Sie müssen diese daher erst wieder angeben, wenn Sie configure erneut ausführen.

- -

Erstellung Ihrer Anwendung

- -

Während "Wie können Sie eine komplette Anwendung erstellen" für dieses Dokument eindeutig nicht möglich ist, hier ein paar Tipps, die Ihnen dabei helfen werden:

- - - -

Using the js-config script

- -

In addition to the SpiderMonkey libraries, header files, and shell, the SpiderMonkey build also produces a shell script named js-config which other build systems can use to find out how to compile code using the SpiderMonkey APIs, and how to link with the SpiderMonkey libraries.

- -
Note: In SpiderMonkey 1.8.5, the js-config script is not generated properly on many platforms. If the instructions below do not work, you can try this workaround.
- -

When invoked with the --cflags option, js-config prints the flags that you should pass to the C compiler when compiling files that use the SpiderMonkey API. These flags ensure the compiler will find the SpiderMonkey header files.

- -
$ ./js-config --cflags # Example output: -I/usr/local/include/js -I/usr/include/nspr
-
- -

When invoked with the --libs option, js-config prints the flags that you should pass to the C compiler when linking an executable or shared library that uses SpiderMonkey. These flags ensure the compiler will find the SpiderMonkey libraries, along with any libraries that SpiderMonkey itself depends upon (like NSPR).

- -
$ ./js-config --libs # Example output: -L/usr/local/lib -lmozjs -L/usr/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -ldl -lm  -lm -ldl
- -

Testing SpiderMonkey

- - - -

Building SpiderMonkey 1.8 or earlier

- -

Use these instructions to build SpiderMonkey from an official source release or from the old CVS repository. To build the latest SpiderMonkey sources from Mercurial, see Building SpiderMonkey above.

- -

SpiderMonkey is easy to build from source if you have the usual Mozilla build prerequisites installed. Before you begin, make sure you have right build tools for your computer: LinuxWindowsMacothers.

- -

First, download a SpiderMonkey source distribution, such as SpiderMonkey 1.8 Release Candidate 1.

- -

To build, use these commands:

- -
tar xvzf js-1.8.0-rc1.tar.gz
-cd js/src
-make -f Makefile.ref
-
- -

This builds a debug version of SpiderMonkey. All build files are created in a subdirectory named depending on your system (for example,Linux_All_DBG.OBJ if you are on Linux). To install this build on your system, see SpiderMonkey installation instructions.

- -

To build an optimized (non-debug) version of SpiderMonkey:

- -
make BUILD_OPT=1 -f Makefile.ref
- -

To build a thread-safe version of SpiderMonkey:

- -
make JS_DIST=/full/path/to/directory/containing/nspr JS_THREADSAFE=1 -f Makefile.ref
-
diff --git a/files/de/spidermonkey/index.html b/files/de/spidermonkey/index.html deleted file mode 100644 index 59667350fa..0000000000 --- a/files/de/spidermonkey/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: SpiderMonkey -slug: SpiderMonkey -tags: - - JavaScript - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey ---- -

   

- -

SpiderMonkey ist die in C geschriebene JavaScript Engine für Gecko. SpiderMonkey wird in verschiedenen Mozilla Produkten (auch Firefox) verwendet und ist unter der MPL/GPL/LGPL Lizenz verfügbar.

- -
Hinweis: Das FOSS Wiki enthält Links zu einigen anderen Bibliotheken und Programmen, die einem das Leben vereinfachen, wenn man Spidermonkey und JSAPI verwendet.
- - - - - - - - -
-

Dokumentation

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Allgemein

-
SpiderMonkey Build DokumentationWie man die SpiderMonkey Source erhält, kompiliert und Testläufe durchführt.
Einführung in die JavaScript Shell -

Wie man die JavaScript Shell bekommt, kompiliert und verwendet.

-
Automatisierte JavaScript TestläufeWie automatisierte JavaScript Tests durchgeführt werden können.
Erstellen von JavaScript TestsEinen Test zu den JavaScript Testsuites hinzufügen.
-

JSAPI

-
JSAPI HandbuchDieser Wegweiser bietet einen Überblick über SpiderMonkey und beschreibt wie man die Engine in die eigene Anwendung einbettet, um sie JavaScript-fähig zu machen.
JSAPI SprachführerZeigt die JSAPI Übersetzung einiger gemeinsam genutzter JavaScript Ausdrücke und Aussagen.
JSAPI ReferenzSpiderMonkey API Referenz.
JSDBGAPI ReferenzSpiderMonkey Debugging API Referenz.
-

Tipps, Tricks und Philosophie

-
Einbetten der JavaScript EngineEin Tutorial über das Einbetten von SpiderMonkey.
SpiderMonkey Garbage Collection TippsTipps, die die Fallen des Garbage Collectors vermeiden sollen.
SpiderMonkey InternalsEin Überblick über die Dateien und den Aufbau von SpiderMonkey
SpiderMonkey Internals: Thread SafetyWie SpiderMonkey's Anfragenmodell arbeitet.
-
-

Verwandte Themen

- - - - -

Community

- -

Fragen? Frag im IRC!

-
diff --git a/files/de/theme_erstellen/contents.rdf/index.html b/files/de/theme_erstellen/contents.rdf/index.html deleted file mode 100644 index 589b4825c1..0000000000 --- a/files/de/theme_erstellen/contents.rdf/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: contents.rdf -slug: Theme_erstellen/contents.rdf -tags: - - Themes -translation_of: Archive/Themes/Creating_a_Skin_for_Firefox/contents.rdf ---- -

Kopieren Sie den folgenden Text in ein neues Textdokument und speichern Sie es unter dem Namen »contents.rdf«:

-
<?xml version="1.0"?>
-
-<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
-
-  <!-- List all the skins being supplied by this theme -->
-  <RDF:Seq about="urn:mozilla:skin:root">
-    <RDF:li resource="urn:mozilla:skin:My_Theme"/>
-  </RDF:Seq>
-
-  <RDF:Description about="urn:mozilla:skin:My_Theme"
-        chrome:displayName="My Theme"
-        chrome:accessKey="N"
-        chrome:author="Name des Autors"
-        chrome:authorURL="Webseite des Autors"
-        chrome:description="Beschreibung"
-        chrome:name="My_Theme"
-        chrome:image="vorschaubild.png">
-   <chrome:packages>
-      <RDF:Seq about="urn:mozilla:skin:My_Theme:packages">
-        <RDF:li resource="urn:mozilla:skin:My_Theme:browser"/>
-        <RDF:li resource="urn:mozilla:skin:My_Theme:communicator"/>
-        <RDF:li resource="urn:mozilla:skin:My_Theme:global"/>
-        <RDF:li resource="urn:mozilla:skin:My_Theme:mozapps"/>
-        <RDF:li resource="urn:mozilla:skin:My_Theme:help"/>
-      </RDF:Seq>
-    </chrome:packages>
-  </RDF:Description>
-
-  <!-- Version Information. State that we work only with major version 1 of this package. -->
-  <RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:browser"/>
-  <RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:communicator"/>
-  <RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:global"/>
-  <RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:mozapps"/>
-  <RDF:Description chrome:skinVersion="1.5" about="urn:mozilla:skin:My_Theme:help"/>
-</RDF:RDF>
-
-
-

{{ languages( { "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox/contents.rdf", "ja": "ja/Creating_a_Skin_for_Firefox/contents.rdf", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa/contents.rdf", "pt": "pt/Criando_um_visual_para_o_Firefox/contents.rdf", "en": "en/Creating_a_Skin_for_Firefox/contents.rdf", "zh-tw": "zh_tw/\u88fd\u4f5c_Firefox_\u4f48\u666f\u4e3b\u984c/contents.rdf" } ) }}

diff --git "a/files/de/theme_erstellen/einf\303\274hrung/index.html" "b/files/de/theme_erstellen/einf\303\274hrung/index.html" deleted file mode 100644 index ebc2d3232c..0000000000 --- "a/files/de/theme_erstellen/einf\303\274hrung/index.html" +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Theme_erstellen/Einführung -slug: Theme_erstellen/Einführung -tags: - - Add-ons - - Themes -translation_of: Archive/Mozilla/Creating_a_sking_for_Firefox_Getting_Started ---- -

Laden Sie die neueste Version von Firefox herunter und installieren Sie diese. Stellen Sie sicher, dass Sie auch den DOM Inspector installieren.

-

Theme entpacken

-

Theoretisch kann man jedes bereits für Firefox erstellte Theme als Grundlage verwenden, der Einheitlichkeit halber wird in diesem Beipiel das Standard Firefox Theme "Winstripe" verwendet. Dieses befindet sich in der Datei classic.jar, die im Firefox Installationsverzeichnis zu finden ist. Eine JAR-Datei ist in Wirklichkeit ein umbenanntes ZIP-Archiv. Wenn JAR-Dateien in einem Archivierungstool geöffnet werden, sollte es automatisch als solches erkannt werden. Falls Ihr Programm classic.jar nicht als ZIP-Archiv erkennen sollte, benennen Sie die Datei einfach in classic.zip um und fahren mit dem Entpacken fort.

-

Standard classic.jar Verzeichnisse

-

Linux: /usr/lib/MozillaFirefox/chrome/classic.jar oder /usr/lib/firefox-*.*.*/chrome/classic.jar

-

Windows: \Programme\Mozilla Firefox\chrome\classic.jar

-

Mac OS X:

- -

Kopieren Sie classic.jar in ein anderes, einfach zu erreichendes Verzeichnis - Classic wird empfohlen - und entpacken Sie die Inhalte der Datei in diesen Ordner. Achten Sie dabei darauf, dass die Ordnerstruktur beibehalten wird.

-

Verzeichnisse

-

Innerhalb classic.jar gibt es einen Ordner skin, sowie zwei Dateien, preview.png und icon.png.

-
skin
skin enthält ausschließlich den Ordner classic
skin/classic
classic enthält die folgenden Verzeichnisse:
skin/classic/browser
browser enthält alle Symbolleisten Icons sowie die Icons des Lesezeichen-Managers und des Einstellungen-Fensters.
skin/classic/communicator
Macht nicht allzu viel und kann deshalb normalerweise außen vor gelassen werden.
skin/classic/global
global enthält fast alle wichtigen CSS-Dateien, die die Darstellung des Browsers definieren. Dieser Ordner stellt den wichtigsten Bereich bei der Erstellung eines Themes dar.
skin/classic/help
help enthält alle Dateien zur Darstellung des Hilfe-Dialogs.
skin/classic/mozapps
mozapps enthält alle Styles und Icons der Dialoge innerhalb des Browsers, wie z. B. für die Add-ons und den Update-Assistenten.
-
-

Installation des neuen Themes

-

Bevor Sie die Änderungen sehen können, die Sie an einem Firefox Theme gemacht haben, müssen Sie zunächst verstehen, wie man das classic Theme wieder packt, um es installierbar zu machen. Zur Einfachheit nennen wir das Theme einfach "My_Theme". Sie können ihm jedoch einen beliebigen Namen geben.

-

Kopieren der erforderlichen Dateien

-

Im ersten Schritt werden alle Dateien in die richtige Verzeichnisstruktur verschoben. Erstellen Sie hierzu einen neuen Ordner My_Theme. In dieses Verzeichnis verschieben Sie anschließend die Ordner browser, global, communicator, help und mozapps aus dem classic Theme von Firefox zusammen mit den Dateien icon.png und preview. Die Struktur von "My_Theme" und classic.jar unterscheidet sich dabei leicht.

-

Erstellen der Installationsdateien

-
contents.rdf
-

Machen Sie eine Kopie von contents.rdf und platzieren Sie die Datei innerhalb von \My_Theme. Diese Datei stellt eine XML-Datei dar, die zur Beschreibung des Skins verwendet wird.

-

Öffnen Sie die Datei in einem Texteditor. Ersetzen Sie alle Vorkommen von "My_Theme" innerhalb des Codes durch den Namen ihres Themes.

-

Der "packages"-Bereich listet die Komponenten des Browsers auf, die verändert werden. Falls wir zusätzliche Skins für Chatzilla hätten, müssten wir eine weitere Zeile hinzufügen ähnlich den anderen und sie so verändern, dass die auf Chatzilla verweist.

-
<RDF:li resource="urn:mozilla:skin:My_Theme:communicator"/>
-<RDF:li resource="urn:mozilla:skin:My_Theme:editor"/>
-<RDF:li resource="urn:mozilla:skin:My_Theme:global"/>
-<RDF:li resource="urn:mozilla:skin:My_Theme:messenger"/>
-<RDF:li resource="urn:mozilla:skin:My_Theme:navigator"/>
-
-

Speichern Sie die Datei und beenden Sie den Texteditor.

-
install.rdf
-

Erstellen Sie eine Kopie von install.rdf und platzieren Sie die Datei innerhalb von \My_Theme. Diese Datei stellt eine XML-Datei dar, die zur Beschreibung des Skins verwendet wird.

-
  <Description about="urn:mozilla:install-manifest">
-  <em:id>{Themes_UUID}</em:id>
-  <em:version>Themes_Version</em:version>
-
-

Die erste Sektion benötigt eine UUID und eine Versionsnummer für ihr Theme.

-

Sie müssen zudem die Minimal- und Maximalversion von Firefox angeben, zu der ihr Theme kompatibel ist:

-
  <em:targetApplication>
-    <Description>
-      <!-- Firefox's UUID -->
-      <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-      <em:minVersion>Min_FF_Version</em:minVersion>
-      <em:maxVersion>Max_FF_Version</em:maxVersion>
-    </Description>
-  </em:targetApplication>
-
-

Die Angabe der Minimal- und Maximalversion vermeidet Konflikte mit Versionen von Firefox, für die Ihr Theme nicht erstellt wurde - oder nicht getestet wurde.

-

CSS-Dateien

-

Die CSS-Dateien in den Verzeichnissen beschreiben dem Browser, wie er Buttons und andere Kontrollelemente darstellen soll, wo Bilder angezeigt werden sollen, welche Ränder und Abstände er um sie legen soll usw.

-

Als Beispiel ändern wir den Standard Button.

-

Wechseln sie in das global Verzeichnis und öffnen sie die Datei button.css in einem Texteditor. Scrollen Sie bis zu der Zeile mit button. Dieser Style definiert die Darstellung des Stardard Buttons in seinem Ausgangszustand (ohne Mouse-Over-Effekt, der Button ist nicht deaktiviert und nicht ausgewählt).

-

Ändern Sie background-color: zu DarkBlue und color: zu White und speichern die Datei ab.

-

Wieder zu JAR-Datei packen

-

Alles was Sie jetzt noch tun müssen, ist die folgende Verzeichnisstruktur wieder in eine JAR-Datei zu packen:

-
/browser/*
-/communicator/*
-/global/*
-/help/*
-/mozapps/*
-/contents.rdf
-/install.rdf
-/icon.png
-/preview.png
-
-

Stellen Sie sicher, dass Sie nicht nur das Hauptverzeichnis My_Theme packen, sonst schlägt die Drag & Drop Installation fehl.

-

Installation aus einer Webseite heraus

-

Um das Theme direkt aus dem Internet zu installieren, müssen Sie JavaScript bemühen:

-
 <a href='javascript:InstallTrigger.installChrome(InstallTrigger.SKIN,
-  "myskin.jar", "Meinen Skin installieren")'>Meinen Skin installieren</a>
-
-

Installation von der Festplatte

-

Wenn Sie JAR-Dateien mit Themes auf Ihrer Festplatte haben und installieren wollen, benutzen Sie dieses Formular.

-

Sie können auf einfach die JAR-Datei per Drag & Drop in den Themes-Dialog innerhalb Firefox ziehen.

-

{{ languages( { "en": "en/Creating_a_Skin_for_Firefox//Getting_Started", "es": "es/Creando_un_skin_para_Firefox/Como_empezar", "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox/Premiers_pas", "ja": "ja/Creating_a_Skin_for_Firefox/Getting_Started", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa/Zaczynamy", "pt": "pt/Criando_um_visual_para_o_Firefox/Iniciando" } ) }}

diff --git a/files/de/theme_erstellen/index.html b/files/de/theme_erstellen/index.html deleted file mode 100644 index b96e8b4351..0000000000 --- a/files/de/theme_erstellen/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Theme erstellen -slug: Theme_erstellen -tags: - - Skin - - Themes -translation_of: Archive/Themes/Creating_a_Skin_for_Firefox ---- -

Vorwort

-

Um einen Skin für Firefox zu erstellen, müssen Sie drei Dinge wissen: Wie man Bilder bearbeitet, wie man ZIP-Dateien extrahiert und wie man CSS bearbeitet. Firefox benutzt normale GIF, PNG und JPEG Bilder für die Buttons und CSS, um alles andere der Benutzeroberfläche darzustellen.

-

Was ist ein Skin?

-

Ein Skin ändert nicht die komplette Benutzeroberfläche; stattdessen definiert er, wie die Oberfläche dargestellt wird. Sie können nicht die Verhaltensweise des Programms ändern, wie beispielsweise die Aktion nach einem Rechtsklick auf ein Bild, aber Sie können das Aussehen des Kontextmenüs ändern. Wenn Sie jedoch nicht das Aussehen von Firefox, sondern dessen Funktionsweise verändern wollen, können Sie hierfür eine Erweiterung erstellen.

-

Inhalt

- -
-

Informationen zum Originaldokument

- -
-

{{ languages( { "en": "en/Creating_a_Skin_for_Firefox", "es": "es/Creando_un_tema_para_Firefox", "fr": "fr/Cr%c3%a9er_un_th%c3%a8me_pour_Firefox", "pl": "pl/Tworzenie_sk%c3%b3rek_dla_Firefoksa", "ja": "ja/Creating_a_Skin_for_Firefox" } ) }}

diff --git a/files/de/theme_erstellen/install.rdf/index.html b/files/de/theme_erstellen/install.rdf/index.html deleted file mode 100644 index 66871db2c2..0000000000 --- a/files/de/theme_erstellen/install.rdf/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: install.rdf -slug: Theme_erstellen/install.rdf -tags: - - Themes -translation_of: Archive/Themes/Creating_a_Skin_for_Firefox/install.rdf ---- -

Kopieren Sie den folgenden Text und fügen sie ihn in eine Textdatei ein, speichern Sie die Datei anschließend als »install.rdf«:

-
<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
-  <Description about="urn:mozilla:install-manifest">
-  <em:id>{Themes_UUID}</em:id>
-    <em:version>Themes_Version</em:version>
-
-<!-- Target Application this extension can install into,
-         with minimum and maximum supported versions. -->
-
-<em:targetApplication>
-    <Description>
-      <!-- Firefox's UUID -->
-      <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-      <em:minVersion>Min_FF_Version</em:minVersion>
-      <em:maxVersion>Max_FF_Version</em:maxVersion>
-    </Description>
-  </em:targetApplication>
-
-  <!-- Front End MetaData -->
-  <!-- My_Theme -->
-  <em:name>My_Theme</em:name>
-  <em:description>My_Theme</em:description>
-  <em:creator>Your_Name</em:creator>
-  <em:contributor>Contributors_Names</em:contributor>
-  <em:homepageURL>Themes_HomePage</em:homepageURL>
-  <em:updateURL> Url_of_Update_Location </em:updateURL>
-  <em:aboutURL> Url_of_About_Page </em:aboutURL>
-
-  <!-- Front End Integration Hooks (used by Theme Manager)-->
-    <em:internalName>My_Theme</em:internalName>
-  </Description>
-
-</RDF>
-
-

{{ languages( { "en": "en/Creating_a_Skin_for_Firefox/install.rdf", "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox/install.rdf", "ja": "ja/Creating_a_Skin_for_Firefox/install.rdf", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa/install.rdf", "pt": "pt/Criando_um_visual_para_o_Firefox/install.rdf", "zh-tw": "zh_tw/\u88fd\u4f5c_Firefox_\u4f48\u666f\u4e3b\u984c/install.rdf" } ) }}

diff --git a/files/de/theme_erstellen/uuid/index.html b/files/de/theme_erstellen/uuid/index.html deleted file mode 100644 index 7ce4b2eb92..0000000000 --- a/files/de/theme_erstellen/uuid/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: UUID -slug: Theme_erstellen/UUID -tags: - - Themes -translation_of: Archive/Themes/Creating_a_Skin_for_Firefox/UUID ---- -

UUID: Universal Unique Identifier

-

Eine UUID kann man unter http://www.famkruithof.net/uuid/uuidgen erhalten oder indem man »firebot: uuid?« auf irc.mozilla.org eingibt.

-

Siehe auch

-

GUIDs generieren

-

{{ languages( { "en": "en/Creating_a_Skin_for_Firefox/UUID", "es": "es/Creando_un_skin_para_Firefox/UUID", "fr": "fr/Cr\u00e9er_un_th\u00e8me_pour_Firefox/UUID", "ja": "ja/Creating_a_Skin_for_Firefox/UUID", "pl": "pl/Tworzenie_sk\u00f3rek_dla_Firefoksa/UUID", "pt": "pt/Criando_um_visual_para_o_Firefox/UUID", "zh-tw": "zh_tw/\u88fd\u4f5c_Firefox_\u4f48\u666f\u4e3b\u984c/UUID" } ) }}

diff --git a/files/de/themes/hintergrund/index.html b/files/de/themes/hintergrund/index.html deleted file mode 100644 index a9df6faa4b..0000000000 --- a/files/de/themes/hintergrund/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Hintergrund Themes -slug: Themes/Hintergrund -translation_of: Mozilla/Add-ons/Themes/Lightweight_themes ---- -

Gestalten Sie Ihr eigenes Hintergrundbild Thema

- -
-

Themen werden mit einem Grafikprogamm gestaltet und als Bilddatei hochgeladen. Als Hintergrundbild ergänzen sie die standardmäßig einfarbige Kopfleiste der Firefox-Benutzeroberfläche.

- -

Sie haben ein passendes Bild? Sie können es hier hochladen!

- -

Ein Bild als Kopfleisten-Thema gestalten

- -

Das Kopfleisten-Hintergrundbild wird oberhalb der Benutzeroberfläche angezeigt, eingebettet hinter Symbolleisten, Addressleiste, Suchleiste und den Tabs. Ankerpunkt ist die obere rechten Ecke der Browser-Kopfleiste.

- -

- - - -

Erforderliche Bilddaten

- - - -

Tipps

- - - -

Online Bildbearbeitung

- - - -

Ein Fußleisten-Thema erstellen

- -

Ältere Firefoxversionen beziehungsweise neuere Versionen mit bestimmten Add-ons, blenden ein Fußleisten-Themenbild hinter die Add-on und Suchleiste, am unteren Rand des Browser-Fensters ein. Das Fußleisten-Thema wird an der unteren linken Ecke des Browserfensters verankert. Fußleisten-Hintergrundbilder sind optional.

- -

- - - -

Erforderliche Bilddaten

- - - -

Tipps

- - - -

Hintergrundthemen einsenden

- -

Um Ihre Themenbilder einzusenden, gehen Sie auf die Seite "Theme Submission":

- -
    -
  1. Benennen Sie Ihr Themenbild — wählen Sie einen einen einmaligen Namen für Ihr Hintergrundthema. Die mehrfache Vergabe des selben Namens ist nicht gestattet, so dass Sie eventuell einige Versuche brauchen, um einen passenden Namen zu finden.
  2. -
  3. Wählen Sie eine Kategorie und Schlagworte — wählen Sie eine Kategorie und geben Sie einige Tags (Schlagworte) ein, die Ihr Hintergrundthema am besten beschreiben. Denken Sie daran, dass ein Prüfer (Reviewer) Ihr Thema ablehnen kann, wenn Kategorie oder Schlagworte offensichtlich nicht zum Thema passen.
  4. -
  5. Beschreiben Sie Ihr Hintergrundthema — geben Sie eine kurze Erläuterung Ihres Themas. Denken Sie daran, dass ein Prüfer (Reviewer) Ihr Hintergrundthema ablehnen kann, wenn die Beschreibung nicht genau Ihrem Thema entspricht.
  6. -
  7. Wählen Sie eine Lizenz für Ihr Themenbild — entscheiden Sie sich, unter welchen Bedingungen Sie Ihr Werk verbreiten möchten. Lesen Sie mehr über die verschiedenen Creative Commons Lizenzen. -
      -
    • Wichtig: Stellen Sie sicher, dass Sie allein die Bildrechte für Ihr Hintergrundthema besitzen!
    • -
    -
  8. -
  9. Laden Sie Ihre Bilder hoch  — stellen Sie sicher, dass Sie unter 300 KB groß sind und im JPG oder PNG Format!
  10. -
  11. Wählen Sie die Farben für Text und Tabs — Sie können die Hintergrundfarbe (für Tabs) und die Vordergrundfarbe (für Text) auswählen, die am besten zu Ihrem Bild passen.
  12. -
  13. Prüfen Sie Ihr Themenbild mit der Vorschau  — es ist jetzt soweit! Bewegen Sie einfach den Mauszeiger über die "Submit"-Schaltfläche, und Sie sehen das Ergebnis sofort.
  14. -
  15. Senden Sie Ihr Themenbild ein — wenn alles richtig aussieht, klicken Sie auf die "Submit"-Schaltfläche. Das war alles! Auf Ihrer Profilseite können Sie sämtliche Hintergrundthemen sehen, die Sie erstellt haben. -
      -
    • Tipp: um sicherzustellen, dass Ihr Thema für die Gallerie zugelassen wird, müssen die inhaltlichen Richtlinien (rewiew guidelines) und die Nutzungbedingungen (terms of service) erfüllt sein!
    • -
    -
  16. -
- -

- -

Submit Your Theme Now

-
diff --git a/files/de/themes/index.html b/files/de/themes/index.html deleted file mode 100644 index d94b7d2de4..0000000000 --- a/files/de/themes/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Themes -slug: Themes -tags: - - Themes -translation_of: Mozilla/Add-ons/Themes ---- -
Theme erstellen
-Eine Einführung in die Erstellung von Themes für Firefox
-
Themes ermöglichen Veränderungen am Aussehen der verschiedenen Mozilla-Programmen. Das Aussehen und Verhalten beim Benutzen der Programme kann so auf eigene Bedürfnissen angepasst werden. Ein Theme kann einfach nur eine Farbe oder das ganze Aussehen im kleinsten Detail verändern.
- -

Dokumentation

Ein Theme erstellen
Wie man ein einfaches Theme für Firefox 3.0 oder neuer erstellt.
Lightweight Themes
Erstellen von »leicht-gewichtigen« Themes (Personas) ab Firefox 3.6 oder Firefox 3 mit dem Personas Add-on.
Skins für Firefox erstellen
Eine Einleitung zum Erstellen von Themes für ältere Versionen von Firefox (vor 3.0)
Skins für SeaMonkey 2.x erstellen
Eine Einleitung zum Erstellen von neuen Themes für SeaMonkey 2.
Sprachen mit Schreibrichtungen von rechts nach links
Wie man sicherstellt, dass das Theme in Sprachen wie Hebräisch, Arabisch, Persisch und Urdu korrekt dargestellt wird.
Themes packen
Wie man Themes für Firefox und Thunderbird packt
Theme Änderungen zwischen Firefox 3.0 und 3.5
Eine Auflistung aller Theme Änderungen zwischen Version 3.0 und 3.5 von Firefox
Theme Änderungen zwischen Firefox 2.0 und 3.0
Eine Auflistung aller Theme Änderungen zwischen Version 2.0 und 3.0 von Firefox
Theme Änderungen zwischen Firefox 1.5 und 2.0
Eine Auflistung aller Theme Änderungen zwischen Version 1.5 und 2.0 von Firefox
Theme Änderungen zwischen Firefox 1.0 to 1.5 (Forumspost)
Ein Forumspost bei MozillaZine, der die grundlegenden Theme bezogenen Änderungen zwischen Firefox 1.0 und 1.5 beschreibt.
Erste Schritte bei der Theme Erstellung
Ein relativ alter Artikel, der die Theme Erstellung unter Firefox beschreibt.
Thunderbird Personas
Neu in Thunderbird 3

Alles anzeigen...

Community

  • Mozillas Theme Foren:

{{ DiscussionList("dev-themes", "mozilla.dev.themes") }}

Tool

Verwandte Themen

CSS
-

{{ languages( { "en": "en/Themes", "es": "es/Temas", "fr": "fr/Th\u00e8mes", "ja": "ja/Themes", "pl": "pl/Motywy", "zh-cn": "cn/\u4e3b\u9898", "zh-tw": "zh_tw/\u4f48\u666f\u4e3b\u984c" } ) }}

diff --git a/files/de/toolkit_api/index.html b/files/de/toolkit_api/index.html deleted file mode 100644 index 76011f32bf..0000000000 --- a/files/de/toolkit_api/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Toolkit API -slug: Toolkit_API -tags: - - Toolkit API -translation_of: Mozilla/Tech/Toolkit_API ---- -

Das Mozilla Toolkit (deutsch »Mozilla Werkzeugsatz«) ist eine Zusammenstellung von Schnittstellen (APIs), die auf Gecko basieren und fortgeschrittene Services für XUL-Applikationen bereitstellen. Dazu zählen:

- - - -

Offizielle Hinweise

- -

-

- - -

Weitere Informationen

- -

Die folgenden Entwicklerseiten enthalten Beispiele und Diskussionen rund um spezielle Themen:

- -

XUL; XUL Overlays; Erweiterungen entwickeln; XULRunner; Themes entwickeln; DOM; RDF; Speicherung; Hilfe-Dokumentation erstellen; FUEL / STEEL / SMILE;

diff --git a/files/de/tools/debugger/settings/index.html b/files/de/tools/debugger/settings/index.html deleted file mode 100644 index 972e98ff9a..0000000000 --- a/files/de/tools/debugger/settings/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Settings -slug: Tools/Debugger/Settings -translation_of: Archive/Tools/Debugger_settings ---- -
{{ToolsSidebar}}

The Debugger has its own settings menu, which you can access from an icon in the toolbar:

- -

Each setting is a simple on/off switch:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Auto Prettify Minified SourcesWith this option enabled, the debugger will automatically detect minified JS files and pretty-print them.
Pause on ExceptionsWhen this option is enabled, execution of the script will automatically pause whenever a JavaScript exception is thrown.
Ignore Caught Exceptions -

If this option is set (it is set by default) and "Pause on exceptions" is set, then execution will pause on an exception only if that exception is not caught.

- -

This is usually the behavior you want. You don't generally want to pause execution when an exception that is thrown is caught, since that generally indicates that your program is handling it properly.

-
Show Panes on StartupWhen this option is enabled, the debugger's variables pane is visible when you first start the debugger.
Show Only Enumerable PropertiesDo not display non-enumerable JavaScript properties.
Show Variables Filter BoxEnabling this option adds a "Filter variables" search box to the variables pane, so that you can filter the displayed list of variables.
Show Original SourcesEnabling this option will make the debugger use source maps, if they are available, to display the original source for code which has been combined, minified, or even compiled to JavaScript from a language like CoffeeScript. Defaults to true.
Automatically Black Box Minified Sources -
-

New in Firefox 33.

-
- -

Automatically black box sources whose URL ends with ".min.js". Defaults to true.

-
- -

 

diff --git a/files/de/tools/scratchpad/index.html b/files/de/tools/scratchpad/index.html deleted file mode 100644 index c17554d944..0000000000 --- a/files/de/tools/scratchpad/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: JavaScript-Umgebung -slug: Tools/Scratchpad -tags: - - Tools -translation_of: Archive/Tools/Scratchpad ---- -
{{ToolsSidebar}}
- -

Das Werkzeug „JavaScript-Umgebung“ bietet eine Umgebung zum Experimentieren mit JavaScript-Quelltext. Sie können Quelltext schreiben und testen, der mit den Inhalten der Webseite interagiert und dann zu Ihren gewohnten Entwicklungwerkzeugen wechseln, wo Sie Ihre Arbeit verfeinern und fertigstellen.

- -

Anders als die Web-Konsole, die nur eine Zeile Quelltext auf einmal interpretieren soll, können Sie mit der JavaScript-Umgebung größere Blöcke JavaScript-Quelltext bearbeiten und diese dann auf vielfältige Weise ausführen, je nachdem, wie Sie das Ergebnis verwenden möchten.

- -

{{EmbedYouTube("lvQf2u3rmkw")}}

- -

Verwenden der JavaScript-Umgebung

- -

Um ein Fenster der JavaScript-Umgebung zu öffnen, drücken Sie Umschalt+F4 oder öffnen Sie das Menü „Web-Entwickler“ (dieses ist unter Mac OS X und Linux ein Untermenü des Menüs „Extras“) und wählen Sie „JavaScript-Umgebung“. Dies öffnet ein Editorfenster der JavaScript-Umgebung mit einem Kommentar, der einige kurze Hinweise zur Verwendung der JavaScript-Umgebung liefert. Von dort aus können Sie direkt JavaScript-Quelltext eingeben und ausprobieren.

- -

Das Fenster der JavaScript-Umgebung sieht ungefähr so aus (unter Mac OS X ist die Menüleiste am oberen Bildschirmrand):

- -

German Scratchpad screenshot

- -

Unter Verwenden des Quelltext-Editors finden Sie eine Dokumentation zum Editor selbst, einschließlich nützlicher Tastaturkürzel.

- -

Im Datei-Menü finden Sie Optionen zum Speichern und Laden von Ausschnitten von JavaScript-Quelltext, so dass Sie Quelltext bei Gefallen später wiederverwenden können.

- -

Ausführen Ihres Quelltexts

- -

Sobald Sie Ihren Quelltext geschrieben haben, wählen Sie den Quelltext aus, den Sie ausführen möchten. Wenn Sie nichts auswählen, wird der gesamte Quelltext im Fenster ausgeführt. Klicken Sie dann mit der rechten Maustaste (oder verwenden Sie das Menü „Ausführen“ in der Menüleiste) und wählen Sie, wie Ihr Quelltext ausgewählt werden soll. Es gibt vier Möglichkeiten zur Ausführung.

- -

Ausführen

- -

Wenn Sie die Option „Ausführen“ wählen, wird der gewählte Quelltext ausgeführt. Dies können Sie verwenden, wenn Sie eine Funktion oder Quelltext ausführen möchten, der den Inhalt Ihrer Seite verändert, ohne dass Sie das Ergebnis sehen müssen.

- -

Untersuchen

- -

Mit der Option „Untersuchen“ wird der Quelltext ebenso ausgeführt wie bei der Option „Ausführen“; anschließend wird allerdings ein Objektinspektor geöffnet, mit dem Sie den Ergebniswert untersuchen können.

- -

Wenn Sie beispielsweise diesen Quelltext eingeben:

- -
window
-
- -

und dann „Untersuchen“ wählen, öffnet sich der Objektinspektor und zeigt in etwa folgendes :

- -

German Scratchpad inspection screenshot

- -

 

- -

Anzeigen

- -

Die Option „Anzeigen“ führt den gewählen Quelltext aus und fügt das Ergebnis direkt als Kommentar in das Editor-Fenster Ihrer JavaScript-Umgebung ein. Dies ist ein bequemer Weg, um während Ihrer Arbeit ein fortlaufendes Protokoll Ihrer Testergebnisse zu erstellen. Zur Not können Sie dies auch als Taschenrechner verwenden, aber wenn Sie schon keinen Taschenrechnerprogramm haben, haben Sie vielleicht größere Probleme.

- -

Neu laden und ausführen

- -

Die Option „Neu laden und ausführen“ lädt erst die Seite neu und fürt dann den Quelltext aus, wenn das „load“-Ereignis der Seite ausgelöst wird. Dies ist hilfreich, wenn der Quelltext in einer sauberen Umgebung ausgeführt werden soll.

- -

Wann ist es sinnvoll, Scratchpad zu benutzen?

- -

Es gibt viele Möglichkeiten, die JavaScript-Umgebung sinnvoll einzusetzen. In diesem Abschnitt finden Sie einige davon.

- -

Testen von neuem Quelltext

- -

Die JavaScript-Umgebung ist besonders nützlich, um neuen Quelltext in einer laufenden Browser-Umgebung zu testen; Sie können den Quelltext, den Sie debuggen, in die JavaScript-Umgebung kopieren, ihn ausführen und dann anpassen, bis er funktioniert. Sobald er funktioniert, kopieren Sie ihn wieder in die Hauptdatei Ihres Quelltexts und schon sind Sie fertig. Oftmals können Sie Ihren Quelltext schreiben, debuggen und testen, ohne jemals die Seite laden zu müssen.

- -

Wiederverwendbare Quelltext-Ausschnitte

- -

Die Menüleiste der JavaScript-Umgebung bietet Befehle zum Speichern und Laden von JavaScript-Quelltext. Dies kann genutzt werden, um Teile von JavaScript-Quelltext aufzubewahren, den Sie häufig verwenden. Wenn Sie beispielsweise an einer Website arbeiten, die Daten mit AJAX-Anfragen lädt, können Sie Ausschnitte aufbewahren, die diese Ladeoperationen ausführen, um die Daten zu testen oder zu verifizieren. Ebenso können Sie hilfreiche allgemeine Debugging-Funktionen aufbewahren, wie solche, die bestimmte Arten von Informationen über das DOM liefern.

- -

Umgebung der JavaScript-Umgebung

- -

Quelltext, den Sie in der JavaScript-Umgebung ausführen, wird in der globalen Umgebung des zum Zeitpunkt der Ausführung gewählten Tabs ausgeführt. Variablen, die Sie außerhalb einer Funktion deklarieren, werden dem globalen Objekt für diesen Tab hinzugefügt.

- -

Verwenden der JavaScript-Umgebung zum Zugriff auf Firefox-interne Funktionen

- -

Wenn Sie an Firefox selbst arbeiten oder Add-ons entwickeln, finden Sie es möglicherweise hilfreich, über die JavaScript-Umgebung auf alle internen Funktionen des Browsers zuzugreifen. Um dies zu tun, müssen Sie in about:config die Einstellung devtools.chrome.enabled auf true setzen. Sobald dies geschehen ist, hat das Menü der Umgebung eine Option „Browser“; sobald Sie diese aktiviert haben, ist Ihre Umgebung nicht mehr nur der Inhalt der Seite, sondern der gesamte Browser.

- -

Tastaturkürzel

- -

{{ Page ("de/docs/tools/Keyboard_shortcuts", "scratchpad") }}

- -

Tastaturkürzel des Quelltext-Editors

- -

{{ Page ("de/docs/tools/Keyboard_shortcuts", "source-editor") }}

diff --git a/files/de/tools/webide/index.html b/files/de/tools/webide/index.html deleted file mode 100644 index def42cbac3..0000000000 --- a/files/de/tools/webide/index.html +++ /dev/null @@ -1,280 +0,0 @@ ---- -title: WebIDE -slug: Tools/WebIDE -translation_of: Archive/WebIDE ---- -
{{ToolsSidebar}}
-

Die WebIDE ist verfügbar in Firexfox 34 und neuer

- -

Du kannst sie aber auch schon in Firefox 33 aktivieren in dem du die Einstellungen veränderst: Besuche about:config, finde die Einstellung devtools.webide.enabled und stelle sie auf true um.

-
- -
-

Die WebIDE ist der Ersatz des App Managers. Genauso wie der App Manager, kannst du mit der WebIDE Firefox OS Apps ausführen und debuggen mit dem Firefox OS Simulator oder einem richtigen Firefox OS Gerät

- -

Darüber hinaus ist sie dir eine vollwertige Entwicklungsumgebung zur Erstellung und Bearbeitung deiner Firefox OS Apps.  WebIDE bietet eine Baumansicht zur strukturierten Anzeige, Bearbeitung und Sichern aller Dateien deiner App.  Für den leichten Einstieg helfen dir zwei App Templates.

-
- -

{{EmbedYouTube("2xmj4W8O3E4")}}

- -

Mit der WebIDE, musst du zuerst eine oder mehr Laufzeiten erstellen. Eine Laufzeit ist eine Umgebung, in der du deine App ausführst und debuggst. Eine Laufzeit kann ein Gerät mit Firefox OS sein, welches per USB verbunden ist oder auch der Firefox OS Simulator.

- -

Als Nächstes öffnest oder erstellst du eine App. Falls du eine neue App erstellst, beginnst du mit einer Vorlage, die die Verzeichnisstruktur und die minimalen Textbausteine enthält, die du zu Anfang benötigst. Du kannst auch mit einer umfangreicheren Vorlage anfangen, die zeigt, wie du eine privilegierte API benutzt. Die WebIDE zeigt deine App-Dateien in einer Baumansicht und du kannst sie mit dem eingebauten Quelleditor bearbeiten und speichern. Natürlich kannst du deine Apps auch mit deinen bevorzugten Werkzeugen entwickeln und die WebIDE nur zur Fehlersuche benutzen.

- -

Finally, you can install the app in one of the runtimes and run it. You can then open the usual suite of developer tools - the Inspector, Console, JavaScript Debugger and so on - to examine and modify the running app.

- -

System requirements

- -

To develop and debug apps using the WebIDE, all you need is Firefox version 33 or later. To test on a real Firefox OS device, you need a device running Firefox OS 1.2 or later, and a USB cable.

- -

You can only use the WebIDE if you're targeting Firefox OS 1.2 or later.

- -

Opening the WebIDE

- -

In the Web Developer menu, click on the WebIDE entry and the WebIDE opens. You can also use the keybinding Shift-F8:The dropdown on the left labeled "Open App" lets you open existing apps or create new ones. The dropdown on the right labeled "Select Runtime" lets you select a runtime or set up a new runtime.

- -

The buttons in the middle run, stop, and debug the app: they are only enabled when you have opened an app and selected a runtime.

- -

Setting up runtimes

- -

Under the "Select Runtime" dropdown, runtimes are grouped into three types:

- - - -

The first time you click the dropdown, you might not see any runtimes here:

- -

The rest of this section describes how you can add some runtimes.

- -

Connecting a Firefox OS device

- -

Before you can connect a Firefox OS device, there's some setup you have to go through:

- - - -
-

Linux only:

- - -
- -
-

Windows only:

- - -
- -

If there are any other Android devices connected to your computer, disconnect them. Now connect the device to the computer using USB. You should see the device appear under "USB DEVICES":

- -

- -

If you don't see your device, see the Troubleshooting page.

- -

Adding a Simulator

- -

The Firefox OS Simulator is a version of the higher layers of Firefox OS that simulates a Firefox OS device, but runs on the desktop. It runs in a window the same size as a Firefox OS device, includes the Firefox OS user interface and built-in apps, and simulates many of the Firefox OS device APIs.

- -

This means that in many cases, you don't need a real device to test and debug your app.

- -

The Simulator is big, so it doesn't ship inside Firefox but as a Firefox add-on. If you click "Install Simulator" in the Runtimes dropdown menu, you will go to a page from which you can install Simulators for various versions of Firefox OS.

- -

You can install as many as you like. Be patient, though: the Simulator is large and may take a few minutes to download. Once you've installed some Simulators you can close this "Extra Components" window, and the Simulators you've installed appear as options in the Runtimes dropdown menu:

- -

To learn more about the Simulator, see its documentation page.

- -

Custom runtimes

- -

With a custom runtime you can use an arbitrary hostname and port to connect to the remote device.

- -

Under the hood, Firefox OS devices and Android devices connect to the desktop using a program called the Android Debug Bridge, or ADB. By default, the WebIDE uses an add-on called the ADB Helper: this simplifies the process for you by installing ADB and setting up port forwarding so the Firefox desktop tools can exchange messages with the device.

- -

This is convenient in most cases, but sometimes you might want to use ADB outside of the WebIDE: for example, you might be running ADB directly from the command line. In that case you'll connect to the device by specifying a host and port using the adb forward command.
-
- If you then want to use WebIDE to connect as well, you should disable the ADB Helper add-on and connect WebIDE using the Custom runtime option, entering the host and port that you passed to adb forward.

- -

Also, the ADB Helper does not yet support connecting to Firefox for Android, so if you want to connect WebIDE to Firefox for Android, you'll need to set up your own port forwarding and use a custom runtime. See more about connecting to Firefox for Android using ADB.

- -

Selecting a runtime

- -

Once you've set up a runtime you can select it using the "Select Runtime" menu.

- - - -

Now the "play" button in the center of the WebIDE toolbar is enabled: click it to install and run the app in the selected runtime.

- -

Runtime actions

- -

When a runtime is selected, the Runtimes dropdown menu has three extra items:

- - - -

- -

- -

Creating and opening apps

- -

Under the "Open App" menu you get three options: create a new app, open a packaged app, and open a hosted app:

- -

- -

Create a new app

- -

Select "New App..." to create a new app. You'll see a dialog offering you a choice between two templates, "Privileged Empty App" and "Privileged App".

- -

- -

Both templates are from Mozilla's app template collection, and provide you with the basic structure you need to get started. The "Privileged App" shows how an app can use permissions to load cross-origin content.

- -

Once you've selected a template you'll be asked to name the app and select a directory to store the files, and then the new app is opened in the project editor.

- -

Open a packaged app

- -

Select "Open Packaged App..." to open a packaged app. You'll be asked to select a directory containing the app's manifest, and the app will be opened in the project editor.

- -

Open a hosted app

- -

Select "Open Hosted App..." to open a hosted app. You'll be asked to enter a URL pointing to the app's manifest, and the app will be opened in the project editor.

- -

Editing apps

- -

The project editor provides an environment for editing apps. There's a tree view on the left of all the files in the app: you can add and delete files here using a context menu. There's an editor pane on the right.

- -

The app summary page

- -

When you first open or create an app, the editor pane is occupied by the app summary page, which is shown below:

- -

- -

You can always get back to the app summary page by clicking on the root of the tree on the left.

- -

Manifest validation

- -

The WebIDE automatically checks the manifest for certain common problems. If it finds a problem it indicates that the app is invalid and describes the problem in the app's summary:

- -

- -

Of course, you can edit the manifest.webapp file right in the project editor as well.

- -

The source editor

- -

The WebIDE uses the CodeMirror source editor.

- -

Source editor shortcuts

- -

{{ Page ("en-US/docs/tools/Keyboard_shortcuts", "source-editor") }}

- -

Code completion

- -

When editing CSS and JavaScript, the editor provides autocomplete suggestions. CSS autocompletion is always enabled:

- -

To display autocomplete suggestions in JavaScript press Control + Space:

- -

- -

Inline documentation

- -

The editor also shows inline documentation for JavaScript. Press Shift + Space to see a popup containing documentation for the symbol your cursor is on:

- -

- -

Clicking the [docs] link in the popup will take you to the MDN page for the symbol.

- -

Saving files

- -

For changes to your files to take effect you need to save them. Files with unsaved changes get an asterisk next to their name in the tree view, and you can save files using the menu or Control+S (Command+S on Mac OS X).

- -

Removing projects

- -

To remove an app from the WebIDE, go to the app summary page and click "Remove Project".

- -

Running and debugging apps

- -

When you're ready to run the app, you need to select a runtime from the "Select Runtime" dropdown menu. If you don't have any available runtimes here, find out how to add some in Setting up runtimes.

- -

The "play" button in the center of the WebIDE toolbar is now enabled: click it to install and run the app in the selected runtime:

- -

To debug the app, click the "Pause" button and the Developer Tools Toolbox appears, connected to your app:

- -

Exactly which tools you'll have available depends on the runtime, but you will at least have the basics: the Inspector, Console, JavaScript Debugger, Style Editor, Profiler and Scratchpad. Just as in a web page, any changes you make in the tools are visible immediately in the app, but are not persistent. Conversely, any changes you make in the editor pane can be saved straight back to disk, but are not visible without restarting the app.

- -

Debugging certified apps

- -

With the Simulator, if you click on the app dropdown menu while the runtime is selected, you can see and debug not only your app but all apps running in that runtime, including certified apps:

- -

- -


- However, to debug certified apps on a real device:

- - - -

To enable certified app debugging, connect to the runtime, and then, in the menu, go to Runtime > Runtime Info. From here, if you see "DevTools restricted privileges: yes", that means certified apps can't be debugged. The path then differs depending on what you are debugging against:

- - - -

Now (or after a restart of the B2G desktop client) in the WebIDE you should see all the certified apps on the device.

- -

Monitoring performance

- -

If you're interested in the performance of your apps, there are a few ways to measure their impact on the runtime in WebIDE:

- - - -

Troubleshooting

- -

If you have any problems working with the WebIDE, see the Troubleshooting page.

- -

 

- -

 

diff --git "a/files/de/tools/webide/probleml\303\266sung/index.html" "b/files/de/tools/webide/probleml\303\266sung/index.html" deleted file mode 100644 index 1e15175d33..0000000000 --- "a/files/de/tools/webide/probleml\303\266sung/index.html" +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: WebIDE Problemlösung -slug: Tools/WebIDE/Problemlösung -translation_of: Archive/WebIDE/Troubleshooting ---- -
{{ToolsSidebar}}

Mit einem Firefox-OS-Gerät verbinden

- -

Wenn du mit dem WebIDE eine Verbindung zu deinem Firefox-OS-Gerät herstellen möchtest, das Gerät aber nicht angezeigt wird, prüfe folgendes:

- - - -

Über Wi-Fi mit Firefox OS verbinden

- - - -

Über USB mit Firefox für Android verbinden

- -

Wenn du versucht dich mit einer laufenden Firefox Anwendung auf deinem Android-Gerät zu verbinden und dieses nicht angezeigt wird, versuche folgendes:

- - - -

Über Wi-Fi mit Firefox für Android verbinden

- - - -

Verbindung zu anderen Browsern herstellen (Chrome, Safari, iOS)

- -

WebIDE nutzt Valence (Firefox Tools Adapter), um sich mit anderen Browsern, wie Chrome, Safari oder iOS, zu verbinden.

- -

Wenn du Probleme bei der Verbindung mit anderen Browsern hast, überprüfe die Installationsschritte und andere Hinweise für diese Browser auf der Valence-Seite.

- -

Manche Apps sind nicht debuggbar

- -

Wenn du der Meinung bist, dass zertifizierte Apps, eingebaute Apps oder bereits auf einem echten Gerät installierte Apps nicht debuggbar sind, dann kann dies durch die Restricted Privileges Security Policies des WebIDE (dt.: Sicherheitsrichtlinien für beschränkte Berechtigungen) ausgelöst werden. Für mehr Informationen sieh dir Unrestricted app debugging (including certified apps, main process, etc.) (dt.: Unbeschränktes App-Debugging) an.

- -

Die Projekt-Liste kann nicht geladen werden

- -

Wenn du das WebIDE in einer Firefox-Version öffnest und dann zu einer früheren Version von Firefox mit dem selben Profil wechselst, kann es passieren, dass der Fehler "Die Projekt-Liste kann nicht geladen werden" beim Öffnen des WebIDE mit der früheren Version auftritt.

- -

Dieser Fehler tritt auf, da das vom WebIDE genutzte Speicherungssystem in neuere Versionen die Daten verschiebt und restrukturiert. Somit wird die Projekt-Liste unbenutzbar für frühere Versionen

- -

Die Daten gehen dabei nicht verloren, aber du wirst die neueste Version von Firefox nutzen müssen, um deine Projekt-Liste nutzen zu können.

- -

Wenn du wirklich eine ältere Version von Firefox benutzen willst, kannst du versuchen einfach die Projekt-Liste zu löschen, dieser Weg wird jedoch nicht empfohlen und wird nicht unterstützt. Es können Probleme auftreten und Daten verloren gehen.

- -

Anleitung:

- -
    -
  1. Schließe Firefox.
  2. -
  3. Öffne den Firefox-Profil-Ordner.
  4. -
  5. Öffne den darin enthaltenen storage-Ordner.
  6. -
  7. An manchen Stellen des Dateibaums sollten Dateien oder Ordner mit folgendem Namen beginnen: 4268914080AsptpcPerjo  (gehashter Name der Datenbank). -
      -
    • Beispielsweise kann solch eine Datei im Ordner /storage/permanent/indexeddb+++fx-devtools/idb sein.
    • -
    -
  8. -
  9. Lösche alle so aussehenden Dateien und Ordner.
  10. -
  11. Starte Firefox und WebIDE neu.
  12. -
- -

Logging aktivieren

- -

Du kannst auch die ausführliche Protokollierung aktivieren, um eine genauere Diagnose zu erhalten:

- -
    -
  1. Öffne about:config.
  2. -
  3. Erstelle eine neue Einstellung, die extensions.adbhelper@mozilla.org.sdk.console.logLevel heißt. und den String-Inhalt all enthält.
  4. -
  5. Setze den Wert von extensions.adbhelper@mozilla.org.debug auf true.
  6. -
  7. Öffne den AddOns-Manager, deaktivere und reaktiviere das ADB Helper-AddOn.
  8. -
  9. Öffne die Browser-Konsole, dort kannst du nun Eintragungen mit dem Präfix adb sehen. Wenn dir diese Eintragungen nichts sagen, dann frage bitte nach Hilfe.
  10. -
- -

Hilfe bekommen

- -

Gehe in den #devtools room on IRC und es wird versucht dir zu helfen (Vorwiegend englischer IRChat).

diff --git "a/files/de/unterst\303\274tzung_von_internationalized_domain_names_(idn)_in_mozilla_browsern/index.html" "b/files/de/unterst\303\274tzung_von_internationalized_domain_names_(idn)_in_mozilla_browsern/index.html" deleted file mode 100644 index 3716f356e7..0000000000 --- "a/files/de/unterst\303\274tzung_von_internationalized_domain_names_(idn)_in_mozilla_browsern/index.html" +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Unterstützung von Internationalized Domain Names (IDN) in Mozilla Browsern -slug: Unterstützung_von_Internationalized_Domain_Names_(IDN)_in_Mozilla_Browsern -tags: - - MDC Archiv -translation_of: Mozilla/Internationalized_domain_names_support_in_Mozilla ---- -

Einführung

- -

Netscape 7.1 ist der erste kommerzielle Browser, der eine eingebaute Unterstützung für Internationalized Domain Name nach dem neuen IETF RFC von 2003 hat.

- -

Ein Internationalized Domain Name (IDN) ist eine Domain oder ein host name, der andere Buchstaben als nur die in ASCII definierten nutzt. Bis vor kurzem erlaubten Domainnamen nur eine Teilmenge von Buchstaben (der 7-bit ASCII Charset). Durch die Verbreitung des Internet in weitere Länder der Erde, in denen kein Englisch gesprochen wird, wurde es immer mehr klar, dass die Beschränkung der Nutzung von Domainnamen auf eine Teilmenge des Latin alphabet nicht ideal ist.

- -

Viele der europäischen Sprachen benutzen das lateinische Alphabet mit zusätzlichen akzentuierten Buchstaben zum Schreiben, konnten diese aber nicht in Domainnamen benutzen. Sprecher dieser Sprachen war es nicht möglich bekannte Namen in ihrer jeweiligen Sprache als Teil eines Domainnames zu verwenden.

- -

In den letzten paar Jahren gab es eine Menge an IETF Aktivitäten um die Protokolle, die beim Handling von nicht-ASCII Buchstaben in Domainnamen beteiligt sind zu standardisieren. Im März 2003 wurden drei wichtige RfCs dazu vom IETF akzeptiert (3490, 3491, 3492). Diese drei neuen RfCs machen es nun für DNS Server möglich, dass diese nicht-ASCII Domains registrieren und ermöglichen es für Hersteller von Anwendungen, dass diese standardisierten Support für die Behandlung von nicht-ASCII Buchstaben in Domainnamen einbauen.

- -

Wie IDN funktioniert

- -

Wenn ein Webbrowser einen host name wie http://developer.mozilla.org sieht, gibt er eine Anfrage an den DNS Resolver Service (ist meistens im Betriebssystem eingebaut) weiter, welcher wiederum eine Anfrage zum nächsten DNS Server sendet, der eine IP Adresse zurück liefert, die zum Hostnamen passt. Diese IP Adresse wird dann dazu benutzt um zum fraglichen Webserver zu verbinden.

- -

IDN erlaubt Host- und Domainnamen mit nicht-ASCII Zeichen als Usereingabe in die Adressleiste eines Browsers oder für URLs, die einer Website eingebunden sind. Auf der Netzwerkprotokoll-Ebene ergibt sich keine Änderung an der Einschränkung, dass nur eine Teilmenge des ASCII-Zeichensatzes verwendet werden kann. Wenn die Eingabe des Benutzers nicht-ASCII Zeichen als Teil eines Domainnamens enthält oder eine Website einen Link enthält, der nicht-ASCII Zeichen verwendet muss die Anwendung dies in eine spezielles Format umwandeln welches nur die übliche Teilmenge des ASCII Zeichensatzes verwendet. RFC 3490 (Internationalizing Domain Names in Applications (IDNA)) definiert die Zeichen die in IDN benutzt werden. Auch definiert dieser wie eine Anwendung nicht-ASCII Zeichen auf so eine Weise verarbeiten soll, dass diese im Einklang steht mit bestehenden Restriktionen in Hinblick auf host names.

- -

Wie die Mozilla Browser nicht-ASCII Domainnamen behandeln

- -

Unicode und Nameprep

- -

Wenn Mozilla von einem Benutzer eine IDN Eingabe über die Adressleiste empfängt oder eine Anfrage nicht-ASCII host name links zu verarbeiten vorliegt, wandelt es zuerst diese Eingabe in Unicode um. Anschließend normalisiert und validiert es diese Eingabe um diese konform zu den Anforderungen an einen URI zu machen.

- -

Der Prozess wandelt Großbuchstaben in Kleinbuchstaben um, vereinheitlicht Zeichen mit mehreren Darstellungsweisen, z.B. die Umwandlung von Kana Zeichen halber Breite im Japanischen in Zeichen mit voller Breite, entfernt verbotene Zeichen (z.B. Leerzeichen), eliminiert Zweideutigkeiten in bidirektionalem Text (z.B. Arabisch und Hebräisch) und prüft ob nicht zugewiesene Zeichen aus dem Unicode Zeichenraum verwendet werden - diese werden für "query strings" erlaubt, sind aber bei "stored strings" wie z.B. bei der Dateneingabe für eine Domainregistrierung verboten.

- -

Dieser Prozess wird "Nameprep" genannt und wird nach dem RFC 3491 (en) (Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)) und dem RFC 3454 (en) (Preparation of Internationalized Strings ("stringprep")) ausgeführt.

- -

ASCII-kompatible Kodierung (ACE)

- -

Der nächste Schritt ist die Umwandlung der 8-Bit Zeichen in Unicode zu 7-Bit Zeichen, die nur bestimmte ASCII Zeichen verwenden dürfen. Während der Diskussionsphase von der Entwicklung des IDN Protokolls gab es ein paar konkurrierende, ASCII-kompatible Kodierungsschema (aka ASCII-compatible encoding (ACE)), aber man konnte sich schließlich darauf einigen einen Typ von ACE, der "Punnycode" genannt wird, zu standardisieren. Dieser ist definiert im RFC 3492 (en) (Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)).

- -

Der Punnycode Vorschlag nutzt nur eine beschränkte Anzahl von ASCII Zeichen und Nummern (a-z0-0) und den Bindestrich (-). Er wurde als sprachunabhängig, überlegen in der Kompression, kompakt in Hinsicht auf die Codegröße, round-trip safe und überlegen in Hinsicht auf die Kodierung von chinesischen/japanischen/koreanischen Zeichen dargestellt.

- -

Der letzte Schritt des Prozesses ist es, dass ACE Präfix der Ausgabe der Nameprep/stringprep und Punnycode Verarbeitung voranzustellen. Da Punnycode nur ASCII Zeichen enthält, ist es möglich, dass sich diese Ausgabe, wenn auch unwahrscheinlich, mit einem existierenden Domainnamen deckt. Um so eine Kollision zu vermeiden definiert RFC 3490 ein spezielles Präfix, nämlich "xn--", für die Ausgabe des ACE (Punnycode). Andere Kodierungen benutzen andere Präfixe, z.B. "bq--" bei RACE, aber all diese außer dem Standard Präfix "xn--" für ACE sind jetzt in IDN verboten.

- -

Domainnamen-Registrierung

- -

Nachdem die technischen Standards vom IETF eingeführt wurden, war das letzte noch verbleibende Problem, dass sich die Registrare auf eine internationale Richtlinie zur Verwendung von IDN Zeichen einigen müssen. Dies wurde mit der Veröffentlichung der ICANN Richtlinie für IDN (en) im Juni 2003 bewerkstelligt. Diese Richtlinie erlaubt es Domainnamen Registraren in jedem Land die Nutzung von bestimmten Zeichen in Domainnamen zu beschränken. Da das Unicode Repertoire Zeichen enthält, die in keiner lebenden Sprache mehr verwendet werden und es auch Zeichen gibt, die in den meisten Sprachen nicht für die Erstellung von URIs/URLs geeignet sind, erlaubt die ICANN Richtlinie dem governing body den Registraren jedes Landes angemessene Beschränkungen für die Benutzung solcher Zeichen zu setzen.

- -

Da dieses letzte Hindernis für eine Standardisierung nun aus dem Weg geräumt wurde, wird erwartet, dass die Registrare schnell voranschreiten um diese neuen RFCs für existierende und kommende IDN Registrierungen einzuführen.

- -

Der JPRS (Japan Registry Service (en)) hat sich dazu entschieden die neue RFC Implementierung (en) am 10. Juli 2003, nur ein paar Wochen nachdem die Richtlinie des ICANN veröffentlich wurde, einzuführen. Dies macht es für Netscape 7.1/Mozilla 1.4 User möglich japanische Domainnamen unter der Topleveldomain .jp ohne weitere Änderungen nur mit der eingebauten IDN-Funktionalität aufzurufen.

- -

 

- -

Beispiele aus der Wirklichkeit

- -

Punycode

- -

Es gibt einige Beispiele von IDN, die Sie mit Netscape 7.1 testen können, welcher Punycode als standardmäßiges IDN Encoding nutzt. Zum Beispiel können die meisten Beispiellinks auf den folgenden Testseiten ohne weitere Einstellungen benutzt werden:

- - - -

Seit July 10, 2003 und danach, kann man eine Vielzahl von japanischen Domain name Seiten unter der .jp Toplevel-Domain ohne weitere Einstellungen in Netscape 7.1/Mozilla 1.4 erreichen:

- - - -

RACE (Row-based ASCII Compatible Encoding)

- -

Fast alle IDN Registrierungsdaten werden zu Punycode bis zum Ende 2003 verändert. Einige Länder werden schnell dabei sein, z.B. Japan wie oben genannt, aber andere wie .com und .net Toplevel-Domains werden länger brauchen.

- -

Die meisten der existierenden Seiten nutzen das ASCII-kompatible Encoding, welches als RACE oder "Row-based ASCII Compatible Encoding" bekannt ist, welches allerdings  kein akzeptierter Standard von IETF. Wenn Sie IDN Testseiten unter .com und .net Toplevel-Domains finden und wenn Sie nicht auf diese Seiten zugreifen können, sollten Sie den folgenden Workaround nutzen, bis Punycode komplett vorhanden ist:

- -

Netscape 7.1 oder Mozilla 1.4:

- -
    -
  1. Tippen Sie about:config in die Adressleiste. Es werden alle Präferenzen für Ihr System angezeigt. Diese Einstellungen können geändert werden oder neue können erstellt werden ohne, dass der Browser beendet werden muss.
  2. -
  3. Erstellen Sie einen neuen Eintrag über Neu > String über einen rechts-Klick. Der Name lautet: network.IDN_prefix. Der Wert sollte "bq--" lauten. Das wird von Puncycode auf RACE umschalten.
  4. -
  5. Als nächstes erstellen Sie einen weiteren Eintrag über rechts-Klick Neu > Boolean. Der Name lautet: network.IDN_testbed. Der Wert sollte "true" lauten.
  6. -
  7. Jetzt wechseln Sie auf eine IDN Seite unter .com und .net Toplevel-Domain. Sie sollten erfolgreich auf eine dieser Beispielseiten landen.
  8. -
  9. Vergessen Sie nicht den Wert dieser Einstellungen auf "default" zu setzen, wenn Sie mit dem Testen fertig sind!
  10. -
- -

Vorbehalte und Rückschlüsse

- -

Netscape 7.1/Mozilla 1.4 verfügt über eine gute Unterstützung von Internationalized Domain Names und ist der erste Browser mit eingebautem Support für neue RFC's für IDN vom IETF. Das bedeutet, dass es nicht länger notwendig ist, dass ein Plug-in für nicht-ASCII Domain names installiert werden muss.

- -

Netscape/Mozillas Unterstützung für IDN ist nicht ohne Fehler. Ein bemerkenswerter Fehler ist, dass nicht-ASCII names nicht immer richtig in allen UI Bereichen angezeigt werden. Nicht-ASCII names werden nicht immer in der Adresszeile dargestellt, da ACE zu Unicode Umwandlung noch nicht implementiert ist.

- -

IDN ist ein globaler Trend und wird von einer Großzahl von Seiten angenommen und machen es für durchschnittliche Internetuser außerdem einfacher Webseiten zu finden. Viele Webseiten rund um die Welt sind werden ihre host names mit der entsprechenden Domain name Registrierung für ihre Toplevel-Domains einrichten. Netscape 7.1 und Mozilla 1.4 spielen dabei eine signifikante Rolle, damit IDN weiter entwickelt wird.

- -

Original author: Katsuhiko Momoi

- -

 

diff --git a/files/de/web/api/l10n.language.direction/index.html b/files/de/web/api/l10n.language.direction/index.html deleted file mode 100644 index c469794d54..0000000000 --- a/files/de/web/api/l10n.language.direction/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: L10n.language.direction -slug: Web/API/L10n.language.direction -translation_of: Archive/B2G_OS/API/L10n/language/direction ---- -
{{ non-standard_header() }}
- -
 
- -
-

The language.direction property returns the direction (ltr or rtl) of the currently active language.

-
- -

Syntax

- -
var languageCode = navigator.mozL10n.language.direction;
- -

Value

- -

Returns the direction of the currently active language (ltr or rtl).

- -

Example

- -
navigator.mozL10n.ready(function() {
-  console.log('The current language's direction is ' + navigator.mozL10n.language.direction);
-});
-
- -

Specification

- -

Not part of any specification.

- -

See also

- - - - diff --git a/files/de/web/api/mozmobileconnection/index.html b/files/de/web/api/mozmobileconnection/index.html deleted file mode 100644 index f4d2882aab..0000000000 --- a/files/de/web/api/mozmobileconnection/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: MozMobileConnection -slug: Web/API/MozMobileConnection -translation_of: Archive/B2G_OS/API/MozMobileConnection ---- -

{{APIRef("Firefox OS")}} {{ non-standard_header() }}

- -

{{ B2GOnlyHeader2('certified') }}

- -
-

This API is used to get information about the current mobile voice and data connection states of the device. It is accessible through {{domxref("window.navigator.mozMobileConnections","navigator.mozMobileConnections")}}, which returns an array of MozMobileConnection objects.

-
- -
-

Note: The syntax used to be window.navigator.mozMobileConnection, returning a single MozMobileConnection object, but this was updated in Firefox 1.3 due to the introduction of Multi-SIM support (Dual-SIM-Dual-Standby or DSDS).

-
- -

Interface overview

- -
callback EventHandler = any (Event event);
-
-interface MozMobileConnection : EventTarget
-{
-  const long ICC_SERVICE_CLASS_VOICE = (1 << 0);
-  const long ICC_SERVICE_CLASS_DATA = (1 << 1);
-  const long ICC_SERVICE_CLASS_FAX = (1 << 2);
-  const long ICC_SERVICE_CLASS_SMS = (1 << 3);
-  const long ICC_SERVICE_CLASS_DATA_SYNC = (1 << 4);
-  const long ICC_SERVICE_CLASS_DATA_ASYNC = (1 << 5);
-  const long ICC_SERVICE_CLASS_PACKET = (1 << 6);
-  const long ICC_SERVICE_CLASS_PAD = (1 << 7);
-  const long ICC_SERVICE_CLASS_MAX = (1 << 7);
-
-  readonly attribute MozMobileConnectionInfo voice;
-  readonly attribute MozMobileConnectionInfo data;
-  readonly attribute DOMString networkSelectionMode;
-  readonly attribute DOMString iccId;
-
-  DOMRequest getNetworks();
-  DOMRequest selectNetwork(MozMobileNetworkInfo network);
-  DOMRequest selectNetworkAutomatically();
-  DOMRequest sendMMI(DOMString mmi);
-  DOMRequest cancelMMI();
-  DOMRequest setCallForwardingOption(MozMobileCFInfo CFInfo);
-  DOMRequest getCallForwardingOption(unsigned short reason);
-
-  attribute EventHandler onvoicechange;
-  attribute EventHandler ondatachange;
-  attribute EventHandler onussdreceived;
-  attribute EventHandler ondataerror;
-  attribute EventHandler oncfstatechange;
-};
-
- -

Properties

- -
-
 
-
{{domxref("MozMobileConnection.voice")}} {{readonlyinline}}
-
A {{domxref("MozMobileConnectionInfo")}} object that gives access to information about the voice connection.
-
{{domxref("MozMobileConnection.data")}} {{readonlyinline}}
-
A {{domxref("MozMobileConnectionInfo")}} object that gives access to information about the data connection.
-
{{domxref("MozMobileConnection.iccId")}} {{readonlyinline}}
-
A string that indicates the Integrated Circuit Card Identifier of the SIM this mobile connection corresponds to.
-
{{domxref("MozMobileConnection.networkSelectionMode")}} {{readonlyinline}}
-
A string that indicates the selection mode of the voice and data networks.
-
{{domxref("MozMobileConnection.oncfstatechange")}}
-
A handler for the {{event("cfstatechange")}} event. This event is fired when the call forwarding state changes.
-
{{domxref("MozMobileConnection.ondatachange")}}
-
A handler for the {{event("datachange")}} event. This event is fired whenever the {{domxref("MozMobileConnection.data","data")}} connection object changes values.
-
{{domxref("MozMobileConnection.ondataerror")}}
-
A handler for the {{event("dataerror")}} event. This event is fired whenever the {{domxref("MozMobileConnection.data","data")}} connection object receive an error from the RIL.
-
{{domxref("MozMobileConnection.onussdreceived")}}
-
A handler for the {{event("ussdreceived")}} event. This event is fired whenever a new USSD message is received.
-
{{domxref("MozMobileConnection.onvoicechange")}}
-
A handler for the {{event("voicechange")}} event. This event is fired whenever the {{domxref("MozMobileConnection.voice","voice")}} connection object changes.
-
- -

Constants

- - - -

Methods

- -
-

Note: All original methods from the MozMobileConnection interface are fully asynchronous. They all return a {{domxref("DOMRequest")}} which has a onsuccess and onerror event handler to handle the success or failur of the method call.

-
- -
-
{{domxref("MozMobileConnection.cancelMMI()")}}
-
Cancel the current MMI request if one exists.
-
{{domxref("MozMobileConnection.getCallForwardingOption()")}}
-
Queries current call forward options.
-
{{domxref("MozMobileConnection.getNetworks()")}}
-
Search for available networks.
-
{{domxref("MozMobileConnection.selectNetwork()")}}
-
Manually selects a network, overriding the radio's current selection.
-
{{domxref("MozMobileConnection.selectNetworkAutomatically()")}}
-
Tell the radio to automatically select a network.
-
{{domxref("MozMobileConnection.sendMMI()")}}
-
Send a MMI message.
-
{{domxref("MozMobileConnection.setCallForwardingOption()")}}
-
Configures call forward options.
-
- -

The MozMobileConnection interface also inherit from the {{domxref("EventTarget")}} interface

- -

{{page("/en-US/docs/DOM/EventTarget","Methods")}}

- -

Specification

- -

Not part of any specification

- -

See also

- - diff --git a/files/de/web/api/mozmobileconnection/selectnetworkautomatically/index.html b/files/de/web/api/mozmobileconnection/selectnetworkautomatically/index.html deleted file mode 100644 index 242901b1c2..0000000000 --- a/files/de/web/api/mozmobileconnection/selectnetworkautomatically/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: MozMobileConnection.selectNetworkAutomatically -slug: Web/API/MozMobileConnection/selectNetworkAutomatically -translation_of: Archive/B2G_OS/API/MozMobileConnection/selectNetworkAutomatically ---- -

{{APIRef("Firefox OS")}} {{ non-standard_header() }}

- -

{{ B2GOnlyHeader2('certified') }}

- -

Summary

- -

The selectNetworkAutomatically method is used to tell the radio to automatically select a network.

- -
-

Note: If the network is actually changed by this request, the voicechange and datachange events are fired.

-
- -

Syntax

- -
var request = navigator.mozMobileConnection.selectNetworks();
- -

Return

- -

A {{domxref("DOMRequest")}} object to handle the success or failure of the method call.

- -

If the request fails, the request's error is one of:

- - - -

Example

- -
var switchNetwork = navigator.mozMobileConnection.selectNetworkAutomatically();
-
-switchNetwork.onsuccess = function () {
-  console.log('Successful switch');
-}
-
-switchNetwork.onerror = function () {
-  console.log('Unable to switch: ' + this.error.name);
-}
-
- -

Specification

- -

Not part of any specification.

- -

See also

- - diff --git a/files/de/web/css/-moz-binding/index.html b/files/de/web/css/-moz-binding/index.html deleted file mode 100644 index c59286c421..0000000000 --- a/files/de/web/css/-moz-binding/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: '-moz-binding' -slug: Web/CSS/-moz-binding -tags: - - CSS - - CSS Referenz - - NeedsBrowserCompatibility - - NeedsMobileBrowserCompatibility - - NeedsUpdate - - Non-standard - - XBL -translation_of: Archive/Web/CSS/-moz-binding ---- -
{{Non-standard_header}}{{CSSRef}}{{Deprecated_Header(57)}}
- -

Übersicht

- -

Die -moz-binding CSS Eigenschaft wird bei Mozilla basierten Anwendungen dazu verwendet, XBL Bindings an ein DOM Element anzufügen.

- -

{{cssinfo}}

- -

Syntax

- -
/* <uri> Wert */
--moz-binding: url(http://www.example.org/xbl/htmlBindings.xml#checkbox);
-
-/* Globale Werte */
--moz-binding: inherited;
--moz-binding: initial;
--moz-binding: unset;
-
- -

Werte

- -
-
<uri>
-
Die URI für ein XBL Binding (inclusive dem Fragmentidentifizier).
-
none
-
Kein XBL Binding wird auf das Element angewandt.
-
- -

Formale Syntax

- -
{{csssyntax}}
- -

Beispiel

- -
.beispieleins {
-  -moz-binding: url(http://www.example.org/xbl/htmlBindings.xml#radiobutton);
-}
- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Browser Kompatibilität

- -{{Compat("css.properties.-moz-binding")}} - -

Siehe auch

- - diff --git a/files/de/web/css/-moz-border-bottom-colors/index.html b/files/de/web/css/-moz-border-bottom-colors/index.html deleted file mode 100644 index 04c5583e52..0000000000 --- a/files/de/web/css/-moz-border-bottom-colors/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: '-moz-border-bottom-colors' -slug: Web/CSS/-moz-border-bottom-colors -tags: - - CSS - - CSS Eigenschaft - - CSS Referenz - - Non-standard -translation_of: Archive/Web/CSS/-moz-border-bottom-colors ---- -
{{Non-standard_header}}{{CSSRef}}
- -

In Mozilla Anwendungen wie Firefox setzt die -moz-border-bottom-colors CSS Eigenschaft eine Liste von Farben für den unteren Rahmen.

- -

Wenn ein Element einen Rand hat, der größer ist als ein einzelner CSS-Pixel, verwendet jede Zeile von Pixeln die nächste Farbe, die in dieser Eigenschaft angegeben wurde, von außen nach innen. Dies beseitigt die Notwendigkeit von verschachtelten Boxen. Falls der Rand breiter ist als die Anzahl der definierten Farben, wird der verbleibende Teil des Randes in der innersten Farbe gezeichnet.

- -

{{cssinfo}}

- -

Sie wird nicht angewendet

- -
    -
  1. wenn {{cssxref("border-style")}} dashed oder dotted ist.
  2. -
  3. auf Tabellen mit border-collapse: collapse.
  4. -
- -

Syntax

- -
/* Einzelner <color> Wert */
--moz-border-bottom-colors: #f0f0f0;
-
-/* Mehrere <color> Werte */
--moz-border-bottom-colors: #f0f0f0 #a0a0a0 #505050 #000000;
-
-/* Globale Werte */
--moz-border-bottom-colors: inherit;
--moz-border-bottom-colors: initial;
--moz-border-bottom-colors: unset;
-
- -

Akzeptiert eine durch Leerzeichen getrennte Liste von Farbwerten.

- -
-
<color>
-
Definiert die Farbe einer Linie von Pixeln des unteren Randes. transparent ist gültig. Siehe {{cssxref("<color>")}} Werte für mögliche Einheiten.
-
none
-
Es werden keine Farben gezeichnet oder {{cssxref("border-color")}} verwendet, falls angegeben.
-
- -

Formale Syntax

- -
{{csssyntax}}
- -

Beispiel

- -
<div id="example">Beispiel</div>
-
- -
#example {
-  padding: 20px;
-  background-color: gray;
-  border: 10px solid black;
-  -moz-border-top-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0;
-  -moz-border-right-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0;
-  -moz-border-bottom-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0;
-  -moz-border-left-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0;
-}
-
- -

{{EmbedLiveSample("Beispiel", 120, 90)}}

- -

Spezifikationen

- -

Diese Eigenschaft ist nicht Teil irgendeiner Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.7")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
MerkmalAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Siehe auch

- - diff --git a/files/de/web/css/-moz-border-left-colors/index.html b/files/de/web/css/-moz-border-left-colors/index.html deleted file mode 100644 index a9d2006c1d..0000000000 --- a/files/de/web/css/-moz-border-left-colors/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: '-moz-border-left-colors' -slug: Web/CSS/-moz-border-left-colors -tags: - - CSS - - CSS Eigenschaft - - CSS Referenz - - Non-standard -translation_of: Archive/Web/CSS/-moz-border-left-colors ---- -
{{Non-standard_header}}{{CSSRef}}
- -

In Mozilla-Anwendungen wie Firefox, setzt die {{cssxref("-moz-border-left-colors")}} CSS Eigenschaft eine Liste von Farben für den linken Rand.

- -

Wenn ein Element einen Rand hat, der größer ist als ein einzelner CSS-Pixel, verwendet jede Zeile von Pixeln die nächste Farbe, die in dieser Eigenschaft angegeben wurde, von außen nach innen. Dies beseitigt die Notwendigkeit von verschachtelten Boxen. Falls der Rand breiter ist als die Anzahl der definierten Farben, wird der verbleibende Teil des Randes in der innersten Farbe gezeichnet.

- -

{{cssinfo}}

- -

Sie wird nicht angewendet

- -
    -
  1. wenn {{cssxref("border-style")}} dashed oder dotted ist.
  2. -
  3. auf Tabellen mit border-collapse: collapse.
  4. -
- -

Syntax

- -
/* Einzelner <color> Wert */
--moz-border-left-colors: #f0f0f0;
-
-/* Mehrere <color> Werte */
--moz-border-left-colors: #f0f0f0 #a0a0a0 #505050 #000000;
-
-/* Globale Werte */
--moz-border-left-colors: inherit;
--moz-border-left-colors: initial;
--moz-border-left-colors: unset;
-
- -

Werte

- -

Akzeptiert eine durch Leerzeichen getrennte Liste von Farbwerten.

- -
-
<color>
-
Definiert die Farbe einer Linie von Pixeln des linken Randes. transparent ist gültig. Siehe {{cssxref("<color>")}} Werte für mögliche Einheiten.
-
none
-
Es werden keine Farben gezeichnet oder {{cssxref("border-color")}} verwendet, falls angegeben.
-
- -

Formale Syntax

- -
{{csssyntax}}
- -

Beispiel

- -
<div id="example">Beispiel</div>
-
- -
#example {
-  padding: 20px;
-  background-color: gray;
-  border: 10px solid black;
-  -moz-border-top-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0;
-  -moz-border-right-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0;
-  -moz-border-bottom-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0;
-  -moz-border-left-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0;
-}
-
- -

{{EmbedLiveSample("Beispiel", 120, 90)}}

- -

Spezifikationen

- -

Diese Eigenschaft ist nicht Teil irgendeiner Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.7")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
MerkmalAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Siehe auch

- - diff --git a/files/de/web/css/-moz-border-right-colors/index.html b/files/de/web/css/-moz-border-right-colors/index.html deleted file mode 100644 index 787c70a6fa..0000000000 --- a/files/de/web/css/-moz-border-right-colors/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: '-moz-border-right-colors' -slug: Web/CSS/-moz-border-right-colors -tags: - - CSS - - CSS Eigenschaft - - CSS Referenz - - Non-standard -translation_of: Archive/Web/CSS/-moz-border-right-colors ---- -
{{Non-standard_header}}{{CSSRef}}{{Obsolete_Header(59)}}
- -

In Mozilla-Anwendungen wie Firefox, setzt die {{cssxref("-moz-border-top-colors")}} CSS Eigenschaft eine Liste von Farben für den rechten Rand.

- -

Wenn ein Element einen Rand hat, der größer ist als ein einzelner CSS-Pixel, verwendet jede Zeile von Pixeln die nächste Farbe, die in dieser Eigenschaft angegeben wurde, von außen nach innen. Dies beseitigt die Notwendigkeit von verschachtelten Boxen. Falls der Rand breiter ist als die Anzahl der definierten Farben, wird der verbleibende Teil des Randes in der innersten Farbe gezeichnet.

- -

{{cssinfo}}

- -

Sie wird nicht angewendet

- -
    -
  1. wenn {{cssxref("border-style")}} dashed oder dotted ist.
  2. -
  3. auf Tabellen mit border-collapse: collapse.
  4. -
- -

Syntax

- -
/* Einzelner <color> Wert */
--moz-border-right-colors: #f0f0f0;
-
-/* Mehrere <color> Werte */
--moz-border-right-colors: #f0f0f0 #a0a0a0 #505050 #000000;
-
-/* Globale Werte */
--moz-border-right-colors: inherit;
--moz-border-right-colors: initial;
--moz-border-right-colors: unset;
-
- -

Werte

- -

Akzeptiert eine durch Leerzeichen getrennte Liste von Farbwerten.

- -
-
<color>
-
Definiert die Farbe einer Linie von Pixeln des rechten Randes. transparent ist gültig. Siehe {{cssxref("<color>")}} Werte für mögliche Einheiten.
-
none
-
Es werden keine Farben gezeichnet oder {{cssxref("border-color")}} verwendet, falls angegeben.
-
- -

Formale Syntax

- -
{{csssyntax}}
- -

Beispiel

- -
<div id="example">Beispiel</div>
-
- -
#example {
-  padding: 20px;
-  background-color: gray;
-  border: 10px solid black;
-  -moz-border-top-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0;
-  -moz-border-right-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0;
-  -moz-border-bottom-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0;
-  -moz-border-left-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0;
-}
-
- -

{{EmbedLiveSample("Beispiel", 120, 90)}}

- -

Spezifikationen

- -

Diese Eigenschaft ist nicht Teil irgendeiner Spezifikation.

- -

Browser Kompatibilität

- -{{Compat("css.properties.-moz-border-right-colors")}} - -

Siehe auch

- - diff --git a/files/de/web/css/-moz-border-top-colors/index.html b/files/de/web/css/-moz-border-top-colors/index.html deleted file mode 100644 index 79f324ceb0..0000000000 --- a/files/de/web/css/-moz-border-top-colors/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: '-moz-border-top-colors' -slug: Web/CSS/-moz-border-top-colors -tags: - - CSS - - CSS Eigenschaft - - CSS Referenz - - Non-standard -translation_of: Archive/Web/CSS/-moz-border-top-colors ---- -
{{Non-standard_header}}{{CSSRef}}
- -

In Mozilla-Anwendungen wie Firefox, setzt die {{cssxref("-moz-border-top-colors")}} CSS Eigenschaft eine Liste von Farben für den oberen Rand.

- -

Wenn ein Element einen Rand hat, der größer ist als ein einzelner CSS-Pixel, verwendet jede Zeile von Pixeln die nächste Farbe, die in dieser Eigenschaft angegeben wurde, von außen nach innen. Dies beseitigt die Notwendigkeit von verschachtelten Boxen. Falls der Rand breiter ist als die Anzahl der definierten Farben, wird der verbleibende Teil des Randes in der innersten Farbe gezeichnet.

- -

{{cssinfo}}

- -

Sie wird nicht angewendet

- -
    -
  1. wenn {{cssxref("border-style")}} dashed oder dotted ist.
  2. -
  3. auf Tabellen mit border-collapse: collapse.
  4. -
- -

Syntax

- -
/* Einzelner <color> Wert */
--moz-border-top-colors: #f0f0f0;
-
-/* Mehrere <color> Werte */
--moz-border-top-colors: #f0f0f0 #a0a0a0 #505050 #000000;
-
-/* Globale Werte */
--moz-border-top-colors: inherit;
--moz-border-top-colors: initial;
--moz-border-top-colors: unset;
-
- -

Werte

- -

Akzeptiert eine durch Leerzeichen getrennte Liste von Farbwerten.

- -
-
<color>
-
Definiert die Farbe einer Linie von Pixeln des oberen Randes. transparent ist gültig. Siehe {{cssxref("<color>")}} Werte für mögliche Einheiten.
-
none
-
Es werden keine Farben gezeichnet oder {{cssxref("border-color")}} verwendet, falls angegeben.
-
- -

Formale Syntax

- -
{{csssyntax}}
- -

Beispiel

- -
<div id="example">Beispiel</div>
-
- -
#example {
-  padding: 20px;
-  background-color: gray;
-  border: 10px solid black;
-  -moz-border-top-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0;
-  -moz-border-right-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0;
-  -moz-border-bottom-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0;
-  -moz-border-left-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0;
-}
-
- -

{{EmbedLiveSample("Beispiel", 120, 90)}}

- -

Spezifikationen

- -

Diese Eigenschaft ist nicht Teil irgendeiner Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.7")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
MerkmalAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Siehe auch

- - diff --git a/files/de/web/css/-moz-stack-sizing/index.html b/files/de/web/css/-moz-stack-sizing/index.html deleted file mode 100644 index 40e35d798f..0000000000 --- a/files/de/web/css/-moz-stack-sizing/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: '-moz-stack-sizing' -slug: Web/CSS/-moz-stack-sizing -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsLiveSample - - Non-standard - - XUL -translation_of: Archive/Web/CSS/-moz-stack-sizing ---- -
{{Non-standard_header}}{{CSSRef}}{{gecko_minversion_header("1.9.1")}}
- -

Übersicht

- -

-moz-stack-sizing ist eine erweiterte CSS Eigenschaft. Normalerweise ändert ein {{XULElem("stack")}} seine Größe, sodass alle seine Kindelemente komplett sichtbar sind. Zum Beispiel führt das Verschieben eines Kindelements ganz nach rechts innerhalb eines Stacks dazu, dass der Stack verbreitert wird, sodass das Kindelement sichtbar bleibt.

- -

Falls es erwünscht ist, den Stack an der automatischen Größenänderung zur Unterbringung aller Kinder zu hindern, kann -moz-stack-sizing beim Kindelement auf ignore gesetzt werden. Die Eigenschaft wird nicht für den Stack selbst, sondern auf dessen Kindelemente gesetzt. Dies erlaubt es, bestimmte Kindelemente zu ignorieren, die anderen aber nicht.

- -

Hinweis: In früheren Gecko Versionen war es möglich, das Problem zu umgehen, indem sehr große negative untere und rechte Außenabstände für das Stackelement angegeben wurden und gleichgroße positive untere und rechte Außenabstände für die Kindelemente, die nicht ignoriert werden sollten. (Das Problem betraf nicht Kindelemente, die über oder links vom Stack verschoben wurden.)

- -

{{cssinfo}}

- -

Syntax

- -
/* Schlüsselwortwerte */
--moz-stack-sizing: stretch-to-fit;
--moz-stack-sizing: ignore;
-
-/* Globale Werte */
--moz-stack-sizing: inherit;
--moz-stack-sizing: initial;
--moz-stack-sizing: unset;
-
- -

Werte

- -
-
stretch-to-fit
-
Das Kindelement beeinflusst die Größe des Stacks.
-
ignore
-
Der Stack wird das Kind bei der Berechnung seiner Größe nicht berücksichtigen.
-
- -

Formale Syntax

- -
{{csssyntax}}
- -

Beispiele

- -
.mainsheet {
-  -moz-stack-sizing: ignore;
-}
-
- -

Siehe auch

- -

{{bug("346189")}}

diff --git a/files/de/web/css/-moz-text-blink/index.html b/files/de/web/css/-moz-text-blink/index.html deleted file mode 100644 index 40ee555a03..0000000000 --- a/files/de/web/css/-moz-text-blink/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: '-moz-text-blink' -slug: Web/CSS/-moz-text-blink -tags: - - CSS - - CSS Referenz - - 'CSS:Mozilla Extensions' -translation_of: Archive/Web/CSS/-moz-text-blink ---- -
{{CSSRef}}{{non-standard_header}}{{deprecated_header}}
- -

Übersicht

- -

Die nicht standardisierte -moz-text-blink Mozilla CSS Eigenschaft definiert den Blinkmodus.

- -
-

Firefox, der der einzige große Browser ist, der diese Eigenschaft unterstützt, hat die Unterstützung in Firefox 26 aufgegeben. Diese Eigenschaft wird nun in keinem Browser mehr unterstützt.

-
- -

{{cssinfo}}

- -

Syntax

- -
{{csssyntax}}
- -

Werte

- -
-
none
-
Produziert kein Blinken.
-
blink
-
Text blinkt. Beachte, dass Text nicht blinken zu lassen eine Technik ist, um  Checkpoint 3.3 der WAI-UAAG zu erfüllen.
-
- -

Beispiel

- -
.example {
-  -moz-text-blink: blink;
-}
- -

Spezifikationen

- -

Diese Eigenschaft wurde in einem alten Entwurf der CSS 3 Text Spezifikation definiert. Neuere Versionen haben die Definition entfernt.

- -

Browser Kompatibilität

- -{{Compat("css.properties.-moz-text-blink")}} diff --git a/files/de/web/css/-moz-window-shadow/index.html b/files/de/web/css/-moz-window-shadow/index.html deleted file mode 100644 index 9571b99e0d..0000000000 --- a/files/de/web/css/-moz-window-shadow/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: '-moz-window-shadow' -slug: Web/CSS/-moz-window-shadow -tags: - - CSS - - CSS Eigenschaft - - NeedsCompatTable - - Non-standard - - Referenz - - XUL -translation_of: Archive/Web/CSS/-moz-window-shadow ---- -
{{Non-standard_header}}{{CSSRef}}{{gecko_minversion_header("1.9.1")}}
- -

Übersicht

- -

Die -moz-window-shadow CSS Eigenschaft bestimmt, ob ein Fenster einen Schatten wirft oder nicht. Sie funktioniert nur unter Mac OS X.

- -
-

Diese Eigenschaft ist nicht standardisiert und kann ab Firefox 44 nicht mehr in Webseiten verwendet werden.

-
- -

{{cssinfo}}

- -

Firefox 3 hat die Unterstützung für transparente Fenster unter Mac OS X hinzugefügt. Jedoch waren für diese Fenster Schatten deaktiviert und es gab keine Möglichkeit, diese zu aktivieren.

- -

In Firefox 3.5 wurde der Standardwert geändert; alle Fenster haben nun einen Schatten. Es wurde die -moz-window-shadow CSS Eigenschaft eingeführt, um umgewollte Schatten ausschalten zu können.

- -

Syntax

- -
{{csssyntax}}
- -

Werte

- -
-
default
-
Das Fenster wirft einen Schatten mit dem Standard Fensterschattenstil.
-
menu {{gecko_minversion_inline("2.0")}}
-
Das Fenster hat einen Schatten, der für Menüs passend ist.
-
tooltip {{gecko_minversion_inline("2.0")}}
-
Das Fenster hat einen Schatten, der für Tooltips passend ist.
-
sheet {{gecko_minversion_inline("2.0")}}
-
Das Fenster hat einen Schatten, der für Sheetfenster passend ist.
-
none
-
Das Fenster hat keinen Schatten.
-
- -

Beispiele

- -
.KUI-panel {
-  -moz-window-shadow: none;
-}
-
diff --git a/files/de/web/css/_colon_-moz-full-screen-ancestor/index.html b/files/de/web/css/_colon_-moz-full-screen-ancestor/index.html deleted file mode 100644 index c14ed802c6..0000000000 --- a/files/de/web/css/_colon_-moz-full-screen-ancestor/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: ':-moz-full-screen-ancestor' -slug: 'Web/CSS/:-moz-full-screen-ancestor' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsExample - - Non-standard - - Pseudoklasse -translation_of: 'Archive/Web/CSS/:-moz-full-screen-ancestor' ---- -
{{CSSRef}}{{non-standard_header}}
- -

Die :-moz-full-screen-ancestor CSS Pseudoklasse passt auf alle Vorfahren des Vollbild-Elements außer beinhaltende Frames in Elterndokumenten, welche das Vollbild-Element in ihren eigenen Dokumenten sind. Jedoch passt diese Pseudoklasse auf die Vorfahren dieser Elemente.

- -

Beispiele

- -

Benötigt Beispiele.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatUnknown}}{{CompatGeckoDesktop("10.0")}}{{property_prefix("-moz")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatUnknown}}{{CompatGeckoMobile("10.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Siehe auch

- - diff --git a/files/de/web/css/_colon_-moz-lwtheme-brighttext/index.html b/files/de/web/css/_colon_-moz-lwtheme-brighttext/index.html deleted file mode 100644 index 1b9aca10dd..0000000000 --- a/files/de/web/css/_colon_-moz-lwtheme-brighttext/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: ':-moz-lwtheme-brighttext' -slug: 'Web/CSS/:-moz-lwtheme-brighttext' -tags: - - CSS - - CSS Referenz - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/:-moz-lwtheme-brighttext' ---- -
{{CSSRef}}{{non-standard_header}}
- -

Übersicht

- -

Die :-moz-lwtheme-brighttext Pseudoklasse matcht in Chrome-Dokumenten, wenn {{cssxref(":-moz-lwtheme")}} true ist und ein Lightweight Theme mit heller Farbe ausgewählt ist.

- -

Siehe auch

- - diff --git a/files/de/web/css/_colon_-moz-lwtheme-darktext/index.html b/files/de/web/css/_colon_-moz-lwtheme-darktext/index.html deleted file mode 100644 index d62e9ca240..0000000000 --- a/files/de/web/css/_colon_-moz-lwtheme-darktext/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: ':-moz-lwtheme-darktext' -slug: 'Web/CSS/:-moz-lwtheme-darktext' -tags: - - CSS - - CSS Referenz - - Non-standard - - Themes -translation_of: 'Mozilla/Gecko/Chrome/CSS/:-moz-lwtheme-darktext' ---- -
{{CSSRef}}{{non-standard_header}}
- -

Übersicht

- -

Die :-moz-lwtheme-darktext Pseudoklasse matcht in Chrome-Dokumenten, wenn {{cssxref(":-moz-lwtheme")}} true ist und ein Lightweight Theme mit dunkler Farbe ausgewählt ist.

- -

Siehe auch

- - diff --git a/files/de/web/css/_colon_-moz-lwtheme/index.html b/files/de/web/css/_colon_-moz-lwtheme/index.html deleted file mode 100644 index 6b0c439fa7..0000000000 --- a/files/de/web/css/_colon_-moz-lwtheme/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ':-moz-lwtheme' -slug: 'Web/CSS/:-moz-lwtheme' -tags: - - CSS - - CSS Referenz - - Lightweight themes - - NeedsCompatTable - - NeedsExample - - Non-standard - - Themes -translation_of: 'Mozilla/Gecko/Chrome/CSS/:-moz-lwtheme' ---- -
{{Non-standard_header}}{{CSSRef}}
- -

Übersicht

- -

Die :-moz-lwtheme CSS Pseudoklasse matcht in Chromedokumenten, wenn das {{xulattr("lightweightthemes")}} Attribut des Wurzelelements true ist und ein Theme ausgewählt wurde.

- -

Siehe auch

- - diff --git a/files/de/web/css/_colon_-moz-system-metric(images-in-menus)/index.html b/files/de/web/css/_colon_-moz-system-metric(images-in-menus)/index.html deleted file mode 100644 index d9882303fd..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(images-in-menus)/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: ':-moz-system-metric(images-in-menus)' -slug: 'Web/CSS/:-moz-system-metric(images-in-menus)' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/images-in-menus' ---- -
{{CSSRef}}{{Non-standard_header}}{{Fx_minversion_header(3)}}
- -

Übersicht

- -

Die :-moz-system-metric(images-in-menus) CSS Pseudoklasse matcht ein Element, falls die Benutzerschnittstelle des Computers Bilder in Menüs unterstützt.

- -

Dieser Selektor ist hauptsächlich für die Benutzung durch Themeentwickler gedacht.

diff --git a/files/de/web/css/_colon_-moz-system-metric(mac-graphite-theme)/index.html b/files/de/web/css/_colon_-moz-system-metric(mac-graphite-theme)/index.html deleted file mode 100644 index 8cd7bc0e9b..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(mac-graphite-theme)/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ':-moz-system-metric(mac-graphite-theme)' -slug: 'Web/CSS/:-moz-system-metric(mac-graphite-theme)' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/mac-graphite-theme' ---- -
{{Non-standard_header}}{{CSSRef}}{{gecko_minversion_header("1.9.1")}}
- -

Übersicht

- -

:-moz-system-metric(mac-graphite-theme) matcht ein Element, falls der Benutzer die "Graphite" Darstellung in der "Darstellung" Einstellungsseite der Mac OS X Systemeinstellungen gewählt hat.

- -

Dieser Selektor ist hauptsächlich dazu gedacht, von Themeentwicklern verwendet zu werden.

- -

Beispiele

- -

Demo

- -

Bugzilla

- -

{{bug("448767")}}

diff --git a/files/de/web/css/_colon_-moz-system-metric(scrollbar-end-backward)/index.html b/files/de/web/css/_colon_-moz-system-metric(scrollbar-end-backward)/index.html deleted file mode 100644 index 689598432f..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(scrollbar-end-backward)/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: ':-moz-system-metric(scrollbar-end-backward)' -slug: 'Web/CSS/:-moz-system-metric(scrollbar-end-backward)' -tags: - - CSS - - CSS Pseudoklasse - - CSS Referenz - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/scrollbar-end-backward' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Die :-moz-system-metric(scrollbar-end-backward) CSS Pseudoklasse matcht ein Element, falls die Benutzerschnittstelle des Computers einen Zurück-Button am Ende von Scrollleisten beinhaltet.

- -

Dieser Selektor ist hauptsächlich für die Verwendung durch Themeentwickler gedacht.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.9")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
diff --git a/files/de/web/css/_colon_-moz-system-metric(scrollbar-end-forward)/index.html b/files/de/web/css/_colon_-moz-system-metric(scrollbar-end-forward)/index.html deleted file mode 100644 index a7c84cd200..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(scrollbar-end-forward)/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: ':-moz-system-metric(scrollbar-end-forward)' -slug: 'Web/CSS/:-moz-system-metric(scrollbar-end-forward)' -tags: - - CSS - - CSS Pseudoklasse - - CSS Referenz - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/scrollbar-end-forward' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Die :-moz-system-metric(scrollbar-end-forward) CSS Pseudoklasse matcht ein Element, falls die Benutzerschnittstelle des Computers einen Vorwärts-Button am Ende von Scrollleisten beinhaltet.

- -

Dieser Selektor ist hauptsächlich für die Verwendung durch Themeentwickler gedacht.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.9")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
diff --git a/files/de/web/css/_colon_-moz-system-metric(scrollbar-start-backward)/index.html b/files/de/web/css/_colon_-moz-system-metric(scrollbar-start-backward)/index.html deleted file mode 100644 index 0781e4b37a..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(scrollbar-start-backward)/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: ':-moz-system-metric(scrollbar-start-backward)' -slug: 'Web/CSS/:-moz-system-metric(scrollbar-start-backward)' -tags: - - CSS - - CSS Pseudoklasse - - CSS Referenz - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/scrollbar-start-backward' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Die :-moz-system-metric(scrollbar-start-backward) CSS Pseudoklasse matcht ein Element, falls die Benutzerschnittstelle des Computers einen Zurück-Button am Anfang von Scrollleisten beinhaltet.

- -

Dieser Selektor ist hauptsächlich für die Verwendung durch Themeentwickler gedacht.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.9")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
diff --git a/files/de/web/css/_colon_-moz-system-metric(scrollbar-start-forward)/index.html b/files/de/web/css/_colon_-moz-system-metric(scrollbar-start-forward)/index.html deleted file mode 100644 index 01a8b77a02..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(scrollbar-start-forward)/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: ':-moz-system-metric(scrollbar-start-forward)' -slug: 'Web/CSS/:-moz-system-metric(scrollbar-start-forward)' -tags: - - CSS - - CSS Pseudoklasse - - CSS Referenz - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/scrollbar-start-forward' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Die :-moz-system-metric(scrollbar-start-forward) CSS Pseudoklasse matcht ein Element, falls die Benutzerschnittstelle des Computers einen Vorwärts-Button am Anfang von Scrollleisten beinhaltet.

- -

Dieser Selektor ist hauptsächlich für die Verwendung durch Themeentwickler gedacht.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.9")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
diff --git a/files/de/web/css/_colon_-moz-system-metric(scrollbar-thumb-proportional)/index.html b/files/de/web/css/_colon_-moz-system-metric(scrollbar-thumb-proportional)/index.html deleted file mode 100644 index cfdd764992..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(scrollbar-thumb-proportional)/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: ':-moz-system-metric(scrollbar-thumb-proportional)' -slug: 'Web/CSS/:-moz-system-metric(scrollbar-thumb-proportional)' -tags: - - CSS - - CSS Pseudoklasse - - CSS Referenz - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/scrollbar-thumb-proportional' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Die :-moz-system-metric(scrollbar-thumb-proportional) CSS Pseudoklasse matcht ein Element, falls die Benutzerschnittstelle des Computers proportionale Scrollleistenbalken verwendet; d. h. der bewegliche Balken der Scrollleiste verändert seine Größe, um die relative Größe der sichtbaren Bereichs des Dokuments zu kennzeichnen.

- -

Dieser Selektor ist hauptsächlich für die Verwendung durch Themeentwickler gedacht.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.9")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
diff --git a/files/de/web/css/_colon_-moz-system-metric(touch-enabled)/index.html b/files/de/web/css/_colon_-moz-system-metric(touch-enabled)/index.html deleted file mode 100644 index c59bc203d3..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(touch-enabled)/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: ':-moz-system-metric(touch-enabled)' -slug: 'Web/CSS/:-moz-system-metric(touch-enabled)' -tags: - - CSS - - CSS Pseudoklasse - - CSS Referenz - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/touch-enabled' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Die :-moz-system-metric(touch-enabled) CSS Pseudoklasse matcht ein Element, falls das Gerät, auf welchem der Inhalt angezeigt wird, eine unterstützte Touchscreen Schnittstelle bietet.

- -
Hinweis: Diese Pseudoklasse ist nicht für die Benutzung in Webinhalten gedacht. Stattdessen sollte die -moz-touch-enabled Media Query verwendet werden.
- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatGeckoDesktop("1.9.2")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
diff --git a/files/de/web/css/_colon_-moz-system-metric(windows-default-theme)/index.html b/files/de/web/css/_colon_-moz-system-metric(windows-default-theme)/index.html deleted file mode 100644 index 2242bb293c..0000000000 --- a/files/de/web/css/_colon_-moz-system-metric(windows-default-theme)/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: ':-moz-system-metric(windows-default-theme)' -slug: 'Web/CSS/:-moz-system-metric(windows-default-theme)' -tags: - - CSS - - CSS Pseudoklasse - - CSS Referenz - - NeedsMobileBrowserCompatibility - - Non-standard -translation_of: 'Archive/Web/CSS/:-moz-system-metric/windows-default-theme' ---- -
{{Non-standard_header}}{{CSSRef}}
- -

Übersicht

- -

Die :-moz-system-metric(windows-default-theme) CSS Pseudoklasse matcht ein Element, falls der Benutzer aktuell eines der folgenden Themes in Windows verwendet: Luna, Royale, Zune oder Aero (d. h. Vista Basic, Vista Standard oder Aero Glass). Dies schließt sowohl Windows Classic Themes als auch Drittanbieterthemes aus.

- -

Dieser Selektor ist hauptsächlich für die Verwendung durch Themeentwickler gedacht.

- -

Beispiel

- -

HTML Inhalt

- -
<p id="defaultThemes">
-  This paragraph should have a green background with Luna/Royale/Zune/Aero
-  Windows themes and red with other themes.
-</p>
-
-<p id="nonDefaultThemes">
-  This paragraph should have a green background with Windows Classic or
-  third-party themes and red with other themes.
-</p>
-
-<p id="notSupported">Theme detection is not supported.</p>
- -

CSS Inhalt

- -
#defaultThemes,
-#nonDefaultThemes {
-  background-color: #FFA0A0;
-}
-
-#defaultThemes:-moz-system-metric(windows-default-theme) {
-  background-color: #A0FFA0;
-}
-
-#nonDefaultThemes:not(-moz-system-metric(windows-default-theme)) {
-  background-color: #A0FFA0;
-}
-
-#notSupported:-moz-system-metric(windows-default-theme),
-#notSupported:not(:-moz-system-metric(windows-default-theme)) {
-  display: none;
-}
-
- -

{{EmbedLiveSample("Beispiel", "100%", 170)}}

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Browser Kompatibilität

- -{{Compat("css.selectors.-moz-system-metric.windows-default-theme")}} diff --git a/files/de/web/css/_colon_-moz-tree-cell-text(hover)/index.html b/files/de/web/css/_colon_-moz-tree-cell-text(hover)/index.html deleted file mode 100644 index a1cf6af05c..0000000000 --- a/files/de/web/css/_colon_-moz-tree-cell-text(hover)/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: ':-moz-tree-cell-text(hover)' -slug: 'Web/CSS/:-moz-tree-cell-text(hover)' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard - - Selektor -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text(hover)' ---- -
{{Non-standard_header}}{{CSSRef}}{{gecko_minversion_header(1.9)}}
- -

Übersicht

- -

Die :-moz-tree-cell-text(hover) CSS Pseudoklasse matcht ein Element, falls sich der Mauszeiger über dem Text innerhalb einer Baumzelle befindet.

- -

Dieser Selektor ist hauptsächlich für die Benutzung durch Themeentwickler gedacht.

diff --git a/files/de/web/css/_colon_-moz-tree-cell-text/index.html b/files/de/web/css/_colon_-moz-tree-cell-text/index.html deleted file mode 100644 index 1507e1f8c4..0000000000 --- a/files/de/web/css/_colon_-moz-tree-cell-text/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ':-moz-tree-cell-text' -slug: 'Web/CSS/:-moz-tree-cell-text' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text' ---- -

{{Non-standard_header}}{{CSSRef}}

- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - diff --git a/files/de/web/css/_colon_-moz-tree-cell/index.html b/files/de/web/css/_colon_-moz-tree-cell/index.html deleted file mode 100644 index f2250e3e4f..0000000000 --- a/files/de/web/css/_colon_-moz-tree-cell/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: ':-moz-tree-cell' -slug: 'Web/CSS/:-moz-tree-cell' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - - -

Siehe auch

- - diff --git a/files/de/web/css/_colon_-moz-tree-column/index.html b/files/de/web/css/_colon_-moz-tree-column/index.html deleted file mode 100644 index 927b64e482..0000000000 --- a/files/de/web/css/_colon_-moz-tree-column/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ':-moz-tree-column' -slug: 'Web/CSS/:-moz-tree-column' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-column' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - diff --git a/files/de/web/css/_colon_-moz-tree-drop-feedback/index.html b/files/de/web/css/_colon_-moz-tree-drop-feedback/index.html deleted file mode 100644 index 607b4dfe1b..0000000000 --- a/files/de/web/css/_colon_-moz-tree-drop-feedback/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ':-moz-tree-drop-feedback' -slug: 'Web/CSS/:-moz-tree-drop-feedback' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard - - Pseudo-class -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-drop-feedback' ---- -
{{Non-standard_header}}{{CSSRef}}
- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - diff --git a/files/de/web/css/_colon_-moz-tree-image/index.html b/files/de/web/css/_colon_-moz-tree-image/index.html deleted file mode 100644 index 780d66e4bf..0000000000 --- a/files/de/web/css/_colon_-moz-tree-image/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: ':-moz-tree-image' -slug: 'Web/CSS/:-moz-tree-image' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsLiveSample - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/:-moz-tree-image' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - - -

Beispiele

- -

Bookmark icons in the Places window - Mozillazine Forum

diff --git a/files/de/web/css/_colon_-moz-tree-indentation/index.html b/files/de/web/css/_colon_-moz-tree-indentation/index.html deleted file mode 100644 index c53db78b8f..0000000000 --- a/files/de/web/css/_colon_-moz-tree-indentation/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ':-moz-tree-indentation' -slug: 'Web/CSS/:-moz-tree-indentation' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-indentation' ---- -

{{CSSRef}}{{Non-standard_header}}

- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - diff --git a/files/de/web/css/_colon_-moz-tree-line/index.html b/files/de/web/css/_colon_-moz-tree-line/index.html deleted file mode 100644 index b6badf8db2..0000000000 --- a/files/de/web/css/_colon_-moz-tree-line/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ':-moz-tree-line' -slug: 'Web/CSS/:-moz-tree-line' -tags: - - CSS - - CSS Referenz - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-line' ---- -

{{Non-standard_header}}{{CSSRef}}

- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - diff --git a/files/de/web/css/_colon_-moz-tree-progressmeter/index.html b/files/de/web/css/_colon_-moz-tree-progressmeter/index.html deleted file mode 100644 index 1642c8f373..0000000000 --- a/files/de/web/css/_colon_-moz-tree-progressmeter/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ':-moz-tree-progressmeter' -slug: 'Web/CSS/:-moz-tree-progressmeter' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-progressmeter' ---- -
{{Non-standard_header}}{{CSSRef}}
- -

Aktiviert, wenn das type Attribut auf progressmeter gesetzt ist.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - diff --git a/files/de/web/css/_colon_-moz-tree-row(hover)/index.html b/files/de/web/css/_colon_-moz-tree-row(hover)/index.html deleted file mode 100644 index 07400474ba..0000000000 --- a/files/de/web/css/_colon_-moz-tree-row(hover)/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: ':-moz-tree-row(hover)' -slug: 'Web/CSS/:-moz-tree-row(hover)' -tags: - - CSS - - CSS Pseudoklasse - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row(hover)' ---- -
{{Non-standard_header}}{{CSSRef}}{{Fx_minversion_header(3)}}
- -

Übersicht

- -

Die :-moz-tree-row(hover) CSS Pseudoklasse matcht ein Element, falls der Mauszeiger sich über einer Baumzeile befindet.

- -

Dieser Selektor ist hauptsächlich für die Verwendung durch Themeentwickler gedacht.

diff --git a/files/de/web/css/_colon_-moz-tree-row/index.html b/files/de/web/css/_colon_-moz-tree-row/index.html deleted file mode 100644 index 72c4ae0940..0000000000 --- a/files/de/web/css/_colon_-moz-tree-row/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: ':-moz-tree-row' -slug: 'Web/CSS/:-moz-tree-row' -tags: - - CSS - - CSS Referenz - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row' ---- -

{{CSSRef}}{{Non-standard_header}}

- -

Das ::-moz-tree-row CSS Pseudoelement wird benutzt, um Zeilen auszuwählen und Stile auf Baumzeilen anzuwenden.

- -

Zugehörige Elemente

- - - -

Syntax

- -
treechildren::-moz-tree-row { Stileigenschaften }
-
- -

Stileigenschaften

- - - -

Beispiele

- -
treechildren::-moz-tree-row( foo bar )
-{
-    margin: 2%;
-}
-
- -

...wo...

- -
  <treerow properties="foo">...</treerow>
-
diff --git a/files/de/web/css/_colon_-moz-tree-separator/index.html b/files/de/web/css/_colon_-moz-tree-separator/index.html deleted file mode 100644 index d204747549..0000000000 --- a/files/de/web/css/_colon_-moz-tree-separator/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ':-moz-tree-separator' -slug: 'Web/CSS/:-moz-tree-separator' -tags: - - CSS - - CSS Referenz - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-separator' ---- -
{{Non-standard_header}}{{CSSRef}}
- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Stileigenschaften

- - diff --git a/files/de/web/css/_colon_-moz-tree-twisty/index.html b/files/de/web/css/_colon_-moz-tree-twisty/index.html deleted file mode 100644 index 3af5a302d0..0000000000 --- a/files/de/web/css/_colon_-moz-tree-twisty/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ':-moz-tree-twisty' -slug: 'Web/CSS/:-moz-tree-twisty' -tags: - - CSS - - CSS Referenz - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-twisty' ---- -

{{CSSRef}}{{Non-standard_header}}

- -

Aktiviert durch das properties Attribut.

- -

Zugehörige Elemente

- - - -

Styleeigenschaften

- - diff --git a/files/de/web/css/_doublecolon_-ms-browse/index.html b/files/de/web/css/_doublecolon_-ms-browse/index.html deleted file mode 100644 index 06b3002488..0000000000 --- a/files/de/web/css/_doublecolon_-ms-browse/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: '::-ms-browse' -slug: 'Web/CSS/::-ms-browse' -tags: - - CSS - - NeedsBrowserCompatibility - - NeedsContent - - NeedsExample - - NeedsMobileBrowserCompatibility - - Non-standard - - Pseudoelement - - Referenz -translation_of: 'Archive/Web/CSS/::-ms-browse' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Das ::-ms-browse CSS Pseudoelement repräsentiert die Schaltfläche eines {{HTMLElement("input")}} Elements mit type="file", die die Dateiauswahl öffnet.

- -

Diese Schaltfläche und dieses Pseudoelement sind nicht standardisiert und spezifisch für Internet Explorer 10+, daher das Herstellerpräfix.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Microsoft hat eine Beschreibung von ::-ms-browse auf MSDN.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}10{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
MerkmalAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
diff --git a/files/de/web/css/_doublecolon_-ms-check/index.html b/files/de/web/css/_doublecolon_-ms-check/index.html deleted file mode 100644 index 3f5c0e1b87..0000000000 --- a/files/de/web/css/_doublecolon_-ms-check/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: '::-ms-check' -slug: 'Web/CSS/::-ms-check' -tags: - - CSS - - NeedsCompatTable - - NeedsExample - - Non-standard - - Pseudoelement - - Referenz -translation_of: 'Archive/Web/CSS/::-ms-check' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Das ::-ms-check CSS Pseudoelement repräsentiert den Haken eines {{HTMLElement("input")}} mit type="checkbox" oder type="radio".

- -

Spezifikation

- -

Nicht Teil einer Spezifikation.

- -

Microsoft hat eine Beschreibung auf MSDN.

diff --git a/files/de/web/css/_doublecolon_-ms-fill-lower/index.html b/files/de/web/css/_doublecolon_-ms-fill-lower/index.html deleted file mode 100644 index 80bc10efe4..0000000000 --- a/files/de/web/css/_doublecolon_-ms-fill-lower/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: '::-ms-fill-lower' -slug: 'Web/CSS/::-ms-fill-lower' -tags: - - CSS - - CSS Pseudoelement - - NeedsBrowserCompatibility - - NeedsExample - - NeedsMobileBrowserCompatibility - - Non-standard - - Pseudoelement - - Referenz -translation_of: 'Archive/Web/CSS/::-ms-fill-lower' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Das ::-ms-fill-lower CSS Pseudoelement repräsentiert den Teil des "Tracks" (die Spur, in der der sich der Indikator, alias Thumb, bewegt) eines {{HTMLElement("input")}} Elements mit type="range", welcher den Werten entspricht, die kleiner sind als der aktuell vom Thumb markierte.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Microsoft hat eine Beschreibung auf MSDN.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalFirefox Mobile (Gecko)AndroidIE PhoneOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}
-
- -

Siehe auch

- - diff --git a/files/de/web/css/_doublecolon_-ms-fill-upper/index.html b/files/de/web/css/_doublecolon_-ms-fill-upper/index.html deleted file mode 100644 index c897657ac2..0000000000 --- a/files/de/web/css/_doublecolon_-ms-fill-upper/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: '::-ms-fill-upper' -slug: 'Web/CSS/::-ms-fill-upper' -tags: - - CSS - - CSS Pseudoelement - - NeedsBrowserCompatibility - - NeedsExample - - NeedsMobileBrowserCompatibility - - Non-standard - - Pseudoelement - - Referenz -translation_of: 'Archive/Web/CSS/::-ms-fill-upper' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Das ::-ms-fill-upper CSS Pseudoelement repräsentiert den Teil des "Tracks" (die Spur, in der der sich der Indikator, alias Thumb, bewegt) eines {{HTMLElement("input")}} Elements mit type="range", welcher den Werten entspricht, die größer sind als der aktuell vom Thumb markierte.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Microsoft hat eine Beschreibung auf MSDN.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalFirefox Mobile (Gecko)AndroidIE PhoneOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}
-
- -

Siehe auch

- - diff --git a/files/de/web/css/_doublecolon_-ms-fill/index.html b/files/de/web/css/_doublecolon_-ms-fill/index.html deleted file mode 100644 index 972cd7a224..0000000000 --- a/files/de/web/css/_doublecolon_-ms-fill/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: '::-ms-fill' -slug: 'Web/CSS/::-ms-fill' -tags: - - CSS - - NeedsExample - - Pseudoelement - - Referenz -translation_of: 'Archive/Web/CSS/::-ms-fill' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Das ::-ms-fill CSS Pseudoelement repräsentiert die gefüllte Portion eines {{HTMLElement("progress")}} Elements. Das Pseudoelement ist nicht standardisiert und wird nur von Internet Explorer 10+ unterstützt, daher das Herstellerpräfix.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Microsoft hat eine Beschreibung auf MSDN.

- -

Browser Kompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
MerkmalChromeFirefox (Gecko)Internet ExplorerOperaSafari
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}10.0{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
MerkmalAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Grundlegende Unterstützung{{CompatNo}}{{CompatNo}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}
-
diff --git a/files/de/web/css/_doublecolon_-ms-reveal/index.html b/files/de/web/css/_doublecolon_-ms-reveal/index.html deleted file mode 100644 index c3da23ecb9..0000000000 --- a/files/de/web/css/_doublecolon_-ms-reveal/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: '::-ms-reveal' -slug: 'Web/CSS/::-ms-reveal' -tags: - - CSS - - NeedsCompatTable - - NeedsContent - - NeedsExample - - Non-standard - - Pseudoelement - - Referenz -translation_of: 'Archive/Web/CSS/::-ms-reveal' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Das ::-ms-reveal CSS Pseudoelement wird verwendet, um Stile auf den "Passwort Anzeigebutton" anzuwenden, welcher im Internet Explorer 10+ standardmäßig am Rand eines {{HTMLElement("input")}} Elements mit type="password" angezeigt wird. Der Passwort Anzeigebutton zeigt den Wert des Passwortfeldes im Klartext an (anstatt der normalen versteckt-wegen-Datenschutz nur-Sternchen Anzeige). Dieser Button und das Pseudoelement sind nicht standardisiert und spezifisch für Internet Explorer 10+, daher das Herstellerpräfix.

- -

Spezifikationen

- -

Nicht Teil einer Spezifikation.

- -

Microsoft hat eine Beschreibung auf MSDN.

diff --git a/files/de/web/css/_doublecolon_-ms-thumb/index.html b/files/de/web/css/_doublecolon_-ms-thumb/index.html deleted file mode 100644 index e8736b011d..0000000000 --- a/files/de/web/css/_doublecolon_-ms-thumb/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: '::-ms-thumb' -slug: 'Web/CSS/::-ms-thumb' -tags: - - CSS - - Pseudoelement - - Referenz -translation_of: 'Archive/Web/CSS/::-ms-thumb' ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Das ::-ms-thumb CSS Pseudoelement repräsentiert den Schieber, den der Benutzer innerhalb der Spur eines {{HTMLElement("input")}}s mit type="range" bewegen kann, um seinen numerischen Wert zu ändern.

- -

Spezifikationen

- -

Dies ist nicht Teil einer Spezifikation, jedoch hat Microsoft eine Beschreibung auf MSDN.

- -

Siehe auch

- - diff --git a/files/de/web/css/overflow-clip-box/index.html b/files/de/web/css/overflow-clip-box/index.html deleted file mode 100644 index bc8b4bb4ff..0000000000 --- a/files/de/web/css/overflow-clip-box/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: overflow-clip-box -slug: Web/CSS/overflow-clip-box -tags: - - CSS - - CSS Eigenschaft - - CSS Referenz - - Referenz - - Web -translation_of: Mozilla/Gecko/Chrome/CSS/overflow-clip-box ---- -
{{CSSRef}}{{Non-standard_header}}
- -

Übersicht

- -

Die overflow-clip-box CSS Eigenschaft bestimmt, bezogen auf welche Box die Zuschnitt erfolgt, wenn ein Überlauf stattfindet.

- -
-

In Gecko wird standardmäßig padding-box überall verwendet, aber <input type="text"> und ähnliche Elemente verwenden den Wert content-box. Vor Firefox 29 war das Verhalten fest kodiert; seitdem benutzt Firefox diese Eigenschaft, die auch an anderen Stellen verwendet werden kann. Beachte, dass diese Eigenschaft nur in {{Glossary("User Agent")}} Stylesheets und dem Chrome Kontext standardmäßig aktiviert ist.

-
- -

{{cssinfo}}

- -

Syntax

- -
/* Schlüsselwortwerte */
-overflow-clip-box: padding-box;
-overflow-clip-box: content-box;
-
-/* Globale Werte */
-overflow-clip-box: inherited;
-overflow-clip-box: initial;
-overflow-clip-box: unset;
-
- -

Werte

- -
-
padding-box
-
Diese Schlüsselwort gibt an, dass der Zuschnitt relativ zur Paddingbox erfolgt.
-
content-box
-
Diese Schlüsselwort gibt an, dass der Zuschnitt relativ zur Contentbox erfolgt.
-
- -

Formale Syntax

- -
{{csssyntax}}
- -

Beispiele

- -

padding-box

- -
<div class="things">
-  <input value="ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ" class="scroll padding-box">
-  <div class="scroll padding-box"><span>ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ</span></div>
-</div>
-
- -
.scroll {
-  overflow: auto;
-  padding: 0 30px;
-  width: 6em;
-  border: 1px solid black;
-  background: lime content-box;
-}
- -
.padding-box {
-  overflow-clip-box: padding-box;
-}
-
- -
function scrollSomeElements() {
-  var elms = document.querySelectorAll('.scroll');
-  for (i=0; i < elms.length; ++i) {
-    elms[i].scrollLeft=80;
-  }
-}
-var elt = document.queryElementsByTagName('body')[0];
-
-elt.addEventListener("load", scrollSomeElements, false);
-
- -

{{EmbedLiveSample('padding-box')}}

- -

Spezifikationen

- -

Diese Eigenschaft wurde der W3C CSSWG vorgeschlagen; sie ist noch nicht standardisiert, aber, falls sie akzeptiert wird, sollte sie in {{SpecName("CSS3 Overflow")}} erscheinen.

- -

Browser Kompatibilität

- -{{Compat("css.properties.overflow-clip-box")}} - -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/global_objects/array/observe/index.html b/files/de/web/javascript/reference/global_objects/array/observe/index.html deleted file mode 100644 index 2926d777fc..0000000000 --- a/files/de/web/javascript/reference/global_objects/array/observe/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Array.observe() -slug: Web/JavaScript/Reference/Global_Objects/Array/observe -tags: - - Array - - JavaScript - - Method - - Obsolete -translation_of: Archive/Web/JavaScript/Array.observe ---- -
{{JSRef}} {{obsolete_header}}
- -

Die Array.observe() Methode wurde für das asynchrone Beobachten von Veränderungen von Arrays benutzt, ähnlich wie {{jsxref("Object.observe()")}} für Objekte. Sie stellt einen Stream von Änderungen in der Reihenfolge, in denen sie auftreten, zur Verfügung.
- Equivalent zu  Object.observe() und wird ausgeführt mit der Liste ["add", "update", "delete", "splice"]. Diese Funktion wurde als deprecated markiert und bereits aus einigen Browsern entfernt. Man kann stattdessen das allgemeinere {{jsxref("Proxy")}} Objekt verwenden.

- -

Syntax

- -
Array.observe(arr, callback)
- -

Parameter

- -
-
arr
-
    Das Array, welches beobachtet wird.
-
callback
-
Die Funktion, welche bei jeder Änderung mit folgenden Argumenten aufgerufen wird: -
-
changes
-
Ein Array aus Objekten. Jedes repräsentiert eine Änderung. Die Eigenschaften dieser change Objekte sind: -
    -
  • name: Der Name der Eigenschaft, welche geändert wurde.
  • -
  • object: Das veränderte Array, nachdem die Änderung stattfand.
  • -
  • type: Ein String, welcher den Typ der Änderung darstellt. Er hat den Wert "add", "update", "delete", oder "splice".
  • -
  • oldValue: Nur für "update" und "delete" Typ. Der Wert vor der Änderung.
  • -
  • index: Nur für "splice" Typ. Der Index, an welchem die Änderung stattfand.
  • -
  • removed: Nur für "splice" Typ. Ein Array aus den gelöschten Elementen.
  • -
  • addedCount: Nur für "splice" Typ. Die Anzahl an Elementen, welche hinzugefügt wurden.
  • -
-
-
-
-
- -

Beschreibung

- -

Die callback Funktion wird jedes mal aufgerufen, wenn eine Änderung in arr stattfindet mit einem Array von allen Änderungen in der Reihenfolge in der sie auftreten

- -
-

Änderungen über die Array Methoden, wie zum Beispiel Array.prototype.pop(), werden als "splice" "changes" dargestellt.
- Index Änderungen, welche die Länge des Arrays nicht verändern, werden als "update" "changes" dargestellt.

-
- -

Beispiele

- -

Aufzeichnung verschiedener change Typen

- -
var arr = ['a', 'b', 'c'];
-
-Array.observe(arr, function(changes) {
-  console.log(changes);
-});
-
-arr[1] = 'B';
-// [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}]
-
-arr[3] = 'd';
-// [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}]
-
-arr.splice(1, 2, 'beta', 'gamma', 'delta');
-// [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c', 'd'], addedCount: 3}]
-
- -

Spezifikationen

- -

Strawman proposal specification.

- -

Browserkompatibilität

- -
- - -

{{Compat("javascript.builtins.Array.observe")}}

-
- -

See also

- - diff --git a/files/de/web/javascript/reference/global_objects/array/unobserve/index.html b/files/de/web/javascript/reference/global_objects/array/unobserve/index.html deleted file mode 100644 index fd31177c3a..0000000000 --- a/files/de/web/javascript/reference/global_objects/array/unobserve/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Array.unobserve() -slug: Web/JavaScript/Reference/Global_Objects/Array/unobserve -tags: - - Array - - JavaScript - - Method - - Obsolete -translation_of: Archive/Web/JavaScript/Array.unobserve ---- -
{{JSRef}} {{obsolete_header}}
- -

Die Array.unobserve() Methode wird eingesetzt um Observers die mit {{jsxref("Array.observe()")}} eingestellt wurden zu entfernen, jedoch ist dieses veraltet und wurde schon von Browsern entfernt. Man kann einen allgemeineres {{jsxref("Proxy")}} Objekt benutzen.

- -

Syntax

- -
Array.unobserve(arr, callback)
- -

Parameter

- -
-
arr
-
Das Array, welches nicht mehr Überwacht werden soll.
-
callback
-
Die Referenz zu dem Observer, die mit der Überwachung von Änderungen auf dem Array arr aufhören soll.
-
- -

Beschreibung

- -

Array.unobserve() sollt nach {{jsxref("Array.observe()")}} aufgerufen werden, um einen Observer von einem Array zu entfernen.

- -

callback sollte eine Referenz auf eine Funktion sein und nicht einen anonyme Funktion sein, weil diese Referenz genutzt wird um den Observer zu entfernen. Es ist nicht zulässig Array.unobserve() mit einer anonymen Funktion aufzurufen, weil dadurch kein Observer entfernt wird.

- -

Beispiele

- -

Observer von Array entfernen

- -
var arr = [1, 2, 3];
-
-var observer = function(changes) {
-  console.log(changes);
-}
-
-Array.observe(arr, observer);
-​
-arr.push(4);
-// [{type: "splice", object: <arr>, index: 3, removed:[], addedCount: 1}]
-
-Array.unobserve(arr, observer);
-
-arr.pop();
-// The callback wasn't called
- -

Einsatz einer anonymen Funktion

- -
var persons = ['Khalid', 'Ahmed', 'Mohammed'];
-
-Array.observe(persons, function (changes) {
-  console.log(changes);
-});
-
-persons.shift();
-// [{type: "splice", object: <arr>, index: 0, removed: [ "Khalid" ], addedCount: 0 }]
-
-Array.unobserve(persons, function (changes) {
-  console.log(changes);
-});
-
-persons.push('Abdullah');
-// [{type: "splice", object: <arr>, index: 2, removed: [], addedCount: 1 }]
-// The callback will always be called
-
- -

Browserkompatibilität

- -
- - -

{{Compat("javascript.builtins.Array.unobserve")}}

-
- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html b/files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html deleted file mode 100644 index 3004da98bf..0000000000 --- a/files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: ArrayBuffer.transfer() -slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/transfer -tags: - - ArrayBuffer - - Experimental - - JavaScript - - Method - - Reference - - TypedArrays -translation_of: Archive/Web/JavaScript/ArrayBuffer.transfer ---- -
{{JSRef}} {{SeeCompatTable}}
- -

Die statische ArrayBuffer.transfer() Funktion gibt einen neuen ArrayBuffer mit dem Inhalt von oldBuffer. Je nachdem, wei die newByteLength gesetzt ist, werden die Daten abgeschnitten oder erweitert. Wenn newByteLength nicht gesetzt ist, wird die byteLength von oldBuffer benutzt. Diese Operation bringt oldBuffer in einen detached Status.

- -

Syntax

- -
ArrayBuffer.transfer(oldBuffer [, newByteLength]);
- -

Parameter

- -
-
oldBuffer
-
Ein {{jsxref("ArrayBuffer")}} Objekt von dem die Daten transferiert werden.
-
newByteLength
-
Die Bytelänge des neuen ArrayBuffer Objektes.
-
- -

Rückgabewert

- -

Ein neues ArrayBuffer Objekt.

- -

Beschreibung

- -

Die ArrayBuffer.transfer() Methode erlaubt es ein ArrayBuffer zu vergrößern und zu detachen. Die Möglichkeit ein ArrayBuffer zu vergrößern ohne es zu kopieren, hat den Vorteil, dass es viel schneller für große Buffer ist (ähnlich wie bei realloc). Die Möglichkeit, dass ein ArrayBuffer detachet wird, gibt dem Entwickler die explizite Kontrolle über das freigeben des internen Speichers. Dieses vermeidet das Entfernen aller Referenzen und das Warten auf die Garbage Collection.

- -

Beispiele

- -
var buf1 = new ArrayBuffer(40);
-new Int32Array(buf1)[0] = 42;
-
-var buf2 = ArrayBuffer.transfer(buf1, 80);
-buf1.byteLength; // 0 but if you use the polyfill then the value is still 40
-buf2.byteLength; // 80
-new Int32Array(buf2)[0]; // 42
-
-var buf3 = ArrayBuffer.transfer(buf2, 0);
-buf2.byteLength; // 0 but if you use the polyfill then the value is still 80
-buf3.byteLength; // 0
-
- -

Polyfill

- -

Für Browser, die die Funktion nicht nativ unterstützen, gibt es die Möglichkeit folgenden Quelltext am Anfang eines Skriptes einzufügen, um die Funktion transfer() zu benutzen. Diese Funktion ist nicht exakt die in der API beschriebene, weil Browser, die die Funktion unterstützen, direkten Zugriff auf die C++ Funktion realloc() haben, welche die Länge des Speichers erhöht und nur eine Kopie anlegt, wenn es nötig ist. Im Gegensatz dazu kopiert der folgende Pollyfill alles immer in neuen Speicher. Diese Funktion transferiert die Daten jedoch von einem ArrayBuffer zu einem anderen.

- -
if (!ArrayBuffer.transfer) {
-    ArrayBuffer.transfer = function(source, length) {
-        if (!(source instanceof ArrayBuffer))
-            throw new TypeError('Source must be an instance of ArrayBuffer');
-        if (length <= source.byteLength)
-            return source.slice(0, length);
-        var sourceView = new Uint8Array(source),
-            destView = new Uint8Array(new ArrayBuffer(length));
-        destView.set(sourceView);
-        return dest.buffer;
-    };
-}
- -

Spezifikationen

- -

Ist in keiner aktuellen Spezifikation enthalten, wird aber in der Zukunft für ECMA-262 geplant.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.builtins.ArrayBuffer.transfer")}}

- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/global_objects/date/tolocaleformat/index.html b/files/de/web/javascript/reference/global_objects/date/tolocaleformat/index.html deleted file mode 100644 index f8f596983f..0000000000 --- a/files/de/web/javascript/reference/global_objects/date/tolocaleformat/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Date.prototype.toLocaleFormat() -slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleFormat -tags: - - Date - - Java - - Method - - Non-standard - - Prototype - - Reference -translation_of: Archive/Web/JavaScript/Date.toLocaleFormat ---- -
{{JSRef}} {{non-standard_header}}
- -

Die nicht standardisierte Methode toLocaleFormat() konvertiert einen {{jsxref("date")}} Objekt zu einem String im übergebenen Format. {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} ist einen standardisierte Alternative zum Formatieren von {{jsxref("Date")}} Objekten. Siehe auch die neuere Version der {{jsxref("Date.prototype.toLocaleDateString()")}} Methode an.

- -
Diese Funktion wurde Entfernt und wird ab Firefox 58 nicht mehr Funktionieren. Für mehr Information un Migrationshilfe siehe in den Artikel {{jsxref("Errors/Deprecated_toLocaleFormat","Warning: Date.prototype.toLocaleFormat is deprecated")}}.
- -

Syntax

- -
dateObj.toLocaleFormat(formatString)
- -

Parameter

- -
-
formatString
-
Ein Formatstring, welche im selben Format sein muss, wie es die C Funktion strftime() erwartet.
-
- -

Rückgabewert

- -

Einen String, der das gegebenen {{jsxref("Date")}} Objekt im spezifizierten Format repräsentiert.

- -

Beschreibung

- -

Die toLocaleFormat() Methode ermöglicht es eine größere Kontrolle über das Formatieren von generierten Daten und/oder Zeiten zu haben. Namen für Monate und Wochentage werden mit den Spracheinstellungen des Betriebssystem formatiert. Die Anordnung von Tagen, Monaten und anderen Bestandteilen in der Formatierung wird nicht automatisch vorgenommen. Sie sind von den Angaben in dem Formatierungsstring abhängig. Man muss dafür sorgen, dass der Formatierungsstring zu richtigen Ergebnissen auf dem Benutzersystem führt. Man sollte vorsichtig sein, weil die Spracheinstellungen im Browser nicht die gleichen sein müssen, wie die des Betriebssystems.

- -

Extension und XULRunner Entwickler wissen, dass das Laden von Formatstring aus .dtd oder .properties Dateien mit dem Einsatz von URIs (z. B. chrome://somedomain/locale/somefile.ext) vermieden werden sollte, weil .dtd/.properties Dateien und die toLocaleFormat() Methode nicht notwendiger Weise der gleichen Sprache folgen. Dieses kann zu nicht lesbaren oder merkwürdig formatierten Daten führen.

- -

Außerdem ist zu beachten, dass der Einsatz von Formatierungen abhängig von der Plattform und den benutzerdefinierten Einstellungen des Benutzers nicht immer gewollt ist. Man sollte stattdessen die allgemeineren toLocale* Methoden des {{jsxref("Global_Objects/Date", "Date")}} Objektes nutzen oder ein eigenes Format mit den get* Methoden einer {{jsxref("Global_Objects/Date", "Date")}} Instanz erstellen.

- -

Beispiele

- -

Einsatz von toLocaleFormat()

- -
var today = new Date();
-var date = today.toLocaleFormat('%A, %B %e, %Y'); // Schlechtes Beispiel
-
- -

Im Beispiel gibt toLocaleFormat() einen String wie "Mittwoch, Oktober 3, 2007" zurück. Zu beachten ist, dass der String nicht unbedingt den Sprachegegebenheiten angepasst ist, was auf die oben genannten Probleme zurückzuführen ist.

- -

Polyfill

- -

Wenn die DateJS Bibliothek benutzt wird, kann folgender Polyfill benutzt werden:

- -
if (!Date.prototype.toLocaleFormat) {
-    (function() {
-        Date.prototype.toLocaleFormat = function(formatString) {
-            return this.format(formatString);
-        };
-    }());
-}
- -

Spezifikationen

- -

Nicht spezifiziert. Implementiert in JavaScript 1.6.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.builtins.Date.toLocaleFormat")}}

- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/global_objects/function/arity/index.html b/files/de/web/javascript/reference/global_objects/function/arity/index.html deleted file mode 100644 index f5ff00bd27..0000000000 --- a/files/de/web/javascript/reference/global_objects/function/arity/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Function.arity -slug: Web/JavaScript/Reference/Global_Objects/Function/arity -tags: - - Function - - JavaScript - - Obsolete - - Property - - Unimplemented -translation_of: Archive/Web/JavaScript/Function.arity ---- -
{{JSRef}} {{obsolete_header}}
- -

Die arity Eigenschaft wurde benutzt, um die Anzahl der erwarteten Argumente einer Funktion zurückzugeben, jedoch existiert diese Eigenschaft nicht mehr und wurde durch die Eigenschaft {{jsxref("Function.prototype.length")}} ersetzt.

- -

Spezifikationen

- -

Implementiert in JavaScript 1.2. Veraltet seit JavaScript 1.4.

- -

Browserkompatibilität

- -
- - -

{{Compat("javascript.builtins.Function.arity")}}

-
- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/global_objects/function/isgenerator/index.html b/files/de/web/javascript/reference/global_objects/function/isgenerator/index.html deleted file mode 100644 index 5897905e92..0000000000 --- a/files/de/web/javascript/reference/global_objects/function/isgenerator/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Function.prototype.isGenerator() -slug: Web/JavaScript/Reference/Global_Objects/Function/isGenerator -tags: - - Function - - JavaScript - - Method - - Non-standard - - Obsolete -translation_of: Archive/Web/JavaScript/Function.isGenerator ---- -
{{JSRef}} {{non-standard_header}}
- -

Die nicht standardisierte isGenerator() Methode wird benutzt, um festzustellen, ob eine Funktion ein Generator ist. In Firefox Version 58 wurde diese Methode entfernt.

- -

Syntax

- -
fun.isGenerator()
- -

Rückgabewert

- -

Ein {{jsxref("Boolean")}} Welcher angibt, ob eine Funktion ein Generator ist.

- -

Beschreibung

- -

Die isGenerator() Methode stellt fest, ob eine Funktion fun ein Generator ist. Diese war in einem frühen Vorschlag, wurde jedoch nicht in der ECMAScript 2015 Spezifikation eingefügt.

- -

Beispiele

- -
function f() {}
-
-function* g() {
-  yield 42;
-}
-
-console.log('f.isGenerator() = ' + f.isGenerator()); // f.isGenerator() = false
-console.log('g.isGenerator() = ' + g.isGenerator()); // g.isGenerator() = true
-
- -

Spezifikationen

- -

Ist in keiner Spezifikation vorhanden. Implementiert in JavaScript 1.8.6.

- -

Browserkompatibilität

- -
- - -

{{Compat("javascript.builtins.Function.isGenerator")}}

-
- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/global_objects/number/tointeger/index.html b/files/de/web/javascript/reference/global_objects/number/tointeger/index.html deleted file mode 100644 index 79545e9ad6..0000000000 --- a/files/de/web/javascript/reference/global_objects/number/tointeger/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Number.toInteger() -slug: Web/JavaScript/Reference/Global_Objects/Number/toInteger -tags: - - JavaScript - - Method - - Number - - Obsolete -translation_of: Archive/Web/JavaScript/Number.toInteger ---- -
{{JSRef}} {{obsolete_header}}
- -

Die Number.toInteger() Methode wurde eingesetzt, um den übegebenen Wert zu analysieren und zu einer ganzen Zahl zu konvertieren, jedoch wurde die Implementierung entfernt.

- -

Wenn der übergebene Wert {{jsxref("NaN")}}, {{jsxref("null")}} oder {{jsxref("undefined")}} ist, gibt die Methode 0 zurück. Wenn der Wert false ist, wird 0 und bei true wird 1 zurückgegeben.

- -

Syntax

- -
Number.toInteger(zahl)
- -

Parameter

- -
-
zahl
-
Wert der zu einer ganzen Zahl konvertiert werden soll.
-
- -

Beispiele

- -

Einsatz von toInteger

- -
Number.toInteger(0.1);     // 0
-Number.toInteger(1);       // 1
-Number.toInteger(Math.PI); // 3
-Number.toInteger(null);    // 0
-
- -

Spezifikationen

- -

Number.toInteger() war Teil der des ECMAScript 6 Entwurfesspezifikation, jedoch wurde sie am 23. August 2013 im Draft Rev 17 entfernt.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.builtins.Number.toInteger")}}

- -

See also

- - diff --git a/files/de/web/javascript/reference/global_objects/object/observe/index.html b/files/de/web/javascript/reference/global_objects/object/observe/index.html deleted file mode 100644 index df68348028..0000000000 --- a/files/de/web/javascript/reference/global_objects/object/observe/index.html +++ /dev/null @@ -1,199 +0,0 @@ ---- -title: Object.observe() -slug: Web/JavaScript/Reference/Global_Objects/Object/observe -tags: - - Beobachter - - Data-Binding - - Deprecated - - JavaScript - - Méthode - - Object - - Veraltet -translation_of: Archive/Web/JavaScript/Object.observe ---- -
{{JSRef}} {{obsolete_header}}
- -

Die Object.observe() Methode kann genutzt werden, um auf Änderungen an einem Objekt asynchron zu reagieren. Sie bietet einen Stream der Änderungen in der Reihenfolge ihres Auftretens. Da die Methode veraltet ist und Beschränkungen aufweist, sollte lieber ein {{jsxref("Proxy")}} Objekt verwendet werden.

- -

Syntax

- -
Object.observe(obj, callback[, acceptList])
- -

Parameter

- -
-
obj
-
Das Objekt, das beobachtet werden soll.
-
callback
-
Eine Callback-Funktion, die jedes mal aufgerufen wird, wenn eine Änderung am Objekt vorgenommen wird -
-
changes
-
Ein Array von Objekten, die die vorgenommenen Änderungen repräsentieren. Die Eigenschaften der Objekte sind jeweils -
    -
  • name: Der Name der Eigenschaft, welche geändert wurde
  • -
  • object: Das (bereits) geänderte Objekt.
  • -
  • type: Ein String der Angibt, welcher Art die vorgenommene Änderung war. Entspricht "add", "update", oder "delete".
  • -
  • oldValue: Existiert nur, wenn der type "update" oder "delete" ist. Der ursprüngliche Wert vor der Änderung.
  • -
-
-
-
-
acceptList
-
Eine Liste von Änderungstypen die für das gegebene Objekt und jeweilige Callback beobachtet werden sollen. Standardmäßig ["add", "update", "delete", "reconfigure", "setPrototype", "preventExtensions"] .
-
- -

Beschreibung

- -

callback wird jedes mal aufgerufen, wenn das obj geändert wird. Die Funktion erhält dabei die Liste aller Änderungen in chronologischer Reihenfolge ihres Auftretens.

- -

Beispiele

- -

Ausgabe aller sechs Änderungsarten

- -
var obj = {
-  foo: 0,
-  bar: 1
-};
-
-Object.observe(obj, function(changes) {
-  console.log(changes);
-});
-
-obj.baz = 2;
-// [{name: 'baz', object: <obj>, type: 'add'}]
-
-obj.foo = 'hello';
-// [{name: 'foo', object: <obj>, type: 'update', oldValue: 0}]
-
-delete obj.baz;
-// [{name: 'baz', object: <obj>, type: 'delete', oldValue: 2}]
-
-Object.defineProperty(obj, 'foo', {writable: false});
-// [{name: 'foo', object: <obj>, type: 'reconfigure'}]
-
-Object.setPrototypeOf(obj, {});
-// [{name: '__proto__', object: <obj>, type: 'setPrototype', oldValue: <prototype>}]
-
-Object.seal(obj);
-// [
-//   {name: 'foo', object: <obj>, type: 'reconfigure'},
-//   {name: 'bar', object: <obj>, type: 'reconfigure'},
-//   {object: <obj>, type: 'preventExtensions'}
-// ]
-
- -

Data Binding

- -
// A user model
-var user = {
-  id: 0,
-  name: 'Brendan Eich',
-  title: 'Mr.'
-};
-
-// Create a greeting for the user
-function updateGreeting() {
-  user.greeting = 'Hello, ' + user.title + ' ' + user.name + '!';
-}
-updateGreeting();
-
-Object.observe(user, function(changes) {
-  changes.forEach(function(change) {
-    // Any time name or title change, update the greeting
-    if (change.name === 'name' || change.name === 'title') {
-      updateGreeting();
-    }
-  });
-});
-
- -

Eigens definierter Änderungstyp

- -
// A point on a 2D plane
-var point = {x: 0, y: 0, distance: 0};
-
-function setPosition(pt, x, y) {
-  // Performing a custom change
-  Object.getNotifier(pt).performChange('reposition', function() {
-    var oldDistance = pt.distance;
-    pt.x = x;
-    pt.y = y;
-    pt.distance = Math.sqrt(x * x + y * y);
-    return {oldDistance: oldDistance};
-  });
-}
-
-Object.observe(point, function(changes) {
-  console.log('Distance change: ' + (point.distance - changes[0].oldDistance));
-}, ['reposition']);
-
-setPosition(point, 3, 4);
-// Distance change: 5
-
- -

Spezifikationen

- -

Strawman proposal for ECMAScript 7.

- -

Browserunterstützung

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("36")}}{{CompatNo}} [1]{{CompatNo}} [2]{{CompatOpera("23")}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatChrome("36")}}{{CompatNo}} [1]{{CompatNo}} [2]{{CompatOpera("23")}}{{CompatNo}}
-
- -

[1]: See {{bug(800355)}}

- -

[2]: See relevant MS Edge platform status entry

- -

Siehe Auch

- - diff --git a/files/de/web/javascript/reference/operators/array_comprehensions/index.html b/files/de/web/javascript/reference/operators/array_comprehensions/index.html deleted file mode 100644 index a7d34cc1ea..0000000000 --- a/files/de/web/javascript/reference/operators/array_comprehensions/index.html +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Array Comprehensions -slug: Web/JavaScript/Reference/Operators/Array_comprehensions -tags: - - JavaScript - - Non-standard - - Operator - - Reference -translation_of: Archive/Web/JavaScript/Array_comprehensions ---- -
Nicht standardisiert. Nicht einsetzen!
-Die Array Comprehensions Syntax ist nicht Standardisiert und wurde mit Firefox 58 entfernt. Zukünftig müssen {{jsxref("Array.prototype.map")}}, {{jsxref("Array.prototype.filter")}}, {{jsxref("Functions/Arrow_functions", "Pfeilfunktionen", "", 1)}}, und {{jsxref("Operators/Spread_operator", "Spread Syntax", "", 1)}} eingesetzt werden.
- -
{{jsSidebar("Operators")}}
- -

Die Array Comprehensions Syntax war ein JavaScript Ausdruck, welcher es erlaubt schnell ein neues Array auf Basis eines existierenden zu erstellen. Jedoch wurde diese vom Standard und der Firefox Implementierung entfernt. Nicht mehr einsetzen!

- -

Syntax

- -
[for (x of iterable) x]
-[for (x of iterable) if (condition) x]
-[for (x of iterable) for (y of iterable) x + y]
-
- -

Beschreibung

- -

In Array Comprehensions können zwei Arten von Komponenten eingesetzt werden:

- - - -

Der for-of Iterator ist immer die erste Komponente. Mehrere for-of Iteratoren oder if Statements sind erlaubt.

- -

Array Comprehension wurden zuvor für den ECMAScript 2016 Standard vorgeschlagen und ist eine nützliche Kurzform zum Erstellen von neuen Arrays auf Basis des Inhalts andere.Comprehensions können oft statt den Aufrufen {{jsxref("Array.prototype.map", "map()")}} und {{jsxref("Array.prototype.filter", "filter()")}} eingesetzt werden oder als Möglichkeit beide zu kombinieren.

- -

Die folgende Comprehension nimmt ein Array von Zahlen und erstellt ein neues Array, dass das Doppelte jeder Zahl enthält.

- -
var numbers = [1, 2, 3, 4];
-var doubled = [for (i of numbers) i * 2];
-console.log(doubled); // logs 2,4,6,8
-
- -

Das ist äquivalent zu der folgenden {{jsxref("Array.prototype.map", "map()")}} Operation:

- -
var doubled = numbers.map(i => i * 2);
-
- -

Comprehensions können ebenfalls für das suchen bestimmter Elemente eingesetzt werden. Hier ist eine Comprehension welche nur gerade Zahlen auswählt:

- -
var numbers = [1, 2, 3, 21, 22, 30];
-var evens = [for (i of numbers) if (i % 2 === 0) i];
-console.log(evens); // logs 2,22,30
-
- -

{{jsxref("Array.prototype.filter", "filter()")}} kann mit dem gleichen Ergebnis benutzt werden:

- -
var evens = numbers.filter(i => i % 2 === 0);
-
- -

{{jsxref("Array.prototype.map", "map()")}} und {{jsxref("Array.prototype.filter", "filter()")}} Operation können in einer einzigen Array Comprehension kombiniert werden. Hier ist ein Beispiel, welches auf gerade Zahlen filtert und diese dann verdopelt:

- -
var numbers = [1, 2, 3, 21, 22, 30];
-var doubledEvens = [for (i of numbers) if (i % 2 === 0) i * 2];
-console.log(doubledEvens); // logs 4,44,60
-
- -

Die eckigen Klammern einer Array Comprehension führen einen impliziten Block für Gültigkeitsbereiche ein. Neue Variablen (wie i im Beispiel) werden so behandelt, als währen sie mit {{jsxref("Statements/let","let")}} deklariert. Das bedeutet, dass sie nicht außerhalb der Comprehension sichtbar sind.

- -

Der Input einer Array Comprehension muss nicht selbst ein Array sein; Iteratoren und Generatoren könne ebenfalls benutzt werden.

- -

Auch Strings können als Input genutzt werden;

- -

Even strings may be used as input; um die Filter- und Map-Aktionen (unter Array-ähnlichen Objekten) oben zu erreichen:

- -
var str = 'abcdef';
-var consonantsOnlyStr = [for (c of str) if (!(/[aeiouAEIOU]/).test(c)) c].join(''); // 'bcdf'
-var interpolatedZeros = [for (c of str) c + '0' ].join(''); // 'a0b0c0d0e0f0'
-
- -

Auch hier wird das Eingabeformat nicht beibehalten, so dass man {{jsxref("Array.prototype.join", "join()")}} benutzen muss, um wieder einen String zu bekommen.

- -

Beispiele

- -

Einfache Array Comprehensions

- -
[for (i of [1, 2, 3]) i * i ];
-// [1, 4, 9]
-
-var abc = ['A', 'B', 'C'];
-[for (letters of abc) letters.toLowerCase()];
-// ["a", "b", "c"]
- -

Array Comprehensions mit if Statement

- -
var years = [1954, 1974, 1990, 2006, 2010, 2014];
-[for (year of years) if (year > 2000) year];
-// [2006, 2010, 2014]
-[for (year of years) if (year > 2000) if (year < 2010) year];
-// [2006], the same as below:
-[for (year of years) if (year > 2000 && year < 2010) year];
-// [2006]
-
- -

Array Comprehensions verglichen zu map und filter

- -

Ein einfacher Weg um Generator Comprehension Syntax zu verstehen ist es sie mit den Array {{jsxref("Array.map", "map")}} und {{jsxref("Array.filter", "filter")}} Methoden zu vergleichen:

- -
var numbers = [1, 2, 3];
-
-numbers.map(function (i) { return i * i });
-numbers.map(i => i * i);
-[for (i of numbers) i * i];
-// all are [1, 4, 9]
-
-numbers.filter(function (i) { return i < 3 });
-numbers.filter(i => i < 3);
-[for (i of numbers) if (i < 3) i];
-// all are [1, 2]
-
- -

Array Comprehensions mit zwei Arrays

- -

Einsatz von zwei for-of Iteratoren, um mit Arrays zu arbeiten:

- -
var numbers = [1, 2, 3];
-var letters = ['a', 'b', 'c'];
-
-var cross = [for (i of numbers) for (j of letters) i + j];
-// ["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
-
-var grid = [for (i of numbers) [for (j of letters) i + j]];
-// [
-//  ["1a", "1b", "1c"],
-//  ["2a", "2b", "2c"],
-//  ["3a", "3b", "3c"]
-// ]
-
-[for (i of numbers) if (i > 1) for (j of letters) if(j > 'a') i + j]
-// ["2b", "2c", "3b", "3c"], the same as below:
-
-[for (i of numbers) for (j of letters) if (i > 1) if(j > 'a') i + j]
-// ["2b", "2c", "3b", "3c"]
-
-[for (i of numbers) if (i > 1) [for (j of letters) if(j > 'a') i + j]]
-// [["2b", "2c"], ["3b", "3c"]], not the same as below:
-
-[for (i of numbers) [for (j of letters) if (i > 1) if(j > 'a') i + j]]
-// [[], ["2b", "2c"], ["3b", "3c"]]
-
- -

Spezifikationen

- -

War initial im ECMAScript 2015 Entwurf, wurde jedoch in der Überarbeitung 27 (August 2014) entfernt. Für Spezifikationssemantik muss in älteren Überarbeitungen von ES2015 nachgeschaut werden.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.operators.array_comprehensions")}}

- -

Unterschiede zu den älteren JS1.7/JS1.8 Comprehensions

- -
JS1.7/JS1.8 Comprehensions wurden von Gecko 46 entfernt ({{bug(1220564)}}).
- -

Alte Comprehensions Syntax (nicht mehr benutzen!):

- -
[X for (Y in Z)]
-[X for each (Y in Z)]
-[X for (Y of Z)]
-
- -

Unterschiede:

- - - -

Siehe Bug 1220564, Kommentar 42 für Vorschläge zum Aktualisieren von Code.

- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/operators/expression_closures/index.html b/files/de/web/javascript/reference/operators/expression_closures/index.html deleted file mode 100644 index 16bda73cd4..0000000000 --- a/files/de/web/javascript/reference/operators/expression_closures/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Ausdrucks Closures -slug: Web/JavaScript/Reference/Operators/Expression_closures -tags: - - Functions - - JavaScript - - Reference -translation_of: Archive/Web/JavaScript/Expression_closures ---- -
Nicht Standardisiert. Nicht benutzen!
-Die Ausdrucks Closure-Syntax ist eine veraltete Firefox spezifische Funktion und wurde mit Firefox 60 entfernt. In Zukunft sollten Pfeilfunktionen genutzt werden.
- -
{{jsSidebar("Operators")}}
- -

Ausdrucks Closures sind eine kurze Funktionssyntax für das Schreiben einfacher Funktionen.

- -

Syntax

- -
function [name]([param1[, param2[, ..., paramN]]])
-   expression
-
- -

Parameter

- -
-
name
-
Der Funktionsname. Kann bei anonymen Funktionen weggelassen werden. Der Name ist nur lokal im Funktionskörper verfügbar.
-
paramN
-
Der Name eines Arguments, welcher der Funktion übergeben wird. Eine Funktion kann bis zu 255 Argumente haben.
-
expression
-
Der Ausdruck, welcher den Funktionskörper einer Funktion bildet.
-
- -

Beschreibung

- -

Diese Funktion ist nicht mehr als eine eine Kurzschreibweise für einfache Funktionen, die der Sprache einer typischen Lambda Notation ähnelt.

- -

JavaScript 1.7 und älter:

- -
function(x) { return x * x; }
- -

JavaScript 1.8:

- -
function(x) x * x
- -

Die Syntax erlaubt es die Klammern und das 'return' Statement wegzulassen - sie sind implizit. Es gibt keine weiteren Vorteile, wenn man den Code so schreibt, außer dass es kürzer ist.

- -

Beispiele

- -

Eine Kurzschreibweise für Eventlistener:

- -
 document.addEventListener('click', function() false, true);
-
- -

Einsatz dieser Notation mit der Array Funktion some aus JavaScript 1.6:

- -
elems.some(function(elem) elem.type == 'text');
-
- -

Browserkompatibilität

- - - -

{{Compat("javascript.operators.expression_closures")}}

- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/operators/generator_comprehensions/index.html b/files/de/web/javascript/reference/operators/generator_comprehensions/index.html deleted file mode 100644 index 843865b399..0000000000 --- a/files/de/web/javascript/reference/operators/generator_comprehensions/index.html +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: Generator Comprehensions -slug: Web/JavaScript/Reference/Operators/Generator_comprehensions -tags: - - Iterator - - JavaScript - - Non-standard - - Reference -translation_of: Archive/Web/JavaScript/Generator_comprehensions ---- -
Non standardisiert. Nicht einsetzen!
-Die Generator Comprehensions Syntax ist nicht standardisiert und wurde mit Firefox 58 entfernt. Zukünftig sollte stattdessen {{jsxref("Statements/function*", "Generatoren", "", 1)}} eingesetzt werden.
- -
{{jsSidebar("Operators")}}
- -

Die Generator Comprehensions Syntax war ein JavaScript Ausdruck welcher es erlaubt schnell einen neuen Generator auf Basis eines existierenden Iterable Objektes zu erstellen. Jedoch wurde diese aus dem Standard und der Firefox Implementierung entfernt. Sie soll nicht mehr eingesetzt werden!

- -

Syntax

- -
(for (x of iterable) x)
-(for (x of iterable) if (condition) x)
-(for (x of iterable) for (y of iterable) x + y)
-
- -

Beschreibung

- -

In der Generator Comprehension gibt es zwei erlaubte Arten von Komponenten:

- - - -

Die for-of Iteration ist immer die erste Komponente. Mehrere for-of Iterationen oder if Statements sind erlaubt.

- -

Ein signifikanter Nachteil von {{jsxref("Operators/Array_comprehensions","Array Comprehensions","","true")}} ist, dass diese ein völlig neues Array im Speicher erstellt wird. Wenn der Input für die Comprehension selbst ein kleines Array ist, ist der entstehende Overhead nicht signifikant — aber wenn der Input ein langes Array ist oder ein teurer (oder tatsächlich unendlicher) Generator ist, kann die Erstellung eines neuen Arrays problematisch werden.

- -

Generatoren erlauben das nachträgliche Berechnen von Sequenzen, mit Elementen, die dann Berechnet werden, wenn sie benötigt werden. Generator Comprehensions sind syntaktisch fast identisch zu Array Comprehensions — sie benutzen runde Klammern statt eckigen Klammern — jedoch erstellen sie Generator statt eines Arrays, welcher dann ausgeführt werden kann, wenn es benötigt wird. Man kann diese Funktion als Kurzsyntax für das Erstellen von Generatoren sehen.

- -

Angenommen man hat ein Iterator it welcher über eine große Sequenz von Integers iteriert. Wir wollen einen neuen Iterator erstellen, der über das Doppelte des Integers iteriert. Eine Array Comprehension würde ein volles Array im Speicher erstellen, welches die doppelten Werte enthält:

- -
var doubles = [for (i in it) i * 2];
-
- -

Auf der anderen Seite würde eine Generator Comprehension einen neuen Iterator erstellen, welcher die verdoppelten Werte erste dann erstellt, wenn sie benötigt werden:

- -
var it2 = (for (i in it) i * 2);
-console.log(it2.next()); // The first value from it, doubled
-console.log(it2.next()); // The second value from it, doubled
-
- -

Wenn eine Generator Comprehension als Argument einer Funktion eingesetzt wird, können durch die Funktionsaufrufsklammern die äußeren Klammern weggelassen werden:

- -
var result = doSomething(for (i in it) i * 2);
-
- -

Der signifikante Unterschied zwischen den beiden Beispiel ist beim Einsatz der Generator Comprehension, dass man nur einmal über die ganze Datenstruktur iterieren muss, während bei der Array Comprehension zweimal iteriert werden muss, beim Erstellen und beim eigentlichen Iterieren.

- -

Beispiele

- -

Einfache Generator Comprehensions

- -
(for (i of [1, 2, 3]) i * i );
-// generator function which yields 1, 4, and 9
-
-[...(for (i of [1, 2, 3]) i * i )];
-// [1, 4, 9]
-
-var abc = ['A', 'B', 'C'];
-(for (letters of abc) letters.toLowerCase());
-// generator function which yields "a", "b", and "c"
-
- -

Generator Comprehensions mit if Statement

- -
var years = [1954, 1974, 1990, 2006, 2010, 2014];
-
-(for (year of years) if (year > 2000) year);
-// generator function which yields 2006, 2010, and 2014
-
-(for (year of years) if (year > 2000) if (year < 2010) year);
-// generator function which yields 2006, the same as below:
-
-(for (year of years) if (year > 2000 && year < 2010) year);
-// generator function which yields 2006
-
- -

Generator Comprehensions verglichen mit Generatorfunktionen

- -

Ein einfacher Weg um Generator Comprehension Syntax zu verstehen ist es sie mit Generatorfunktionen zu vergleichen.

- -

Beispiel 1: Einfacher Generator:

- -
var numbers = [1, 2, 3];
-
-// Generator function
-(function*() {
-  for (let i of numbers) {
-    yield i * i;
-  }
-})();
-
-// Generator comprehension
-(for (i of numbers) i * i );
-
-// Result: both return a generator which yields [1, 4, 9]
-
- -

Beispiel 2: Einsatz von if in Generatoren.

- -
var numbers = [1, 2, 3];
-
-// Generator function
-(function*() {
-  for (let i of numbers) {
-    if (i < 3) {
-      yield i * 1;
-    }
-  }
-})();
-
-// Generator comprehension
-(for (i of numbers) if (i < 3) i);
-
-// Result: both return a generator which yields [1, 2]
- -

Spezifikationen

- -

Generator Comprehensions waren initial in dem ECMAScript 2015 Entwurf, jedoch wurden sie in der Überarbeitung 27 (August 2014) entfernt. Für Spezifikationssemantik muss in früheren Überarbeitungen von ES2015 nachgeschaut werden.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.operators.generator_comprehensions")}}

- -

Unterschiede zu den älteren JS1.7/JS1.8 Comprehensions

- -
JS1.7/JS1.8 Comprehensions wurden von Gecko 46 entfernt ({{bug(1220564)}}).
- -

Alte Comprehensions Syntax (nicht mehr benutzen!):

- -
(X for (Y in Z))
-(X for each (Y in Z))
-(X for (Y of Z))
-
- -

Unterschiede:

- - - -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/statements/for_each...in/index.html b/files/de/web/javascript/reference/statements/for_each...in/index.html deleted file mode 100644 index 34a52f5397..0000000000 --- a/files/de/web/javascript/reference/statements/for_each...in/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: for each...in -slug: Web/JavaScript/Reference/Statements/for_each...in -tags: - - Deprecated - - JavaScript - - Statement -translation_of: Archive/Web/JavaScript/for_each...in ---- -
{{jsSidebar("Statements")}}
- -
-

The for each...in statement is deprecated as the part of ECMA-357 (E4X) standard. E4X support has been removed, but for each...in will not be disabled and removed because of backward compatibility considerations. Consider using {{jsxref("Statements/for...of", "for...of")}} instead. (Please refer to {{bug("791343")}}.)

-
- -

Die for each...in Schleife wiederholt die definierteVariable in jeder Instanz eines Objekts. Für jedes einzelne Vorkommen wird der bestimmte Befehl ausgeführt.

- -

Syntax

- -
for each (variable in object) {
-  statement
-}
- -
-
variable
-
die Variable, die innerhalb des durchsuchten Projekts gesucht wird. Diese kann durch das Schlüsselwort var bestimmt werden. Die Variable wird Lokal innerhalb der Funktion definiert, nicht für die ganze Schleife.
-
- -
-
object
-
das Objekt, innerhalb dessen die Werte gesucht werden.
-
- -
-
statement
-
am Befehl, der bei jedem auftreten der gesuchten Eigenschaft ausgeführt wird. Um mehrere Befehle innerhalb der Schleife auszuführen, nutzen Sie für deren Gruppierung das {{jsxref("Statements/block", "Block")}} statement ({ ... }) .
-
- -

Beschreibung

- -

einige Eigenschaften werden nicht in der Schleife durchsucht. Diese umfassen alle standardmäßigen Methoden von Objekten, beispielsweise die String-Methode indexOf. Es werden jedoch alle vom Nutzer definierten Werte durchsucht.

- -

Beispiele

- -

Nutzung von for each...in

- -

Warnung: Nutzen Sie eine derartige Schleife niemals in Arrays. Nutzen Sie diese nur für Objekte. Weitere Einzelheiten bei {{jsxref("Statements/for...in", "for...in")}}.

- -

der folgende Code Ausschnitt durchsucht die Eigenschaften eines Objektes und errechnet ihre Summe:

- -
var sum = 0;
-var obj = {prop1: 5, prop2: 13, prop3: 8};
-
-for each (var item in obj) {
-  sum += item;
-}
-
-console.log(sum); // logs "26", which is 5+13+8
- -

Spezifikationen

- -

Kein teil der ECMA-262 Spezifikation. Implementiert in JavaScript 1.6 und deprecated.

- -

Browserkompatibilität

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}}{{CompatGeckoDesktop("1.8")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("1.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

See also

- - diff --git a/files/de/xml_web_services/index.html b/files/de/xml_web_services/index.html deleted file mode 100644 index 0d592a3fd4..0000000000 --- a/files/de/xml_web_services/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: XML Web Services -slug: XML_Web_Services -translation_of: Archive/Mozilla/Firefox/SOAP_in_Gecko-based_Browsers ---- -
Webservices Grundlagen
-Eine kurze Einführung in Webservices.
-
Ein Webservice ist eine Sammlung von Protokollen und Standards, die zum Austausch von Daten zwischen Applikationen oder Systemen verwendet wird. Softwareanwendungen, die in unterschiedlichen Programmiersprachen geschrieben sind und auf verschiedenen Plattformen betrieben werden, können Webservices benutzen, um Daten über Computernetzwerke wie das Internet auszutauschen. Bei XML Webservices werden alle Daten, die ausgetauscht werden sollten, mit XML Tags formatiert.
- -

Dokumentation

SOAP in Gecko-basierenden Browsern
Dieser Artikel zeigt, wie man auf Webservices, über SOAP und JavaScript mittels den verfügbaren Fähigkeiten in Gecko-basierenden Browsern, zugreift.
SOAP Tutorial auf W3School (engl.)
SOAP ist ein auf XML-basierendes Protokoll, um Anwendungen Information über HTTP austauschen zu lassen. In dem W3Schools SOAP Tutorial wird erklärt, was SOAP ist und wie es XML verwendet, um Informationen zwischen Applikationen auszutauschen.
XML-RPC für Neulinge (engl.)
Informelle aber informative Einführung in XML Remote Procedure Calls (XML-RPC).

Alles ansehen...

Community

  • Mozillas XML Foren:

{{ DiscussionList("dev-tech-xml", "mozilla.dev.tech.xml") }}

Verwandte Themen

AJAX, XML
-

{{ languages( { "en": "en/XML_Web_Services", "es": "es/Servicios_Web_XML", "fr": "fr/Services_Web_XML", "it": "it/XML_Web_Services", "ja": "ja/XML_Web_Services", "pl": "pl/XML_Web_Services", "zh-cn": "cn/XML_Web_Services", "ko": "ko/XML_Web_Services" } ) }}

diff --git a/files/de/xpcom/http_request_header_setzen/index.html b/files/de/xpcom/http_request_header_setzen/index.html deleted file mode 100644 index 63b5165d0a..0000000000 --- a/files/de/xpcom/http_request_header_setzen/index.html +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: HTTP Request Header setzen -slug: XPCOM/HTTP_Request_Header_setzen -translation_of: Mozilla/Tech/XPCOM/Setting_HTTP_request_headers ---- -

HTTP ist eine der zentralen Webtechnologien. Neben dem eigentlichen Inhalt werden einige wichtige Informationen sowohl für die HTTP Requests als auch für die Antworten (Responses) gesetzt.

-

Du kannst für jedes Request der Anwendung deine eigenen HTTP Header setzen, egal ob das Request dadurch eingeleitet wird, daß dein Code explizit einen HTTP-Kanal öffnet, ob es durch eine XMLHttpRequest Aktivität entstand, durch ein {{htmlelement("img")}} Element in der Seite generiert oder gar von CSS aus gestartet wurde.

-

HTTP Kanäle

-

Wenn du HTTP Anfragen (Requests) und Antworten bearbeites, machst du das typischerweise mit einem nsIHttpChannel. Die nsIHttpChannel Schnittstelle besitzt eine Reihe von Eigenschaften und Methoden, von denen uns hier vor allem setRequestHeader interessiert. Diese Methode erlaubt uns, einen HTTP Request Header zu setzen.

-

Es folgt Beispielcode, wie wir einen HTTP Header setzen.

-
// fuegt "X-Hello: World" als Header zum Request hinzu
-httpChannel.setRequestHeader("X-Hello", "World", false);
-
-

Im obenstehenden Bespielcode haben wir eine Variable httpChannel, die auf ein Objekt zeigt, das nsIHttpChannel implementiert. (Die Variable hätte aber auch irgendwie anders heißen können.)

-

Die Methode setRequestHeader erwartet 3 Parameter. Der erste Parameter ist der Name des HTTP Request Headers. Der zweite Parameter ist der Wert des HTTP Request Headers. Ignoriere vorläufig den dritten Parameter, und setze ihn erst einmal immer auf false.

-

In unserem Beispiel hat der HTTP Request Header, den wir hinzugefügt haben, den Namen X-Hello und den Wert World.

-
-

HINWEIS: IWenn du deinen eigenen HTTP header einführst, MUST du ein X- vor den Namen setzen. (In unserem Beispiel ist unser neuer HTTP header X-Hello und NICHT Hello weil wir korrekterweise das X- vor unserem Namen hinzugefügt haben.)

-


- Dieser Hinweis ist veraltet: http://tools.ietf.org/html/rfc6648

-
-

Benachrichtigungen

-

Du wirst dich jetzt vielleicht fragen, wie man an den nsIHttpChannel kommt, wenn das HTTP Request abgeschickt wurde.

-

Wenn dein eigener Code das Request erzeugt hat, dann hast du den HTTP Kanal wahrscheinlich schon. Anders erzeugte Requests fängt man mit Benachrichtigungen (notifications) ab, die sehr stark den Ereignissen oder Signalen ähneln, die man in anderen Sprachen und Frameworks findet.

-

In diesem Fall müssen wir, um den nsIHttpChannel rechtzeitig vor dem Absenden des HTTP Requests zu bekommen, das "http-on-modify-request" Thema ("topic") beobachten. (Ja, "http-on-modify-request" ist eine Zeichenkette.)

-
-

HINWEIS: Es gibt viele andere "topics" neben "http-on-modify-request", zu denen du Benachrichtigungen bekommen kannst. Zum Beispiel "http-on-examine-response" und "xpcom-shutdown". Du kannst auch deine eigenen "topics" einrichten und selber Benachrichtigungen dazu verschicken..

-

Für nähere Informationen über das Benachrichtigungs-Framework und eine Liste allgemeiner Benachrichtigungs-Topics siehe Observer Notifications.

-
-

Observer (Beobachter)

-

Um zu einem Thema wie "http-on-modify-request" Benachrichtigungen zu empfangen müssen wir einen Beobachter (observer) einrichten. Ein Beobachter ist eine Komponente, die die nsIObserver Schnittstelle implementiert. Sobald der Beobachter für ein Thema registriert ist, wird es über das Thema benachrichtigt, indem seine observe Methode aufgerufen wird.

-

Unten folgt der Quelltext eines Beispiel-Beobachters, der unseren Zusatz-Header "X-Hello" zu dem HTTP-Kanal hinzufügt, der der Benachrichtigung für http-on-modify-request mitgegeben wird:

-
var {Cc, Ci} = require("chrome");
-var httpRequestObserver =
-{
-  observe: function(subject, topic, data)
-  {
-    if (topic == "http-on-modify-request") {
-      var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
-      httpChannel.setRequestHeader("X-Hello", "World", false);
-    }
-  }
-};
-
-
- HINWEIS: Der obenstehende Quelltext wurde verändert um wiederzugeben, daß man in einem Firefox-Add-On die Typen Components.interfaces und Components.classes nicht mehr direkt ansprechen kann, sondern die obere "require"-Codezeile nutzen muß. Deshalb steht auf dieser Seite Ci bzw. Cc, wo man früher Components.interfaces respektive Components.classes verwendet hat.
- Bitte beachte auch, daß der Code selber normalerweise in einen Block exports.main = function() { ... } eingeschlossen wird.
-

Beachte dabei, daß es wichtig ist, wie viele Parameter die observe Method übergeben bekommt. Es sind 3 Parameter (Wie wir oben im Beispielcode gezeigt haben). Für das "http-on-modify-request" Thema enthält der erste Parameter (im oberen Beispiel subject genannt) den nsIHttpChannel. Aus gewissen Gründen wird er uns aber als nsISupports Objekt übergeben. Deshalb müssen wir das nsISupports in ein nsIHttpChannel umwandeln, was der Aufruf von QueryInterface für uns macht. Und sicher - Objekte von einem Typ in einen anderen umzuwandeln ist sehr häßlich und läßt etwas vermissen, was man als 'Syntaktischen Zucker' bezeichnen könnte.

-

Die zweite Zeile des Codes im if-Block sollte dir bereits bekannt erscheinen. Es ist der selbe Code, den wir bereits vorher verwendet hatten, um den HTTP Request Header hinzuzufügen.

-

Der Name des Objektes -- httpRequestObserver -- ist unwichtig. Wir hätten es benennen können, wie es uns gefällt.

-

Registrierung

-

Nachdem wir den Beobachter aufgesetzt haben, müssen wir ihn registrieren. In unserem Fall möchten wir ihn für das Thema "http-on-modify-request" registrieren. Das können wir mit dem untenstehenden Code tun.

-
var observerService = Cc["@mozilla.org/observer-service;1"]
-                                .getService(Ci.nsIObserverService);
-observerService.addObserver(httpRequestObserver, "http-on-modify-request", false);
-
-

Der erste Ausdruck holt das Objekt, das uns Registrierungen zu Themen durchführen läßt, zu denen wir Benachrichtigungen erhalten wollen.

-

Der Befehl in der zweiten Zeile führt die eigentliche Registrierung durch. Es bedeutet: Wir wollen, daß httpRequestObserver (durch Aufrufen seiner observe Methode) benachrichtigt wird, wenn ein "http-on-modify-request" Thema stattfindet (von dem wir wissen, daß es direkt vor jedem HTTP Request passiert).

-

Abmeldung

-

Du solltest den Beobachter vor dem Beenden abmelden, um mögliche Speicherlecks zu vermeiden. Einen Beobachter meldet man mit einem Aufruf von nsIObserverService.removeObserver wie folgt ab:

-
observerService.removeObserver(httpRequestObserver, "http-on-modify-request");
-

Zusammengefaßtes Beispiel

-

Hier ist eine leicht andere Variante unseres httpRequestObserver Objektes. Während die vorherige Version die wir gezeigt haben für das Lernen anschaulich sein sollte, möchte man den Code in echten Anwendungen vielleicht eher wie folgt aufbauen:

-
var httpRequestObserver =
-{
-  observe: function(subject, topic, data)
-  {
-    if (topic == "http-on-modify-request") {
-      var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
-      httpChannel.setRequestHeader("X-Hello", "World", false);
-    }
-  },
-
-  get observerService() {
-    return Cc["@mozilla.org/observer-service;1"]
-                     .getService(Ci.nsIObserverService);
-  },
-
-  register: function()
-  {
-    this.observerService.addObserver(this, "http-on-modify-request", false);
-  },
-
-  unregister: function()
-  {
-    this.observerService.removeObserver(this, "http-on-modify-request");
-  }
-};
-
-

Dieses Objekt hat benutzerfreundliche register() und unregister() Methoden. Damit braucht man für die Aktivierung nur noch folgendes aufzurufen:

-
httpRequestObserver.register();
-
-

Du solltest auch nicht vergessen, vor den Beenden den Beobachter abzumelden:

-
httpRequestObserver.unregister();
-
-

Und das war's schon.

-

XPCOM Komponenten

-

Du mußt den http-on-modify-request Beobachter einmal pro Anwendung registrieren (Nicht einmal pro Fenster!). Das bedeutet, daß du die Implementierung des Beobachters in eine XPCOM Komponente anstelle eines overlays packen solltest. Wenn du Gecko2 (Firefox4) unterstützen willst, mußt du deine javascript Komponente so registrieren wie hier beschrieben: https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0#JavaScript_components.

-
var headerName  = "X-hello";
-var headerValue = "world";
-
-function LOG(text)
-{
-    //    var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
-    //    consoleService.logStringMessage(text);
-}
-
-function myHTTPListener() { }
-
-myHTTPListener.prototype = {
-
-  observe: function(subject, topic, data)
-  {
-      if (topic == "http-on-modify-request") {
-
-          LOG("----------------------------> (" + subject + ") mod request");
-
-          var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
-          httpChannel.setRequestHeader(headerName, headerValue, false);
-          return;
-      }
-
-
-      if (topic == "profile-after-change") {
-
-          LOG("----------------------------> profile-after-change");
-
-          var os = Components.classes["@mozilla.org/observer-service;1"]
-                             .getService(Components.interfaces.nsIObserverService);
-
-          os.addObserver(this, "http-on-modify-request", false);
-          return;
-      }
-  },
-
-  QueryInterface: function (iid) {
-        if (iid.equals(Components.interfaces.nsIObserver) ||
-            iid.equals(Components.interfaces.nsISupports))
-            return this;
-
-        Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
-        return null;
-    },
-};
-
-var myModule = {
-    registerSelf: function (compMgr, fileSpec, location, type) {
-
-        var compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
-        compMgr.registerFactoryLocation(this.myCID,
-                                        this.myName,
-                                        this.myProgID,
-                                        fileSpec,
-                                        location,
-                                        type);
-
-
-          LOG("----------------------------> registerSelf");
-
-        var catMgr = Components.classes["@mozilla.org/categorymanager;1"].getService(Components.interfaces.nsICategoryManager);
-        catMgr.addCategoryEntry("app-startup", this.myName, this.myProgID, true, true);
-    },
-
-
-    getClassObject: function (compMgr, cid, iid) {
-
-          LOG("----------------------------> getClassObject");
-
-        return this.myFactory;
-    },
-
-    myCID: Components.ID("{9cf5f3df-2505-42dd-9094-c1631bd1be1c}"),
-
-    myProgID: "@dougt/myHTTPListener;1",
-
-    myName:   "Simple HTTP Listener",
-
-    myFactory: {
-        QueryInterface: function (aIID) {
-            if (!aIID.equals(Components.interfaces.nsISupports) &&
-                !aIID.equals(Components.interfaces.nsIFactory))
-                throw Components.results.NS_ERROR_NO_INTERFACE;
-            return this;
-        },
-
-        createInstance: function (outer, iid) {
-
-          LOG("----------------------------> createInstance");
-
-          return new myHTTPListener();
-        }
-    },
-
-    canUnload: function(compMgr) {
-        return true;
-    }
-};
-
-function NSGetModule(compMgr, fileSpec) {
-    return myModule;
-}
-
-

Gute Praktiken für Datenschutz und Sicherheit

-

Ein Anwendungsfall für das Setzen eines anwendungsspezifischen HTTP Request Headers ist, wenn ein bestimmter Webauftritt prüfen können soll, ob der Browser ein bestimmtes Plugin / Add-On / Erweiterung installiert hat.

-

Eine gute Praxis dazu ist, wenn man diesen spezifischen HTTP Header (beispielsweise "X-site.net-extension") nicht immer sendet, sondern nur dann, wenn man HTTP Requests an diese eine spezifische Webaddresse schickt. Nicht gleich von vorn herein allen besuchten Webservern mitzuteilen, welche Erweiterungen installiert sind, ist gut sowohl für den Datenschutz (weil so die Identifikation und Nachverfolgung von Nutzern anhand ihres Browserprofils erschwert wird), als auch für die Sicherheit (Angreifer kennen so manche Schwachstelle von bestimmten Browsererweiterungen).

-

Bei Beachtung dieser Datenschutz- und Sicherheitspraktiken sieht der Quelltext dann so aus:

-
observe: function(subject, topic, data)
- {
-   if (topic == "http-on-modify-request") {
-     var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
-     if (/site.net/.test(httpChannel.originalURI.host)) {
-          httpChannel.setRequestHeader("X-Hello", "World", false);
-     }
-   }
- },
-
diff --git a/files/de/xpcom/index.html b/files/de/xpcom/index.html deleted file mode 100644 index 38486de78d..0000000000 --- a/files/de/xpcom/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: XPCOM -slug: XPCOM -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM ---- -
Einführung in XPCOM -

Ein fünfteiliges Tutorial auf IBM developerWorks: Teil I, Teil II, Teil III, Teil IV, Teil V

-
- -
-

XPCOM is no longer available for use by Firefox extensions. Use WebExtensions instead.

-
- -
-

Das Cross Platform Component Object Model (XPCOM) ist ein plattformübergreifendes Komponentenmodell, vergleichbar mit Microsoft COM. Es verfügt über mehrere Sprachbindungen, die es ermöglichen XPCOM Komponenten in JavaScript, Java, und Python neben C++ zu implementieren. Die Schnittstellen sind im IDL-Dialekt XPIDL definiert.

- -

XPCOM bietet selbst eine Reihe von Kernkomponenten und Klassen an, z.B. Datei- und Speichermanagement, Threads, Grundlegende Datenstrukturen (Strings, Arrays, Variants), etc. Der Großteil der XPCOM-Komponenten ist kein Teil des Kerns und wird durch andere Plattformteile (z.B. Gecko oder Necko) oder durch eine Anwendung oder sogar durch eine Erweiterung bereit gestellt.

-
- - - - - - - - -
-

Dokumentation

- -
-
XPCOM API Referenz
-
Dokumentation der Kernkomponenten, Schnittstellen und Funktionen von XPCOM.
-
XPCOM Änderungen in Gecko 2.0
-
Es gab eine Reihe von Änderungen in Gecko 2.0 die die Kompatibilität von XPCOM Komponenten betreffen. Dieser Artikel gibt detailliertere Auskunft darüber.
-
Strings, Hashtable, und Arrays
-
Verwendung von grundlegenden Datenstrukturen.
-
XPCOM Glue
-
XPCOM Glue ermöglicht die Verwendung von XPCOM Hilfsfunktionen und -Klassen ohne eine Abhängigkeit zu Teilen von XPCOM (xpcom_core.{dll,so,dylib}) herzustellen.
-
XPCOM Komponenten erstellen
-
Dieser Artikel erklärt wie man eine XPCOM Komponente baut, die das Browserverhalten kontrolliert.
-
XPCOM Komponenten in JavaScript
-
Schnelleinstieg in das Schreiben von JavaScript Komponenten.
-
Erstellen von Firefox Erweiterungen mit dem Mozilla Build System
-
Das Erstellen von »Erweiterungen« soll nicht verwirren, es geht in diesem Artikel hauptsächlich um binäre Komponenten.
- Linux und Windows, Windows, Redux, OS/X (en)
-
XPCOM in JavaScript ohne Leaks verwenden
-
XPCOM in JavaScript (auch als XPConnect bekannt) ist eine Umgebung in der Speicherlecks nicht offensichtlich sind. Es kommt schon mal vor, dass der JavaScript-Code Leaks aufweist.
-
- -

Alle anzeigen...

-
-

Tools

- - - - - - -
diff --git a/files/de/xpi/index.html b/files/de/xpi/index.html deleted file mode 100644 index 61d5111d85..0000000000 --- a/files/de/xpi/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: XPI -slug: XPI -tags: - - XPInstall -translation_of: Mozilla/XPI ---- -

Cross-Platform Installer Module (XPI) (ausgesprochen "zippy") ist eine ZIP-Datei, welche durch Installationspakete der XPInstall-Technologie genutzt wird. XPI-Module (sogenannte "Bundles") haben die Aufgabe verschiedenste Programme zu installieren, zum Beispiel Plugins, Erweiterungen, Themes, Wörterbücher, etc.

-

Ein XPI enthält Installationsanweisungen (install.js oder install.rdf) und die Bestandteile der zu installierenden Software, welche selbst als JAR-Datei verpackt ist. Beim Herunterladen oder Ziehen in das Erweiterungsfenster, beginnt XPInstall automatisch die Anweisungen innerhalb des XPI auszuwerten, und installiert entsprechend die enthaltene Software.

-
-

{{ gecko_callout_heading("2.0") }}

-

Ab Gecko 2.0 {{ geckoRelease("2.0") }}, werden XPI Dateien nicht mehr entpackt, wenn Erweiterungen installiert werden. Stattdessen wird das XPI selbst in das Erweiterungsverzeichnis platziert und die Dateien werden direkt aus dem Paket geladen. Siehe Erweiterungen für Firefox 4 aktualisieren für weitere Details.

-
-

Wenn XPI Dateien mittels HTTP übermittelt werden, trifft der application/x-xpinstall MIME-Type auf die Dateiendung xpi zu.

-

Siehe auch

- -

{{ languages( { "en": "en/XPI", "it": "it/XPI", "pl": "pl/XPI" } ) }}

diff --git a/files/de/xpinstall/index.html b/files/de/xpinstall/index.html deleted file mode 100644 index 289ff00b1e..0000000000 --- a/files/de/xpinstall/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: XPInstall -slug: XPInstall -tags: - - XPInstall -translation_of: Archive/Mozilla/XPInstall ---- -

Teile dieser Seite zeigen die Verwendung der XPInstall API. Der Großteil dieser API ist missbilligt (deprecated) und seit Gecko 1.9 nicht länger verfügbar. Erweiterungen, Theme, und plug-in Entwickler müssen von install.js basierenden Paketen zum neuem Paketschema mit einem install.rdf Manifest wechseln. Genaueres für Plugin-Entwickler findet man unter der Anleitung wie man ein Plugin als eine Erweiterung packt.

- -

Cross-Platform Install (XPInstall) ist eine Technologie, welche von der Mozilla Suite, Mozilla Firefox, Mozilla Thunderbird und anderen XUL-basierten Anwendungen genutzt wird, um Erweiterungen zu installieren. Ein XPI (ausgesprochen "zippy" und abgeleitet von XPInstall) Installationsmodul ist eine ZIP-Datei, welche ein Installationsskript oder ein Manifest (benannt install.js oder install.rdf) im Wurzelverzeichnis enthält.

- - - - - - - - -
-

Dokumentation

- -
-
XPInstall API Referenz
-
Dokumentation der XPInstall API
-
XPI Installationsskripte anhand eines Beispiel
-
Dieser Artikel nutzt das Installationsskript aus dem browser.xpi Installationspaket als Basis zur Diskussion von XPI-Installationen im allgemeinen.
-
XPI Installationsmodule erstellen
-
Dieser Artikel Beschreibt den Paketaufbau von Mozilla und bietet eine Einführung zur Erstellung eines neuen Paketes, welches weitergegeben, installiert, und Benutzern zur Verfügung gestellt werden kann.
-
- -

Alle anzeigen...

-
-

Community

- -
    -
  • Mozillas Plattform Foren:
  • -
- -

{{ DiscussionList("dev-platform", "mozilla.dev.platform") }}

- -

Tools

- - - -

Verwandte Themen

- -
-
Erweiterungen, XUL, XPI
-
-
- -

{{ languages( { "en": "en/XPInstall", "zh-cn": "cn/XPInstall", "es": "es/XPInstall", "fr": "fr/XPInstall", "ja": "ja/XPInstall", "pl": "pl/XPInstall" } ) }}

diff --git "a/files/de/xul_anwendungen_f\303\274r_firefox_1.5_anpassen/index.html" "b/files/de/xul_anwendungen_f\303\274r_firefox_1.5_anpassen/index.html" deleted file mode 100644 index a2dee4406d..0000000000 --- "a/files/de/xul_anwendungen_f\303\274r_firefox_1.5_anpassen/index.html" +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: XUL_Anwendungen_für_Firefox_1.5_anpassen -slug: XUL_Anwendungen_für_Firefox_1.5_anpassen -tags: - - Erweiterungen - - Firefox 1.5 - - XUL -translation_of: Mozilla/Firefox/Releases/1.5/Adapting_XUL_Applications_for_Firefox_1.5 ---- -
{{FirefoxSidebar}}

Diese Seite gibt einen Überblick über Änderungen in Firefox 1.5, die XUL-Entwickler betreffen.

- -

Besondere Änderungen

- - - -

Weitere Informationen

- - - -

{{ languages( { "en": "en/Adapting_XUL_Applications_for_Firefox_1.5", "fr": "fr/Adaptation_des_applications_XUL_pour_Firefox_1.5", "it": "it/Adattare_le_applicazioni_XUL_a_Firefox_1.5", "ja": "ja/Adapting_XUL_Applications_for_Firefox_1.5", "pl": "pl/Dostosowanie_aplikacji_XUL_do_Firefoksa_1.5" } ) }}

diff --git a/files/de/xul_explorer/index.html b/files/de/xul_explorer/index.html deleted file mode 100644 index 62fd957faf..0000000000 --- a/files/de/xul_explorer/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: XUL Explorer -slug: XUL_Explorer -translation_of: Archive/Mozilla/XUL_Explorer ---- -

XUL Explorer is a XULRunner application that provides an easy way to experiment with XUL. It’s a simple editor that can preview XUL inline or in a separate popup window. It has a list of code snippets (small fragments of XUL or JavaScript) that can be quickly inserted into the editor. The XUL can be loaded from and saved to files. A XUL validator and the Error Console are both available to help debug problems. The help menu provides access to XUL information on MDC. There is even simple “keyword” help lookup for XUL elements.

-

Roadmap

-

Features:

- -

Future:

- -

For more detailed information, see the {{ interwiki('wikimo', 'XUL_Explorer:Planning#Feature_Planning_for_XUL_Explorer') }}.

-

Installs

-

Latest Version:

- -

Contributing

- -

Blog Posts

-

XUL Explorer - Updated (1.0a1pre)
- XUL Explorer 0.4
- XUL Explorer 0.3
- XUL Explorer 0.2
- Exploring XUL

-

{{ languages( { "pl": "pl/XUL_Explorer" } ) }}

diff --git a/files/de/zones/index.html b/files/de/zones/index.html deleted file mode 100644 index 84e97fdbe6..0000000000 --- a/files/de/zones/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Bereiche -slug: Zones -translation_of: Zones ---- -

MDN-Bereiche stellen Zugriff auf Informationen über spezifische Themengebiete und Produkte zur Verfügung. Hier ist eine Liste mit allen Bereichen, die Ihnen zur Verfügung stehen.

- -
-
-

Web- und App-Entwicklung

- -
-
App-Zentrum
-
Lernen Sie, wie Sie offene Web-Anwendungen erstellen – reichhaltige Erlebnisse, welche auf verschiedensten Endgeräten und Formfaktoren ausgeführt werden können – verwenden Sie dabei die gleichen Webstandards und offenen Technologien, wie Sie sie schon kennen.
-
Entwicklerwerkzeuge
-
Lernen Sie, wie Sie die Entwicklerwerkzeuge von Firefox beim Debuggen, Testen und Optimieren Ihrer Web-Anwendungen und Seiten verwenden.
-
Firefox-Marktplatz
-
Ein offener, nicht-proprietärer Online-Marktplatz für Web-Anwendungen basierend auf HTML, CSS und JavaScript. Übertragen Sie Apps zum Firefox-Marktplatz oder verwenden Sie den Code, um Ihren eigenen Marktplatz aufzubauen.
-
Spieleentwicklung
-
Lernen Sie, wie Sie Spiele für das Web entwickeln, wie Sie existierende Spiele für Web-Technologien aufbereiten und wie Sie Ihr Spiel in eine Web-App verwandeln.
-
Mozilla-Entwicklerprogramm
-
Lernen Sie mehr über das Mozilla-Entwicklerprogramm, bei dem Sie sich für eine Mitgliedschaft anmelden, unseren Newsletter abonnieren können und Zugriff auf unser wachsendes Eigenschaftsfeld für Web-Entwickler haben.
-
-
- -
-

Produkte und Projekte

- -
-
Emscripten
-
Ein LLVM für JavaScript-Compiler. Dieser ermöglicht zum Beispiel, C++-Code in JavaScript-Code, welcher im Browser ausgeführt werden kann, zu kompilieren.
-
L20n
-
Eine JavaScript-Lokalisierungsgrundstruktur, welche die Möglichkeiten Ihrer Muttersprache mit einfachem Code entfesselt.
-
Das MDN-Projekt
-
Das Mozilla-Entwickler-Netzwerk (diese Seite) verlässt sich auf seine Gemeinschaft aus Lesern und Beitragserstellern, um zu wachsen und sich zu verbessern. Sie können hier lernen, wie Sie helfen können, den Code, der hinter MDN steht, zu verwenden, zu ihm beizutragen und ihn erstellen.
-
Persona
-
Ein von Mozilla neu entwickeltes, einfaches, Privatsphäre-sensibles Einzelanmeldesystem, welches Nutzern ermöglicht, sich mit ihrer E-Mail-Adresse an Ihre Webseite anzumelden, und Sie damit von der Passwortverwaltung befreit.
-
- -

Mozilla-Technologien

- -
-
Add-ons
-
Lernen Sie, wie Sie Erweiterungen, Themen und Plug-Ins für den populären Firefox-Browser und andere auf Mozilla basierende Software erstellen und installieren.
-
Firefox
-
Lernen Sie alles über Firefox, wie Sie es erstellen und überarbeiten oder wie Sie spezielle Add-ons für Firefox erstellen.
-
Firefox OS
-
Ein von Mozilla neu entwickeltes Handy-Betriebssystem, welches Nutzern ermöglicht, offene auf HTML, CSS und JavaScript basierende Internet-Anwendungen zu installieren und auszuführen.
-
-
-
- -

 

-- cgit v1.2.3-54-g00ecf