From 02cdf0c3a73480fb681cf132b02c1561f10e5972 Mon Sep 17 00:00:00 2001 From: SphinxKnight Date: Thu, 29 Sep 2022 12:47:10 +0200 Subject: [PATCH 1/3] move *.html to *.md --- files/ru/mozilla/add-ons/{index.html => index.md} | 0 .../anatomy_of_a_webextension/{index.html => index.md} | 0 .../webextensions/api/cookies/cookie/{index.html => index.md} | 0 .../add-ons/webextensions/api/cookies/{index.html => index.md} | 0 .../add-ons/webextensions/api/downloads/{index.html => index.md} | 0 .../ru/mozilla/add-ons/webextensions/api/{index.html => index.md} | 0 .../api/runtime/getmanifest/{index.html => index.md} | 0 .../add-ons/webextensions/api/runtime/{index.html => index.md} | 0 .../add-ons/webextensions/api/tabs/get/{index.html => index.md} | 0 .../add-ons/webextensions/api/tabs/hide/{index.html => index.md} | 0 .../add-ons/webextensions/api/tabs/{index.html => index.md} | 0 .../add-ons/webextensions/api/webrequest/{index.html => index.md} | 0 .../webextensions/api/windows/createtype/{index.html => index.md} | 0 .../add-ons/webextensions/api/windows/{index.html => index.md} | 0 .../chrome_incompatibilities/{index.html => index.md} | 0 .../webextensions/content_scripts/{index.html => index.md} | 0 .../content_security_policy/{index.html => index.md} | 0 .../add-ons/webextensions/examples/{index.html => index.md} | 0 files/ru/mozilla/add-ons/webextensions/{index.html => index.md} | 0 .../intercept_http_requests/{index.html => index.md} | 0 .../webextensions/internationalization/{index.html => index.md} | 0 .../manifest.json/background/{index.html => index.md} | 0 .../content_security_policy/{index.html => index.md} | 0 .../manifest.json/description/{index.html => index.md} | 0 .../webextensions/manifest.json/icons/{index.html => index.md} | 0 .../add-ons/webextensions/manifest.json/{index.html => index.md} | 0 .../manifest.json/manifest_version/{index.html => index.md} | 0 .../webextensions/manifest.json/name/{index.html => index.md} | 0 .../manifest.json/permissions/{index.html => index.md} | 0 .../webextensions/manifest.json/version/{index.html => index.md} | 0 .../add-ons/webextensions/match_patterns/{index.html => index.md} | 0 .../webextensions/modify_a_web_page/{index.html => index.md} | 0 .../add-ons/webextensions/prerequisites/{index.html => index.md} | 0 .../user_interface/browser_action/{index.html => index.md} | 0 .../user_interface/context_menu_items/{index.html => index.md} | 0 .../user_interface/extension_pages/{index.html => index.md} | 0 .../add-ons/webextensions/user_interface/{index.html => index.md} | 0 .../user_interface/notifications/{index.html => index.md} | 0 .../webextensions/user_interface/omnibox/{index.html => index.md} | 0 .../webextensions/user_interface/popups/{index.html => index.md} | 0 .../user_interface/sidebars/{index.html => index.md} | 0 .../webextensions/what_are_webextensions/{index.html => index.md} | 0 .../your_first_webextension/{index.html => index.md} | 0 .../your_second_webextension/{index.html => index.md} | 0 files/ru/mozilla/firefox/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/1.5/{index.html => index.md} | 0 .../1.5/using_firefox_1.5_caching/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/28/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/29/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/3.5/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/3/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/31/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/32/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/33/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/43/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/53/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/62/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/63/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/64/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/65/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/68/{index.html => index.md} | 0 files/ru/mozilla/firefox/releases/{index.html => index.md} | 0 files/ru/mozilla/{index.html => index.md} | 0 63 files changed, 0 insertions(+), 0 deletions(-) rename files/ru/mozilla/add-ons/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/cookies/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/downloads/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/runtime/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/tabs/get/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/tabs/hide/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/tabs/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/webrequest/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/windows/createtype/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/api/windows/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/content_scripts/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/content_security_policy/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/examples/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/intercept_http_requests/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/internationalization/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/background/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/description/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/icons/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/name/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/manifest.json/version/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/match_patterns/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/modify_a_web_page/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/prerequisites/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/user_interface/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/user_interface/notifications/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/user_interface/popups/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/what_are_webextensions/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/your_first_webextension/{index.html => index.md} (100%) rename files/ru/mozilla/add-ons/webextensions/your_second_webextension/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/1.5/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/28/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/29/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/3.5/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/3/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/31/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/32/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/33/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/43/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/53/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/62/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/63/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/64/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/65/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/68/{index.html => index.md} (100%) rename files/ru/mozilla/firefox/releases/{index.html => index.md} (100%) rename files/ru/mozilla/{index.html => index.md} (100%) diff --git a/files/ru/mozilla/add-ons/index.html b/files/ru/mozilla/add-ons/index.md similarity index 100% rename from files/ru/mozilla/add-ons/index.html rename to files/ru/mozilla/add-ons/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html b/files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html rename to files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.html b/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.html rename to files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/cookies/index.html b/files/ru/mozilla/add-ons/webextensions/api/cookies/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/cookies/index.html rename to files/ru/mozilla/add-ons/webextensions/api/cookies/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/downloads/index.html b/files/ru/mozilla/add-ons/webextensions/api/downloads/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/downloads/index.html rename to files/ru/mozilla/add-ons/webextensions/api/downloads/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/index.html b/files/ru/mozilla/add-ons/webextensions/api/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/index.html rename to files/ru/mozilla/add-ons/webextensions/api/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.html b/files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.html rename to files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/runtime/index.html b/files/ru/mozilla/add-ons/webextensions/api/runtime/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/runtime/index.html rename to files/ru/mozilla/add-ons/webextensions/api/runtime/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/tabs/get/index.html b/files/ru/mozilla/add-ons/webextensions/api/tabs/get/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/tabs/get/index.html rename to files/ru/mozilla/add-ons/webextensions/api/tabs/get/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/tabs/hide/index.html b/files/ru/mozilla/add-ons/webextensions/api/tabs/hide/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/tabs/hide/index.html rename to files/ru/mozilla/add-ons/webextensions/api/tabs/hide/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/tabs/index.html b/files/ru/mozilla/add-ons/webextensions/api/tabs/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/tabs/index.html rename to files/ru/mozilla/add-ons/webextensions/api/tabs/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/webrequest/index.html b/files/ru/mozilla/add-ons/webextensions/api/webrequest/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/webrequest/index.html rename to files/ru/mozilla/add-ons/webextensions/api/webrequest/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/windows/createtype/index.html b/files/ru/mozilla/add-ons/webextensions/api/windows/createtype/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/windows/createtype/index.html rename to files/ru/mozilla/add-ons/webextensions/api/windows/createtype/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/api/windows/index.html b/files/ru/mozilla/add-ons/webextensions/api/windows/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/api/windows/index.html rename to files/ru/mozilla/add-ons/webextensions/api/windows/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/index.html b/files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/index.html rename to files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/content_scripts/index.html b/files/ru/mozilla/add-ons/webextensions/content_scripts/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/content_scripts/index.html rename to files/ru/mozilla/add-ons/webextensions/content_scripts/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/content_security_policy/index.html b/files/ru/mozilla/add-ons/webextensions/content_security_policy/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/content_security_policy/index.html rename to files/ru/mozilla/add-ons/webextensions/content_security_policy/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/examples/index.html b/files/ru/mozilla/add-ons/webextensions/examples/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/examples/index.html rename to files/ru/mozilla/add-ons/webextensions/examples/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/index.html b/files/ru/mozilla/add-ons/webextensions/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/index.html rename to files/ru/mozilla/add-ons/webextensions/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/intercept_http_requests/index.html b/files/ru/mozilla/add-ons/webextensions/intercept_http_requests/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/intercept_http_requests/index.html rename to files/ru/mozilla/add-ons/webextensions/intercept_http_requests/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/internationalization/index.html b/files/ru/mozilla/add-ons/webextensions/internationalization/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/internationalization/index.html rename to files/ru/mozilla/add-ons/webextensions/internationalization/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/background/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/background/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/background/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/background/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/description/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/description/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/description/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/description/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/icons/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/icons/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/icons/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/icons/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/name/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/name/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/name/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/name/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/version/index.html b/files/ru/mozilla/add-ons/webextensions/manifest.json/version/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/manifest.json/version/index.html rename to files/ru/mozilla/add-ons/webextensions/manifest.json/version/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/match_patterns/index.html b/files/ru/mozilla/add-ons/webextensions/match_patterns/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/match_patterns/index.html rename to files/ru/mozilla/add-ons/webextensions/match_patterns/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.html b/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.html rename to files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/prerequisites/index.html b/files/ru/mozilla/add-ons/webextensions/prerequisites/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/prerequisites/index.html rename to files/ru/mozilla/add-ons/webextensions/prerequisites/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/index.html b/files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/index.html rename to files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.html b/files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.html rename to files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/index.html b/files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/index.html rename to files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/index.html b/files/ru/mozilla/add-ons/webextensions/user_interface/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/user_interface/index.html rename to files/ru/mozilla/add-ons/webextensions/user_interface/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/notifications/index.html b/files/ru/mozilla/add-ons/webextensions/user_interface/notifications/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/user_interface/notifications/index.html rename to files/ru/mozilla/add-ons/webextensions/user_interface/notifications/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.html b/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.html rename to files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/popups/index.html b/files/ru/mozilla/add-ons/webextensions/user_interface/popups/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/user_interface/popups/index.html rename to files/ru/mozilla/add-ons/webextensions/user_interface/popups/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/index.html b/files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/index.html rename to files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/what_are_webextensions/index.html b/files/ru/mozilla/add-ons/webextensions/what_are_webextensions/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/what_are_webextensions/index.html rename to files/ru/mozilla/add-ons/webextensions/what_are_webextensions/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/your_first_webextension/index.html b/files/ru/mozilla/add-ons/webextensions/your_first_webextension/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/your_first_webextension/index.html rename to files/ru/mozilla/add-ons/webextensions/your_first_webextension/index.md diff --git a/files/ru/mozilla/add-ons/webextensions/your_second_webextension/index.html b/files/ru/mozilla/add-ons/webextensions/your_second_webextension/index.md similarity index 100% rename from files/ru/mozilla/add-ons/webextensions/your_second_webextension/index.html rename to files/ru/mozilla/add-ons/webextensions/your_second_webextension/index.md diff --git a/files/ru/mozilla/firefox/index.html b/files/ru/mozilla/firefox/index.md similarity index 100% rename from files/ru/mozilla/firefox/index.html rename to files/ru/mozilla/firefox/index.md diff --git a/files/ru/mozilla/firefox/releases/1.5/index.html b/files/ru/mozilla/firefox/releases/1.5/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/1.5/index.html rename to files/ru/mozilla/firefox/releases/1.5/index.md diff --git a/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.html b/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.html rename to files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md diff --git a/files/ru/mozilla/firefox/releases/28/index.html b/files/ru/mozilla/firefox/releases/28/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/28/index.html rename to files/ru/mozilla/firefox/releases/28/index.md diff --git a/files/ru/mozilla/firefox/releases/29/index.html b/files/ru/mozilla/firefox/releases/29/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/29/index.html rename to files/ru/mozilla/firefox/releases/29/index.md diff --git a/files/ru/mozilla/firefox/releases/3.5/index.html b/files/ru/mozilla/firefox/releases/3.5/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/3.5/index.html rename to files/ru/mozilla/firefox/releases/3.5/index.md diff --git a/files/ru/mozilla/firefox/releases/3/index.html b/files/ru/mozilla/firefox/releases/3/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/3/index.html rename to files/ru/mozilla/firefox/releases/3/index.md diff --git a/files/ru/mozilla/firefox/releases/31/index.html b/files/ru/mozilla/firefox/releases/31/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/31/index.html rename to files/ru/mozilla/firefox/releases/31/index.md diff --git a/files/ru/mozilla/firefox/releases/32/index.html b/files/ru/mozilla/firefox/releases/32/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/32/index.html rename to files/ru/mozilla/firefox/releases/32/index.md diff --git a/files/ru/mozilla/firefox/releases/33/index.html b/files/ru/mozilla/firefox/releases/33/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/33/index.html rename to files/ru/mozilla/firefox/releases/33/index.md diff --git a/files/ru/mozilla/firefox/releases/43/index.html b/files/ru/mozilla/firefox/releases/43/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/43/index.html rename to files/ru/mozilla/firefox/releases/43/index.md diff --git a/files/ru/mozilla/firefox/releases/53/index.html b/files/ru/mozilla/firefox/releases/53/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/53/index.html rename to files/ru/mozilla/firefox/releases/53/index.md diff --git a/files/ru/mozilla/firefox/releases/62/index.html b/files/ru/mozilla/firefox/releases/62/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/62/index.html rename to files/ru/mozilla/firefox/releases/62/index.md diff --git a/files/ru/mozilla/firefox/releases/63/index.html b/files/ru/mozilla/firefox/releases/63/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/63/index.html rename to files/ru/mozilla/firefox/releases/63/index.md diff --git a/files/ru/mozilla/firefox/releases/64/index.html b/files/ru/mozilla/firefox/releases/64/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/64/index.html rename to files/ru/mozilla/firefox/releases/64/index.md diff --git a/files/ru/mozilla/firefox/releases/65/index.html b/files/ru/mozilla/firefox/releases/65/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/65/index.html rename to files/ru/mozilla/firefox/releases/65/index.md diff --git a/files/ru/mozilla/firefox/releases/68/index.html b/files/ru/mozilla/firefox/releases/68/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/68/index.html rename to files/ru/mozilla/firefox/releases/68/index.md diff --git a/files/ru/mozilla/firefox/releases/index.html b/files/ru/mozilla/firefox/releases/index.md similarity index 100% rename from files/ru/mozilla/firefox/releases/index.html rename to files/ru/mozilla/firefox/releases/index.md diff --git a/files/ru/mozilla/index.html b/files/ru/mozilla/index.md similarity index 100% rename from files/ru/mozilla/index.html rename to files/ru/mozilla/index.md From 1d68e1be5a7709d1861e30fb101be58c47053287 Mon Sep 17 00:00:00 2001 From: SphinxKnight Date: Thu, 29 Sep 2022 12:47:24 +0200 Subject: [PATCH 2/3] convert content to md --- files/ru/mozilla/add-ons/index.md | 425 +++++++------- .../anatomy_of_a_webextension/index.md | 157 +++-- .../webextensions/api/cookies/cookie/index.md | 80 ++- .../webextensions/api/cookies/index.md | 134 ++--- .../webextensions/api/downloads/index.md | 143 +++-- .../add-ons/webextensions/api/index.md | 39 +- .../api/runtime/getmanifest/index.md | 47 +- .../webextensions/api/runtime/index.md | 227 ++++---- .../webextensions/api/tabs/get/index.md | 47 +- .../webextensions/api/tabs/hide/index.md | 75 +-- .../add-ons/webextensions/api/tabs/index.md | 247 ++++---- .../webextensions/api/webrequest/index.md | 282 ++++----- .../api/windows/createtype/index.md | 37 +- .../webextensions/api/windows/index.md | 103 ++-- .../chrome_incompatibilities/index.md | 537 ++++++++--------- .../webextensions/content_scripts/index.md | 512 ++++++++-------- .../content_security_policy/index.md | 128 ++-- .../add-ons/webextensions/examples/index.md | 28 +- .../ru/mozilla/add-ons/webextensions/index.md | 178 +++--- .../intercept_http_requests/index.md | 110 ++-- .../internationalization/index.md | 514 ++++++++-------- .../manifest.json/background/index.md | 217 ++++--- .../content_security_policy/index.md | 155 ++--- .../manifest.json/description/index.md | 52 +- .../manifest.json/icons/index.md | 105 ++-- .../webextensions/manifest.json/index.md | 62 +- .../manifest.json/manifest_version/index.md | 49 +- .../webextensions/manifest.json/name/index.md | 48 +- .../manifest.json/permissions/index.md | 277 +++++---- .../manifest.json/version/index.md | 54 +- .../webextensions/match_patterns/index.md | 453 ++------------ .../webextensions/modify_a_web_page/index.md | 213 +++---- .../webextensions/prerequisites/index.md | 4 +- .../user_interface/browser_action/index.md | 46 +- .../context_menu_items/index.md | 50 +- .../user_interface/extension_pages/index.md | 62 +- .../webextensions/user_interface/index.md | 115 +--- .../user_interface/notifications/index.md | 45 +- .../user_interface/omnibox/index.md | 46 +- .../user_interface/popups/index.md | 46 +- .../user_interface/sidebars/index.md | 52 +- .../what_are_webextensions/index.md | 88 +-- .../your_first_webextension/index.md | 182 +++--- .../your_second_webextension/index.md | 262 ++++----- files/ru/mozilla/firefox/index.md | 66 +-- .../ru/mozilla/firefox/releases/1.5/index.md | 190 +++--- .../1.5/using_firefox_1.5_caching/index.md | 208 ++++--- files/ru/mozilla/firefox/releases/28/index.md | 163 +++--- files/ru/mozilla/firefox/releases/29/index.md | 228 ++++---- .../ru/mozilla/firefox/releases/3.5/index.md | 522 +++++++---------- files/ru/mozilla/firefox/releases/3/index.md | 551 ++++++++---------- files/ru/mozilla/firefox/releases/31/index.md | 146 ++--- files/ru/mozilla/firefox/releases/32/index.md | 124 ++-- files/ru/mozilla/firefox/releases/33/index.md | 85 ++- files/ru/mozilla/firefox/releases/43/index.md | 174 +++--- files/ru/mozilla/firefox/releases/53/index.md | 278 ++++----- files/ru/mozilla/firefox/releases/62/index.md | 266 ++++----- files/ru/mozilla/firefox/releases/63/index.md | 440 +++++++------- files/ru/mozilla/firefox/releases/64/index.md | 304 +++++----- files/ru/mozilla/firefox/releases/65/index.md | 377 ++++++------ files/ru/mozilla/firefox/releases/68/index.md | 292 +++++----- files/ru/mozilla/firefox/releases/index.md | 6 +- files/ru/mozilla/index.md | 6 +- 63 files changed, 5003 insertions(+), 6156 deletions(-) diff --git a/files/ru/mozilla/add-ons/index.md b/files/ru/mozilla/add-ons/index.md index c4be84f8b823af..5ee74d223e1335 100644 --- a/files/ru/mozilla/add-ons/index.md +++ b/files/ru/mozilla/add-ons/index.md @@ -8,233 +8,202 @@ tags: - Расширения translation_of: Mozilla/Add-ons --- -

Дополнения добавляют новые функциональные возможности в Gecko-приложения, такие, как Firefox, SeaMonkey и Thunderbird. Есть два основных типа дополнений: расширения, которые добавляют новые функции в приложение, и темы, изменяющие пользовательский интерфейс приложения.

+Дополнения добавляют новые функциональные возможности в [Gecko](/ru/docs/Mozilla/Gecko)-приложения, такие, как Firefox, SeaMonkey и Thunderbird. Есть два основных типа дополнений: [расширения](#Extensions), которые добавляют новые функции в приложение, и [темы](#Themes), изменяющие пользовательский интерфейс приложения. -
-

Для расширений и тем в Mozilla работает хранилище на addons.mozilla.org, также известное как AMO. Когда вы помещаете дополнения на AMO, они рассматриваются, и после этого становятся доступны для пользователей. Вы не обязаны загружать свои дополнения в AMO, но если вы это сделаете, пользователи могут быть уверены в том, что они были предварительно проверены и будут знать, что ваше дополнение действительно полезно.

-
+> Для расширений и тем в Mozilla работает хранилище на [addons.mozilla.org](https://addons.mozilla.org/), также известное как AMO. Когда вы [помещаете дополнения на AMO](/en-US/Add-ons/Submitting_an_add-on_to_AMO), они рассматриваются, и после этого становятся доступны для пользователей. Вы не обязаны загружать свои дополнения в AMO, но если вы это сделаете, пользователи могут быть уверены в том, что они были предварительно проверены и будут знать, что ваше дополнение действительно полезно. -

Дополнение может существенно повлиять на поведение приложения, на которое оно устанавливается. Мы разработали список советов, которые помогут вам удостовериться, что ваше дополнение будет приятным в использовании. Эти правила применяются для всех видов надстроек, независимо от того, размещены они на addons.mozilla.org или нет.

- -
-

Расширения

- -

Расширения добавляют новые функции к приложениям Mozilla, например таким как Firefox и Thunderbird. С их помощью можно изменить стандартное поведение браузера, например реализовать другой способ организации и управления вкладками. Можно даже изменять содержимое отображаемого веб приложения, чтобы улучшить удобство использования или например повысить безопасность определённых сайтов.

- -

Существует 3 различных способа сборки расширений: restartless-расширения на основе Add-on SDK, restartless-расширения с реализацией этого механизма вручную (manually bootstrapped restartless extensions), и расширения с использованием технологии Overlay.

- - - -
-

Технология WebExtensions

- -

В данный момент мы разрабатываем систему под названием WebExtensions, которая будет новым способом разработки расширений для браузера Firefox, эта система будет гораздо более совместима с браузерами Chrome и Opera.

- -

В будущем она станет наиболее предпочтительной при разработке новых проектов для браузера Firefox.

-

В данный момент она является экспериментальной, но несмотря на это вы можете ознакомиться с документацией, если хотите её опробовать.

- -

Где это возможно, рекомендуется выбирать Add-On SDK, который использует механизм расширения без необходимости перезапуска браузера (restartless extensions), а также упрощает разработку и убирает за собой. Если вам недостаточно возможностей комплекта средств разработки Add-on SDK для реализации ваших идей, механизм restartless вы можете осуществить самостоятельно. Технология Overlay extensions в целом устарела и не рекомендуется при разработке новых расширений.

- -

Для получения дополнительной информации о том, какой способ использовать, прочтите это сравнение.

- -
-
-

Рекомендуемые практики

- -

Вне зависимости от того, каким способом вы разрабатываете расширение, имеются общие рекомендации, следуя которым вы гарантируете пользователю максимально приятную работу с вашим расширением.

- -
-
Производительность
-
Убедитесь в том, что ваше расширение обладает хорошей производительностью. Оно должно быть достаточно быстрым, иметь отзывчивый интерфейс и потреблять минимальный объем памяти.
-
Безопасность
-
Убедитесь в том, что ваше приложение не подвергает пользователя опасности на вредоносных веб сайтах.
-
Этикет
-
Убедитесь в том, что ваше расширение не конфликтует с другими расширениями.
-
-
- -
-

Специфика разработки для различных приложений

- -

Большая часть документации предполагает, что вы разрабатываете для десктопной версии Firefox. Если вы разрабатываете для других основанных на движке Gecko приложений, то существуют некоторые отличия, о которых вам следует знать.

- -
-
Thunderbird
-
Разработка расширений для почтового клиента Thunderbird.
-
Firefox для Андроид
-
Разработка расширений для Firefox под Андроид.
-
SeaMonkey
-
Разработка расширений для SeaMonkey.
-
-
-
- -
-

Темы

- -

Темы это дополнения, которые изменяют внешний вид пользовательского интерфейса. Существуют два вида тем: легковесные темы и полные темы.

- -
-
-

Легковесные темы значительно легче создать, чем полные, но их возможности ограничены.

-
- -
-

С помощью полных тем вы можете гораздо глубже менять UI приложения. Документация к полным темам устарела, но приведена здесь в качестве возможной основы для обновлённой документации.

-
-
- -
-

Другие типы дополнений

- -

Поисковые плагины являются простыми и очень специфическими типами дополнений: они добавляют новые поисковые системы для поиска в строке браузера.

- -

Плагины (не путать с расширением и дополнением) помогают приложению понять содержание, которое не имеет встроенной поддержки. NPAPI-плагины являются устаревшей технологией и новые сайты не будут её использовать. Как правило, такие плагины не доступны для использования на большинстве современных мобильных систем, и веб-сайты должны избегать их использования

- -

Смотрите также

- -
    -
  1. Restartless extensions
  2. -
  3. Legacy extensions
  4. -
  5. Дополнения на основе SDK
  6. -
  7. Techniques -
      -
    1. Promises
    2. -
    -
  8. -
  9. Рекомендуемая практика -
      -
    1. Производительность
    2. -
    3. Безопасность
    4. -
    5. Этикет
    6. -
    -
  10. -
  11. Темы -
      -
    1. Легковесные темы
    2. -
    3. Легковесные темы FAQ
    4. -
    5. Полные темы
    6. -
    -
  12. -
  13. Legacy Plugins -
      -
    1. Plug-in Basics
    2. -
    3. Plug-in Development Overview
    4. -
    5. Initialization and Destruction
    6. -
    7. Drawing and Event Handling
    8. -
    9. Streams
    10. -
    11. URLs
    12. -
    13. Memory
    14. -
    15. Version, UI, and Status Information
    16. -
    17. Plug-in side Plug-in API -
        -
      1. NPP_Destroy
      2. -
      3. NPP_DestroyStream
      4. -
      5. NPP_GetValue
      6. -
      7. NP_GetValue
      8. -
      9. NPP_HandleEvent
      10. -
      11. NP_Initialize
      12. -
      13. NPP_New
      14. -
      15. NPP_NewStream
      16. -
      17. NPP_Print
      18. -
      19. NPP_SetValue
      20. -
      21. NPP_SetWindow
      22. -
      23. NP_Shutdown
      24. -
      25. NPP_StreamAsFile
      26. -
      27. NPP_URLNotify
      28. -
      29. NPP_Write
      30. -
      31. NPP_WriteReady
      32. -
      -
    18. -
    19. Browser Side Plug-in API -
        -
      1. NPN_DestroyStream
      2. -
      3. NPN_ForceRedraw
      4. -
      5. NPN_GetAuthenticationInfo
      6. -
      7. NPN_GetURL
      8. -
      9. NPN_GetURLNotify
      10. -
      11. NPN_GetValue
      12. -
      13. NPN_GetValueForURL
      14. -
      15. NPN_InvalidateRect
      16. -
      17. NPN_InvalidateRegion
      18. -
      19. NPN_MemAlloc
      20. -
      21. NPN_MemFlush
      22. -
      23. NPN_MemFree
      24. -
      25. NPN_NewStream
      26. -
      27. NPN_PluginThreadAsyncCall
      28. -
      29. NPN_PostURL
      30. -
      31. NPN_PostURLNotify
      32. -
      33. NPN_ReloadPlugins
      34. -
      35. NPN_RequestRead
      36. -
      37. NPN_SetValue
      38. -
      39. NPN_SetValueForURL
      40. -
      41. NPN_Status
      42. -
      43. NPN_UserAgent
      44. -
      45. NPN_Version
      46. -
      47. NPN_Write
      48. -
      -
    20. -
    21. Scripting plugins -
        -
      1. NPString
      2. -
      3. NPVariant
      4. -
      5. NPN_ReleaseVariantValue
      6. -
      7. NPN_GetStringIdentifier
      8. -
      9. NPN_GetStringIdentifiers
      10. -
      11. NPN_GetIntIdentifier
      12. -
      13. NPN_IdentifierIsString
      14. -
      15. NPN_UTF8FromIdentifier
      16. -
      17. NPN_IntFromIdentifier
      18. -
      19. NPObject
      20. -
      21. NPN_CreateObject
      22. -
      23. NPN_RetainObject
      24. -
      25. NPN_ReleaseObject
      26. -
      27. NPN_Invoke
      28. -
      29. NPN_InvokeDefault
      30. -
      31. NPN_Evaluate
      32. -
      33. NPN_GetProperty
      34. -
      35. NPN_SetProperty
      36. -
      37. NPN_RemoveProperty
      38. -
      39. NPN_HasProperty
      40. -
      41. NPN_HasMethod
      42. -
      43. NPN_SetException
      44. -
      45. NPClass
      46. -
      -
    22. -
    23. Structures
    24. -
    25. Constants
    26. -
    27. External Resources
    28. -
    -
  14. -
  15. Publishing add-ons -
      -
    1. Signing and distributing your add-on
    2. -
    3. Submit a new add-on
    4. -
    5. Policies -
        -
      1. Developer Agreement
      2. -
      3. Review Process
      4. -
      5. Add-on guidelines
      6. -
      7. Featured Add-ons
      8. -
      9. Contacting Us
      10. -
      -
    6. -
    -
  16. -
  17. Community and Support -
      -
    1. Add-ons Blog
    2. -
    3. Add-on Forums
    4. -
    5. Stack Overflow
    6. -
    7. Development Newsgroup
    8. -
    9. IRC Channel
    10. -
    -
  18. -
+Дополнение может существенно повлиять на поведение приложения, на которое оно устанавливается. Мы разработали [список советов](/ru/docs/Mozilla/Add-ons/Add-on_guidelines), которые помогут вам удостовериться, что ваше дополнение будет приятным в использовании. Эти правила применяются для всех видов надстроек, независимо от того, размещены они на [addons.mozilla.org](https://addons.mozilla.org/) или нет. + +--- + +## Расширения + +Расширения добавляют новые функции к приложениям Mozilla, например таким как Firefox и Thunderbird. С их помощью можно изменить стандартное поведение браузера, например реализовать другой способ организации и управления вкладками. Можно даже изменять содержимое отображаемого веб приложения, чтобы улучшить удобство использования или например повысить безопасность определённых сайтов. + +Существует 3 различных способа сборки расширений: restartless-расширения на основе Add-on SDK, restartless-расширения с реализацией этого механизма вручную (manually bootstrapped restartless extensions), и расширения с использованием технологии Overlay. + +- [Restartless-расширения на основе Add-on SDK](https://developer.mozilla.org/en-US/Add-ons/SDK) + Разработка restartless расширений с помощью высокоуровневого JavaScript API. +- [Restartless-расширения с реализацией этого механизма вручную](/en-US/Add-ons/Bootstrapped_extensions) + Разработка расширений с самостоятельной реализацией механизма restartless. +- [Расширения с использованием технологии Overlay Extensions](/en-US/Add-ons/Overlay_Extensions) + Устаревшей способ разработки расширений, при котором требуется перезапуск браузера. Основан на механизме наложения XUL. + +> **Примечание:** **Технология WebExtensions** +> +> В данный момент мы разрабатываем систему под названием WebExtensions, которая будет новым способом разработки расширений для браузера Firefox, эта система будет гораздо более совместима с браузерами Chrome и Opera. +> +> В будущем она станет наиболее предпочтительной при разработке новых проектов для браузера Firefox. +> +> В данный момент она является экспериментальной, но несмотря на это вы можете [ознакомиться с документацией](https://developer.mozilla.org/en-US/Add-ons/WebExtensions), если хотите её опробовать. + +Где это возможно, рекомендуется выбирать Add-On SDK, который использует механизм расширения без необходимости перезапуска браузера (restartless extensions), а также упрощает разработку и убирает за собой. Если вам недостаточно возможностей комплекта средств разработки Add-on SDK для реализации ваших идей, механизм restartless вы можете осуществить самостоятельно. Технология Overlay extensions в целом устарела и не рекомендуется при разработке новых расширений. + +Для получения дополнительной информации о том, какой способ использовать, прочтите это [сравнение](/en-US/Add-ons/Comparing_Extension_Toolchains). + +### Рекомендуемые практики + +Вне зависимости от того, каким способом вы разрабатываете расширение, имеются общие рекомендации, следуя которым вы гарантируете пользователю максимально приятную работу с вашим расширением. + +- [Производительность](/en-US/Add-ons/Performance_best_practices_in_extensions) + - : Убедитесь в том, что ваше расширение обладает хорошей производительностью. Оно должно быть достаточно быстрым, иметь отзывчивый интерфейс и потреблять минимальный объем памяти. +- [Безопасность](/en-US/Add-ons/Security_best_practices_in_extensions) + - : Убедитесь в том, что ваше приложение не подвергает пользователя опасности на вредоносных веб сайтах. +- [Этикет](/en-US/Add-ons/Extension_etiquette) + - : Убедитесь в том, что ваше расширение не конфликтует с другими расширениями. + +### Специфика разработки для различных приложений + +Большая часть документации предполагает, что вы разрабатываете для десктопной версии Firefox. Если вы разрабатываете для других основанных на движке Gecko приложений, то существуют некоторые отличия, о которых вам следует знать. + +- [Thunderbird](/en-US/Add-ons/Thunderbird) + - : Разработка расширений для почтового клиента Thunderbird. +- [Firefox для Андроид](/en-US/Add-ons/Firefox_for_Android) + - : Разработка расширений для Firefox под Андроид. +- [SeaMonkey](/en-US/Add-ons/SeaMonkey_2) + - : Разработка расширений для [SeaMonkey](http://www.seamonkey-project.org/). + +--- + +## Темы + +Темы это дополнения, которые изменяют внешний вид пользовательского интерфейса. Существуют два вида тем: легковесные темы и полные темы. + +[Легковесные темы](https://addons.mozilla.org/en-US/developers/docs/themes) значительно легче создать, чем полные, но их возможности ограничены. + +С помощью [полных тем](/ru/docs/Themes) вы можете гораздо глубже менять UI приложения. Документация к полным темам устарела, но приведена здесь в качестве возможной основы для обновлённой документации. + +--- + +## Другие типы дополнений + +[Поисковые плагины](/ru/docs/Creating_OpenSearch_plugins_for_Firefox) являются простыми и очень специфическими типами дополнений: они добавляют новые поисковые системы для поиска в строке браузера. + +**[Плагины](/ru/docs/Plugins) **(не путать с расширением и дополнением)\*\* \*\*помогают приложению понять содержание, которое не имеет встроенной поддержки. NPAPI-плагины являются устаревшей технологией и новые сайты не будут её использовать. Как правило, такие плагины не доступны для использования на большинстве современных мобильных систем, и веб-сайты должны избегать их использования + +## Смотрите также + +1. [Restartless extensions](https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions "Restartless extensions") +2. [Legacy extensions](https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions "Legacy extensions") +3. [Дополнения на основе SDK](https://developer.mozilla.org/en-US/Add-ons/SDK) +4. [Techniques](https://developer.mozilla.org/ru/Add-ons$edit#) + + 1. [Promises](https://developer.mozilla.org/en-US/Add-ons/Techniques/Promises) + +5. [Рекомендуемая практика](https://developer.mozilla.org/ru/Add-ons$edit#) + + 1. [Производительность](https://developer.mozilla.org/en-US/Add-ons/Performance_best_practices_in_extensions "Performance") + 2. [Безопасность](https://developer.mozilla.org/en-US/Add-ons/Security_best_practices_in_extensions "Security") + 3. [Этикет](https://developer.mozilla.org/en-US/Add-ons/Extension_etiquette "Etiquette") + +6. [Темы](https://developer.mozilla.org/ru/Add-ons$edit#) + + 1. [Легковесные темы](https://developer.mozilla.org/Add-ons/Themes/Background "Lightweight themes") + 2. [Легковесные темы FAQ](https://developer.mozilla.org/Add-ons/Themes/Background/FAQ "Lightweight themes FAQ") + 3. [Полные темы](/ru/docs/Themes "Complete themes") + +7. [Legacy Plugins](https://developer.mozilla.org/ru/Add-ons$edit#) + + 1. [Plug-in Basics](/ru/docs/Plugins/Guide/Plug-in_Basics) + 2. [Plug-in Development Overview](/ru/docs/Plugins/Guide/Plug-in_Development_Overview) + 3. [Initialization and Destruction](/ru/docs/Plugins/Guide/Initialization_and_Destruction) + 4. [Drawing and Event Handling](/ru/docs/Plugins/Guide/Drawing_and_Event_Handling) + 5. [Streams](/ru/docs/Plugins/Guide/Streams) + 6. [URLs](/ru/docs/Plugins/Guide/URLs) + 7. [Memory](/ru/docs/Plugins/Guide/Memory) + 8. [Version, UI, and Status Information](/ru/docs/Plugins/Guide/Version%2C_UI%2C_and_Status_Information) + 9. [Plug-in side Plug-in API](/ru/docs/Plugins/Guide/Plug-in_Side_Plug-in_API) + + 1. [NPP_Destroy](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_Destroy) + 2. [NPP_DestroyStream](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_DestroyStream) + 3. [NPP_GetValue](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_GetValue) + 4. [NP_GetValue](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NP_GetValue) + 5. [NPP_HandleEvent](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_HandleEvent) + 6. [NP_Initialize](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NP_Initialize) + 7. [NPP_New](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_New) + 8. [NPP_NewStream](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_NewStream) + 9. [NPP_Print](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_Print) + 10. [NPP_SetValue](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_SetValue) + 11. [NPP_SetWindow](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_SetWindow) + 12. [NP_Shutdown](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NP_Shutdown) + 13. [NPP_StreamAsFile](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_StreamAsFile) + 14. [NPP_URLNotify](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_URLNotify) + 15. [NPP_Write](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_Write) + 16. [NPP_WriteReady](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_WriteReady) + + 10. [Browser Side Plug-in API](/ru/docs/Plugins/Guide/Browser_Side_Plug-in_API) + + 1. [NPN_DestroyStream](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_DestroyStream "Closes and deletes a stream.") + 2. [NPN_ForceRedraw](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_ForceRedraw "Asks the plugin host to immediately (synchronously) repaint invalid areas.") + 3. [NPN_GetAuthenticationInfo](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetAuthenticationInfo "The function is called by plugins to get HTTP authentication information from the browser.") + 4. [NPN_GetURL](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetURL "Asks the browser to create a stream for the specified URL.") + 5. [NPN_GetURLNotify](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetURLNotify "Requests creation of a new stream with the contents of the specified URL; gets notification of the result.") + 6. [NPN_GetValue](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetValue "Allows the plug-in to query the browser for information.") + 7. [NPN_GetValueForURL](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetValueForURL "Provides information to a plugin which is associated with a given URL, for example the cookies or preferred proxy.") + 8. [NPN_InvalidateRect](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_InvalidateRect "Invalidates the specified portion of the plugin's drawing area, adding it to the region that needs to be redrawn when the plugin next repaints its contents.") + 9. [NPN_InvalidateRegion](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_InvalidateRegion "Invalidates the specified drawing region prior to repainting or refreshing a windowless plug-in.") + 10. [NPN_MemAlloc](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_MemAlloc "Allocates memory from the browser's memory space.") + 11. [NPN_MemFlush](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_MemFlush "Requests that the browser free a specified amount of memory.") + 12. [NPN_MemFree](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_MemFree "Deallocates a block of allocated memory.") + 13. [NPN_NewStream](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_NewStream "Requests the creation of a new data stream produced by the plug-in and consumed by the browser.") + 14. [NPN_PluginThreadAsyncCall](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_PluginThreadAsyncCall "Thread safe way to request that the browser calls a plug-in function on the browser or plugin thread (the thread on which the plug-in was initiated).") + 15. [NPN_PostURL](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_PostURL "Posts data to a URL.") + 16. [NPN_PostURLNotify](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference//NPN_PostURLNotify "Posts data to a URL, and receives notification of the result.") + 17. [NPN_ReloadPlugins](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_ReloadPlugins "Reloads all of the installed plugins.") + 18. [NPN_RequestRead](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_RequestRead "Requests a range of bytes from a seekable stream. This initiates a read operation; the actual data is received through subsequent calls to NPP_WriteReady() and NPP_Write().") + 19. [NPN_SetValue](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_SetValue "Implemented by browsers. This call is used to inform the browser of variable information controlled by the plugin.") + 20. [NPN_SetValueForURL](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_SetValueForURL "Allows a plugin to change the stored information associated with a URL, in particular its cookies. (While the API theoretically allows the preferred proxy for a given URL to be changed, doing so does not have much meaning given how proxies are configured, and is not supported.)") + 21. [NPN_Status](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_Status "Lets a plug-in display a message on the browser's status line.") + 22. [NPN_UserAgent](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_UserAgent "Returns the browser's user agent field. This can be used to handle variations in different browsers (or versions thereof) when implementing your plug-in.") + 23. [NPN_Version](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/docs/NPN_Version "Lets plugins obtain version information, both of the plug-in API and of the browser itself.") + 24. [NPN_Write](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_Write "Pushes data into a stream produced by the plug-in and consumed by the browser.") + + 11. [Scripting plugins](/ru/docs/Plugins/Guide/Scripting_plugins) + + 1. [NPString](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPString) + 2. [NPVariant](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPVariant) + 3. [NPN_ReleaseVariantValue](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_ReleaseVariantValue) + 4. [NPN_GetStringIdentifier](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetStringIdentifier) + 5. [NPN_GetStringIdentifiers](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetStringIdentifiers) + 6. [NPN_GetIntIdentifier](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetIntIdentifier) + 7. [NPN_IdentifierIsString](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_IdentifierIsString) + 8. [NPN_UTF8FromIdentifier](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_UTF8FromIdentifier) + 9. [NPN_IntFromIdentifier](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_IntFromIdentifier) + 10. [NPObject](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPObject) + 11. [NPN_CreateObject](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_CreateObject) + 12. [NPN_RetainObject](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_RetainObject) + 13. [NPN_ReleaseObject](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_ReleaseObject) + 14. [NPN_Invoke](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_Invoke) + 15. [NPN_InvokeDefault](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_InvokeDefault) + 16. [NPN_Evaluate](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_Evaluate) + 17. [NPN_GetProperty](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetProperty) + 18. [NPN_SetProperty](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_SetProperty) + 19. [NPN_RemoveProperty](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_RemoveProperty) + 20. [NPN_HasProperty](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_HasProperty) + 21. [NPN_HasMethod](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_HasMethod) + 22. [NPN_SetException](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_SetException) + 23. [NPClass](https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPClass) + + 12. [Structures](/ru/docs/Plugins/Guide/Structures) + 13. [Constants](/ru/docs/Plugins/Guide/Constants) + 14. [External Resources](https://developer.mozilla.org/en-US/Add-ons/Plugins/External_resources_for_plugin_creation) + +8. [Publishing add-ons](https://developer.mozilla.org/ru/Add-ons$edit#) + + 1. [Signing and distributing your add-on](https://developer.mozilla.org/en-US/Add-ons/Distribution) + 2. [Submit a new add-on](https://addons.mozilla.org/developers/addon/submit/) + 3. [Policies](https://developer.mozilla.org/en-US/Add-ons/AMO/Policy) + + 1. [Developer Agreement](https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Agreement) + 2. [Review Process](https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Reviews) + 3. [Add-on guidelines](https://developer.mozilla.org/en-US/Add-ons/Add-on_guidelines) + 4. [Featured Add-ons](https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Featured) + 5. [Contacting Us](https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Contact) + +9. [Community and Support](https://developer.mozilla.org/ru/Add-ons$edit#) + + 1. [Add-ons Blog](https://blog.mozilla.org/addons) + 2. [Add-on Forums](https://forums.mozilla.org/addons) + 3. [Stack Overflow](http://stackoverflow.com/questions/tagged/firefox-addon) + 4. [Development Newsgroup](https://groups.google.com/forum/#%21forum/mozilla.dev.extensions) + 5. [IRC Channel](irc://irc.mozilla.org/extdev) diff --git a/files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md b/files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md index 6ef2ee225378ca..0ea51022188740 100644 --- a/files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md +++ b/files/ru/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md @@ -6,143 +6,138 @@ tags: - веб расширение translation_of: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension --- -

{{AddonSidebar}}

+{{AddonSidebar}} -

Расширение состоит из набора файлов, упакованных для распространения и установки. В этой статье мы быстро рассмотрим файлы, которые могут присутствовать в расширении.

+Расширение состоит из набора файлов, упакованных для распространения и установки. В этой статье мы быстро рассмотрим файлы, которые могут присутствовать в расширении. -

manifest.json

+## manifest.json -

Это единственный файл, который должен присутствовать в каждом расширении. Он содержит основные метаданные, такие как его имя, версию и требуемые разрешения. Он также предоставляет указатели на другие файлы в расширении.

+Это единственный файл, который должен присутствовать в каждом расширении. Он содержит основные метаданные, такие как его имя, версию и требуемые разрешения. Он также предоставляет указатели на другие файлы в расширении. -

Этот манифест также может содержать указатели на несколько других типов файлов:

+Этот манифест также может содержать указатели на несколько других типов файлов: - +- [Background pages](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts): Реализует долгоиграющую логику. +- Иконки для расширения и любых кнопок, которые оно может определить. +- [Sidebars, popups, and options pages](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Sidebars_popups_options_pages): HTML-документы, которые предоставляют содержимое для различных компонентов пользовательского интерфейса. +- [Content scripts](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts): JavaScript сценарии вашего расширения, которые будут исполняться на веб-страницах. +- [Web-accessible resources](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Web_accessible_resources): Делает контент вашего расширения видимым для веб-страниц и скриптов. -


-

+![](https://mdn.mozillademos.org/files/13669/webextension-anatomy.png) -

Для получения подробной информации см. справочную страницу manifest.json

+Для получения подробной информации см. справочную страницу [manifest.json](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json) -

Помимо ссылок, указанных в манифесте, расширение может включать дополнительные веб-страницы расширения с поддерживающимися файлами.

+Помимо ссылок, указанных в манифесте, расширение может включать дополнительные [веб-страницы расширения](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Extension_pages) с поддерживающимися файлами. -

Фоновые скрипты

+## Фоновые скрипты -

Расширения часто должны поддерживать долгосрочное состояние или выполнять долгосрочные операции независимо от срока жизни любой конкретной веб-страницы или окна браузера. Для этого нужны фоновые сценарии.

+Расширения часто должны поддерживать долгосрочное состояние или выполнять долгосрочные операции независимо от срока жизни любой конкретной веб-страницы или окна браузера. Для этого нужны фоновые сценарии. -

Фоновые сценарии загружаются сразу после загрузки расширения и остаются загруженными до тех пор, пока расширение не будет отключено или удалено. вы можете использовать любой API расширений в сценарии, если вы запросили необходимые разрешения.

+Фоновые сценарии загружаются сразу после загрузки расширения и остаются загруженными до тех пор, пока расширение не будет отключено или удалено. вы можете использовать любой [API расширений](/ru/docs/Mozilla/Add-ons/WebExtensions/API) в сценарии, если вы запросили необходимые [разрешения](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions). -

Спецификации фоновых скриптов

+### Спецификации фоновых скриптов -

Вы можете включить фоновый скрипт, используя background ключ в «manifest.json»:

+Вы можете включить фоновый скрипт, используя `background` ключ в «manifest.json»: -
// manifest.json
+```json
+// manifest.json
 
 "background": {
   "scripts": ["background-script.js"]
-}
+} +``` -

Вы можете указать несколько фоновых сценариев: если вы это сделаете, они выполняются в том же контексте, как и несколько сценариев, загруженных на одной веб-странице.

+Вы можете указать несколько фоновых сценариев: если вы это сделаете, они выполняются в том же контексте, как и несколько сценариев, загруженных на одной веб-странице. -

Вместо указания несколько фоновых сценариев вы можете указать фоновую страницу, которая так же преимущества поддержки ES6 модулей:

+Вместо указания несколько фоновых сценариев вы можете указать фоновую страницу, которая так же преимущества поддержки ES6 модулей: -

manifest.json

+**manifest.json** -
// manifest.json
+```json
+// manifest.json
 
 "background": {
   "page": "background-page.html"
-}
+} +``` -

background-page.html

+**background-page.html** -
<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <script type="module" src="background-script.js"></script>
-  </head>
-</html>
+```html + + + + + + + +``` -

Окружение фоновых скриптов

+### Окружение фоновых скриптов -

DOM APIs

+#### DOM APIs -

Фоновые скрипты запускаются в пространстве специальной страницы, называемой фоновой. Это даёт им доступ к глобальному window объекту, а так же ко всем его DOM APIs.

+Фоновые скрипты запускаются в пространстве специальной страницы, называемой фоновой. Это даёт им доступ к глобальному [`window`](/en-US/docs/Web/API/Window) объекту, а так же ко всем его DOM APIs. -

WebExtension APIs

+#### WebExtension APIs -

Фоновые скрипты могут использовать любые API расширений, если расширение имеет необходимые разрешения.

+Фоновые скрипты могут использовать любые [API расширений](/ru/docs/Mozilla/Add-ons/WebExtensions/API), если расширение имеет необходимые [разрешения](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions). -

Многоцелевой доступ

+#### Многоцелевой доступ -

Фоновые скрипты могут осуществлять XHR запросы к любому домену, если расширение имеет host разрешения.

+Фоновые скрипты могут осуществлять XHR запросы к любому домену, если расширение имеет [host разрешения](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions). -

Web-содержимое

+#### Web-содержимое -

Фоновые скрипты не получают прямого доступа к веб-страницам. Однако они могут загружать скрипты содержимого на веб-страницы и взаимодействовать с этими скриптами с помощью API передачи сообщений.

+Фоновые скрипты не получают прямого доступа к веб-страницам. Однако они могут загружать [скрипты содержимого](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts) на веб-страницы и [взаимодействовать с этими скриптами с помощью API передачи сообщений](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts). -

Политика безопасности содержимого

+#### Политика безопасности содержимого -

Фоновые скрипты ограничены в выполнении потенциально опасных операций, таких как eval(), через политику безопасности содержимого. Подробнее см. Content Security Policy.

+Фоновые скрипты ограничены в выполнении потенциально опасных операций, таких как [`eval()`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval), через политику безопасности содержимого. Подробнее см. [Content Security Policy](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy). -

Боковые панели (sidebar), всплывающие окна (popup), страницы настроек

+## Боковые панели (sidebar), всплывающие окна (popup), страницы настроек -

Ваше расширение может иметь разнообразные компоненты интерфейса, определённые в HTML документах:

+Ваше расширение может иметь разнообразные компоненты интерфейса, определённые в HTML документах: - +- [Боковая панель (sidebar](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars)) - это панель, отображаемая в окне браузера с левой стороны, рядом с веб-страницей +- [Всплывающие окна (popup](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups)) - диалоговое окно, отображаемое по клику на [кнопке](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action) на [панели инструментов](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action) или в адресной строке +- [Страница настроек](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages) открывается, когда пользователь обращается к настройкам расширения на странице менеджера расширений. -

Для каждого из этих компонентов вы создаёте HTML файл и помещаете специальную информацию в manifest.json. HTML файл может в себя включать CSS и JavaScript файлы, как и любая web-страница.

+Для каждого из этих компонентов вы создаёте HTML файл и помещаете специальную информацию в [manifest.json](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json). HTML файл может в себя включать CSS и JavaScript файлы, как и любая web-страница. -

Всё это типы веб-страниц расширения, и, в отличие от нормальных веб-страниц, ваш JavaScript может использовать все привелегии WebExtension APIs, как и ваши фоновые скрипты. Они даже могут получить доступ к переменным в фоновой странице, используя {{WebExtAPIRef("runtime.getBackgroundPage()")}}.

+Всё это типы [веб-страниц расширения](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages), и, в отличие от нормальных веб-страниц, ваш JavaScript может использовать все привелегии WebExtension APIs, как и ваши фоновые скрипты. Они даже могут получить доступ к переменным в фоновой странице, используя {{WebExtAPIRef("runtime.getBackgroundPage()")}}. -

Веб-страницы расширения

+## Веб-страницы расширения -

Вы также можете включить HTML документы в ваше расширение, даже если они не будут включены в какой-либо существующий компонент пользовательского интерфейса. В отличие от документов, которые вы можете предоставить для боковых панелей, всплывающих окон или страниц настроек, эти документы не содержатся в manifest.json. Однако, они также имеют такой же доступ к WebExtension APIs, как и фоновые скрипты.

+Вы также можете включить HTML документы в ваше расширение, даже если они не будут включены в какой-либо существующий компонент пользовательского интерфейса. В отличие от документов, которые вы можете предоставить для боковых панелей, всплывающих окон или страниц настроек, эти документы не содержатся в manifest.json. Однако, они также имеют такой же доступ к WebExtension APIs, как и фоновые скрипты. -

Вы можете загрузить такую страницу, используя {{WebExtAPIRef("windows.create()")}} или {{WebExtAPIRef("tabs.create()")}}.

+Вы можете загрузить такую страницу, используя {{WebExtAPIRef("windows.create()")}} или {{WebExtAPIRef("tabs.create()")}}. -

Подробнее см. Extension pages.

+Подробнее см. [Extension pages](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages). -

Встраиваемые скрипты

+## Встраиваемые скрипты -

Используйте встраиваемые скрипты для доступа и изменения веб-страниц. Встраиваемые скрипты загружаются в веб-страницу и исполняются в контексте данной конкретной страницы.

+Используйте встраиваемые скрипты для доступа и изменения веб-страниц. Встраиваемые скрипты загружаются в веб-страницу и исполняются в контексте данной конкретной страницы. -

Встраиваемые скрипты предоставляются расширением; этим они отличаются от скриптов, загруженных самой веб-страницей, включая тех, что загружены с помощью {{HTMLElement("script")}} элемента веб-страницы.

+Встраиваемые скрипты предоставляются расширением; этим они отличаются от скриптов, загруженных самой веб-страницей, включая тех, что загружены с помощью {{HTMLElement("script")}} элемента веб-страницы. -

Встраиваемые скрипты имеют доступ и могут манипулировать DOM, как и обычные скрипты, загруженные веб-страницей.

+Встраиваемые скрипты имеют доступ и могут манипулировать DOM, как и обычные скрипты, загруженные веб-страницей. -

В отличие от обычных скриптов, они могут:

+В отличие от обычных скриптов, они могут: - +- Осуществлять XHR запросы. +- Использовать часть [API расширений](/ru/docs/Mozilla/Add-ons/WebExtensions/API). +- Обмениваться сообщениями с их фоновыми скриптами и таким образом иметь доступ ко всему WebExtension APIs. -

Встраиваемые скрипты не могут напрямую взаимодействовать с обычными скриптами на странице, но они могут обмениваться сообщениями с помощью стандартного window.postMessage() API.

+Встраиваемые скрипты не могут напрямую взаимодействовать с обычными скриптами на странице, но они могут обмениваться сообщениями с помощью стандартного [`window.postMessage()`](/en-US/docs/Web/API/Window/postMessage) API. -

Обычно, когда мы говорим о встраиваемых скриптах, мы отсылаемся к JavaScript, но вы так же можете внедрить CSS в веб-страницы, используя этот же механизм.

+Обычно, когда мы говорим о встраиваемых скриптах, мы отсылаемся к JavaScript, но вы так же можете внедрить CSS в веб-страницы, используя этот же механизм. -

Подробнее см. content scripts.

+Подробнее см. [content scripts](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts). -

Веб-доступные ресурсы

+## Веб-доступные ресурсы -

Веб-доступные ресурсы - это ресурсы вроде изображений, HTML, CSS и JavaScript, которые вы включаете в расширение и хотите сделать доступными для встраиваемых скриптов и оригинальных скриптов веб-страницы. Такие ресурсы могут быть доступны скриптам через специальную URI схему.

+Веб-доступные ресурсы - это ресурсы вроде изображений, HTML, CSS и JavaScript, которые вы включаете в расширение и хотите сделать доступными для встраиваемых скриптов и оригинальных скриптов веб-страницы. Такие ресурсы могут быть доступны скриптам через специальную URI схему. -

Например, если встраиваемый скрипт хочет добавить какие-либо изображения в веб-страницу, вы можете включить эти изображения в расширение и сделать их веб-доступными. Тогда встраиваемый скрипт может создать и добавить img тэги, которые будут ссылаться на эти изображения через src атрибут.

+Например, если встраиваемый скрипт хочет добавить какие-либо изображения в веб-страницу, вы можете включить эти изображения в расширение и сделать их веб-доступными. Тогда встраиваемый скрипт может создать и добавить [`img`](/en-US/docs/Web/HTML/Element/img) тэги, которые будут ссылаться на эти изображения через `src` атрибут. -

Подробнее см. web_accessible_resources секцию manifest.json.

- -

- -

+Подробнее см. [web_accessible_resources](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources) секцию manifest.json. diff --git a/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md b/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md index 25369878bee8e4..b87ea8cf33472b 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md @@ -11,47 +11,47 @@ tags: - данные translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/Cookie --- -
{{AddonSidebar()}}
+{{AddonSidebar()}} -

Тип Cookie из {{WebExtAPIRef("cookies")}} API представляет собой информацию о HTTP cookie.

+Тип `Cookie` из {{WebExtAPIRef("cookies")}} API представляет собой информацию о HTTP cookie. -

Тип

+## Тип -

Значения этого типа - объекты, которые могут содержать следующие свойства:

+Значения этого типа - объекты, которые могут содержать следующие свойства: -
-
name
-
string - содержит имя cookie.
-
value
-
string - содержит значение cookie.
-
domain
-
string - содержит домен, которому принадлежит cookie (например, "www.google.com", "example.com").
-
hostOnly
-
boolean - true если cookie является host-only (то есть запрашивающий хост должен в точности совпадать с доменом cookie), в ином случае false.
-
path
-
string - содержит path cookie.
-
secure
-
boolean - true, если cookie помечен как secure (то есть его область действия ограничена безопасными каналами, обычно HTTPS), в ином случае false.
-
httpOnly
-
boolean - true если cookie помечен как HttpOnly (то есть он недоступен для клиентских скриптов), иначе false.
-
session
-
boolean - true если cookie является сессионным, false если cookie является постоянным с указанным временем жизни.
-
expirationDate{{optional_inline}}
-
number - содержит срок годности cookie, который представляется количеством секунд с начала UNIX-эры. Отсутствует для сессионных cookie.
-
storeId
-
string - представляет собой ID хранилища, в котором хранится данный cookie, как указано в соответствии с {{WebExtAPIRef("cookies.getAllCookieStores()")}}.
-
+- `name` + - : `string` - содержит имя cookie. +- `value` + - : `string` - содержит значение cookie. +- `domain` + - : `string` - содержит домен, которому принадлежит cookie (например, "www\.google.com", "example.com"). +- `hostOnly` + - : `boolean` - `true` если cookie является host-only (то есть запрашивающий хост должен в точности совпадать с доменом cookie), в ином случае `false`. +- `path` + - : `string` - содержит path cookie. +- `secure` + - : `boolean` - `true`, если cookie помечен как secure (то есть его область действия ограничена безопасными каналами, обычно HTTPS), в ином случае `false`. +- `httpOnly` + - : `boolean` - `true` если cookie помечен как HttpOnly (то есть он недоступен для клиентских скриптов), иначе `false`. +- `session` + - : `boolean` - `true` если cookie является сессионным, `false` если cookie является постоянным с указанным временем жизни. +- `expirationDate`{{optional_inline}} + - : `number` - содержит срок годности cookie, который представляется количеством секунд с начала UNIX-эры. Отсутствует для сессионных cookie. +- `storeId` + - : `string` - представляет собой ID хранилища, в котором хранится данный cookie, как указано в соответствии с {{WebExtAPIRef("cookies.getAllCookieStores()")}}. -

Совместимость с браузерами

-

{{Compat}}

+## Совместимость с браузерами -

Примеры

+{{Compat}} -

В большинстве методов из cookies API объекты типа Cookie используются как входные параметры методов, либо же как возвращаемые значения. К примеру, вызов {{WebExtAPIRef("cookies.getAll()")}} возвращает массив объектов типа Cookie.

+## Примеры -

В примере ниже мы запрашиваем все cookie, а затем выводим в лог некоторые из полей полученных Cookie объектов:

+В большинстве методов из cookies API объекты типа `Cookie` используются как входные параметры методов, либо же как возвращаемые значения. К примеру, вызов {{WebExtAPIRef("cookies.getAll()")}} возвращает массив объектов типа `Cookie`. -
function logCookies(cookies) {
+В примере ниже мы запрашиваем все cookie, а затем выводим в лог некоторые из полей полученных `Cookie` объектов:
+
+```js
+function logCookies(cookies) {
   for (cookie of cookies) {
     console.log(`Domain: ${cookie.domain}`);
     console.log(`Name: ${cookie.name}`);
@@ -61,19 +61,14 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/Cookie
 }
 
 var gettingAll = browser.cookies.getAll({});
-gettingAll.then(logCookies);
- -

{{WebExtExamples}}

- -
Примечание +gettingAll.then(logCookies); +``` -

Это API основано на API Chromium chrome.cookies. Эта документация основана на cookies.json из кода Chromium.

+{{WebExtExamples}} -

Информация о совместимости Microsoft Edge предоставлена корпорацией Microsoft и включена здесь под лицензией Creative Commons Attribution 3.0 United States License.

-
+> **Примечание:** **Примечание**Это API основано на API Chromium [`chrome.cookies`](https://developer.chrome.com/extensions/cookies#type-Cookie). Эта документация основана на [`cookies.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json) из кода Chromium.Информация о совместимости Microsoft Edge предоставлена корпорацией Microsoft и включена здесь под лицензией Creative Commons Attribution 3.0 United States License. - diff --git a/files/ru/mozilla/add-ons/webextensions/api/cookies/index.md b/files/ru/mozilla/add-ons/webextensions/api/cookies/index.md index 4dc8892c132665..6dfa34114e797c 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/cookies/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/cookies/index.md @@ -14,112 +14,87 @@ tags: - WebExtensions translation_of: Mozilla/Add-ons/WebExtensions/API/cookies --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

Позволяет WebExtensions получить и установить куки ,а также сообщить об их изменении.

+Позволяет WebExtensions получить и установить куки ,а также сообщить об их изменении. -

Для использования этого API,вам нужно предоставить доступ API permission в вашем файле manifest.json,а также host permissions для тех сайтов чьи куки вам нужны для доступа.Смотрите cookie Permissions.

+Для использования этого API,вам нужно предоставить доступ [API permission](/en-US/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) в вашем файле [manifest.json](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json),а также [host permissions](/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions) для тех сайтов чьи куки вам нужны для доступа.Смотрите [cookie Permissions](/en-US/Add-ons/WebExtensions/API/cookies#Permissions). -

Types

+## Types -
-
{{WebExtAPIRef("cookies.Cookie")}}
-
Предоставляет информацию о HTTP cookie
-
{{WebExtAPIRef("cookies.CookieStore")}}
-
Represents a cookie store in the browser.
-
{{WebExtAPIRef("cookies.OnChangedCause")}}
-
Represents the reason a cookie changed.
-
+- {{WebExtAPIRef("cookies.Cookie")}} + - : Предоставляет информацию о HTTP cookie +- {{WebExtAPIRef("cookies.CookieStore")}} + - : Represents a cookie store in the browser. +- {{WebExtAPIRef("cookies.OnChangedCause")}} + - : Represents the reason a cookie changed. -

Methods

+## Methods -
-
{{WebExtAPIRef("cookies.get()")}}
-
Запрашивает информацию об одном кукис.
-
{{WebExtAPIRef("cookies.getAll()")}}
-
Выдаёт все кукис которые подходят установленному фильтру.
-
{{WebExtAPIRef("cookies.set()")}}
-
Устанавливает кукис с заданной информацией;в том случае если подобный кукис был информация будет перезаписана.
-
{{WebExtAPIRef("cookies.remove()")}}
-
Удаляет кукис по имени.
-
{{WebExtAPIRef("cookies.getAllCookieStores()")}}
-
Список всех существующих куки
-
+- {{WebExtAPIRef("cookies.get()")}} + - : Запрашивает информацию об одном кукис. +- {{WebExtAPIRef("cookies.getAll()")}} + - : Выдаёт все кукис которые подходят установленному фильтру. +- {{WebExtAPIRef("cookies.set()")}} + - : Устанавливает кукис с заданной информацией;в том случае если подобный кукис был информация будет перезаписана. +- {{WebExtAPIRef("cookies.remove()")}} + - : Удаляет кукис по имени. +- {{WebExtAPIRef("cookies.getAllCookieStores()")}} + - : Список всех существующих куки -

Event handlers

+## Event handlers -
-
{{WebExtAPIRef("cookies.onChanged")}}
-
Происходит когда кукис задаётся или меняется.
-
+- {{WebExtAPIRef("cookies.onChanged")}} + - : Происходит когда кукис задаётся или меняется. -

Permissions

+## Permissions -

In order to use this API, an add-on must specify the "cookies" API permission in its manifest, along with host permissions for any sites for which it wishes to access cookies. The add-on may read or write any cookies which could be read or written by a URL matching the host permissions. For example:

+In order to use this API, an add-on must specify the "cookies" [API permission](/en-US/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) in its manifest, along with [host permissions](/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions) for any sites for which it wishes to access cookies. The add-on may read or write any cookies which could be read or written by a URL matching the host permissions. For example: -
-
http://*.example.com/
-
-

An add-on with this host permission may:

+- `http://*.example.com/` -
    -
  • Read a non-secure cookie for www.example.com, with any path.
  • -
  • Write a secure or non-secure cookie for www.example.com, with any path.
  • -
+ - : An add-on with this host permission may: -

It may not:

+ - Read a non-secure cookie for `www.example.com`, with any path. + - Write a secure or non-secure cookie for `www.example.com`, with any path. -
    -
  • Read a secure cookie for www.example.com.
  • -
-
-
http://www.example.com/
-
-

An add-on with this host permission may:

+ It may _not_: -
    -
  • Read a non-secure cookie for www.example.com, with any path.
  • -
  • Read a non-secure cookie for .example.com, with any path.
  • -
  • Write a secure or non-secure cookie for www.example.com with any path.
  • -
  • Write a secure or non-secure cookie for .example.com with any path.
  • -
+ - Read a secure cookie for `www.example.com`. -

It may not:

+- `http://www.example.com/` -
    -
  • Read or write a cookie for foo.example.com.
  • -
  • Read or write a cookie for foo.www.example.com.
  • -
-
-
*://*.example.com/
-
-

An add-on with this host permission may:

+ - : An add-on with this host permission may: -
    -
  • Read or write a secure or non-secure cookie for www.example.com with any path.
  • -
-
-
+ - Read a non-secure cookie for `www.example.com`, with any path. + - Read a non-secure cookie for `.example.com`, with any path. + - Write a secure or non-secure cookie for `www.example.com` with any path. + - Write a secure or non-secure cookie for `.example.com` with any path. -

Browser compatibility

+ It may _not_: -

{{Compat}}

+ - Read or write a cookie for `foo.example.com`. + - Read or write a cookie for `foo.www.example.com`. -

Edge incompatibilities

+- `*://*.example.com/` -

Promises are not supported in Edge. Use callbacks instead.

+ - : An add-on with this host permission may: -

{{WebExtExamples("h2")}}

+ - Read or write a secure or non-secure cookie for `www.example.com` with any path. -
Acknowledgements +## Browser compatibility -

This API is based on Chromium's chrome.cookies API. This documentation is derived from cookies.json in the Chromium code.

+{{Compat}} -

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

-
+### Edge incompatibilities - diff --git a/files/ru/mozilla/add-ons/webextensions/api/downloads/index.md b/files/ru/mozilla/add-ons/webextensions/api/downloads/index.md index b390a9fdbb3230..7787df5eb92936 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/downloads/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/downloads/index.md @@ -3,96 +3,84 @@ title: downloads slug: Mozilla/Add-ons/WebExtensions/API/downloads translation_of: Mozilla/Add-ons/WebExtensions/API/downloads --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

Позволяет расширениям взаимодействовать с менеджером загрузки браузера. Этот модуль API можно использовать для загрузки, отмены, приостановки, возобновления загрузки файлов и отображения загруженных файлов в файловом менеджере.

+Позволяет расширениям взаимодействовать с менеджером загрузки браузера. Этот модуль API можно использовать для загрузки, отмены, приостановки, возобновления загрузки файлов и отображения загруженных файлов в файловом менеджере. -

Для использования этого API вам необходимо указать "downloads" API permission в вашем manifest.json файле.

+Для использования этого API вам необходимо указать "downloads" [API permission](/en-US/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) в вашем [manifest.json](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json) файле. -

Types

+## Types -
-
{{WebExtAPIRef("downloads.FilenameConflictAction")}}
-
Определяет действия в случае, если имя загружаемого файла конфликтует с именем существующего файла.
-
{{WebExtAPIRef("downloads.InterruptReason")}}
-
Defines a set of possible reasons why a download was interrupted.
-
{{WebExtAPIRef("downloads.DangerType")}}
-
Defines a set of common warnings of possible dangers associated with downloadable files.
-
{{WebExtAPIRef("downloads.State")}}
-
Defines different states that a current download can be in.
-
{{WebExtAPIRef("downloads.DownloadItem")}}
-
Represents a downloaded file.
-
{{WebExtAPIRef("downloads.StringDelta")}}
-
Represents the difference between two strings.
-
{{WebExtAPIRef("downloads.DoubleDelta")}}
-
Represents the difference between two doubles.
-
{{WebExtAPIRef("downloads.BooleanDelta")}}
-
Represents the difference between two booleans.
-
{{WebExtAPIRef("downloads.DownloadTime")}}
-
Represents the time a download took to complete.
-
{{WebExtAPIRef("downloads.DownloadQuery")}}
-
Defines a set of parameters that can be used to search the downloads manager for a specific set of downloads.
-
+- {{WebExtAPIRef("downloads.FilenameConflictAction")}} + - : Определяет действия в случае, если имя загружаемого файла конфликтует с именем существующего файла. +- {{WebExtAPIRef("downloads.InterruptReason")}} + - : Defines a set of possible reasons why a download was interrupted. +- {{WebExtAPIRef("downloads.DangerType")}} + - : Defines a set of common warnings of possible dangers associated with downloadable files. +- {{WebExtAPIRef("downloads.State")}} + - : Defines different states that a current download can be in. +- {{WebExtAPIRef("downloads.DownloadItem")}} + - : Represents a downloaded file. +- {{WebExtAPIRef("downloads.StringDelta")}} + - : Represents the difference between two strings. +- {{WebExtAPIRef("downloads.DoubleDelta")}} + - : Represents the difference between two doubles. +- {{WebExtAPIRef("downloads.BooleanDelta")}} + - : Represents the difference between two booleans. +- {{WebExtAPIRef("downloads.DownloadTime")}} + - : Represents the time a download took to complete. +- {{WebExtAPIRef("downloads.DownloadQuery")}} + - : Defines a set of parameters that can be used to search the downloads manager for a specific set of downloads. -

Functions

+## Functions -
-
{{WebExtAPIRef("downloads.download()")}}
-
Downloads a file, given its URL and other optional preferences.
-
{{WebExtAPIRef("downloads.search()")}}
-
Queries the {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} available in the browser's downloads manager, and returns those that match the specified search criteria.
-
{{WebExtAPIRef("downloads.pause()")}}
-
Pauses a download.
-
{{WebExtAPIRef("downloads.resume()")}}
-
Resumes a paused download.
-
{{WebExtAPIRef("downloads.cancel()")}}
-
Cancels a download.
-
{{WebExtAPIRef("downloads.getFileIcon()")}}
-
Retrieves an icon for the specified download.
-
{{WebExtAPIRef("downloads.open()")}}
-
Opens the downloaded file with its associated application.
-
{{WebExtAPIRef("downloads.show()")}}
-
Opens the platform's file manager application to show the downloaded file in its containing folder.
-
{{WebExtAPIRef("downloads.showDefaultFolder()")}}
-
Opens the platform's file manager application to show the default downloads folder.
-
{{WebExtAPIRef("downloads.erase()")}}
-
Erases matching {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} from the browser's download history, without deleting the downloaded files from disk.
-
{{WebExtAPIRef("downloads.removeFile()")}}
-
Removes a downloaded file from disk, but not from the browser's download history.
-
{{WebExtAPIRef("downloads.acceptDanger()")}}
-
Prompts the user to accept or cancel a dangerous download.
-
{{WebExtAPIRef("downloads.drag()")}}
-
Initiates dragging the downloaded file to another application.
-
{{WebExtAPIRef("downloads.setShelfEnabled()")}}
-
Enables or disables the gray shelf at the bottom of every window associated with the current browser profile. The shelf will be disabled as long as at least one extension has disabled it.
-
+- {{WebExtAPIRef("downloads.download()")}} + - : Downloads a file, given its URL and other optional preferences. +- {{WebExtAPIRef("downloads.search()")}} + - : Queries the {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} available in the browser's downloads manager, and returns those that match the specified search criteria. +- {{WebExtAPIRef("downloads.pause()")}} + - : Pauses a download. +- {{WebExtAPIRef("downloads.resume()")}} + - : Resumes a paused download. +- {{WebExtAPIRef("downloads.cancel()")}} + - : Cancels a download. +- {{WebExtAPIRef("downloads.getFileIcon()")}} + - : Retrieves an icon for the specified download. +- {{WebExtAPIRef("downloads.open()")}} + - : Opens the downloaded file with its associated application. +- {{WebExtAPIRef("downloads.show()")}} + - : Opens the platform's file manager application to show the downloaded file in its containing folder. +- {{WebExtAPIRef("downloads.showDefaultFolder()")}} + - : Opens the platform's file manager application to show the default downloads folder. +- {{WebExtAPIRef("downloads.erase()")}} + - : Erases matching {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} from the browser's download history, without deleting the downloaded files from disk. +- {{WebExtAPIRef("downloads.removeFile()")}} + - : Removes a downloaded file from disk, but not from the browser's download history. +- {{WebExtAPIRef("downloads.acceptDanger()")}} + - : Prompts the user to accept or cancel a dangerous download. +- {{WebExtAPIRef("downloads.drag()")}} + - : Initiates dragging the downloaded file to another application. +- {{WebExtAPIRef("downloads.setShelfEnabled()")}} + - : Enables or disables the gray shelf at the bottom of every window associated with the current browser profile. The shelf will be disabled as long as at least one extension has disabled it. -

Events

+## Events -
-
{{WebExtAPIRef("downloads.onCreated")}}
-
Fires with the {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} object when a download begins.
-
{{WebExtAPIRef("downloads.onErased")}}
-
Fires with the downloadId when a download is erased from history.
-
{{WebExtAPIRef("downloads.onChanged")}}
-
When any of a {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}}'s properties except bytesReceived changes, this event fires with the downloadId and an object containing the properties that changed.
-
+- {{WebExtAPIRef("downloads.onCreated")}} + - : Fires with the {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} object when a download begins. +- {{WebExtAPIRef("downloads.onErased")}} + - : Fires with the `downloadId` when a download is erased from history. +- {{WebExtAPIRef("downloads.onChanged")}} + - : When any of a {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}}'s properties except `bytesReceived` changes, this event fires with the `downloadId` and an object containing the properties that changed. -

Browser compatibility

+## Browser compatibility -

{{Compat}}

+{{Compat}} -

{{WebExtExamples("h2")}}

+{{WebExtExamples("h2")}} -
Acknowledgements +> **Примечание:** **Acknowledgements**This API is based on Chromium's [`chrome.downloads`](https://developer.chrome.com/extensions/downloads) API.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License. -

This API is based on Chromium's chrome.downloads API.

- -

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

-
- - diff --git a/files/ru/mozilla/add-ons/webextensions/api/index.md b/files/ru/mozilla/add-ons/webextensions/api/index.md index 84123f6341cec9..272ccd2bdabcbf 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/index.md @@ -6,26 +6,26 @@ tags: - Расширение translation_of: Mozilla/Add-ons/WebExtensions/API --- -
{{AddonSidebar}}
+{{AddonSidebar}} -
-

WebExtension JavaScript API может быть использован в фоновых скриптах расширения, а так же в любых других документах, поставляемых вместе с расширением, таких как документы во всплывающих окнах после нажатия кнопок активации расширения browser action на панели инструментов или page action в строке адреса, боковой панели, страницах настроек или новых открытых вкладках. Некоторые из этих API могут быть доступны на встраиваемых в страницу скриптах (см. список в руководстве по встраиваемым скриптам).

+WebExtension JavaScript API может быть использован в [фоновых скриптах](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#%D0%A4%D0%BE%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B) расширения, а так же в любых других документах, поставляемых вместе с расширением, таких как документы во всплывающих окнах после нажатия[ ](/en-US/Add-ons/WebExtensions/User_interface_components#Browser_actions)кнопок активации расширения [browser action ](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action)на панели инструментов[ ](/en-US/Add-ons/WebExtensions/User_interface_components#Browser_actions)или [page action](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions) в строке адреса, [боковой панели](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars), [страницах настроек](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages) или [новых открытых вкладках](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides). Некоторые из этих API могут быть доступны на [встраиваемых в страницу скриптах](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B) (см. [список в руководстве по встраиваемым скриптам](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#WebExtension_APIs)). -

Для использования отдельных более продвинутых API, необходимо запросить разрешения в manifest.json вашего дополнения.

+Для использования отдельных более продвинутых API, необходимо [запросить разрешения](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) в manifest.json вашего дополнения. -

Вы можете получить доступ к API, используя пространство имён browser:

+Вы можете получить доступ к API, используя пространство имён `browser`: -
function logTabs(tabs) {
+```js
+function logTabs(tabs) {
   console.log(tabs);
 }
 
-browser.tabs.query({currentWindow: true}, logTabs);
-
+browser.tabs.query({currentWindow: true}, logTabs); +``` -
-

Многие API выполняются асинхронно, возвращая Promise:

+Многие API выполняются асинхронно, возвращая [`Promise`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise): -
function logCookie(c) {
+```js
+function logCookie(c) {
   console.log(c);
 }
 
@@ -36,18 +36,17 @@ function logError(e) {
 var setCookie = browser.cookies.set(
   {url: "/"}
 );
-setCookie.then(logCookie, logError);
-
+setCookie.then(logCookie, logError); +``` -
Обратите внимание, что это отличается от расширений Google Chrome, которые используют пространство имён chrome вместо browser и колбэки для асинхронных функций вместо промисов. +Обратите внимание, что это отличается от расширений Google Chrome, которые используют пространство имён `chrome` вместо `browser` и колбэки для асинхронных функций вместо промисов. -

Для поддержки портирования, реализация Firefox WebExtensions API так же поддерживает пространство имён chrome и использование колбэков. Это позволяет в большинстве случаев не изменять код, изначально написанный для Chrome.

+Для поддержки портирования, реализация Firefox WebExtensions API так же поддерживает пространство имён `chrome` и использование колбэков. Это позволяет в большинстве случаев не изменять код, изначально написанный для Chrome. -

Mozilla так же предоставляет полифил, который позволяет коду, использующему browser и промисы, работать без изменений в Chrome: https://github.com/mozilla/webextension-polyfill.

+Mozilla так же предоставляет полифил, который позволяет коду, использующему `browser` и промисы, работать без изменений в Chrome: . -

Microsoft Edge использует пространство имён browser, но ещё не поддерживает, основанный на промисах асинхронный API. В Edge на данный момент асинхронные вызовы API должны использовать колбэки.

+Microsoft Edge использует пространство имён `browser`, но ещё не поддерживает, основанный на промисах асинхронный API. В Edge на данный момент асинхронные вызовы API должны использовать колбэки. -

Не все браузеры поддерживают все API: детали см. Browser support for JavaScript APIs.

-
+Не все браузеры поддерживают все API: детали см. [Browser support for JavaScript APIs](/ru/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs). -
{{SubpagesWithSummaries}}
+{{SubpagesWithSummaries}} diff --git a/files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.md b/files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.md index 2de559ba5de647..3704bf2e3b4fe4 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.md @@ -15,46 +15,40 @@ tags: - метод translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/getManifest --- -
{{AddonSidebar()}}
+{{AddonSidebar()}}Получить весь файл [manifest.json](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json) в виде объекта JavaScript, совместимого с JSON. -
Получить весь файл manifest.json в виде объекта JavaScript, совместимого с JSON.
+## Синтаксис +```js +browser.runtime.getManifest() +``` +### Параметры -

Синтаксис

+Нет. -
browser.runtime.getManifest()
-
- -

Параметры

- -

Нет.

- -

Возвращаемое значение

- -

object - объект JSON, представляющий манифест.

+### Возвращаемое значение -

Совместимость с браузерами

-

{{Compat}}

+`object` - объект JSON, представляющий манифест. -

Примеры

+## Совместимость с браузерами -

Получить манифест и вывести его свойство "name":

+{{Compat}} -
var manifest = browser.runtime.getManifest();
-console.log(manifest.name);
+## Примеры -

{{WebExtExamples}}

+Получить манифест и вывести его свойство "name": -
Справка +```js +var manifest = browser.runtime.getManifest(); +console.log(manifest.name); +``` -

Этот API основан на API Chromium chrome.runtime. Настоящая документация унаследована от runtime.json в коде Chromium.

+{{WebExtExamples}} -

Данные о совместимости Microsoft Edge предоставлены Корпорацией Microsoft и включены сюда под лицензией Creative Commons Attribution 3.0 United States License.

-
+> **Примечание:** **Справка**Этот API основан на API Chromium [`chrome.runtime`](https://developer.chrome.com/extensions/runtime#method-getManifest). Настоящая документация унаследована от [`runtime.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json) в коде Chromium.Данные о совместимости Microsoft Edge предоставлены Корпорацией Microsoft и включены сюда под лицензией Creative Commons Attribution 3.0 United States License. - diff --git a/files/ru/mozilla/add-ons/webextensions/api/runtime/index.md b/files/ru/mozilla/add-ons/webextensions/api/runtime/index.md index ae780b9d976f8c..24a46194412266 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/runtime/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/runtime/index.md @@ -13,131 +13,107 @@ tags: - runtime translation_of: Mozilla/Add-ons/WebExtensions/API/runtime --- -
{{AddonSidebar}}
- -

This module provides information about your extension and the environment it's running in.

- -

It also provides messaging APIs enabling you to:

- - - -

Types

- -
-
{{WebExtAPIRef("runtime.Port")}}
-
Represents one end of a connection between two specific contexts, which can be used to exchange messages.
-
{{WebExtAPIRef("runtime.MessageSender")}}
-
-

Contains information about the sender of a message or connection request.

-
-
{{WebExtAPIRef("runtime.PlatformOs")}}
-
Identifies the browser's operating system.
-
{{WebExtAPIRef("runtime.PlatformArch")}}
-
Identifies the browser's processor architecture.
-
{{WebExtAPIRef("runtime.PlatformInfo")}}
-
Contains information about the platform the browser is running on.
-
{{WebExtAPIRef("runtime.RequestUpdateCheckStatus")}}
-
Result of a call to {{WebExtAPIRef("runtime.requestUpdateCheck()")}}.
-
{{WebExtAPIRef("runtime.OnInstalledReason")}}
-
The reason that the {{WebExtAPIRef("runtime.onInstalled")}} event is being dispatched.
-
{{WebExtAPIRef("runtime.OnRestartRequiredReason")}}
-
The reason that the {{WebExtAPIRef("runtime.onRestartRequired")}} event is being dispatched.
-
- -

Properties

- -
-
{{WebExtAPIRef("runtime.lastError")}}
-
This value is set when an asynchronous function has an error condition that it needs to report to its caller.
-
{{WebExtAPIRef("runtime.id")}}
-
The ID of the extension.
-
- -

Functions

- -
-
{{WebExtAPIRef("runtime.getBackgroundPage()")}}
-
Retrieves the Window object for the background page running inside the current extension.
-
{{WebExtAPIRef("runtime.openOptionsPage()")}}
-
-

Opens your extension's options page.

-
-
{{WebExtAPIRef("runtime.getManifest()")}}
-
Gets the complete manifest.json file, serialized as an object.
-
{{WebExtAPIRef("runtime.getURL()")}}
-
Given a relative path from the manifest.json to a resource packaged with the extension, returns a fully-qualified URL.
-
{{WebExtAPIRef("runtime.setUninstallURL()")}}
-
Sets a URL to be visited when the extension is uninstalled.
-
{{WebExtAPIRef("runtime.reload()")}}
-
Reloads the extension.
-
{{WebExtAPIRef("runtime.requestUpdateCheck()")}}
-
Checks for updates to this extension.
-
{{WebExtAPIRef("runtime.connect()")}}
-
Establishes a connection from a content script to the main extension process, or from one extension to a different extension.
-
{{WebExtAPIRef("runtime.connectNative()")}}
-
-
Connects the extension to a native application on the user's computer.
-
-
{{WebExtAPIRef("runtime.sendMessage()")}}
-
Sends a single message to event listeners within your extension or a different extension. Similar to {{WebExtAPIRef('runtime.connect')}} but only sends a single message, with an optional response.
-
{{WebExtAPIRef("runtime.sendNativeMessage()")}}
-
Sends a single message from an extension to a native application.
-
{{WebExtAPIRef("runtime.getPlatformInfo()")}}
-
Returns information about the current platform.
-
{{WebExtAPIRef("runtime.getBrowserInfo()")}}
-
Returns information about the browser in which this extension is installed.
-
{{WebExtAPIRef("runtime.getPackageDirectoryEntry()")}}
-
Returns a DirectoryEntry for the package directory.
-
- -

Events

- -
-
{{WebExtAPIRef("runtime.onStartup")}}
-
Fired when a profile that has this extension installed first starts up. This event is not fired when an incognito profile is started.
-
{{WebExtAPIRef("runtime.onInstalled")}}
-
Fired when the extension is first installed, when the extension is updated to a new version, and when the browser is updated to a new version.
-
{{WebExtAPIRef("runtime.onSuspend")}}
-
Sent to the event page just before the extension is unloaded. This gives the extension an opportunity to do some cleanup.
-
{{WebExtAPIRef("runtime.onSuspendCanceled")}}
-
Sent after {{WebExtAPIRef("runtime.onSuspend")}} to indicate that the extension won't be unloaded after all.
-
{{WebExtAPIRef("runtime.onUpdateAvailable")}}
-
Fired when an update is available, but isn't installed immediately because the extension is currently running.
-
{{WebExtAPIRef("runtime.onBrowserUpdateAvailable")}} {{deprecated_inline}}
-
Fired when an update for the browser is available, but isn't installed immediately because a browser restart is required.
-
{{WebExtAPIRef("runtime.onConnect")}}
-
Fired when a connection is made with either an extension process or a content script.
-
{{WebExtAPIRef("runtime.onConnectExternal")}}
-
Fired when a connection is made with another extension.
-
{{WebExtAPIRef("runtime.onMessage")}}
-
Fired when a message is sent from either an extension process or a content script.
-
{{WebExtAPIRef("runtime.onMessageExternal")}}
-
Fired when a message is sent from another extension. Cannot be used in a content script.
-
{{WebExtAPIRef("runtime.onRestartRequired")}}
-
Fired when the device needs to be restarted.
-
- -

Browser compatibility

- - - -

{{Compat}}

- -
{{WebExtExamples("h2")}}
- -
Acknowledgements - -

This API is based on Chromium's chrome.runtime API. This documentation is derived from runtime.json in the Chromium code.

- -

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

-
- - diff --git a/files/ru/mozilla/add-ons/webextensions/api/tabs/get/index.md b/files/ru/mozilla/add-ons/webextensions/api/tabs/get/index.md index 03a27e0925db6d..47e62023293d78 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/tabs/get/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/tabs/get/index.md @@ -3,47 +3,41 @@ title: tabs.get() slug: Mozilla/Add-ons/WebExtensions/API/tabs/get translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/get --- -
{{AddonSidebar()}}
+{{AddonSidebar()}} -

Получает сведения об указанной вкладке.

+Получает сведения об указанной вкладке. -

Синтаксис

+## Синтаксис -
browser.tabs.get(
+```js
+browser.tabs.get(
   tabId,              // integer
   function(tab) {...} // function
 )
-
+``` + +### Параметры -

Параметры

+- `tabId` + - : `integer`. +- `callback` -
-
tabId
-
integer.
-
callback
-

function. Функция принимает следующие аргументы:

-
-
tab
-
{{WebExtAPIRef('tabs.Tab')}}.
-
-
-
+ - : `function`. Функция принимает следующие аргументы: -

Совместимость с браузерами

+ - `tab` + - : {{WebExtAPIRef('tabs.Tab')}}. -

{{Compat}}

+## Совместимость с браузерами -

Примеры

+{{Compat}} -

{{WebExtExamples}}

+## Примеры -
Благодарность +{{WebExtExamples}} -

Этот API основан на Chromium chrome.tabs API. Это документация получена из tabs.json в коде Chromium.

-
+> **Примечание:** **Благодарность**Этот API основан на Chromium [`chrome.tabs`](https://developer.chrome.com/extensions/tabs#method-get) API. Это документация получена из [`tabs.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json) в коде Chromium. - diff --git a/files/ru/mozilla/add-ons/webextensions/api/tabs/hide/index.md b/files/ru/mozilla/add-ons/webextensions/api/tabs/hide/index.md index b380183702f95e..6965ef71ab6e8a 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/tabs/hide/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/tabs/hide/index.md @@ -3,55 +3,57 @@ title: tabs.hide() slug: Mozilla/Add-ons/WebExtensions/API/tabs/hide translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/hide --- -
{{AddonSidebar()}}
+{{AddonSidebar()}} -

Hides one or more tabs.

+Hides one or more tabs. -

Hidden tabs are no longer visible in the browser's tabstrip. Hidden tabs are not automatically discarded: the code running in them continues to run. You can explicitly discard tabs whenever you hide them: although this is not appropriate in all situations, it will help to reduce the resources used by the browser.

+Hidden tabs are no longer visible in the browser's tabstrip. Hidden tabs are not automatically [discarded](/en-US/Add-ons/WebExtensions/API/tabs/discard): the code running in them continues to run. You can explicitly discard tabs whenever you hide them: although this is not appropriate in all situations, it will help to reduce the resources used by the browser. -

This is an asynchronous function that returns a Promise.

+This is an asynchronous function that returns a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). -

Not all tabs are eligible for being hidden:

+Not all tabs are eligible for being hidden: - +- Tabs that are pinned cannot be hidden. +- Tabs that are sharing the screen, microphone or camera cannot be hidden. +- The current active tab cannot be hidden. +- Tabs that are in the process of being closed cannot be hidden. -

The first time an extension hides a tab, the browser will tell the user that the tab is being hidden, show them how they can access the hidden tab, and give them the option of disabling the extension instead.

+The first time an extension hides a tab, the browser will tell the user that the tab is being hidden, show them how they can access the hidden tab, and give them the option of disabling the extension instead. -

To use this API you must have the "tabHide" permission.

+To use this API you must have the "tabHide" [permission](/en-US/Add-ons/WebExtensions/manifest.json/permissions). -

Syntax

+## Syntax -
var hiding = browser.tabs.hide(
+```js
+var hiding = browser.tabs.hide(
   tabIds          // integer or integer array
 )
-
+``` -

Parameters

+### Parameters -
-
tabIds
-

integer or array of integer. The IDs of the tab or tabs to hide.

-

If any of these tabs are not eligible for being hidden, they will not be hidden, but the call will still succeed and eligible tabs will still be hidden. For example, if you pass [1, 3], and 1 identifies the active tab, then only 3 will be hidden.

-

However, if any of the tab IDs are invalid, the call will fail and no tabs will be hidden.

-
+- `tabIds` -

Return value

+ - : `integer` or `array` of `integer`. The IDs of the tab or tabs to hide. -

A Promise that will be fulfilled with an array containing the IDs of the tabs that were hidden. If any error occurs, the promise will be rejected with an error message.

+ If any of these tabs are not eligible for being hidden, they will not be hidden, but the call will still succeed and eligible tabs will still be hidden. For example, if you pass `[1, 3]`, and `1` identifies the active tab, then only `3` will be hidden. -

Browser compatibility

-

{{Compat}}

+ However, if any of the tab IDs are invalid, the call will fail and no tabs will be hidden. -

Examples

+### Return value -

Hide a single tab:

+A [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) that will be fulfilled with an array containing the IDs of the tabs that were hidden. If any error occurs, the promise will be rejected with an error message. -
function onHidden() {
+## Browser compatibility
+
+{{Compat}}
+
+## Examples
+
+Hide a single tab:
+
+```js
+function onHidden() {
   console.log(`Hidden`);
 }
 
@@ -59,11 +61,13 @@ function onError(error) {
   console.log(`Error: ${error}`);
 }
 
-browser.tabs.hide(2).then(onHidden, onError);
+browser.tabs.hide(2).then(onHidden, onError); +``` -

Hide multiple tabs:

+Hide multiple tabs: -
function onHidden() {
+```js
+function onHidden() {
   console.log(`Hidden`);
 }
 
@@ -71,6 +75,7 @@ function onError(error) {
   console.log(`Error: ${error}`);
 }
 
-browser.tabs.hide([15, 14, 1]).then(onHidden, onError);
+browser.tabs.hide([15, 14, 1]).then(onHidden, onError); +``` -

{{WebExtExamples}}

+{{WebExtExamples}} diff --git a/files/ru/mozilla/add-ons/webextensions/api/tabs/index.md b/files/ru/mozilla/add-ons/webextensions/api/tabs/index.md index 7818511f4e47f7..368fa5faf656b4 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/tabs/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/tabs/index.md @@ -14,135 +14,123 @@ tags: - tabs translation_of: Mozilla/Add-ons/WebExtensions/API/tabs --- -
{{AddonSidebar}}
- -

Interact with the browser's tab system. You can use this API to get a list of opened tabs and to create, modify, and rearrange tabs in the browser.

- -

You can use most of this API without any special permission. However, to access Tab.url, Tab.title, and Tab.faviconUrl, you need to have the "tabs" permission. In Firefox this also means you need "tabs" to {{WebExtAPIRef("tabs.query", "query")}} by URL.

- -

Types

- -
-
{{WebExtAPIRef("tabs.MutedInfoReason")}}
-
An event that caused a muted state change.
-
{{WebExtAPIRef("tabs.MutedInfo")}}
-
Tab muted state and the reason for the last state change.
-
{{WebExtAPIRef("tabs.Tab")}}
-
Contains various properties of a single tab.
-
{{WebExtAPIRef("tabs.ZoomSettingsMode")}}
-
Defines how zoom changes are handled, i.e. which entity is responsible for the actual scaling of the page; defaults to automatic.
-
{{WebExtAPIRef("tabs.ZoomSettingsScope")}}
-
Defines whether zoom changes will persist for the page's origin, or only take effect in this tab; defaults to per-origin when in automatic mode, and per-tab otherwise.
-
{{WebExtAPIRef("tabs.ZoomSettings")}}
-
Defines how zoom changes in a tab are handled and at what scope.
-
{{WebExtAPIRef("tabs.TabStatus")}}
-
Whether the tabs have completed loading.
-
{{WebExtAPIRef("tabs.WindowType")}}
-
The type of window.
-
- -

Properties

- -
-
{{WebExtAPIRef("tabs.TAB_ID_NONE")}}
-
An ID which represents the absence of a browser tab.
-
- -

Functions

- -
-
{{WebExtAPIRef("tabs.get()")}}
-
Retrieves details about the specified tab.
-
{{WebExtAPIRef("tabs.getCurrent()")}}
-
Gets the tab that this script call is being made from. May be undefined if called from a non-tab context (for example: a background page or popup view).
-
{{WebExtAPIRef("tabs.connect()")}}
-
Connects to the content script(s) in the specified tab. The {{WebExtAPIRef('runtime.onConnect')}} event is fired in each content script running in the specified tab for the current extension. For more details, see content script messaging.
-
{{WebExtAPIRef("tabs.sendRequest()")}}
-
Sends a single request to the content script(s) in the specified tab, with an optional callback to run when a response is sent back. The {{WebExtAPIRef('extension.onRequest')}} event is fired in each content script running in the specified tab for the current extension.
-
{{WebExtAPIRef("tabs.sendMessage()")}}
-
Sends a single message to the content script(s) in the specified tab, with an optional callback to run when a response is sent back. The {{WebExtAPIRef('runtime.onMessage')}} event is fired in each content script running in the specified tab for the current extension.
-
{{WebExtAPIRef("tabs.getSelected()")}}
-
Gets the tab that is selected in the specified window.
-
{{WebExtAPIRef("tabs.getAllInWindow()")}}
-
Gets details about all tabs in the specified window.
-
{{WebExtAPIRef("tabs.create()")}}
-
Creates a new tab.
-
{{WebExtAPIRef("tabs.duplicate()")}}
-
Duplicates a tab.
-
{{WebExtAPIRef("tabs.query()")}}
-
Gets all tabs that have the specified properties, or all tabs if no properties are specified.
-
{{WebExtAPIRef("tabs.highlight()")}}
-
Highlights the given tabs.
-
{{WebExtAPIRef("tabs.update()")}}
-
Modifies the properties of a tab. Properties that are not specified in updateProperties are not modified.
-
{{WebExtAPIRef("tabs.move()")}}
-
Moves one or more tabs to a new position within its window, or to a new window. Note that tabs can only be moved to and from normal (window.type === "normal") windows.
-
{{WebExtAPIRef("tabs.reload()")}}
-
Reload a tab.
-
{{WebExtAPIRef("tabs.remove()")}}
-
Closes one or more tabs.
-
{{WebExtAPIRef("tabs.detectLanguage()")}}
-
Detects the primary language of the content in a tab.
-
{{WebExtAPIRef("tabs.captureVisibleTab()")}}
-
Captures the visible area of the currently active tab in the specified window. You must have <all_urls> permission to use this method.
-
{{WebExtAPIRef("tabs.executeScript()")}}
-
Injects JavaScript code into a page. For details, see the programmatic injection section of the content scripts doc.
-
{{WebExtAPIRef("tabs.insertCSS()")}}
-
Injects CSS into a page. For details, see the programmatic injection section of the content scripts doc.
-
{{WebExtAPIRef("tabs.setZoom()")}}
-
Zooms a specified tab.
-
{{WebExtAPIRef("tabs.getZoom()")}}
-
Gets the current zoom factor of a specified tab.
-
{{WebExtAPIRef("tabs.setZoomSettings()")}}
-
Sets the zoom settings for a specified tab, which define how zoom changes are handled. These settings are reset to defaults upon navigating the tab.
-
{{WebExtAPIRef("tabs.getZoomSettings()")}}
-
Gets the current zoom settings of a specified tab.
-
- -

Events

- -
-
{{WebExtAPIRef("tabs.onCreated")}}
-
Fired when a tab is created. Note that the tab's URL may not be set at the time this event fired, but you can listen to onUpdated events to be notified when a URL is set.
-
{{WebExtAPIRef("tabs.onUpdated")}}
-
Fired when a tab is updated.
-
{{WebExtAPIRef("tabs.onMoved")}}
-
Fired when a tab is moved within a window. Only one move event is fired, representing the tab the user directly moved. Move events are not fired for the other tabs that must move in response. This event is not fired when a tab is moved between windows. For that, see {{WebExtAPIRef('tabs.onDetached')}}.
-
{{WebExtAPIRef("tabs.onSelectionChanged")}}
-
Fires when the selected tab in a window changes.
-
{{WebExtAPIRef("tabs.onActiveChanged")}}
-
Fires when the selected tab in a window changes. Note that the tab's URL may not be set at the time this event fired, but you can listen to {{WebExtAPIRef('tabs.onUpdated')}} events to be notified when a URL is set.
-
{{WebExtAPIRef("tabs.onActivated")}}
-
Fires when the active tab in a window changes. Note that the tab's URL may not be set at the time this event fired, but you can listen to onUpdated events to be notified when a URL is set.
-
{{WebExtAPIRef("tabs.onHighlightChanged")}}
-
Fired when the highlighted or selected tabs in a window changes.
-
{{WebExtAPIRef("tabs.onHighlighted")}}
-
Fired when the highlighted or selected tabs in a window changes.
-
{{WebExtAPIRef("tabs.onDetached")}}
-
Fired when a tab is detached from a window, for example because it is being moved between windows.
-
{{WebExtAPIRef("tabs.onAttached")}}
-
Fired when a tab is attached to a window, for example because it was moved between windows.
-
{{WebExtAPIRef("tabs.onRemoved")}}
-
Fired when a tab is closed.
-
{{WebExtAPIRef("tabs.onReplaced")}}
-
Fired when a tab is replaced with another tab due to prerendering or instant.
-
{{WebExtAPIRef("tabs.onZoomChange")}}
-
Fired when a tab is zoomed.
-
- -

Browser compatibility

- -

{{Compat}}

- -

{{WebExtExamples("h2")}}

- -
Acknowledgements - -

This API is based on Chromium's chrome.tabs API. This documentation is derived from tabs.json in the Chromium code.

-
- - diff --git a/files/ru/mozilla/add-ons/webextensions/api/webrequest/index.md b/files/ru/mozilla/add-ons/webextensions/api/webrequest/index.md index 1995a5b4427ce9..a139ee368dd7a2 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/webrequest/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/webrequest/index.md @@ -3,161 +3,132 @@ title: Веб Запрос slug: Mozilla/Add-ons/WebExtensions/API/webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest --- -
{{AddonSidebar}}
- -

Добавляет обработчики событий на различных стадиях HTTP запроса. Обработчик получить детальную информацию о запросе и способен изменить или отменить запрос.

- -

Каждое событие запущено на определённой стадии запроса. Типичный порядок событий такой:

- -

{{WebExtAPIRef("webRequest.onErrorOccurred", "onErrorOccurred")}} Может быть запущен в любой момент во время запроса. Чреда событий может отличаться от приведённой выше: например, в Firefox, после HSTS обновления, событие onBeforeRedirect будет запущено сразу же после onBeforeRequest.

- -

Все события, кроме onErrorOccurred, могут принимать три аргумента в addListener():

- - - -

Функции - обработчику передаётся объект details который содержит информацию о запросе. Она содержит ID запроса, который обеспечен для включения надстройки, которая позволяет соотносить события, ассоциируемые с одним запросом. Это уникально в пределах сессии и контекста надстройки. Информация остаётся одинаковой везде на протяжении запроса, даже при перенаправлениях и обменах аутентификации.

- -

Для использования webRequest API для определённого хоста, расширение должно иметь "webRequest" API permission и host permission для этого хоста. Для использования возможности "блокирования" расширение должно также иметь "webRequestBlocking" API разрешение.

- -

Для перехвата ресурсов, загруженных страницей (таких как картинки, скрипты или таблицы стилей), расширение должно иметь разрешение хоста для ресурса также как и для главной страницы, запрашивающей ресурс. К примеру, если страница на "https://developer.mozilla.org" загружает картинку из "https://mdn.mozillademos.org", тогда расширение должно иметь разрешения обоих хостов чтобы перехватить запрос картинки.

- -

Модифицирование заголовков

- -

Используя некоторые из этих событий, вы можете модифицировать запрос. Конкретно, вы можете:

- - - -

Чтобы сделать это, вам необходимо передать опцию со значением "blocking" в аргументе extraInfoSpec к addListener(). Это делает обработчик синхронным. В обработчике, вы можете тогда возвратить объект {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}} который индикует модификацию, какую вам нужно сделать: например, модифицированный заголовок запроса который вы хотите отправить.

- -

Доступ к информации о безопасности

- -

В обработчике {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}} вы имеете доступ к TLS свойствам запроса через вызов {{WebExtAPIRef("webRequest.getSecurityInfo()", "getSecurityInfo()")}}. Чтобы сделать это, вы должны также передать "blocking" в extraInfoSpec аргументе к addListener() события.

- -

Вы можете прочитать детали TLS хэндшейка, но не можете модифицировать их или перезаписать решения доверы браузера.

- -

Modifying responses

- -

Для того, чтобы модифицировать тело HTTP ответа на запрос, вызовите {{WebExtAPIRef("webRequest.filterResponseData")}}, и передайте ID запроса. Это возвратит объект {{WebExtAPIRef("webRequest.StreamFilter")}} который вы сможете использовать чтобы исследовать и изменять данные когда они получены браузером.

- -

Чтобы сделать это, у вас должно быть "webRequestBlocking" API разрешение, а также "webRequest" API permission и host permission от соответствующего хоста.

- -

Types

- -
-
{{WebExtAPIRef("webRequest.BlockingResponse")}}
-
-

An object of this type is returned by event listeners that have set "blocking" in their extraInfoSpec argument. By setting particular properties in BlockingResponse, the listener can modify network requests.

-
-
{{WebExtAPIRef("webRequest.CertificateInfo")}}
-
An object describing a single X.509 certificate.
-
{{WebExtAPIRef("webRequest.HttpHeaders")}}
-
An array of HTTP headers. Each header is represented as an object with two properties: name and either value or binaryValue.
-
{{WebExtAPIRef("webRequest.RequestFilter")}}
-
An object describing filters to apply to webRequest events.
-
{{WebExtAPIRef("webRequest.ResourceType")}}
-
Represents a particular kind of resource fetched in a web request.
-
{{WebExtAPIRef("webRequest.SecurityInfo")}}
-
An object describing the security properties of a particular web request.
-
{{WebExtAPIRef("webRequest.StreamFilter")}}
-
An object that can be used to monitor and modify HTTP responses while they are being received.
-
{{WebExtAPIRef("webRequest.UploadData")}}
-
Contains data uploaded in a URL request.
-
- -

Properties

- -
-
{{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}}
-
The maximum number of times that handlerBehaviorChanged() can be called in a 10 minute period.
-
- -

Functions

- -
-
{{WebExtAPIRef("webRequest.handlerBehaviorChanged()")}}
-
This function can be used to ensure that event listeners are applied correctly when pages are in the browser's in-memory cache.
-
{{WebExtAPIRef("webRequest.filterResponseData()")}}
-
Returns a {{WebExtAPIRef("webRequest.StreamFilter")}} object for a given request.
-
{{WebExtAPIRef("webRequest.getSecurityInfo()")}}
-
Gets detailed information about the TLS connection associated with a given request.
-
- -

Events

- -
-
{{WebExtAPIRef("webRequest.onBeforeRequest")}}
-
Fired when a request is about to be made, and before headers are available. This is a good place to listen if you want to cancel or redirect the request.
-
{{WebExtAPIRef("webRequest.onBeforeSendHeaders")}}
-
Fired before sending any HTTP data, but after HTTP headers are available. This is a good place to listen if you want to modify HTTP request headers.
-
{{WebExtAPIRef("webRequest.onSendHeaders")}}
-
Fired just before sending headers. If your add-on or some other add-on modified headers in {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}, you'll see the modified version here.
-
{{WebExtAPIRef("webRequest.onHeadersReceived")}}
-
Fired when the HTTP response headers associated with a request have been received. You can use this event to modify HTTP response headers.
-
{{WebExtAPIRef("webRequest.onAuthRequired")}}
-
Fired when the server asks the client to provide authentication credentials. The listener can do nothing, cancel the request, or supply authentication credentials.
-
{{WebExtAPIRef("webRequest.onResponseStarted")}}
-
Fired when the first byte of the response body is received. For HTTP requests, this means that the status line and response headers are available.
-
{{WebExtAPIRef("webRequest.onBeforeRedirect")}}
-
Fired when a server-initiated redirect is about to occur.
-
{{WebExtAPIRef("webRequest.onCompleted")}}
-
Fired when a request is completed.
-
{{WebExtAPIRef("webRequest.onErrorOccurred")}}
-
Fired when an error occurs.
-
- -

Browser compatibility

- -

{{Compat}}

- -

Extra notes on Chrome incompatibilities.

- -

{{WebExtExamples("h2")}}

- -
Acknowledgements - -

This API is based on Chromium's chrome.webRequest API. This documentation is derived from web_request.json in the Chromium code.

- -

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

-
- - diff --git a/files/ru/mozilla/add-ons/webextensions/api/windows/createtype/index.md b/files/ru/mozilla/add-ons/webextensions/api/windows/createtype/index.md index 92a19a6ae01f40..2c0c9cd5f85321 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/windows/createtype/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/windows/createtype/index.md @@ -3,38 +3,28 @@ title: windows.CreateType slug: Mozilla/Add-ons/WebExtensions/API/windows/CreateType translation_of: Mozilla/Add-ons/WebExtensions/API/windows/CreateType --- -
{{AddonSidebar()}}
+{{AddonSidebar()}} -

Определение типа окна браузера для создания.

+Определение типа окна браузера для создания. -

Тип

+## Тип -

Значение данного типа strings. Возможные значения:

+Значение данного типа `strings`. Возможные значения: - +- `"normal"` +- `"popup"` +- `"panel"` +- `"detached_panel"` -

Совместимость с браузерами

+## Совместимость с браузерами +{{Compat}} +{{WebExtExamples}} -

{{Compat}}

+> **Примечание:** **Acknowledgements**This API is based on Chromium's [`chrome.windows`](https://developer.chrome.com/extensions/windows#type-CreateType) API. This documentation is derived from [`windows.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json) in the Chromium code.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License. -

{{WebExtExamples}}

- -
Acknowledgements - -

This API is based on Chromium's chrome.windows API. This documentation is derived from windows.json in the Chromium code.

- -

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

-
- - diff --git a/files/ru/mozilla/add-ons/webextensions/api/windows/index.md b/files/ru/mozilla/add-ons/webextensions/api/windows/index.md index 7e0e9296878c72..6c63f200b2aab8 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/windows/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/windows/index.md @@ -3,79 +3,63 @@ title: windows slug: Mozilla/Add-ons/WebExtensions/API/windows translation_of: Mozilla/Add-ons/WebExtensions/API/windows --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

Взаимодействие с окнами браузера. Вы можете использовать этот API, чтобы получить информацию об открытых окнах, а также открывать, изменять и закрывать окна. Вы также можете обрабатывать события открытия, закрытия окна, и активировать события.

+Взаимодействие с окнами браузера. Вы можете использовать этот API, чтобы получить информацию об открытых окнах, а также открывать, изменять и закрывать окна. Вы также можете обрабатывать события открытия, закрытия окна, и активировать события. -

Types

+## Types -
-
{{WebExtAPIRef("windows.WindowType")}}
-
Тип окна браузера.
-
{{WebExtAPIRef("windows.WindowState")}}
-
Состояние окна браузера.
-
{{WebExtAPIRef("windows.Window")}}
-
Информация об окне браузера.
-
{{WebExtAPIRef("windows.CreateType")}}
-
Specifies the type of browser window to create.
-
+- {{WebExtAPIRef("windows.WindowType")}} + - : Тип окна браузера. +- {{WebExtAPIRef("windows.WindowState")}} + - : Состояние окна браузера. +- {{WebExtAPIRef("windows.Window")}} + - : Информация об окне браузера. +- {{WebExtAPIRef("windows.CreateType")}} + - : Specifies the type of browser window to create. -

Properties

+## Properties -
-
{{WebExtAPIRef("windows.WINDOW_ID_NONE")}}
-
The windowId value that represents the absence of a browser window.
-
{{WebExtAPIRef("windows.WINDOW_ID_CURRENT")}}
-
The windowId value that represents the current window.
-
+- {{WebExtAPIRef("windows.WINDOW_ID_NONE")}} + - : The `windowId` value that represents the absence of a browser window. +- {{WebExtAPIRef("windows.WINDOW_ID_CURRENT")}} + - : The `windowId` value that represents the current window. -

Functions

+## Functions -
-
{{WebExtAPIRef("windows.get()")}}
-
Gets details about a window, given its ID.
-
{{WebExtAPIRef("windows.getCurrent()")}}
-
Gets the current window.
-
{{WebExtAPIRef("windows.getLastFocused()")}}
-
Gets the window that was most recently focused — typically the window 'on top'.
-
{{WebExtAPIRef("windows.getAll()")}}
-
Gets all windows.
-
{{WebExtAPIRef("windows.create()")}}
-
-

Creates a new window.

-
-
{{WebExtAPIRef("windows.update()")}}
-
Updates the properties of a window. Use this to move, resize, and (un)focus a window, etc.
-
{{WebExtAPIRef("windows.remove()")}}
-
Closes a window, and all its tabs.
-
+- {{WebExtAPIRef("windows.get()")}} + - : Gets details about a window, given its ID. +- {{WebExtAPIRef("windows.getCurrent()")}} + - : Gets the current window. +- {{WebExtAPIRef("windows.getLastFocused()")}} + - : Gets the window that was most recently focused — typically the window 'on top'. +- {{WebExtAPIRef("windows.getAll()")}} + - : Gets all windows. +- {{WebExtAPIRef("windows.create()")}} + - : Creates a new window. +- {{WebExtAPIRef("windows.update()")}} + - : Updates the properties of a window. Use this to move, resize, and (un)focus a window, etc. +- {{WebExtAPIRef("windows.remove()")}} + - : Closes a window, and all its tabs. -

Events

+## Events -
-
{{WebExtAPIRef("windows.onCreated")}}
-
Fired when a window is created.
-
{{WebExtAPIRef("windows.onRemoved")}}
-
Fired when a window is closed.
-
{{WebExtAPIRef("windows.onFocusChanged")}}
-
Fired when the currently focused window changes.
-
+- {{WebExtAPIRef("windows.onCreated")}} + - : Fired when a window is created. +- {{WebExtAPIRef("windows.onRemoved")}} + - : Fired when a window is closed. +- {{WebExtAPIRef("windows.onFocusChanged")}} + - : Fired when the currently focused window changes. -

Browser compatibility

+## Browser compatibility -

{{Compat}}

+{{Compat}} -

{{WebExtExamples("h2")}}

+{{WebExtExamples("h2")}} -
Acknowledgements +> **Примечание:** **Acknowledgements**This API is based on Chromium's [`chrome.windows`](https://developer.chrome.com/extensions/windows) API. This documentation is derived from [`windows.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json) in the Chromium code.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License. -

This API is based on Chromium's chrome.windows API. This documentation is derived from windows.json in the Chromium code.

- -

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

-
- - diff --git a/files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md b/files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md index a2164d3574ad28..aaa25e7295c018 100644 --- a/files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md +++ b/files/ru/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md @@ -3,329 +3,262 @@ title: Chrome incompatibilities slug: Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities translation_of: Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

Веб расширения разработаны с поддержкой совместимости с расширениями Chrome и Оперы на сколько это возможно. Расширения, написанные для этих браузеров, должны работать в Firefox с минимальными изменениями.

+Веб расширения разработаны с поддержкой совместимости с расширениями Chrome и Оперы на сколько это возможно. Расширения, написанные для этих браузеров, должны работать в Firefox с минимальными изменениями. -

Всё же, Firefox на данный момент имеет поддержку только для ограниченного набора функций и API, поддержуемых в Chrome и Опере. Мы работаем над добавлением большей поддержки, но много функций пока ещё не поддерживаются и некоторые из них никогда не будут поддерживаться.

+Всё же, Firefox на данный момент имеет поддержку только для ограниченного набора функций и API, поддержуемых в Chrome и Опере. Мы работаем над добавлением большей поддержки, но много функций пока ещё не поддерживаются и некоторые из них никогда не будут поддерживаться. -

Эта статья перечисляет все функции и API, которые полностью поддерживаются в Firefox Developer Edition (на данный момент Firefox 47). Там где функция поддерживается частично, мы указали на проблемные места.

+Эта статья перечисляет все функции и API, которые полностью поддерживаются в Firefox Developer Edition (на данный момент Firefox 47). Там где функция поддерживается частично, мы указали на проблемные места. -
-

You should assume that features and APIs not listed here at all are not yet supported.

-
+> **Примечание:** You should assume that features and APIs not listed here at all are not yet supported. -

manifest.json функция

+## manifest.json функция -

Полностью поддерживаемые ключи:

+### Полностью поддерживаемые ключи: - +- [`applications`](/en-US/Add-ons/WebExtensions/manifest.json/applications) +- [`browser_action`](/en-US/Add-ons/WebExtensions/manifest.json/browser_action) +- [`default_locale`](/en-US/Add-ons/WebExtensions/manifest.json/default_locale) +- [`description`](/en-US/Add-ons/WebExtensions/manifest.json/description) +- [`icons`](/en-US/Add-ons/WebExtensions/manifest.json/icons) +- [`manifest_version`](/en-US/Add-ons/WebExtensions/manifest.json/manifest_version) +- [`name`](/en-US/Add-ons/WebExtensions/manifest.json/name) +- [`page_action`](/en-US/Add-ons/WebExtensions/manifest.json/page_action) +- [`version`](/en-US/Add-ons/WebExtensions/manifest.json/version) +- [`web_accessible_resources`](/en-US/Add-ons/WebExtensions/manifest.json/web_accessible_resources) -

Частично поддерживаемые ключи:

+### Частично поддерживаемые ключи: -

background

+#### background -

Firefox не поддерживает "устойчивое" свойство. Фоновые скрипты остаются загруженными всё время.

+Firefox не поддерживает `"устойчивое"` свойство. Фоновые скрипты остаются загруженными всё время. -

commands

+#### commands -

Firefox не поддерживает:

+Firefox не поддерживает: - +- Media keys как сокращение +- `global` +- специальную команду `_execute_browser_action` -

content_scripts

+#### content_scripts -

Firefox не поддерживает:

+Firefox не поддерживает: - +- `match_about_blank` -

content_security_policy

+#### content_security_policy -

Firefox не поддерживает:

+Firefox не поддерживает: - +- "http\://127.0.0.1" or "http\://localhost" as script sources: they must be served over HTTPS. -

options_ui

+#### options_ui -

Firefox не поддерживает:

+Firefox не поддерживает: - +- `chrome_style` -

Using options_ui requires a valid value for the applications.gecko.id property.

+Using `options_ui` requires a valid value for the [applications.gecko.id](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications) property. -

permissions

- -

Firefox не поддерживает следующие разрешения:

- - - -

Obviously, it doesn't support permissions for APIs that are themselves not supported.

- -

incognito

- -

Firefox does not support the following incognito (private browsing) modes:

- - - -

JavaScript APIs

- -

Fully supported APIs

- - - -

Partially supported APIs

- -

bookmarks

- - - -

contextMenus

- - - -

downloads

- - - -

extension

- - - -

idle

- - - -

Additoinally, queryState() always returns "active" in Firefox, regardless of the current system idle state.

- -

notifications

- - - -

runtime

- - - -

storage

- - - -

tabs

- - - -

webNavigation

- - - -

webRequest

- - - -

windows

- - - -

Planned APIs

- -

We don't support the following APIs, but plan to, soon:

- - - -

This doesn't mean that these are the only additional APIs we will support, but that they are our current priorities.

- -

Miscellaneous incompatibilities

- -

Optional arguments

- -

URLs in CSS

- -

Firefox resolves URLs in injected CSS files relative to the CSS file itself, rather than to the page it's injected into.

- -

Additional incompatibilities

- -

Firefox does not support using alert() from background pages. Using alert(message) from a background page will cause the Browser Console to be opened and both a line stating "alert() is not supported in background windows; please use console.log instead." and the message will be output to the console.

+#### permissions + +Firefox не поддерживает следующие разрешения: + +- `background` +- `clipboardRead` +- `clipboardWrite` +- `geolocation` +- `unlimitedStorage` + +Obviously, it doesn't support permissions for APIs that are themselves not supported. + +#### incognito + +Firefox does not support the following incognito (private browsing) modes: + +- `split` + +## JavaScript APIs + +### Fully supported APIs + +- [alarms](/ru/docs/Mozilla/Add-ons/WebExtensions/API/alarms) +- [browserAction](/ru/docs/Mozilla/Add-ons/WebExtensions/API/browserAction) + + - Relative URLs passed to `setPopup()` are resolved relative to the caller document, rather than to the extension root + +- [commands](/ru/docs/Mozilla/Add-ons/WebExtensions/API/commands) +- [contextMenus](/ru/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus) +- [cookies](/ru/docs/Mozilla/Add-ons/WebExtensions/API/cookies) +- [i18n](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n) +- [pageAction](/ru/docs/Mozilla/Add-ons/WebExtensions/API/pageAction) + + - Relative URLs passed to `setPopup()` are resolved relative to the caller document, rather than to the extension root + +### Partially supported APIs + +#### bookmarks + +- Firefox does not support: + + - `import()` + - `export()` + - `onCreated` + - `onRemoved` + - `onChanged` + - `onMoved` + - `onChildrenReordered` + - `onImportBegan` + - `onImportEnded` + - `BookmarkTreeNodeUnmodifiable` + +- Firefox has special bookmarks like "Recently Bookmarked" or "Recently Visited" + +#### contextMenus + +- Firefox does not support: + + - the "browser_action" or "page_action" context types + +#### downloads + +- Firefox does not support: + + - `drag()` + - `acceptDanger()` + - `setShelfEnabled()` + - `onDeterminingFilename` + +- The `saveAs` option and values other than `"GET"` for the `method` option are not supported by `download()` + +#### extension + +- Firefox does not support: + + - `setUpdateUrlData()` + +- Additionally, the following deprecated properties will not be supported: + + - `onRequest` + - `onRequestExternal` + - `getExtensionTabs()` + - `sendRequest()` + +#### idle + +- Firefox does not support: + + - `onStateChanged` + - `setDetectionInterval()` + +Additoinally, `queryState()` always returns `"active"` in Firefox, regardless of the current system idle state. + +#### notifications + +- Firefox does not support: + + - `update()` + +- Firefox doesn't provide `byUser` data. + +#### runtime + +- Firefox does not support: + + - `getPackageDirectoryEntry()` + - `reload()` + - `requestUpdateCheck()` + - `restart()` + - `sendNativeMessage()` + - `onBrowserUpdateAvailable` + - `onConnectExternal` + - `onInstalled` + - `onMessageExternal` + - `onRestartRequired` + - `onStartup` + - `onSuspend` + - `onSuspendCanceled` + - `onUpdateAvailable` + +#### storage + +- Firefox does not support: + + - `managed` storage area + - `sync` storage area + - `getBytesInUse()`. + +#### tabs + +- Firefox treats `highlighted` and `active` as the same, since Firefox has no concept of selecting multiple tabs. +- In Firefox, you need the `tabs` [permission](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) if you want to include `url` in the `queryInfo` parameter to [`tabs.query()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query). +- In Firefox, relative URLs passed into `tabs.executeScript()` or `tabs.insertCSS()` are resolved relative to the current page URL. In Chrome, these URLs are resolved relative to the add-on's base URL. To work cross-browser, you can specify the path as an absolute URL, starting at the add-on's root, like this: + + ```html + /path/to/script.js + ``` + +- In Firefox, you can't open (using {{WebExtAPIRef("tabs.create")}}), or navigate to (using {{WebExtAPIRef("tabs.update")}}) privileged URLs: + + - chrome: URLs + - javascript: URLs + - data: URLs + - privileged about: URLs (for example, about:config, about:addons, about:debugging) + +- Additionally, the following deprecated properties will not be supported: + + - `sendRequest()` + - `getSelected()` + - `onActiveChanged` + - `onHighlightChanged` + - `onSelectionChanged` + +#### webNavigation + +- Firefox does not support: + + - `onCreatedNavigationTarget` + - `onTabReplaced` + +#### webRequest + +- Firefox does not support: + + - `onAuthRequired` + - filtering by `windowId` and `tabId` + - the `"requestBody"` instruction in `opt_extraInfoSpec` + +- In Firefox requests can be redirected only if their original URL uses the http or https scheme + +#### windows + +- Firefox does not support: + + - the `focused `option in `create()` + +- In Firefox `onFocusChanged` will trigger multiple times for a given focus change. + +### Planned APIs + +We don't support the following APIs, but plan to, soon: + +- [Devtools (mostly panels)](https://developer.chrome.com/extensions/devtools) +- [debugger](https://developer.chrome.com/extensions/debugger) +- [omnibox](https://developer.chrome.com/extensions/omnibox) +- [permissions](https://developer.chrome.com/extensions/permissions) + +This doesn't mean that these are the only additional APIs we will support, but that they are our current priorities. + +### Miscellaneous incompatibilities + +#### Optional arguments + +#### URLs in CSS + +Firefox resolves URLs in injected CSS files relative to the CSS file itself, rather than to the page it's injected into. + +#### Additional incompatibilities + +Firefox does not support using [alert()](/ru/docs/Web/API/Window/alert) from background pages. Using `alert(message)` from a background page will cause the [Browser Console](/ru/docs/Tools/Browser_Console) to be opened and both a line stating "alert() is not supported in background windows; please use console.log instead." and the `message` will be output to the console. diff --git a/files/ru/mozilla/add-ons/webextensions/content_scripts/index.md b/files/ru/mozilla/add-ons/webextensions/content_scripts/index.md index d75eaa69234135..b9c91dfc5ce17a 100644 --- a/files/ru/mozilla/add-ons/webextensions/content_scripts/index.md +++ b/files/ru/mozilla/add-ons/webextensions/content_scripts/index.md @@ -6,93 +6,86 @@ tags: - Расширение translation_of: Mozilla/Add-ons/WebExtensions/Content_scripts --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

Встраиваемый скрипт - это часть расширения, которая выполняется в контексте отдельной веб-страницы (в отличии от фоновых скриптов, выполняющихся в контексте целого браузера).

+Встраиваемый скрипт - это часть расширения, которая выполняется в контексте отдельной веб-страницы (в отличии от фоновых скриптов, выполняющихся в контексте целого браузера). -

Фоновые скрипты имеют доступ ко всем методам WebExtension JavaScript APIs, но они не имеют доступа к контенту отдельных веб-страниц. Так что если вашему расширению необходимо взаимодействие с контентом веб-страницы, вам нужен встраиваемый скрипт.

+[Фоновые скрипты](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#%D0%A4%D0%BE%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B) имеют доступ ко всем методам [WebExtension JavaScript APIs](/ru/docs/Mozilla/Add-ons/WebExtensions/API), но они не имеют доступа к контенту отдельных веб-страниц. Так что если вашему расширению необходимо взаимодействие с контентом веб-страницы, вам нужен встраиваемый скрипт. -

Точно так же, как скрипты загружаемые веб-страницами, встраиваемый скрипт может читать и изменять контент веб-страницы, используя DOM API.

+Точно так же, как скрипты загружаемые веб-страницами, встраиваемый скрипт может читать и изменять контент веб-страницы, используя DOM API. -

Встраиваемые скрипты имеют доступ только к небольшому подмножеству методов WebExtension API, но они могут взаимодействовать с фоновыми скриптами, используя систему передачи сообщений, таким образом опосредовано имея доступ ко всему WebExtension API.

+Встраиваемые скрипты имеют доступ только к [небольшому подмножеству методов WebExtension API](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5_%D1%81_%D1%84%D0%BE%D0%BD%D0%BE%D0%B2%D1%8B%D0%BC%D0%B8_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D0%BC%D0%B8), но они могут [взаимодействовать с фоновыми скриптами](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5_%D1%81_%D1%84%D0%BE%D0%BD%D0%BE%D0%B2%D1%8B%D0%BC%D0%B8_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D0%BC%D0%B8), используя систему передачи сообщений, таким образом опосредовано имея доступ ко всему WebExtension API. -
-

Обратите внимание, что встраивание скриптов блокируется на следующих доменах:

+> **Примечание:** Обратите внимание, что встраивание скриптов блокируется на следующих доменах: +> +> - accounts-static.cdn.mozilla.net +> - accounts.firefox.com +> - addons.cdn.mozilla.net +> - addons.mozilla.org +> - api.accounts.firefox.com +> - content.cdn.mozilla.net +> - content.cdn.mozilla.net +> - discovery.addons.mozilla.org +> - input.mozilla.org +> - install.mozilla.org +> - oauth.accounts.firefox.com +> - profile.accounts.firefox.com +> - support.mozilla.org +> - sync.services.mozilla.com +> - testpilot.firefox.com +> +> Если вы попытаетесь встроить скрипт на страницы, находящиеся на вышеперечисленных доменах, у вас ничего не выйдет, и веб-страница сделает запись о [CSP](/ru/docs/Web/HTTP/CSP) ошибке. +> +> По причине того, что список запрещённых доменов включает в себя addons.mozilla.org, пользователи, которые попытаются испытать ваше расширение прямо на странице загрузки, могут посчитать, что расширение не работает! В связи с этим вы могли бы предоставить им соответствующее предупреждение или [onboarding page](/ru/docs/Mozilla/Add-ons/WebExtensions/onboarding_upboarding_offboarding_best_practices) чтобы немедленно переадресовать их с addons.mozilla.org. -
    -
  • accounts-static.cdn.mozilla.net
  • -
  • accounts.firefox.com
  • -
  • addons.cdn.mozilla.net
  • -
  • addons.mozilla.org
  • -
  • api.accounts.firefox.com
  • -
  • content.cdn.mozilla.net
  • -
  • content.cdn.mozilla.net
  • -
  • discovery.addons.mozilla.org
  • -
  • input.mozilla.org
  • -
  • install.mozilla.org
  • -
  • oauth.accounts.firefox.com
  • -
  • profile.accounts.firefox.com
  • -
  • support.mozilla.org
  • -
  • sync.services.mozilla.com
  • -
  • testpilot.firefox.com
  • -
+> **Примечание:** Значения, определённые в глобальной области видимости встраиваемого скрипта с помощью `var foo` или `window.foo = "bar"` могут исчезать по причине бага [1408996](https://bugzilla.mozilla.org/show_bug.cgi?id=1408996). -

Если вы попытаетесь встроить скрипт на страницы, находящиеся на вышеперечисленных доменах, у вас ничего не выйдет, и веб-страница сделает запись о CSP ошибке.

+## Загрузка встраиваемого скрипта -

По причине того, что список запрещённых доменов включает в себя addons.mozilla.org, пользователи, которые попытаются испытать ваше расширение прямо на странице загрузки, могут посчитать, что расширение не работает! В связи с этим вы могли бы предоставить им соответствующее предупреждение или onboarding page чтобы немедленно переадресовать их с addons.mozilla.org.

-
+Загрузка встраиваемых скриптов на веб-страницу происходит следующими тремя способами: -
-

Значения, определённые в глобальной области видимости встраиваемого скрипта с помощью var foo или window.foo = "bar" могут исчезать по причине бага 1408996.

-
+1. **Автоматическая загрузка скрипта на страницах с определёнными URL, объявленными при установке:** используя [`content_scripts`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts) ключ в manifest.json, вы можете запросить браузер загружать встраиваемый скрипт каждый раз, когда браузер загружает веб-страницу, чей URL [совпадает с объявленными шаблонами](/ru/docs/Mozilla/Add-ons/WebExtensions/Match_patterns). +2. **Автоматическая загрузка скрипта на страницах с определёнными URL, объявленными в момент работы расширения:** используя {{WebExtAPIRef("contentScripts")}} API, вы можете запросить браузер загружать встраиваемый скрипт каждый раз, когда браузер загружает веб-страницу, чей URL [совпадает с объявленными шаблонами](/ru/docs/Mozilla/Add-ons/WebExtensions/Match_patterns). Это очень похоже на первый метод, но позволяет добавлять и удалять правила динамически во время работы расширения. +3. **Загрузка скрипта расширением в конкретную вкладку:** используя [`tabs.executeScript()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/Tabs/executeScript) API, вы можете загружать встраиваемые скрипты в определённые вкладки когда захотите: например, в ответ на нажатие пользователя на [browser action](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action). -

Загрузка встраиваемого скрипта

+Существует только одна глобальная область видимости _для одного фрейма, для одного расширения_. Это означает, что значения из одного встраиваемого скрипта могут быть доступны для другого встраиваемого скрипта, не зависимо от того, как встраиваемый скрипт был загружен на страницу. -

Загрузка встраиваемых скриптов на веб-страницу происходит следующими тремя способами:

+Используя методы (1) и (2), вы можете загружать скрипты на страницы, чьи URL могут быть представлены, используя [шаблон совпадения](/ru/docs/Mozilla/Add-ons/WebExtensions/Match_patterns). -
    -
  1. Автоматическая загрузка скрипта на страницах с определёнными URL, объявленными при установке: используя content_scripts ключ в manifest.json, вы можете запросить браузер загружать встраиваемый скрипт каждый раз, когда браузер загружает веб-страницу, чей URL совпадает с объявленными шаблонами.
  2. -
  3. Автоматическая загрузка скрипта на страницах с определёнными URL, объявленными в момент работы расширения: используя {{WebExtAPIRef("contentScripts")}} API, вы можете запросить браузер загружать встраиваемый скрипт каждый раз, когда браузер загружает веб-страницу, чей URL совпадает с объявленными шаблонами. Это очень похоже на первый метод, но позволяет добавлять и удалять правила динамически во время работы расширения.
  4. -
  5. Загрузка скрипта расширением в конкретную вкладку: используя tabs.executeScript() API, вы можете загружать встраиваемые скрипты в определённые вкладки когда захотите: например, в ответ на нажатие пользователя на browser action.
  6. -
+Используя метод (3), вы к тому же можете загружать скрипты на страницы вашего расширения, но вы не можете загружать скрипты на привилегированные страницы браузеры (например "about:debugging" или "about:addons"). -

Существует только одна глобальная область видимости для одного фрейма, для одного расширения. Это означает, что значения из одного встраиваемого скрипта могут быть доступны для другого встраиваемого скрипта, не зависимо от того, как встраиваемый скрипт был загружен на страницу.

+## Условия работы встраиваемого скрипта -

Используя методы (1) и (2), вы можете загружать скрипты на страницы, чьи URL могут быть представлены, используя шаблон совпадения.

+### Доступ к DOM -

Используя метод (3), вы к тому же можете загружать скрипты на страницы вашего расширения, но вы не можете загружать скрипты на привилегированные страницы браузеры (например "about:debugging" или "about:addons").

+Встраиваемые скрипты имеют доступ и могут изменять DOM на веб-странице, так же как и обычные скрипты. Так же они могут видеть любые изменения сделанные с DOM страничными скриптами. -

Условия работы встраиваемого скрипта

+При этом, встраиваемые скрипты имеют "чистое DOM представление". Это значит: -

Доступ к DOM

+- Встраиваемые скрипты не могут видеть JavaScript переменных, определённых страничными скриптами. +- Если страничный скрипт переназначит встроенное свойство DOM, встраиваемый скрипт всё равно будет видеть его изначальное значение, а не переназначенное. -

Встраиваемые скрипты имеют доступ и могут изменять DOM на веб-странице, так же как и обычные скрипты. Так же они могут видеть любые изменения сделанные с DOM страничными скриптами.

+В Firefox это поведение называется [Xray vision](/ru/docs/Mozilla/Tech/Xray_vision). -

При этом, встраиваемые скрипты имеют "чистое DOM представление". Это значит:

+Например, рассмотрите эту веб-страницу: - +```html + + + + + -

В Firefox это поведение называется Xray vision.

+ + + + +``` -

Например, рассмотрите эту веб-страницу:

+Скрипт "page-script.js" делает следующее: -
<!DOCTYPE html>
-<html>
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-  </head>
-
-  <body>
-    <script src="page-scripts/page-script.js"></script>
-  </body>
-</html>
- -

Скрипт "page-script.js" делает следующее:

- -
// page-script.js
+```js
+// page-script.js
 
 // добавляет новый элемент к DOM
 var p = document.createElement("p");
@@ -106,11 +99,13 @@ window.foo = "Эта глобальная переменная была доба
 // переопределяет встроенную window.confirm() функцию
 window.confirm = function() {
   alert("Страничный скрипт так же переопределил 'confirm'");
-}
+} +``` -

Теперь расширение загружает встраиваемый скрипт на страницу:

+Теперь расширение загружает встраиваемый скрипт на страницу: -
// content-script.js
+```js
+// content-script.js
 
 // получает доступ и изменяет DOM
 var pageScriptPara = document.getElementById("page-script-para");
@@ -120,117 +115,92 @@ pageScriptPara.style.backgroundColor = "blue";
 console.log(window.foo);  // undefined
 
 // видит изначальное значение свойства, переопределённого страничным скриптом
-window.confirm("Вы уверены?"); // вызывает оригинальный window.confirm()
+window.confirm("Вы уверены?"); // вызывает оригинальный window.confirm() +``` -

Те же самые правила применяются и наоборот: страничный скрипт не может видеть JavaScript свойств, добавленных встраиваемым скриптом.

+Те же самые правила применяются и наоборот: страничный скрипт не может видеть JavaScript свойств, добавленных встраиваемым скриптом. -

Это означает, что встраиваемый скрипт может полагаться на то, что DOM свойства всегда будут вести себя предсказуемо, и не беспокоиться о том, что его переменные будут иметь конфликт с переменными из страничного скрипта.

+Это означает, что встраиваемый скрипт может полагаться на то, что DOM свойства всегда будут вести себя предсказуемо, и не беспокоиться о том, что его переменные будут иметь конфликт с переменными из страничного скрипта. -

Одно из последствий такого поведения состоит в том, что встраиваемый скрипт не будет иметь доступ к JavaScript библиотекам, загруженным страничным скриптом. Например, если веб-страница загружает jQuery, встраиваемый скрипт не сможет увидеть эту библиотеку.

+Одно из последствий такого поведения состоит в том, что встраиваемый скрипт не будет иметь доступ к JavaScript библиотекам, загруженным страничным скриптом. Например, если веб-страница загружает jQuery, встраиваемый скрипт не сможет увидеть эту библиотеку. -

Если встраиваемому скрипту необходимо использовать какую-либо JavaScript библиотеку, тогда эта библиотека должна быть загружена, тем же способом, как и встраиваемый скрипт вместе с ним:

+Если встраиваемому скрипту необходимо использовать какую-либо JavaScript библиотеку, тогда эта библиотека должна быть загружена, тем же способом, как и встраиваемый скрипт вместе с ним: -
"content_scripts": [
+```json
+"content_scripts": [
   {
     "matches": ["*://*.mozilla.org/*"],
     "js": ["jquery.js", "content-script.js"]
   }
-]
+] +``` -
-

Примечание: Firefox предоставляет некоторое API, позволяющее встраиваемому скрипту иметь доступ к JavaScript объектам, созданным страничным скриптом, и предоставлять свои собственные JavaScript объекты страничному скрипту.

+> **Примечание:** Firefox предоставляет некоторое API, позволяющее встраиваемому скрипту иметь доступ к JavaScript объектам, созданным страничным скриптом, и предоставлять свои собственные JavaScript объекты страничному скрипту. +> +> Смотрите [совместное использование объектов со страничным скриптом](/ru/docs/Mozilla/Add-ons/WebExtensions/Sharing_objects_with_page_scripts) для получения дополнительной информации. -

Смотрите совместное использование объектов со страничным скриптом для получения дополнительной информации.

-
+### Доступные WebExtension API -

Доступные WebExtension API

+В дополнение стандартному DOM API, встраиваемый скрипт может использовать следующие методы WebExtension APIs: -

В дополнение стандартному DOM API, встраиваемый скрипт может использовать следующие методы WebExtension APIs:

+Из [`extension`](/ru/Add-ons/WebExtensions/API/extension): -

Из extension:

+- [`getURL()`]() +- [`inIncognitoContext`](/ru/Add-ons/WebExtensions/API/extension#inIncognitoContext) - +Из [`runtime`](/ru/Add-ons/WebExtensions/API/runtime): -

Из runtime:

+- [`connect()`]() +- [`getManifest()`]() +- [`getURL()`]() +- [`onConnect`](/ru/Add-ons/WebExtensions/API/runtime#onConnect) +- [`onMessage`](/ru/Add-ons/WebExtensions/API/runtime#onMessage) +- [`sendMessage()`]() - +Из [`i18n`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n): -

Из i18n:

+- [`getMessage()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n/getMessage) +- [`getAcceptLanguages()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n/getAcceptLanguages) +- [`getUILanguage()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n/getUILanguage) +- [`detectLanguage()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n/detectLanguage) - +Из [`menus`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/menus): -

Из menus:

+- [`getTargetElement`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/menus/getTargetElement) - +Ко всему из [`storage`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/storage). -

Ко всему из storage.

+### Работа с XHR и Fetch -

Работа с XHR и Fetch

+Встраиваемые скрипты могут делать запросы используя [`window.XMLHttpRequest`](/ru/docs/Web/API/XMLHttpRequest) и [`window.fetch()`](/ru/docs/Web/API/Fetch_API) API. -

Встраиваемые скрипты могут делать запросы используя window.XMLHttpRequest и window.fetch() API.

+> **Примечание:** В Firefox, запросы, совершаемые из встраиваемого скрипта (например, используя [fetch()](/ru/docs/Web/API/Fetch_API/Using_Fetch)) происходят в контексте расширения, так что вам необходимо предоставлять полный URL для доступа к контенту страниц. В Chrome, эти запросы совершаются в контексте страницы, так что URL может быть относительным, например `/api` будет трансформирован в `https://[current page URL]/api`. -
-

В Firefox, запросы, совершаемые из встраиваемого скрипта (например, используя fetch()) происходят в контексте расширения, так что вам необходимо предоставлять полный URL для доступа к контенту страниц. В Chrome, эти запросы совершаются в контексте страницы, так что URL может быть относительным, например /api будет трансформирован в https://[current page URL]/api.

-
+Встраиваемый скрипт имеет точно такие же кросс-доменные привилегии, как и всё остальное расширение: так что если расширение запросило кросс-доменный доступ на какой-либо домен используя [`permissions`](/ru/Add-ons/WebExtensions/manifest.json/permissions) ключ в manifest.json, тогда его встраиваемый скрипт тоже будет иметь доступ к этому домену. -

Встраиваемый скрипт имеет точно такие же кросс-доменные привилегии, как и всё остальное расширение: так что если расширение запросило кросс-доменный доступ на какой-либо домен используя permissions ключ в manifest.json, тогда его встраиваемый скрипт тоже будет иметь доступ к этому домену.

+Это достигается, предоставляя встраиваемому скрипту более привилегированные XHR and fetch объекты. Что имеет побочный эффект, связанный с отсутствием [`Origin`](/ru/docs/Web/HTTP/Headers/Origin) и [`Referer`](/ru/docs/Web/HTTP/Headers/Referer) заголовков, которые имел бы запрос, выполняемый из страничного скрипта. Зачастую это предпочитаемо, для того чтобы предотвратить раскрытие кросс-доменной натуры запроса. Начиная с версии 58 и дальше, расширения, которым необходимо выполнять запросы, которые должны выглядеть будто они отправлены встраиваемым скриптом, могут использовать `content.XMLHttpRequest` и `content.fetch()`. Кросс-браузерные расширения должны проверять присутствие этих методов. -

Это достигается, предоставляя встраиваемому скрипту более привилегированные XHR and fetch объекты. Что имеет побочный эффект, связанный с отсутствием Origin и Referer заголовков, которые имел бы запрос, выполняемый из страничного скрипта. Зачастую это предпочитаемо, для того чтобы предотвратить раскрытие кросс-доменной натуры запроса. Начиная с версии 58 и дальше, расширения, которым необходимо выполнять запросы, которые должны выглядеть будто они отправлены встраиваемым скриптом, могут использовать content.XMLHttpRequest и content.fetch(). Кросс-браузерные расширения должны проверять присутствие этих методов.

+## Взаимодействие с фоновыми скриптами -

Взаимодействие с фоновыми скриптами

+Хотя встраиваемые скрипты не могут напрямую использовать большинство методов из WebExtension APIs, они могут взаимодействовать с фоновыми скриптами расширения, используя систему сообщений, и таким образом могут опосредованно иметь доступ к тем же самым API, что и фоновые скрипты. -

Хотя встраиваемые скрипты не могут напрямую использовать большинство методов из WebExtension APIs, они могут взаимодействовать с фоновыми скриптами расширения, используя систему сообщений, и таким образом могут опосредованно иметь доступ к тем же самым API, что и фоновые скрипты.

+Существует два способа общения между фоновым и встраиваемым скриптами: вы можете посылать одиночные сообщения, ожидая необязательного ответа, или вы можете установить долгосрочное соединение на двух сторонах и использовать это соединение для обмена сообщениями. -

Существует два способа общения между фоновым и встраиваемым скриптами: вы можете посылать одиночные сообщения, ожидая необязательного ответа, или вы можете установить долгосрочное соединение на двух сторонах и использовать это соединение для обмена сообщениями.

+### Одиночные сообщения -

Одиночные сообщения

+Для отправки одиночного сообщения и ожидания необязательного ответа, вы можете использовать следующее API: -

Для отправки одиночного сообщения и ожидания необязательного ответа, вы можете использовать следующее API:

+| | Во встраиваемом скрипте | В фоновом скрипте | +| ------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| Отправка сообщения | [`browser.runtime.sendMessage()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage) | [`browser.tabs.sendMessage()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/Tabs/sendMessage) | +| Получение сообщения | [`browser.runtime.onMessage`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) | [`browser.runtime.onMessage`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) | - - - - - - - - - - - - - - - - - - - - -
Во встраиваемом скриптеВ фоновом скрипте
Отправка сообщенияbrowser.runtime.sendMessage()browser.tabs.sendMessage()
Получение сообщенияbrowser.runtime.onMessagebrowser.runtime.onMessage
+Например, представьте встраиваемый скрипт, который обрабатывает нажатие левой кнопки мыши на веб-странице. -

Например, представьте встраиваемый скрипт, который обрабатывает нажатие левой кнопки мыши на веб-странице.

+Если нажатие было произведено по ссылке, встраиваемый скрипт отправляет сообщение фоновому скрипту со значение URL в ссылке: -

Если нажатие было произведено по ссылке, встраиваемый скрипт отправляет сообщение фоновому скрипту со значение URL в ссылке:

- -
// content-script.js
+```js
+// content-script.js
 
 window.addEventListener("click", notifyExtension);
 
@@ -239,11 +209,13 @@ function notifyExtension(e) {
     return;
   }
   browser.runtime.sendMessage({"url": e.target.href});
-}
+} +``` -

Фоновый скрипт ожидает эти сообщения и, при их получении, отображает уведомления, используя notifications API:

+Фоновый скрипт ожидает эти сообщения и, при их получении, отображает уведомления, используя [`notifications`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/notifications) API: -
// background-script.js
+```js
+// background-script.js
 
 browser.runtime.onMessage.addListener(notify);
 
@@ -255,51 +227,42 @@ function notify(message) {
     "message": message.url
   });
 }
-
+``` -

(Этот пример кода частично взят из notify-link-clicks-i18n примера на GitHub.)

+(Этот пример кода частично взят из [notify-link-clicks-i18n](https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n) примера на GitHub.) -

Обмен сообщениями через постоянное соединение

+### Обмен сообщениями через постоянное соединение -

Отправка одиночных сообщений может стать довольно обременительной, если вы пересылаете много сообщений между встраиваемым и фоновым скриптами. Альтернативное решение в этой ситуации будет установить постоянное соединение между двумя скриптами, и использовать его для обмена сообщениями.

+Отправка одиночных сообщений может стать довольно обременительной, если вы пересылаете много сообщений между встраиваемым и фоновым скриптами. Альтернативное решение в этой ситуации будет установить постоянное соединение между двумя скриптами, и использовать его для обмена сообщениями. -

Каждая из сторон имеет runtime.Port объект, который они могут использовать для обмена сообщениями.

+Каждая из сторон имеет [`runtime.Port`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port) объект, который они могут использовать для обмена сообщениями. -

Для создания постоянного соединения:

+Для создания постоянного соединения: - +- Одна из сторон должна ждать соединений, используя [`runtime.onConnect`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onConnect) +- Другая сторона должна вызвать: -

Результатом вызова этих методов будет возвращение runtime.Port объекта.

+ - [`tabs.connect()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/tabs/connect) (при соединении со встраиваемым скриптом); или + - [`runtime.connect()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/runtime/connect) (при соединении с фоновым скриптом). - +Результатом вызова этих методов будет возвращение [`runtime.Port`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port) объекта. -

Как только обе стороны имеют порт, они могут:

+- [`runtime.onConnect`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onConnect) методу передаётся аргумент, являющийся собственным портом этого скрипта, [`runtime.Port`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port) объект. - +Как только обе стороны имеют порт, они могут: -

Например, сразу после загрузки, нижерасположенный встраиваемый скрипт:

+- отправлять сообщения, используя `runtime.Port.postMessage()`, и +- получать сообщения используя `runtime.Port.onMessage()` - +Например, сразу после загрузки, нижерасположенный встраиваемый скрипт: -
// content-script.js
+- Соединяется с фоновым скриптом
+- Сохраняет `Port` в переменную `myPort`
+- Начинает ожидать и записывать сообщения приходящие на `myPort`
+- Использует `myPort` для отправки сообщений на фоновый скрипт, когда пользователь нажимает левую кнопку мыши на документе
+
+```js
+// content-script.js
 
 var myPort = browser.runtime.connect({name:"port-from-cs"});
 myPort.postMessage({greeting: "Привет из встраиваемого скрипта"});
@@ -311,23 +274,22 @@ myPort.onMessage.addListener(function(m) {
 
 document.body.addEventListener("click", function() {
   myPort.postMessage({greeting: "Они кликнули по странице!"});
-});
+}); +``` -

Соответствующий фоновый скрипт:

+Соответствующий фоновый скрипт: - +- Ожидает попытки соединения от встраиваемого скрипта +- Когда он получает эту попытку соединения: -
// background-script.js
+  - сохраняет свой порт в переменную `portFromCS`
+  - отправляет сообщение встроенному скрипту, используя этот порт
+  - начинает ожидать сообщений, приходящих на порт, и записывать их
+
+- Отправляет сообщения на встраиваемый скрипт, используя `portFromCS`, когда пользователь нажимает кнопку расширения в браузере
+
+```js
+// background-script.js
 
 var portFromCS;
 
@@ -345,16 +307,14 @@ browser.runtime.onConnect.addListener(connected);
 browser.browserAction.onClicked.addListener(function() {
   portFromCS.postMessage({greeting: "Они нажали кнопку!"});
 });
-
+``` -

Несколько встраиваемых скриптов

+#### Несколько встраиваемых скриптов -

Если вы имеете несколько встраиваемых скриптов, с которыми вы обращаетесь в одно и то же время, вы бы могли сохранять каждое соединение в массиве.

+Если вы имеете несколько встраиваемых скриптов, с которыми вы обращаетесь в одно и то же время, вы бы могли сохранять каждое соединение в массиве. - - -
// background-script.js
+```js
+// background-script.js
 
 var ports = []
 
@@ -366,22 +326,20 @@ function connected(p) {
 browser.runtime.onConnect.addListener(connected)
 
 browser.browserAction.onClicked.addListener(function() {
-  ports.forEach(p => {
+  ports.forEach(p => {
         p.postMessage({greeting: "Они нажали на кнопку!"})
     })
 });
-
- - +``` -

Взаимодействие с веб-страницей

+## Взаимодействие с веб-страницей -

Хотя по умолчанию встраиваемые скрипты не имеют доступ к объектам, которые созданы страничными скриптами, они могут взаимодействовать со страничными скриптами, используя window.postMessage и window.addEventListener API.

+Хотя по умолчанию встраиваемые скрипты не имеют доступ к объектам, которые созданы страничными скриптами, они могут взаимодействовать со страничными скриптами, используя [`window.postMessage`](/ru/docs/Web/API/Window/postMessage) и [`window.addEventListener`](/ru/docs/Web/API/EventTarget/addEventListener) API. -

Например:

+Например: -
// page-script.js
+```js
+// page-script.js
 
 var messenger = document.getElementById("from-page-script");
 
@@ -391,52 +349,54 @@ function messageContentScript() {
   window.postMessage({
     direction: "from-page-script",
     message: "Сообщение со страницы"
-  }, "*");
+ }, "*"); +``` -
// content-script.js
+```js
+// content-script.js
 
 window.addEventListener("message", function(event) {
-  if (event.source == window &&
-      event.data &&
+  if (event.source == window &&
+      event.data &&
       event.data.direction == "from-page-script") {
     alert("Встраиваемый скрипт получил сообщение: \"" + event.data.message + "\"");
   }
-});
- -

Для просмотра законченного и полностью рабочего примера, посетите эту страницу на GitHub и следуйте инструкциям.

- -
-

Заметьте, при взаимодействии с непроверенными страницами этим способом, вам нужно быть очень осторожными . Расширения имеют возможность запускать привилегированный код, который может обладать серьёзными возможностями, и вредоносные веб-страницы легко могут обмануть ваше расширение, ради доступа к этим возможностям.

- -

Как простейший пример, представим встраиваемый скрипт, который получает сообщение от веб-страницы и делает что-то вроде этого:

- -
// content-script.js
+});
+```
 
-window.addEventListener("message", function(event) {
-  if (event.source == window &&
-      event.data.direction &&
-      event.data.direction == "from-page-script") {
-    eval(event.data.message);
-  }
-});
+Для просмотра законченного и полностью рабочего примера, [посетите эту страницу на GitHub](https://mdn.github.io/webextensions-examples/content-script-page-script-messaging.html) и следуйте инструкциям. -

Теперь страничный скрипт может запускать любой код со всеми привилегиями встраиваемого скрипта.

-
+> **Предупреждение:** Заметьте, при взаимодействии с непроверенными страницами этим способом, вам нужно быть очень осторожными . Расширения имеют возможность запускать привилегированный код, который может обладать серьёзными возможностями, и вредоносные веб-страницы легко могут обмануть ваше расширение, ради доступа к этим возможностям. +> +> Как простейший пример, представим встраиваемый скрипт, который получает сообщение от веб-страницы и делает что-то вроде этого: +> +> ```js +> // content-script.js +> +> window.addEventListener("message", function(event) { +> if (event.source == window && +> event.data.direction && +> event.data.direction == "from-page-script") { +> eval(event.data.message); +> } +> }); +> ``` +> +> Теперь страничный скрипт может запускать любой код со всеми привилегиями встраиваемого скрипта. -

Использование eval() во встраиваемых скриптах

+## Использование `eval()` во встраиваемых скриптах -

В Chrome, eval() всегда выполняет код в контексте встраиваемого скрипта, а не в контексте веб-страницы.

+В Chrome, [`eval()`](/ru/docs/Web/JavaScript/Reference/Global_Objects/eval) всегда выполняет код в контексте встраиваемого скрипта, а не в контексте веб-страницы. -

В Firefox:

+В Firefox: - +- Если вы вызываете `eval()`, код выполняется в контексте **встраиваемого скрипта**. +- Если вы вызываете `window.eval()`, код выполняется в контексте **страничного скрипта**. -

Например, рассмотрите этот встраиваемый скрипт:

+Например, рассмотрите этот встраиваемый скрипт: -
// content-script.js
+```js
+// content-script.js
 
 window.eval('window.x = 1;');
 eval('window.y = 2');
@@ -446,50 +406,56 @@ console.log(`Во встраиваемом скрипте, window.y: ${window.y}
 
 window.postMessage({
   message: "check"
-}, "*");
+}, "*"); +``` -

Этот код создаёт переменные x and y, используя window.eval() и eval(), затем записывает их значения, и отправляет сообщение на веб-страницу.

+Этот код создаёт переменные `x` and `y`, используя `window.eval()` и `eval()`, затем записывает их значения, и отправляет сообщение на веб-страницу. -

Получая сообщение, страничный скрипт записывает те же самые переменные:

+Получая сообщение, страничный скрипт записывает те же самые переменные: -
window.addEventListener("message", function(event) {
-  if (event.source === window && event.data && event.data.message === "check") {
+```js
+window.addEventListener("message", function(event) {
+  if (event.source === window && event.data && event.data.message === "check") {
     console.log(`In page script, window.x: ${window.x}`);
     console.log(`In page script, window.y: ${window.y}`);
   }
-});
+}); +``` -

В Chrome, в консоли будут записаны следующие строки:

+В Chrome, в консоли будут записаны следующие строки: -
In content script, window.x: 1
+```
+In content script, window.x: 1
 In content script, window.y: 2
 In page script, window.x: undefined
-In page script, window.y: undefined
+In page script, window.y: undefined +``` -

В Firefox, будут записаны следующие строки:

+В Firefox, будут записаны следующие строки: -
In content script, window.x: undefined
+```
+In content script, window.x: undefined
 In content script, window.y: 2
 In page script, window.x: 1
-In page script, window.y: undefined
- -

Те же правила применимы к setTimeout(), setInterval(), и Function().

- -
-

Будьте очень осторожны, запуская код в контексте страничного скрипта. Окружение страничного скрипта может контролироваться потенциально зловредным веб-страницей, которая может переопределить объекты, с которыми вы взаимодействуете, так что их поведение станет совершенно непредсказуемым:

- -
// page.js переопределяет console.log
-
-var original = console.log;
-
-console.log = function() {
-  original(true);
-}
-
- - -
// content-script.js вызывает переопределённую версию
-
-window.eval('console.log(false)');
-
-
+In page script, window.y: undefined +``` + +Те же правила применимы к [`setTimeout()`](/ru/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout), [`setInterval()`](/ru/docs/Web/API/WindowOrWorkerGlobalScope/setInterval), и [`Function()`](/ru/docs/Web/JavaScript/Reference/Global_Objects/Function). + +> **Предупреждение:** Будьте очень осторожны, запуская код в контексте страничного скрипта. Окружение страничного скрипта может контролироваться потенциально зловредным веб-страницей, которая может переопределить объекты, с которыми вы взаимодействуете, так что их поведение станет совершенно непредсказуемым: +> +> ```js +> // page.js переопределяет console.log +> +> var original = console.log; +> +> console.log = function() { +> original(true); +> } +> ``` +> +> ```js +> // content-script.js вызывает переопределённую версию +> +> window.eval('console.log(false)'); +> ``` diff --git a/files/ru/mozilla/add-ons/webextensions/content_security_policy/index.md b/files/ru/mozilla/add-ons/webextensions/content_security_policy/index.md index 3038ae5bcff3c8..a0024debccc4fb 100644 --- a/files/ru/mozilla/add-ons/webextensions/content_security_policy/index.md +++ b/files/ru/mozilla/add-ons/webextensions/content_security_policy/index.md @@ -7,105 +7,103 @@ tags: - Расширение translation_of: Mozilla/Add-ons/WebExtensions/Content_Security_Policy --- -
{{AddonSidebar}}
+{{AddonSidebar}} -
-

Политика защиты содержимого (англ. Content Security Policy) автоматически применяется ко всем расширениям, разработанным с использованием WebExtension API. Она ограничивает источники, из которых расширение может загружать <script> и <object> ресурсы, и препятствует потенциально опасным практикам, например использованию eval().

+Политика защиты содержимого (англ. Content Security Policy) автоматически применяется ко всем расширениям, разработанным с использованием WebExtension API. Она ограничивает источники, из которых расширение может загружать [\ - <!-- Include my popup's own script--> - <script src="popup.js"></script> - </body> + + + -</html> + +``` -

В сравнении с веб-сайтами, расширения имеют доступ к дополнительному привилегированному API, так что вероятность получения к нему доступа сторонним кодом - это очень большой риск. По этой причине:

+В сравнении с веб-сайтами, расширения имеют доступ к дополнительному привилегированному API, так что вероятность получения к нему доступа сторонним кодом - это очень большой риск. По этой причине: -
    -
  • довольно строгая политика по защите содержимого применяются изначально. Смотрите изначальные правила по защите содержимого.
  • -
  • авторы расширений могут изменять изначальную политику, используя content_security_policy ключ в manifest.json, но даже в этом случае существуют ограничения на возможные разрешения. Для дополнительной информации смотрите content_security_policy.
  • -
+- довольно строгая политика по защите содержимого применяются изначально. Смотрите [изначальные правила по защите содержимого](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy#%D0%98%D0%B7%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0_%D0%BF%D0%BE_%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B5_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D0%BE%D0%B3%D0%BE). +- авторы расширений могут изменять изначальную политику, используя `content_security_policy` ключ в manifest.json, но даже в этом случае существуют ограничения на возможные разрешения. Для дополнительной информации смотрите [`content_security_policy`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy). -

Изначальные правила по защите содержимого

+## Изначальные правила по защите содержимого -

Следующие правила по защите содержимого являются изначальными:

+Следующие правила по защите содержимого являются изначальными: -
"script-src 'self'; object-src 'self';"
+``` +"script-src 'self'; object-src 'self';" +``` -

Они применяются к любому расширению, которое самостоятельно не указывает свою политику защиты, используя content_security_policy ключ в manifest.json. Это имеет следующие последствия:

+Они применяются к любому расширению, которое самостоятельно не указывает свою политику защиты, используя [`content_security_policy`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy) ключ в manifest.json. Это имеет следующие последствия: - +- [Вы можете загружать только локальные к расширению \ +``` -

Она не будет загружать запрашиваемый ресурс, и вы не сможете найти ни один ожидаемый от ресурса объект. К этой ситуации существует два решения:

+Она не будет загружать запрашиваемый ресурс, и вы не сможете найти ни один ожидаемый от ресурса объект. К этой ситуации существует два решения: -
    -
  • -

    Скачать этот ресурс, упаковать его в ваше расширение и ссылаться к нему локально.

    -
  • -
  • -

    Использовать ключ content_security_policy в manifest.json, чтобы позволить загрузку контента из вышеупомянутого источника..

    -
  • -
+- Скачать этот ресурс, упаковать его в ваше расширение и ссылаться к нему локально. +- Использовать ключ [`content_security_policy`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy) в manifest.json, чтобы позволить загрузку контента из вышеупомянутого источника.. -

eval() и товарищи

+### eval() и товарищи -

Изначальная политика защиты содержимого не позволяет выполнять код из JavaScript строк. Это означает, что следующие примеры кода изначально запрещены:

+Изначальная политика защиты содержимого не позволяет выполнять код из JavaScript строк. Это означает, что следующие примеры кода изначально запрещены: -
eval("console.log('some output');");
+```js +eval("console.log('some output');"); +``` -
window.setTimeout("alert('Hello World!');", 500);
+```js +window.setTimeout("alert('Hello World!');", 500); +``` -
var f = new Function("console.log('foo');");
+```js +var f = new Function("console.log('foo');"); +``` -

Встраиваемый (inline) JavaScript

+### Встраиваемый (inline) JavaScript -

Изначальная политика защиты содержимого не позволяет выполнять JavaScript-код, встраиваемый в HTML теги. Это запрещает как выполнение JavaScript-кода вложенного прямо в <script> тег, так и выполнение вписанных в атрибут обработчиков событий, означая, что следующий код так же не будет работать:

+Изначальная политика защиты содержимого не позволяет выполнять JavaScript-код, встраиваемый в HTML теги. Это запрещает как выполнение JavaScript-кода вложенного прямо в ` +``` -
<div onclick="console.log('click')">Click me!</div>
+```html +
Click me!
+``` -

Вместо того, чтобы использовать код <body onload="main()"> для запуска вашего скрипта после загрузки страницы, поставьте обработчики событий на DOMContentLoaded или load.

+Вместо того, чтобы использовать код `` для запуска вашего скрипта после загрузки страницы, поставьте обработчики событий на [DOMContentLoaded](/ru/docs/Web/Events/DOMContentLoaded) или [load](/ru/docs/Web/Events/load). diff --git a/files/ru/mozilla/add-ons/webextensions/examples/index.md b/files/ru/mozilla/add-ons/webextensions/examples/index.md index 7d2696be805ad9..f913f8952b3d47 100644 --- a/files/ru/mozilla/add-ons/webextensions/examples/index.md +++ b/files/ru/mozilla/add-ons/webextensions/examples/index.md @@ -7,28 +7,22 @@ tags: - Интерфейс translation_of: Mozilla/Add-ons/WebExtensions/Examples --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

В целях иллюстрации разработки расширений, мы поддерживаем репозиторий простых демонстрационных расширений по адресу https://github.com/mdn/webextensions-examples. Данная статья описывает, как использовать эти примеры, и перечисляет их вместе с API Веб-расширений (WebExtensions API), которые они демонстрируют.

+В целях иллюстрации разработки расширений, мы поддерживаем репозиторий простых демонстрационных расширений по адресу . Данная статья описывает, как использовать эти примеры, и перечисляет их вместе с API Веб-расширений (WebExtensions API), которые они демонстрируют. -

Эти примеры работают в Firefox Nightly: большинство из них работает и в более ранних версиях Firefox, но, чтобы удостовериться, проверьте поле strict_min_version в файле manifest.json.

+Эти примеры работают в Firefox Nightly: большинство из них работает и в более ранних версиях Firefox, но, чтобы удостовериться, проверьте поле [strict_min_version](/en-US/Add-ons/WebExtensions/manifest.json/applications) в файле manifest.json. -
-

Некоторые примеры работают только на специальных доменах или страницах. Подробности о всех ограничениях представлены в файле readme каждого примера. По умолчанию ни один из примеров не работает в приватных окнах браузера, подробности смотрите в Extensions in Private Browsing.

-
+> **Предупреждение:** Некоторые примеры работают только на специальных доменах или страницах. Подробности о всех ограничениях представлены в файле readme каждого примера. По умолчанию ни один из примеров не работает в приватных окнах браузера, подробности смотрите в [Extensions in Private Browsing](https://support.mozilla.org/en-US/kb/extensions-private-browsing#w_enabling-or-disabling-extensions-in-private-windows). -

Если вы хотите попробовать эти примеры, клонируйте репозиторий, а после этого совершите одно из следующих действий:

+Если вы хотите попробовать эти примеры, клонируйте репозиторий, а после этого совершите одно из следующих действий: -
    -
  1. Загрузите расширение из папки с его исходниками, используя функцию браузера Load Temporary Add-on. Расширение останется загруженным до следующего перезапуска Firefox.
  2. -
  3. Откройте папку с исходниками расширения в командной строке и используйте команду web-ext, чтобы запустить расширение. Расширение останется загруженным до следующего перезапуска Firefox.
  4. -
  5. В браузере Firefox используйте Файл > Открыть файл и найдите расширение в папке build. Папка build содержит построенные и подписанные версии всех примеров. В результате пример установится надолго, как обычное расширение.
  6. -
+1. Загрузите расширение из папки с его исходниками, используя функцию браузера [Load Temporary Add-on](/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox). Расширение останется загруженным до следующего перезапуска Firefox. +2. Откройте папку с исходниками расширения в командной строке и используйте команду [`web-ext`](/en-US/Add-ons/WebExtensions/Getting_started_with_web-ext), чтобы запустить расширение. Расширение останется загруженным до следующего перезапуска Firefox. +3. В браузере Firefox используйте **Файл** > **Открыть файл** и найдите расширение в папке [`build`](https://github.com/mdn/webextensions-examples/tree/master/build). Папка `build` содержит построенные и подписанные версии всех примеров. В результате пример установится надолго, как обычное расширение. -
-

Важно: Пожалуйста, не публикуйте эти примеры Веб-расширений на addons.mozilla.org (AMO) - вам не нужно подписывать примеры Веб-расширений для того, чтобы их запустить. Просто следуйте шагам, описанным выше.

-
+> **Предупреждение:** **Важно**: Пожалуйста, не публикуйте эти примеры Веб-расширений на addons.mozilla.org (AMO) - вам не нужно подписывать примеры Веб-расширений для того, чтобы их запустить. Просто следуйте шагам, описанным выше. -

Если вы хотите сделать свой вклад в репозиторий, отправьте нам pull request!

+Если вы хотите сделать свой вклад в репозиторий, [отправьте нам pull request!](https://github.com/mdn/webextensions-examples/blob/master/CONTRIBUTING.md) -

{{WebExtAllExamples}}

+{{WebExtAllExamples}} diff --git a/files/ru/mozilla/add-ons/webextensions/index.md b/files/ru/mozilla/add-ons/webextensions/index.md index c25919686b483a..83317c0095636a 100644 --- a/files/ru/mozilla/add-ons/webextensions/index.md +++ b/files/ru/mozilla/add-ons/webextensions/index.md @@ -8,102 +8,82 @@ tags: - Расширения translation_of: Mozilla/Add-ons/WebExtensions --- -
{{AddonSidebar}}
- -

WebExtensions - это кросс-браузерная система разработки дополнений (для браузеров). В значительной степени эта система совместима с API-расширений, поддерживаемых Google Chrome и Opera. Расширения, написанные для этих браузеров, в большинстве случаев будут работать с Firefox или Microsoft Edge лишь с минимальными изменениями. Эти API также полностью совместимы с мультипоточным Firefox.

- -

Также мы намерены расширять API для поддержки нужд разработчиков дополнений, поэтому, если у вас есть идеи, то мы их с удовольствием выслушаем. Вы можете связаться с нами через dev-addons mailing list или #webextensions на IRC.

- -
-
-

Приступая к работе

- - - -

How to

- - - -

Интерфейс пользователя

- - - -

Основные понятия

- - - -

Адаптация

- - - -

Рабочий процесс (workflow) Firefox

- - -
- -
-

Справочники

- - - -

JavaScript APIs

- -
{{ ListSubpages ("/ru/Add-ons/WebExtensions/API") }}
- -

Manifest keys

- -
{{ ListSubpages ("/ru/Add-ons/WebExtensions/manifest.json") }}
-
-
+{{AddonSidebar}} + +WebExtensions - это кросс-браузерная система разработки дополнений (для браузеров). В значительной степени эта система совместима с [API-расширений](https://developer.chrome.com/extensions), поддерживаемых Google Chrome и Opera. Расширения, написанные для этих браузеров, в большинстве случаев будут работать с Firefox или [Microsoft Edge](https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/extensions/) [лишь с минимальными изменениями](/ru/Add-ons/WebExtensions/Porting_from_Google_Chrome). Эти API также полностью совместимы с [мультипоточным Firefox](/ru/Firefox/Multiprocess_Firefox). + +Также мы намерены расширять API для поддержки нужд разработчиков дополнений, поэтому, если у вас есть идеи, то мы их с удовольствием выслушаем. Вы можете связаться с нами через [dev-addons mailing list](https://mail.mozilla.org/listinfo/dev-addons) или [#webextensions](irc://irc.mozilla.org/webextensions) на [IRC](https://wiki.mozilla.org/IRC). + +### Приступая к работе + +- [Что такое WebExtensions?](/ru/Add-ons/WebExtensions/What_are_WebExtensions) +- [Первое WebExtension](/ru/Add-ons/WebExtensions/Your_first_WebExtension) +- [Второе WebExtension](/ru/Add-ons/WebExtensions/Your_second_WebExtension) +- [Анатомия WebExtension](/ru/Add-ons/WebExtensions/Anatomy_of_a_WebExtension) +- [Примеры WebExtensions](/ru/Add-ons/WebExtensions/Examples) + +### How to + +- [Перехват HTTP-запросов](/ru/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests) +- [Изменить веб-страницу](/ru/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page) +- [Добавить кнопку на панель инструментов](/ru/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar) +- [Реализация страницы настроек](/ru/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page) +- [Работа с буфером обмена](/ru/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard) +- Работа с вкладками браузера +- Доступ и изменение закладок +- Доступ и изменение куки (cookies) + +### Интерфейс пользователя + +- [Введение](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface) +- [Кнопка на панели инструментов](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action) +- [Кнопка в адресной строке](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions) +- [Всплывающие окна](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups) +- [Контекстное меню](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items) +- [Боковые панели](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars) +- [Страница настройки дополнения](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_page) +- [Дополнительные web-страницы](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Bundled_web_pages) +- [Уведомления](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications) +- [Угадывание адреса по мере ввода](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox) +- [Панели инструмента разработчика](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels) + +### Основные понятия + +- [Обзор JavaScript API](/ru/docs/Mozilla/Add-ons/WebExtensions/API) +- [Компоненты пользовательского интерфейса](/ru/docs/Mozilla/Add-ons/WebExtensions/User_interface_components) +- [Скрипты Content scripts](/ru/Add-ons/WebExtensions/Content_scripts) +- [Match patterns (шаблоны совпадения)](/ru/Add-ons/WebExtensions/Match_patterns) +- [Internationalization](/ru/docs/Mozilla/Add-ons/WebExtensions/Internationalization) +- [Content Security Policy (политика безопасного контента)](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy) +- [Native messaging (нативный обмен сообщениями)](/ru/docs/Mozilla/Add-ons/WebExtensions/Native_messaging) + +### Адаптация + +- [Портирование расширения из Google Chrome](/ru/Add-ons/WebExtensions/Porting_from_Google_Chrome) +- [Портирование старых дополнений Firefox](/ru/docs/Mozilla/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on) +- [Embedded WebExtensions](/ru/docs/Mozilla/Add-ons/WebExtensions/Embedded_WebExtensions) +- [Сравнение с Add-on SDK](/ru/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK) +- [Сравнение с XUL/XPCOM-расширениями](/ru/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions) +- [Несовместимость с Chrome](/ru/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities) + +### Рабочий процесс (workflow) Firefox + +- [Установка](/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox) +- [Отладка](/ru/Add-ons/WebExtensions/Debugging) +- [Начало работы с инструментом Web-ext](/ru/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext) +- [Справочник команд Web-ext](/ru/docs/Mozilla/Add-ons/WebExtensions/web-ext_command_reference) +- [WebExtensions и Add-on ID](/ru/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID) +- [Публикация вашего дополнения WebExtension](/ru/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension) + +### Справочники + +- [Обзор JavaScript API](/ru/docs/Mozilla/Add-ons/WebExtensions/API) +- [Таблицы совместимости браузера для JavaScript APIs](/ru/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs) + +#### JavaScript APIs + +{{ ListSubpages ("/ru/Add-ons/WebExtensions/API") }} + +#### Manifest keys + +{{ ListSubpages ("/ru/Add-ons/WebExtensions/manifest.json") }} diff --git a/files/ru/mozilla/add-ons/webextensions/intercept_http_requests/index.md b/files/ru/mozilla/add-ons/webextensions/intercept_http_requests/index.md index 5505a6493a9652..d4d2f4475209ed 100644 --- a/files/ru/mozilla/add-ons/webextensions/intercept_http_requests/index.md +++ b/files/ru/mozilla/add-ons/webextensions/intercept_http_requests/index.md @@ -3,30 +3,25 @@ title: Intercept HTTP requests slug: Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests translation_of: Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests --- -
{{AddonSidebar}}
+{{AddonSidebar}} -
    -
  • -

    Для перехвата HTTP запросов используйте {{WebExtAPIRef("webRequest")}} API. Этот API позволит вам добавлять обработчики, на различных этапах создания HTTP запросов. В обработчиках вы можете:

    -
  • -
  • получить доступ к заголовкам и телам запроса, к заголовкам ответа
  • -
  • отменять и перенаправлять запросы
  • -
  • изменять запрос и заголовки ответа
  • -
+- ## Для перехвата HTTP запросов используйте {{WebExtAPIRef("webRequest")}} API. Этот API позволит вам добавлять обработчики, на различных этапах создания HTTP запросов. В обработчиках вы можете: +- получить доступ к заголовкам и телам запроса, к заголовкам ответа +- отменять и перенаправлять запросы +- изменять запрос и заголовки ответа -

В этой статье мы рассмотрим три разных способа использования webRequest модуля:

+В этой статье мы рассмотрим три разных способа использования `webRequest` модуля: -
    -
  • Логирование URL сделанных запросов.
  • -
  • Перенаправление запросов.
  • -
  • Модификация заголовков запроса.
  • -
+- Логирование URL сделанных запросов. +- Перенаправление запросов. +- Модификация заголовков запроса. -

Логирование URL запросов

+## Логирование URL запросов -

Создайте новый каталог "requests". В нём создайте файл "manifest.json" со следующим содержимым:

+Создайте новый каталог "requests". В нём создайте файл "manifest.json" со следующим содержимым: -
{
+```json
+{
   "description": "Demonstrating webRequests",
   "manifest_version": 2,
   "name": "webRequest-demo",
@@ -34,38 +29,40 @@ translation_of: Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests
 
   "permissions": [
     "webRequest",
-    "<all_urls>"
+    ""
   ],
 
   "background": {
     "scripts": ["background.js"]
   }
-}
+} +``` -

Далее, создайте файл "background.js" со следующим содержимым:

+Далее, создайте файл "background.js" со следующим содержимым: -
function logURL(requestDetails) {
+```js
+function logURL(requestDetails) {
   console.log("Loading: " + requestDetails.url);
 }
 
 browser.webRequest.onBeforeRequest.addListener(
   logURL,
-  {urls: ["<all_urls>"]}
+  {urls: [""]}
 );
+```
 
-
- -

Здесь мы используем {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} для вызова функции logURL() перед началом запроса. Функция logURL() берёт URL запроса из объекта event и выводит в консоль браузера. Шаблон {urls: ["<all_urls>"]} означает, что мы будем перехватывать HTTP запросы ко всем URL.

+Здесь мы используем {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} для вызова функции `logURL()` перед началом запроса. Функция `logURL()` берёт URL запроса из объекта event и выводит в консоль браузера. [Шаблон](/en-US/Add-ons/WebExtensions/Match_patterns) `{urls: [""]}` означает, что мы будем перехватывать HTTP запросы ко всем URL. -

Для проверки проинсталлируйте WebExtension, откройте консоль браузера и откройте какую-нибудь веб-страницу. В консоли вы должны увидеть URL для каждого ресурса, который запрашивает браузер:

+Для проверки [проинсталлируйте WebExtension](/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox), [откройте консоль браузера](/ru/docs/Tools/Browser_Console) и откройте какую-нибудь веб-страницу. В консоли вы должны увидеть URL для каждого ресурса, который запрашивает браузер: -

{{EmbedYouTube("X3rMgkRkB1Q")}}

+{{EmbedYouTube("X3rMgkRkB1Q")}} -

Перенаправление запросов

+## Перенаправление запросов -

Теперь давайте использовать webRequest для перенаправления HTTP-запросов. Во-первых, замените manifest.json на это:

+Теперь давайте использовать `webRequest` для перенаправления HTTP-запросов. Во-первых, замените manifest.json на это: -
{
+```json
+{
 
   "description": "Demonstrating webRequests",
   "manifest_version": 2,
@@ -82,13 +79,15 @@ browser.webRequest.onBeforeRequest.addListener(
     "scripts": ["background.js"]
   }
 
-}
+} +``` -

Единственное изменение здесь заключается в добавлении "webRequestBlocking" в permission. Мы должны запрашивать это дополнительное разрешение каждый раз, когда мы изменяем запрос.

+Единственное изменение здесь заключается в добавлении `"webRequestBlocking"` в `permission`. Мы должны запрашивать это дополнительное разрешение каждый раз, когда мы изменяем запрос. -

Затем замените «background.js» следующим образом:

+Затем замените «background.js» следующим образом: -
var pattern = "https://mdn.mozillademos.org/*";
+```js
+var pattern = "https://mdn.mozillademos.org/*";
 
 function redirect(requestDetails) {
   console.log("Redirecting: " + requestDetails.url);
@@ -101,27 +100,29 @@ browser.webRequest.onBeforeRequest.addListener(
   redirect,
   {urls:[pattern], types:["image"]},
   ["blocking"]
-);
+); +``` -

Опять же, мы используем {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} обработчик событий для запуска функции непосредственно перед каждым запросом. Эта функция заменит целевой URL на redirectUrl указанный в функции.

+Опять же, мы используем {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} обработчик событий для запуска функции непосредственно перед каждым запросом. Эта функция заменит целевой URL на `redirectUrl` указанный в функции. -

На этот раз мы не перехватываем каждый запрос: опция {urls: [pattern], types: ["image"]} указывает, что мы должны перехватывать запросы (1) для URL-адресов, находящихся в разделе «https://mdn.mozillademos.org / "(2) для ресурсов изображения. Подробнее см. {{WebExtAPIRef ("webRequest.RequestFilter")}}.

+На этот раз мы не перехватываем каждый запрос: опция `{urls: [pattern], types: ["image"]}` указывает, что мы должны перехватывать запросы (1) для URL-адресов, находящихся в разделе «https\://mdn.mozillademos.org / "(2) для ресурсов изображения. Подробнее см. {{WebExtAPIRef ("webRequest.RequestFilter")}}. -

Также обратите внимание, что мы передаём опцию "blocking": нам нужно передать это, когда мы хотим изменить запрос. Это заставляет функцию обработчика блокировать сетевой запрос, поэтому браузер ждёт, пока обработчик вернётся, прежде чем продолжить. Дополнительную информацию о "blocking" смотрите в документации {{WebExtAPIRef ("webRequest.onBeforeRequest")}}.

+Также обратите внимание, что мы передаём опцию `"blocking"`: нам нужно передать это, когда мы хотим изменить запрос. Это заставляет функцию обработчика блокировать сетевой запрос, поэтому браузер ждёт, пока обработчик вернётся, прежде чем продолжить. Дополнительную информацию о `"blocking"` смотрите в документации {{WebExtAPIRef ("webRequest.onBeforeRequest")}}. -

Чтобы проверить это, откройте страницу в MDN, которая содержит много изображений (например, https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor), перезагрузите WebExtension и перезагрузите страницу MDN :

+Чтобы проверить это, откройте страницу в MDN, которая содержит много изображений (например, https\://developer.mozilla.org/en-US/docs/Tools/Network_Monitor), перезагрузите WebExtension и перезагрузите страницу MDN : -

{{EmbedYouTube("ix5RrXGr0wA")}}

+{{EmbedYouTube("ix5RrXGr0wA")}} -

Modifying request headers

+## Modifying request headers -

Finally we'll use webRequest to modify request headers. In this example we'll modify the "User-Agent" header so the browser identifies itself as Opera 12.16, but only when visiting pages under http://useragentstring.com/".

+Finally we'll use `webRequest` to modify request headers. In this example we'll modify the "User-Agent" header so the browser identifies itself as Opera 12.16, but only when visiting pages under http\://useragentstring.com/". -

The "manifest.json" can stay the same as in the previous example.

+The "manifest.json" can stay the same as in the previous example. -

Replace "background.js" with code like this:

+Replace "background.js" with code like this: -
var targetPage = "http://useragentstring.com/*";
+```js
+var targetPage = "http://useragentstring.com/*";
 
 var ua = "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16";
 
@@ -138,18 +139,19 @@ browser.webRequest.onBeforeSendHeaders.addListener(
   rewriteUserAgentHeader,
   {urls: [targetPage]},
   ["blocking", "requestHeaders"]
-);
+); +``` -

Here we use the {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} event listener to run a function just before the request headers are sent.

+Here we use the {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} event listener to run a function just before the request headers are sent. -

The listener function will be called only for requests to URLs matching the targetPage pattern. Also note that we've again passed "blocking" as an option. We've also passed "requestHeaders", which means that the listener will be passed an array containing the request headers that we expect to send. See {{WebExtAPIRef("webRequest.onBeforeSendHeaders")}} for more information on these options.

+The listener function will be called only for requests to URLs matching the `targetPage` [pattern](/en-US/Add-ons/WebExtensions/Match_patterns). Also note that we've again passed `"blocking"` as an option. We've also passed `"requestHeaders"`, which means that the listener will be passed an array containing the request headers that we expect to send. See {{WebExtAPIRef("webRequest.onBeforeSendHeaders")}} for more information on these options. -

The listener function looks for the "User-Agent" header in the array of request headers, replaces its value with the value of the ua variable, and returns the modified array. This modified array will now be sent to the server.

+The listener function looks for the "User-Agent" header in the array of request headers, replaces its value with the value of the `ua` variable, and returns the modified array. This modified array will now be sent to the server. -

To test it out, open useragentstring.com and check that it identifies the browser as Firefox. Then reload the add-on, reload useragentstring.com, and check that Firefox is now identified as Opera:

+To test it out, open [useragentstring.com](http://useragentstring.com/) and check that it identifies the browser as Firefox. Then reload the add-on, reload [useragentstring.com](http://useragentstring.com/), and check that Firefox is now identified as Opera: -

{{EmbedYouTube("SrSNS1-FIx0")}}

+{{EmbedYouTube("SrSNS1-FIx0")}} -

Learn more

+## Learn more -

To learn about all the things you can do with the webRequest API, see its reference documentation.

+To learn about all the things you can do with the `webRequest` API, see its [reference documentation](/en-US/Add-ons/WebExtensions/API/WebRequest). diff --git a/files/ru/mozilla/add-ons/webextensions/internationalization/index.md b/files/ru/mozilla/add-ons/webextensions/internationalization/index.md index 9844c12e381c2c..d19d5029f2659f 100644 --- a/files/ru/mozilla/add-ons/webextensions/internationalization/index.md +++ b/files/ru/mozilla/add-ons/webextensions/internationalization/index.md @@ -4,80 +4,62 @@ slug: Mozilla/Add-ons/WebExtensions/Internationalization translation_of: Mozilla/Add-ons/WebExtensions/Internationalization original_slug: Mozilla/Add-ons/WebExtensions/Интернационализация --- -
{{AddonSidebar}}
- -

API WebExtensions предоставляет полезный модуль для интернационализации расширений — i18n. В этой статье мы рассмотрим его особенности и пример его работы. Система для расширений, построенных с помощью API WebExtension, i18n похожа на библиотеки JavaScript для i18n, такие как i18n.js.

- -
-

Расширение, используемое в этой статье в качестве примера, — notify-link-clicks-i18n — доступно на GitHub. Читая последующие секции этой статьи, вы можете исследовать его исходный код.

-
- -

Структура интернализированного расширения

- -

Интернационализированное расширение может содержать такие же элементы, как и любое другое расширение — фоновые скрипты, встраиваемые скрипты, и т. д. — а также дополнительные инструменты, позволяющие переключаться между разными локализациями. Их можно представить следующим деревом директорий:

- -
    -
  • корневая-директория-расширения/ -
      -
    • _locales -
        -
      • en -
          -
        • messages.json -
            -
          • Сообщения на английском (строки)
          • -
          -
        • -
        -
      • -
      • de -
          -
        • messages.json -
            -
          • Сообщения на немецком (строки)
          • -
          -
        • -
        -
      • -
      • и т. д.
      • -
      -
    • -
    • manifest.json -
        -
      • Метаданные, зависящие от локализации
      • -
      -
    • -
    • myJavascript.js -
        -
      • Файл JavaScript, получающий локализацию браузера, сообщения, зависящие от локализации, и т. д.
      • -
      -
    • -
    • myStyles.css -
        -
      • CSS, зависящий от локализации
      • -
      -
    • -
    -
  • -
- -

Давайте отдельно рассмотрим каждый элемент — последующие секции представляют собой шаги, которым стоит следовать во время интернационализации вашего расширения.

- -

Добавление локализованных строк в _locales

- -
-
Вы можете определить тэг языка при помощи инструмента Find на странице определения языковых тегов. Обратите внимание на то, что при поиске нужно использовать английское название языка
-
- -

Каждая система i18n требует предоставить строки во всех локализациях, которые вы хотите поддерживать. В расширениях они хранятся в директории _locales, размещённой внутри корневой директории. Строки каждой локализации (также называемые сообщениями) хранятся в файле messages.json, находящемся в поддиректории _locales, название которой - тег языка локализации.

- -

Стоит заметить, что если тег включает в себя и базовый язык, и его региональный вариант, то по конвенции эти язык и вариант разделяются дефисом: например, "en-US". Однако в поддиректориях _locales, вместо дефиса используется нижнее подчёркивание: "en_US".

- -

Таким образом, в нашем примере существую директории "en" (английский), "de" (немецкий), "nl" (голландский), and "ja" (японский). Внутри каждой из них находится файл messages.json .

- -

Давайте рассмотрим структуру одного из этих файлов (_locales/en/messages.json):

- -
{
+{{AddonSidebar}}
+
+API [WebExtensions](/ru/docs/Mozilla/Add-ons/WebExtensions) предоставляет полезный модуль для интернационализации расширений — [i18n](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n). В этой статье мы рассмотрим его особенности и пример его работы. Система для расширений, построенных с помощью API WebExtension, i18n похожа на библиотеки JavaScript для i18n, такие как [i18n.js](http://i18njs.com/).
+
+> **Примечание:** Расширение, используемое в этой статье в качестве примера, — [notify-link-clicks-i18n](https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n) — доступно на GitHub. Читая последующие секции этой статьи, вы можете исследовать его исходный код.
+
+## Структура интернализированного расширения
+
+Интернационализированное расширение может содержать такие же элементы, как и любое другое расширение — [фоновые скрипты](/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts), [встраиваемые скрипты](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts), и т. д. — а также дополнительные инструменты, позволяющие переключаться между разными локализациями. Их можно представить следующим деревом директорий:
+
+- корневая-директория-расширения/
+
+  - \_locales
+
+    - en
+
+      - messages.json
+
+        - Сообщения на английском (строки)
+
+    - de
+
+      - messages.json
+
+        - Сообщения на немецком (строки)
+
+    - и т. д.
+
+  - manifest.json
+
+    - Метаданные, зависящие от локализации
+
+  - myJavascript.js
+
+    - Файл JavaScript, получающий локализацию браузера, сообщения, зависящие от локализации, и т. д.
+
+  - myStyles.css
+
+    - CSS, зависящий от локализации
+
+Давайте отдельно рассмотрим каждый элемент — последующие секции представляют собой шаги, которым стоит следовать во время интернационализации вашего расширения.
+
+## Добавление локализованных строк в \_locales
+
+Вы можете определить тэг языка при помощи инструмента _Find_ на [странице определения языковых тегов](https://r12a.github.io/app-subtags/). Обратите внимание на то, что при поиске нужно использовать английское название языка
+
+Каждая система i18n требует предоставить строки во всех локализациях, которые вы хотите поддерживать. В расширениях они хранятся в директории `_locales`, размещённой внутри корневой директории. Строки каждой локализации (также называемые сообщениями) хранятся в файле `messages.json`, находящемся в поддиректории `_locales`, название которой - тег языка локализации.
+
+Стоит заметить, что если тег включает в себя и базовый язык, и его региональный вариант, то по конвенции эти язык и вариант разделяются дефисом: например, "en-US". Однако в поддиректориях `_locales`, **вместо дефиса используется нижнее подчёркивание**: "en_US".
+
+Таким образом, [в нашем примере](https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n/_locales) существую директории "en" (английский), "de" (немецкий), "nl" (голландский), and "ja" (японский). Внутри каждой из них находится файл `messages.json` .
+
+Давайте рассмотрим структуру одного из этих файлов ([\_locales/en/messages.json](https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/_locales/en/messages.json)):
+
+```json
+{
   "extensionName": {
     "message": "Notify link clicks i18n",
     "description": "Name of the extension."
@@ -103,77 +85,83 @@ original_slug: Mozilla/Add-ons/WebExtensions/Интернационализац
       }
     }
   }
-}
+} +``` -

Это стандартный файл JSON — каждый из его элементов является объектом с именем, содержащим сообщение (message) и описание (description). Оба предмета - строки; $URL$ — это заполнитель, который заменяется подстрокой, когда элемент notificationContent вызывается расширением. Вы научитесь это делать в секции Получение сообщений из JavaScript.

+Это стандартный файл JSON — каждый из его элементов является объектом с именем, содержащим сообщение (`message)` и описание (`description)`. Оба предмета - строки; `$URL$` — это заполнитель, который заменяется подстрокой, когда элемент `notificationContent` вызывается расширением. Вы научитесь это делать в секции [Получение сообщений из JavaScript](#получение_сообщений_из_javascript). -
-

Примечание: вы можете найти больше информации о структуре messages.json здесь.

-
+> **Примечание:** вы можете найти больше информации о структуре `messages.json` [здесь](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference). -

Интернационализация manifest.json

+## Интернационализация manifest.json -

Для интернационализации файла manifest.json нужно предпринять несколько шагов.

+Для интернационализации файла manifest.json нужно предпринять несколько шагов. -

Получение локализованных строк в манифестах

+### Получение локализованных строк в манифестах -

Ваш файл manifest.json содержит строки, отображаемые пользователю, такие как имя и описание расширения. Если вы интернационализируете эти строки и поместите их переводы в messages.json, то эти переводы будут отображаться пользователю в зависимости от локализации его браузера.

+Ваш файл [manifest.json](https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/manifest.json) содержит строки, отображаемые пользователю, такие как имя и описание расширения. Если вы интернационализируете эти строки и поместите их переводы в messages.json, то эти переводы будут отображаться пользователю в зависимости от локализации его браузера. -

Чтобы интернационализировать строки, их нужно указывать следующим образом:

+Чтобы интернационализировать строки, их нужно указывать следующим образом: -
"name": "__MSG_extensionName__",
-"description": "__MSG_extensionDescription__",
+```json +"name": "__MSG_extensionName__", +"description": "__MSG_extensionDescription__", +``` -

Здесь мы получаем сообщения, зависящие от локализации браузера, а не просто статические строки.

+Здесь мы получаем сообщения, зависящие от локализации браузера, а не просто статические строки. -

Чтобы получить строку сообщения, её нужно указать следующим образом:

+Чтобы получить строку сообщения, её нужно указать следующим образом: -
    -
  1. Два подчёркивания
  2. -
  3. Строка "MSG"
  4. -
  5. Одно подчёркивание
  6. -
  7. Имя сообщения так как оно указано в messages.json
  8. -
  9. Два подчёркивания
  10. -
+1. Два подчёркивания +2. Строка "MSG" +3. Одно подчёркивание +4. Имя сообщения так как оно указано в `messages.json` +5. Два подчёркивания -
__MSG_ + messageName + __
+``` +__MSG_ + messageName + __ +``` -

Локализация по умолчанию

+### Локализация по умолчанию -

Ещё одно поле. которое нужно указать в manifest.json — это default_locale:

+Ещё одно поле. которое нужно указать в manifest.json — это [default_locale](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/default_locale): -
"default_locale": "en"
+```json +"default_locale": "en" +``` -

Этот параметр устанавливает локализацию по умолчанию, используемую, если расширение не поддерживает локализацию браузера пользователя. Любые сообщения, недоступные в текущей локализации, будут браться из той локализации, которая установлена по умолчанию. There are some more details to be aware of in terms of how the browser selects strings — see Выбор локализованной строки.

+Этот параметр устанавливает локализацию по умолчанию, используемую, если расширение не поддерживает локализацию браузера пользователя. Любые сообщения, недоступные в текущей локализации, будут браться из той локализации, которая установлена по умолчанию. There are some more details to be aware of in terms of how the browser selects strings — see [Выбор локализованной строки](#выбор_локализованной_строки). -

CSS, зависящий от локализации

+## CSS, зависящий от локализации -

Локализованные строки также можно получить из CSS-файлов расширения. Например, вы можете создать поля CSS, зависящие от локализации, так:

+Локализованные строки также можно получить из CSS-файлов расширения. Например, вы можете создать поля CSS, зависящие от локализации, так: -
header {
+```css
+header {
   background-image: url(../images/__MSG_extensionName__/header.png);
-}
+} +``` -

Эта функциональность может быть полезна, однако, возможно, для этих целей стоит использовать Заранее определённые сообщения.

+Эта функциональность может быть полезна, однако, возможно, для этих целей стоит использовать [Заранее определённые сообщения](#заранее_определённые_сообщения). -

Получение сообщений из JavaScript

+## Получение сообщений из JavaScript -

Допустим, вы добавили сообщения в ваш manifest.json. Чтобы ваше расширение начало использовать правильные языки, соответствующие сообщения следует вызывать при помощи JavaScript. API i18n достаточно прост и содержит всего 4 основных метода:

+Допустим, вы добавили сообщения в ваш manifest.json. Чтобы ваше расширение начало использовать правильные языки, соответствующие сообщения следует вызывать при помощи JavaScript. [API i18n](/ru/docs/Mozilla/Add-ons/WebExtensions/API/i18n) достаточно прост и содержит всего 4 основных метода: -
    -
  • Скорее всего, наиболее часто вы будете использовать {{WebExtAPIRef("i18n.getMessage()")}} — этот метод используется для получения конкретного сообщения. Примеры его использования можно увидеть ниже.
  • -
  • Методы {{WebExtAPIRef("i18n.getAcceptLanguages()")}} и {{WebExtAPIRef("i18n.getUILanguage()")}} используются, если UI надо менять в зависимости от локализации — например, если вы хотите, чтобы предпочтения, свойственные носителям какого-либо языка, находились выше в списке, или чтобы формат дат соответствовал локализации браузера.
  • -
  • Метод {{WebExtAPIRef("i18n.detectLanguage()")}} используется для получения языка информации, введённой пользователем, и её форматирования.
  • -
+- Скорее всего, наиболее часто вы будете использовать {{WebExtAPIRef("i18n.getMessage()")}} — этот метод используется для получения конкретного сообщения. Примеры его использования можно увидеть ниже. +- Методы {{WebExtAPIRef("i18n.getAcceptLanguages()")}} и {{WebExtAPIRef("i18n.getUILanguage()")}} используются, если UI надо менять в зависимости от локализации — например, если вы хотите, чтобы предпочтения, свойственные носителям какого-либо языка, находились выше в списке, или чтобы формат дат соответствовал локализации браузера. +- Метод {{WebExtAPIRef("i18n.detectLanguage()")}} используется для получения языка информации, введённой пользователем, и её форматирования. -

В нашем примере notify-link-clicks-i18n , фоновый скрипт содержит следующие строки:

+В нашем примере [notify-link-clicks-i18n](https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n) , [фоновый скрипт](https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/background-script.js) содержит следующие строки: -
var title = browser.i18n.getMessage("notificationTitle");
-var content = browser.i18n.getMessage("notificationContent", message.url);
+```js +var title = browser.i18n.getMessage("notificationTitle"); +var content = browser.i18n.getMessage("notificationContent", message.url); +``` -

Первая из них получает поле notificationTitle message из доступного файла messages.json, соответствующее наиболее подходящей локализации . Вторая строка похожа на первую, но в ней метод принимает URL в качестве второго параметра. Зачем? С помощью этого параметра мы указываем, на что нужно заменить заполнитель $URL$ в поле notificationContent message:

+Первая из них получает поле `notificationTitle message` из доступного файла `messages.json`, соответствующее наиболее подходящей локализации . Вторая строка похожа на первую, но в ней метод принимает URL в качестве второго параметра. Зачем? С помощью этого параметра мы указываем, на что нужно заменить заполнитель `$URL$` в поле `notificationContent message`: -
"notificationContent": {
+```json
+"notificationContent": {
   "message": "You clicked $URL$.",
   "description": "Tells the user which link they clicked.",
   "placeholders": {
@@ -183,34 +171,41 @@ var content = browser.i18n.getMessage("notificationContent", message.url);
} } } - +``` -

Объект "placeholders" определяет все заполнители и то, откуда их нужно получать. Заполнитель "url" указывает, что информация о нем должна содержаться в $1 — первое значение, заданное внутри второго параметра getMessage(). Поскольку заполнитель называется "url", $URL$ используется для его вызова внутри сообщения (то есть для заполнителя "name" нужно использовать $NAME$, и т. д.). Если вы хотите задать значения нескольких заполнителей, их можно передавать во второй аргумент {{WebExtAPIRef("i18n.getMessage()")}} в виде массива — массив [a, b, c] передаёт значения $1, $2 и $3, и т. д. внутрь messages.json.

+Объект `"placeholders"` определяет все заполнители и то, откуда их нужно получать. Заполнитель `"url"` указывает, что информация о нем должна содержаться в $1 — первое значение, заданное внутри второго параметра `getMessage()`. Поскольку заполнитель называется `"url"`, `$URL$` используется для его вызова внутри сообщения (то есть для заполнителя `"name"` нужно использовать `$NAME$`, и т. д.). Если вы хотите задать значения нескольких заполнителей, их можно передавать во второй аргумент {{WebExtAPIRef("i18n.getMessage()")}} в виде массива — массив `[a, b, c]`передаёт значения`$1`, `$2`и`$3`, и т. д. внутрь `messages.json`. -

Давайте посмотрим на пример: изначально сообщение notificationContent в файле en/messages.json такое:

+Давайте посмотрим на пример: изначально сообщение `notificationContent` в файле `en/messages.json` такое: -
You clicked $URL$.
+``` +You clicked $URL$. +``` -

Пусть эта ссылка указывает на https://developer.mozilla.org. После вызова {{WebExtAPIRef("i18n.getMessage()")}}, содержание второго параметра становится доступно в messages.json в качестве значения $1, замещающего $URL$, так как это указано в заполнителе "url". Таким образом, итоговое значение строки:

+Пусть эта ссылка указывает на `https://developer.mozilla.org`. После вызова {{WebExtAPIRef("i18n.getMessage()")}}, содержание второго параметра становится доступно в messages.json в качестве значения `$1`, замещающего `$URL$`, так как это указано в заполнителе `"url"`. Таким образом, итоговое значение строки: -
You clicked https://developer.mozilla.org.
+``` +You clicked https://developer.mozilla.org. +``` -

Прямое использование заполнителей

+### Прямое использование заполнителей -

Переменные ($1, $2, $3, и т. д.) можно вставлять напрямую в сообщения. Например, можно переписать объект "notificationContent" следующим образом:

+Переменные (`$1`, `$2`, `$3`, и т. д.) можно вставлять напрямую в сообщения. Например, можно переписать объект `"notificationContent"` следующим образом: -
"notificationContent": {
+```json
+"notificationContent": {
   "message": "You clicked $1.",
   "description": "Tells the user which link they clicked."
-}
+} +``` -

Этот метод может показаться более быстрым и простым, но другой способ (использование "placeholders") считается лучшей практикой. Это вызвано тем, что имена заполнителей (например "url") и примеры помогают понять, что означают заполнители — через неделю после написания кода Вы, наверное, забудете, что обозначают заполнители $1$8, что менее вероятно, если заполнители именованы.

+Этот метод может показаться более быстрым и простым, но другой способ (использование `"placeholders"`) считается лучшей практикой. Это вызвано тем, что имена заполнителей (например `"url"`) и примеры помогают понять, что означают заполнители — через неделю после написания кода Вы, наверное, забудете, что обозначают заполнители `$1`–`$8`, что менее вероятно, если заполнители именованы. -

Заданные замены

+### Заданные замены -

Значения заполнителей можно задавать вручную, если вы хотите, чтобы каждый раз это значение было одним и тем же, а не определялось переменной в коде. Например:

+Значения заполнителей можно задавать вручную, если вы хотите, чтобы каждый раз это значение было одним и тем же, а не определялось переменной в коде. Например: -
"mdn_banner": {
+```json
+"mdn_banner": {
   "message": "For more information on web technologies, go to $MDN$.",
   "description": "Tell the user about MDN",
   "placeholders": {
@@ -218,134 +213,90 @@ var content = browser.i18n.getMessage("notificationContent", message.url);
"content": "https://developer.mozilla.org/" } } -} - -

В этом примере мы сами задаём значение заполнителя, а не получаем его из переменной, такой как $1. Это может быть полезно, если сообщение очень сложное, и вы хотите разделить значения, чтобы сделать строки более читаемыми. К тому же, доступ к этим значениям можно получить внутри программы.

- -

Вы также можете использовать такие замены для указания частей строки, не нуждающихся в переводе, таких как имена или названия.

- -

Выбор локализованной строки

- -

Локализации могут быть указаны с помощью кода языка, например fr или en. Они также могут содержать региональный код, например en_US или en_GB, описывающий региональный вариант языка. Когда вы запрашиваете строку у системы i18n, системы возвращает её используя следующий алгоритм:

- -
    -
  1. Если для текущей локализации существует файл messages.json, содержащий требуемую строку, возвращается она.
  2. -
  3. Иначе,если текущая локализация — региональный вариант (например en_US) и существует файл messages.json для этого языка, но без указания региона (например en), содержащий строку, возвращается она.
  4. -
  5. Иначе, если существует файл messages.json для default_locale, указанной в manifest.json, и этот файл содержит нужную строку, возвращается она.
  6. -
  7. В противном случае возвращается пустая строка.
  8. -
- -

Рассмотрим следующий пример:

- -
    -
  • корневая-директория-расширения/ -
      -
    • _locales -
        -
      • en_GB -
          -
        • messages.json -
            -
          • { "colorLocalised": { "message": "colour", "description": "Color." }, ... }
          • -
          -
        • -
        +} +``` + +В этом примере мы сами задаём значение заполнителя, а не получаем его из переменной, такой как `$1`. Это может быть полезно, если сообщение очень сложное, и вы хотите разделить значения, чтобы сделать строки более читаемыми. К тому же, доступ к этим значениям можно получить внутри программы. + +Вы также можете использовать такие замены для указания частей строки, не нуждающихся в переводе, таких как имена или названия. + +## Выбор локализованной строки + +Локализации могут быть указаны с помощью кода языка, например `fr` или `en`. Они также могут содержать региональный код, например `en_US` или `en_GB`, описывающий региональный вариант языка. Когда вы запрашиваете строку у системы i18n, системы возвращает её используя следующий алгоритм: + +1. Если для текущей локализации существует файл `messages.json`, содержащий требуемую строку, возвращается она. +2. Иначе,если текущая локализация — региональный вариант (например `en_US`) и существует файл `messages.json` для этого языка, но без указания региона (например `en`), содержащий строку, возвращается она. +3. Иначе, если существует файл `messages.json` для `default_locale`, указанной в `manifest.json`, и этот файл содержит нужную строку, возвращается она. +4. В противном случае возвращается пустая строка. + +Рассмотрим следующий пример: + +- корневая-директория-расширения/ + + - \_locales + + - en_GB + + - messages.json + + - `{ "colorLocalised": { "message": "colour", "description": "Color." }, ... }` + en -
          -
        • messages.json -
            -
          • { "colorLocalised": { "message": "color", "description": "Color." }, ... }
          • -
          -
        • -
        -
      • -
      • fr -
          -
        • messages.json -
            -
          • { "colorLocalised": { "message": "couleur", "description": "Color." }, ...}
          • -
          -
        • -
        -
      • -
      -
    • -
    -
  • -
- -

Пусть default_locale установлен как fr, а текущая локализация браузера — en_GB:

- -
    -
  • Вызов getMessage("colorLocalised") вернёт "colour".
  • -
  • Если бы в en_GB не было "colorLocalized", то вызов getMessage("colorLocalised"), вернул бы "color", а не "couleur".
  • -
- -

Заранее определённые сообщения

- -

Модуль i18n module предоставляет заранее определённые сообщения, которые можно вызвать таким же образом, как мы это делали в разделе Интернационализация manifest.json. Например:

- -
__MSG_extensionName__
- -

Заранее определённые сообщения используют такой же синтаксис, за исключением @@ перед именем сообщения, например:

- -
__MSG_@@ui_locale__
- -

Следующая таблица содержит различные заранее определённые сообщения:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Message nameDescription
@@extension_id -

Внутренний UUID расширения. Эту строку можно использовать для создания URL ресурсов внутри расширения.Даже нелокализованные расширения могут использовать это сообщения.

- -

Это сообщения нельзя использовать в manifest.json.

- -

Также стоит заметить, что этот ID — не ID аддона, которое возвращает {{WebExtAPIRef("runtime.id")}}, и которое может быть установлено с помощью ключа applications в manifest.json. Это сгенерированный UUID, содержащийся в URL аддона. Это означает, что данную величину нельзя использовать в качестве параметра extensionId метода {{WebExtAPIRef("runtime.sendMessage()")}}, или для проверки поля id объекта {{WebExtAPIRef("runtime.MessageSender")}}.

-
@@ui_localeТекущая локализация; эту строку можно использовать для создания URL, зависящих от локализации.
@@bidi_dirНаправления чтения, либо "ltr" для языков, таких как английский, где текст читается слева направо, либо "rtl" для языков, считающихся справа налево, таких как арабский.
@@bidi_reversed_dirЕсли @@bidi_dir имеет значение "ltr", то возвращает "rtl"; иначе "ltr".
@@bidi_start_edgeЕсли @@bidi_dir имеет значение "ltr", то возвращает "left"; иначе "right".
@@bidi_end_edgeЕсли @@bidi_dir имеет значение "ltr", то возвращает "right"; иначе "left".
- -

Возвращаясь к нашему примеру, лучше было бы написать:

- -
header {
+      - messages.json
+
+        - `{ "colorLocalised": { "message": "color", "description": "Color." }, ... }`
+
+    - fr
+
+      - messages.json
+
+        - `{ "colorLocalised": { "message": "couleur", "description": "Color." }, ...}`
+
+Пусть `default_locale` установлен как `fr`, а текущая локализация браузера — `en_GB`:
+
+- Вызов `getMessage("colorLocalised")` вернёт "colour".
+- Если бы в `en_GB` не было "colorLocalized", то вызов `getMessage("colorLocalised")`, вернул бы "color", а не "couleur".
+
+## Заранее определённые сообщения
+
+Модуль i18n module предоставляет заранее определённые сообщения, которые можно вызвать таким же образом, как мы это делали в разделе [Интернационализация manifest.json](#интернационализация_manifest.json). Например:
+
+```
+__MSG_extensionName__
+```
+
+Заранее определённые сообщения используют такой же синтаксис, за исключением `@@` перед именем сообщения, например:
+
+```
+__MSG_@@ui_locale__
+```
+
+Следующая таблица содержит различные заранее определённые сообщения:
+
+| Message name          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
+| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `@@extension_id`      | Внутренний UUID расширения. Эту строку можно использовать для создания URL ресурсов внутри расширения.Даже нелокализованные расширения могут использовать это сообщения.Это сообщения нельзя использовать в manifest.json.Также стоит заметить, что этот ID — _не_ ID аддона, которое возвращает {{WebExtAPIRef("runtime.id")}}, и которое может быть установлено с помощью ключа [applications](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications) в manifest.json. Это сгенерированный UUID, содержащийся в URL аддона. Это означает, что данную величину нельзя использовать в качестве параметра `extensionId` метода {{WebExtAPIRef("runtime.sendMessage()")}}, или для проверки поля `id` объекта {{WebExtAPIRef("runtime.MessageSender")}}. |
+| `@@ui_locale`         | Текущая локализация; эту строку можно использовать для создания URL, зависящих от локализации.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
+| `@@bidi_dir`          | Направления чтения, либо "ltr" для языков, таких как английский, где текст читается слева направо, либо "rtl" для языков, считающихся справа налево, таких как арабский.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+| `@@bidi_reversed_dir` | Если `@@bidi_dir` имеет значение "ltr", то возвращает "rtl"; иначе "ltr".                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
+| `@@bidi_start_edge`   | Если `@@bidi_dir` имеет значение "ltr", то возвращает "left"; иначе "right".                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+| `@@bidi_end_edge`     | Если `@@bidi_dir` имеет значение "ltr", то возвращает "right"; иначе "left".                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+
+Возвращаясь к нашему примеру, лучше было бы написать:
+
+```css
+header {
   background-image: url(../images/__MSG_@@ui_locale__/header.png);
-}
+} +``` -

Теперь мы можем хранить изображения в директориях поддерживаемых локализаций — en, de, и т. д. — что выглядит логичней.

+Теперь мы можем хранить изображения в директориях поддерживаемых локализаций — en, de, и т. д. — что выглядит логичней. -

Давайте рассмотрим пример использования сообщений @@bidi_* в файле CSS:

+Давайте рассмотрим пример использования сообщений `@@bidi_*` в файле CSS: -
body {
+```css
+body {
   direction: __MSG_@@bidi_dir__;
 }
 
@@ -356,51 +307,44 @@ div#header {
   padding-__MSG_@@bidi_start_edge__: 0;
   padding-__MSG_@@bidi_end_edge__: 1.5em;
   position: relative;
-}
+} +``` -

Для языков, в которых текст читается слева направо, таких как английский, правила CSS, использующие заранее определённые сообщения, сверху задают такие значения:

+Для языков, в которых текст читается слева направо, таких как английский, правила CSS, использующие заранее определённые сообщения, сверху задают такие значения: -
direction: ltr;
+```css
+direction: ltr;
 padding-left: 0;
 padding-right: 1.5em;
-
+``` -

Для языков, читающихся справа налево, значения будут следующими:

+Для языков, читающихся справа налево, значения будут следующими: -
direction: rtl;
+```css
+direction: rtl;
 padding-right: 0;
-padding-left: 1.5em;
- -

Тестирование расширения

+padding-left: 1.5em; +``` -

Начиная с Firefox 45, расширения могут быть временно установлены с диска — подробнее об этом написано в статье Loading from disk. Сделайте это и попробуйте протестировать наше расширение notify-link-clicks-i18n. Перейдите на одну из ваших любимых страниц и нажмите на ссылку, чтобы проверить, появляется ли сообщения, содержащее URL нажатой ссылки.

+## Тестирование расширения -

Затем измените локализацию Firefox на какую-либо поддерживающуюся расширением, которое вы хотите протестировать.

+Начиная с Firefox 45, расширения могут быть временно установлены с диска — подробнее об этом написано в статье [Loading from disk](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Packaging_and_installation#Loading_from_disk). Сделайте это и попробуйте протестировать наше расширение [notify-link-clicks-i18n](https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n). Перейдите на одну из ваших любимых страниц и нажмите на ссылку, чтобы проверить, появляется ли сообщения, содержащее URL нажатой ссылки. -
    -
  1. Откройте "about:config" в Firefox, и найдите параметр intl.locale.requested (обратите внимание на версию Firefox: в версиях до Firefox 59 этот параметр называется general.useragent.locale).
  2. -
  3. Если параметр существует, нажмите на него дважды (или нажмите Return/Enter), чтобы выбрать его, введите языковой код локализации, которую вы хотите протестировать и нажмите "OK" (или Return/Enter). Например, в нашем примере расширение поддерживает "en" (английский), "de" (немецкий), "nl" (голландский), and "ja" (японский). Вы также можете указать пустую строку ("") в качестве значения. В этом случае браузер выберет язык вашей ОС по умолчанию.
  4. -
  5. Если параметр intl.locale.requested не существует, нажмите правой кнопкой мыши на список параметров (или откройте контекстное меню при помощи клавиатуры), и выберите "New", а затем "String". Введите intl.locale.requested как имя настройки и, "de", "nl", и т. д. как значение, как это описано в шаге 2.
  6. -
  7. Найдите intl.locale.matchOS и, если параметр существует и равен true, дважды нажмите на него и установите на false.
  8. -
  9. Перезапустите браузер, чтобы изменения вступили в силу.
  10. -
+Затем измените локализацию Firefox на какую-либо поддерживающуюся расширением, которое вы хотите протестировать. -
-

Примечание: Этот метод работает, даже если у вас не установлен языковой пакет для выбранного языка. В этом случае UI браузера просто будет использовать ваш язык по умолчанию.

-
+1. Откройте "about:config" в Firefox, и найдите параметр `intl.locale.requested` (обратите внимание на версию Firefox: в версиях до Firefox 59 этот параметр называется `general.useragent.locale`). +2. Если параметр существует, нажмите на него дважды (или нажмите Return/Enter), чтобы выбрать его, введите языковой код локализации, которую вы хотите протестировать и нажмите "OK" (или Return/Enter). Например, в нашем примере расширение поддерживает "en" (английский), "de" (немецкий), "nl" (голландский), and "ja" (японский). Вы также можете указать пустую строку (`""`) в качестве значения. В этом случае браузер выберет язык вашей ОС по умолчанию. +3. Если параметр `intl.locale.requested` не существует, нажмите правой кнопкой мыши на список параметров (или откройте контекстное меню при помощи клавиатуры), и выберите "New", а затем "String". Введите `intl.locale.requested` как имя настройки и, "de", "nl", и т. д. как значение, как это описано в шаге 2. +4. Найдите `intl.locale.matchOS` и, если параметр существует и равен `true`, дважды нажмите на него и установите на `false`. +5. Перезапустите браузер, чтобы изменения вступили в силу. -
    -
+> **Примечание:** Этот метод работает, даже если у вас не установлен [языковой пакет](https://addons.mozilla.org/en-US/firefox/language-tools/) для выбранного языка. В этом случае UI браузера просто будет использовать ваш язык по умолчанию. -
-

Примечание: Чтобы изменить результат getUILanguage требуется языковой пакет, поскольку он отражает язык UI браузера, а не язык сообщений расширения.

-
+> **Примечание:** Чтобы изменить результат `getUILanguage` требуется языковой пакет, поскольку он отражает язык UI браузера, а не язык сообщений расширения. -

Ещё раз загрузите расширение с диска и протестируйте локализацию:

+Ещё раз загрузите расширение с диска и протестируйте локализацию: -
    -
  • Ещё раз откройте "about:addons" — теперь вы должны увидеть ваше расширение, его иконку, имя и описание на выбранном языке.
  • -
  • Ещё раз протестируйте расширение. Для нашего примера, вам следовало бы посетить другую страницу и, нажав на ссылку, проверить, появляется ли сообщение на нужном языке.
  • -
+- Ещё раз откройте "about:addons" — теперь вы должны увидеть ваше расширение, его иконку, имя и описание на выбранном языке. +- Ещё раз протестируйте расширение. Для нашего примера, вам следовало бы посетить другую страницу и, нажав на ссылку, проверить, появляется ли сообщение на нужном языке. -

{{EmbedYouTube("R7--fp5pPGg")}}

+{{EmbedYouTube("R7--fp5pPGg")}} diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/background/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/background/index.md index 7546fcff39df85..27145229407dca 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/background/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/background/index.md @@ -9,104 +9,169 @@ tags: - Расширения translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/background --- -
{{AddonSidebar}}
+{{AddonSidebar}} - - - - - - - - - - - - + + + + + + + + + + + - - +} + + +
ТипObject
ОбязательныйНет
Пример -
+  
ТипObject
ОбязательныйНет
Пример +
 "background": {
   "scripts": ["background.js"]
-}
-
-

Используйте ключ background для включения одного или нескольких фоновых сценариев и, возможно, фоновой страницы в ваше расширение.

+Используйте ключ `background` для включения одного или нескольких фоновых сценариев и, возможно, фоновой страницы в ваше расширение. -

Фоновые сценарии — это место для размещения кода, который должен поддерживать долгосрочное состояние или выполнять долгосрочные операции, независимо от времени жизни каких-либо конкретных веб-страниц или окон браузера.

+Фоновые сценарии — это место для размещения кода, который должен поддерживать долгосрочное состояние или выполнять долгосрочные операции, независимо от времени жизни каких-либо конкретных веб-страниц или окон браузера. -

Фоновые сценарии загружаются сразу при загрузке расширения и остаются загруженными до тех пор, пока расширение не будет отключено или удалено. Вы можете использовать любой API-интерфейс WebExtension в сценарии, если вы запросили необходимые права (permissions).

+Фоновые сценарии загружаются сразу при загрузке расширения и остаются загруженными до тех пор, пока расширение не будет отключено или удалено. Вы можете использовать любой API-интерфейс WebExtension в сценарии, если вы запросили необходимые [права (permissions)](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions). -

Дополнительную информацию см. В разделе «Справочные страницы» в статье Анатомия расширения.

+Дополнительную информацию см. В разделе «Справочные страницы» в статье [Анатомия расширения](/ru/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_pages). -

Ключ background это объект, у которого есть два следующих необязательных свойства:

+Ключ `background` это объект, у которого есть два следующих необязательных свойства: - - - - - - - - - - + + + + + + + + + +
scripts -

Массив строк, каждая из которых представляет собой путь к файлу JavaScript. Путь к этим файлам указывают относительно папки, в которой находится файл manifest.json. Это скрипты, которые будут выполняться в фоновой странице расширения.

- -

У этих скриптов общий глобальный контекст объекта window.

- -

Скрипты загружаются в том порядке, в котором они указаны в массиве.

- -

Если вы указали значения с помощью свойства scripts, будет создана пустая фоновая страница, в которой будут работать все эти скрипты.

- -
-

Примечание: Если вы хотите добавить скрипт из удалённого расположения с помощью тега <script> (например, <script src = "https://code.jquery.com/jquery-1.7.1.min.js">), может также понадобиться изменить значение ключа content_security_policy в файле manifest.json вашего расширения.

-
- -
-

Примечание: В Firefox до версии 50, когда открыт отладчик, скрипты не всегда загружаются в том порядке, в котором они расположены в массиве. Чтобы обойти этот баг, можно использовать свойство page (вместо scripts) и добавить фоновые скрипты с помощью тегов <script> в странице HTML. Этот баг починен в Firefox 50. Начиная с этой версии, скрипты всегда загружаются в том порядке, в котором они следуют в массиве.

-
-
page -

Если вам нужно какое-нибудь содержимое HTML-страницы, можно определить свою фоновую страницу с помощью свойства page. Это строка, которая представляет собой путь к файлу документа HTML, заданный относительно расположения файла manifest.json. Этот файл HTML должен находиться внутри вашего расширения.

- -

Если используется это свойство, то уже нельзя добавлять скрипты с помощью свойства scripts. Вместо этого нужно добавлять скрипты в страницу — точно таким же образом, как в обычную веб-страницу.

-
scripts +

+ Массив строк, каждая из которых представляет собой путь к файлу + JavaScript. Путь к этим файлам указывают относительно папки, в которой + находится файл manifest.json. Это скрипты, которые будут выполняться в + фоновой странице расширения. +

+

+ У этих скриптов общий глобальный контекст объекта window. +

+

+ Скрипты загружаются в том порядке, в котором они указаны в массиве. +

+

+ Если вы указали значения с помощью свойства scripts, + будет создана пустая фоновая страница, в которой будут работать все + эти скрипты. +

+
+

+ Примечание: Если вы хотите добавить скрипт из + удалённого расположения с помощью тега + <script> (например, + <script src = + "https://code.jquery.com/jquery-1.7.1.min.js">), может также понадобиться изменить значение ключа + content_security_policy + в файле manifest.json вашего расширения. +

+
+
+

+ Примечание: В Firefox до версии 50, когда открыт + отладчик, скрипты не всегда загружаются в том порядке, в котором они + расположены в массиве. Чтобы обойти этот баг, можно использовать + свойство page (вместо scripts) и добавить + фоновые скрипты с помощью тегов <script> в + странице HTML. Этот баг починен в Firefox 50. Начиная с этой версии, + скрипты всегда загружаются в том порядке, в котором они следуют в + массиве. +

+
+
page +

+ Если вам нужно какое-нибудь содержимое HTML-страницы, можно определить + свою фоновую страницу с помощью свойства page. Это + строка, которая представляет собой путь к файлу документа HTML, + заданный относительно расположения файла manifest.json. Этот файл HTML + должен находиться внутри вашего расширения. +

+

+ Если используется это свойство, то уже нельзя добавлять скрипты с + помощью свойства scripts. Вместо этого нужно добавлять + скрипты в страницу — точно таким же образом, как в обычную + веб-страницу. +

+
-

Ключ background также может содержать следующее необязательное свойство:

+Ключ `background` также может содержать следующее необязательное свойство: - - - - - - + + + + + +
persistent -

Двоичное значение (Boolean).

- -
    -
  • true определяет, что фоновая страница должна храниться в памяти с момента, когда загрузилось расширение или запустился браузер и до того, как расширение будет удалено или выключено, или браузер будет закрыт (то есть фоновая страница постоянна).
  • -
  • false определяет, что фоновая страница может быть выгружена из памяти во время бездействия и создана заново, когда будет нужна. Такие фоновые страницы часто называются «Страницами Событий» (Event Pages) — потому, что они загружаются в память только для того, чтобы обрабатывать события, для которых в фоновых скриптах назначены функции-обработчики. Зарегистрированные события остаются когда фоновая страница выгружена из памяти, но остальные значения сбрасываются. Если нужно хранить постоянные данные при использовании страницы событий, используйте storage API.
  • -
-
persistent +

Двоичное значение (Boolean).

+
    +
  • + true определяет, что фоновая страница должна храниться + в памяти с момента, когда загрузилось расширение или запустился + браузер и до того, как расширение будет удалено или выключено, или + браузер будет закрыт (то есть фоновая страница постоянна). +
  • +
  • + false определяет, что фоновая страница может быть + выгружена из памяти во время бездействия и создана заново, когда + будет нужна. Такие фоновые страницы часто называются «Страницами + Событий» (Event Pages) — потому, что они загружаются в память только + для того, чтобы обрабатывать события, для которых в фоновых скриптах + назначены функции-обработчики. Зарегистрированные события остаются + когда фоновая страница выгружена из памяти, но остальные значения + сбрасываются. Если нужно хранить постоянные данные при использовании + страницы событий, используйте + storage API. +
  • +
+
-

Примеры

+## Примеры -
  "background": {
+```json
+  "background": {
     "scripts": ["jquery.js", "my-background.js"]
-  }
+ } +``` -

Загрузит два фоновых скрипта.

+Загрузит два фоновых скрипта. -
  "background": {
+```json
+  "background": {
     "page": "my-background.html"
-  }
+ } +``` -

Загрузит файл фоновой страницы.

+Загрузит файл фоновой страницы. -

Совместимость с браузерами

-

{{Compat}}

+## Совместимость с браузерами + +{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.md index 6ef4cec60a398b..b62eff673bfc3a 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.md @@ -7,108 +7,129 @@ tags: - Расширение translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy --- -
{{AddonSidebar}}
+{{AddonSidebar}} - - - - - - - - - - - - - - + + + + + + + + + + + + + +
ТипСтрока
ОбязателенНет
Пример -
-"content_security_policy": "default-src 'self'"
-
ТипСтрока
ОбязателенНет
Пример +
+"content_security_policy": "default-src 'self'"
+
-

Политика защиты содержимого применяется к расширениям автоматически. Изначальная политика защиты содержимого ограничивает источники, из которых расширение может загружать <script> и <object> ресурсы, а так же препятствует потенциально опасным практикам, например использованию eval(). Смотрите изначальные правила защиты содержимого, чтобы узнать о конкретных последствиях применения изначальных правил.

+Политика защиты содержимого применяется к расширениям автоматически. Изначальная политика защиты содержимого ограничивает источники, из которых расширение может загружать [\"`: -
"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"
+```json +"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'" +``` -

Оставляет изначальные правила, но так же требует, чтобы могли загружаться только изображения, запакованные вместе с расширением:

+Оставляет изначальные правила, но так же требует, чтобы могли загружаться только изображения, запакованные вместе с расширением: -
"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"
+```json +"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'" +``` -

Разрешает загрузку только тех ресурсов, которые были запакованы вместе с расширением:

+Разрешает загрузку только тех ресурсов, которые были запакованы вместе с расширением: -
"content_security_policy": "default-src 'self'"
-
+```json +"content_security_policy": "default-src 'self'" +``` -

Недопустимые примеры

+### Недопустимые примеры -

Политика, не включающая "object-src" директиву:

+Политика, не включающая `"object-src"` директиву: -
"content_security_policy": "script-src 'self' https://*.jquery.com;"
+```json +"content_security_policy": "script-src 'self' https://*.jquery.com;" +``` -

Политика, не включающая ключевое слово "self" в "script-src" директиве:

+Политика, не включающая ключевое слово `"self"` в `"script-src"` директиве: -
"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"
+```json +"content_security_policy": "script-src https://*.jquery.com; object-src 'self'" +``` -

Использование отличной от https схемы для загрузки удалённых ресурсов:

+Использование отличной от `https` схемы для загрузки удалённых ресурсов: -
"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"
+```json +"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'" +``` -

Использование универсального символа в связке с публичным доменным суффиксом:

+Использование универсального символа в связке с публичным доменным суффиксом: -
"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'"
+```json +"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'" +``` -

Указание схемы без хоста:

+Указание схемы без хоста: -
"content_security_policy": "script-src 'self' https:; object-src 'self'"
+```json +"content_security_policy": "script-src 'self' https:; object-src 'self'" +``` -

Использование неподдерживаемого ключевого слова 'unsafe-inline':

+Использование неподдерживаемого ключевого слова `'unsafe-inline'`: -
"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"
+```json +"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'" +``` -

1. Примечание: Работающие примеры демонстрируют правильное написание политики защиты содержимого. Тем не менее, расширения с политикой, включающей ключевые словами 'unsafe-eval', 'unsafe-inline', разрешающей загрузку удалённых скриптов и ресурсов, а так же blob файлов не будут допущены к распространению на addons.mozilla.org из-за значительных проблем с безопасностью.

+1\. _Примечание: Работающие примеры демонстрируют правильное написание политики защиты содержимого. Тем не менее, расширения с политикой, включающей ключевые словами 'unsafe-eval', 'unsafe-inline', разрешающей загрузку удалённых скриптов и ресурсов, а так же blob файлов не будут допущены к распространению на addons.mozilla.org из-за значительных проблем с безопасностью._ -

Browser compatibility

-

{{Compat}}

+## Browser compatibility + +{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/description/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/description/index.md index 11b8ccd44aa8bb..71153e87635cfa 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/description/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/description/index.md @@ -7,35 +7,39 @@ tags: - description translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/description --- -
{{AddonSidebar}}
+{{AddonSidebar}} - - - - - - - - - - - - - - + + + + + + + + + + + + + +
ТипString
ОбязательныйНет
Пример -
-"description": "Заменяет картинки на картинки с котиками."
-
ТипString
ОбязательныйНет
Пример +
+"description": "Заменяет картинки на картинки с котиками."
+
-

Краткое описание дополнения, предназначенное для показа в интерфейсе браузера.

+Краткое описание дополнения, предназначенное для показа в интерфейсе браузера. -

Это локализуемое свойство.

+Это [локализуемое свойство](/ru/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json). -

Пример

+## Пример -
"description": "Заменяет картинки на картинки с котиками."
+```json +"description": "Заменяет картинки на картинки с котиками." +``` -

Совместимость с браузерами

-

{{Compat}}

+## Совместимость с браузерами + +{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/icons/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/icons/index.md index ecfde3119f648a..d8dfb9b28cfab1 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/icons/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/icons/index.md @@ -9,69 +9,74 @@ tags: - Расширения translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/icons --- -
{{AddonSidebar}}
+{{AddonSidebar}} - - - - - - - - - - - - + + + + + + + + + + + - - +} + + +
ТипObject
ОбязательныйНет
Пример -
+  
ТипObject
ОбязательныйНет
Пример +
 "icons": {
   "48": "icon.png",
   "96": "icon@2x.png"
-}
-
-

Ключ icons определяет, какие иконки (значки) будет использовать ваше дополнение. Эти иконки будут использоваться при показе вашего дополнения в менеджерах компонентов, таких как Менеджер Дополнений.

+Ключ `icons` определяет, какие иконки (значки) будет использовать ваше дополнение. Эти иконки будут использоваться при показе вашего дополнения в менеджерах компонентов, таких как Менеджер Дополнений. -

Он содержит информацию вида ключ-значение со следующими данными: размер изображения в пикселях и путь к соответствующему изображению относительно директории, в которой содержится дополнение.

+Он содержит информацию вида ключ-значение со следующими данными: размер изображения в пикселях и путь к соответствующему изображению относительно директории, в которой содержится дополнение. -

Если иконки не предоставлены с помощью этого ключа icons, вместо них будет использоваться стандартная иконка для расширений.

+Если иконки не предоставлены с помощью этого ключа `icons`, вместо них будет использоваться стандартная иконка для расширений. -

Вы должны указать по крайней мере одну главную иконку, в идеале размером 48х48 пикселей. Эта иконка будет использоваться по умолчанию в Менеджере Дополнений. Конечно, можно добавить иконки любого размера, и Firefox постарается найти лучшую из них для показа в разных компонентах.

+Вы должны указать по крайней мере одну главную иконку, в идеале размером 48х48 пикселей. Эта иконка будет использоваться по умолчанию в Менеджере Дополнений. Конечно, можно добавить иконки любого размера, и Firefox постарается найти лучшую из них для показа в разных компонентах. -

Firefox учитывает разрешение экрана, когда выбирает иконку. Чтобы получить наилучший результат на мониторах с большим разрешением, использующих технологию Retina display, добавьте для каждой иконки версию с размерами в два раза больше.

+Firefox учитывает разрешение экрана, когда выбирает иконку. Чтобы получить наилучший результат на мониторах с большим разрешением, использующих технологию Retina display, добавьте для каждой иконки версию с размерами в два раза больше. -

Пример

+## Пример -

Ключи в объекте icons определяют размеры иконок в пикселях, значения - относительный путь к файлам с изображениями. Этот пример содержит иконку размером 48х48 пикселей и увеличенную версию для мониторов высокого разрешения.

+Ключи в объекте icons определяют размеры иконок в пикселях, значения - относительный путь к файлам с изображениями. Этот пример содержит иконку размером 48х48 пикселей и увеличенную версию для мониторов высокого разрешения. -
"icons": {
+```json
+"icons": {
   "48": "icon.png",
   "96": "icon@2x.png"
-}
- -

SVG

- -

В качестве иконки можно использовать файл SVG. Тогда браузер будет масштабировать иконку так, чтобы она подходила к компоненту, в котором она используется. Но есть два предостережения:

- -
    -
  1. В файле изображения должен быть определён viewBox. Например: -
    <svg viewBox="0 0 48 48" width="48" height="48" ...
    -
  2. -
  3. Даже в том случае, если используется всего один файл, нужно определить его для разных размеров иконки в манифесте. Например: -
    "icons": {
    -  "48": "icon.svg",
    -  "96": "icon.svg"
    -}
    -
  4. -
- -
-

Если вы используете программу Inkscape или подобную ей для создания SVG, сохраняйте изображение как "Простой SVG". Иначе Firefox может запутаться во множестве специальных пространств имён и не отобразить картинку.

-
- -

Совместимость с браузерами

-

{{Compat}}

+} +``` + +## SVG + +В качестве иконки можно использовать файл SVG. Тогда браузер будет масштабировать иконку так, чтобы она подходила к компоненту, в котором она используется. Но есть два предостережения: + +1. В файле изображения должен быть определён viewBox. Например: + + ```html + **Примечание:** Если вы используете программу Inkscape или подобную ей для создания SVG, сохраняйте изображение как "Простой SVG". Иначе Firefox может запутаться во множестве специальных пространств имён и не отобразить картинку. + +## Совместимость с браузерами + +{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/index.md index ffff0c6bc9b7a3..964ca5f2c64045 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/index.md @@ -10,49 +10,46 @@ tags: - Расширения translation_of: Mozilla/Add-ons/WebExtensions/manifest.json --- -

{{AddonSidebar}}

+{{AddonSidebar}} -
-

В этой статье описан файл manifest.json для веб-расширений. Если вы ищете информацию о manifest.json для Прогрессивных веб-приложений (PWAs), смотрите статью Манифест веб-приложения.

-
+> **Примечание:** В этой статье описан файл manifest.json для веб-расширений. Если вы ищете информацию о manifest.json для Прогрессивных веб-приложений (PWAs), смотрите статью [Манифест веб-приложения](/ru/docs/Web/Манифест). -

Файл manifest.json это единственный файл, который обязательно должен быть в каждом расширении, использующем API Веб-расширения (WebExtension APIs).

+Файл `manifest.json` это единственный файл, который обязательно должен быть в каждом расширении, использующем API Веб-расширения (WebExtension APIs). -

Используя manifest.json, вы определяете базовые метаданные о расширении, такие как имя и версия. Также можно определить некоторые аспекты функциональности (такие, как фоновые скрипты, контент скрипты и действия браузера).

+Используя manifest.json, вы определяете базовые метаданные о расширении, такие как имя и версия. Также можно определить некоторые аспекты функциональности (такие, как фоновые скрипты, контент скрипты и действия браузера). -

Это файл в формате JSON, но в нём можно использовать комментарии, каждая строка которых должна начинаться с "//".

+Это файл в формате [JSON](ru/docs/Glossary/JSON), но в нём можно использовать комментарии, каждая строка которых должна начинаться с "`//`". -

Список полей manifest.json

+## Список полей manifest.json -

Поддерживаемые manifest.json поля перечислены ниже:

+Поддерживаемые `manifest.json` поля перечислены ниже: -
{{ListSubpages ("/en-US/Add-ons/WebExtensions/manifest.json") }}
+{{ListSubpages ("/en-US/Add-ons/WebExtensions/manifest.json") }} -

Примечания о полях manifest.json

+### Примечания о полях manifest.json -
    -
  • Поля "manifest_version", "version" и "name" являются обязательными.
  • -
  • Поле "default_locale" обязательно, если есть папка "_locales", иначе его нужно опустить.
  • -
  • Поле "browser_specific_settings" не поддерживается Google Chrome.
  • -
+- Поля `"manifest_version"`, `"version"` и `"name"` являются обязательными. +- Поле `"default_locale"` обязательно, если есть папка `"_locales"`, иначе его нужно опустить. +- Поле `"browser_specific_settings"` не поддерживается Google Chrome. -

Доступ к полям manifest.json во время выполнения

+### Доступ к полям manifest.json во время выполнения -

C помощью функции JavaScript {{WebExtAPIRef("runtime.getManifest()")}} можно получить доступ к файлу манифеста расширения:

+C помощью функции JavaScript {{WebExtAPIRef("runtime.getManifest()")}} можно получить доступ к файлу манифеста расширения: -
browser.runtime.getManifest().version;
+```js +browser.runtime.getManifest().version; +``` -

Пример

+## Пример -

В следующем блоке показан основной синтаксис некоторых часто используемых полей манифеста.

+В следующем блоке показан основной синтаксис некоторых часто используемых полей манифеста. -
-

Примечание: Этот пример не рассчитан для того, чтобы его скопировали и вставили в файл реального проекта. Выбор нужных полей зависит от особенностей создаваемого расширения.

-
+> **Примечание:** Этот пример не рассчитан для того, чтобы его скопировали и вставили в файл реального проекта. Выбор нужных полей зависит от особенностей создаваемого расширения. -

Если нужны примеры готовых расширений, смотрите Примеры расширений.

+Если нужны примеры готовых расширений, смотрите [Примеры расширений](/ru/docs/Mozilla/Add-ons/WebExtensions/Examples). -
{
+```json
+{
   "browser_specific_settings": {
     "gecko": {
       "id": "addon@example.com",
@@ -124,14 +121,15 @@ translation_of: Mozilla/Add-ons/WebExtensions/manifest.json
   },
 
   "web_accessible_resources": ["images/my-image.png"]
-}
+} +``` -

Совместимость с браузерами

+## Совместимость с браузерами -

Для полного обзора всех полей манифеста и их содержимого, смотрите полную таблицу совместимости manifest.json с браузерами.

+Для полного обзора всех полей манифеста и их содержимого, смотрите [полную таблицу совместимости `manifest.json`](/ru/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json) с браузерами. -

{{Compat}}

+{{Compat}} -

Смотрите также

+## Смотрите также -

{{WebExtAPIRef("permissions")}} JavaScript API

+{{WebExtAPIRef("permissions")}} JavaScript API diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.md index 9897022d7601a3..20e0afec26ec2b 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.md @@ -7,36 +7,35 @@ tags: - manifest_version translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version --- -

{{AddonSidebar}}

+{{AddonSidebar}} - - - - - - - - - - - - - - + + + + + + + + + + + + + +
ТипNumber
ОбязательныйДа
Пример -
-"manifest_version": 2
-
ТипNumber
ОбязательныйДа
Пример
"manifest_version": 2
-

Этот ключ определяет версию файла "manifest.json", использующуюся в этом дополнении.

+Этот ключ определяет версию файла "manifest.json", использующуюся в этом дополнении. -

В настоящее время всегда должен быть 2

+В настоящее время всегда должен быть 2 -

Пример

+## Пример -
"manifest_version": 2
-
+```json +"manifest_version": 2 +``` -

Совместимость с браузерами

-

{{Compat}}

+## Совместимость с браузерами + +{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/name/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/name/index.md index 1fa55d97913920..b66dd9c691bc5a 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/name/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/name/index.md @@ -7,35 +7,35 @@ tags: - name translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/name --- -
{{AddonSidebar}}
+{{AddonSidebar}} - - - - - - - - - - - - - - + + + + + + + + + + + + + +
ТипString
ОбязательныйДа
Пример -
-"name": "My Extension"
-
ТипString
ОбязательныйДа
Пример
"name": "My Extension"
-

Имя расширения. Используется для идентификации расширения в интерфейсе браузера и на сайтах, подобных addons.mozilla.org.

+Имя расширения. Используется для идентификации расширения в интерфейсе браузера и на сайтах, подобных addons.mozilla.org. -

Это локализуемое свойство.

+Это [локализуемое свойство](/en-US/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json). -

Пример

+## Пример -
"name": "My Extension"
+```json +"name": "My Extension" +``` -

Совместимость с браузерами

-

{{Compat}}

+## Совместимость с браузерами + +{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md index 1bfeaeb694edfa..fb6563a55e0e57 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md @@ -7,184 +7,179 @@ tags: - Расширение translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions --- -

{{AddonSidebar}}

+{{AddonSidebar}} - - - - - - - - - - - - + + + + + + + + + + + - - +] + + +
ТипМассив
ОбязателенНет
Пример -
+  
ТипМассив
ОбязателенНет
Пример +
 "permissions": [
   "*://developer.mozilla.org/*",
   "webRequest"
-]
-
-

Используйте ключ permissions для получения дополнительных возможностей для вашего расширения. Значением ключа является массив строк, каждая из которых представляет собой запрос на какие-либо полномочия.

+Используйте ключ `permissions` для получения дополнительных возможностей для вашего расширения. Значением ключа является массив строк, каждая из которых представляет собой запрос на какие-либо полномочия. -

При объявлении запросов полномочий с помощью этого ключа, браузер проинформирует пользователей, о том какие полномочия необходимы расширению во время его установки, и задаст вопрос, согласны ли они выдать их расширению. Браузер так же даёт пользователям возможность изучить полномочия расширения уже после установки. Так как требование дополнительных полномочий может повлиять на желание пользователя использовать ваше расширение, решение использования конкретной функциональности может стоить тщательного рассмотрения. К примеру, есть смысл избегать запрашивания необязательных полномочий, и предоставлять информацию о том, зачем вашему расширению нужны какие-либо полномочия в описании расширения. Более подробная информация о проблемах, которые вам стоит рассмотреть касательно этой темы, предоставлена в статье Запрашивание правильных полномочий.

+При объявлении запросов полномочий с помощью этого ключа, браузер проинформирует пользователей, о том какие полномочия необходимы расширению во время его установки, и задаст вопрос, согласны ли они выдать их расширению. Браузер так же даёт пользователям возможность изучить полномочия расширения уже после установки. Так как требование дополнительных полномочий может повлиять на желание пользователя использовать ваше расширение, решение использования конкретной функциональности может стоить тщательного рассмотрения. К примеру, есть смысл избегать запрашивания необязательных полномочий, и предоставлять информацию о том, зачем вашему расширению нужны какие-либо полномочия в описании расширения. Более подробная информация о проблемах, которые вам стоит рассмотреть касательно этой темы, предоставлена в статье [Запрашивание правильных полномочий](/ru/docs/Mozilla/Add-ons/WebExtensions/Request_the_right_permissions). -

Значение ключа может содержать три вида запросов полномочий:

+Значение ключа может содержать три вида запросов полномочий: -
    -
  • Запрос на полномочия для хоста
  • -
  • Запрос на API полномочия
  • -
  • Запрос на activeTab полномочия
  • -
+- Запрос на полномочия для хоста +- Запрос на API полномочия +- Запрос на activeTab полномочия -

Запрос полномочий для хоста

+## Запрос полномочий для хоста -

Запрос на полномочия для хоста объявляется через шаблоны совпадения, где каждый шаблон определяет группу URL, при посещении которых расширение будет иметь эти дополнительные полномочия. Например, запрос на полномочия для хоста может быть задан подобной строкой "*://developer.mozilla.org/*".

+Запрос на полномочия для хоста объявляется через [шаблоны совпадения](/ru/docs/Mozilla/Add-ons/WebExtensions/Match_patterns), где каждый шаблон определяет группу URL, при посещении которых расширение будет иметь эти дополнительные полномочия. Например, запрос на полномочия для хоста может быть задан подобной строкой `"*://developer.mozilla.org/*"`. -

Полномочия для хоста включают:

+Полномочия для хоста включают: -
    -
  • Возможность выполнять XMLHttpRequest и fetch запросы на ресурсы, которые имеют заданный origin, не испытывая cross-origin ограничений (даже для запросов, выполняемых из встраиваемого скрипта)
  • -
  • Возможность встраивать скрипты программным путём, используя tabs.executeScript, на веб-страницах загруженных с заданного origin
  • -
  • Возможность обрабатывать события из webRequest API для заданных хостов
  • -
  • Доступ к cookies на заданных хостах, используя cookies API, при условии получения дополнительного "cookies" API полномочия.
  • -
  • Возможность обходить защиту от слежения, при условии полностью указанного хоста, без использования универсального символа *. Не будет работать с <all_urls>.
  • -
+- Возможность выполнять [XMLHttpRequest](/ru/docs/Web/API/XMLHttpRequest) и [fetch](/ru/docs/Web/API/Fetch_API) запросы на ресурсы, которые имеют заданный origin, не испытывая cross-origin ограничений (даже для запросов, выполняемых из встраиваемого скрипта) +- Возможность встраивать скрипты программным путём, используя [tabs.executeScript](/ru/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript), на веб-страницах загруженных с заданного origin +- Возможность обрабатывать события из [webRequest](/ru/docs/Mozilla/Add-ons/WebExtensions/API/webRequest) API для заданных хостов +- Доступ к cookies на заданных хостах, используя [cookies](/ru/Add-ons/WebExtensions/API/cookies) API, при условии получения дополнительного "cookies" API полномочия. +- Возможность обходить защиту от слежения, при условии полностью указанного хоста, без использования универсального символа `*`. Не будет работать с ``. -

В Firefox, начиная с версии 56, расширения автоматически получают полномочия для своего собственного хоста, который имеет вид:

+В Firefox, начиная с версии 56, расширения автоматически получают полномочия для своего собственного хоста, который имеет вид: -
moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
+``` +moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/ +``` -

где 60a20a9b-1ad4-af49-9b6c-c64c98c37920 - внутреннее ID расширения. Расширение может получить это URL программным путём, через вызов метода extension.getURL():

+где `60a20a9b-1ad4-af49-9b6c-c64c98c37920` - внутреннее ID расширения. Расширение может получить это URL программным путём, через вызов метода [extension.getURL()](/ru/docs/Mozilla/Add-ons/WebExtensions/API/extension/getURL): -
browser.extension.getURL("");
+```js
+browser.extension.getURL("");
 // moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
-
- -

Запрос на API полномочия

- -

Запрос на API полномочия объявляется через ключевые слова, каждое из которых представляет собой название WebExtension API, доступ к которому необходим расширению.

- -

Следующие ключевые слова доступны на данный момент:

- -
    -
  • activeTab
  • -
  • alarms
  • -
  • background
  • -
  • bookmarks
  • -
  • browserSettings
  • -
  • browsingData
  • -
  • clipboardRead
  • -
  • clipboardWrite
  • -
  • contentSettings
  • -
  • contextMenus
  • -
  • contextualIdentities
  • -
  • cookies
  • -
  • debugger
  • -
  • dns
  • -
  • downloads
  • -
  • downloads.open
  • -
  • find
  • -
  • geolocation
  • -
  • history
  • -
  • identity
  • -
  • idle
  • -
  • management
  • -
  • menus
  • -
  • menus.overrideContext
  • -
  • nativeMessaging
  • -
  • notifications
  • -
  • pageCapture
  • -
  • pkcs11
  • -
  • privacy
  • -
  • proxy
  • -
  • search
  • -
  • sessions
  • -
  • storage
  • -
  • tabHide
  • -
  • tabs
  • -
  • theme
  • -
  • topSites
  • -
  • unlimitedStorage
  • -
  • webNavigation
  • -
  • webRequest
  • -
  • webRequestBlocking
  • -
+``` -

В большинстве случаев полномочие просто делает возможным доступ к определённому API, за исключением следующих ситуаций:

+## Запрос на API полномочия -
    -
  • tabs предоставляет доступ к привилегированным частям tabs API: Tab.url, Tab.title, and Tab.faviconUrl. В Firefox, вам так же понадобятся tabs полномочия, если вы собираетесь использовать url ключ в параметре queryInfo для tabs.query() метода. Весь остальной tabs API доступен без запрашивания каких-либо полномочий.
  • -
  • webRequestBlocking позволяет вам использовать "blocking" аргумент, для возможности изменять и отменять запросы.
  • -
  • downloads.open позволяет использовать {{WebExtAPIRef("downloads.open()")}} API.
  • -
  • tabHide позволяет использовать {{WebExtAPIRef("tabs.hide()")}} API.
  • -
+Запрос на API полномочия объявляется через ключевые слова, каждое из которых представляет собой название [WebExtension API](/ru/docs/Mozilla/Add-ons/WebExtensions/API), доступ к которому необходим расширению. -

Запрос на activeTab полномочия

+Следующие ключевые слова доступны на данный момент: -

Этот вид запроса объявляется через ключевое слово "activeTab". activeTab полномочия предоставляются расширению на активной в данный момент вкладке, и вступают в эффект только в момент, когда пользователь взаимодействует с расширением.

+- `activeTab` +- `alarms` +- `background` +- `bookmarks` +- `browserSettings` +- `browsingData` +- `clipboardRead` +- `clipboardWrite` +- `contentSettings` +- `contextMenus` +- `contextualIdentities` +- `cookies` +- `debugger` +- `dns` +- `downloads` +- `downloads.open` +- `find` +- `geolocation` +- `history` +- `identity` +- `idle` +- `management` +- `menus` +- `menus.overrideContext` +- `nativeMessaging` +- `notifications` +- `pageCapture` +- `pkcs11` +- `privacy` +- `proxy` +- `search` +- `sessions` +- `storage` +- `tabHide` +- `tabs` +- `theme` +- `topSites` +- `unlimitedStorage` +- `webNavigation` +- `webRequest` +- `webRequestBlocking` -

"Взаимодействие пользователя" включает:

+В большинстве случаев полномочие просто делает возможным доступ к определённому API, за исключением следующих ситуаций: -
    -
  • Пользователь нажимает на кнопку расширения на панели инструментов или адресной строке
  • -
  • Пользователь взаимодействует с контекстным меню расширения
  • -
  • Пользователь нажимает комбинацию клавиш, ассоциированную с расширением
  • -
+- `tabs` предоставляет доступ к [привилегированным частям `tabs` API](/ru/Add-ons/WebExtensions/API/tabs): `Tab.url`, `Tab.title`, and `Tab.faviconUrl`. В Firefox, вам так же понадобятся `tabs` полномочия, если вы собираетесь использовать `url` ключ в параметре `queryInfo` для [`tabs.query()`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) метода. Весь остальной `tabs` API доступен без запрашивания каких-либо полномочий. +- `webRequestBlocking` позволяет вам использовать "blocking" аргумент, для возможности [изменять и отменять запросы](/ru/Add-ons/WebExtensions/API/WebRequest). +- `downloads.open` позволяет использовать {{WebExtAPIRef("downloads.open()")}} API. +- `tabHide` позволяет использовать {{WebExtAPIRef("tabs.hide()")}} API. -

activeTab полномочия включают:

+## Запрос на activeTab полномочия -
    -
  • Возможность программно встраивать JavaScript или CSS на страницу, используя browser.tabs.executeScript и browser.tabs.insertCSS
  • -
  • Получение доступа к привилегированным частям tabs API для активной вкладки: Tab.url, Tab.title и Tab.faviconUrl.
  • -
+Этот вид запроса объявляется через ключевое слово `"activeTab"`. `activeTab` полномочия предоставляются расширению на активной в данный момент вкладке, и вступают в эффект только в момент, когда пользователь взаимодействует с расширением. -

Цель этих полномочий – позволить расширению выполнять наиболее распространённые сценарии работы, без необходимости выдавать ему более серьёзные привилегии, так как большинство расширений задумано для выполнения какой-либо работы на активной вкладке после взаимодействия с пользователем. Например, представьте расширение, которое встраивает скрипт на текущую страницу, после того как пользователь нажимает на кнопку расширения на панели инструментов. Если бы activeTab полномочий не существовало, расширению бы пришлось запрашивать <all_urls>. Но они бы давали расширению намного больше привилегий, чем ему было бы необходимо: расширение могло бы встраивать скрипты на любую вкладку и в любой момент, когда пожелает.

+"Взаимодействие пользователя" включает: -

Заметьте, что вы сможете иметь доступ к привилегированному tab API, только на момент взаимодействия расширения с пользователем, и пока вкладка не изменила своё состояние. То есть расширение перестанет иметь данные привилегии при изменении адреса страницы или каком-либо другом событии с вкладкой.

+- Пользователь нажимает на кнопку расширения на панели инструментов или адресной строке +- Пользователь взаимодействует с контекстным меню расширения +- Пользователь нажимает комбинацию клавиш, ассоциированную с расширением -

Обычно вкладкой, получающей activeTab полномочия, является активная в данный момент вкладка, за исключением одного случая. menus API позволяет расширению создавать элементы контекстного меню, которые будут появляться непосредственно при нажатии на вкладку (элемент на панели вкладок, при нажатии на который изменяется активная вкладка). Если пользователь вызывает контекстное меню на этом элементе, тогда activeTab полномочия выдадутся для вкладки, по которой было произведено нажатие, несмотря на то, что она могла бы не является активной ({{bug(1446956)}} начиная с Firefox версии 63).

+activeTab полномочия включают: -

Доступ к буферу обмена

+- Возможность программно встраивать JavaScript или CSS на страницу, используя [`browser.tabs.executeScript`](/ru/Add-ons/WebExtensions/API/tabs/executeScript) и [`browser.tabs.insertCSS`](/ru/Add-ons/WebExtensions/API/tabs/insertCSS) +- Получение доступа к привилегированным частям tabs API для активной вкладки: `Tab.url`, `Tab.title` и `Tab.faviconUrl`. -

Два полномочия предоставляют расширению привилегии для взаимодействия с буфером обмена:

+Цель этих полномочий – позволить расширению выполнять наиболее распространённые сценарии работы, без необходимости выдавать ему более серьёзные привилегии, так как большинство расширений задумано для выполнения какой-либо работы на активной вкладке после взаимодействия с пользователем. Например, представьте расширение, которое встраивает скрипт на текущую страницу, после того как пользователь нажимает на кнопку расширения на панели инструментов. Если бы `activeTab` полномочий не существовало, расширению бы пришлось запрашивать ``. Но они бы давали расширению намного больше привилегий, чем ему было бы необходимо: расширение могло бы встраивать скрипты на любую вкладку и в любой момент, когда пожелает. -
    -
  • clipboardWrite: для записи в буфер обмена с помощью {{DOMxRef("Clipboard.write()")}}, {{DOMxRef("Clipboard.writeText()")}}, document.execCommand("copy") или document.execCommand("cut")
  • -
  • clipboardRead: для чтения из буфера обмена с помощью {{DOMxRef("Clipboard.read()")}}, {{DOMxRef("Clipboard.readText()")}} или document.execCommand("paste")
  • -
+Заметьте, что вы сможете иметь доступ к привилегированному tab API, только на момент взаимодействия расширения с пользователем, и пока вкладка не изменила своё состояние. То есть расширение перестанет иметь данные привилегии при изменении адреса страницы или каком-либо другом событии с вкладкой. -

Смотрите Взаимодействие с буфером обмена для более подробной информации.

+Обычно вкладкой, получающей `activeTab` полномочия, является активная в данный момент вкладка, за исключением одного случая. [`menus`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/menus) API позволяет расширению создавать элементы контекстного меню, которые будут появляться непосредственно при нажатии на вкладку (элемент на панели вкладок, при нажатии на который изменяется активная вкладка). Если пользователь вызывает контекстное меню на этом элементе, тогда `activeTab` полномочия выдадутся для вкладки, по которой было произведено нажатие, несмотря на то, что она могла бы не является активной ({{bug(1446956)}} начиная с Firefox версии 63). -

Неограниченное хранилище

+## Доступ к буферу обмена -

Полномочие unlimitedStorage:

+Два полномочия предоставляют расширению привилегии для взаимодействия с буфером обмена: -
    -
  • Позволяет расширению превышать любые ограничения размера хранимой информации для {{WebExtAPIRef("storage.local")}} API
  • -
  • В Firefox, позволяет расширению создавать "persistent" базу данных IndexedDB, не запрашивая разрешения у пользователя в момент её создания.
  • -
- -

Примеры

- -
 "permissions": ["*://developer.mozilla.org/*"]
- -

Запрашивает полномочия для хостов, имеющих developer.mozilla.org в их URL.

- -
  "permissions": ["tabs"]
- -

Запрашивает доступ к привилегированным частям tabs API.

+- `clipboardWrite`: для записи в буфер обмена с помощью {{DOMxRef("Clipboard.write()")}}, {{DOMxRef("Clipboard.writeText()")}}, `document.execCommand("copy")` или `document.execCommand("cut")` +- `clipboardRead`: для чтения из буфера обмена с помощью {{DOMxRef("Clipboard.read()")}}, {{DOMxRef("Clipboard.readText()")}} или `document.execCommand("paste")` -
  "permissions": ["*://developer.mozilla.org/*", "tabs"]
+Смотрите [Взаимодействие с буфером обмена](/ru/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard) для более подробной информации. -

Запрашивает несколько типов полномочий из примеров выше.

+## Неограниченное хранилище -

Browser compatibility

-

{{Compat}}

+Полномочие `unlimitedStorage`: + +- Позволяет расширению превышать любые ограничения размера хранимой информации для {{WebExtAPIRef("storage.local")}} API +- В Firefox, позволяет расширению создавать ["persistent" базу данных IndexedDB](/ru/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria#Firefox_specifics), не запрашивая разрешения у пользователя в момент её создания. + +## Примеры + +```json + "permissions": ["*://developer.mozilla.org/*"] +``` + +Запрашивает полномочия для хостов, имеющих developer.mozilla.org в их URL. + +```json + "permissions": ["tabs"] +``` + +Запрашивает доступ к привилегированным частям `tabs` API. + +```json + "permissions": ["*://developer.mozilla.org/*", "tabs"] +``` + +Запрашивает несколько типов полномочий из примеров выше. + +## Browser compatibility + +{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/version/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/version/index.md index 16cadceadcac89..599b9b0e60d7f4 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/version/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/version/index.md @@ -7,40 +7,38 @@ tags: - version translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/version --- -

{{AddonSidebar}}

+{{AddonSidebar}} - - - - - - - - - - - - - - + + + + + + + + + + + + + +
ТипString
ОбязательныйДа
Пример -
-"version": "0.1"
-
ТипString
ОбязательныйДа
Пример
"version": "0.1"
-

Версия дополнения, отформатированная как числа и символы ASCII, разделённые точками. Подробнее о формате версий смотрите страницу Version format.

+Версия дополнения, отформатированная как числа и символы ASCII, разделённые точками. Подробнее о формате версий смотрите страницу [Version format](/ru/docs/Toolkit_version_format). -

Обратите внимание, что синтаксис ключа version для Chrome более ограниченный, чем у Firefox:

+Обратите внимание, что [синтаксис ключа `version` для Chrome](https://developer.chrome.com/extensions/manifest/version) более ограниченный, чем у Firefox: -
    -
  • значения version которые действительны для Chrome, всегда будут действительны для Firefox
  • -
  • значения version которые действительны для Firefox, могут быть не действительны для Chrome
  • -
+- значения `version` которые действительны для Chrome, всегда будут действительны для Firefox +- значения `version` которые действительны для Firefox, могут быть не действительны для Chrome -

Пример

+## Пример -
"version": "0.1"
+```json +"version": "0.1" +``` -

Совместимость с браузерами

-

{{Compat}}

+## Совместимость с браузерами + +{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/match_patterns/index.md b/files/ru/mozilla/add-ons/webextensions/match_patterns/index.md index e6ba8eeab1e082..41a46fb0919a28 100644 --- a/files/ru/mozilla/add-ons/webextensions/match_patterns/index.md +++ b/files/ru/mozilla/add-ons/webextensions/match_patterns/index.md @@ -3,424 +3,93 @@ title: Шаблоны совпадения в расширении slug: Mozilla/Add-ons/WebExtensions/Match_patterns translation_of: Mozilla/Add-ons/WebExtensions/Match_patterns --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

Шаблоны совпадения - являются способом обозначения необходимых групп URL. Они используются в нескольких местах в WebExtensions API, главным образом для объявления какие веб-страницы должны загружать встраиваемые скрипты и по каким URL необходимо ожидать событий из webRequest API.

+Шаблоны совпадения - являются способом обозначения необходимых групп URL. Они используются в нескольких местах в WebExtensions API, главным образом для объявления какие веб-страницы должны загружать [встраиваемые скрипты](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts) и по каким URL необходимо ожидать событий из [`webRequest`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/webRequest) API. -

API, которое использует шаблоны совпадения, обычно принимает их списками, и выполняет соответствующие действия, если URL имеет совпадение с одним из шаблонов. Например, взгляните на content_scripts ключ в manifest.json.

+API, которое использует шаблоны совпадения, обычно принимает их списками, и выполняет соответствующие действия, если URL имеет совпадение с одним из шаблонов. Например, взгляните на [`content_scripts`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts) ключ в manifest.json. -

Структура шаблона совпадения

+## Структура шаблона совпадения -
-

Заметьте: Некоторые браузеры не поддерживают определённые схемы.
- Смотрите Browser compatibility table для дополнительной информации.

-
+> **Примечание:** **Заметьте:** Некоторые браузеры не поддерживают определённые схемы. +> Смотрите [Browser compatibility table](#Browser_compatibility) для дополнительной информации. -

Все шаблоны совпадения объявляются в виде строк. За исключением специального <all_urls> шаблона, шаблоны совпадения состоят из трёх компонентов: схема, хост и путь. Схема и хост разделяются с помощью ://.

+Все шаблоны совпадения объявляются в виде строк. За исключением специального [``](/ru/Add-ons/WebExtensions/Match_patterns#%3Call_urls%3E) шаблона, шаблоны совпадения состоят из трёх компонентов: _схема_, _хост_ и _путь_. Схема и хост разделяются с помощью `://`. -
<схема>://<хост><путь>
+``` +<схема>://<хост><путь> +``` -

Схема

+### Схема -

Компонент схема может принимать один из двух видов:

+Компонент _схема_ может принимать один из двух видов: - - - - - - - - - - - - - - - - - -
ВидСовпадение
*Только "http" and "https", так же "ws" и "wss" в некоторых браузерах.
Одно из http, https, ws, wss, ftp, ftps, data или file.Только данная схема.
+| Вид | Совпадение | +| ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `*` | Только "http" and "https", так же ["ws" и "wss"](/ru/docs/Web/API/WebSockets_API) в некоторых браузерах. | +| Одно из `http`, `https`, `ws`, `wss`, `ftp`, `ftps`, `data` или `file`. | Только данная схема. | -

Хост

+### Хост -

Компонент хост может принимать один из трёх видов:

+Компонент _хост_ может принимать один из трёх видов: - - - - - - - - - - - - - - - - - - - - - -
FormMatches
*Любой хост.
*. за которыми следует частичное имя хоста.Данный хост и любые его субдомены.
Полное название хоста без *.Только данный хост.
+| Form | Matches | +| --------------------------------------------- | ---------------------------------- | +| `*` | Любой хост. | +| `*.` за которыми следует частичное имя хоста. | Данный хост и любые его субдомены. | +| Полное название хоста без `*`. | Только данный хост. | -

Хост не должен включать в себя значение порта.

+_Хост_ не должен включать в себя значение порта. -

Хост не обязателен, если схема задана, как "file".

+_Хост_ не обязателен, если _схема_ задана, как "file". -

Заметьте, что * звёздочка (символ универсального значения) может быть написана только в начале строки.

+Заметьте, что `*` звёздочка (символ универсального значения) может быть написана только в начале строки. -

Путь

+### Путь -

Компонент путь должен начинаться с / символа.

+Компонент _путь_ должен начинаться с `/` символа. -

Вслед за ним он может иметь любую комбинацию символов и * звёздочек, которые позволено использовать для обозначения URL и строки параметров (начинается после ?). В отличии от хоста, путь может содержать * звёздочку в середине или в конце строки, и * звёздочка может появляться в строке более одного раза.

+Вслед за ним он может иметь любую комбинацию символов и `*` звёздочек, которые позволено использовать для обозначения URL и строки параметров (начинается после `?`). В отличии от _хоста_, _путь_ может содержать `*` звёздочку в середине или в конце строки, и `*` звёздочка может появляться в строке более одного раза. -

Значение пути сравнивается со строкой, которая представляет из себя URL и строку параметров. Если строка параметров присутствует в URL, тогда она отделяется от основного URL знаком ?. Если вы хотите иметь соответствие с URL на любом домене, где URL путь кончается на foo.bar, не зависимо от присутствия строки параметров, тогда вам нужно иметь массив шаблонов совпадений, например ['*://*/*foo.bar', '*://*/*foo.bar?*']. В этой ситуации необходимо использовать ?*, а не bar*, для того чтобы обозначить, что * будет применяться к строке параметров, а не к основной части URL пути.

+Значение _пути_ сравнивается со строкой, которая представляет из себя URL и [строку параметров](https://en.wikipedia.org/wiki/Query_string). Если строка параметров присутствует в URL, тогда она отделяется от основного URL знаком `?`. Если вы хотите иметь соответствие с URL на любом домене, где URL путь кончается на `foo.bar`, не зависимо от присутствия строки параметров, тогда вам нужно иметь массив шаблонов совпадений, например `['*://*/*foo.bar', '*://*/*foo.bar?*']`. В этой ситуации необходимо использовать `?*`, а не `bar*`, для того чтобы обозначить, что `*` будет применяться к строке параметров, а не к основной части URL пути. -

Ни идентификатор якоря, ни предшествующая ему #, не считаются частями пути.

+Ни [идентификатор якоря](https://en.wikipedia.org/wiki/Fragment_identifier), ни предшествующая ему `#`, не считаются частями _пути_. -

<all_urls>

+### \ -

Специальное значение <all_urls> совпадает со всеми URL, если они используются со следующими схемами: "http", "https", "ws", "wss", "ftp", "data", and "file".

+Специальное значение `` совпадает со всеми URL, если они используются со следующими схемами: "http", "https", "ws", "wss", "ftp", "data", and "file". -

Примеры

+## Примеры - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ШаблонПример совпаденияПример несовпадения
-

<all_urls>

+| Шаблон | Пример совпадения | Пример несовпадения | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ``Совпадение со всеми URL. | ` http://example.org/``https://a.org/some/path/``ws://sockets.somewhere.org/``wss://ws.example.com/stuff/``ftp://files.somewhere.org/``ftps://files.somewhere.org/ ` | `resource://a/b/c/` (неподдерживаемая схема) | +| `*://*/*`Совпадение со всеми HTTP, HTTPS и WebSocket URL. | ` http://example.org/``https://a.org/some/path/``ws://sockets.somewhere.org/``wss://ws.example.com/stuff/ ` | `ftp://ftp.example.org/` (несовпадающая схема)`ftps://ftp.example.org/` (несовпадающая схема)`file:///a/` (несовпадающая схема) | +| `*://*.mozilla.org/*`Совпадение со всеми HTTP, HTTPS и WebSocket URL, которые находятся на "mozilla.org" или одном из её субдоменов. | ` http://mozilla.org/``https://mozilla.org/``http://a.mozilla.org/``http://a.b.mozilla.org/``https://b.mozilla.org/path/``ws://ws.mozilla.org/``wss://secure.mozilla.org/something ` | `ftp://mozilla.org/` (несовпадающая схема)`http://mozilla.com/` (несовпадающий хост)`http://firefox.org/` (несовпадающий хост) | +| `*://mozilla.org/`Совпадение со всеми HTTP, HTTPS и WebSocket URL, которые находятся исключительно на "mozilla.org/". | ` http://mozilla.org/``https://mozilla.org/``ws://mozilla.org/``wss://mozilla.org/ ` | `ftp://mozilla.org/` (несовпадающая схема)`http://a.mozilla.org/` (несовпадающий хост)`http://mozilla.org/a` (несовпадающий путь) | +| `ftp://mozilla.org/`Совпадение только с "ftp\://mozilla.org/". | `ftp://mozilla.org` | `http://mozilla.org/` (несовпадающая схема)`ftp://sub.mozilla.org/` (несовпадающий хост)`ftp://mozilla.org/path` (несовпадающий путь) | +| `https://*/path`Совпадение со всеми HTTPS URL на любом хосте, чей путь точно соответствует "path". | ` https://mozilla.org/path``https://a.mozilla.org/path``https://something.com/path ` | `http://mozilla.org/path` (несовпадающая схема)`https://mozilla.org/path/` (несовпадающий путь)`https://mozilla.org/a` (несовпадающий путь)`https://mozilla.org/` (несовпадающий путь)`https://mozilla.org/path?foo=1` (несовпадающий путь из-за строки параметров) | +| `https://*/path/`Совпадение со всеми HTTPS URL на любом хосте, чей путь точно соответствует "path/" и не имеет строки параметров. | ` https://mozilla.org/path/``https://a.mozilla.org/path/``https://something.com/path `/ | `http://mozilla.org/path/` (несовпадающая схема)`https://mozilla.org/path` (несовпадающий путь)`https://mozilla.org/a` (несовпадающий путь)`https://mozilla.org/` (несовпадающий путь)` https://mozilla.org/path/``?foo=1 ` (несовпадающий путь из-за строки параметров) | +| `https://mozilla.org/*`Совпадение со всеми HTTPS URL только на домене "mozilla.org", с любым URL путём и строкой параметров. | ` https://mozilla.org/``https://mozilla.org/path``https://mozilla.org/another``https://mozilla.org/path/to/doc``https://mozilla.org/path/to/doc?foo=1 ` | `http://mozilla.org/path` (несовпадающая схема)`https://mozilla.com/path` (несовпадающий хост) | +| `https://mozilla.org/a/b/c/`Совпадение только с данным URL, или данным URL, имеющим идентификатор якоря. | ` https://mozilla.org/a/b/c/``https://mozilla.org/a/b/c/#section1 ` | Всё остальное. | +| `https://mozilla.org/*/b/*/`Совпадение только с HTTPS URL, которые находятся на "mozilla.org", чей путь имеет сегмент "b" где-то в середине. Совпадёт с URL со строкой параметров, если эта строка параметров заканчивается на `/`. | ` https://mozilla.org/a/b/c/``https://mozilla.org/d/b/f/``https://mozilla.org/a/b/c/d/``https://mozilla.org/a/b/c/d/#section1``https://mozilla.org/a/b/c/d/?foo=/``https://mozilla.org/a?foo=21314&bar=/b/&extra=c/ ` | `https://mozilla.org/b/*/` (несовпадающий путь)`https://mozilla.org/a/b/` (несовпадающий путь)`https://mozilla.org/a/b/c/d/?foo=bar` (несовпадающий путь из-за строки параметров) | +| `file:///blah/*`Совпадает с любым FILE URL, чей путь начинается с "blah". | ` file:///blah/``file:///blah/bleh ` | `file:///bleh/` (несовпадающий путь) | -

Совпадение со всеми URL.

-
-

http://example.org/

+### Недопустимые шаблоны совпадения -

https://a.org/some/path/

+| Недопустимый шаблон | Причина | +| ------------------------- | ---------------------------------------------------------------------- | +| `resource://path/` | Неподдерживаемая схема. | +| `https://mozilla.org` | Отсутствие пути. | +| `https://mozilla.*.org/` | "\*" в хосте должна присутствовать только в начале. | +| `https://*zilla.org/` | "\*" в хосте должен быть единственным символом или сопровождаться ".". | +| `http*://mozilla.org/` | "\*" в схеме должен быть единственным символом. | +| `https://mozilla.org:80/` | Хост не должен включать в себя номер порта. | +| `*://*` | Пустой путь: должно быть переписано, как "`*://*/*`". | +| `file://*` | Пустой путь: должно быть переписано, как "`file:///*`". | -

ws://sockets.somewhere.org/

+## Browser compatibility -

wss://ws.example.com/stuff/

+### scheme -

ftp://files.somewhere.org/

- -

ftps://files.somewhere.org/

-
-

resource://a/b/c/
- (неподдерживаемая схема)

-
-

*://*/*

- -

Совпадение со всеми HTTP, HTTPS и WebSocket URL.

-
-

http://example.org/

- -

https://a.org/some/path/

- -

ws://sockets.somewhere.org/

- -

wss://ws.example.com/stuff/

-
-

ftp://ftp.example.org/
- (несовпадающая схема)

- -

ftps://ftp.example.org/
- (несовпадающая схема)

- -

file:///a/
- (несовпадающая схема)

-
-

*://*.mozilla.org/*

- -

Совпадение со всеми HTTP, HTTPS и WebSocket URL, которые находятся на "mozilla.org" или одном из её субдоменов.

-
-

http://mozilla.org/

- -

https://mozilla.org/

- -

http://a.mozilla.org/

- -

http://a.b.mozilla.org/

- -

https://b.mozilla.org/path/

- -

ws://ws.mozilla.org/

- -

wss://secure.mozilla.org/something

-
-

ftp://mozilla.org/
- (несовпадающая схема)

- -

http://mozilla.com/
- (несовпадающий хост)

- -

http://firefox.org/
- (несовпадающий хост)

-
-

*://mozilla.org/

- -

Совпадение со всеми HTTP, HTTPS и WebSocket URL, которые находятся исключительно на "mozilla.org/".

-
-

http://mozilla.org/

- -

https://mozilla.org/

- -

ws://mozilla.org/

- -

wss://mozilla.org/

-
-

ftp://mozilla.org/
- (несовпадающая схема)

- -

http://a.mozilla.org/
- (несовпадающий хост)

- -

http://mozilla.org/a
- (несовпадающий путь)

-
-

ftp://mozilla.org/

- -

Совпадение только с "ftp://mozilla.org/".

-
ftp://mozilla.org -

http://mozilla.org/
- (несовпадающая схема)

- -

ftp://sub.mozilla.org/
- (несовпадающий хост)

- -

ftp://mozilla.org/path
- (несовпадающий путь)

-
-

https://*/path

- -

Совпадение со всеми HTTPS URL на любом хосте, чей путь точно соответствует "path".

-
-

https://mozilla.org/path

- -

https://a.mozilla.org/path

- -

https://something.com/path

-
-

http://mozilla.org/path
- (несовпадающая схема)

- -

https://mozilla.org/path/
- (несовпадающий путь)

- -

https://mozilla.org/a
- (несовпадающий путь)

- -

https://mozilla.org/
- (несовпадающий путь)

- -

https://mozilla.org/path?foo=1
- (несовпадающий путь из-за строки параметров)

-
-

https://*/path/

- -

Совпадение со всеми HTTPS URL на любом хосте, чей путь точно соответствует "path/" и не имеет строки параметров.

-
-

https://mozilla.org/path/

- -

https://a.mozilla.org/path/

- -

https://something.com/path/

-
-

http://mozilla.org/path/
- (несовпадающая схема)

- -

https://mozilla.org/path
- (несовпадающий путь)

- -

https://mozilla.org/a
- (несовпадающий путь)

- -

https://mozilla.org/
- (несовпадающий путь)

- -

https://mozilla.org/path/?foo=1
- (несовпадающий путь из-за строки параметров)

-
-

https://mozilla.org/*

- -

Совпадение со всеми HTTPS URL только на домене "mozilla.org", с любым URL путём и строкой параметров.

-
-

https://mozilla.org/

- -

https://mozilla.org/path

- -

https://mozilla.org/another

- -

https://mozilla.org/path/to/doc

- -

https://mozilla.org/path/to/doc?foo=1

-
-

http://mozilla.org/path
- (несовпадающая схема)

- -

https://mozilla.com/path
- (несовпадающий хост)

-
-

https://mozilla.org/a/b/c/

- -

Совпадение только с данным URL, или данным URL, имеющим идентификатор якоря.

-
-

https://mozilla.org/a/b/c/

- -

https://mozilla.org/a/b/c/#section1

-
Всё остальное.
-

https://mozilla.org/*/b/*/

- -

Совпадение только с HTTPS URL, которые находятся на "mozilla.org", чей путь имеет сегмент "b" где-то в середине. Совпадёт с URL со строкой параметров, если эта строка параметров заканчивается на /.

-
-

https://mozilla.org/a/b/c/

- -

https://mozilla.org/d/b/f/

- -

https://mozilla.org/a/b/c/d/

- -

https://mozilla.org/a/b/c/d/#section1

- -

https://mozilla.org/a/b/c/d/?foo=/

- -

https://mozilla.org/a?foo=21314&bar=/b/&extra=c/

-
-

https://mozilla.org/b/*/
- (несовпадающий путь)

- -

https://mozilla.org/a/b/
- (несовпадающий путь)

- -

https://mozilla.org/a/b/c/d/?foo=bar
- (несовпадающий путь из-за строки параметров)

-
-

file:///blah/*

- -

Совпадает с любым FILE URL, чей путь начинается с "blah".

-
-

file:///blah/

- -

file:///blah/bleh

-
file:///bleh/
- (несовпадающий путь)
- -

Недопустимые шаблоны совпадения

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Недопустимый шаблонПричина
resource://path/Неподдерживаемая схема.
https://mozilla.orgОтсутствие пути.
https://mozilla.*.org/"*" в хосте должна присутствовать только в начале.
https://*zilla.org/"*" в хосте должен быть единственным символом или сопровождаться ".".
http*://mozilla.org/"*" в схеме должен быть единственным символом.
https://mozilla.org:80/Хост не должен включать в себя номер порта.
*://*Пустой путь: должно быть переписано, как "*://*/*".
file://*Пустой путь: должно быть переписано, как "file:///*".
- -

Browser compatibility

- -

scheme

- - - -

{{Compat}}

+{{Compat}} diff --git a/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.md b/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.md index e354205b72f8f7..03135e3e9fc5aa 100644 --- a/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.md +++ b/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.md @@ -4,34 +4,29 @@ slug: Mozilla/Add-ons/WebExtensions/Modify_a_web_page translation_of: Mozilla/Add-ons/WebExtensions/Modify_a_web_page original_slug: Mozilla/Add-ons/WebExtensions/модификация_веб_страницы --- -

+{{AddonSidebar}} -
{{AddonSidebar}}
+Одним из наиболее распространённых вариантов использования расширений является внесение изменение в веб-страницу. К примеру, расширение может изменить стиль, применённый к странице, скрыть существующие или вставить на страницу дополнительные DOM-узлы. -

Одним из наиболее распространённых вариантов использования расширений является внесение изменение в веб-страницу. К примеру, расширение может изменить стиль, применённый к странице, скрыть существующие или вставить на страницу дополнительные DOM-узлы.

+Существует два способа сделать это используя WebExtensions API: -

Существует два способа сделать это используя WebExtensions API:

+- **Декларативно**: объявить шаблон, которому соответствует набор URL-адресов, и загрузить набор скриптов на страницы, которые попадают в под этот шаблон. +- **Программно**: используя JavaScript API, загрузить скрипт на страницу, из определённой вкладки. -
    -
  • Декларативно: объявить шаблон, которому соответствует набор URL-адресов, и загрузить набор скриптов на страницы, которые попадают в под этот шаблон.
  • -
  • Программно: используя JavaScript API, загрузить скрипт на страницу, из определённой вкладки.
  • -
+В любом случае, эти скрипты называются _контентными скриптами_, и отличаются от других скриптов, которые составляют расширение: -

В любом случае, эти скрипты называются контентными скриптами, и отличаются от других скриптов, которые составляют расширение:

+- Они получают доступ к малому подмножеству WebExtension API. +- Они получают прямой доступ к странице, на которой были загружены. +- Они взаимодействуют с остальными скриптами расширения, используя API сообщений. -
    -
  • Они получают доступ к малому подмножеству WebExtension API.
  • -
  • Они получают прямой доступ к странице, на которой были загружены.
  • -
  • Они взаимодействуют с остальными скриптами расширения, используя API сообщений.
  • -
+В этой статье мы рассмотрим оба способа загрузки скрипта. -

В этой статье мы рассмотрим оба способа загрузки скрипта.

+## Модификация страниц, подпадающих под URL-шаблон -

Модификация страниц, подпадающих под URL-шаблон

+Прежде всего создадим новую директорию, назовём её "modify-page". В этой директории, создадим файл "manifest.json", со следующим содержимым: -

Прежде всего создадим новую директорию, назовём её "modify-page". В этой директории, создадим файл "manifest.json", со следующим содержимым:

- -
{
+```json
+{
 
   "manifest_version": 2,
   "name": "modify-page",
@@ -44,41 +39,39 @@ original_slug: Mozilla/Add-ons/WebExtensions/модификация_веб_ст
     }
   ]
 
-}
+} +``` -

Ключ content_scripts - это как мы загружаем скрипты на страницы, соответствующие URL-шаблону. В нашем случае, content_scripts говорит браузеру загрузить скрипт "page-eater.js" на все страницы, начинающиеся с https://developer.mozilla.org/.

+Ключ [`content_scripts`](/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts) - это как мы загружаем скрипты на страницы, соответствующие URL-шаблону. В нашем случае, `content_scripts` говорит браузеру загрузить скрипт "page-eater.js" на все страницы, начинающиеся с . -
-

Поскольку свойство "js" ключа content_scripts это массив, вы можете использовать его, для внедрения более одного скрипта. Если вы сделаете это, страницы получат набор, как если бы эти скрипты были загружены самой страницей, они будут загружены в той же очерёдности, в которой они расположены в массиве.

-
+> **Примечание:** Поскольку свойство `"js"` ключа `content_scripts` это массив, вы можете использовать его, для внедрения более одного скрипта. Если вы сделаете это, страницы получат набор, как если бы эти скрипты были загружены самой страницей, они будут загружены в той же очерёдности, в которой они расположены в массиве. -
-

Ключ content_scripts также имеет свойство "css", которое вы можете использовать для вставки CSS-таблиц.

-
+> **Примечание:** Ключ `content_scripts` также имеет свойство `"css"`, которое вы можете использовать для вставки CSS-таблиц. -

Далее, создадим файл "page-eater.js", внутри директории "modify-page":

+Далее, создадим файл "page-eater.js", внутри директории "modify-page": -
document.body.textContent = "";
+```js
+document.body.textContent = "";
 
 var header = document.createElement('h1');
 header.textContent = "Эта страница была съедена";
-document.body.appendChild(header);
+document.body.appendChild(header); +``` -

Теперь установим расширение, и перейдём на страницу https://developer.mozilla.org/:

+Теперь [установим расширение](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox), и перейдём на страницу : -

{{EmbedYouTube("lxf2Tkg6U1M")}}

+{{EmbedYouTube("lxf2Tkg6U1M")}} -
-

Обратите внимание, несмотря на то, что в указанном видео, на странице addons.mozilla.org всё работает нормально, на текущий момент, для этого сайта, контентные скрипты заблокированы.

-
+> **Примечание:** Обратите внимание, несмотря на то, что в указанном видео, на странице [addons.mozilla.org](https://addons.mozilla.org/en-US/firefox/) всё работает нормально, на текущий момент, для этого сайта, контентные скрипты заблокированы. -

Программная модификация страницы

+## Программная модификация страницы -

Что, если вы всё ещё хотите "съедать" страницы, но лишь в тех случаях, когда пользователь попросил об этом? Давайте обновим этот пример таким образом, чтобы мы внедряли контентный скрипт, когда пользователь выбирает соответствующий пункт контентного меню.

+Что, если вы всё ещё хотите "съедать" страницы, но лишь в тех случаях, когда пользователь попросил об этом? Давайте обновим этот пример таким образом, чтобы мы внедряли контентный скрипт, когда пользователь выбирает соответствующий пункт контентного меню. -

Для начала обновим "manifest.json":

+Для начала обновим "manifest.json": -
{
+```json
+{
 
   "manifest_version": 2,
   "name": "modify-page",
@@ -93,18 +86,18 @@ document.body.appendChild(header);
"scripts": ["background.js"] } -} +} +``` -

Мы удалили ключ content_scripts и добавили два новых:

+Мы удалили ключ `content_scripts` и добавили два новых: -
    -
  • permissions (разрешения): для внедрения скрипта, нам нужны разрешения для страниц, которые мы модифицируем. Разрешение activeTab это способ получить доступ к текущей вкладки. Нам также нужно разрешение contextMenus, чтобы добавлять в контекстное меню новые элементы.
  • -
  • background (фоновый): мы используем этот ключ, для загрузки постоянного "фонового скрипта", с именем "background.js", в котором мы настроим контекстное меню и внедрим контентный скрипт.
  • -
+- [`permissions (разрешения)`](/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions): для внедрения скрипта, нам нужны разрешения для страниц, которые мы модифицируем. [Разрешение `activeTab`](/en-US/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission) это способ получить доступ к текущей вкладки. Нам также нужно разрешение `contextMenus`, чтобы добавлять в контекстное меню новые элементы. +- [`background (фоновый)`](/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background): мы используем этот ключ, для загрузки постоянного ["фонового скрипта"](/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts), с именем "background.js", в котором мы настроим контекстное меню и внедрим контентный скрипт. -

Давайте создадим этот файл. Создадим новый файл "background.js" в директории "modify-page" и поместим в него следующий код:

+Давайте создадим этот файл. Создадим новый файл "background.js" в директории "modify-page" и поместим в него следующий код: -
browser.contextMenus.create({
+```js
+browser.contextMenus.create({
   id: "eat-page",
   title: "Съесть эту страницу"
 });
@@ -116,54 +109,40 @@ browser.contextMenus.onClicked.addListener(function(info, tab) {
     });
   }
 });
-
+``` -

В этом скрипте мы создаём элемент контекстного меню, передавая ему определённый идентификатор и заголовок (текст будет отображаться в элементе контекстного меню). Затем мы настраиваем обработчик событий таким образом, чтобы когда пользователь выбирает пункт контекстного меню, осуществлялась проверка, наш ли это элемент eat-page. Если это так - внедряем скрипт "page-eater.js" в текущую вкладку, используя tabs.executeScript() API. Это API опционально принимает идентификатор вкладки, в качестве аргумента. Мы опустили его, это означает, что скрипт будет внедряться в текущую активную вкладку.

+В этом скрипте мы создаём [элемент контекстного меню](/en-US/Add-ons/WebExtensions/API/ContextMenus/create), передавая ему определённый идентификатор и заголовок (текст будет отображаться в элементе контекстного меню). Затем мы настраиваем обработчик событий таким образом, чтобы когда пользователь выбирает пункт контекстного меню, осуществлялась проверка, наш ли это элемент `eat-page`. Если это так - внедряем скрипт "page-eater.js" в текущую вкладку, используя [`tabs.executeScript()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) API. Это API опционально принимает идентификатор вкладки, в качестве аргумента. Мы опустили его, это означает, что скрипт будет внедряться в текущую активную вкладку. -

На данном этапе расширение должно иметь следующий вид:

+На данном этапе расширение должно иметь следующий вид: -
modify-page/
+```html
+modify-page/
     background.js
     manifest.json
-    page-eater.js
+ page-eater.js +``` -

Теперь перезагрузим расширение, откроем страницу (на этот раз любую) активируем контекстное меню и выберем "Съесть эту страницу":

+Теперь [перезагрузим расширение](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox#Reloading_a_temporary_add-on), откроем страницу (на этот раз любую) активируем контекстное меню и выберем "Съесть эту страницу": -

{{EmbedYouTube("zX4Bcv8VctA")}}

+{{EmbedYouTube("zX4Bcv8VctA")}} -
-

Обратите внимание, несмотря на то, что в указанном видео, на странице addons.mozilla.org всё работает нормально, на текущий момент, для этого сайта, контентные скрипты заблокированы.

-
+> **Примечание:** Обратите внимание, несмотря на то, что в указанном видео, на странице [addons.mozilla.org](https://addons.mozilla.org/en-US/firefox/) всё работает нормально, на текущий момент, для этого сайта, контентные скрипты заблокированы. -

Обмен сообщениями

+## Обмен сообщениями -

Контентные и фоновые скрипты не могут на прямую взаимодействовать друг с другом. Не смотря на это они могут взаимодействовать с помощью обмена сообщениями. Для этого один конец создаёт обработчик сообщений, а другой - может посылать сообщения. В следующей таблице представлены API-интерфейсы, задействованные с каждой стороны:

+Контентные и фоновые скрипты не могут на прямую взаимодействовать друг с другом. Не смотря на это они могут взаимодействовать с помощью обмена сообщениями. Для этого один конец создаёт обработчик сообщений, а другой - может посылать сообщения. В следующей таблице представлены API-интерфейсы, задействованные с каждой стороны: - - - - - - - - - - - - - - - - - - -
В контентном скриптеВ фоновом скрипте
Отправка сообщенияbrowser.runtime.sendMessage()browser.tabs.sendMessage()
Получение сообщенияbrowser.runtime.onMessagebrowser.runtime.onMessage
+| | В контентном скрипте | В фоновом скрипте | +| ------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| Отправка сообщения | [`browser.runtime.sendMessage()`]() | [`browser.tabs.sendMessage()`](/en-US/Add-ons/WebExtensions/API/Tabs/sendMessage) | +| Получение сообщения | [`browser.runtime.onMessage`](/en-US/Add-ons/WebExtensions/API/runtime/onMessage) | [`browser.runtime.onMessage`](/en-US/Add-ons/WebExtensions/API/runtime#onMessage) | -

Давайте обновим наш пример, чтобы посмотреть, как послать сообщение из фонового скрипта.

+Давайте обновим наш пример, чтобы посмотреть, как послать сообщение из фонового скрипта. -

Изменим "background.js" :

+Изменим "background.js" : -
browser.contextMenus.create({
+```js
+browser.contextMenus.create({
   id: "eat-page",
   title: "Съесть эту страницу"
 });
@@ -187,13 +166,14 @@ browser.contextMenus.onClicked.addListener(function(info, tab) {
     querying.then(messageTab);
   }
 });
-
+``` -

Теперь, после внедрения "page-eater.js", мы используем tabs.query(), чтобы получить текущую открытую вкладку и используем tabs.sendMessage(), для отправки сообщения контентному скрипту, загруженному на этой вкладке. Сообщение несёт полезную нагрузку {replacement: "Message from the extension!"}.

+Теперь, после внедрения "page-eater.js", мы используем [`tabs.query()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query), чтобы получить текущую открытую вкладку и используем [`tabs.sendMessage()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage), для отправки сообщения контентному скрипту, загруженному на этой вкладке. Сообщение несёт полезную нагрузку `{replacement: "Message from the extension!"}`. -

Далее, обновим "page-eater.js":

+Далее, обновим "page-eater.js": -
function eatPage(request, sender, sendResponse) {
+```js
+function eatPage(request, sender, sendResponse) {
   document.body.textContent = "";
 
   var header = document.createElement('h1');
@@ -202,38 +182,31 @@ browser.contextMenus.onClicked.addListener(function(info, tab) {
 }
 
 browser.runtime.onMessage.addListener(eatPage);
-
- -

Теперь, вместо простого "поедания страницы", контентный скрипт ждёт сообщение, используя runtime.onMessage. Когда сообщение получено, контентный скрипт выполняет в точности такой же код, как и а примере ранее, за исключением того, что заменяющий текст берётся из request.replacement.

- -

Если мы хотим отправить сообщение наоборот, из контентного скрипта в фоновый, настройка будет обратной данному примеру, за исключением того, что мы будем использовать runtime.sendMessage() в контентном скрипте.

- -
-

Все эти примеры внедряют JavaScript; вы можете программно внедрять стилевые таблицы CSS используя функцию tabs.insertCSS().

-
- -

Узнать больше

- - +``` + +Теперь, вместо простого "поедания страницы", контентный скрипт ждёт сообщение, используя [`runtime.onMessage`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage). Когда сообщение получено, контентный скрипт выполняет в точности такой же код, как и а примере ранее, за исключением того, что заменяющий текст берётся из `request.replacement`. + +Если мы хотим отправить сообщение наоборот, из контентного скрипта в фоновый, настройка будет обратной данному примеру, за исключением того, что мы будем использовать [`runtime.sendMessage()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage) в контентном скрипте. + +> **Примечание:** Все эти примеры внедряют JavaScript; вы можете программно внедрять стилевые таблицы CSS используя функцию [`tabs.insertCSS()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS). + +## Узнать больше + +- Руководство по [Content scripts](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_scripts) +- Ключ манифеста[`content_scripts`](/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts) +- Ключ манифеста[`permissions`](/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) +- [`tabs.executeScript()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) +- [`tabs.insertCSS()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS) +- [`tabs.sendMessage()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage) +- [`runtime.sendMessage()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage) +- [`runtime.onMessage`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) +- Примеры использования `content_scripts`: + + - [borderify](https://github.com/mdn/webextensions-examples/tree/master/borderify) + - [notify-link-clicks-i18n](https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n) + - [page-to-extension-messaging](https://github.com/mdn/webextensions-examples/tree/master/page-to-extension-messaging) + +- Примеры использования `tabs.executeScript()`: + + - [beastify](https://github.com/mdn/webextensions-examples/tree/master/beastify) + - [context-menu-demo](https://github.com/mdn/webextensions-examples/tree/master/context-menu-demo) diff --git a/files/ru/mozilla/add-ons/webextensions/prerequisites/index.md b/files/ru/mozilla/add-ons/webextensions/prerequisites/index.md index a9ea681d325fcb..cca66d170f1043 100644 --- a/files/ru/mozilla/add-ons/webextensions/prerequisites/index.md +++ b/files/ru/mozilla/add-ons/webextensions/prerequisites/index.md @@ -3,6 +3,6 @@ title: Prerequisites slug: Mozilla/Add-ons/WebExtensions/Prerequisites translation_of: Mozilla/Add-ons/WebExtensions/Prerequisites --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

Всё что вам нужно - это Firefox 45 или выше. Смотрите Your first WebExtension для того чтобы начать.

+Всё что вам нужно - это Firefox 45 или выше. Смотрите [Your first WebExtension](/ru/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension) для того чтобы начать. diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/index.md index 0ccc6fe496c28d..020d82089fa1a0 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/browser_action/index.md @@ -5,46 +5,48 @@ tags: - Кнопка панели инструментов translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

Кнопка на панели инструментов браузера (оригинальное название browser action) - это иконка, которую можно вывести в панель инструментов. Пользователь взаимодействует с расширением нажимая на неё как на кнопку.
-

+Кнопка на панели инструментов браузера (оригинальное название [browser action](/ru/docs/Mozilla/Add-ons/WebExtensions/API/browserAction)) - это иконка, которую можно вывести в панель инструментов. Пользователь взаимодействует с расширением нажимая на неё как на кнопку. +![](https://mdn.mozillademos.org/files/12966/browser-action.png) -

Кнопка на панели инструментов одинаково отображается для любой открытой вкладки. Это предполагает, что расширение единообразно работает со всеми страницами.

+Кнопка на панели инструментов одинаково отображается для любой открытой вкладки. Это предполагает, что расширение единообразно работает со всеми страницами. -

Например, предустановленная кнопка "обновить" перезагружает любую страницу в активной вкладке, кнопка "добавить в избранное" добавляет любой адрес активной вкладки в список избранного. Кнопка загрузок показывает единый для всего браузера список скачанных файлов, независимо от того что за страница открыта в активной вкладке.

+Например, предустановленная кнопка "обновить" перезагружает любую страницу в активной вкладке, кнопка "добавить в избранное" добавляет любой адрес активной вкладки в список избранного. Кнопка загрузок показывает единый для всего браузера список скачанных файлов, независимо от того что за страница открыта в активной вкладке. -

Применимые лишь к определённым страницам кнопки следует реализовывать с помощью кнопки в адресной строке (page action).

+Применимые лишь к определённым страницам кнопки следует реализовывать с помощью кнопки в адресной строке ([page action](/ru/docs/Mozilla/Add-ons/WebExtensions/Page_actions)). -

Объявление в manifest.json

+## Объявление в manifest.json -

За кнопку на панели инструментов отвечает свойство манифеста browser_action:

+За кнопку на панели инструментов отвечает свойство манифеста [`browser_action`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action): -
"browser_action": {
+```json
+"browser_action": {
   "default_icon": {
     "19": "button/geo-19.png",
     "38": "button/geo-38.png"
   },
   "default_title": "Whereami?"
-}
+} +``` -

Свойство кнопки default_icon обязательно, оно определяет внешний вид кнопки - иконку, которая окажется на панели инструментов.

+Свойство кнопки `default_icon` обязательно, оно определяет внешний вид кнопки - иконку, которая окажется на панели инструментов. -

Расширение может иметь только одну кнопку для панели инструментов.

+Расширение может иметь только одну кнопку для панели инструментов. -

Возможны два способа реакции на нажатие кнопки: отображение всплывающего окна (описано в отдельном разделе) или отправка события в background script расширения. В таком случае реакция на нажатие обеспечивают обработчики событий, подключённые к browserAction.onClicked:

+Возможны два способа реакции на нажатие кнопки: отображение [всплывающего окна](/en-US/Add-ons/WebExtensions/Popups) (описано в отдельном разделе) или отправка события в background script расширения. В таком случае реакция на нажатие обеспечивают обработчики событий, подключённые к [`browserAction.onClicked`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/BrowserAction/onClicked "Fired when a browser action icon is clicked. This event will not fire if the browser action has a popup."): -
browser.browserAction.onClicked.addListener(handleClick);
+```js +browser.browserAction.onClicked.addListener(handleClick); +``` -

Если же указать в качестве реакции на нажатие всплывающее окно, то событие передано не будет. Вместо этого около кнопки отобразится всплывающее окно - отдельная маленькая страница, дальнейшее взаимодействие с пользователем берёт на себя она. Подробнее этот сценарий описан на отдельной странице, посвящённой всплывающим окнам.

+Если же указать в качестве реакции на нажатие всплывающее окно, то событие передано не будет. Вместо этого около кнопки отобразится всплывающее окно - отдельная маленькая страница, дальнейшее взаимодействие с пользователем берёт на себя она. Подробнее этот сценарий описан на отдельной странице, посвящённой [всплывающим окнам](/en-US/Add-ons/WebExtensions/Popups). -

Все свойства кнопки на панели инструментов можно изменить программно через API browserAction.

+Все свойства кнопки на панели инструментов можно изменить программно через API [`browserAction`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction). -

Примеры

+## Примеры -

В GitHub репозитории webextensions-examples представлены несколько примеров расширений, которые создают кнопку на панели инструментов:

+В GitHub репозитории [webextensions-examples](https://github.com/mdn/webextensions-examples) представлены несколько примеров расширений, которые создают кнопку на панели инструментов: -
    -
  • bookmark-it использует событие browserAction.onClicked.
  • -
  • beastify открывает всплывающее окно.
  • -
+- [bookmark-it](https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/) использует событие browserAction.onClicked. +- [beastify](https://github.com/mdn/webextensions-examples/tree/master/beastify) открывает всплывающее окно. diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md index b3957d49ea20d4..8e331cb6a151e1 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md @@ -3,52 +3,52 @@ title: Контекстное меню slug: Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items --- -
-
{{AddonSidebar}}
+{{AddonSidebar}} -
-

Эта возможность пользовательского интерфейса позволяет добавлять новые элементы в контекстное меню браузера, появляющееся при нажатии правой кнопки мыши. Вкладки браузера также имеют контекстное меню доступное через browser.menus API.

+Эта возможность пользовательского интерфейса позволяет добавлять новые элементы в контекстное меню браузера, появляющееся при нажатии правой кнопки мыши. Вкладки браузера также имеют контекстное меню доступное через[ browser.menus API](/en-US/Add-ons/WebExtensions/API/menus). -

Example of content menu items added by a WebExtension, from the context-menu-demo example

+![Example of content menu items added by a WebExtension, from the context-menu-demo example](https://mdn.mozillademos.org/files/15756/context_menu_example.png) -

Возможность добавления элементов в контекстное меню позволяет предоставлять пользователю различные функции в зависимости от его действий на странице или в браузере. Например, можно отобразить элемент, который открывает графический редактор, если пользователь нажимает на изображение, или же предложить функцию для сохранения содержимого страницы, если выбрана некоторая её часть. Элементы могут представлять из себя не только текст, но и, например, кнопку-переключатель или разделитель (см. типы элементов меню). После того, как элемент контекстного меню был добавлен с помощью {{WebExtAPIRef("contextMenus.create")}}, он отображается во всех вкладках браузера, но вы можете удалить его при помощи {{WebExtAPIRef("contextMenus.remove")}}.

-
-
+Возможность добавления элементов в контекстное меню позволяет предоставлять пользователю различные функции в зависимости от его действий на странице или в браузере. Например, можно отобразить элемент, который открывает графический редактор, если пользователь нажимает на изображение, или же предложить функцию для сохранения содержимого страницы, если выбрана некоторая её часть. Элементы могут представлять из себя не только текст, но и, например, кнопку-переключатель или разделитель (см. [типы элементов меню](/ru/docs/Mozilla/Add-ons/WebExtensions/API/menus/ItemType)). После того, как элемент контекстного меню был добавлен с помощью {{WebExtAPIRef("contextMenus.create")}}, он отображается во всех вкладках браузера, но вы можете удалить его при помощи {{WebExtAPIRef("contextMenus.remove")}}. -

Создание элементов контекстного меню

+## Создание элементов контекстного меню -

Управление элементами контекстного меню осуществляется с помощью {{WebExtAPIRef("contextMenus")}} API. Однако, вам необходимо указать разрешение contextMenus в manifest.json, чтобы им воспользоваться.

+Управление элементами контекстного меню осуществляется с помощью {{WebExtAPIRef("contextMenus")}} API. Однако, вам необходимо указать разрешение `contextMenus` в manifest.json, чтобы им воспользоваться. -
"permissions": ["contextMenus"]
+```json +"permissions": ["contextMenus"] +``` -

Затем вы сможете добавлять, обновлять и удалять элементы контекстного меню в фоновом сценарии вашего расширения. Для создания элемента необходимо указать его id, заголовок и контекст, в котором элемент будет показан. В примере ниже элемент меню появляется, когда выделен текст или какая-либо другая часть страницы:

+Затем вы сможете добавлять, обновлять и удалять элементы контекстного меню в [фоновом сценарии](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background) вашего расширения. Для создания элемента необходимо указать его id,\_ \_заголовок и контекст, в котором элемент будет показан. В примере ниже элемент меню появляется, когда выделен текст или какая-либо другая часть страницы: -
browser.contextMenus.create({
+```js
+browser.contextMenus.create({
   id: "log-selection",
   title: browser.i18n.getMessage("contextMenuItemSelectionLogger"),
   contexts: ["selection"]
-}, onCreated);
+}, onCreated); +``` -

Затем вы можете добавить обработчик события нажатия на элемент. Передаваемая обработчику информация о контексте, в котором произошло нажатие, и о вкладке, где контекстное меню было вызвано, может быть использована вами для определения дальнейшего поведения расширения.

+Затем вы можете добавить обработчик события нажатия на элемент. Передаваемая обработчику информация о контексте, в котором произошло нажатие, и о вкладке, где контекстное меню было вызвано, может быть использована вами для определения дальнейшего поведения расширения. -
browser.contextMenus.onClicked.addListener(function(info, tab) {
+```js
+browser.contextMenus.onClicked.addListener(function(info, tab) {
   switch (info.menuItemId) {
     case "log-selection":
       console.log(info.selectionText);
       break;
     ...
   }
-})
+}) +``` -

Иконки

+## Иконки -

Чтобы добавить элементам меню иконки, смотрите документацию Iconography в Photon Design System.

+Чтобы добавить элементам меню иконки, смотрите документацию [Iconography](https://design.firefox.com/photon/visuals/iconography.html) в [Photon Design System](https://design.firefox.com/photon/index.html). -

Примеры

+## Примеры -

Репозиторий webextensions-examples на GitHub содержит два примера расширений, в которых реализована работа элементов контекстного меню:

+Репозиторий [webextensions-examples](https://github.com/mdn/webextensions-examples) на GitHub содержит два примера расширений, в которых реализована работа элементов контекстного меню: -
    -
  • menu-demo добавляет несколько элементов в контекстное меню;
  • -
  • context-menu-copy-link-with-types добавляет элемент контекстного меню, который копирует URL ссылки в буфер в виде текста и форматированного HTML.
  • -
+- [menu-demo](https://github.com/mdn/webextensions-examples/tree/master/menu-demo) добавляет несколько элементов в контекстное меню; +- [context-menu-copy-link-with-types](https://github.com/mdn/webextensions-examples/tree/master/context-menu-copy-link-with-types) добавляет элемент контекстного меню, который копирует URL ссылки в буфер в виде текста и форматированного HTML. diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md index 0b398cf16b6849..406aa928c97aa2 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md @@ -8,66 +8,74 @@ tags: - Для начинающих translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages --- -
{{AddonSidebar()}}
+{{AddonSidebar()}} -

В расширение можно добавить HTML-страницы, чтобы предоставить пользователю формы, помощь или другое необходимое содержимое.

+В расширение можно добавить HTML-страницы, чтобы предоставить пользователю формы, помощь или другое необходимое содержимое. -

Example of a simple bundled page displayed as a detached panel.

+![Example of a simple bundled page displayed as a detached panel.](https://mdn.mozillademos.org/files/15752/bundled_page_as_panel_small.png) -

Эти страницы получат доступ к привилегированным средствам JavaScript API — таким же как те, что доступны фоновым скриптам расширения. Но каждая из них будет открыта в своей отдельной вкладке — со своей очередью задач JavaScript, своими глобальными переменными и т. д.

+Эти страницы получат доступ к привилегированным средствам JavaScript API — таким же как те, что доступны фоновым скриптам расширения. Но каждая из них будет открыта в своей отдельной вкладке — со своей очередью задач JavaScript, своими глобальными переменными и т. д. -

Фоновую страницу можно считать "невидимой страницей расширения".

+Фоновую страницу можно считать "невидимой страницей расширения". -

Определение страниц расширения

+## Определение страниц расширения -

К расширению можно подключить файлы HTML и используемые в них файлы CSS и JavaScript. Можно расположить все эти файлы в корне папки расширения, а можно организовать более сложную структуру каталога.

+К расширению можно подключить файлы HTML и используемые в них файлы CSS и JavaScript. Можно расположить все эти файлы в корне папки расширения, а можно организовать более сложную структуру каталога. -
/my-extension
+```
+/my-extension
     /manifest.json
     /my-page.html
-    /my-page.js
+ /my-page.js +``` -

Отображение страниц расширения

+## Отображение страниц расширения -

Есть два способа отобразить страницу расширения: {{WebExtAPIRef("windows.create()")}} и {{WebExtAPIRef("tabs.create()")}}.

+Есть два способа отобразить страницу расширения: {{WebExtAPIRef("windows.create()")}} и {{WebExtAPIRef("tabs.create()")}}. -

Например для того, чтобы создать окно сообщения, можно с помощью функции windows.create() открыть страницу HTML в отсоединённой панели (detached panel) — в окне без строки адреса, полосы закладок и других обычных элементов управления:

+Например для того, чтобы создать окно сообщения, можно с помощью функции `windows.create()` открыть страницу HTML в отсоединённой панели (detached panel) — в окне без строки адреса, полосы закладок и других обычных элементов управления: -
let createData = {
+```js
+let createData = {
   type: "detached_panel",
   url: "panel.html",
   width: 250,
   height: 100
 };
-let creating = browser.windows.create(createData);
+let creating = browser.windows.create(createData); +``` -

Когда окно больше не будет нужно, его можно закрыть программно.

+Когда окно больше не будет нужно, его можно закрыть программно. -

Например, когда пользователь нажмёт на кнопку, можно вызвать функцию {{WebExtAPIRef("windows.remove()")}} и передать ей идентификатор текущего окна:

+Например, когда пользователь нажмёт на кнопку, можно вызвать функцию {{WebExtAPIRef("windows.remove()")}} и передать ей идентификатор текущего окна: -
document.getElementById("closeme").addEventListener("click", function(){
+```js
+document.getElementById("closeme").addEventListener("click", function(){
   let winId = browser.windows.WINDOW_ID_CURRENT;
   let removing = browser.windows.remove(winId);
-}); 
+}); +``` -

Страницы расширения и история

+## Страницы расширения и история -

По умолчанию страницы, открытые таким образом, будут сохранены в истории браузера — точно так же, как и обычные веб-страницы. Если такое поведение не нужно, используйте {{WebExtAPIRef("history.deleteUrl()")}}, чтобы удалить запись:

+По умолчанию страницы, открытые таким образом, будут сохранены в истории браузера — точно так же, как и обычные веб-страницы. Если такое поведение не нужно, используйте {{WebExtAPIRef("history.deleteUrl()")}}, чтобы удалить запись: -
function onVisited(historyItem) {
+```js
+function onVisited(historyItem) {
   if (historyItem.url == browser.extension.getURL(myPage)) {
     browser.history.deleteUrl({url: historyItem.url});
   }
 }
 
-browser.history.onVisited.addListener(onVisited);
+browser.history.onVisited.addListener(onVisited); +``` -

Для использования API истории браузера нужно добавить разрешение "history" с помощью элемента permissions в файле manifest.json.

+Для использования API истории браузера нужно добавить разрешение "`history`" с помощью элемента [permissions](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) в файле [`manifest.json`](https://developer.mozilla.org/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json). -

Дизайн веб-страницы

+## Дизайн веб-страницы -

Подробности о том, как сделать, чтобы дизайн ваших страниц совпадал со стилем Firefox, смотрите на сайте Система дизайна Photon (на английском языке) и в документации browser styles.

+Подробности о том, как сделать, чтобы дизайн ваших страниц совпадал со стилем Firefox, смотрите на сайте [Система дизайна Photon](https://design.firefox.com/photon/index.html) (на английском языке) и в документации [browser styles](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles). -

Примеры

+## Примеры -

В репозитории webextensions-examples на GitHub есть пример window-manipulator, в котором используются некоторые из возможностей для создания окон.

+В репозитории [webextensions-examples](https://github.com/mdn/webextensions-examples) на GitHub есть пример [window-manipulator](https://github.com/mdn/webextensions-examples/tree/master/window-manipulator), в котором используются некоторые из возможностей для создания окон. diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/index.md index b6b79973f9fb4c..1bcc0081a89a5b 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/index.md @@ -5,103 +5,28 @@ tags: - Пользовательский интерфейс translation_of: Mozilla/Add-ons/WebExtensions/user_interface --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

У расширений WebExtensions есть несколько органов взаимодействия с пользователем, с их помощью человек пользуется расширенной функциональностью. Все они перечислены ниже, с инструкцией как использовать в своём расширении каждый из них.

+У расширений WebExtensions есть несколько органов взаимодействия с пользователем, с их помощью человек пользуется _расширенной_ функциональностью. Все они перечислены ниже, с инструкцией как использовать в своём расширении каждый из них. -
-

Советы как с помощью этих элементов пользовательского интерфейса (UI) обеспечить отличное взаимодействие человека с программой вы найдёте в статье User experience best practices.

-
+> **Примечание:** Советы как с помощью этих элементов пользовательского интерфейса (UI) обеспечить отличное взаимодействие человека с программой вы найдёте в статье [User experience best practices](/ru/docs/Mozilla/Add-ons/WebExtensions/User_experience_best_practices). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Элемент UIНазначениеКак выглядит?
Кнопка на панели инструментов -

Кнопка на панели инструментов доступна изо всех вкладок.
- Реакцию на нажатие кнопки обеспечивает расширение.

-
Example of a WebExtension toolbar button
-

Browser toolbar button with a popup

-
-

Кнопка со всплывающим окном на панели инструментов браузера, которая открывается при нажатии. Всплывающее окно определяется в документе HTML, который обрабатывает взаимодействие пользователя.

-
-

Example of a WebExtension toolbar button with a popup

-
Кнопка в адресной строкеВ отличие от панели инструментов, в адресной строке кнопка должна появляться только рядом с адресом предназначенной для неё страницы.Example showing an address bar button (page action)
Всплывающие окнаПри нажатии на кнопку всплывает (popup) web-страница с органами управления.Example of a popup on the address bar button
Контекстное менюОрганы управления могут быть упорядочены в ветвящейся структуре контекстных меню браузера.
Боковая панель -

В боковой панели рядом с интернет-сайтом открывается web-страница с интерфейсом пользователя. Человек может её закрыть и открыть когда в ней появится потребность.

-
Example of a WebExtension's sidebar
Страница настройки дополнения -

Страница пользовательских настроек доступна из меню управления дополнениями единообразно для всех расширений.

-
Example showing the options page content added in the favorite colors example.
Дополнительные веб-страницы -

Некоторые варианты содержимого (например, справку или форму обратной связи) удобнее расположить на дополнительной web-странице, которая открывается в собственной вкладке или окне.

-
Example of a simple bundled page displayed as a detached panel.
Уведомления -

Пользователю можно сообщить что-либо средствами уведомления, предусмотренными в ОС.
- Расширение отреагирует когда уведомление будет либо прочитано пользователем, либо скрыто (явным решением человека или логикой программы) так и оставшись непрочитанным.

-
Example notification from a WebExtension
Угадывание адреса по мере вводаПредлагать настраиваемые варианты адресной строки при вводе пользователем ключевого слова.Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.
Панели инструмента разработчикаВкладка со связанным HTML-документом, который отображается в инструментах разработчика браузера.New panel tab in the Developer Tools tab bar
+| Элемент UI | Назначение | Как выглядит? | +| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Кнопка на панели инструментов](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action) | Кнопка на панели инструментов доступна изо всех вкладок. Реакцию на нажатие кнопки обеспечивает расширение. | ![Example of a WebExtension toolbar button](https://mdn.mozillademos.org/files/12966/browser-action.png) | +| ~~Browser toolbar button with a [popup](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups)~~ | ~~Кнопка со всплывающим окном на панели инструментов браузера, которая открывается при нажатии. Всплывающее окно определяется в документе HTML, который обрабатывает взаимодействие пользователя.~~ | ~~![Example of a WebExtension toolbar button with a popup](https://mdn.mozillademos.org/files/14039/popup-shadow.png)~~ | +| [Кнопка в адресной строке](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions) | В отличие от панели инструментов, в адресной строке кнопка должна появляться только рядом с адресом предназначенной для неё страницы. | ![Example showing an address bar button (page action)](https://mdn.mozillademos.org/files/15047/address_bar_button.png) | +| [Всплывающие окна](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups) | При нажатии на кнопку всплывает (popup) web-страница с органами управления. | ![Example of a popup on the address bar button](https://mdn.mozillademos.org/files/15053/page_action_popup.png) | +| [Контекстное меню](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items) | Органы управления могут быть упорядочены в ветвящейся структуре контекстных меню браузера. | ![](https://mdn.mozillademos.org/files/15051/context_menu_example.png) | +| [Боковая панель](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars) | В боковой панели рядом с интернет-сайтом открывается web-страница с интерфейсом пользователя. Человек может её закрыть и открыть когда в ней появится потребность. | ![Example of a WebExtension's sidebar](https://mdn.mozillademos.org/files/14825/bookmarks-sidebar.png) | +| [Страница настройки дополнения](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages) | Страница пользовательских настроек доступна из меню управления дополнениями единообразно для всех расширений. | ![Example showing the options page content added in the favorite colors example.](https://mdn.mozillademos.org/files/15055/options_page.png) | +| [Дополнительные веб-страницы](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Bundled_web_pages) | Некоторые варианты содержимого (например, справку или форму обратной связи) удобнее расположить на дополнительной web-странице, которая открывается в собственной вкладке или окне. | ![Example of a simple bundled page displayed as a detached panel.](https://mdn.mozillademos.org/files/15063/bundled_page_as_panel_small.png) | +| [Уведомления](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications) | Пользователю можно сообщить что-либо средствами уведомления, предусмотренными в ОС. Расширение отреагирует когда уведомление будет либо прочитано пользователем, либо скрыто (явным решением человека или логикой программы) так и оставшись непрочитанным. | ![Example notification from a WebExtension](https://mdn.mozillademos.org/files/14043/notify-shadowed.png) | +| [Угадывание адреса по мере ввода](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox) | Предлагать настраиваемые варианты адресной строки при вводе пользователем ключевого слова. | ![Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.](https://mdn.mozillademos.org/files/15059/omnibox_example_small.png) | +| [Панели инструмента разработчика](/ru/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels) | Вкладка со связанным HTML-документом, который отображается в инструментах разработчика браузера. | ![New panel tab in the Developer Tools tab bar](https://mdn.mozillademos.org/files/15049/developer_panel_tab.png) | -

В следующих руководствах приведены пошаговые инструкции по созданию некоторых из этих параметров пользовательского интерфейса:

+В следующих руководствах приведены пошаговые инструкции по созданию некоторых из этих параметров пользовательского интерфейса: - +- [Add a button to the toolbar](/ru/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar) +- [Implement a settings page](/ru/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page) +- [Extending the developer tools](/ru/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools) diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/notifications/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/notifications/index.md index eac83571c1a283..9ecc673937d156 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/notifications/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/notifications/index.md @@ -6,46 +6,49 @@ tags: - Расширение translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Notifications --- -
{{AddonSidebar}}
+{{AddonSidebar}} -
-

Уведомления позволяют вам передавать информацию пользователям вашего расширения через службу уведомлений в операционной системе.

+Уведомления позволяют вам передавать информацию пользователям вашего расширения через службу уведомлений в операционной системе. -

+![](https://mdn.mozillademos.org/files/15754/notify-shadowed.png) -

Уведомления могут включать в себя призывы к выполнению каких-либо действий, а ваше расширение может обрабатывать события закрытия или нажатия на уведомления.

+Уведомления могут включать в себя призывы к выполнению каких-либо действий, а ваше расширение может обрабатывать события закрытия или нажатия на уведомления. -

Управление уведомлениями

+## Управление уведомлениями -

Управление уведомлениями происходит программным путём с помощью {{WebExtAPIRef("notifications")}} API. Для использования этого API вы должны иметь notifications полномочия в manifest.json:

+Управление уведомлениями происходит программным путём с помощью {{WebExtAPIRef("notifications")}} API. Для использования этого API вы должны иметь `notifications` полномочия в manifest.json: -
"permissions": ["notifications"]
+```json +"permissions": ["notifications"] +``` -

После этого вы можете использовать {{WebExtAPIRef("notifications.create")}} для создания ваших уведомлений, как, например, в нижеприведённом коде, взятом из notify-link-clicks-i18n:

+После этого вы можете использовать {{WebExtAPIRef("notifications.create")}} для создания ваших уведомлений, как, например, в нижеприведённом коде, взятом из [notify-link-clicks-i18n:](https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n) -
var title = browser.i18n.getMessage("notificationTitle");
+```js
+var title = browser.i18n.getMessage("notificationTitle");
 var content = browser.i18n.getMessage("notificationContent", message.url);
 browser.notifications.create({
   "type": "basic",
   "iconUrl": browser.extension.getURL("icons/link-48.png"),
   "title": title,
   "message": content
-});
+}); +``` -

Этот код создаёт уведомление с иконкой, заголовком и сообщением.

+Этот код создаёт уведомление с иконкой, заголовком и сообщением. -

Если уведомление имеет цель призвать пользователя к какому-либо действию, вы можете установить обработчик события на нажатия на уведомления:

+Если уведомление имеет цель призвать пользователя к какому-либо действию, вы можете установить обработчик события на нажатия на уведомления: -
browser.notifications.onClicked.addListener(handleClick);
-
+```js +browser.notifications.onClicked.addListener(handleClick); +``` -

Если вы собираетесь призывать пользователей к действиям с помощью уведомлений, вам так же будет полезно определять id этих уведомлений, для того чтобы вы в дальнейшем имели возможность различать на какое конкретно уведомление было произведено нажатие.

+Если вы собираетесь призывать пользователей к действиям с помощью уведомлений, вам так же будет полезно определять `id` этих уведомлений, для того чтобы вы в дальнейшем имели возможность различать на какое конкретно уведомление было произведено нажатие. -

Иконки

+## Иконки -

Смотрите статью Iconography в документации Photon Design System для получения информации по созданию иконок для уведомлений.

+Смотрите статью [Iconography](https://design.firefox.com/photon/visuals/iconography.html) в документации [Photon Design System](https://design.firefox.com/photon/index.html) для получения информации по созданию иконок для уведомлений. -

Примеры

+## Примеры -

Репозиторий образцов расширений webextensions-examples на GitHub включает в себя расширение notify-link-clicks-i18n, которое реализует систему уведомлений.

-
+Репозиторий образцов расширений [webextensions-examples ](https://github.com/mdn/webextensions-examples)на GitHub включает в себя расширение [notify-link-clicks-i18n](https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n), которое реализует систему уведомлений. diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md index 5b8d7a761b343b..72dc6a250c5268 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md @@ -6,30 +6,35 @@ tags: - Расширение translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Omnibox --- -
{{AddonSidebar()}}
+{{AddonSidebar()}} -

Используя {{WebExtAPIRef("omnibox")}} API, расширения могут взаимодействовать с адресной строкой и заполнять её выпадающий список предложений своими значениями, после введения пользователем определённого ключевого слова.

+Используя {{WebExtAPIRef("omnibox")}} API, расширения могут взаимодействовать с адресной строкой и заполнять её выпадающий список предложений своими значениями, после введения пользователем определённого ключевого слова. -

Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.

+![Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.](https://mdn.mozillademos.org/files/15749/omnibox_example_small.png) -

Это могло бы позволить вам написать расширение, которое, например, искало бы бесплатные книги в электронной библиотеке, или как в примере выше, строки кода из репозитория.

+Это могло бы позволить вам написать расширение, которое, например, искало бы бесплатные книги в электронной библиотеке, или как в примере выше, строки кода из репозитория. -

Настраивание взаимодействия с адресной строкой

+## Настраивание взаимодействия с адресной строкой -

Чтобы получить возможность взаимодействия с адресной строкой, вам необходимо добавить ключ omnibox в manifest.json файл, и присвоить ему значение в виде объекта, определяющего ключевое слово, после введения которого расширение активирует взаимодействие:

+Чтобы получить возможность взаимодействия с адресной строкой, вам необходимо добавить ключ [omnibox](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/omnibox) в [manifest.json](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json) файл, и присвоить ему значение в виде объекта, определяющего ключевое слово, после введения которого расширение активирует взаимодействие: -
  "omnibox": { "keyword" : "cs" }
+```json + "omnibox": { "keyword" : "cs" } +``` -

При желании, используя метод {{WebExtAPIRef("omnibox.setDefaultSuggestion()")}}, вы можете изменить текст изначального предложения, которое всегда будет появляться первым в списке предложений адресной строки. Как вариант, оно может быть использовано для описания предоставляемой расширением функциональности:

+При желании, используя метод {{WebExtAPIRef("omnibox.setDefaultSuggestion()")}}, вы можете изменить текст изначального предложения, которое всегда будет появляться первым в списке предложений адресной строки. Как вариант, оно может быть использовано для описания предоставляемой расширением функциональности: -
browser.omnibox.setDefaultSuggestion({
+```js
+browser.omnibox.setDefaultSuggestion({
   description: `Искать в кодовой базе firefox
     (пример: "hello world" | "path:omnibox.js onInputChanged")`
-});
+}); +``` -

Далее, вы можете зарегистрировать обработчики на событие {{WebExtAPIRef("omnibox.onInputStarted")}}, которое будет распространяться после введения пользователем ключевого слова и нажатия на пробел, и на событие {{WebExtAPIRef("omnibox.onInputChanged")}}, которое будет распространяться при изменении пользователем строки адреса. Так же, с помощью обработчика события {{WebExtAPIRef("omnibox.onInputChanged")}}, вы будете иметь возможность заполнять выпадающий список своими предложениями. К примеру, в случае поиска кода на сайте https://searchfox.org/mozilla-central, используя введённые пользователем слова:

+Далее, вы можете зарегистрировать обработчики на событие {{WebExtAPIRef("omnibox.onInputStarted")}}, которое будет распространяться после введения пользователем ключевого слова и нажатия на пробел, и на событие {{WebExtAPIRef("omnibox.onInputChanged")}}, которое будет распространяться при изменении пользователем строки адреса. Так же, с помощью обработчика события {{WebExtAPIRef("omnibox.onInputChanged")}}, вы будете иметь возможность заполнять выпадающий список своими предложениями. К примеру, в случае поиска кода на сайте https\://searchfox.org/mozilla-central, используя введённые пользователем слова: -
browser.omnibox.onInputChanged.addListener((text, addSuggestions) => {
+```js
+browser.omnibox.onInputChanged.addListener((text, addSuggestions) => {
   let headers = new Headers({"Accept": "application/json"});
   let init = {method: 'GET', headers};
   let url = buildSearchURL(text);
@@ -38,13 +43,15 @@ translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Omnibox
   fetch(request)
     .then(createSuggestionsFromResponse)
     .then(addSuggestions);
-});
+}); +``` -

Заметьте, что изначальное предложение в любом случае будет оставаться первым в выпадающем списке.

+Заметьте, что изначальное предложение в любом случае будет оставаться первым в выпадающем списке. -

Чтобы обрабатывать нажатия пользователя на предложения из выпадающего списка, подпишитесь на событие {{WebExtAPIRef("omnibox.onInputEntered")}}. При нажатии на изначальное предложение в функцию обработчика будет передана набранная в данный момент строка адреса, во всех остальных случаях будет передаваться значение из выбранного предложения. Вторым аргументом в функцию обработчика будет передана информация из настроек браузера о том, каким образом пользователь предпочитает открывать новые ссылки. Например, в нижерасположенном коде, нажатие на изначальное предложение запустит поиск, тогда как нажатие на все остальные предложения просто откроет определённые них URL:

+Чтобы обрабатывать нажатия пользователя на предложения из выпадающего списка, подпишитесь на событие {{WebExtAPIRef("omnibox.onInputEntered")}}. При нажатии на изначальное предложение в функцию обработчика будет передана набранная в данный момент строка адреса, во всех остальных случаях будет передаваться значение из выбранного предложения. Вторым аргументом в функцию обработчика будет передана информация из настроек браузера о том, каким образом пользователь предпочитает открывать новые ссылки. Например, в нижерасположенном коде, нажатие на изначальное предложение запустит поиск, тогда как нажатие на все остальные предложения просто откроет определённые них URL: -
browser.omnibox.onInputEntered.addListener((text, disposition) => {
+```js
+browser.omnibox.onInputEntered.addListener((text, disposition) => {
   let url = text;
   if (!text.startsWith(SOURCE_URL)) {
     // Обновить url, если пользователь нажал на изначальное предложение.
@@ -61,8 +68,9 @@ translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Omnibox
       browser.tabs.create({url, active: false});
       break;
   }
-});
+}); +``` -

Примеры

+## Примеры -

Репозиторий образцов расширений webextensions-examples на GitHub включает в себя расширение firefox-code-search, демонстрирующее взаимодействие с адресной строкой.

+Репозиторий образцов расширений [webextensions-examples](https://github.com/mdn/webextensions-examples) на GitHub включает в себя расширение [firefox-code-search](https://github.com/mdn/webextensions-examples/tree/master/firefox-code-search), демонстрирующее взаимодействие с адресной строкой. diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/popups/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/popups/index.md index 928e26f54928ec..5fc5d5dfacb6c8 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/popups/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/popups/index.md @@ -3,48 +3,46 @@ title: Всплывающие окна slug: Mozilla/Add-ons/WebExtensions/user_interface/Popups translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Popups --- -
{{AddonSidebar}}
+{{AddonSidebar}} -
-

A popup is a dialog that's associated with a toolbar button or address bar button.

+A popup is a dialog that's associated with a [toolbar button](/en-US/Add-ons/WebExtensions/Browser_action) or [address bar button](/en-US/Add-ons/WebExtensions/Page_actions). -

+![](https://mdn.mozillademos.org/files/14039/popup-shadow.png) -

When the user clicks the button, the popup is shown. When the user clicks anywhere outside the popup, the popup is closed. The popup can be closed programmatically by calling window.close() from a script running in the popup. However, you can't open the popup programmatically from an extension's JavaScript: it can only be opened in response to a user action.

+When the user clicks the button, the popup is shown. When the user clicks anywhere outside the popup, the popup is closed. The popup can be closed programmatically by calling [`window.close()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/close) from a script running in the popup. However, you can't open the popup programmatically from an extension's JavaScript: it can only be opened in response to a user action. -

You can define a keyboard shortcut that opens the popup using the "_execute_browser_action" and "_execute_page_action" shortcuts. See the documentation for the manifest.json key commands .

+You can define a keyboard shortcut that opens the popup using the `"_execute_browser_action"` and `"_execute_page_action"` shortcuts. See the documentation for the manifest.json key [`commands`](/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands) . -

Specifying a popup

+## Specifying a popup -

The popup is specified as an HTML file, which can include CSS and JavaScript files, as a normal web page does. Unlike a normal page, though, the JavaScript can use all the WebExtension APIs that the extension has permissions for.

+The popup is specified as an HTML file, which can include CSS and JavaScript files, as a normal web page does. Unlike a normal page, though, the JavaScript can use all the [WebExtension APIs](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API) that the extension has [permissions](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) for. -

The HTML file is included in the extension and specified as part of the browser_action or page_action key by "default_popup" in the manifest.json:

+The HTML file is included in the extension and specified as part of the [`browser_action`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action) or [page_action](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action) key by `"default_popup"` in the manifest.json: -
  "browser_action": {
+```json
+  "browser_action": {
     "default_icon": "icons/beasts-32.png",
     "default_title": "Beastify",
     "default_popup": "popup/choose_beast.html"
-  }
+ } +``` -

You can ask the browser to include a stylesheet in your popup that will make it look consistent with the browser's UI. To do this, include "browser_style": true in the browser_action or page_action key.

+You can ask the browser to include a stylesheet in your popup that will make it look consistent with the browser's UI. To do this, include `"browser_style": true` in the [`browser_action`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action) or [page_action](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action) key. -

Popups have a Content Security Policy that restricts the sources from which they can load resources, and disallows some unsafe practices such as the use of eval(). See Content Security Policy for more details on this.

+Popups have a Content Security Policy that restricts the sources from which they can load resources, and disallows some unsafe practices such as the use of [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval). See [Content Security Policy](/ru/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy) for more details on this. -

Debugging popups

+## Debugging popups -

You can debug a popup's markup and JavaScript using the Add-on Debugger, but you'll need to turn on the Disable popup auto hide feature to prevent popups from hiding when you click outside them. Read about debugging popups.

+You can debug a popup's markup and JavaScript using the Add-on Debugger, but you'll need to turn on the Disable popup auto hide feature to prevent popups from hiding when you click outside them.[ Read about debugging popups](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Debugging#Debugging_popups). - +## Popup resizing -

Popups resize automatically to fit their content. The algorithm for this may differ from one browser to another.

+Popups resize automatically to fit their content. The algorithm for this may differ from one browser to another. -

In Firefox, the size is calculated just before the popup is shown, and at most 10 times per second after DOM mutations. For strict mode documents, the size is calculated based on the layout size of the <body> element. For quirks mode, it's the <html> element. Firefox calculates the preferred width of the contents of that element, reflows it to that width, and then resizes so there's no vertical scrolling. It will grow to a size of 800x600 pixels at most if that fits on the user's screen. If the user moves the extension's button to the menu or it appears in the toolbar overflow, then the popup appears inside the menu's panel and is given a fixed width.

+In Firefox, the size is calculated just before the popup is shown, and at most 10 times per second after DOM mutations. For strict mode documents, the size is calculated based on the layout size of the [``](/en-US/docs/Web/HTML/Element/body) element. For quirks mode, it's the [``](/en-US/docs/Web/HTML/Element/html) element. Firefox calculates the preferred width of the contents of that element, reflows it to that width, and then resizes so there's no vertical scrolling. It will grow to a size of **800x600 pixels** at most if that fits on the user's screen. If the user [moves the extension's button to the menu](https://support.mozilla.org/en-US/kb/customize-firefox-controls-buttons-and-toolbars#w_customize-the-menu-or-the-toolbar) or it appears in the toolbar overflow, then the popup appears inside the menu's panel and is given a fixed width. -

Examples

+## Examples -

The webextensions-examples repo on GitHub, contains several examples of extensions that use a browser action:

+The [webextensions-examples](https://github.com/mdn/webextensions-examples) repo on GitHub, contains several examples of extensions that use a browser action: - -
+- [beastify](https://github.com/mdn/webextensions-examples/tree/master/beastify) uses a browser action. diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/index.md index a3d52e01616ae3..d82b0a7a058542 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/sidebars/index.md @@ -6,51 +6,51 @@ tags: - Боковая панель translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Sidebars --- -
{{AddonSidebar}}
+{{AddonSidebar}} -
-

Боковая панель - это панель, которая отображается в левой части окна браузера, рядом с веб-страницей. В браузере предусмотрен пользовательский интерфейс, который позволяет пользователю видеть доступные боковые панели и выбирать боковую панель для отображения. Например, Firefox имеет меню "Вид > Боковая панель". Одновременно может отображаться только одна боковая панель, и эта боковая панель будет отображаться для всех вкладок и всех окон браузера.

+Боковая панель - это панель, которая отображается в левой части окна браузера, рядом с веб-страницей. В браузере предусмотрен пользовательский интерфейс, который позволяет пользователю видеть доступные боковые панели и выбирать боковую панель для отображения. Например, Firefox имеет меню "Вид > Боковая панель". Одновременно может отображаться только одна боковая панель, и эта боковая панель будет отображаться для всех вкладок и всех окон браузера. -

Браузер может включать в себя ряд встроенных боковых панелей. Например, Firefox включает боковую панель для взаимодействия с закладками:

+Браузер может включать в себя ряд встроенных боковых панелей. Например, Firefox включает боковую панель для взаимодействия с закладками: -

Используя ключ sidebar_action в manifest.json, расширение может добавить свою боковую панель в браузер. Она будет доступна наравне со встроенными панелями, и пользователь сможет открыть её, используя тот же механизм, что и для встроенных боковых панелей.

+![](https://mdn.mozillademos.org/files/14825/bookmarks-sidebar.png)Используя ключ `sidebar_action` в manifest.json, расширение может добавить свою боковую панель в браузер. Она будет доступна наравне со встроенными панелями, и пользователь сможет открыть её, используя тот же механизм, что и для встроенных боковых панелей. -

Как и в случае всплывающих окон (Popups), вы задаёте содержимое боковой панели как документ HTML. Когда пользователь открывает боковую панель, этот документ загружается в каждое открытое окно браузера. Каждое окно получает свой экземпляр документа. Когда открываются новые окна, они также получат свои собственные экземпляры документа боковой панели.

+Как и в случае всплывающих окон (Popups), вы задаёте содержимое боковой панели как документ HTML. Когда пользователь открывает боковую панель, этот документ загружается в каждое открытое окно браузера. Каждое окно получает свой экземпляр документа. Когда открываются новые окна, они также получат свои собственные экземпляры документа боковой панели. -

Вы можете задать HTML документ для конкретной вкладки, используя функцию {{WebExtAPIRef("sidebarAction.setPanel()")}}. Боковая панель может определить, к какому окну она принадлежит используя {{WebExtAPIRef("windows.getCurrent()")}} API:

+Вы можете задать HTML документ для конкретной вкладки, используя функцию {{WebExtAPIRef("sidebarAction.setPanel()")}}. Боковая панель может определить, к какому окну она принадлежит используя {{WebExtAPIRef("windows.getCurrent()")}} API: -
// sidebar.js
-browser.windows.getCurrent({populate: true}).then((windowInfo) => {
+```js
+// sidebar.js
+browser.windows.getCurrent({populate: true}).then((windowInfo) => {
   myWindowId = windowInfo.id;
-});
+}); +``` -

Это полезно, если боковая панель хочет отображать различный контент для разных окон. Использование такого подхода см. в примере "annotate-page" example.

+Это полезно, если боковая панель хочет отображать различный контент для разных окон. Использование такого подхода см. в примере ["annotate-page" example](https://github.com/mdn/webextensions-examples/tree/master/annotate-page). -

HTML документ боковой панели получает доступ к тому же набору привилегированных JavaScript API, что и background и popup сценарии этого расширения. Они могут получить прямой доступ к фоновой странице с помощью {{WebExtAPIRef("runtime.getBackgroundPage()")}}, и могут взаимодействовать с сценариями контента или нативными приложениями, используя API интерфейса обмена сообщениями, такие как {{WebExtAPIRef("tabs.sendMessage()")}} и {{WebExtAPIRef("runtime.sendNativeMessage()")}}.

+HTML документ боковой панели получает доступ к тому же набору привилегированных JavaScript API, что и background и popup сценарии этого расширения. Они могут получить прямой доступ к фоновой странице с помощью {{WebExtAPIRef("runtime.getBackgroundPage()")}}, и могут взаимодействовать с сценариями контента или нативными приложениями, используя API интерфейса обмена сообщениями, такие как {{WebExtAPIRef("tabs.sendMessage()")}} и {{WebExtAPIRef("runtime.sendNativeMessage()")}}. -

Документы боковой панели выгружаются, когда окно браузера закрывается или пользователь закрывает боковую панель. Это означает, что в отличие от background страниц документы боковой панели не остаются загруженными все время, но в отличие от popup окон они остаются загруженными, пока пользователь взаимодействует с веб-страницами.

+Документы боковой панели выгружаются, когда окно браузера закрывается или пользователь закрывает боковую панель. Это означает, что в отличие от background страниц документы боковой панели не остаются загруженными все время, но в отличие от popup окон они остаются загруженными, пока пользователь взаимодействует с веб-страницами. -

После первой установки расширения, использующего боковую панель, его панель будет открыта автоматически. Это сделано для того, чтобы помочь пользователю понять, что расширение использует боковую панель. Обратите внимание, что расширение не может открывать боковые панели программно: боковые панели могут открываться только пользователем.

+После первой установки расширения, использующего боковую панель, его панель будет открыта автоматически. Это сделано для того, чтобы помочь пользователю понять, что расширение использует боковую панель. Обратите внимание, что расширение не может открывать боковые панели программно: боковые панели могут открываться только пользователем. -

Использование боковых панелей

+## Использование боковых панелей -

Чтобы использовать боковую панель в своём расширении, укажите с помощью ключа sidebar_action в manifest.json key, HTML-документ панели, а также заголовок и значок по умолчанию:

+Чтобы использовать боковую панель в своём расширении, укажите с помощью ключа [`sidebar_action`](/en-US/Add-ons/WebExtensions/manifest.json/sidebar_action) в manifest.json key, HTML-документ панели, а также заголовок и значок по умолчанию: -
"sidebar_action": {
+```json
+"sidebar_action": {
   "default_title": "My sidebar",
   "default_panel": "sidebar.html",
   "default_icon": "sidebar_icon.png"
-}
+} +``` -

Вы можете изменить название и значок панели программно, используя {{WebExtAPIRef("sidebarAction")}} API.

+Вы можете изменить название и значок панели программно, используя {{WebExtAPIRef("sidebarAction")}} API. -

Заголовок и значок отображаются пользователю в любом UI, предоставляемом браузером, для отображения боковых панелей, например меню "Вид > Боковые панели" в Firefox.

+Заголовок и значок отображаются пользователю в любом UI, предоставляемом браузером, для отображения боковых панелей, например меню "Вид > Боковые панели" в Firefox. -

Примеры

+## Примеры -

В репозитории webextensions-examples на GitHub содержится несколько примеров расширений, которые используют боковую панель:

+В репозитории [webextensions-examples](https://github.com/mdn/webextensions-examples) на GitHub содержится несколько примеров расширений, которые используют боковую панель: -
    -
  • annotate-page использует боковую панель.
  • -
-
+- [annotate-page](https://github.com/mdn/webextensions-examples/tree/master/annotate-page) использует боковую панель. diff --git a/files/ru/mozilla/add-ons/webextensions/what_are_webextensions/index.md b/files/ru/mozilla/add-ons/webextensions/what_are_webextensions/index.md index 8d4b6486bf4b11..46fb43f2c974d5 100644 --- a/files/ru/mozilla/add-ons/webextensions/what_are_webextensions/index.md +++ b/files/ru/mozilla/add-ons/webextensions/what_are_webextensions/index.md @@ -8,88 +8,54 @@ tags: - Расширения translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions --- -
{{AddonSidebar}}
+{{AddonSidebar}} -
-

Дополнения расширяют и изменяют функциональность браузера. Они разрабатываются с использованием стандартных Веб-технологий - JavaScript, HTML и CSS, а также некоторых специальных JavaScript API, которые позволяют вам делать намного больше, чем то, на что вы способны на любом из сайтов. Вот некоторые из примеров того, что вы можете делать:

-
+Дополнения расширяют и изменяют функциональность браузера. Они разрабатываются с использованием стандартных Веб-технологий - JavaScript, HTML и CSS, а также некоторых специальных JavaScript API, которые позволяют вам делать намного больше, чем то, на что вы способны на любом из сайтов. Вот некоторые из примеров того, что вы можете делать: -
-

Расширять или дополнять сайты: Используйте дополнения, чтобы предоставить информацию или дополнительные функции для браузера. Позвольте пользователям собирать информацию с посещённых ими страниц для улучшения предлагаемых вами услуг.

-
+**Расширять или дополнять сайты**: Используйте дополнения, чтобы предоставить информацию или дополнительные функции для браузера. Позвольте пользователям собирать информацию с посещённых ими страниц для улучшения предлагаемых вами услуг. -
Пример использования Amazon Assistant for Firefox
+![Пример использования Amazon Assistant for Firefox](https://media.prod.mdn.mozit.cloud/attachments/2018/02/13/15808/f81a8cc5b196af29cd9d558ee3c5dbdc/Amazon_add_on.png) - +Примеры: [Amazon Assistant for Firefox](https://addons.mozilla.org/en-US/firefox/addon/amazon-browser-bar/), [OneNote Web Clipper](https://addons.mozilla.org/en-US/firefox/addon/onenote-clipper/) и [Grammarly for Firefox](https://addons.mozilla.org/en-US/firefox/addon/grammarly-1/). -
-

Дайте пользователям продемонстрировать себя: Дополнения могут управлять содержимым сайтов, например, позволять пользователям добавлять их любимые изображения как фоновые картинки для каждого сайта, которые они посещают. Ещё дополнения могут изменять и то, как выглядит сам интерфейс Firefox, делая это тем же способом, что и обычные темы.

-
+**Дайте пользователям продемонстрировать себя**: Дополнения могут управлять содержимым сайтов, например, позволять пользователям добавлять их любимые изображения как фоновые картинки для каждого сайта, которые они посещают. Ещё дополнения могут изменять и то, как выглядит сам интерфейс Firefox, делая это тем же способом, что и [обычные темы](/ru/docs/Mozilla/Add-ons/Themes/Theme_concepts). -
Как расширение может изменить фоновую картинку сайта
+![Как расширение может изменить фоновую картинку сайта](https://media.prod.mdn.mozit.cloud/attachments/2018/02/13/15809/ce69d140dc91da804ce6eb8f20d03c07/MyWeb_New_Tab_add_on.png) -
-

Примеры: MyWeb New Tab, Tabliss и VivaldiFox.

-
+Примеры: [MyWeb New Tab](https://addons.mozilla.org/en-US/firefox/addon/myweb-new-tab/), [Tabliss](https://addons.mozilla.org/en-US/firefox/addon/tabliss/) и [VivaldiFox](https://addons.mozilla.org/en-US/firefox/addon/vivaldifox/). -
-

Добавьте или скройте содержимое веб-страниц: Возможно, вы захотите помочь пользователям заблокировать назойливую рекламу, дать доступ к туристическим путеводителям, когда на странице упоминается страна или город, или отформатировать содержимое страницы так, чтобы дать незабываемый опыт прочтения. С доступом к HTML и CSS дополнения могут помогать пользователям смотреть на Интернет так, как они хотят.

-
+**Добавьте или скройте содержимое веб-страниц**: Возможно, вы захотите помочь пользователям заблокировать назойливую рекламу, дать доступ к туристическим путеводителям, когда на странице упоминается страна или город, или отформатировать содержимое страницы так, чтобы дать незабываемый опыт прочтения. С доступом к HTML и CSS дополнения могут помогать пользователям смотреть на Интернет так, как они хотят. -
Как работает uBlock Origin, популярный блокировщик рекламы
+![Как работает uBlock Origin, популярный блокировщик рекламы](https://media.prod.mdn.mozit.cloud/attachments/2018/02/13/15807/4e85eb0560fc8d5945e64cf75a1a8e50/ublock_origin_add_on.png) - +Примеры: [uBlock Origin](https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/), [Reader](https://addons.mozilla.org/en-US/firefox/addon/reader/) и [Toolbox for Google Play Store™](https://addons.mozilla.org/en-US/firefox/addon/toolbox-google-play-store/). -
-

Дайте новые инструменты и функции: Добавляйте новые пункты в список дел или генерируйте QR-коды для текста страницы или различных ссылок. При помощи гибких опций интерфейса и мощью WebExtensions API вы можете с лёгкостью добавлять новые функции в браузер. Причём вы можете расширить таким образом функциональность любого сайта, он не обязательно должен быть вашим.

-
+**Дайте новые инструменты и функции**: Добавляйте новые пункты в список дел или генерируйте QR-коды для текста страницы или различных ссылок. При помощи гибких опций интерфейса и мощью WebExtensions API вы можете с лёгкостью добавлять новые функции в браузер. Причём вы можете расширить таким образом функциональность любого сайта, он не обязательно должен быть вашим. -
Как выглядит генератор QR-кодов QRUTILS.com
+![Как выглядит генератор QR-кодов QRUTILS.com](https://media.prod.mdn.mozit.cloud/attachments/2018/02/13/15806/b9070a5f71c40c18d0a4ae722bca2e4a/QR_Code_Image_Generator_add_on.png) -
-

Примеры: Swimlanes for Trello и Tomato Clock.

-
+Примеры: [Swimlanes for Trello](https://addons.mozilla.org/en-US/firefox/addon/swimlanes-for-trello/) и [Tomato Clock](https://addons.mozilla.org/en-US/firefox/addon/tomato-clock/). -
-

Игры: Давайте геймерам тот же опыт, что и в традиционных компьютерных играх - или же исследуйте новые игровые возможности, например, внедряя геймплей в ежедневный просмотр веб-страниц.

-
+**Игры**: Давайте геймерам тот же опыт, что и в традиционных компьютерных играх - или же исследуйте новые игровые возможности, например, внедряя геймплей в ежедневный просмотр веб-страниц. -
Пример игры Asteroids in Popup
+![Пример игры Asteroids in Popup](https://media.prod.mdn.mozit.cloud/attachments/2018/02/13/15805/259d5d3c0620469521d43a897a7b653b/Asteroids_in_Popup_add_on%20.png) - +Примеры: [Asteroids in Popup](https://addons.mozilla.org/en-US/firefox/addon/asteroids-in-popup/), [Solitaire Card Game New Tab](https://addons.mozilla.org/en-US/firefox/addon/solitaire-card-game-new-tab/) и [2048 Prime](https://addons.mozilla.org/en-US/firefox/addon/2048-prime/). -
-

Добавляйте инструменты для разработки: вы можете предлагать инструменты разработки как часть вашего бизнеса, или же как то, что вы нового открыли для веб-разработки и чем хотите поделиться. Например, вы можете добавлять свои инструменты во встроенный набор инструментов разработчика Firefox.

-
+**Добавляйте инструменты для разработки**: вы можете предлагать инструменты разработки как часть вашего бизнеса, или же как то, что вы нового открыли для веб-разработки и чем хотите поделиться. Например, вы можете добавлять свои инструменты во встроенный набор инструментов разработчика Firefox. -
То, как интегрируется aXe в инструменты разработчика Firefox
+![То, как интегрируется aXe в инструменты разработчика Firefox](https://media.prod.mdn.mozit.cloud/attachments/2018/02/13/15804/a2f3ed2cd857626d42352dd0de550486/aXe_Developer_Tools_add_on.png) - +Примеры: [Web Developer](https://addons.mozilla.org/en-US/firefox/addon/web-developer/), [Web React Developer Tools](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) и [aXe Developer Tools](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/). -
-

WebExtensions - это кросс-браузерная система для разработки дополнений для браузера. В значительной степени её API совместим с extension API, который поддерживается браузерами Google Chrome и Opera. Расширения, разработанные для этих браузеров, в большинстве случаев будут работать в Firefox или Microsoft Edge с минимальными изменениями. Также API полностью совместим с мультипроцессным Firefox.

-
+WebExtensions - это кросс-браузерная система для разработки дополнений для браузера. В значительной степени её API совместим с [extension API](https://developer.chrome.com/extensions), который поддерживается браузерами Google Chrome и Opera. Расширения, разработанные для этих браузеров, в большинстве случаев будут работать в Firefox или Microsoft Edge с минимальными изменениями. Также API полностью совместим с [мультипроцессным Firefox](/ru/Firefox/Multiprocess_Firefox). -
-

Мы также намерены расширять API для поддержки нужд разработчиков дополнений, и если у вас есть идеи, мы будем рады услышать их. Вы можете связаться с нами через рассылку dev-addons mailing list или на IRC канале #webextensions.

-
+Мы также намерены расширять API для поддержки нужд разработчиков дополнений, и если у вас есть идеи, мы будем рады услышать их. Вы можете связаться с нами через рассылку [dev-addons mailing list](https://mail.mozilla.org/listinfo/dev-addons) или на [IRC](https://wiki.mozilla.org/IRC) канале [#webextensions](irc://irc.mozilla.org/webextensions). -
-

До появления WebExtensions разработка дополнения для Firefox осуществлялась одним из трёх различных способов: XUL/XPCOM overlays, bootstrapped extensions или Add-on SDK. В будущем WebExtensions станет рекомендуемым способом разработки дополнений для Firefox, а остальные способы будут считаться устаревшими.

-
+До появления WebExtensions разработка дополнения для Firefox осуществлялась одним из трёх различных способов: [XUL/XPCOM overlays](/en-US/Add-ons/Overlay_Extensions), [bootstrapped extensions](/ru/docs/Mozilla/Add-ons/Bootstrapped_extensions) или [Add-on SDK](/ru/docs/Mozilla/Add-ons/SDK). В будущем WebExtensions станет рекомендуемым способом разработки дополнений для Firefox, а остальные способы будут считаться устаревшими. -

Что дальше?

+## Что дальше? - +- Чтобы посмотреть примеры некоторых дополнений, см. [Example WebExtensions](/en-US/Add-ons/WebExtensions/Examples). +- Чтобы узнать больше о структуре дополнений, см. [Anatomy of a WebExtension](/ru/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension). +- Чтобы посмотреть пример разработки простого дополнения, см. [Ваш первый WebExtension](/ru/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension). diff --git a/files/ru/mozilla/add-ons/webextensions/your_first_webextension/index.md b/files/ru/mozilla/add-ons/webextensions/your_first_webextension/index.md index d1bde10cab7356..090c35a536a9eb 100644 --- a/files/ru/mozilla/add-ons/webextensions/your_first_webextension/index.md +++ b/files/ru/mozilla/add-ons/webextensions/your_first_webextension/index.md @@ -8,26 +8,29 @@ tags: - WebExtensions translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension --- -
{{AddonSidebar}}
+{{AddonSidebar}} -

В этой статье мы пройдём весь путь создания WebExtension для Firefox, от начала и до конца. Это дополнение будет просто добавлять красную рамку ко всем страницам, загруженным с "mozilla.org" или любого из его поддоменов.

+В этой статье мы пройдём весь путь создания WebExtension для Firefox, от начала и до конца. Это дополнение будет просто добавлять красную рамку ко всем страницам, загруженным с "mozilla.org" или любого из его поддоменов. -

Исходный код этого дополнения доступен на GitHub: https://github.com/mdn/webextensions-examples/tree/master/borderify.

+Исходный код этого дополнения доступен на GitHub: . -

Для начала вам нужен Firefox 45 или более поздней версии.

+Для начала вам нужен Firefox 45 или более поздней версии. -

Написание WebExtension

+## Написание WebExtension -

Создайте новую директорию (папку) и перейдите в неё:

+Создайте новую директорию (папку) и перейдите в неё: -
mkdir borderify
-cd borderify
+```bash +mkdir borderify +cd borderify +``` -

manifest.json

+### manifest.json -

Теперь создайте новый файл, назовите его "manifest.json" в папке "borderify". Вставьте туда следующий код:

+Теперь создайте новый файл, назовите его "manifest.json" в папке "borderify". Вставьте туда следующий код: -
{
+```json
+{
 
   "manifest_version": 2,
   "name": "Borderify",
@@ -52,136 +55,127 @@ cd borderify
} ] -} +} +``` -
    -
  • Первые три ключа: manifest_version, name и version, являются обязательными и содержат основные метаданные о дополнении.
  • -
  • description не обязателен, но рекомендуется: это описание отображается в Менеджере Дополнений.
  • -
  • icons не обязателен, но рекомендуется: позволяет указать значок для дополнения, который будет виден в Менеджере Дополнений.
  • -
  • applications является обязательным для Firefox, и определяет ID дополнения. Он так же может использоваться для указания минимальной и максимальной версии Firefox, поддерживаемой расширением.
  • -
+- Первые три ключа: [`manifest_version`](/ru/Add-ons/WebExtensions/manifest.json/manifest_version), `name и version`, являются обязательными и содержат основные метаданные о дополнении. +- [`description`](/ru/Add-ons/WebExtensions/manifest.json/description) не обязателен, но рекомендуется: это описание отображается в Менеджере Дополнений. +- [`icons`](/ru/Add-ons/WebExtensions/manifest.json/icons) не обязателен, но рекомендуется: позволяет указать значок для дополнения, который будет виден в Менеджере Дополнений. +- [`applications`](/ru/Add-ons/WebExtensions/manifest.json/applications) является обязательным для Firefox, и определяет ID дополнения. Он так же может использоваться для указания минимальной и максимальной версии Firefox, поддерживаемой расширением. -

Самый интересный ключ здесь - это content_scripts, который говорит Firefox загружать скрипт на Web страницах, чей URL совпадает с заданным шаблоном. В нашем случае, мы просим Firefox загрузить скрипт с названием "borderify.js" на всех HTTP или HTTPS страницах, полученных с "mozilla.org" или любого из его поддоменов.

+Самый интересный ключ здесь - это [`content_scripts`](/en-US/Add-ons/WebExtensions/manifest.json/content_scripts), который говорит Firefox загружать скрипт на Web страницах, чей URL совпадает с заданным шаблоном. В нашем случае, мы просим Firefox загрузить скрипт с названием "borderify.js" на всех HTTP или HTTPS страницах, полученных с "mozilla.org" или любого из его поддоменов. - +- [Узнать больше content scripts.](/ru/Add-ons/WebExtensions/Content_scripts) +- [Узнать больше о match patterns](/ru/Add-ons/WebExtensions/Match_patterns). -
-

В некоторых случаях вам нужно указать ID для вашего дополнения. Если вам нужно указать ID дополнения включите ключ applications в manifest.json и установите его свойство gecko.id:

+> **Предупреждение:** [В некоторых случаях вам нужно указать ID для вашего дополнения](/ru/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID#When_do_you_need_an_Add-on_ID). Если вам нужно указать ID дополнения включите ключ [`applications`](/ru/Add-ons/WebExtensions/manifest.json/applications) в `manifest.json` и установите его свойство `gecko.id`: +> +> ```json +> "applications": { +> "gecko": { +> "id": "borderify@example.com" +> } +> } +> ``` -
"applications": {
-  "gecko": {
-    "id": "borderify@example.com"
-  }
-}
-
+### icons/border-48.png -

icons/border-48.png

+Дополнение должно иметь иконку (значок). Эта иконка будет показана в списке дополнений в Менеджере Дополнений. Наш файл manifest.json сообщает, что иконка будет находиться в файле "icons/border-48.png". -

Дополнение должно иметь иконку (значок). Эта иконка будет показана в списке дополнений в Менеджере Дополнений. Наш файл manifest.json сообщает, что иконка будет находиться в файле "icons/border-48.png".

+Создайте директорию (папку) "icons" внутри директории "borderify" . Сохраните в ней иконку под именем "border-48.png". Вы можете использовать [иконку из нашего примера](https://github.com/mdn/webextensions-examples/blob/master/borderify/icons/border-48.png), которая взята из набора иконок Google Material Design, и используется по лицензии [Creative Commons Attribution-ShareAlike](http://creativecommons.org/licenses/by-sa/3.0/). -

Создайте директорию (папку) "icons" внутри директории "borderify" . Сохраните в ней иконку под именем "border-48.png". Вы можете использовать иконку из нашего примера, которая взята из набора иконок Google Material Design, и используется по лицензии Creative Commons Attribution-ShareAlike.

+Вы можете использовать собственную иконку. Её размер должен быть 48x48 пикселей. Вы можете также использовать иконку размером 96x96 пикселей для отображения на мониторах высокого разрешения. В этом случае вам необходимо указать её в качестве свойства "96" объекта "`icons"` в файле manifest.json: -

Вы можете использовать собственную иконку. Её размер должен быть 48x48 пикселей. Вы можете также использовать иконку размером 96x96 пикселей для отображения на мониторах высокого разрешения. В этом случае вам необходимо указать её в качестве свойства "96" объекта "icons" в файле manifest.json:

- -
"icons": {
+```json
+"icons": {
   "48": "icons/border-48.png",
   "96": "icons/border-96.png"
-}
+} +``` -

Также вы можете создать иконку в формате SVG и она будет корректно масштабироваться.

+Также вы можете создать иконку в формате SVG и она будет корректно масштабироваться. - +- [Узнать больше о ключе icons](/ru/Add-ons/WebExtensions/manifest.json/icons) -

borderify.js

+### borderify.js -

Наконец, создайте в директории "borderify" файл с именем "borderify.js" и поместите туда следующий код:

+Наконец, создайте в директории "borderify" файл с именем "borderify.js" и поместите туда следующий код: -
document.body.style.border = "5px solid red";
+```js +document.body.style.border = "5px solid red"; +``` -

Этот скрипт будет встраиваться в страницу, которая совпадает с шаблоном, указанном в ключе content_scripts файла manifest.json. Этот скрипт имеет прямой доступ ко всему документу, как если бы он был загружен самой страницей.

+Этот скрипт будет встраиваться в страницу, которая совпадает с шаблоном, указанном в ключе `content_scripts` файла manifest.json. Этот скрипт имеет прямой доступ ко всему документу, как если бы он был загружен самой страницей. - +- [Узнать больше о content scripts](/ru/Add-ons/WebExtensions/Content_scripts) -

Пробуем

+## Пробуем -

Сначала внимательно проверьте, что вы правильно разместили файлы и дали им правильные имена:

+Сначала внимательно проверьте, что вы правильно разместили файлы и дали им правильные имена: -
borderify/
+```
+borderify/
     icons/
         border-48.png
     borderify.js
-    manifest.json
+ manifest.json +``` -

Установка

+### Установка -

Начиная с версии Firefox 45 вы можете временно установить WebExtension с локального диска.

+Начиная с версии Firefox 45 вы можете временно установить WebExtension с локального диска. -

Откройте страницу "about:debugging", кликните "Load Temporary Add-on" и выберите файл manifest.json:

+Откройте страницу "about:debugging", кликните "Load Temporary Add-on" и выберите файл manifest.json: -

{{EmbedYouTube("SKb-CNYpl6Q")}}

+{{EmbedYouTube("SKb-CNYpl6Q")}} -

Теперь ваше дополнение установлено и останется в браузере до его перезапуска.

+Теперь ваше дополнение установлено и останется в браузере до его перезапуска. -

Для проверки, зайдите на страницу "about:addons" чтобы открыть Менеджер Дополнений. Вы должны увидеть своё дополнение с именем и иконкой:

+Для проверки, зайдите на страницу "about:addons" чтобы открыть Менеджер Дополнений. Вы должны увидеть своё дополнение с именем и иконкой: -

{{EmbedYouTube("WpUL3-qmenE")}}

+{{EmbedYouTube("WpUL3-qmenE")}} -

Также, вы можете запускать WebExtension из командной строки, используя web-ext.

+Также, вы можете запускать WebExtension из командной строки, используя [web-ext](/ru/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext). -

Тестирование

+### Тестирование -

Теперь зайдите на любую страницу домена "mozilla.org" и вы должны будете увидеть красную границу вокруг страницы:

+Теперь зайдите на любую страницу домена "mozilla.org" и вы должны будете увидеть красную границу вокруг страницы: -

{{EmbedYouTube("exUAH0sIyBw")}}

+{{EmbedYouTube("exUAH0sIyBw")}} -

Поэкспериментируйте немного. Поменяйте цвет границы или сделайте ещё что-нибудь с содержимым на странице. После того, как изменённый скрипт будет сохранён, а страница перезагружена, вы сразу увидите изменения:

+Поэкспериментируйте немного. Поменяйте цвет границы или сделайте ещё что-нибудь с содержимым на странице. После того, как изменённый скрипт будет сохранён, а страница перезагружена, вы сразу увидите изменения: -

{{EmbedYouTube("t6s_4yF8dRk")}}

+{{EmbedYouTube("t6s_4yF8dRk")}} -
-

Обратите внимание, что после изменения файла manifest.json, вы должны вручную перезагрузить своё дополнение. В настоящий момент это значит, что вам нужно перезагрузить Firefox, а затем снова загрузить своё дополнение на странице "about:debugging". Мы работаем над улучшением этого процесса.

-
+> **Примечание:** Обратите внимание, что после изменения файла manifest.json, вы должны вручную перезагрузить своё дополнение. В настоящий момент это значит, что вам нужно перезагрузить Firefox, а затем снова загрузить своё дополнение на странице "about:debugging". Мы работаем над улучшением этого процесса. - +- [Узнать больше о временной установке дополнений](/ru/Add-ons/WebExtensions/Packaging_and_installation#Loading_from_disk) -

Упаковка и публикация

+## Упаковка и публикация -

Чтобы другие люди могли использовать ваше дополнение, вам необходимо запаковать его. Дополнения Firefox в запакованном виде являются XPI файлами, которые представляют собой обычные ZIP архивы с расширением "xpi".

+Чтобы другие люди могли использовать ваше дополнение, вам необходимо запаковать его. Дополнения Firefox в запакованном виде являются XPI файлами, которые представляют собой обычные ZIP архивы с расширением "xpi". -

При упаковке необходимо учитывать следующее: в ZIP архиве должны быть только файлы, а не содержащая их директория (директория "borderify" не должна попасть в архив). Для того, чтобы создать правильный XPI файл из вашего дополнения, в командной строке перейдите в директорию "borderify" и выполните следующую команду:

+При упаковке необходимо учитывать следующее: в ZIP архиве должны быть только файлы, а не содержащая их директория (директория "borderify" не должна попасть в архив). Для того, чтобы создать правильный XPI файл из вашего дополнения, в командной строке перейдите в директорию "borderify" и выполните следующую команду: -
zip -r ../borderify.xpi *
+``` +zip -r ../borderify.xpi * +``` -

Начиная с Firefox 43 все дополнения должны быть подписаны прежде чем они будут установлены в браузер. Вы можете снять это ограничение только в Firefox Developer Edition или Firefox Nightly при помощи следующих шагов:

+Начиная с Firefox 43 все дополнения должны быть подписаны прежде чем они будут установлены в браузер. Вы можете снять это ограничение _только_ в [Firefox Developer Edition](https://www.mozilla.org/en-US/firefox/developer/) или [Firefox Nightly](https://nightly.mozilla.org/) при помощи следующих шагов: -
    -
  • перейдите на страницу about:config в Firefox
  • -
  • при помощи строки поиска найдите xpinstall.signatures.required
  • -
  • дважды кликнув на этом свойстве или при помощи локального меню (через клик правой кнопкой мыши), выберите "Toggle", чтобы установить значение false.
  • -
+- перейдите на страницу `about:config` в Firefox +- при помощи строки поиска найдите `xpinstall.signatures.required` +- дважды кликнув на этом свойстве или при помощи локального меню (через клик правой кнопкой мыши), выберите "Toggle", чтобы установить значение `false`. -

{{EmbedYouTube("HgtBYDWtH4w")}}

+{{EmbedYouTube("HgtBYDWtH4w")}} - +- [Узнать больше об упаковке и инсталляции](/ru/Add-ons/WebExtensions/Packaging_and_installation) +- [Узнать больше о подписи и распространении](/ru/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension) -

Что дальше?

+## Что дальше? -

Теперь, когда вы имеете представление о разработке дополнений для Firefox, вы можете:

+Теперь, когда вы имеете представление о разработке дополнений для Firefox, вы можете: - +- [Прочитать больше об анатомии WebExtensions](/ru/Add-ons/WebExtensions/Anatomy_of_a_WebExtension) +- [Создать более сложное WebExtensions](/ru/Add-ons/WebExtensions/Your_second_WebExtension) +- [Прочитать больше об API JavaScript, доступном для WebExtensions](/ru/Add-ons/WebExtensions/API) diff --git a/files/ru/mozilla/add-ons/webextensions/your_second_webextension/index.md b/files/ru/mozilla/add-ons/webextensions/your_second_webextension/index.md index 190e9a5da7f261..8b9a901c917358 100644 --- a/files/ru/mozilla/add-ons/webextensions/your_second_webextension/index.md +++ b/files/ru/mozilla/add-ons/webextensions/your_second_webextension/index.md @@ -8,58 +8,57 @@ tags: - WebExtension translation_of: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension --- -
{{AddonSidebar}} -

Если вы уже прочитали статью Ваш первый WebExtension, то уже представляете, как создавать WebExtension. В этой статье мы напишем более сложное дополнение, которое демонстрирует ещё несколько API.

+{{AddonSidebar}} -

Дополнение добавляет новую кнопку на панель инструментов Firefox. Когда пользователь кликает по кнопке, мы показываем ему всплывающую панель с предложением выбрать животное. Когда животное выбрано, мы заменяем содержимое текущей страницы на изображение выбранного животного.

+Если вы уже прочитали статью [Ваш первый WebExtension](/ru/Add-ons/WebExtensions/Your_first_WebExtension), то уже представляете, как создавать WebExtension. В этой статье мы напишем более сложное дополнение, которое демонстрирует ещё несколько API. -

Чтобы реализовать это, мы:

+Дополнение добавляет новую кнопку на панель инструментов Firefox. Когда пользователь кликает по кнопке, мы показываем ему всплывающую панель с предложением выбрать животное. Когда животное выбрано, мы заменяем содержимое текущей страницы на изображение выбранного животного. -
    -
  • определим browser action - кнопку, прикреплённую к панели инструментов Firefox.
    +Чтобы реализовать это, мы: + +- **определим [browser action](/ru/docs/Mozilla/Add-ons/WebExtensions/Browser_action) - кнопку, прикреплённую к панели инструментов Firefox.** Для кнопки мы предоставим: -
      -
    • иконку с именем "beasts-32.png"
    • -
    • всплывающую панель, если кнопка нажата. Панель состоит из HTML, CSS, и JavaScript.
    • -
    -
  • -
  • определим иконку для дополнения с именем "beasts-48.png". Иконка будет показана в Менеджере дополнений.
  • -
  • напишем сценарий содержимого(content script) "beastify.js", который будет встроен в веб-страницы.
    - Это тот код, который и будет изменять страницы.
  • -
  • упакуем несколько изображений животных для замены изображений на веб-странице.
    - Мы сделаем изображения "доступными веб-ресурсами"(web accessible resources), чтобы веб-страница могла ссылаться на них.
  • -
-

Вы можете представить общую структуру дополнения вот так:

+ - иконку с именем "beasts-32.png" + - всплывающую панель, если кнопка нажата. Панель состоит из HTML, CSS, и JavaScript. + +- **определим иконку для дополнения** с именем "beasts-48.png". Иконка будет показана в Менеджере дополнений. +- **напишем сценарий содержимого(content script) "beastify.js", который будет встроен в веб-страницы**. + Это тот код, который и будет изменять страницы. +- **упакуем несколько изображений животных для замены изображений на веб-странице**. + Мы сделаем изображения "доступными веб-ресурсами"(web accessible resources), чтобы веб-страница могла ссылаться на них. -

+Вы можете представить общую структуру дополнения вот так: -

Это простое дополнение, но показывает множество основных концепций WebExtensions API:

+![](https://mdn.mozillademos.org/files/13671/Untitled-1.png) -
    -
  • добавление кнопки на панель инструментов
  • -
  • определение всплывающей панели используя HTML, CSS, и JavaScript
  • -
  • встраивание контент-скрипта в веб-страницы
  • -
  • взаимодействие между сценарием содержимого и остальным дополнением
  • -
  • упаковка ресурсов с вашим дополнением, которые будут использованы веб-страницами
  • -
+Это простое дополнение, но показывает множество основных концепций WebExtensions API: -

Вы можете найти полный исходный код дополнения на GitHub.

+- добавление кнопки на панель инструментов +- определение всплывающей панели используя HTML, CSS, и JavaScript +- встраивание контент-скрипта в веб-страницы +- взаимодействие между сценарием содержимого и остальным дополнением +- упаковка ресурсов с вашим дополнением, которые будут использованы веб-страницами -

Чтобы написать это дополнение, вам нужен Firefox 45 или новее.

+Вы можете найти [полный исходный код дополнения на GitHub](https://github.com/mdn/webextensions-examples/tree/master/beastify). -

Написание WebExtension

+Чтобы написать это дополнение, вам нужен Firefox 45 или новее. -

Создайте новую директорию и перейдите в неё:

+## Написание WebExtension -
mkdir beastify
-cd beastify
+Создайте новую директорию и перейдите в неё: -

manifest.json

+```bash +mkdir beastify +cd beastify +``` -

Теперь создайте файл "manifest.json" и вставьте в него следующее содержимое:

+### manifest.json -
{
+Теперь создайте файл "manifest.json" и вставьте в него следующее содержимое:
+
+```json
+{
 
   "manifest_version": 2,
   "name": "Beastify",
@@ -88,88 +87,88 @@ cd beastify
] } - +``` + +- Первые три ключа: [`manifest_version`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version), [`name`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name), `и version`, являются обязательными и содержат основные мета-данные для дополнения. +- [`description`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/description) `и homepage_url` необязательны, но рекомендуемы: они предоставляют полезную информацию о дополнении. +- [`icons`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons) необязательный, но рекомендуемый: позволяет вам определять иконку для дополнения, которая будет показана в Менеджере Дополнений. +- [`permissions`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) перечисляет разрешения для нужд дополнения. Здесь мы просто спрашиваем разрешения для [`activeTab` permission](/ru/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission). +- [`browser_action`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action) задаёт кнопку на панели инструментов. Здесь мы предоставляем три вида информации: -
    -
  • Первые три ключа: manifest_version, name, и version, являются обязательными и содержат основные мета-данные для дополнения.
  • -
  • description и homepage_url необязательны, но рекомендуемы: они предоставляют полезную информацию о дополнении.
  • -
  • icons необязательный, но рекомендуемый: позволяет вам определять иконку для дополнения, которая будет показана в Менеджере Дополнений.
  • -
  • permissions перечисляет разрешения для нужд дополнения. Здесь мы просто спрашиваем разрешения для activeTab permission.
  • -
  • browser_action задаёт кнопку на панели инструментов. Здесь мы предоставляем три вида информации: -
      -
    • default_icon это обязательная иконка для кнопки
    • -
    • default_title необязательный заголовок, будет показан в подсказке
    • -
    • default_popup используется, если вы хотите, чтобы всплывающая панель была показана когда пользователь кликает по кнопке. В нашем примере мы использовали этот ключ и он указывает на HTML файл, подключённый к дополнению.
    • -
    -
  • -
  • web_accessible_resources перечисляет файлы, которые мы хотим сделать доступными для веб-страниц. Поскольку дополнение заменяет содержимое страницы на изображения, которые мы упаковали вместе с дополнением, нам нужно сделать эти изображения доступными для страницы.
  • -
+ - `default_icon` это обязательная иконка для кнопки + - `default_title` необязательный заголовок, будет показан в подсказке + - `default_popup` используется, если вы хотите, чтобы всплывающая панель была показана когда пользователь кликает по кнопке. В нашем примере мы использовали этот ключ и он указывает на HTML файл, подключённый к дополнению. -

Обратите внимание, что все пути указаны относительно файла manifest.json.

+- [`web_accessible_resources`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources) перечисляет файлы, которые мы хотим сделать доступными для веб-страниц. Поскольку дополнение заменяет содержимое страницы на изображения, которые мы упаковали вместе с дополнением, нам нужно сделать эти изображения доступными для страницы. -

Иконка

+Обратите внимание, что все пути указаны относительно файла manifest.json. -

Дополнение должно иметь иконку. Она будет показана рядом с дополнением в Менеджере Дополнений (Вы можете открыть менеджер перейдя по ссылке "about:addons"). Наш manifest.json обещает, что у нас будет иконка для панели инструментов по адресу "icons/beasts-48.png".

+### Иконка -

Создайте папку "icons" и сохраните там иконку с именем "beasts-48.png". Вы можете использовать иконку из нашего примера, которая взята из набора Aha-Soft’s Free Retina и используется на условиях этой лицензии.

+Дополнение должно иметь иконку. Она будет показана рядом с дополнением в Менеджере Дополнений (Вы можете открыть менеджер перейдя по ссылке "about:addons"). Наш manifest.json обещает, что у нас будет иконка для панели инструментов по адресу "icons/beasts-48.png". -

Если вы выберете свою иконку, она должна быть размером 48x48 пикселей. Вы также можете предоставить иконку размером 96x96 пикселей для дисплеев с высоким разрешением, определив свойство "96" объекта icons в файле manifest.json:

+Создайте папку "icons" и сохраните там иконку с именем "beasts-48.png". Вы можете использовать [иконку из нашего примера](https://github.com/mdn/webextensions-examples/blob/master/beastify/icons/beasts-48.png), которая взята из [набора Aha-Soft’s Free Retina](https://www.iconfinder.com/iconsets/free-retina-icon-set) и используется на условиях этой [лицензии](http://www.aha-soft.com/free-icons/free-retina-icon-set/). -
"icons": {
+Если вы выберете свою иконку, она должна быть размером 48x48 пикселей. Вы также можете предоставить иконку размером 96x96 пикселей для дисплеев с высоким разрешением, определив свойство `"96"` объекта `icons` в файле manifest.json:
+
+```json
+"icons": {
   "48": "icons/beasts-48.png",
   "96": "icons/beasts-96.png"
-}
+} +``` -

Кнопка панели инструментов

+### Кнопка панели инструментов -

Кнопка панели инструментов также нуждается в иконке, и наш manifest.json обещает, что у нас будет иконка для панели инструментов по адресу "icons/beasts-32.png".

+Кнопка панели инструментов также нуждается в иконке, и наш manifest.json обещает, что у нас будет иконка для панели инструментов по адресу "icons/beasts-32.png". -

Сохраните иконку с именем "beasts-32.png" в папке "icons". Вы можете использовать иконку из нашего примера, которая взята из набора IconBeast Lite и используется на условиях этой лицензии.

+Сохраните иконку с именем "beasts-32.png" в папке "icons". Вы можете использовать [иконку из нашего примера](https://github.com/mdn/webextensions-examples/blob/master/beastify/icons/beasts-32.png), которая взята из набора [IconBeast Lite ](http://www.iconbeast.com/free)и используется на условиях этой [лицензии](http://www.iconbeast.com/faq/). -

Если вы не предоставите всплывающую панель, то событие click отправляется в ваше дополнение, когда пользователь кликает кнопку. Если вы предоставите всплывающую панель, то событие click не отправляется, зато появляется всплывающая панель. Мы хотим панель, давайте создадим её.

+Если вы не предоставите всплывающую панель, то событие click отправляется в ваше дополнение, когда пользователь кликает кнопку. Если вы предоставите всплывающую панель, то событие click не отправляется, зато появляется всплывающая панель. Мы хотим панель, давайте создадим её. -

Всплывающая панель

+### Всплывающая панель -

Функция панели - позволить пользователю выбрать одного из трёх зверей.

+Функция панели - позволить пользователю выбрать одного из трёх зверей. -

Создайте новую папку с именем "popup" в корневой папке дополнения. Здесь мы сохраним код для панели. Панель будет состоять из трёх файлов:

+Создайте новую папку с именем "popup" в корневой папке дополнения. Здесь мы сохраним код для панели. Панель будет состоять из трёх файлов: -
    -
  • choose_beast.html определяет содержимое панели
  • -
  • choose_beast.css стили для содержимого
  • -
  • choose_beast.js обрабатывает выбор пользователя, выполняя content script в активной вкладке
  • -
+- **`choose_beast.html`** определяет содержимое панели +- **`choose_beast.css`** стили для содержимого +- **`choose_beast.js`** обрабатывает выбор пользователя, выполняя content script в активной вкладке -

choose_beast.html

+#### choose_beast.html -

HTML выглядит так:

+HTML выглядит так: -
<!DOCTYPE html>
+```html
+
 
-<html>
-  <head>
-    <meta charset="utf-8">
-    <link rel="stylesheet" href="choose_beast.css"/>
-  </head>
+
+  
+    
+    
+  
 
-  <body>
-    <div class="button beast">Frog</div>
-    <div class="button beast">Turtle</div>
-    <div class="button beast">Snake</div>
-    <div class="button clear">Reset</div>
+  
+    
Frog
+
Turtle
+
Snake
+
Reset
- <script src="choose_beast.js"></script> - </body> + + -</html>
+ +``` -

У нас есть элемент для каждого животного. Обратите внимание, что мы подключаем CSS и JS файлы из HTML файла, как на обыкновенной веб-странице.

+У нас есть элемент для каждого животного. Обратите внимание, что мы подключаем CSS и JS файлы из HTML файла, как на обыкновенной веб-странице. -

choose_beast.css

+#### choose_beast.css -

CSS фиксирует размер всплывающей панели, гарантирует что три варианта заполняют пространство и даёт им основной стиль:

+CSS фиксирует размер всплывающей панели, гарантирует что три варианта заполняют пространство и даёт им основной стиль: -
html, body {
+```css
+html, body {
   width: 100px;
 }
 
@@ -196,13 +195,14 @@ cd beastify
.clear:hover { background-color: #EAEAC9; } - +``` -

choose_beast.js

+#### choose_beast.js -

В JavaScript для всплывающего окна мы обрабатываем события click. Если click был на одном из трёх вариантов наших животных, мы добавляем content script в активную вкладку. После того, как content script загрузится, мы отправляем ему сообщение с выбранным животным:

+В JavaScript для всплывающего окна мы обрабатываем события click. Если click был на одном из трёх вариантов наших животных, мы добавляем content script в активную вкладку. После того, как content script загрузится, мы отправляем ему сообщение с выбранным животным: -
/*
+```js
+/*
 Учитывая имя зверя, получаем URL соответствующего изображения.
 */
 function beastNameToURL(beastName) {
@@ -231,7 +231,7 @@ function beastNameToURL(beastName) {
   неисправен после перезагрузки страницы.
 */
 
-document.addEventListener("click", (e) => {
+document.addEventListener("click", (e) => {
   if (e.target.classList.contains("beast")) {
     var chosenBeast = e.target.textContent;
     var chosenBeastURL = beastNameToURL(chosenBeast);
@@ -241,7 +241,7 @@ document.addEventListener("click", (e) => {
     });
 
     var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
-    gettingActiveTab.then((tabs) => {
+    gettingActiveTab.then((tabs) => {
       browser.tabs.sendMessage(tabs[0].id, {beastURL: chosenBeastURL});
     });
   }
@@ -250,21 +250,20 @@ document.addEventListener("click", (e) => {
     window.close();
   }
 });
-
+``` -

Скрипт использует три функции WebExtension API:

+Скрипт использует три функции WebExtension API: -
    -
  • browser.tabs.executeScript добавляет content script, найденный по адресу content_scripts/beastify.js", к активной вкладке
  • -
  • browser.tabs.query запрашивает активную вкладку
  • -
  • browser.tabs.sendMessage отправляет сообщение для content script, который работает в активной вкладке. Сообщение содержит URL изображения выбранного зверя.
  • -
+- [`browser.tabs.executeScript`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) добавляет content script, найденный по адресу content_scripts/beastify.js", к активной вкладке +- [`browser.tabs.query`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) запрашивает активную вкладку +- [`browser.tabs.sendMessage`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage) отправляет сообщение для content script, который работает в активной вкладке. Сообщение содержит URL изображения выбранного зверя. -

Content script

+### Content script -

Создайте новую папку с именем "content_scripts" в корневой папке дополнения и создайте в ней новый файл с именем "beastify.js", со следующим кодом:

+Создайте новую папку с именем "content_scripts" в корневой папке дополнения и создайте в ней новый файл с именем "beastify.js", со следующим кодом: -
/*
+```js
+/*
 beastify():
 * удаляет каждый узел в document.body,
 * затем вставляет выбранного зверя
@@ -301,29 +300,28 @@ function insertBeast(beastURL) {
 Назначает beastify() обработчиком сообщений расширения.
 */
 browser.runtime.onMessage.addListener(beastify);
-
+``` -

Content script добавляет обработчик к сообщениям от дополнения (в частности как в файле "choose_beast.js" выше). В обработчике скрипт:

+Content script добавляет обработчик к сообщениям от дополнения (в частности как в файле "choose_beast.js" выше). В обработчике скрипт: -
    -
  • удаляет каждый элемент из document.body
  • -
  • создаёт <img> элемент, указывающий на переданный URL, и вставляет элемент в DOM
  • -
  • удаляет обработчик сообщений.
  • -
+- удаляет каждый элемент из `document.body` +- создаёт `` элемент, указывающий на переданный URL, и вставляет элемент в DOM +- удаляет обработчик сообщений. -

Звери

+### Звери -

Наконец, нам нужно подключить изображения животных.

+Наконец, нам нужно подключить изображения животных. -

Создайте новую папку с именем "beasts" и добавьте туда три изображения с соответствующими именами. Вы можете получить изображения из GitHub репозитория, или прямо здесь:

+Создайте новую папку с именем "beasts" и добавьте туда три изображения с соответствующими именами. Вы можете получить изображения из [GitHub репозитория](https://github.com/mdn/webextensions-examples/tree/master/beastify/beasts), или прямо здесь: -

+![](https://mdn.mozillademos.org/files/11459/frog.jpg)![](https://mdn.mozillademos.org/files/11461/snake.jpg)![](https://mdn.mozillademos.org/files/11463/turtle.jpg) -

Тестирование

+## Тестирование -

Во-первых, дважды проверьте, что у вас все файлы на своих местах:

+Во-первых, дважды проверьте, что у вас все файлы на своих местах: -
beastify/
+```
+beastify/
 
     beasts/
         frog.jpg
@@ -342,22 +340,24 @@ browser.runtime.onMessage.addListener(beastify);
         choose_beast.html
         choose_beast.js
 
-    manifest.json
+ manifest.json +``` -

Начиная с Firefox 45 вы можете временно установить дополнения с жёсткого диска.

+Начиная с Firefox 45 вы можете временно установить дополнения с жёсткого диска. -

Откройте "about:debugging" в Firefox, кликните "Загрузить временное дополнение", и выберете ваш файл manifest.json. После этого вы должны увидеть иконку дополнения на панели инструментов Firefox:

+Откройте "about:debugging" в Firefox, кликните "Загрузить временное дополнение", и выберете ваш файл manifest.json. После этого вы должны увидеть иконку дополнения на панели инструментов Firefox: -

{{EmbedYouTube("sAM78GU4P34")}}

+{{EmbedYouTube("sAM78GU4P34")}} -

Откройте веб-страницу, затем щёлкните иконку, выберите зверя и посмотрите как страница изменится:

+Откройте веб-страницу, затем щёлкните иконку, выберите зверя и посмотрите как страница изменится: -

{{EmbedYouTube("YMQXyAQSiE8")}}

+{{EmbedYouTube("YMQXyAQSiE8")}} -

Разработка из командной строки

+## Разработка из командной строки -

Вы можете автоматизировать этап временной установки используя web-ext. Попробуйте это:

+Вы можете автоматизировать этап временной установки используя [web-ext](/ru/Add-ons/WebExtensions/Getting_started_with_web-ext). Попробуйте это: -
cd beastify
-web-ext run
-
+```bash +cd beastify +web-ext run +``` diff --git a/files/ru/mozilla/firefox/index.md b/files/ru/mozilla/firefox/index.md index 4d6bbf60c47207..d4d49b9833b2f5 100644 --- a/files/ru/mozilla/firefox/index.md +++ b/files/ru/mozilla/firefox/index.md @@ -7,63 +7,59 @@ tags: - Mozilla translation_of: Mozilla/Firefox --- -
{{FirefoxSidebar}}
+{{FirefoxSidebar}} -

Firefox - это популярный веб-браузер от Mozilla, доступный на многих платформах, включая Windows, Mac OS X и Linux, а также на мобильных устройствах под управлением Android и iOS. Firefox широко поддерживает самые современные веб-технологии и также имеет удобные встроенные инструменты для разработки веб-приложений, Firefox - это отличный выбор, как для обыкновенных пользователей, так и для веб-разработчиков.

+[Firefox](http://www.mozilla.org/ru/docs/firefox/new/) - это популярный веб-браузер от [Mozilla](https://www.mozilla.org/ru/), доступный на многих платформах, включая Windows, Mac OS X и Linux, а также на мобильных устройствах под управлением Android и iOS. Firefox широко поддерживает самые современные веб-технологии и также имеет [удобные встроенные инструменты ](/ru/docs/Tools)для разработки веб-приложений, Firefox - это отличный выбор, как для обыкновенных пользователей, так и для веб-разработчиков. -

Firefox - это проект с открытым исходным кодом; значительная часть кода написана нашим огромным сообществом добровольцев. Узнайте, как стать участником нашего сообщества и внесите свой вклад в проект Firefox. Вы также найдёте множество ссылок на документацию, узнаете, как создать расширение для Firefox, с помощью инструментов разработчика, и многие другие интересные вещи.

+Firefox - это проект с открытым исходным кодом; значительная часть кода написана нашим огромным сообществом добровольцев. Узнайте, как стать участником нашего сообщества и внесите свой вклад в проект Firefox. Вы также найдёте множество ссылок на документацию, узнаете, как создать расширение для Firefox, с помощью инструментов разработчика, и многие другие интересные вещи. -
-

Узнайте, как создать дополнения для Firefox, как работать с исходным кодом Firefox, как собрать Firefox из исходников, как работает Firefox изнутри, и как работают его подпроекты.

-
+Узнайте, как создать дополнения для [Firefox](https://www.mozilla.org/firefox/), как работать с исходным кодом Firefox, как собрать Firefox из исходников, как работает Firefox изнутри, и как работают его подпроекты. -
-
Замечания для разработчиков
-
Заметки для веб-разработчиков; узнавайте новые возможности, для создания сайтов и расширений, появляющиеся в каждой новой версии Firefox.
-
Документация к проекту
-
Получите подробную информацию о внутреннем устройстве Firefox и его системе сборки. Узнайте, как работать с исходным кодом проекта Firefox.
-
Руководство разработчика
-
Наш справочник разработчика содержит подробную информацию о том, как получить исходники и скомпилировать Firefox из них, как ориентироваться в исходном коде и даже внести свой вклад в проект.
-
+- Замечания для разработчиков + - : [Заметки для веб-разработчиков](/ru/docs/Firefox/Releases); узнавайте новые возможности, для создания сайтов и расширений, появляющиеся в каждой новой версии Firefox. +- Документация к проекту + - : Получите подробную информацию [о внутреннем устройстве Firefox](/ru/docs/Mozilla) и его системе сборки. Узнайте, как работать с исходным кодом проекта Firefox. +- Руководство разработчика + - : Наш [справочник разработчика](/ru/docs/Developer_Guide) содержит подробную информацию о том, как получить исходники и скомпилировать Firefox из них, как ориентироваться в исходном коде и даже внести свой вклад в проект. -

Каналы Firefox

+## Каналы Firefox -

Firefox доступен в 5 каналах.

+Firefox доступен в 5 **каналах.** -

Firefox Nightly

+### Firefox Nightly -

Каждую ночь мы собираем Firefox из самых свежих исходных кодов в репозитории mozilla-central. Эти сборки для разработчиков Firefox или тех, кто хочет попробовать самые последние разработанные возможности, которые ещё находятся в процессе активной разработки.

+Каждую ночь мы собираем Firefox из самых свежих исходных кодов в репозитории [mozilla-central](/ru/docs/Developer_Guide/mozilla-central). Эти сборки для разработчиков Firefox или тех, кто хочет попробовать самые последние разработанные возможности, которые ещё находятся в процессе активной разработки. -

Загрузить Firefox Nightly

+[Загрузить Firefox Nightly](https://nightly.mozilla.org/) -

Firefox Developer Edition (Firefox Аврора)

+### Firefox Developer Edition (Firefox Аврора) -

Эта версия предназначена для разработчиков. Каждые шесть недель, мы берём из Firefox Nightly всю функциональность, которая уже опробована и считается более или менее стабильной и создаём новую версию Firefox Developer Edition. Помимо этого она включает в себя некоторые дополнительные возможности, которые доступны только на этом канале.

+Эта версия предназначена для разработчиков. Каждые шесть недель, мы берём из Firefox Nightly всю функциональность, которая уже опробована и считается более или менее стабильной и создаём новую версию Firefox Developer Edition. Помимо этого она включает в себя некоторые дополнительные возможности, которые доступны только на этом канале. -

Узнать больше о Firefox Developer Edition.

+[Узнать больше о Firefox Developer Edition](/ru/docs/Firefox/Developer_Edition). -

Загрузить Firefox Developer Edition

+[Загрузить Firefox Developer Edition](https://www.mozilla.org/ru/firefox/developer/) -

Firefox Бета

+### Firefox Бета -

После шести недель в Firefox Developer Edition, мы берём стабильную функциональность и создаём новую версию Firefox Beta. Сборка Firefox Beta предназначена для тестирования новой функциональности энтузиастами Firefox, которая войдёт в следующий релиз Firefox.

+После шести недель в Firefox Developer Edition, мы берём стабильную функциональность и создаём новую версию Firefox Beta. Сборка Firefox Beta предназначена для тестирования новой функциональности энтузиастами Firefox, которая войдёт в следующий релиз Firefox. -

Загрузить Firefox Бета

+[Загрузить Firefox Бета](https://www.mozilla.org/firefox/channel/#beta) -

Firefox

+### Firefox -

После ещё шести недель, мы ещё раз отбираем функциональность, для которой не было найдено ошибок, и добавляем их в новую версию Firefox, после чего все эти новые возможности становятся доступны миллионам пользователей.

+После ещё шести недель, мы ещё раз отбираем функциональность, для которой не было найдено ошибок, и добавляем их в новую версию Firefox, после чего все эти новые возможности становятся доступны миллионам пользователей. -

Загрузить Firefox

+[Загрузить Firefox](https://www.mozilla.org/firefox/channel/#firefox) -

Firefox Extended Support Release (ESR)

+### Firefox Extended Support Release (ESR) -

Firefox ESR - издание с долгосрочной поддержкой для компьютеров для использования организациями, включая школы, университеты, предприятия и других лиц, которые нуждаются в расширенной поддержке массового развёртывания.

+Firefox ESR - издание с долгосрочной поддержкой для компьютеров для использования организациями, включая школы, университеты, предприятия и других лиц, которые нуждаются в расширенной поддержке массового развёртывания. -

Узнать больше о Firefox Extended Support Release.

+[Узнать больше о Firefox Extended Support Release](/ru/docs/Firefox/Firefox_ESR). -

Загрузить Firefox ESR

+[Загрузить Firefox ESR](https://www.mozilla.org/firefox/organizations/all/) -

Профили в Firefox

+## Профили в Firefox -

Если вы используете несколько каналов Firefox—или просто несколько конфигураций—постоянно, то вам нужно прочитать использование нескольких профилей в Firefox, включить Менеджер профилей Firefox или другие инструменты на ваше усмотрение.

+Если вы используете несколько каналов Firefox—или просто несколько конфигураций—постоянно, то вам нужно прочитать [использование нескольких профилей в Firefox](/ru/docs/Mozilla/Firefox/Multiple_profiles), включить Менеджер профилей Firefox или другие инструменты на ваше усмотрение. diff --git a/files/ru/mozilla/firefox/releases/1.5/index.md b/files/ru/mozilla/firefox/releases/1.5/index.md index dcc5069942100e..ae68e187e38840 100644 --- a/files/ru/mozilla/firefox/releases/1.5/index.md +++ b/files/ru/mozilla/firefox/releases/1.5/index.md @@ -20,104 +20,92 @@ tags: - XUL translation_of: Mozilla/Firefox/Releases/1.5 --- -
{{FirefoxSidebar}}

Based on the Gecko 1.8 engine, Firefox 1.5 improved its already best in class standards support, and provided new capabilities to enable the next generation of web applications. Firefox 1.5 features improved support for CSS2 and CSS3, APIs for scriptable and programmable 2D graphics through SVG 1.1 and <canvas>, XForms and XML events, as well as many DHTML, JavaScript, and DOM enhancements.

- -

Developer Tools

- -

Several tools and browser extensions are available to help developers support Firefox 1.5.

- -
    -
  • DOM Inspector, a tool that allows developers to inspect and modify documents without having to edit the document directly. DOM Inspector is available as part of the Custom install option in Firefox 1.5 under Developer Tools.
  • -
  • JavaScript console, a tool to write and test JavaScript code as well as view JavaScript and CSS errors on a page.
  • -
  • View page source, with syntax highlighting and find features.
  • -
  • Browser extensions including the FireBug, Web Developer toolbar, Live HTTP Headers, HTML Validator and many more.
  • -
- -

Note: Some extensions do not currently support Firefox 1.5, and will be automatically disabled.

- -

Overview

- -

Some of the new features in Firefox 1.5:

- -

Web site and application developers

- -
-
SVG In XHTML Introduction
-
Learn how to use SVG in XHTML pages and how to use JavaScript and CSS to manipulate the picture in the same way you would script regular XHTML. See also SVG in Firefox to learn about the status and known problems of SVG implementation in Firefox.
-
Drawing Graphics with Canvas
-
Learn about the new <canvas> tag and how to draw graphs and other objects in Firefox.
-
CSS3 Columns
-
Learn about the new support for automatic multi-column text layout as proposed for CSS3.
-
Using Firefox 1.5 caching
-
Learn about bfcache and how it speeds up back and forward navigation.
-
- -

XUL and Extension Developers

- -
-
Building an Extension
-
This tutorial will take you through the steps required to build a very basic extension for Firefox. Also see another tutorial on MozillaZine knowledge base, which demonstrates the new features of the Extension Manager in 1.5 that make creating a new extension even easier.
-
XPCNativeWrapper
-
XPCNativeWrapper is a way to wrap up an object so that it's safe to access from privileged code. It can be used in all Firefox versions, though the behavior changed somewhat starting with Firefox 1.5 (Gecko 1.8).
-
Preferences System
-
Learn about the new widgets that allow you to create Options windows easier using less JavaScript code.
-
International characters in XUL JavaScript
-
XUL JavaScript files can now contain non-ASCII characters.
-
Tree API changes
-
The interfaces for accessing XUL <tree> elements have changed.
-
XUL Changes for Firefox 1.5
-
Summary of XUL changes. See also Adapting XUL Applications for Firefox 1.5.
-
- - - -
    -
  • Certificate prompts can now be overridden on a per-channel basis. This works by setting an interface requestor as an nsIChannel's notificationCallbacks and giving out an interface for nsIBadCertListener.
  • -
  • nsIWebBrowserPersist's listeners can now implement nsIInterfaceRequestor::GetInterface and will get an opportunity to provide all interfaces that channels might ask for, including nsIProgressEventSink (not too useful, redundant with nsIWebProgressListener). Useful interfaces here include nsIChannelEventSink and nsIBadCertListener.
  • -
  • Extensions or other necko consumers, including XMLHttpRequest, can set a Cookie header explicitly, and necko will not replace it. Stored cookies will be merged with the explicitly set header, in a way that the explicit header will override the stored cookies.
  • -
- -

New End user Features

- -

User Experience

- -
    -
  • Faster browser navigation with improvements to back and forward button performance.
  • -
  • Drag and drop reordering for browser tabs.
  • -
  • Answers.com is added to the search engine list for dictionary lookup.
  • -
  • Improvements to product usability including descriptive error pages, redesigned options menu, RSS discovery, and "Safe Mode" experience.
  • -
  • Better accessibility support including DHTML accessibility.
  • -
  • Report a broken Web site wizard to report Web sites that are not working in Firefox.
  • -
  • Better support for Mac OS X (10.2 and greater) including profile migration from Safari and Mac Internet Explorer.
  • -
- -

Security and Privacy

- -
    -
  • Automated update to streamline product upgrades. Notification of an update is more prominent, and updates to Firefox may now be half a megabyte or smaller. Updating extensions has also improved.
  • -
  • Improvements to popup blocking.
  • -
  • Clear Private Data feature provides an easy way to quickly remove personal data through a menu item or keyboard shortcut.
  • -
- -

Support for open Web standards

- -

Firefox support for Web standards continues to lead the industry with consistent cross-platform implementations for:

- - - -

Firefox 1.5 supports the following data transport protocols (HTTP, FTP, SSL, TLS, and others), multilingual character data (Unicode), graphics (GIF, JPEG, PNG, SVG, and others) and the latest version of the world's most popular scripting language, JavaScript 1.6.

- -

Changes since Firefox 1.0

- -

Many changes have been introduced into Firefox since it was first released on November 9, 2004. Firefox has progressed with many new features and bug fixes. A detailed list of changes is available from squarefree.com.

+{{FirefoxSidebar}} + +Based on the [Gecko](/ru/docs/Gecko "en-US/docs/Gecko") 1.8 engine, Firefox 1.5 improved its already best in class standards support, and provided new capabilities to enable the next generation of web applications. Firefox 1.5 features improved support for CSS2 and CSS3, APIs for scriptable and programmable 2D graphics through [SVG](/ru/docs/SVG "en-US/docs/SVG") 1.1 and [``](/ru/docs/HTML/Canvas "en-US/docs/HTML/Canvas"), [XForms](/ru/docs/XForms "en-US/docs/XForms") and XML events, as well as many DHTML, JavaScript, and DOM enhancements. + +## Developer Tools + +Several tools and browser extensions are available to help developers support Firefox 1.5. + +- [DOM Inspector](/ru/docs/DOM_Inspector "en-US/docs/DOM_Inspector"), a tool that allows developers to inspect and modify documents without having to edit the document directly. DOM Inspector is available as part of the Custom install option in Firefox 1.5 under Developer Tools. +- JavaScript console, a tool to write and test JavaScript code as well as view JavaScript and CSS errors on a page. +- View page source, with syntax highlighting and find features. +- [Browser extensions](https://addons.mozilla.org/extensions/showlist.php?application=firefox&category=Developer%20Tools) including the [FireBug](http://www.joehewitt.com/software/firebug/), [Web Developer toolbar]( "en-US/docs/Web_Developer_Extension_(external)"), [Live HTTP Headers]( "en-US/docs/Live_HTTP_Headers_(external)"), [HTML Validator]( "en-US/docs/HTML_Validator_(external)") and many more. + +**Note:** Some extensions do not currently support Firefox 1.5, and will be automatically disabled. + +## Overview + +Some of the new features in Firefox 1.5: + +### Web site and application developers + +- [SVG In XHTML Introduction](/ru/docs/SVG_In_HTML_Introduction "en-US/docs/SVG_In_HTML_Introduction") + - : Learn how to use SVG in XHTML pages and how to use JavaScript and CSS to manipulate the picture in the same way you would script regular XHTML. See also [SVG in Firefox](/ru/docs/SVG_in_Firefox "en-US/docs/SVG_in_Firefox") to learn about the status and known problems of SVG implementation in Firefox. +- [Drawing Graphics with Canvas](/ru/docs/HTML/Canvas/Drawing_Graphics_with_Canvas "en-US/docs/Drawing_Graphics_with_Canvas") + - : Learn about the new `` tag and how to draw graphs and other objects in Firefox. +- [CSS3 Columns](/ru/docs/CSS/Using_CSS_multi-column_layouts "en-US/docs/CSS3_Columns") + - : Learn about the new support for automatic multi-column text layout as proposed for [CSS3](/ru/docs/CSS/CSS3 "CSS3"). +- [Using Firefox 1.5 caching](/ru/docs/Using_Firefox_1.5_caching "en-US/docs/Using_Firefox_1.5_caching") + - : Learn about `bfcache` and how it speeds up back and forward navigation. + +### XUL and Extension Developers + +- [Building an Extension](/ru/docs/Building_an_Extension "en-US/docs/Building_an_Extension") + - : This tutorial will take you through the steps required to build a very basic extension for Firefox. Also see [another tutorial on MozillaZine knowledge base](http://kb.mozillazine.org/Getting_started_with_extension_development), which demonstrates the new features of the Extension Manager in 1.5 that make creating a new extension even easier. +- [XPCNativeWrapper](/ru/docs/XPCNativeWrapper "en-US/docs/XPCNativeWrapper") + - : `XPCNativeWrapper` is a way to wrap up an object so that it's [safe to access from privileged code](/ru/docs/Safely_accessing_content_DOM_from_chrome "en-US/docs/Safely_accessing_content_DOM_from_chrome"). It can be used in all Firefox versions, though the behavior changed somewhat starting with Firefox 1.5 (Gecko 1.8). +- [Preferences System](/ru/docs/Preferences_System "en-US/docs/Preferences_System") + - : Learn about the new widgets that allow you to create Options windows easier using less JavaScript code. +- [International characters in XUL JavaScript](/ru/docs/International_characters_in_XUL_JavaScript "en-US/docs/International_characters_in_XUL_JavaScript") + - : XUL JavaScript files can now contain non-ASCII characters. +- [Tree API changes](/ru/docs/Tree_Widget_Changes "en-US/docs/Tree_Widget_Changes") + - : The interfaces for accessing XUL `` elements have changed. +- [XUL Changes for Firefox 1.5](/ru/docs/XUL_Changes_for_Firefox_1.5 "en-US/docs/XUL_Changes_for_Firefox_1.5") + - : Summary of XUL changes. See also [Adapting XUL Applications for Firefox 1.5](/ru/docs/Adapting_XUL_Applications_for_Firefox_1.5 "en-US/docs/Adapting_XUL_Applications_for_Firefox_1.5"). + +#### Networking-related changes + +- Certificate prompts can now be overridden on a per-channel basis. This works by setting an interface requestor as an [nsIChannel](/ru/docs/nsIChannel "en-US/docs/nsIChannel")'s notificationCallbacks and giving out an interface for [nsIBadCertListener](/ru/docs/NsIBadCertListener "en-US/docs/NsIBadCertListener"). +- nsIWebBrowserPersist's listeners can now implement [nsIInterfaceRequestor](/ru/docs/XPCOM_Interface_Reference/nsIInterfaceRequestor "en-US/docs/nsIInterfaceRequestor")::GetInterface and will get an opportunity to provide all interfaces that channels might ask for, including [nsIProgressEventSink](/ru/docs/NsIProgressEventSink "en-US/docs/NsIProgressEventSink") (not too useful, redundant with [nsIWebProgressListener](/ru/docs/nsIWebProgressListener "en-US/docs/nsIWebProgressListener")). Useful interfaces here include [nsIChannelEventSink](/ru/docs/NsIChannelEventSink "en-US/docs/NsIChannelEventSink") and [nsIBadCertListener](/ru/docs/NsIBadCertListener "en-US/docs/NsIBadCertListener"). +- Extensions or other necko consumers, including XMLHttpRequest, can set a Cookie header explicitly, and necko will not replace it. Stored cookies will be merged with the explicitly set header, in a way that the explicit header will override the stored cookies. + +## New End user Features + +### User Experience + +- **Faster browser navigation** with improvements to back and forward button performance. +- **Drag and drop reordering for browser tabs.** +- **Answers.com is added to the search engine list** for dictionary lookup. +- **Improvements to product usability** including descriptive error pages, redesigned options menu, RSS discovery, and "Safe Mode" experience. +- **Better accessibility support** including DHTML accessibility. +- **Report a broken Web site wizard** to report Web sites that are not working in Firefox. +- **Better support for Mac OS X** (10.2 and greater) including profile migration from Safari and Mac Internet Explorer. + +### Security and Privacy + +- **Automated update** to streamline product upgrades. Notification of an update is more prominent, and updates to Firefox may now be half a megabyte or smaller. Updating extensions has also improved. +- **Improvements to popup blocking.** +- **Clear Private Data** feature provides an easy way to quickly remove personal data through a menu item or keyboard shortcut. + +### Support for open Web standards + +Firefox support for Web standards continues to lead the industry with consistent cross-platform implementations for: + +- Hypertext Markup Language ([HTML](/ru/docs/HTML "en-US/docs/HTML")) and Extensible Hypertext Markup Language ([XHTML](/ru/docs/XHTML "en-US/docs/XHTML")): [HTML 4.01](http://www.w3.org/TR/html401/) and [XHTML 1.0/1.1](http://www.w3.org/TR/xhtml1/) +- Cascading Style Sheets ([CSS](/ru/docs/CSS "en-US/docs/CSS")): [CSS Level 1](http://www.w3.org/TR/REC-CSS1), [CSS Level 2](http://www.w3.org/TR/REC-CSS2) and parts of [CSS Level 3](http://www.w3.org/Style/CSS/current-work.html) +- Document Object Model ([DOM](/ru/docs/DOM "en-US/docs/DOM")): [DOM Level 1](http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/), [DOM Level 2](http://www.w3.org/DOM/DOMTR#dom2) and parts of [DOM Level 3](http://www.w3.org/DOM/DOMTR#dom3) +- Mathematical Markup Language: [MathML Version 2.0](http://www.w3.org/Math/) +- Extensible Markup Language ([XML](/ru/docs/XML "en-US/docs/XML")): [XML 1.0](http://www.w3.org/TR/REC-xml), [Namespaces in XML](http://www.w3.org/TR/REC-xml-names/), [Associating Style Sheets with XML Documents 1.0](http://www.w3.org/TR/xml-stylesheet/), [Fragment Identifier for XML](http://lists.w3.org/Archives/Public/www-xml-linking-comments/2001AprJun/att-0074/01-NOTE-FIXptr-20010425.htm) +- XSL Transformations ([XSLT](/ru/docs/XSLT "en-US/docs/XSLT")): [XSLT 1.0](http://www.w3.org/TR/xslt) +- XML Path Language ([XPath](/ru/docs/XPath "en-US/docs/XPath")): [XPath 1.0](http://www.w3.org/TR/xpath) +- Resource Description Framework ([RDF](/ru/docs/RDF "en-US/docs/RDF")): [RDF](http://www.w3.org/RDF/) +- Simple Object Access Protocol (SOAP): [SOAP 1.1](http://www.w3.org/TR/SOAP/) +- [JavaScript](/ru/docs/JavaScript "en-US/docs/JavaScript") 1.6, based on [ECMA-262](/ru/docs/ECMAScript "en-US/docs/ECMAScript"), revision 3: [ECMA-262](http://www.ecma-international.org/publications/standards/Ecma-262.htm) + +Firefox 1.5 supports the following data transport protocols (HTTP, FTP, SSL, TLS, and others), multilingual character data (Unicode), graphics (GIF, JPEG, PNG, SVG, and others) and the latest version of the world's most popular scripting language, [JavaScript 1.6](/ru/docs/New_in_JavaScript_1.6 "en-US/docs/New_in_JavaScript_1.6"). + +## Changes since Firefox 1.0 + +Many changes have been introduced into Firefox since it was first released on November 9, 2004. Firefox has progressed with many new features and bug fixes. A detailed list of changes is available from [squarefree.com](http://www.squarefree.com/burningedge/releases/1.5-comprehensive.html). diff --git a/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md b/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md index 97937fbefdfb9d..424f16f16df8c9 100644 --- a/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md +++ b/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md @@ -4,86 +4,78 @@ slug: Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching translation_of: Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching original_slug: Using_Firefox_1.5_caching --- -
{{FirefoxSidebar}}

+{{FirefoxSidebar}} -

Введение

+### Введение -

Firefox 1.5 использует кеширование целых Web-страниц, включая их JavaScript-состояния, в рамках сессии браузера. Переходы по посещённым страницам вперёд-назад не требуют загрузки страниц, а JavaScript-состояния сохраняются. Эта функция, обозначаемая иногда как bfcache (Back-Forward Cache), делает навигацию по страницам очень быстрой. Такое кешированное состояние сохраняется, пока пользователь не закроет браузер.

+[Firefox 1.5](/en/Firefox_1.5_for_developers "en/Firefox_1.5_for_developers") использует кеширование целых Web-страниц, включая их JavaScript-состояния, в рамках сессии браузера. Переходы по посещённым страницам вперёд-назад не требуют загрузки страниц, а JavaScript-состояния сохраняются. Эта функция, обозначаемая иногда как **bfcache** (Back-Forward Cache), делает навигацию по страницам очень быстрой. Такое кешированное состояние сохраняется, пока пользователь не закроет браузер. -

Есть случаи, в которых Firefox не кеширует страницы. Вот некоторые обычные программные причины того, что страница не кеширована:

+Есть случаи, в которых Firefox не кеширует страницы. Вот некоторые обычные программные причины того, что страница не кеширована: -
    -
  • страница использует обработчик unload или beforeunload;
  • -
  • страница устанавливает заголовок «cache-control: no-store».
  • -
  • доступ к сайту происходит по протоколу HTTPS, а страница устанавливает по меньшей мере один из следующих заголовков: -
      -
    • «Cache-Control: no-cache»
    • -
    • «Pragma: no-cache»
    • -
    • с заголовком «Expires: 0» or «Expires» со значением даты, лежащим в прошлом относительно значению заголовка «Date» (если только не указан также заголовок «Cache-Control: max-age=»);
    • -
    -
  • -
  • страница не полностью загрузилась, когда пользователь ушёл с неё, или имеет прерванные сетевые запросы по другим причинам (например, XMLHttpRequest));
  • -
  • страница имеет работающие IndexedDB-транзакции;
  • -
  • страница верхнего уровня содержит фреймы (например, {{ HTMLElement("iframe") }}), которые не кешируются по одной из перечисленных здесь причин;
  • -
  • страница находится в фрейме и пользователь загружает новую страницу в этот фрейм (в этом случае, когда пользователь уходит со с этой страницы, последнее загруженное в фреймы содержимое есть то, что закешировано).
  • -
+- страница использует обработчик `unload` или `beforeunload`; +- страница устанавливает заголовок «cache-control: no-store». +- доступ к сайту происходит по протоколу HTTPS, а страница устанавливает по меньшей мере один из следующих заголовков: -

Эта новая функция кеширования меняет поведение загрузки страницы, так что Web-авторы могут захотеть:

+ - «Cache-Control: no-cache» + - «Pragma: no-cache» + - с заголовком «Expires: 0» or «Expires» со значением даты, лежащим в прошлом относительно значению заголовка «Date» (если только не указан также заголовок «Cache-Control: max-age=»); -
    -
  • узнать, когда на страницу происходит переход (когда она загружается из пользовательского кеша);
  • -
  • определить поведение страницы, когда пользователь уходит со страницы (позволяя всё же странице быть закешированной).
  • -
+- страница не полностью загрузилась, когда пользователь ушёл с неё, или имеет прерванные сетевые запросы по другим причинам (например, `XMLHttpRequest`)); +- страница имеет работающие IndexedDB-транзакции; +- страница верхнего уровня содержит фреймы (например, {{ HTMLElement("iframe") }}), которые не кешируются по одной из перечисленных здесь причин; +- страница находится в фрейме и пользователь загружает новую страницу в этот фрейм (в этом случае, когда пользователь уходит со с этой страницы, последнее загруженное в фреймы содержимое есть то, что закешировано). -

Это позволяют сделать два новых события браузера.

+Эта новая функция кеширования меняет поведение загрузки страницы, так что Web-авторы могут захотеть: -

Новые события браузера

+- узнать, когда на страницу происходит переход (когда она загружается из пользовательского кеша); +- определить поведение страницы, когда пользователь уходит со страницы (позволяя всё же странице быть закешированной). -

Если вы используете эти новые события, ваши страницы продолжат правильно отображаться в других браузерах (мы протестировали старые версии Firefox, Internet Explorer, Opera и Safari), а при загрузке в Firefox 1.5 добавится новая функциональность кеширования.

+Это позволяют сделать два новых события браузера. -

Примечание: по состоянию на октябрь 2009 года разработческие версии Safari добавили поддержку этих новых событий (см. webkit-баг).

+### Новые события браузера -

Стандартное поведение для Web-страниц следующее:

+Если вы используете эти новые события, ваши страницы продолжат правильно отображаться в других браузерах (мы протестировали старые версии Firefox, Internet Explorer, Opera и Safari), а при загрузке в Firefox 1.5 добавится новая функциональность кеширования. -
    -
  1. Пользователь переходит на страницу.
  2. -
  3. По мере загрузки страницы выполняются инлайновые скрипты.
  4. -
  5. Как только страница загрузилась, срабатывает обработчик onload.
  6. -
+Примечание: по состоянию на октябрь 2009 года разработческие версии Safari добавили поддержку этих новых событий (см. [webkit-баг](https://bugs.webkit.org/show_bug.cgi?id=28758)). -

Некоторые страницы включают четвёртый шаг. Если страница использует обработчик unload или beforeunload handler, он срабатывает прежде чем пользователь уходит со страницы. Если присутствует обработчик unload, эта страница не будет кеширована.

+Стандартное поведение для Web-страниц следующее: -

Когда пользователь переходит на кешированную страницу, инлайновые скрипты и обработчик onload не запускаются (шаги 2 и 3), так как в большинстве случаев эффекты этих скриптов были сохранены.

+1. Пользователь переходит на страницу. +2. По мере загрузки страницы выполняются инлайновые скрипты. +3. Как только страница загрузилась, срабатывает обработчик `onload`. -

Если страница содержит скрипты или иное поведение, запускаемое в течение загрузки, которое вы хотите продолжить выполнять каждый раз, когда пользователь заходит на страницу, или если вы хотите знать, когда пользователь заходит на кешированную страницу, используйте новое событие pageshow.

+Некоторые страницы включают четвёртый шаг. Если страница использует обработчик `unload` или `beforeunload` handler, он срабатывает прежде чем пользователь уходит со страницы. Если присутствует обработчик `unload`, эта страница не будет кеширована. -

Если у вас есть поведение, запускаемое, когда пользователь уходит со страницы, но вы хотите воспользоваться новой функциональностью кеширования, и поэтому не хотите использовать обработчик unload, используйте новое событие pagehide.

+Когда пользователь переходит на кешированную страницу, инлайновые скрипты и обработчик `onload` не запускаются (шаги 2 и 3), так как в большинстве случаев эффекты этих скриптов были сохранены. -

Событие pageshow

+Если страница содержит скрипты или иное поведение, запускаемое в течение загрузки, которое вы хотите продолжить выполнять каждый раз, когда пользователь заходит на страницу, или если вы хотите знать, когда пользователь заходит на кешированную страницу, используйте новое событие `pageshow`. -

Это событие работает так же, как событие load, но срабатывает каждый раз при загрузке страницы (в то время как событие load в Firefox 1.5 не срабатывает, когда страница загружается из кеша). При первой загрузке страницы событие pageshow срабатывает сразу после события load. Событие pageshow использует булевское свойство persisted, которое выставляется в false при начальной загрузке. Оно выставляется в true, если это не начальная загрузка (то есть когда страница уже кеширована).

+Если у вас есть поведение, запускаемое, когда пользователь уходит со страницы, но вы хотите воспользоваться новой функциональностью кеширования, и поэтому не хотите использовать обработчик unload, используйте новое событие `pagehide`. -

Выполняйте любой JavaScript-код, который должен отработать при каждой загрузке страницы, при срабатывании событий pageshow.

+#### Событие pageshow -

Вызывая JavaScript-функции в обработчике события pageshow, вы можете обеспечить их вызов при загрузке страницы в браузерах, отличных от Firefox 1.5, вызывая этот обработчик в обработчике события load, как показано в примере ниже.

+Это событие работает так же, как событие `load`, но срабатывает каждый раз при загрузке страницы (в то время как событие `load` в Firefox 1.5 не срабатывает, когда страница загружается из кеша). При первой загрузке страницы событие `pageshow` срабатывает сразу после события `load`. Событие `pageshow` использует булевское свойство `persisted`, которое выставляется в `false` при начальной загрузке. Оно выставляется в `true`, если это не начальная загрузка (то есть когда страница уже кеширована). -

Событие pagehide

+Выполняйте любой JavaScript-код, который должен отработать при каждой загрузке страницы, при срабатывании событий `pageshow`. -

Если вы хотите определить поведение, которое происходит, когда пользователь уходит со страницы, но не хотите использовать событие unload (что воспрепятствовало бы кешированию страницы), вы можете использовать новое событие pagehide. Как и pageshow, событие pagehide использует булевское свойство persisted. Оно выставляется в false, если страница не кеширована в браузере, а в true,— если кеширована. Когда это свойство выставлено в false, обработчик unload, если он есть, вызывается сразу после события pagehide.

+Вызывая JavaScript-функции в обработчике события `pageshow`, вы можете обеспечить их вызов при загрузке страницы в браузерах, отличных от Firefox 1.5, вызывая этот обработчик в обработчике события `load`, как показано в примере ниже. -

Firefox 1.5 пытается имитировать события загрузки в том же порядке, в каком они срабатывают при начальной загрузке страницы. Фреймы обрабатываются таким же образом, что и документ верхнего уровня. Если страница содержит фреймы, то при загрузке кешированной страницы:

+#### Событие pagehide -
    -
  • События pageshow из каждого фрейма срабатывают перед событием pageshow в главном документе.
  • -
  • Когда пользователь уходит с кешированной страницы, событие pagehide из каждого фрейма срабатывает перед событием pagehide в главном документе.
  • -
  • Для навигации, происходящей внутри отдельного фрейма, события срабатывают только в затронутом фрейме.
  • -
+Если вы хотите определить поведение, которое происходит, когда пользователь уходит со страницы, но не хотите использовать событие `unload` (что воспрепятствовало бы кешированию страницы), вы можете использовать новое событие `pagehide`. Как и `pageshow`, событие `pagehide` использует булевское свойство `persisted`. Оно выставляется в `false`, если страница не кеширована в браузере, а в `true`,— если кеширована. Когда это свойство выставлено в `false`, обработчик `unload`, если он есть, вызывается сразу после события `pagehide`. -

Кеширование страницы несмотря на обработчики unload и beforeunload

+Firefox 1.5 пытается имитировать события загрузки в том же порядке, в каком они срабатывают при начальной загрузке страницы. Фреймы обрабатываются таким же образом, что и документ верхнего уровня. Если страница содержит фреймы, то при загрузке кешированной страницы: -

Если вы хотите использовать события unload или beforeunload, сохранив кеширование страницы, вы можете просто удалить эти события в обработчике события и восстановить их в обработчике pageshow, если возвращаетесь на эту страницу:

+- События `pageshow` из каждого фрейма срабатывают перед событием `pageshow` в главном документе. +- Когда пользователь уходит с кешированной страницы, событие `pagehide` из каждого фрейма срабатывает перед событием `pagehide` в главном документе. +- Для навигации, происходящей внутри отдельного фрейма, события срабатывают только в затронутом фрейме. -
window.addEventListener('pageshow', PageShowHandler, false);
+#### Кеширование страницы несмотря на обработчики `unload` и `beforeunload`
+
+Если вы хотите использовать события `unload` или `beforeunload`, сохранив кеширование страницы, вы можете просто удалить эти события в обработчике события и восстановить их в обработчике `pageshow`, если возвращаетесь на эту страницу:
+
+```
+window.addEventListener('pageshow', PageShowHandler, false);
 window.addEventListener('unload', UnloadHandler, false);
 
 function PageShowHandler() {
@@ -93,43 +85,40 @@ function PageShowHandler() {
 function UnloadHandler() {
 	window.removeEventListener('unload', UnloadHandler, false);
 }
-
+``` + +### Пример кода + +Приведённый ниже пример реализует страницу, которая использует обработчики `load` и `pageshow`. Поведение этой страницы следующее: -

Пример кода

+- В браузерах, отличных от Firefox 1.5, при каждой загрузке страницы происходит следующее: событие `load` вызывает функцию `onLoad`, которая вызывает функцию `onPageShow` (а также дополнительную функцию). -

Приведённый ниже пример реализует страницу, которая использует обработчики load и pageshow. Поведение этой страницы следующее:

+ -
    -
  • В браузерах, отличных от Firefox 1.5, при каждой загрузке страницы происходит следующее: событие load вызывает функцию onLoad, которая вызывает функцию onPageShow (а также дополнительную функцию).
  • -
+- В Firefox 1.5 при первой загрузке страницы событие `load` работает так же, как и в других браузерах. Кроме того, срабатывает событие `pageshow`, и, так как `persisted` установлено в `false`, не предпринимается никаких дополнительных действий. -
    -
  • В Firefox 1.5 при первой загрузке страницы событие load работает так же, как и в других браузерах. Кроме того, срабатывает событие pageshow, и, так как persisted установлено в false, не предпринимается никаких дополнительных действий.
  • -
+ -
    -
  • В Firefox 1.5 при загрузке страницы из кеша срабатывает только событие pageshow. Так как persisted установлено в true, вызывается только JavaScript-код в функции onPageShow.
  • -
+- В Firefox 1.5 при загрузке страницы из кеша срабатывает только событие `pageshow`. Так как` persisted` установлено в `true`, вызывается только JavaScript-код в функции `onPageShow`. -

В этом примере:

+В этом примере: -
    -
  • Страница вычисляет и отображает текущие дату и время каждый раз при загрузке. Это вычисление включает секунды и миллисекунды, так что вы легко можете протестировать функциональность.
  • -
  • Курсор помещается в поле Name при первой загрузке страницы. В Firefox 1.5 при возвращении на страницу курсор остаётся в том поле, где он был, когда пользователь ушёл со страницы. В других браузерах курсор опять помещается в поле Name.
  • -
+- Страница вычисляет и отображает текущие дату и время каждый раз при загрузке. Это вычисление включает секунды и миллисекунды, так что вы легко можете протестировать функциональность. +- Курсор помещается в поле Name при первой загрузке страницы. В Firefox 1.5 при возвращении на страницу курсор остаётся в том поле, где он был, когда пользователь ушёл со страницы. В других браузерах курсор опять помещается в поле Name. -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-   "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<head>
-<title>Order query : Firefox 1.5 Example</title>
-<style type="text/css">
+```
+
+
+
+Order query : Firefox 1.5 Example
+
+
+
+
+

Order query

+ +
+ +
+ +
+ +
+ +
+ +
+ + +``` + +Напротив, если приведённая выше страница не обрабатывает событие `pageshow` и выполняет все вычисления в обработчике события `load` (если код написан так, как показано в примере ниже), как положение курсора, так и дата/время в Firefox 1.5 будут кешированы, когда пользователь уйдёт со страницы. Когда пользователь вернётся на страницу, отобразятся кешированные дата/время. + +``` + + -<body onload="onLoad();"> -
+ +``` -

Developing Firefox extensions

+### Developing Firefox extensions -

Firefox 1.5 extensions need to allow for this caching functionality. If you are developing a Firefox extension that you want to be compatible with both 1.5 and earlier versions, make sure that it listens for the load event for triggers that can be cached and listens for the pageshow event for triggers that shouldn’t be cached.

+Firefox 1.5 [extensions](/en/Building_an_Extension "en/Building_an_Extension") need to allow for this caching functionality. If you are developing a Firefox extension that you want to be compatible with both 1.5 and earlier versions, make sure that it listens for the `load` event for triggers that can be cached and listens for the `pageshow` event for triggers that shouldn’t be cached. -

For instance, the Google Toolbar for Firefox should listen for the load event for the autolink function and to the pageshow event for the PageRank function in order to be compatible with both 1.5 and earlier versions.

+For instance, the Google Toolbar for Firefox should listen for the `load` event for the autolink function and to the `pageshow` event for the PageRank function in order to be compatible with both 1.5 and earlier versions. -

{{ languages( { "it": "it/Usare_il_caching_di_Firefox_1.5", "de": "de/Benutzen_des_Zwischenspeichers_in_Firefox_1.5_(caching)", "fr": "fr/Utilisation_du_cache_de_Firefox_1.5", "ja": "ja/Using_Firefox_1.5_caching" } ) }}

+{{ languages( { "it": "it/Usare\_il\_caching\_di\_Firefox\_1.5", "de": "de/Benutzen\_des\_Zwischenspeichers\_in\_Firefox\_1.5\_(caching)", "fr": "fr/Utilisation\_du\_cache\_de\_Firefox\_1.5", "ja": "ja/Using\_Firefox\_1.5\_caching" } ) }} diff --git a/files/ru/mozilla/firefox/releases/28/index.md b/files/ru/mozilla/firefox/releases/28/index.md index 5c8db0f06f36f5..30617be5345479 100644 --- a/files/ru/mozilla/firefox/releases/28/index.md +++ b/files/ru/mozilla/firefox/releases/28/index.md @@ -7,81 +7,88 @@ tags: - Mozilla translation_of: Mozilla/Firefox/Releases/28 --- -
{{FirefoxSidebar}}

Firefox 28 был выпущен 18 марта 2014 года. Список ключевых изменений в данной статье будет полезен не только веб-разработчикам, но и Firefox-, Gecko-разработчикам и разработчикам дополнений.

-

Хотите помочь документировать Firefox 28? Просмотрите список недостатков, которые надо устранить и приступайте!

-

Изменения для разработчиков

-

Инструменты разработчика

-
    -
  • The {{domxref("console.exception")}} property has been added ({{bug("922214")}}).
  • -
  • The {{domxref("console.assert")}} property has been added ({{bug("760193")}}).
  • -
  • App Manager: a new Manifest Editor was added.
  • -
  • App Manager: the toolbox used for debugging apps is now embedded in the app manager UI.
  • -
  • Web Console: added a "split console" mode - press Escape to quickly open the console in any other tool.
  • -
  • Web Console: added a dark theme for the output.
  • -
  • Debugger: pretty-print minified JavaScript.
  • -
  • Debugger: simply hover over any variable or click on it to bring up a pop-up that displays the current value.
  • -
  • Inspector: added a color picker in rules view and various tooltips.
  • -
  • Browser Toolbox: allows add-on and platform developers to use almost all of the developer tools while targeting the browser itself.
  • -
-

Больше деталей в этой публикации.

-

CSS

-
    -
  • Support for multi-line flexbox has been added ({{bug("939901")}}).
  • -
  • Longhand East Asian counter styles have been implemented ({{bug("934072")}}).
  • -
  • Support for the {{cssxref("background-blend-mode")}} property has been added ({{bug("841601")}}).
  • -
  • The none value has been added to {{cssxref("font-variant-ligatures")}} ({{bug("913264")}}).
  • -
  • Support for the {{cssxref(":hover")}} user action pseudo-class on pseudo-elements has been implemented ({{bug("922669")}}).
  • -
-

HTML

-
    -
  • Реализована поддержка <input type=color> и <input type=number>, отключены по умолчанию.
  • -
-

JavaScript

-
    -
  • ECMAScript 6 (Harmony) implementation continues: -
      -
    • New Array methods have been implemented: {{jsxref("Array.prototype.entries()")}} and {{jsxref("Array.prototype.keys()")}} ({{bug("894658")}}).
    • -
    -
  • -
-

Интерфейс/API/DOM

-
    -
  • HTMLVideoElement.canPlayType('video/webm') now reports maybe. ({{bug("884275")}}).
  • -
  • The {{domxref("DocumentFragment.getElementById()")}} method has been implemented. E.g. document.createDocumentFragment().getElementById() ({{bug("933193")}}).
  • -
  • The {{domxref("KeyboardEvent.repeat")}} attribute has been implemented ({{bug("600117")}}).
  • -
  • The {{domxref("File")}} constructor, e.g. new File(["foo"], "foo.txt") has been implemented. ({{bug("819900")}}).
  • -
  • The {{domxref("NavigatorPlugins.plugins", "navigator.plugins")}} is no more enumerable, for privacy reasons ({{bug(757726)}}).
  • -
  • The two attributes {{domxref("Window.screenX")}} and {{domxref("Window.screenY")}} now return CSS pixels (and no more device pixels) ({{bug(943668)}}).
  • -
  • The two methods {{domxref("CanvasRenderingContext2D.drawSystemFocusRing()")}} and {{domxref("CanvasRenderingContext2D.drawCustomFocusRing()")}} have been implemented. The preference canvas.focusring.enabled must be set to true to activate both ({{bug(540456)}}).
  • -
  • The following attributes have been added to {{domxref("NavigatorID")}}: {{domxref("NavigatorID.appCodeName", "appCodeName")}} and {{domxref("NavigatorID.product", "product")}} ({{bug(925847)}}).
  • -
-

MathML

-
    -
  • Добавлена поддержка атрибута mathvariant ({{bug("114365")}}).
  • -
-

SVG

-

Без изменений.

-

Аудио/Видео

-
    -
  • Добавлена поддержка аудиокодека Opus для контента в мультимедиа-контейнерах WebM ({{bug("887978")}}).
  • -
  • Интегрирована поддержка видео-декодера VP9 ({{bug("833023")}}).
  • -
-

Сеть

-
    -
  • Удалена поддержка протокола SPDY/2.
  • -
-

Изменения для разработчиков дополнений

-
    -
  • The interface of DeferredTask.jsm has been changed, and the isPending(), start(), flush(), and cancel() methods have been removed ({{bug("940408")}}).
  • -
-

Безопасность

-
    -
  • CSP was not enforced in sandboxed iframes. This has been fixed ({{bug(886164)}}).
  • -
  • The CSP 1.1 experimental script-nonce directive has been implemented. The preference security.csp.experimentalEnabled should be set to true to enable this functionality ({{bug(855326)}}).
  • -
-

Смотрите также

- -

Предыдущие версии

-

{{Firefox_for_developers('27')}}

+{{FirefoxSidebar}} + +Firefox 28 был выпущен 18 марта 2014 года. Список ключевых изменений в данной статье будет полезен не только веб-разработчикам, но и Firefox-, Gecko-разработчикам и разработчикам дополнений. + +Хотите помочь документировать Firefox 28? Просмотрите [список недостатков, которые надо устранить](http://beta.elchi3.de/doctracker/#list=fx&version=28.0) и приступайте! + +## Изменения для разработчиков + +### Инструменты разработчика + +- The {{domxref("console.exception")}} property has been added ({{bug("922214")}}). +- The {{domxref("console.assert")}} property has been added ({{bug("760193")}}). +- App Manager: a new Manifest Editor was added. +- App Manager: the toolbox used for debugging apps is now embedded in the app manager UI. +- Web Console: added a "split console" mode - press Escape to quickly open the console in any other tool. +- Web Console: added a dark theme for the output. +- Debugger: pretty-print minified JavaScript. +- Debugger: simply hover over any variable or click on it to bring up a pop-up that displays the current value. +- Inspector: added a color picker in rules view and various tooltips. +- Browser Toolbox: allows add-on and platform developers to use almost all of the developer tools while targeting the browser itself. + +Больше деталей [в этой публикации](https://hacks.mozilla.org/2013/12/split-console-pretty-print-minified-js-and-more-firefox-developer-tools-episode-28/ "Split console, pretty-print minified JS and more – Firefox Developer Tools Episode 28"). + +### CSS + +- Support for multi-line [flexbox](/ru/docs/Web/Guide/CSS/Flexible_boxes) has been added ({{bug("939901")}}). +- Longhand East Asian [counter styles](/ru/docs/Web/CSS/list-style-type) have been implemented ({{bug("934072")}}). +- Support for the {{cssxref("background-blend-mode")}} property has been added ({{bug("841601")}}). +- The `none` value has been added to {{cssxref("font-variant-ligatures")}} ({{bug("913264")}}). +- Support for the {{cssxref(":hover")}} user action pseudo-class on pseudo-elements has been implemented ({{bug("922669")}}). + +### HTML + +- Реализована поддержка `` и ``, отключены по умолчанию. + +### JavaScript + +- [ECMAScript 6](/ru/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla) (Harmony) implementation continues: + + - New `Array` methods have been implemented: {{jsxref("Array.prototype.entries()")}} and {{jsxref("Array.prototype.keys()")}} ({{bug("894658")}}). + +### Интерфейс/API/DOM + +- `HTMLVideoElement.canPlayType('video/webm')` now reports `maybe`. ({{bug("884275")}}). +- The {{domxref("DocumentFragment.getElementById()")}} method has been implemented. E.g. `document.createDocumentFragment().getElementById()` ({{bug("933193")}}). +- The {{domxref("KeyboardEvent.repeat")}} attribute has been implemented ({{bug("600117")}}). +- The {{domxref("File")}} constructor, e.g. `new File(["foo"], "foo.txt")` has been implemented. ({{bug("819900")}}). +- The {{domxref("NavigatorPlugins.plugins", "navigator.plugins")}} is no more enumerable, for privacy reasons ({{bug(757726)}}). +- The two attributes {{domxref("Window.screenX")}} and {{domxref("Window.screenY")}} now return CSS pixels (and no more device pixels) ({{bug(943668)}}). +- The two methods {{domxref("CanvasRenderingContext2D.drawSystemFocusRing()")}} and {{domxref("CanvasRenderingContext2D.drawCustomFocusRing()")}} have been implemented. The preference `canvas.focusring.enabled` must be set to `true` to activate both ({{bug(540456)}}). +- The following attributes have been added to {{domxref("NavigatorID")}}: {{domxref("NavigatorID.appCodeName", "appCodeName")}} and {{domxref("NavigatorID.product", "product")}} ({{bug(925847)}}). + +### MathML + +- Добавлена поддержка атрибута `mathvariant` ({{bug("114365")}}). + +### SVG + +_Без изменений._ + +### Аудио/Видео + +- Добавлена поддержка аудиокодека Opus для контента в мультимедиа-контейнерах WebM ({{bug("887978")}}). +- Интегрирована поддержка видео-декодера VP9 ({{bug("833023")}}). + +### Сеть + +- Удалена поддержка протокола `SPDY/2`. + +## Изменения для разработчиков дополнений + +- The interface of [DeferredTask.jsm](/ru/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm) has been changed, and the `isPending()`, `start()`, `flush()`, and `cancel()` methods have been removed ({{bug("940408")}}). + +## Безопасность + +- CSP was not enforced in sandboxed iframes. This has been fixed ({{bug(886164)}}). +- The CSP 1.1 experimental `script-nonce` directive has been implemented. The preference `security.csp.experimentalEnabled` should be set to `true` to enable this functionality ({{bug(855326)}}). + +## Смотрите также + +- [Site Compatibility for Firefox 28](/ru/docs/Mozilla/Firefox/Releases/28/Site_Compatibility) + +### Предыдущие версии + +{{Firefox_for_developers('27')}} diff --git a/files/ru/mozilla/firefox/releases/29/index.md b/files/ru/mozilla/firefox/releases/29/index.md index b745090e458232..5437ab7900ccc9 100644 --- a/files/ru/mozilla/firefox/releases/29/index.md +++ b/files/ru/mozilla/firefox/releases/29/index.md @@ -6,126 +6,108 @@ tags: - firefox29 translation_of: Mozilla/Firefox/Releases/29 --- -
{{FirefoxSidebar}}

Firefox 29 был выпущен 29 апреля 2014 года. Список ключевых изменений, предоставленный в данной статье будет полезен не только веб-разработчикам, но и Firefox-, Gecko-разработчикам и разработчикам дополнений.

- -

Хотите помочь документировать Firefox 29? Просмотрите список недостатков, которые надо устранить и приступайте!

- -

Изменения для разработчиков

- -

Инструменты разработчика

- -

Важные изменения:

- -
    -
  • Vastly improved web console - Arrays are shown inline without clicking to bring up in the right inspector, window objects show their url, etc.
  • -
  • Added the console API to Web Workers (bug 620935). Now you can log messages to the Web Console from Web Workers.
  • -
  • The Network Monitor tool now shows performance statistics using pie charts ({{bug(846601)}}).
  • -
  • On the Inspector, preview tooltips of CSS transforms are now available ({{bug(726427)}}).
  • -
  • DOM elements seen in the debugger and console can be removed or inspected directly, via the new buttons to the right of the variable listing.
  • -
  • A CSS source map is now supported by the Style Editor ({{bug(926014)}}).
  • -
  • Autocompletion of CSS properties and values has been added to the Style Editor ({{bug(717369)}}).
  • -
- -

Больше деталей и изменений смотрите в блоге Mozilla Hacks.

- -

CSS

- -
    -
  • CSS variables have been implemented ({{bug("773296")}}). Mozilla Hacks article can be found here. They are enabled by default only for non-release builds (on release builds flip the pref layout.css.variables.enabled to true if you want to play with them).
  • -
  • Добавлена поддержка {{cssxref("visibility")}}: collapse в
    - Flexboxes ({{bug(783470)}}).
  • -
  • Свойство {{cssxref("box-sizing")}} больше не нуждается в префиксе ({{bug(243412)}}).
  • -
  • The {{cssxref("will-change")}} property, a hint to that something will animate has been added. The preference layout.css.will-change.enabled must be switched to true to enable it. ({{bug(940842)}})
  • -
  • Scientific exponential notation, like 3e1 or 10e+0, is now supported for {{cssxref("<number>")}} values ({{bug(964529)}}).
  • -
  • Тип изображения {{cssxref("<gradient>")}} теперь поддерживается в {{cssxref("border-image")}} ({{bug(709587)}}).
  • -
  • The {{cssxref("touch-action")}} property has been implemented. It is not activated by default; the layout.css.touch_action.enabled pref controls it. ({{bug(795567)}})
  • -
- -

HTML

- -
    -
  • <input type=color> и <input type=number> доступны по умолчанию.
  • -
  • Support for the non standard <pre cols> has been removed, as well as the layout effect of <pre wrap> . Both effects can, and should, be achieved using CSS. ({{bug("949879")}})
  • -
- -

JavaScript

- -
    -
  • Реализованы новые методы строк в ECMAScript 6: {{jsxref("String.prototype.codePointAt()")}} и {{jsxref("String.prototype.fromCodePoint()")}} ({{bug("918879")}}).
  • -
  • The ECMAScript Internationalization API (ECMA-402) has been implemented and is now enabled by default in Firefox Desktop ({{bug("853301")}}): -
      -
    • New objects in the new {{jsxref("Intl")}} object namespace: -
        -
      • {{jsxref("Collator", "Intl.Collator")}}
      • -
      • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
      • -
      • {{jsxref("NumberFormat", "Intl.NumberFormat")}}
      • -
      -
    • -
    • The following methods of {{jsxref("String")}}, {{jsxref("Number")}} and {{jsxref("Date")}} have been updated to include the locales and options arguments per ECMA-402: -
        -
      • {{jsxref("String.prototype.localeCompare()")}}
      • -
      • {{jsxref("Number.prototype.toLocaleString()")}}
      • -
      • {{jsxref("Date.prototype.toLocaleString()")}}
      • -
      • {{jsxref("Date.prototype.toLocaleDateString()")}}
      • -
      • {{jsxref("Date.prototype.toLocaleTimeString()")}}
      • -
      -
    • -
    -
  • -
  • To match the updated ECMAScript6 draft specification, the {{jsxref("Map")}} and {{jsxref("Set")}} objects now treat -0 and +0 as the same when checking for key and value equality.
  • -
  • Promise has been enabled by default ({{bug(918806)}}).
  • -
  • Completed generators now returns an {{jsxref("IteratorResult")}} object instead of throwing ({{bug(958951)}}).
  • -
  • A malformed JSON string parsed by {{jsxref("JSON.parse()")}} now yields a more detailed error message containing the line and column number that caused the parsing error. This is useful when debugging large JSON data.
  • -
- -

Интерфейс/APIs/DOM

- -
    -
  • A new type of workers, {{domxref("SharedWorker")}}, is now available by default ({{bug(924089)}}).
  • -
  • The {{domxref("URLUtils")}} interface now supports the {{domxref("URLUtils.searchParams", "searchParams")}} property returning a {{domxref("URLSearchParams")}} object, allowing to modify the search params of an URL ({{bug(887836)}}). The {{domxref("URLSearchParams")}} constructor allows easier parsing of query strings.
  • -
  • The {{domxref("Worker.onLine")}} property is now supported, allowing to know the online/offline status in workers ({{bug(925437)}}).
  • -
  • As part of the implementation of Web Components, the {{domxref("HTMLShadowElement")}} interface has been implemented behind the dom.webcomponents.enabled. Flip it to true if you want to use it. ({{bug(887538)}}).
  • -
  • The read-only property {{domxref("HTMLIFrameElement.sandbox")}} is no longer a {{domxref("string")}} but an {{domxref("HTMLSettableToken")}} ({{bug(845057)}}).
  • -
  • On {{domxref("HTMLCanvasElement.getContext()")}}, the value moz-webgl is no longer supported. Use the standard webgl value ({{bug(913597)}}).
  • -
  • The constructor for {{domxref("ImageData")}} has been added. This interface can be used in a {{domxref("Worker")}}. ({{bug(959958)}})
  • -
  • The property {{domxref("NavigatorLocation.origin", "location.origin")}} is now available in workers ({{bug(964148)}}).
  • -
  • The {{domxref("ValidityState.badInput")}} property has been implemented ({{bug(827161)}}).
  • -
  • The deprecated {{domxref("Window.pkcs11")}} property has been removed; it was returning null since Firefox 3.0.14. ({{bug(964964)}})
  • -
  • The {{domxref("Node.cloneNode()")}} and {{domxref("Document.importNode()")}} methods take the Boolean deep argument. Until now, if omitted, these methods acted as if the value of deep was true. But this behavior has been changed as per the latest spec, and if omitted, the methods will act as if the value was false. ({{bug(937461)}})
  • -
  • {{domxref("Window._content")}} is no longer available to Web content ({{bug(946564)}}).
  • -
  • {{domxref("URLUtils.port")}} behavior has been slightly changed: set to '' will set it to the default port associated with the protocol, and 0 to 0. ({{bug(930450)}})
  • -
  • {{domxref("Document.referrer")}} is now based on the incumbent script ({{bug(887928)}}).
  • -
  • Gamepad API включён по умолчанию ({{bug(878828)}}).
  • -
- -

MathML

- -

Без изменений.

- -

SVG

- -

Без изменений.

- -

Безопасность

- -
    -
  • Реализована экспериментальная директива CSP 1.1 hash-source. Чтобы воспользоваться этой функцией, настройка security.csp.experimentalEnabled должна быть установлена в положение true ({{bug(883975)}}).
  • -
- -

Изменения для разработчиков дополнений

- - - -

Об изменениях, не касающихся Austrlis, будет объявлено позднее.

- -

Смотрите также

- - - -

Предыдущие версии

- -

{{Firefox_for_developers('28')}}

+{{FirefoxSidebar}} + +Firefox 29 был выпущен 29 апреля 2014 года. Список ключевых изменений, предоставленный в данной статье будет полезен не только веб-разработчикам, но и Firefox-, Gecko-разработчикам и разработчикам дополнений. + +Хотите помочь документировать Firefox 29? Просмотрите [список недостатков, которые надо устранить](http://beta.elchi3.de/doctracker/#list=fx&version=28.0) и приступайте! + +## Изменения для разработчиков + +### Инструменты разработчика + +Важные изменения: + +- Vastly improved web console - Arrays are shown inline without clicking to bring up in the right inspector, window objects show their url, etc. +- Added the [console API](https://developer.mozilla.org/docs/Web/API/console) to Web Workers ([bug 620935](https://bugzilla.mozilla.org/show_bug.cgi?id=620935)). Now you can log messages to the Web Console from Web Workers. +- The [Network Monitor](/ru/docs/Tools/Network_Monitor) tool now shows performance statistics using pie charts ({{bug(846601)}}). +- On the [Inspector](/ru/docs/Tools/Page_Inspector), preview tooltips of CSS transforms are now available ({{bug(726427)}}). +- DOM elements seen in the debugger and console can be removed or inspected directly, via the new buttons to the right of the variable listing. +- A CSS source map is now supported by the [Style Editor](/ru/docs/Tools/Style_Editor) ({{bug(926014)}}). +- Autocompletion of CSS properties and values has been added to the [Style Editor](/ru/docs/Tools/Style_Editor) ({{bug(717369)}}). + +_Больше деталей и изменений смотрите в [блоге Mozilla Hacks](https://hacks.mozilla.org/2014/02/css-source-map-support-network-performance-analysis-more-firefox-developer-tools-episode-29/ "CSS source map support, network performance analysis & more – Firefox Developer Tools Episode 29 ✩ Mozilla Hacks – the Web developer blog")._ + +### CSS + +- [CSS variables](/ru/docs/Web/CSS/Using_CSS_variables) have been implemented ({{bug("773296")}}). Mozilla Hacks article can be found [here](https://hacks.mozilla.org/2013/12/css-variables-in-firefox-nightly/). They are enabled by default only for non-release builds (on release builds flip the pref `layout.css.variables.enabled` to `true` if you want to play with them). +- Добавлена поддержка {{cssxref("visibility")}}`: collapse` в + Flexboxes ({{bug(783470)}}). +- Свойство {{cssxref("box-sizing")}} больше не нуждается в префиксе ({{bug(243412)}}). +- The {{cssxref("will-change")}} property, a hint to that something will animate has been added. The preference `layout.css.will-change.enabled` must be switched to `true` to enable it. ({{bug(940842)}}) +- Scientific exponential notation, like `3e1` or `10e+0`, is now supported for {{cssxref("<number>")}} values ({{bug(964529)}}). +- Тип изображения {{cssxref("<gradient>")}} теперь поддерживается в {{cssxref("border-image")}} ({{bug(709587)}}). +- The {{cssxref("touch-action")}} property has been implemented. It is not activated by default; the `layout.css.touch_action.enabled` pref controls it. ({{bug(795567)}}) + +### HTML + +- `` и `` доступны по умолчанию. +- Support for the non standard `
` has been removed, as well as the layout effect of `
` . Both effects can, and should, be achieved using CSS. ({{bug("949879")}})
+
+### JavaScript
+
+- Реализованы новые методы строк в ECMAScript 6: {{jsxref("String.prototype.codePointAt()")}} и {{jsxref("String.prototype.fromCodePoint()")}} ({{bug("918879")}}).
+- The [ECMAScript Internationalization API (ECMA-402)](http://www.ecma-international.org/ecma-402/1.0/) has been implemented and is now enabled by default in Firefox Desktop ({{bug("853301")}}):
+
+  - New objects in the new {{jsxref("Intl")}} object namespace:
+
+    - {{jsxref("Collator", "Intl.Collator")}}
+    - {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
+    - {{jsxref("NumberFormat", "Intl.NumberFormat")}}
+
+  - The following methods of {{jsxref("String")}}, {{jsxref("Number")}} and {{jsxref("Date")}} have been updated to include the `locales` and `options` arguments per ECMA-402:
+
+    - {{jsxref("String.prototype.localeCompare()")}}
+    - {{jsxref("Number.prototype.toLocaleString()")}}
+    - {{jsxref("Date.prototype.toLocaleString()")}}
+    - {{jsxref("Date.prototype.toLocaleDateString()")}}
+    - {{jsxref("Date.prototype.toLocaleTimeString()")}}
+
+- To match the updated ECMAScript6 draft specification, the {{jsxref("Map")}} and {{jsxref("Set")}} objects now treat `-0` and `+0` as the same when checking for key and value equality.
+- `Promise` has been enabled by default ({{bug(918806)}}).
+- Completed generators now returns an {{jsxref("IteratorResult")}} object instead of throwing ({{bug(958951)}}).
+- A malformed JSON string parsed by {{jsxref("JSON.parse()")}} now yields a more detailed error message containing the line and column number that caused the parsing error. This is useful when debugging large JSON data.
+
+### Интерфейс/APIs/DOM
+
+- A new type of workers, {{domxref("SharedWorker")}}, is now available by default ({{bug(924089)}}).
+- The {{domxref("URLUtils")}} interface now supports the {{domxref("URLUtils.searchParams", "searchParams")}} property returning a {{domxref("URLSearchParams")}} object, allowing to modify the search params of an URL ({{bug(887836)}}). The {{domxref("URLSearchParams")}} constructor allows easier parsing of query strings.
+- The {{domxref("Worker.onLine")}} property is now supported, allowing to know the online/offline status in workers ({{bug(925437)}}).
+- As part of the implementation of Web Components, the {{domxref("HTMLShadowElement")}} interface has been implemented behind the `dom.webcomponents.enabled`. Flip it to `true` if you want to use it. ({{bug(887538)}}).
+- The read-only property {{domxref("HTMLIFrameElement.sandbox")}} is no longer a {{domxref("string")}} but an {{domxref("HTMLSettableToken")}} ({{bug(845057)}}).
+- On {{domxref("HTMLCanvasElement.getContext()")}}, the value `moz-webgl` is no longer supported. Use the standard `webgl` value ({{bug(913597)}}).
+- The constructor for {{domxref("ImageData")}} has been added. This interface can be used in a {{domxref("Worker")}}. ({{bug(959958)}})
+- The property {{domxref("NavigatorLocation.origin", "location.origin")}} is now available in workers ({{bug(964148)}}).
+- The {{domxref("ValidityState.badInput")}} property has been implemented ({{bug(827161)}}).
+- The deprecated {{domxref("Window.pkcs11")}} property has been removed; it was returning `null` since Firefox 3.0.14. ({{bug(964964)}})
+- The {{domxref("Node.cloneNode()")}} and {{domxref("Document.importNode()")}} methods take the Boolean `deep` argument. Until now, if omitted, these methods acted as if the value of `deep` was `true`. But this behavior has been changed as per the latest spec, and if omitted, the methods will act as if the value was `false`. ({{bug(937461)}})
+- {{domxref("Window._content")}} is no longer available to Web content ({{bug(946564)}}).
+- {{domxref("URLUtils.port")}} behavior has been slightly changed: set to `''` will set it to the default port associated with the protocol, and `0` to `0.` ({{bug(930450)}})
+- {{domxref("Document.referrer")}} is now based on the incumbent script ({{bug(887928)}}).
+- [Gamepad API](/ru/docs/Web/Guide/API/Gamepad) включён по умолчанию ({{bug(878828)}}).
+
+### MathML
+
+_Без изменений._
+
+### SVG
+
+_Без изменений._
+
+## Безопасность
+
+- Реализована экспериментальная директива CSP 1.1 `hash-source`. Чтобы воспользоваться этой функцией, настройка `security.csp.experimentalEnabled` должна быть установлена в положение `true` ({{bug(883975)}}).
+
+## Изменения для разработчиков дополнений
+
+- [Совместимость дополнений с Australis](/en-US/Firefox/Australis_add-on_compat) - Это существенное изменение темы Firefox, что влияет на большинство расширений, связанных с пользовательским интерфейсом Firefox.
+
+Об изменениях, не касающихся Austrlis, будет объявлено позднее.
+
+## Смотрите также
+
+- [Совместимость сайтов с Firefox 29](/ru/docs/Mozilla/Firefox/Releases/29/Site_Compatibility)
+
+### Предыдущие версии
+
+{{Firefox_for_developers('28')}}
diff --git a/files/ru/mozilla/firefox/releases/3.5/index.md b/files/ru/mozilla/firefox/releases/3.5/index.md
index 189e1e1ea78fbe..705e453ee08b4e 100644
--- a/files/ru/mozilla/firefox/releases/3.5/index.md
+++ b/files/ru/mozilla/firefox/releases/3.5/index.md
@@ -4,310 +4,218 @@ slug: Mozilla/Firefox/Releases/3.5
 translation_of: Mozilla/Firefox/Releases/3.5
 original_slug: Firefox_3.5_для_разработчика
 ---
-
{{FirefoxSidebar}}

Firefox 3.5 вводит ряд новых возможностей, а также дополнительную и улучшенную поддержку для самых различных веб-стандартов. Данная статья представляет собой исчерпывающий перечень нововведений со ссылками на статьи, освещающие основные усовершенствования.

-

Новые возможности для разработчиков

-

Для разработчиков веб-сайтов и веб-приложений

-

Поддержка HTML 5

-
-
- Использование аудио и видео
-
- В Firefox 3.5 добавлена поддержка элементов HTML 5 audio и video.
-
- Offline resources in Firefox
-
- Firefox 3.5 now fully supports the HTML 5 offline resource specification.
-
- Drag and drop
-
- The HTML 5 drag and drop API allows support for dragging and dropping items within and between web sites. This also provides a simpler API for use by extensions and Mozilla-based applications.
-
-

Newly-supported CSS features

-
-
- Downloadable fonts support
-
- The new {{ cssxref("@font-face") }} @rule lets web pages provide downloadable fonts, so that sites can be rendered exactly as the page author expects.
-
- CSS media queries
-
- Firefox 3.5 now supports CSS media queries, which enhance support for media-dependent style sheets.
-
- {{ cssxref(":before") }} and {{ cssxref(":after") }} updated to CSS 2.1
-
- The :before and :after pseudo-elements have been updated to full CSS 2.1 support, adding support for the position, float, list-style-*, and some display properties.
-
- ch units for length
-
- The ch unit can now be used anywhere that accepts a unit of length. 1ch is the width of the "0" (zero) character.
-
- {{ cssxref("opacity") }}
-
- The -moz-opacity Mozilla extension to CSS has been removed in favor of the standard opacity property.
-
- {{ cssxref("text-shadow") }}
-
- The text-shadow property, which allows web content to specify shadow effects to apply to text and text decorations, is now supported.
-
- {{ cssxref("word-wrap") }}
-
- This newly-supported property lets content specify whether or not lines may be broken within words in order to prevent overflow when an otherwise unbreakable string is too long to fit on one line.
-
- white-space property supports the pre-line value
-
- The {{ cssxref("white-space") }} property now accepts the pre-line value.
-
- {{ cssxref("-moz-box-shadow") }}
-
- {{ cssxref("-moz-border-image") }}
-
- {{ cssxref("-moz-column-rule") }}
-
- {{ cssxref("-moz-column-rule-width") }}
-
- {{ cssxref("-moz-column-rule-style") }}
-
- {{ cssxref("-moz-column-rule-color") }}
-
- Firefox 3.5 adds support for these Mozilla extensions to CSS.
-
- The {{ cssxref("color_value#Mozilla_Extensions","-moz-nativehyperlinktext") }} color value
-
- This new color value represents the user's system's default hyperlink color.
-
- The {{ cssxref("-moz-window-shadow") }} property and the {{ cssxref(":-moz-system-metric(mac-graphite-theme)") }} pseudo-class
-
- These new CSS features were added to facilitate theming.
-
- New values for {{ cssxref("-moz-appearance") }}
-
- The -moz-win-glass and -moz-mac-unified-toolbar values have been added to -moz-appearance.
-
- Using CSS transforms
-
- Firefox 3.5 supports CSS transforms. See {{ cssxref("-moz-transform") }} and {{ cssxref("-moz-transform-origin") }} for details.
-
- {{ cssxref(":nth-child") }}
-
- {{ cssxref(":nth-last-child") }}
-
- {{ cssxref(":nth-of-type") }}
-
- {{ cssxref(":nth-last-of-type") }}
-
- {{ cssxref(":first-of-type") }}
-
- {{ cssxref(":last-of-type") }}
-
- {{ cssxref(":only-of-type") }}
-
- These selectors are all newly-supported in Firefox 3.5.
-
-

Новые возможности DOM

-
-
- localStorage
-
- Firefox 3.5 adds support for the Web Storage localStorage property, which provides a way for web applications to store data locally on the client's computer.
-
- Using web workers
-
- Firefox 3.5 supports web workers to allow easy multi-threading support in web applications.
-
- Using geolocation
-
- Firefox 3.5 supports the Geolocation API, which allows web applications to obtain information about the user's current location if a provider for that information is installed and enabled.
-
- Locating DOM elements using selectors
-
- The selectors API allows querying a document to locate the elements that match a given selection rule.
-
- Mouse gesture events
-
- Firefox 3.5 supports mouse gesture events such as trackpad swipes.
-
- The NodeIterator object
-
- The NodeIterator object provides support for iterating over the list of the nodes in a DOM subtree.
-
- The MozAfterPaint event
-
- This new DOM event is sent after painting updates in windows.
-
- The MozMousePixelScroll event
-
- This new DOM event allows detection of pixel-based mouse scroll wheel events instead of line-based scroll events.
-
-

Новые возможности JavaScript

-
-
- Новое в JavaScript 1.8.1
-
- Обзор всех изменений в JavaScript 1.8.1.
-
- Object.getPrototypeOf()
-
- Новый метод, возвращающий прототип указанного объекта.
-
- Использование встроенного JSON
-
- Firefox 3.5 имеет встроенную поддержку JSON.
-
- Новые методы обрезки строк в объекте String
-
- Объект String теперь имеет методы trim(), trimLeft() и trimRight().
-
-

Networking

-
-
- Cross-site access controls for HTTP
-
- In Firefox 3.5, it's now possible for HTTP requests, including those made by XMLHttpRequest, to work across domains if the server supports it.
-
- Progress events for XMLHttpRequest
-
- Progress events are now offered to enable extensions to monitor the progress of requests.
-
- Improved Synchronous XMLHttpRequest support
-
- DOM Timeout and Input Events are now suppressed during a synchronous XMLHttpRequest.
-
- Controlling DNS prefetching
-
- Firefox 3.5 provides DNS prefetching, whereby it performs domain name resolution ahead of time for links included in the current page, in order to save time when links are actually clicked. This article describes how you can tune your web site to disable prefetching, or to adjust how prefetching operates.
-
-

New Canvas features

-
-
- HTML 5 text API for canvas elements
-
- Canvas elements now support the HTML 5 text API.
-
- Shadow effects in a canvas
-
- Canvas shadow effects are now supported.
-
- createImageData()
-
- The canvas method createImageData() is now supported, allowing code to specifically create an ImageData object instead of requiring it to be done automatically. This can improve performance of other ImageData methods by preventing them from having to create the object.
-
- moz-opaque attribute
-
- Added the moz-opaque DOM attribute, which lets the canvas know whether or not translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized.
-
-

New SVG features

-
-
- Applying SVG effects to HTML content
-
- You can now apply SVG effects to HTML and XHTML content; this article describes how.
-
-

Miscellaneous new features

-
-
- ICC color correction in Firefox
-
- Firefox 3.5 now supports ICC color correction for tagged images.
-
- The defer attribute is now supported on script elements
-
- This attribute indicates to the browser that it may choose to continue to parse and render the page without waiting for the script to finish executing.
-
-

Другие улучшения

-
    -
  • The Text node's wholeText property and replaceWholeText() method have been implemented.
  • -
  • The property element.children has been added. It returns a collection of child elements of the given element.
  • -
  • The Element Traversal API is now supported by the DOM Element object.
  • -
  • HTML document nodes may now be cloned using cloneNode().
  • -
  • The non-standard getBoxObjectFor() DOM method has been removed. You should be using getBoundingClientRect() instead.
  • -
  • Dispatched DOM events can now be re-dispatched. This makes Firefox 3.5 pass Acid 3 test 30.
  • -
  • Improvements have been made to DOM 2 Range handling.
  • -
  • In non-chrome scope, caught objects in exceptions are now the actual thrown object instead of an XPConnect wrapper containing the thrown object.
  • -
  • SVG ID references are now live.
  • -
  • SVG filters now work for foreignObject.
  • -
  • The GetSVGDocument() method has been added to object and iframe elements for compatibility.
  • -
  • Implicit setting of properties in object and array initializers no longer execute setters in JavaScript. See the blog post Object and array initializers should not invoke setters when evaluated for details.
  • -
  • The gDownloadLastDir.path variable has been renamed to gDownloadLastDir.file since it refers to an nsIFile, not a path.
  • -
  • The gDownloadLastDirPath variable has been renamed to gDownloadLastDirFile since it refers to an nsIFile, not a path.
  • -
  • Starting in Firefox 3.5, you can no longer use data: bindings in chrome packages that get XPCNativeWrapper automation.
  • -
-

Для разработчиков дополнений

-

If you're an extension developer, you should start by reading Updating extensions for Firefox 3.5, which offers a helpful overview of what changes may affect your extension.

-

New components and functionality

-
-
- Supporting private browsing mode
-
- Firefox 3.5 offers Private Browsing mode, which doesn't record the user's activities. Extensions may support private browsing following the guidelines offered by this article.
-
- Security changes in Firefox 3.5
-
- This article covers security-related changes in Firefox 3.5.
-
- Theme changes in Firefox 3.5
-
- This article covers theme-related changes in Firefox 3.5.
-
- Monitoring WiFi access points
-
- Code with UniversalXPConnect privileges can now monitor the list of available access points, getting information on their SSIDs, MAC addresses, and signal strength. This can be used in tandem with Geolocation to offer WiFi-based location service.
-
-

Notable changes and improvements

-
    -
  • The XUL textbox widget now offers a search type, for use as search fields.
  • -
  • In order to support dragging and dropping tabs between windows, the browser widget now has a swapDocShells() method.
  • -
  • Added the level attribute to the panel element; this specifies whether panels appear on top of other applications, or just on top of the window the panel is contained within.
  • -
  • Элементы XUL теперь поддерживают свойства clientHeight, clientWidth, scrollHeight и scrollWidth.
  • -
  • Элементы keyset теперь имеют атрибут disabled.
  • -
  • В дополнение к этому, элементы keyset теперь могут быть удалены с помощью метода узла removeChild().
  • -
  • mozIStorageStatement had the initialize() method removed; consumers should use the createStatement() method instead to get a new statement object.
  • -
  • The Storage API now offers support for asynchronous requests.
  • -
  • The nsICookie2 interface now exposes the time at which cookies were created in its new creationTime attribute.
  • -
  • Added a flag to nsIProtocolHandler (URI_IS_LOCAL_RESOURCE) that is checked during chrome registration to make sure a protocol is allowed to be registered.
  • -
  • Firefox now looks for plugins in /usr/lib/mozilla/plugins on Linux, as well as the previously supported locations.
  • -
  • The plugin API has been updated to include support for private browsing mode; you may now use NPN_GetValue() to query the state of private browsing mode using the variable NPNVprivateModeBool.
  • -
-

Новые возможности для конечного пользователя

-

User experience

-
-
- Location aware browsing
-
- If you choose, you may allow Firefox 3.5 to share information about your current location with web sites. Firefox 3.5 can use information about the network you're connected to to share your location. Of course, it asks for your permission before doing so, to ensure your privacy.
-
- Open audio and video support
-
- Firefox 3.5 supports embedded video and audio using the open Ogg format, as well as WAV for audio. No plugins, no confusing error messages about needing to install something or other that turns out not to be available on your platform anyway.
-
- Local data storage
-
- Web applications can now use Web Storage's local storage capabilities to store data on your computer. This is great for anything from site preferences to more complex data.
-
-

Безопасность и приватность

-
-
- Private Browsing
-
- Need to use someone else's computer? Switch on Private Browsing mode and nothing will be recorded about your session, including cookies, history, and any other potentially private information.
-
- Better privacy controls
-
- The Privacy preference pane has been completely redesigned to offer users more control over their private information. Users can choose to retain or discard anything including history information, cookies, downloads, and form field information. In addition, users can specify whether or not to include history and/or bookmarks in the location bar's automated suggestions, so you can keep private web addresses from popping up unexpectedly while typing in the location bar.
-
-

Производительность

-
-
- Faster JavaScript performance
-
- JavaScript, the "J" in "AJAX," is sped up dramatically in Firefox 3.5 with the new TraceMonkey JavaScript engine. Web applications are much faster than in Firefox 3.
-
- Faster page rendering
-
- Web content draws faster in Firefox 3.5, thanks to technologies such as "speculative parsing." Your users don't need to know what it means, other than "it makes things draw faster."
-
-

Смотрите также

- +{{FirefoxSidebar}} + +[Firefox 3.5](http://www.firefox.com/ "Веб-браузер Firefox") вводит ряд новых возможностей, а также дополнительную и улучшенную поддержку для самых различных веб-стандартов. Данная статья представляет собой исчерпывающий перечень нововведений со ссылками на статьи, освещающие основные усовершенствования. + +## Новые возможности для разработчиков + +### Для разработчиков веб-сайтов и веб-приложений + +#### Поддержка HTML 5 + +- [Использование аудио и видео](/En/Using_audio_and_video_in_Firefox "en/Using audio and video in Firefox") + - : В Firefox 3.5 добавлена поддержка элементов HTML 5 [`audio`](/En/HTML/Element/Audio "en/HTML/Element/Audio") и [`video`](/En/HTML/Element/Video "en/HTML/Element/Video"). +- [Offline resources in Firefox](/en/Offline_resources_in_Firefox "en/Offline resources in Firefox") + - : Firefox 3.5 now fully supports the HTML 5 offline resource specification. +- [Drag and drop](/En/DragDrop/Drag_and_Drop "en/DragDrop/Drag and Drop") + - : The HTML 5 drag and drop API allows support for dragging and dropping items within and between web sites. This also provides a simpler API for use by extensions and Mozilla-based applications. + +#### Newly-supported CSS features + +- [Downloadable fonts support](/en/CSS/@font-face "en/CSS/@font-face") + - : The new {{ cssxref("@font-face") }} @rule lets web pages provide downloadable fonts, so that sites can be rendered exactly as the page author expects. +- [CSS media queries](/En/CSS/Media_queries "en/CSS/Media queries") + - : Firefox 3.5 now supports CSS media queries, which enhance support for media-dependent style sheets. +- {{ cssxref(":before") }} and {{ cssxref(":after") }} updated to CSS 2.1 + - : The `:before` and `:after` pseudo-elements have been updated to full CSS 2.1 support, adding support for the `position`, `float`, `list-style-*`, and some `display` properties. +- `ch` units for length + - : The` ch `unit can now be used anywhere that accepts a [unit of length](/en/CSS/length#Units "en/CSS/length#Units").` 1ch `is the width of the "0" (zero) character. +- {{ cssxref("opacity") }} + - : The` -moz-opacity `Mozilla extension to CSS has been removed in favor of the standard` opacity `property. +- {{ cssxref("text-shadow") }} + - : The` text-shadow `property, which allows web content to specify shadow effects to apply to text and text decorations, is now supported. +- {{ cssxref("word-wrap") }} + - : This newly-supported property lets content specify whether or not lines may be broken within words in order to prevent overflow when an otherwise unbreakable string is too long to fit on one line. +- `white-space` property supports the `pre-line` value + - : The {{ cssxref("white-space") }} property now accepts the `pre-line` value. +- {{ cssxref("-moz-box-shadow") }} + + {{ cssxref("-moz-border-image") }} + + {{ cssxref("-moz-column-rule") }} + + {{ cssxref("-moz-column-rule-width") }} + + {{ cssxref("-moz-column-rule-style") }} + + {{ cssxref("-moz-column-rule-color") }} + + - : Firefox 3.5 adds support for these Mozilla extensions to CSS. + +- The {{ cssxref("color_value#Mozilla_Extensions","-moz-nativehyperlinktext") }} color value + - : This new color value represents the user's system's default hyperlink color. +- The {{ cssxref("-moz-window-shadow") }} property and the {{ cssxref(":-moz-system-metric(mac-graphite-theme)") }} pseudo-class + - : These new CSS features were added to facilitate theming. +- New values for {{ cssxref("-moz-appearance") }} + - : The `-moz-win-glass` and `-moz-mac-unified-toolbar` values have been added to `-moz-appearance`. +- [Using CSS transforms](/En/CSS/Using_CSS_transforms "en/CSS/Using CSS transforms") + - : Firefox 3.5 supports CSS transforms. See {{ cssxref("-moz-transform") }} and {{ cssxref("-moz-transform-origin") }} for details. +- {{ cssxref(":nth-child") }} + + {{ cssxref(":nth-last-child") }} + + {{ cssxref(":nth-of-type") }} + + {{ cssxref(":nth-last-of-type") }} + + {{ cssxref(":first-of-type") }} + + {{ cssxref(":last-of-type") }} + + {{ cssxref(":only-of-type") }} + + - : These selectors are all newly-supported in Firefox 3.5. + +#### Новые возможности DOM + +- [localStorage](/en/DOM/Storage#localStorage "en/DOM/Storage#localStorage") + - : Firefox 3.5 adds support for the Web Storage `localStorage` property, which provides a way for web applications to store data locally on the client's computer. +- [Using web workers](/En/Using_web_workers "en/Using web workers") + - : Firefox 3.5 supports web workers to allow easy multi-threading support in web applications. +- [Using geolocation](/En/Using_geolocation "en/Using geolocation") + - : Firefox 3.5 supports the Geolocation API, which allows web applications to obtain information about the user's current location if a provider for that information is installed and enabled. +- [Locating DOM elements using selectors](/En/DOM/Locating_DOM_elements_using_selectors "en/DOM/Locating DOM elements using selectors") + - : The selectors API allows querying a document to locate the elements that match a given selection rule. +- [Mouse gesture events](/En/DOM/Mouse_gesture_events "en/DOM/Mouse gesture events") + - : Firefox 3.5 supports mouse gesture events such as trackpad swipes. +- [The `NodeIterator` object](/En/DOM/NodeIterator "en/DOM/NodeIterator") + - : The `NodeIterator` object provides support for iterating over the list of the nodes in a DOM subtree. +- [The MozAfterPaint event](/en/Gecko-Specific_DOM_Events#MozAfterPaint "en/Gecko-Specific DOM Events#MozAfterPaint") + - : This new DOM event is sent after painting updates in windows. +- [The MozMousePixelScroll event](/en/Gecko-Specific_DOM_Events#MozMousePixelScroll "en/Gecko-Specific DOM Events#MozMousePixelScroll") + - : This new DOM event allows detection of pixel-based mouse scroll wheel events instead of line-based scroll events. + +#### Новые возможности JavaScript + +- [Новое в JavaScript 1.8.1](/En/New_in_JavaScript_1.8.1 "en/New in JavaScript 1.8.1") + - : Обзор всех изменений в JavaScript 1.8.1. +- [`Object.getPrototypeOf()`](/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/GetPrototypeOf "Метод Object.getPrototypeOf()") + - : Новый метод, возвращающий прототип указанного объекта. +- [Использование встроенного JSON](/en/Using_native_JSON "Использование JSON") + - : Firefox 3.5 имеет встроенную поддержку [JSON](/en/JSON "JSON"). +- Новые методы обрезки строк в объекте `String` + - : Объект [`String`](/en/Core_JavaScript_1.5_Reference/Global_Objects/String "Объект String") теперь имеет методы [`trim()`](/en/Core_JavaScript_1.5_Reference/Global_Objects/String/Trim "Метод String.trim()"), [`trimLeft()`](/en/Core_JavaScript_1.5_Reference/Global_Objects/String/TrimLeft "Метод String.trimLeft()") и [`trimRight()`](/en/Core_JavaScript_1.5_Reference/Global_Objects/String/TrimRight "Метод String.trimRight()"). + +#### Networking + +- [Cross-site access controls for HTTP](/En/HTTP_access_control "en/HTTP access control") + - : In Firefox 3.5, it's now possible for HTTP requests, including those made by [`XMLHttpRequest`](/en/XMLHttpRequest "en/XMLHttpRequest"), to work across domains if the server supports it. +- [Progress events for ](/En/Using_XMLHttpRequest#Monitoring_progress "en/Using XMLHttpRequest#Monitoring progress")[`XMLHttpRequest`](/En/Using_XMLHttpRequest#Monitoring_progress "en/Using XMLHttpRequest#Monitoring progress") + - : Progress events are now offered to enable extensions to monitor the progress of requests. +- Improved Synchronous `XMLHttpRequest` support + - : [DOM Timeout](https://bugzilla.mozilla.org/show_bug.cgi?id=340345) and [Input Events](https://bugzilla.mozilla.org/show_bug.cgi?id=333198) are now suppressed during a synchronous `XMLHttpRequest`. +- [Controlling DNS prefetching](/En/Controlling_DNS_prefetching "en/Controlling DNS prefetching") + - : Firefox 3.5 provides DNS prefetching, whereby it performs domain name resolution ahead of time for links included in the current page, in order to save time when links are actually clicked. This article describes how you can tune your web site to disable prefetching, or to adjust how prefetching operates. + +#### New Canvas features + +- [HTML 5 text API for `canvas` elements](/en/Drawing_text_using_a_canvas "en/Drawing text using a canvas") + - : Canvas elements now support the HTML 5 text API. +- [Shadow effects in a `canvas`](/en/Canvas_tutorial/Applying_styles_and_colors#Shadows "en/Canvas tutorial/Applying styles and colors#Shadows") + - : Canvas shadow effects are now supported. +- [`createImageData()`](/En/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object "en/HTML/Canvas/Pixel manipulation with canvas#Creating an ImageData object") + - : The canvas method `createImageData()` is now supported, allowing code to specifically create an `ImageData` object instead of requiring it to be done automatically. This can improve performance of other `ImageData` methods by preventing them from having to create the object. +- `moz-opaque` attribute + - : Added the `moz-opaque` DOM attribute, which lets the canvas know whether or not translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. + +#### New SVG features + +- [Applying SVG effects to HTML content](/En/Applying_SVG_effects_to_HTML_content "en/Applying SVG effects to HTML content") + - : You can now apply SVG effects to HTML and XHTML content; this article describes how. + +#### Miscellaneous new features + +- [ICC color correction in Firefox](/En/ICC_color_correction_in_Firefox "en/ICC color correction in Firefox") + - : Firefox 3.5 now supports ICC color correction for tagged images. +- The `defer` attribute is now supported on [`script`](/En/HTML/Element/Script "en/HTML/Element/script") elements + - : This attribute indicates to the browser that it _may_ choose to continue to parse and render the page without waiting for the script to finish executing. + +### Другие улучшения + +- The Text node's [`wholeText`](/en/DOM/Text.wholeText) property and [`replaceWholeText()`](/en/DOM/Text.replaceWholeText) method have been implemented. +- The property [`element.children`](/en/DOM/Element.children) has been added. It returns a _collection_ of child elements of the given element. +- The Element Traversal API is now supported by the DOM [Element](/en/DOM/element) object. +- HTML document nodes may now be cloned using [`cloneNode()`](/En/DOM/Node.cloneNode "En/DOM/Node.cloneNode"). +- The non-standard `getBoxObjectFor()` DOM method has been removed. You should be using [`getBoundingClientRect()`](/en/DOM/element.getBoundingClientRect "en/DOM/Element.getBoundingClientRect") instead. +- Dispatched DOM events can now be re-dispatched. This makes Firefox 3.5 pass Acid 3 test 30. +- Improvements have been made to DOM 2 Range handling. +- In non-chrome scope, caught objects in exceptions are now the actual thrown object instead of an [XPConnect](/en/XPConnect "en/XPConnect") wrapper containing the thrown object. +- SVG ID references are now live. +- SVG filters now work for `foreignObject`. +- The `GetSVGDocument()` method has been added to [`object`](/en/HTML/Element/object "en/HTML/Element/Object") and [`iframe`](/en/HTML/Element/iframe "en/HTML/Element/Iframe") elements for compatibility. +- Implicit setting of properties in object and array initializers no longer execute setters in JavaScript. See the blog post [Object and array initializers should not invoke setters when evaluated](/web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated "web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated") for details. +- The `gDownloadLastDir.path` variable has been renamed to `gDownloadLastDir.file` since it refers to an `nsIFile`, not a path. +- The `gDownloadLastDirPath` variable has been renamed to `gDownloadLastDirFile` since it refers to an `nsIFile`, not a path. +- Starting in Firefox 3.5, you can no longer use `data:` bindings in chrome packages that get `XPCNativeWrapper` automation. + +### Для разработчиков дополнений + +If you're an extension developer, you should start by reading [Updating extensions for Firefox 3.5](/En/Updating_extensions_for_Firefox_3.5 "en/Updating extensions for Firefox 3.5"), which offers a helpful overview of what changes may affect your extension. + +#### New components and functionality + +- [Supporting private browsing mode](/En/Supporting_private_browsing_mode "en/Supporting private browsing mode") + - : Firefox 3.5 offers Private Browsing mode, which doesn't record the user's activities. Extensions may support private browsing following the guidelines offered by this article. +- [Security changes in Firefox 3.5](/En/Security_changes_in_Firefox_3.5 "en/Security changes in Firefox 3.5") + - : This article covers security-related changes in Firefox 3.5. +- [Theme changes in Firefox 3.5](/En/Theme_changes_in_Firefox_3.5 "en/Theme changes in Firefox 3.5") + - : This article covers theme-related changes in Firefox 3.5. +- [Monitoring WiFi access points](/En/Monitoring_WiFi_access_points "en/Monitoring WiFi access points") + - : Code with UniversalXPConnect privileges can now monitor the list of available access points, getting information on their SSIDs, MAC addresses, and signal strength. This can be used in tandem with Geolocation to offer WiFi-based location service. + +#### Notable changes and improvements + +- The XUL [`textbox`](/en/XUL/textbox) widget now offers a [`search`](/en/XUL/Attribute/textbox.type) type, for use as search fields. +- In order to support dragging and dropping tabs between windows, the [`browser`](/en/XUL/browser "en/XUL/Browser") widget now has a [`swapDocShells()`](/En/XUL/Method/SwapDocShells "en/XUL/Method/SwapDocShells") method. +- Added the [`level`](/En/XUL/Attribute/Panel.level "en/XUL/Attribute/panel.level") attribute to the [`panel`](/en/XUL/panel "en/XUL/Panel") element; this specifies whether panels appear on top of other applications, or just on top of the window the panel is contained within. +- Элементы XUL теперь поддерживают свойства` clientHeight`,` clientWidth`,` scrollHeight` и` scrollWidth`. +- Элементы [`keyset`](/en/XUL/keyset "en/XUL/Keyset") теперь имеют атрибут `disabled`. +- В дополнение к этому, элементы `keyset` теперь могут быть удалены с помощью метода узла [`removeChild()`](/En/DOM/Node.removeChild "en/DOM/Node.removeChild"). +- [`mozIStorageStatement`](/en/mozIStorageStatement) had the `initialize()` method removed; consumers should use the [`createStatement()`]() method instead to get a new statement object. +- The [Storage](/en/Storage "en/Storage") API now offers support for asynchronous requests. +- The [`nsICookie2`](/en/nsICookie2 "En/NsICookie2") interface now exposes the time at which cookies were created in its new `creationTime` attribute. +- Added a flag to [`nsIProtocolHandler`](/en/nsIProtocolHandler) (`URI_IS_LOCAL_RESOURCE`) that is checked during chrome registration to make sure a protocol is allowed to be registered. +- Firefox now looks for plugins in `/usr/lib/mozilla/plugins` on Linux, as well as the previously supported locations. +- The plugin API has been updated to include support for private browsing mode; you may now use [`NPN_GetValue()`](/en/NPN_GetValue "en/NPN GetValue") to query the state of private browsing mode using the variable `NPNVprivateModeBool`. + +## Новые возможности для конечного пользователя + +### User experience + +- Location aware browsing + - : If you choose, you may allow Firefox 3.5 to share information about your current location with web sites. Firefox 3.5 can use information about the network you're connected to to share your location. Of course, it asks for your permission before doing so, to ensure your privacy. +- Open audio and video support + - : Firefox 3.5 supports embedded video and audio using the open Ogg format, as well as WAV for audio. No plugins, no confusing error messages about needing to install something or other that turns out not to be available on your platform anyway. +- Local data storage + - : Web applications can now use Web Storage's local storage capabilities to store data on your computer. This is great for anything from site preferences to more complex data. + +### Безопасность и приватность + +- Private Browsing + - : Need to use someone else's computer? Switch on Private Browsing mode and nothing will be recorded about your session, including cookies, history, and any other potentially private information. +- Better privacy controls + - : The Privacy preference pane has been completely redesigned to offer users more control over their private information. Users can choose to retain or discard anything including history information, cookies, downloads, and form field information. In addition, users can specify whether or not to include history and/or bookmarks in the location bar's automated suggestions, so you can keep private web addresses from popping up unexpectedly while typing in the location bar. + +### Производительность + +- Faster JavaScript performance + - : JavaScript, the "J" in "AJAX," is sped up dramatically in Firefox 3.5 with the new TraceMonkey JavaScript engine. Web applications are much faster than in Firefox 3. +- Faster page rendering + - : Web content draws faster in Firefox 3.5, thanks to technologies such as "speculative parsing." Your users don't need to know what it means, other than "it makes things draw faster." + +## Смотрите также + +- [Firefox 3 для разработчика](/en/Firefox_3_for_developers "en/Firefox 3 for developers") +- [Firefox 2 для разработчика](/en/Firefox_2_for_developers "en/Firefox 2 for developers") +- [Firefox 1.5 для разработчика](/en/Firefox_1.5_for_developers "en/Firefox 1.5 for developers") diff --git a/files/ru/mozilla/firefox/releases/3/index.md b/files/ru/mozilla/firefox/releases/3/index.md index b9f89f4a14ce25..0484a7e3af8692 100644 --- a/files/ru/mozilla/firefox/releases/3/index.md +++ b/files/ru/mozilla/firefox/releases/3/index.md @@ -4,297 +4,260 @@ slug: Mozilla/Firefox/Releases/3 translation_of: Mozilla/Firefox/Releases/3 original_slug: Firefox_3_for_developers --- -
{{FirefoxSidebar}}

Если вы разработчик и хотите познакомится со всеми возможностями Firefox 3 вы пришли по адресу. В этой статье представлен список новых статей, в которых рассказывается о новых возможностях Firefox 3. В статьях не будут представлены сведения о незначительных изменениях, однако они помогут вам познакомится с существенными обновлениями.

-

Новые возможности для разработчиков в Firefox 3

-

Для веб-мастеров и разработчиков приложений

-
-
- Обновление веб-приложений для Firefox 3
-
- Предоставляет информацию об изменениях которые вам возможно нужно внести, чтобы получить выгоду от новых возможностей Firefox 3.
-
-
-
- Online и offline события
-
- Firefox 3 поддерживает WHATWG online и offline события, которые позволяют приложениям и расширениям определять есть ли активное Интернет соединение, и так же позволяет определять когда появляется и пропадает соединение.
-
-
-
- Веб-ориентированные обработчики протоколов
-
- Теперь вы можете регистрировать веб-приложения как обработчик протокола используя метод navigator.registerProtocolHandler().
-
-
-
- Рисование текста с использованием canvas
-
- Теперь вы можете рисовать текст с использованием нестандартизированного API canvas поддерживаемого Firefox 3.
-
-
-
- Поддержка преобразований для canvas
-
- Firefox now supports the transform() and setTransform() methods on canvases.
-
-
-
- Using microformats
-
- Firefox now has APIs for working with microformats.
-
-
-
- Drag and drop events
-
- Firefox 3 supports new events that are sent to the source node for a drag operation when the drag begins and ends.
-
-
-
- Focus management in HTML
-
- The new HTML 5 activeElement and hasFocus attributes are supported.
-
-
-
- Offline resources in Firefox
-
- Firefox now lets web applications request that resources be cached to allow the application to be used while offline.
-
-
-
- CSS improvements in Firefox 3
-
- Firefox 3 features a number of improvements in its CSS support.
-
-
-
- DOM improvements in Firefox 3
-
- Firefox 3 offers a number of new features in Firefox 3's DOM implementation, including support for several Internet Explorer extensions to the DOM.
-
-
-
- JavaScript 1.8 support
-
- Firefox 3 offers JavaScript 1.8.
-
-
-
- EXSLT support
-
- Firefox 3 provides support for a substantial subset of the EXSLT extensions to XSLT.
-
-
-
- SVG improvements in Firefox 3
-
- SVG support in Firefox 3 has been upgraded significantly, with support for over two dozen new filters, several new elements and attributes, and other improvements.
-
-
-
- Animated PNG graphics
-
- Firefox 3 supports the animated PNG (APNG) image format.
-
-

For XUL and extension developers

-
Notable changes and improvements
-
-
- Updating extensions for Firefox 3
-
- Provides a guide to the things you'll need to do to update your extension to work with Firefox 3.
-
-
-
- XUL improvements in Firefox 3
-
- Firefox 3 offers a number of new XUL elements, including new sliding scales, the date and time pickers, and spin buttons.
-
-
-
- Templates in Firefox 3
-
- Templates have been significantly improved in Firefox 3. The key improvement allows the use of custom query processors to allow data sources other than RDF to be used.
-
-
-
- Securing updates
-
- In order to provide a more secure add-on upgrade path for users, add-ons are now required to provide a secure method for obtaining updates before they can be installed. Add-ons hosted at AMO automatically provide this. Any add-ons installed that do not provide a secure update method when the user upgrades to Firefox 3 will be automatically disabled. Firefox will however continue to check for updates to the extension over the insecure path and attempt to install any update offered (installation will fail if the update also fails to provide a secure update method).
-
-
-
- Places migration guide
-
- An article about how to update an existing extension to use the Places API.
-
-
-
- Download Manager improvements in Firefox 3
-
- The Firefox 3 Download Manager features new and improved APIs, including support for multiple progress listeners.
-
-
-
- Using nsILoginManager
-
- The Password Manager has been replaced by the new Login Manager.
-
-
-
- Embedding XBL bindings
-
- You can now use the data: URL scheme from chrome code to embed XBL bindings directly instead of having them in separate XML files.
-
-
-
- Localizing extension descriptions
-
- Firefox 3 offers a new method for localizing add-on metadata. This lets the localized details be available as soon as the add-on has been downloaded, as well as when the add-on is disabled.
-
-
-
- Localization and Plurals
-
- Firefox 3 adds the new PluralForm module, which provides tools to aid in correctly pluralizing words in multiple localizations.
-
-
-
- Theme changes in Firefox 3
-
- Notes and information of use to people who want to create themes for Firefox 3.
-
-
New components and functionality
-
-
- FUEL Library
-
- FUEL is about making it easier for extension developers to be productive, by minimizing some of the XPCOM formality and adding some "modern" JavaScript ideas.
-
-
-
- Places
-
- The history and bookmarks APIs have been completely replaced by the new Places API.
-
-
-
- Idle service
-
- Firefox 3 offers the new nsIIdleService interface, which lets extensions determine how long it's been since the user last pressed a key or moved their mouse.
-
-
-
- ZIP writer
-
- The new nsIZipWriter interface lets extensions create ZIP archives.
-
-
-
- Full page zoom
-
- Firefox 3 improves the user experience by offering full page zoom in addition to text-only zoom.
-
-
-
- Interfacing with the XPCOM cycle collector
-
- XPCOM code can now take advantage of the cycle collector, which helps ensure that unused memory gets released instead of leaking.
-
-
-
- The Thread Manager
-
- Firefox 3 provides the new nsIThreadManager interface, along with new interfaces for threads and thread events, which provides a convenient way to create and manage threads in your code.
-
-
-
- JavaScript modules
-
- Firefox 3 now offers a new shared code module mechanism that lets you easily create modules in JavaScript that can be loaded by extensions and applications for use, much like shared libraries.
-
-
-
- The nsIJSON interface
-
- Firefox 3 offers the new nsIJSON interface, which offers high-performance encoding and decoding of JSON strings.
-
-
-
- The nsIParentalControlsService interface
-
- Firefox 3 now supports the Microsoft Windows Vista parental controls feature, and allows code to interact with it.
-
-
-
- Using content preferences
-
- Firefox 3 includes a new service for getting and setting arbitrary site-specific preferences that extensions as well as core code can use to keep track of their users' preferences for individual sites.
-
-
-
- Plug-in Monitoring
-
- A new component of the plugin system is now available to measure how long it takes plugins (e.g., Macromedia Flash) to execute their calls.
-
-
Fixed bugs
-
-
- Notable bugs fixed in Firefox 3
-
- This article provides information about bugs that have been fixed in Firefox 3.
-
-

New features for end users

-

User experience

-
    -
  • Easier password management. An information bar at the top of the browser window now appears to allow you to save passwords after a successful login.
  • -
  • Simplified add-on installation. You can now install extensions from third-party download sites in fewer clicks, thanks to the removal of the add-on download site whitelist.
  • -
  • New Download Manager. The download manager makes it easier to locate your downloaded files.
  • -
  • Resumable downloads. You can now resume downloads after restarting the browser or resetting your network connection.
  • -
  • Full page zoom. From the View menu and using keyboard shortcuts, you can now zoom in and out on the content of entire pages -- this scales not just the text but the layout and images as well.
  • -
  • Tab scrolling and quickmenu. Tabs are easier to locate with the new tab scrolling and tab quickmenu features.
  • -
  • Save what you were doing. Firefox 3 prompts you to see if you'd like to save your current tabs when you exit Firefox.
  • -
  • Optimized Open in Tabs behavior. Opening a folder of bookmarks in tabs now appends the new tabs instead of replacing the existing ones.
  • -
  • Easier to resize location and search bars. You can now easily resize the location and search bars using a simple resize handle between them.
  • -
  • Text selection improvements. You can now select multiple ranges of text using the Control (Command on Macintosh) key. Double-clicking and dragging now selects in "word-by-word" mode. Triple-clicking selects an entire paragraph.
  • -
  • Find toolbar. The Find toolbar now opens with the current selection.
  • -
  • Plugin management. Users can now disable individual plugins in the Add-on Manager.
  • -
  • Integration with Windows Vista. Firefox's menus now display using Vista's native theme.
  • -
  • Integration with Mac OS X. Firefox now supports Growl for notifications of completed downloads and available updates.
  • -
  • Star button. The new star button in the location bar lets you quickly add a new bookmark with a single click. A second click lets you file and tag your new bookmark.
  • -
  • Tags. You can now associate keywords with your bookmarks to easily sort them by topic.
  • -
  • Location bar and auto-complete. Type the title or tag of a page in the location bar to quickly find the site you were looking for in your history and bookmarks. Favicons, bookmark, and tag indicators help you see where the results are coming from.
  • -
  • Smart Bookmarks folder. Firefox's new Smart Bookmarks folder offers quick access to your recently bookmarked and tagged places, as well as pages you visit frequently.
  • -
  • Bookmarks and History Organizer. The new unified bookmarks and history organizer lets you easily search your history and bookmarks with multiple views and smart folders for saving your frequent searches.
  • -
  • Web-based protocol handlers. Web applications, such as your favorite web mail provider, can now be used instead of desktop applications for handling mailto: links from other sites. Similar support is provided for other protocols as well. (Note that web applications do have to register themselves with Firefox before this will work.)
  • -
  • Easy to use Download Actions. A new Applications preferences pane provides an improved user interface for configuring handlers for various file types and protocol schemes.
  • -
  • Improved look and feel. Graphics and font handling have been improved to make web sites look better on your screen, including sharper text rendering and better support for fonts with ligatures and complex scripts. In addition, Mac and Linux (Gnome) users will find that Firefox feels more like a native application for their platform than ever, with a new, native, look and feel.
  • -
  • Color management support. By setting the gfx.color_management.enabled preference in {{ mediawiki.external('about:config') }}, you can ask Firefox to use the color profiles embedded in images to adjust the colors to match your computer's display.
  • -
  • Offline support. Web applications can take advantage of new features to support being used even when you don't have an Internet connection.
  • -
-

Security and privacy

-
    -
  • One-click site information. Want to know more about the site you're visiting? Click the site's icon in the location bar to see who owns it. Identify information is prominently displayed and easier than ever to understand.
  • -
  • Malware protection. Firefox 3 warns you if you arrive at a web site that is known to install viruses, spyware, trojans, or other dangerous software (known as malware). You can see what the warning looks like by clicking here.
  • -
  • Web forgery protection enhanced. Now when you visit a page that's suspected of being a forgery, you're shown a special page instead of the contents of the page with a warning. Click here to see what it looks like.
  • -
  • Easier to understand SSL errors. The errors presented when an invalid SSL certificate is encountered have been clarified to make it easier to understand what the problem is.
  • -
  • Out-of-date add-on protection. Firefox 3 now automatically checks add-on and plugin versions and disables older, insecure versions.
  • -
  • Secure add-on updates. Add-on update security has been improved by disallowing add-ons that use an insecure update mechanism.
  • -
  • Anti-virus integration. Firefox 3 now informs anti-virus software when executable files are downloaded.
  • -
  • Windows Vista parental controls support. Firefox 3 supports the Vista system-wide parental control setting for disabling file downloads.
  • -
-

Performance

-
    -
  • Reliability. Firefox 3 now stores bookmarks, history, cookies, and preferences in a transactionally secure database format. This means your data is protected against loss even if your system crashes.
  • -
  • Speed. Firefox 3 has gotten a performance boost by completely replacing the part of the software that handles drawing to your screen, as well as to how page layout work is handled.
  • -
  • Memory use reduced. Firefox 3 is more memory efficient than ever, with over 300 memory "leak" bugs fixed and new features to help automatically locate and dispose of leaked memory blocks.
  • -
-

See also

- -

{{ languages( { "es": "es/Firefox_3_para_desarrolladores", "fr": "fr/Firefox_3_pour_les_d\u00e9veloppeurs", "ja": "ja/Firefox_3_for_developers", "zh-tw": "zh_tw/Firefox_3_for_developers", "ko": "ko/Firefox_3_for_developers", "pl": "pl/Firefox_3_dla_programist\u00f3w", "pt": "pt/Firefox_3_para_desenvolvedores" } ) }}

+{{FirefoxSidebar}} + +Если вы разработчик и хотите познакомится со всеми возможностями Firefox 3 вы пришли по адресу. В этой статье представлен список новых статей, в которых рассказывается о новых возможностях Firefox 3. В статьях не будут представлены сведения о незначительных изменениях, однако они помогут вам познакомится с существенными обновлениями. + +### Новые возможности для разработчиков в Firefox 3 + +#### Для веб-мастеров и разработчиков приложений + +- [Обновление веб-приложений для Firefox 3](/ru/%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B5%D0%B1-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B4%D0%BB%D1%8F_Firefox_3 "ru/Обновление_веб-приложений_для_Firefox_3") + - : Предоставляет информацию об изменениях которые вам возможно нужно внести, чтобы получить выгоду от новых возможностей Firefox 3. + + + +- [Online и offline события](/en/Online_%D0%B8_offline_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F "en/Online_and_offline_events") + - : Firefox 3 поддерживает WHATWG online и offline события, которые позволяют приложениям и расширениям определять есть ли активное Интернет соединение, и так же позволяет определять когда появляется и пропадает соединение. + + + +- [Веб-ориентированные обработчики протоколов](/ru/%D0%92%D0%B5%D0%B1-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%B2 "ru/Веб-ориентированные_обработчики протоколов") + - : Теперь вы можете регистрировать веб-приложения как обработчик протокола используя метод `navigator.registerProtocolHandler()`. + + + +- [Рисование текста с использованием canvas](/ru/%D0%A0%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_canvas "ru/Рисование_текста_с_использованием_canvas") + - : Теперь вы можете рисовать текст с использованием нестандартизированного API canvas поддерживаемого Firefox 3. + + + +- [Поддержка преобразований для canvas](/en/Canvas_tutorial/Transformations#Transforms "en/Canvas_tutorial/Transformations#Transforms") + - : Firefox now supports the `transform()` and `setTransform()` methods on canvases. + + + +- [Using microformats](/en/Using_microformats "en/Using_microformats") + - : Firefox now has APIs for working with microformats. + + + +- [Drag and drop events](/en/Drag_and_drop_events "en/Drag_and_drop_events") + - : Firefox 3 supports new events that are sent to the source node for a drag operation when the drag begins and ends. + + + +- [Focus management in HTML](/en/Focus_management_in_HTML "en/Focus_management_in_HTML") + - : The new HTML 5 `activeElement` and `hasFocus` attributes are supported. + + + +- [Offline resources in Firefox](/en/Offline_resources_in_Firefox "en/Offline_resources_in_Firefox") + - : Firefox now lets web applications request that resources be cached to allow the application to be used while offline. + + + +- [CSS improvements in Firefox 3](/en/CSS_improvements_in_Firefox_3 "en/CSS_improvements_in_Firefox_3") + - : Firefox 3 features a number of improvements in its CSS support. + + + +- [DOM improvements in Firefox 3](/en/DOM_improvements_in_Firefox_3 "en/DOM_improvements_in_Firefox_3") + - : Firefox 3 offers a number of new features in Firefox 3's DOM implementation, including support for several Internet Explorer extensions to the DOM. + + + +- [JavaScript 1.8 support](/en/New_in_JavaScript_1.8 "en/New_in_JavaScript_1.8") + - : Firefox 3 offers JavaScript 1.8. + + + +- [EXSLT support](/en/EXSLT "en/EXSLT") + - : Firefox 3 provides support for a substantial subset of the [EXSLT](/en/EXSLT "en/EXSLT") extensions to [XSLT](/en/XSLT "en/XSLT"). + + + +- [SVG improvements in Firefox 3](/en/SVG_improvements_in_Firefox_3 "en/SVG_improvements_in_Firefox_3") + - : SVG support in Firefox 3 has been upgraded significantly, with support for over two dozen new filters, several new elements and attributes, and other improvements. + + + +- [Animated PNG graphics](/en/Animated_PNG_graphics "en/Animated_PNG_graphics") + - : Firefox 3 supports the animated PNG (APNG) image format. + +#### For XUL and extension developers + +##### Notable changes and improvements + +- [Updating extensions for Firefox 3](/en/Updating_extensions_for_Firefox_3 "en/Updating_extensions_for_Firefox_3") + - : Provides a guide to the things you'll need to do to update your extension to work with Firefox 3. + + + +- [XUL improvements in Firefox 3](/en/XUL_improvements_in_Firefox_3 "en/XUL_improvements_in_Firefox_3") + - : Firefox 3 offers a number of new XUL elements, including new sliding scales, the date and time pickers, and spin buttons. + + + +- [Templates in Firefox 3](/en/Templates_in_Firefox_3 "en/Templates_in_Firefox_3") + - : Templates have been significantly improved in Firefox 3. The key improvement allows the use of custom query processors to allow data sources other than RDF to be used. + + + +- [Securing updates](/en/Extension_Versioning,_Update_and_Compatibility#Securing_Updates "en/Extension_Versioning,_Update_and_Compatibility#Securing_Updates") + - : In order to provide a more secure add-on upgrade path for users, add-ons are now required to provide a secure method for obtaining updates before they can be installed. Add-ons hosted at [AMO](http://addons.mozilla.org) automatically provide this. Any add-ons installed that do not provide a secure update method when the user upgrades to Firefox 3 will be automatically disabled. Firefox will however continue to check for updates to the extension over the insecure path and attempt to install any update offered (installation will fail if the update also fails to provide a secure update method). + + + +- [Places migration guide](/en/Places_migration_guide "en/Places_migration_guide") + - : An article about how to update an existing extension to use the Places API. + + + +- [Download Manager improvements in Firefox 3](/en/Download_Manager_improvements_in_Firefox_3 "en/Download_Manager_improvements_in_Firefox_3") + - : The Firefox 3 Download Manager features new and improved APIs, including support for multiple progress listeners. + + + +- [Using nsILoginManager](/en/Using_nsILoginManager "en/Using_nsILoginManager") + - : The Password Manager has been replaced by the new Login Manager. + + + +- [Embedding XBL bindings](/en/XBL/XBL_1.0_Reference/Elements#binding "en/XBL/XBL_1.0_Reference/Elements#binding") + - : You can now use the `data:` URL scheme from chrome code to embed XBL bindings directly instead of having them in separate XML files. + + + +- [Localizing extension descriptions](/en/Localizing_extension_descriptions "en/Localizing_extension_descriptions") + - : Firefox 3 offers a new method for localizing add-on metadata. This lets the localized details be available as soon as the add-on has been downloaded, as well as when the add-on is disabled. + + + +- [Localization and Plurals](/en/Localization_and_Plurals "en/Localization_and_Plurals") + - : Firefox 3 adds the new PluralForm module, which provides tools to aid in correctly pluralizing words in multiple localizations. + + + +- [Theme changes in Firefox 3](/en/Theme_changes_in_Firefox_3 "en/Theme_changes_in_Firefox_3") + - : Notes and information of use to people who want to create themes for Firefox 3. + +##### New components and functionality + +- [FUEL Library](/en/FUEL "en/FUEL") + - : FUEL is about making it easier for extension developers to be productive, by minimizing some of the XPCOM formality and adding some "modern" JavaScript ideas. + + + +- [Places](/en/Places "en/Places") + - : The history and bookmarks APIs have been completely replaced by the new [Places](/en/Places "en/Places") API. + + + +- [Idle service](/en/nsIIdleService "en/nsIIdleService") + - : Firefox 3 offers the new `nsIIdleService` interface, which lets extensions determine how long it's been since the user last pressed a key or moved their mouse. + + + +- [ZIP writer](/en/nsIZipWriter "en/nsIZipWriter") + - : The new `nsIZipWriter` interface lets extensions create ZIP archives. + + + +- [Full page zoom](/en/Full_page_zoom "en/Full_page_zoom") + - : Firefox 3 improves the user experience by offering full page zoom in addition to text-only zoom. + + + +- [Interfacing with the XPCOM cycle collector](/en/Interfacing_with_the_XPCOM_cycle_collector "en/Interfacing_with_the_XPCOM_cycle_collector") + - : XPCOM code can now take advantage of the cycle collector, which helps ensure that unused memory gets released instead of leaking. + + + +- [The Thread Manager](/en/The_Thread_Manager "en/The_Thread_Manager") + - : Firefox 3 provides the new `nsIThreadManager` interface, along with new interfaces for threads and thread events, which provides a convenient way to create and manage threads in your code. + + + +- [JavaScript modules](/en/JavaScript_modules "en/JavaScript_modules") + - : Firefox 3 now offers a new shared code module mechanism that lets you easily create modules in JavaScript that can be loaded by extensions and applications for use, much like shared libraries. + + + +- [The `nsIJSON` interface](/en/nsIJSON "en/nsIJSON") + - : Firefox 3 offers the new `nsIJSON` interface, which offers high-performance encoding and decoding of [JSON](/en/JSON "en/JSON") strings. + + + +- [The nsIParentalControlsService interface](/en/nsIParentalControlsService "en/nsIParentalControlsService") + - : Firefox 3 now supports the Microsoft Windows Vista parental controls feature, and allows code to interact with it. + + + +- [Using content preferences](/en/Using_content_preferences "en/Using_content_preferences") + - : Firefox 3 includes a new service for getting and setting arbitrary site-specific preferences that extensions as well as core code can use to keep track of their users' preferences for individual sites. + + + +- [Plug-in Monitoring](/en/Monitoring_plugins "en/Monitoring_plugins") + - : A new component of the plugin system is now available to measure how long it takes plugins (e.g., Macromedia Flash) to execute their calls. + +##### Fixed bugs + +- [Notable bugs fixed in Firefox 3](/en/Notable_bugs_fixed_in_Firefox_3 "en/Notable_bugs_fixed_in_Firefox_3") + - : This article provides information about bugs that have been fixed in Firefox 3. + +### New features for end users + +#### User experience + +- **Easier password management.** An information bar at the top of the browser window now appears to allow you to save passwords after a successful login. +- **Simplified add-on installation.** You can now install extensions from third-party download sites in fewer clicks, thanks to the removal of the add-on download site whitelist. +- **New Download Manager.** The download manager makes it easier to locate your downloaded files. +- **Resumable downloads.** You can now resume downloads after restarting the browser or resetting your network connection. +- **Full page zoom.** From the View menu and using keyboard shortcuts, you can now zoom in and out on the content of entire pages -- this scales not just the text but the layout and images as well. +- **Tab scrolling and quickmenu.** Tabs are easier to locate with the new tab scrolling and tab quickmenu features. +- **Save what you were doing.** Firefox 3 prompts you to see if you'd like to save your current tabs when you exit Firefox. +- **Optimized Open in Tabs behavior.** Opening a folder of bookmarks in tabs now appends the new tabs instead of replacing the existing ones. +- **Easier to resize location and search bars.** You can now easily resize the location and search bars using a simple resize handle between them. +- **Text selection improvements.** You can now select multiple ranges of text using the Control (Command on Macintosh) key. Double-clicking and dragging now selects in "word-by-word" mode. Triple-clicking selects an entire paragraph. +- **Find toolbar.** The Find toolbar now opens with the current selection. +- **Plugin management.** Users can now disable individual plugins in the Add-on Manager. +- **Integration with Windows Vista.** Firefox's menus now display using Vista's native theme. +- **Integration with Mac OS X.** Firefox now supports [Growl](http://growl.info/) for notifications of completed downloads and available updates. +- **Star button.** The new star button in the location bar lets you quickly add a new bookmark with a single click. A second click lets you file and tag your new bookmark. +- **Tags.** You can now associate keywords with your bookmarks to easily sort them by topic. +- **Location bar and auto-complete.** Type the title or tag of a page in the location bar to quickly find the site you were looking for in your history and bookmarks. Favicons, bookmark, and tag indicators help you see where the results are coming from. +- **Smart Bookmarks folder.** Firefox's new Smart Bookmarks folder offers quick access to your recently bookmarked and tagged places, as well as pages you visit frequently. +- **Bookmarks and History Organizer.** The new unified bookmarks and history organizer lets you easily search your history and bookmarks with multiple views and smart folders for saving your frequent searches. +- **Web-based protocol handlers.** Web applications, such as your favorite web mail provider, can now be used instead of desktop applications for handling `mailto:` links from other sites. Similar support is provided for other protocols as well. (Note that web applications do have to register themselves with Firefox before this will work.) +- **Easy to use Download Actions.** A new Applications preferences pane provides an improved user interface for configuring handlers for various file types and protocol schemes. +- **Improved look and feel.** Graphics and font handling have been improved to make web sites look better on your screen, including sharper text rendering and better support for fonts with ligatures and complex scripts. In addition, Mac and Linux (Gnome) users will find that Firefox feels more like a native application for their platform than ever, with a new, native, look and feel. +- **Color management support.** By setting the `gfx.color_management.enabled` preference in `{{ mediawiki.external('about:config') }}`, you can ask Firefox to use the color profiles embedded in images to adjust the colors to match your computer's display. +- **Offline support.** Web applications can take advantage of new features to support being used even when you don't have an Internet connection. + +#### Security and privacy + +- **One-click site information.** Want to know more about the site you're visiting? Click the site's icon in the location bar to see who owns it. Identify information is prominently displayed and easier than ever to understand. +- **Malware protection.** Firefox 3 warns you if you arrive at a web site that is known to install viruses, spyware, trojans, or other dangerous software (known as malware). You can see what the warning looks like by [clicking here](https://www.mozilla.com/firefox/its-an-attack.html). +- **Web forgery protection enhanced.** Now when you visit a page that's suspected of being a forgery, you're shown a special page instead of the contents of the page with a warning. [Click here](https://www.mozilla.com/firefox/its-a-trap.html) to see what it looks like. +- **Easier to understand SSL errors.** The errors presented when an invalid SSL certificate is encountered have been clarified to make it easier to understand what the problem is. +- **Out-of-date add-on protection.** Firefox 3 now automatically checks add-on and plugin versions and disables older, insecure versions. +- **Secure add-on updates.** Add-on update security has been improved by disallowing add-ons that use an insecure update mechanism. +- **Anti-virus integration.** Firefox 3 now informs anti-virus software when executable files are downloaded. +- **Windows Vista parental controls support.** Firefox 3 supports the Vista system-wide parental control setting for disabling file downloads. + +#### Performance + +- **Reliability.** Firefox 3 now stores bookmarks, history, cookies, and preferences in a transactionally secure database format. This means your data is protected against loss even if your system crashes. +- **Speed.** Firefox 3 has gotten a performance boost by completely replacing the part of the software that handles drawing to your screen, as well as to how page layout work is handled. +- **Memory use reduced.** Firefox 3 is more memory efficient than ever, with over 300 memory "leak" bugs fixed and new features to help automatically locate and dispose of leaked memory blocks. + +### See also + +- [Updating extensions for Firefox 3](/en/Updating_extensions_for_Firefox_3 "en/Updating_extensions_for_Firefox_3") +- [Updating web applications for Firefox 3](/en/Updating_web_applications_for_Firefox_3 "en/Updating_web_applications_for_Firefox_3") +- [Firefox 2 for developers](/en/Firefox_2_for_developers "en/Firefox_2_for_developers") +- [Firefox 1.5 for developers](/en/Firefox_1.5_for_developers "en/Firefox_1.5_for_developers") + +{{ languages( { "es": "es/Firefox\_3\_para\_desarrolladores", "fr": "fr/Firefox\_3\_pour\_les\_d\u00e9veloppeurs", "ja": "ja/Firefox\_3\_for\_developers", "zh-tw": "zh\_tw/Firefox\_3\_for\_developers", "ko": "ko/Firefox\_3\_for\_developers", "pl": "pl/Firefox\_3\_dla\_programist\u00f3w", "pt": "pt/Firefox\_3\_para\_desenvolvedores" } ) }} diff --git a/files/ru/mozilla/firefox/releases/31/index.md b/files/ru/mozilla/firefox/releases/31/index.md index 15846e83f0b126..d9df3c2a84adea 100644 --- a/files/ru/mozilla/firefox/releases/31/index.md +++ b/files/ru/mozilla/firefox/releases/31/index.md @@ -3,121 +3,99 @@ title: Firefox 31 for developers slug: Mozilla/Firefox/Releases/31 translation_of: Mozilla/Firefox/Releases/31 --- -
{{FirefoxSidebar}}
+{{FirefoxSidebar}} -

Хотите помочь документировать Firefox 31? См. список багов, требующих описания, и беритесь за дело!

+Хотите помочь документировать Firefox 31? См. [список багов, требующих описания](http://beta.elchi3.de/doctracker/#list=fx&version=31.0), и беритесь за дело! -

Изменения для Web-разработчиков

+## Изменения для Web-разработчиков -

Инструменты разработчика

+### Инструменты разработчика -

Важные моменты:

+Важные моменты: - +- [«пипетка» для выбора цветов на web-страницах](/ru/docs/Tools/Eyedropper) +- [полное отслеживание стека для консольных сообщений об ошибках](/ru/docs/Tools/Web_Console#Error_messages) +- [редактируемое Box Model View](/ru/docs/Tools/Page_Inspector#Box_model_view) +- [%c-форматирование для стилизации консольных сообщений](/ru/docs/Tools/Web_Console#Styling_messages) +- [команда «copy as cURL» в Network Monitor](/ru/docs/Tools/Network_Monitor#Copy_as_cURL) +- [клавишные привязки Sublime Text в редакторе источника](/ru/docs/tools/Keyboard_shortcuts#Source_editor) +- [возможность сделать логи Network Monitor персистентными](/ru/docs/Tools/Network_Monitor#Network_request_list) +- [JavaScript-предупреждения включены по умолчанию в Web-консоли](/ru/docs/Tools/Web_Console#JavaScript_errors_and_warnings) +- [Alt+клик раскрывает всех потомков узла](/ru/docs/Tools/Page_Inspector#HTML_pane_2) -

Все баги инструментов разработчика, исправленные с Firefox 30 по Firefox 31.

+[Все баги инструментов разработчика, исправленные с Firefox 30 по Firefox 31](https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2014-04-28&chfield=resolution&query_format=advanced&chfieldfrom=2014-03-17&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20App%20Manager&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&product=Firefox&list_id=10022921). -

CSS

+### CSS -
    -
  • Префикс «var-» у CSS-переменных изменён на «--» ({{Bug(985838)}}).
  • -
  • Исправлен нежелательный пробел для кратного 10 000 в корейских стилях счётчика ({{Bug(985186)}}).
  • -
  • Исправлены переходы CSS-прозрачности при псевдоклассе родителя :before и значении auto свойства overflow ({{Bug(990340)}}).
  • -
  • Псевдоэлемент ::-moz-math-stretchy удалён ({{Bug(1000879)}}).
  • -
+- Префикс «var-» у CSS-переменных изменён на «--» ({{Bug(985838)}}). +- Исправлен нежелательный пробел для кратного 10 000 в корейских стилях счётчика ({{Bug(985186)}}). +- Исправлены переходы CSS-прозрачности при псевдоклассе родителя :before и значении auto свойства overflow ({{Bug(990340)}}). +- Псевдоэлемент ::-moz-math-stretchy удалён ({{Bug(1000879)}}). -

HTML

+### HTML -
    -
  • Реализован элемент <track> ({{Bug(629350)}}).
  • -
+- Реализован элемент \ ({{Bug(629350)}}). -

JavaScript

+### JavaScript -

Реализована новая функциональность ECMAScript 6:

+Реализована новая функциональность ECMAScript 6: -
    -
  • Новый метод экземпляров Array: {{jsxref("Array.prototype.fill()")}} ({{Bug(911147)}})
  • -
  • Новая Math-функция: {{jsxref("Math.clz32()")}} ({{Bug(925123)}})
  • -
  • Новый метод экземпляров String: {{jsxref("String.prototype.normalize()")}} доступен в Firefox Desktop ({{Bug(918987)}}).
  • -
  • Новый метод Object {{jsxref("Object.setPrototypeOf()")}}.
  • -
  • Новые константы Number: {{jsxref("Number.MAX_SAFE_INTEGER")}} and {{jsxref("Number.MIN_SAFE_INTEGER")}}.
  • -
+- Новый метод экземпляров `Array`: {{jsxref("Array.prototype.fill()")}} ({{Bug(911147)}}) +- Новая `Math`-функция: {{jsxref("Math.clz32()")}} ({{Bug(925123)}}) +- Новый метод экземпляров `String`: {{jsxref("String.prototype.normalize()")}} доступен в Firefox Desktop ({{Bug(918987)}}). +- Новый метод `Object` {{jsxref("Object.setPrototypeOf()")}}. +- Новые константы `Number`: {{jsxref("Number.MAX_SAFE_INTEGER")}} and {{jsxref("Number.MIN_SAFE_INTEGER")}}. -

Интерфейсы/API/DOM

+### Интерфейсы/API/DOM -
    -
  • Реализован конструктор для KeyboardEvent ({{Bug(930893)}}).
  • -
  • Реализован атрибут KeyboardEvent.isComposing ({{Bug(993234)}}).
  • -
  • Реализован интерфейс InputEvent ({{Bug(993253)}}).
  • -
  • Реализован атрибут InputEvent.isComposing ({{Bug(993253)}}).
  • -
  • Реализован {{domxref("CSS.escape", "CSS.escape()")}} ({{Bug(955860)}}).
  • -
  • Событие mousemove теперь отменяемое, как в других браузерах ({{Bug(704423)}}). Вызов preventDefault() только выставляет атрибут defaultPrevented в true. То есть остальное поведение не изменилось. Например, это не может предотвратить выставление состояния :hover.
  • -
+- Реализован конструктор для `KeyboardEvent` ({{Bug(930893)}}). +- Реализован атрибут `KeyboardEvent.isComposing` ({{Bug(993234)}}). +- Реализован интерфейс `InputEvent` ({{Bug(993253)}}). +- Реализован атрибут `InputEvent.isComposing` ({{Bug(993253)}}). +- Реализован {{domxref("CSS.escape", "CSS.escape()")}} ({{Bug(955860)}}). +- Событие `mousemove` теперь отменяемое, как в других браузерах ({{Bug(704423)}}). Вызов `preventDefault()` только выставляет атрибут `defaultPrevented` в `true`. То есть остальное поведение не изменилось. Например, это не может предотвратить выставление состояния `:hover`. -

MathML

+### MathML -
    -
  • Частичная реализация OpenType MATH table, раздел 6.3.6 ({{Bug(407059)}}). Подробнее см. шрифты для Mozilla-всякого движка MathML и MathML torture test .
  • -
  • Псевдоэлемент ::-moz-math-stretchy удалён ({{Bug(1000879)}}).
  • -
  • Если они доступны, юникодовские математические буквенно-цифровые символы используются для полужирных, курсивных и полужирно-курсивных mathvariants ({{Bug(930504)}}).
  • -
+- Частичная реализация [OpenType MATH table](http://mpeg.chiariglione.org/standards/mpeg-4/open-font-format/text-isoiec-cd-14496-22-3rd-edition), раздел 6.3.6 ({{Bug(407059)}}). Подробнее см. [шрифты для Mozilla-всякого движка MathML](/ru/docs/Mozilla/MathML_Project/Fonts) и [MathML torture test](/ru/docs/Mozilla/MathML_Project/MathML_Torture_Test) . +- Псевдоэлемент ` :``:-moz-math-stretchy ` удалён ({{Bug(1000879)}}). +- Если они доступны, юникодовские математические буквенно-цифровые символы используются для полужирных, курсивных и полужирно-курсивных mathvariants ({{Bug(930504)}}). -

SVG

+### SVG -

Нет изменений.

+_Нет изменений._ -

Аудио/видео

+### Аудио/видео -

Нет изменений.

+_Нет изменений._ -

Безопасность

+## Безопасность - +- [Привилегированный код теперь получает Xray vision для экземпляров `Date`](/ru/docs/Xray_vision#Xrays_for_JavaScript_objects). -

Изменения для аддонов и разработчиков Mozilla

+## Изменения для аддонов и разработчиков Mozilla -
    -
  • Атрибут «align» для urlbar-wrapper (ранее для urlbar-container), который был установлен в «center» со времён незапамятных, удалён. Это, как известно, влияет на сторонние темы. Вам следует внимательно посмотреть, какое исправление будет правильным для вашей темы, но для поддержания эквивалентного эффекта вы можете добавить в свою тему следующее CSS-правило:
    - #urlbar-wrapper {
    - -moz-box-align: center;
    - }
  • -
  • nsIDOMWindowUtils.sendQueryContentEvent() и nsIDOMWindowUtils.sendSelectionSetEvent() имеют aAdditionalFlags как необязательный аргумент. Если вы вызываете nsIDOMWindowUtils.sendSelectionSetEvent() со значением true для aReverse, поведение может быть сломано этим изменением. См. подробности о aAdditionalFlags в объяснении каждого флага (QUERY_CONTENT_FLAG_* and SELECTION_SET_FLAG_*).
  • -
+- Атрибут «`align`» для `urlbar-wrapper` (ранее для `urlbar-container`), который был установлен в «`center`» со [времён незапамятных](http://bonsai.mozilla.org/cvsview2.cgi?diff_mode=context&whitespace_mode=show&root=/cvsroot&subdir=mozilla/browser/base/content&command=DIFF_FRAMESET&file=browser.xul&rev2=1.10&rev1=1.9), удалён. Это, как известно, влияет на сторонние темы. Вам следует внимательно посмотреть, какое исправление будет правильным для вашей темы, но для поддержания эквивалентного эффекта вы можете добавить в свою тему следующее CSS-правило: + `#urlbar-wrapper { -moz-box-align: center; }` +- [`nsIDOMWindowUtils.sendQueryContentEvent()`]() и [`nsIDOMWindowUtils.sendSelectionSetEvent()`](/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#sendSelectionSetEvent%28%29) имеют `aAdditionalFlags` как необязательный аргумент. Если вы вызываете `nsIDOMWindowUtils.sendSelectionSetEvent()` со значением `true` для `aReverse`, поведение может быть сломано этим изменением. См. подробности о `aAdditionalFlags` в [объяснении каждого флага](/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#Constants) (`QUERY_CONTENT_FLAG_*` and `SELECTION_SET_FLAG_*`). -

Add-on SDK

+### Add-on SDK -

Важные моменты:

+Важные моменты: - +- [Add-on Debugger](https://developer.mozilla.org/en-US/Add-ons/Add-on_Debugger) +- Добавлена возможность преобразования [между высокоуровневыми объектами BrowserWindow и окнами DOM](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/windows#Converting_to_DOM_windows) и [между высокоуровневыми объектами Tab и вкладками XUL](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs#Converting_to_XUL_tabs). +- Обновлена тема по умолчанию, используемая для панелей в Mac OS X. +- Добавлены опции панели [contentStyle и contentStyleFile](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel#Styling_panel_content). -

GitHub-коммиты, выполненные с Firefox 30 по Firefox 31. Это не включает никакие uplifts, сделанные после того, как этот релиз вступил в фазу Aurora.

+[GitHub-коммиты, выполненные с Firefox 30 по Firefox 31](https://github.com/mozilla/addon-sdk/compare/firefox30...firefox31). Это не включает никакие uplifts, сделанные после того, как этот релиз вступил в фазу Aurora. -

Исправления багов с Firefox 30 по Firefox 31. Это не включает никакие uplifts, сделанные после того, как этот релиз вступил в фазу Aurora.

+[Исправления багов с Firefox 30 по Firefox 31](https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-04-29&chfield=resolution&query_format=advanced&chfieldfrom=2014-03-18&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&product=Add-on%20SDK&list_id=10493962). Это не включает никакие uplifts, сделанные после того, как этот релиз вступил в фазу Aurora. -

Смотрите также

+## Смотрите также - +- [Совместимость сайтов для Firefox 31](/ru/docs/Mozilla/Firefox/Releases/31/Site_Compatibility) -

Старшие версии

+### Старшие версии -

{{Firefox_for_developers('30')}}

+{{Firefox_for_developers('30')}} diff --git a/files/ru/mozilla/firefox/releases/32/index.md b/files/ru/mozilla/firefox/releases/32/index.md index 57fd81116dce2c..bd9bdeb4bca5ed 100644 --- a/files/ru/mozilla/firefox/releases/32/index.md +++ b/files/ru/mozilla/firefox/releases/32/index.md @@ -3,106 +3,88 @@ title: Firefox 32 для разработчиков slug: Mozilla/Firefox/Releases/32 translation_of: Mozilla/Firefox/Releases/32 --- -
{{FirefoxSidebar}}

Хотите помочь с документированием Firefox 32? Взгляните на список ошибок, о которых нужно написать и приступайте!

+{{FirefoxSidebar}} -

Изменения для Web Разработчиков

+Хотите помочь с документированием Firefox 32? Взгляните на [список ошибок, о которых нужно написать](http://beta.elchi3.de/doctracker/#list=fx&version=32.0) и приступайте! -

Инструментарий разработчика

+## Изменения для Web Разработчиков -

Основные изменения:

+### Инструментарий разработчика - +Основные изменения: -

Все ошибки исправленные между версиями Firefox 31 и Firefox 32.

+- [Редактор Web Audio](/ru/docs/Tools/Web_Audio_Editor) +- [Автоподстановка и подсказки в Блокноте](/ru/docs/Tools/Scratchpad#Code_completion_and_inline_documentation) +- [Стили User agent в представлении Inspector Rules](/ru/docs/Tools/Page_Inspector#Rules_view) +- [Кнопка выбора элемента со страницы перемещена](/ru/docs/Tools/Page_Inspector#Firefox_32_onwards_2) +- [Добавлено отображение размеров узла в информационную панель Инспектора](/ru/docs/Tools/Page_Inspector#Firefox_32_onwards) +- [Добавлена кнопка снятия снимка всей страницы](/ru/docs/Tools/Tools_Toolbox#Extra_tools) +- Добавлены HiDPI изображения в инструменты +- Узлы, содержащие `display:none` в Инспекторе отображаются иначе -

CSS

+[Все ошибки исправленные между версиями Firefox 31 и Firefox 32](https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2014-06-09&chfield=resolution&query_format=advanced&chfieldfrom=2014-04-28&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20App%20Manager&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&product=Firefox). -
    -
  • {{domxref("mix-blend-mode")}} включено по умолчанию ({{Bug(952643)}}).
  • -
  • position:sticky включено по умолчанию в Release сборках (раньше было только в Nightly и Aurora) ({{Bug(916315)}}).
  • -
  • реализовано box-decoration-break: Левая/правая часть box-shadow должна быть отрисована только на первом/последнем элементе inline контейнера ({{Bug(613659)}}).
  • -
  • Реализация flex-grow/flex-shrink для преобразования между нулевыми и не нулевыми значениями ({{Bug(996945)}}).
  • -
+### CSS -

HTML

+- {{domxref("mix-blend-mode")}} включено по умолчанию ({{Bug(952643)}}). +- `position:sticky` включено по умолчанию в Release сборках (раньше было только в Nightly и Aurora) ({{Bug(916315)}}). +- реализовано box-decoration-break: Левая/правая часть box-shadow должна быть отрисована только на первом/последнем элементе inline контейнера ({{Bug(613659)}}). +- Реализация flex-grow/flex-shrink для преобразования между нулевыми и не нулевыми значениями ({{Bug(996945)}}). -
    -
  • Экспериментальная реализация свойства (включается параметром) {{HTMLElement("img")}} {{HTMLattrxref("srcset", "img")}}. Чтобы включить его, установите значение dom.image.srcset.enable в true ({{Bug(870021)}}).
  • -
+### HTML -

JavaScript

+- Экспериментальная реализация свойства (включается параметром) {{HTMLElement("img")}} {{HTMLattrxref("srcset", "img")}}. Чтобы включить его, установите значение `dom.image.srcset.enable` в `true` ({{Bug(870021)}}). -
    -
  • Реализованы новые встроенные методы ECMAScript 6: -
      -
    • {{jsxref("Array.from()")}} ({{bug(904723)}})
    • -
    • {{jsxref("Array.prototype.copyWithin()")}}
    • -
    • {{jsxref("Number.isSafeInteger()")}}
    • -
    -
  • -
+### JavaScript -

Интерфейсы/APIs/DOM

+- Реализованы новые встроенные методы ECMAScript 6: -
    -
  • Реализованы свойство {{domxref("NavigatorLanguage.languages", "navigator.languages")}} и событие {{event("languagechange")}} ({{Bug(889335)}}).
  • -
  • В методы {{domxref("KeyboardEvent.getModifierState")}}() и {{domxref("MouseEvent.getModifierState")}}() добавлена поддержка виртуального модификатора Accel ({{Bug(1009388)}}).
  • -
  • Добавлена экспериментальная реализация свойства {{domxref("KeyboardEvent.code")}}: она отключена в Release сборках ({{Bug(865649)}}).
  • -
+ - {{jsxref("Array.from()")}} ({{bug(904723)}}) + - {{jsxref("Array.prototype.copyWithin()")}} + - {{jsxref("Number.isSafeInteger()")}} -

MathML

+### Интерфейсы/APIs/DOM -
    -
  • Добавлена поддержка для {{MathMLElement("menclose")}} notation phasorangle.
  • -
+- Реализованы свойство {{domxref("NavigatorLanguage.languages", "navigator.languages")}} и событие {{event("languagechange")}} ({{Bug(889335)}}). +- В методы {{domxref("KeyboardEvent.getModifierState")}}() и {{domxref("MouseEvent.getModifierState")}}() добавлена поддержка виртуального модификатора `Accel` ({{Bug(1009388)}}). +- Добавлена экспериментальная реализация свойства {{domxref("KeyboardEvent.code")}}: она отключена в Release сборках ({{Bug(865649)}}). -

SVG

+### MathML -

Без изменений.

+- Добавлена поддержка для {{MathMLElement("menclose")}} notation `phasorangle`. -

Audio/Video

+### SVG -

Без изменений.

+_Без изменений._ -

Безопасность

+### Audio/Video - +\__Без изменений_.\_ -

Изменения для разработчиков дополнений и разработчиков Mozilla

+## Безопасность -

Add-on SDK

+- [Привилегированный код теперь обладает рентгеновским зрением относительно экземпляров `Object` и `Array` в](/ru/docs/Xray_vision#Xray_semantics_for_Object_and_Array) [JavaScript](/ru/docs/Xray_vision#Xray_semantics_for_Object_and_Array). -

Основные изменения

+## Изменения для разработчиков дополнений и разработчиков Mozilla -
    -
  • Добавлено свойство exclude в PageMod.
  • -
  • Добавлено свойство anonymous в Request.
  • -
  • Add-on Debugger теперь содержит Консоль и Блокнот.
  • -
+### Add-on SDK -

Подробнее

+#### Основные изменения -

Коммиты GitHub между версиями Firefox 31 и Firefox 32. Не будут включать никаких поднятий, сделанных после того, как этот выпуск войдёт в Aurora.

+- Добавлено свойство [`exclude`](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/page-mod#PageMod%28options%29) в `PageMod`. +- Добавлено свойство [`anonymous`](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/request#Request%28options%29) в `Request`. +- [Add-on Debugger](https://developer.mozilla.org/en-US/Add-ons/Add-on_Debugger) теперь содержит Консоль и Блокнот. -

Ошибки исправленные Firefox 31 и Firefox 32. Сюда не включены изменения, сделанные после того, как этот релиз был перемещён в стадию Aurora.

+#### Подробнее -

Смотрите также

+[Коммиты GitHub между версиями Firefox 31 и Firefox 32](https://github.com/mozilla/addon-sdk/compare/firefox31...firefox32). Не будут включать никаких поднятий, сделанных после того, как этот выпуск войдёт в Aurora. - +[Ошибки исправленные Firefox 31 и Firefox 32](https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-06-09&chfield=resolution&query_format=advanced&chfieldfrom=2014-04-28&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&product=Add-on%20SDK&list_id=10493962). Сюда не включены изменения, сделанные после того, как этот релиз был перемещён в стадию Aurora. -

Предыдущие версии

+## Смотрите также -

{{Firefox_for_developers('31')}}

+- [Совместимость сайтов с Firefox 32](/ru/docs/Mozilla/Firefox/Releases/32/Site_Compatibility) + +### Предыдущие версии + +{{Firefox_for_developers('31')}} diff --git a/files/ru/mozilla/firefox/releases/33/index.md b/files/ru/mozilla/firefox/releases/33/index.md index e7ac22566f095c..a4a59f62c08f91 100644 --- a/files/ru/mozilla/firefox/releases/33/index.md +++ b/files/ru/mozilla/firefox/releases/33/index.md @@ -9,75 +9,66 @@ tags: - Release translation_of: Mozilla/Firefox/Releases/33 --- -
{{FirefoxSidebar}}
Хотите помочь с документацией к Firefox 33? Взгляните на список багов нуждающихся в описании и помогите нам!
+{{FirefoxSidebar}}Хотите помочь с документацией к Firefox 33? Взгляните на [список багов нуждающихся в описании](http://beta.elchi3.de/doctracker/#list=fx&version=33.0) и помогите нам! -

Список изменения для веб - разработки

+## Список изменения для веб - разработки -

Инструменты разработчика

+### Инструменты разработчика -

Нет изменений.

+_Нет изменений._ -

CSS

+### CSS -
    -
  • Реализовано @counter-style правило({{bug(966166)}}).
  • -
  • Больше нет необходимости использовать префикс -moz-ethiopic-numeric({{bug(985825)}}).
  • -
  • Добавлена поддержка disclosure-open/disclosure-closed стилей счётчиков({{bug(982355)}}).
  • -
  • CSS-анимация с пустыми keyframes свойствами обрабатывает события по умолчанию({{bug(1004377)}}).
  • -
+- Реализовано **@counter-style** правило({{bug(966166)}}). +- Больше нет необходимости использовать префикс **-moz-ethiopic-numeric**({{bug(985825)}}). +- Добавлена поддержка **disclosure-open/disclosure-closed** стилей счётчиков({{bug(982355)}}). +- CSS-анимация с пустыми keyframes свойствами обрабатывает события по умолчанию({{bug(1004377)}}). -

HTML

+### HTML -

Нет изменений.

+_Нет изменений._ -

JavaScript

+### JavaScript -
    -
  • Удалён нестандартный метод {{jsxref("Number.toInteger()")}} ({{bug(1022396)}}).
  • -
  • Методы {{jsxref("Map.prototype.set()")}}, {{jsxref("WeakMap.prototype.set()")}} and {{jsxref("Set.prototype.add()")}} можно использовать последовательно, больше не возвращают undefined в место этого возвращают объект. ({{bug(1031632)}}).
  • -
  • Добавлена поддержка типа данных "Symbol" из стандарта ECMAScript 6 ({{bug(645416)}}): -
      -
    • {{jsxref("Symbol")}}
    • -
    • {{jsxref("Symbol.for()")}}
    • -
    • {{jsxref("Symbol.keyFor()")}}
    • -
    • {{jsxref("Object.getOwnPropertySymbols()")}}
    • -
    -
  • -
  • Параметры по умолчанию инициализированные до инициализации функции или в теле функции не могут быть использованы в качестве параметров по умолчанию ({{bug(1022962)}}).
  • -
+- Удалён нестандартный метод {{jsxref("Number.toInteger()")}} ({{bug(1022396)}}). +- Методы {{jsxref("Map.prototype.set()")}}, {{jsxref("WeakMap.prototype.set()")}} and {{jsxref("Set.prototype.add()")}} можно использовать последовательно, больше не возвращают `undefined` в место этого возвращают объект. ({{bug(1031632)}}). +- Добавлена поддержка типа данных "Symbol" из стандарта ECMAScript 6 ({{bug(645416)}}): -

Interfaces/APIs/DOM

+ - {{jsxref("Symbol")}} + - {{jsxref("Symbol.for()")}} + - {{jsxref("Symbol.keyFor()")}} + - {{jsxref("Object.getOwnPropertySymbols()")}} -

Нет изменений.

+- Параметры по умолчанию инициализированные до инициализации функции или в теле функции не могут быть использованы в качестве параметров по умолчанию ({{bug(1022962)}}). -

MathML

+### Interfaces/APIs/DOM -
    -
  • Используются Open Type MATH для задания констант fractions, stacks, radicals и скриптов ({{bug(961365)}}).
  • -
+_Нет изменений._ -

SVG

+### MathML -

Нет изменений.

+- Используются [Open Type MATH](https://wiki.mozilla.org/MathML:Open_Type_MATH_Table#Implementation_Status) для задания констант fractions, stacks, radicals и скриптов ({{bug(961365)}}). -

Audio/Video

+### SVG -

Нет изменений.

+_Нет изменений._ -

Безопасность

+### Audio/Video -

Нет изменений.

+_Нет изменений._ -

Изменения для плагинов и методов их разработки

+## Безопасность -

Нет изменений.

+_Нет изменений._ -

Смотрите также

+## Изменения для плагинов и методов их разработки - +_Нет изменений._ -

Предыдущие версии

+## Смотрите также -

{{Firefox_for_developers('32')}}

+- [Совместимость сайтов для Firefox 33](/ru/docs/Mozilla/Firefox/Releases/33/Site_Compatibility) + +### Предыдущие версии + +{{Firefox_for_developers('32')}} diff --git a/files/ru/mozilla/firefox/releases/43/index.md b/files/ru/mozilla/firefox/releases/43/index.md index 97e5697b5e3c10..d449543f7e619b 100644 --- a/files/ru/mozilla/firefox/releases/43/index.md +++ b/files/ru/mozilla/firefox/releases/43/index.md @@ -6,151 +6,131 @@ tags: - Release Notes translation_of: Mozilla/Firefox/Releases/43 --- -
{{FirefoxSidebar}}
+{{FirefoxSidebar}} -

Установить Firefox Developer Edition Firefox 43 был выпущен 15 декабря 2015 года. В этой статье перечислены ключевые изменения, которые полезны не только для веб-разработчиков, но и для разработчиков Firefox и Gecko, а также для разработчиков приложений.

+[Установить Firefox Developer Edition](https://www.mozilla.org/firefox/developer/) Firefox 43 был выпущен 15 декабря 2015 года. В этой статье перечислены ключевые изменения, которые полезны не только для веб-разработчиков, но и для разработчиков Firefox и Gecko, а также для разработчиков приложений. -

Важные изменения для Веб Разработчиков

+## Важные изменения для Веб Разработчиков -

Инструменты разработчика

+### Инструменты разработчика -

Главное:

+Главное: - +- [Просмотр логов сервера в Консоли Веб](/ru/docs/Tools/Web_Console/Console_messages#Server) +- [Быстрый поиск правила переопределяющего объявление CSS](/ru/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Overridden_declarations) +- [Новый пункт в контекстном меню Инспектора : "Use in Console"](/ru/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu) +- ["Strict" опция для фильтрации в Rules view](/ru/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Strict_search) +- [Сообщения в панели Сеть, в Консоли теперь ссылаются на Сетевой Монитор](/ru/docs/Tools/Web_Console/Console_messages#Network) +- [В Инспекторе при обзоре разметки можно увидеть индикатор указывающий псевдоклассы у соответствующих элементов](/ru/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Setting_hover_active_focus) +- Новая боковая панель в WebIDE -

И как обычно исправлены обнаруженные баги в инструментах разработчика в версиях Firefox 42 и Firefox 43.

+[И как обычно исправлены обнаруженные баги в инструментах разработчика в версиях Firefox 42 и Firefox 43](https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2015-09-19&query_format=advanced&chfield=resolution&chfieldfrom=2015-08-10&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox&list_id=12582678). -

CSS

+### CSS -
    -
  • Удалён префикс CSS-свойства {{Cssxref("hyphens")}} ({{bug(953408)}}).
  • -
  • CCS свойство {{cssxref("font")}} теперь поддерживает указание {{cssxref("font-stretch")}} {{bug(1057680)}}).
  • -
  • Псевдокласс {{cssxref(":fullscreen")}} теперь выбирает весь стек элементов с дисплея в полноэкранном режиме, а не только элементы высшего уровня ({{bug(1199522)}}).
  • -
  • Устаревшие свойства SVG {{cssxref("writing-mode")}}, lr, lr-tb, rl, tb, and tb-rl, добавлены в CSS как алиасы стандартных CSS-свойств ({{bug(1205787)}}).
  • -
+- Удалён префикс CSS-свойства {{Cssxref("hyphens")}} ({{bug(953408)}}). +- CCS свойство {{cssxref("font")}} теперь поддерживает указание {{cssxref("font-stretch")}} {{bug(1057680)}}). +- Псевдокласс {{cssxref(":fullscreen")}} теперь выбирает весь стек элементов с дисплея в полноэкранном режиме, а не только элементы высшего уровня ({{bug(1199522)}}). +- Устаревшие свойства SVG {{cssxref("writing-mode")}}, `lr`, `lr-tb`, `rl`, `tb`, and `tb-rl`, добавлены в CSS как алиасы стандартных CSS-свойств ({{bug(1205787)}}). -

HTML

+### HTML -
    -
  • Для тега {{htmlelement("img")}} с изображением формата ICO содержащего несколько кадров (анимированного), разрешение изображения будет равным разрешению самого большого кадра, а не самого малого {{bug(1201796)}}.
  • -
  • Значение области просмотра документа (viewport) (определённого с помощью тега <meta name="viewport>) можно динамически изменять с помощью JavaScript ({{bug(976616)}}).
  • -
+- Для тега {{htmlelement("img")}} с изображением формата ICO содержащего несколько кадров (анимированного), разрешение изображения будет равным разрешению самого большого кадра, а не самого малого {{bug(1201796)}}. +- Значение области просмотра документа (viewport) (определённого с помощью тега `JavaScript +### JavaScript -

Новые API

+#### Новые API -
    -
  • Новые методы ES2016 {{jsxref("Array.prototype.includes()")}} и {{jsxref("TypedArray.prototype.includes()")}} доступны по умолчанию ({{bug(1070767)}}).
  • -
+- Новые методы ES2016 {{jsxref("Array.prototype.includes()")}} и {{jsxref("TypedArray.prototype.includes()")}} доступны по умолчанию ({{bug(1070767)}}). -

Изменения связанные с объектом arguments

+#### Изменения связанные с объектом `arguments` - +- Более полное соответствие спецификации ES2015, [стрелочные функции ](/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions)больше не содержат свой собственный встроенный объект` arguments`. Объект `arguments` теперь прикреплён лексически (наследуется от внешней функции). В большинстве случаев, [остаточные параметры ](/ru/docs/Web/JavaScript/Reference/Functions/Rest_parameters)лучшая альтернатива` (...args) => args[i]`, смотри {{bug(889158)}}. +- Объект [arguments](/ru/docs/Web/JavaScript/Reference/Functions/arguments) теперь разрешается использовать вместе с [остаточными параметрами ](/ru/docs/Web/JavaScript/Reference/Functions/Rest_parameters)({{bug(1133298)}}). +- Теперь, объект map [`arguments`](/ru/docs/Web/JavaScript/Reference/Functions/arguments) в нестрогих функциях доступен только если функция не содержит другие [остаточные параметры](/ru/docs/Web/JavaScript/Reference/Functions/rest_parameters), или [параметры по умолчанию или ](/ru/docs/Web/JavaScript/Reference/Functions/Default_parameters)[destructured parameters](/ru/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) ({{bug(1175394)}}). -

Interfaces/APIs/DOM

+### Interfaces/APIs/DOM -

DOM & HTML DOM

+#### DOM & HTML DOM -

Без изменений.

+_Без изменений._ -

IndexedDB

+#### IndexedDB -
    -
  • Добавлена сортировка с учётом локали, которая позволяет создавать индексы учитывающие локаль. Эти индексы потом могут быть использованы чтобы отсортировать данные с учётом правил локали. ({{bug(871846)}}). Это не стандартная функция и доступна только в Firefox.
  • -
+- Добавлена [сортировка с учётом локали](/ru/docs/Web/API/IndexedDB_API/Using_IndexedDB#Locale-aware_sorting), которая позволяет создавать индексы учитывающие локаль. Эти индексы потом могут быть использованы чтобы отсортировать данные с учётом правил локали. ({{bug(871846)}}). Это не стандартная функция и доступна только в Firefox. -

Service Workers

+#### Service Workers -
    -
  • Согласно спецификации, если {{domxref("ExtendableEvent.waitUntil()")}} был вызван вне обработчика {{domxref("ExtendableEvent")}}, Firefox выбросит InvalidStateError; также несколько подряд идущих вызовов {{domxref("ExtendableEvent.waitUntil","waitUntil()")}} теперь будут помещены в стек, и результирующие промисы будут добавлены в extend lifetime promises ({{bug(1180274)}}).
  • -
  • Реализованы методы {{domxref("PushMessageData")}} ({{bug(1149195)}}).
  • -
+- Согласно спецификации, если {{domxref("ExtendableEvent.waitUntil()")}} был вызван вне обработчика {{domxref("ExtendableEvent")}}, Firefox выбросит `InvalidStateError`; также несколько подряд идущих вызовов {{domxref("ExtendableEvent.waitUntil","waitUntil()")}} теперь будут помещены в стек, и результирующие промисы будут добавлены в [extend lifetime promises](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#dfn-extend-lifetime-promises) ({{bug(1180274)}}). +- Реализованы методы {{domxref("PushMessageData")}} ({{bug(1149195)}}). -

WebRTC

+#### WebRTC -
    -
  • Метод {{domxref("HTMLCanvasElement.captureStream()")}} активирован в Firefox по умолчанию ({{bug(1177276)}}).
  • -
+- Метод {{domxref("HTMLCanvasElement.captureStream()")}} активирован в Firefox по умолчанию ({{bug(1177276)}}). -

Разное

+#### Разное -
    -
  • Battery Status API теперь использует новый синтаксис промисов для {{domxref("Navigator.getBattery()")}}, так как это описано в последней версии спецификации ({{bug(1050749)}}).
  • -
  • Заголовок User-Agent более не в списке {{Glossary("Forbidden_header_name", "forbidden header names", 1)}} и теперь может быть установлен в объект Fetch {{domxref("Headers")}}, через XHR {{domxref("XMLHttpRequest.setRequestHeader()")}},… ({{bug(1188932)}}).
  • -
  • Конструктор {{domxref("MediaRecorder.MediaRecorder()")}} теперь принимает дополнительно необязательный параметр типа словарь (dictionary), который позволяет вам устанавливать произвольный битрейт для записываемого аудио/видео ({{bug("1161276")}}).
  • -
  • Реализован интерфейс {{domxref("PerformanceObserver")}}, из Performance Timeline API ({{bug(1165796)}}).
  • -
  • Добавлены дополнительно два интерфейса в Frame Timing API, {{domxref("PerformanceRenderTiming")}} и {{domxref("PerformanceCompositeTiming")}} ({{bug(1191178)}}).
  • -
  • Реализована современная версия Screen Orientation API: доступны беспрефиксные интерфейсы {{domxref("Screen.orientation")}} и {{domxref("ScreenOrientation")}} ({{bug("1131470")}}). Не стандартные {{domxref("Screen.mozOrientation")}}, {{domxref("Screen.onmozorientationchange")}}, {{domxref("Screen.mozLockOrientation()")}}, и {{domxref("Screen.mozUnlockOrientation()")}} будут удалены в будущем.
  • -
  • В Линукс, как и в Windows, {{domxref("Event.timeStamp")}} теперь возвращает {domxref("DOMHighResTimeStamp")}} ({{bug(1026803)}}).
  • -
  • Экспериментальная поддержка {{domxref("Selection")}} событий {{event("selectionchange")}} и {{event("selectstart")}}, а также добавлены {{domxref("Document.onselectionchange")}} и {{domxref("GlobalEventHandlers.onselectstart")}} свойства для обработчиков событий ({{bug(571294)}}). Событие selectionchange теперь возникает на {{domxref("Document")}} если связано с объектом Selection, или в особом случае {{domxref("HTMLInputElement")}} или {{domxref("HTMLTextAreaElement")}} ({{bug(1196479)}}). Это свойство контролируется с помощью настройки dom.select_events.enabled, которое по умолчанию имеет значение false, за исключением Firefox Nightly.
  • -
  • Поддержка {{domxref("MouseEvent.offsetX")}} и {{domxref("MouseEvent.offsetY")}} доступна по умолчанию в Android версии Firefox и Firefox OS ({{bug(1204841)}}).
  • -
  • Удалён метод {{domxref("HTMLCanvasElement.mozFetchAsStream()")}} ({{bug(1206030)}}).
  • -
  • Конструктор {{domxref("Request.Request", "Request()")}} а также {{domxref("Window.fetch", "fetch()")}} теперь выбросит исключение {{jsxref("TypeError")}} если будет использовано в URL которое содержит параметры с именами username и password ({{bug(1195820)}}).
  • -
+- [Battery Status API](/ru/docs/Web/API/Battery_Status_API) теперь использует новый синтаксис промисов для {{domxref("Navigator.getBattery()")}}, так как это описано в последней версии спецификации ({{bug(1050749)}}). +- Заголовок `User-Agent` более не в списке {{Glossary("Forbidden_header_name", "forbidden header names", 1)}} и теперь может быть установлен в объект [Fetch](/ru/docs/Web/API/Fetch_API) {{domxref("Headers")}}, через XHR {{domxref("XMLHttpRequest.setRequestHeader()")}},… ({{bug(1188932)}}). +- Конструктор {{domxref("MediaRecorder.MediaRecorder()")}} теперь принимает дополнительно необязательный параметр типа словарь (dictionary), который позволяет вам устанавливать произвольный битрейт для записываемого аудио/видео ({{bug("1161276")}}). +- Реализован интерфейс {{domxref("PerformanceObserver")}}, из [Performance Timeline API](/ru/docs/Web/API/Performance_Timeline_API) ({{bug(1165796)}}). +- Добавлены дополнительно два интерфейса в [Frame Timing API, ](){{domxref("PerformanceRenderTiming")}} и {{domxref("PerformanceCompositeTiming")}} ({{bug(1191178)}}). +- Реализована современная версия [Screen Orientation API](/ru/docs/Web/API/Screen_Orientation_API): доступны беспрефиксные интерфейсы {{domxref("Screen.orientation")}} и {{domxref("ScreenOrientation")}} ({{bug("1131470")}}). Не стандартные {{domxref("Screen.mozOrientation")}}, {{domxref("Screen.onmozorientationchange")}}, {{domxref("Screen.mozLockOrientation()")}}, и {{domxref("Screen.mozUnlockOrientation()")}} будут удалены в будущем. +- В Линукс, как и в Windows, {{domxref("Event.timeStamp")}} теперь возвращает {domxref("DOMHighResTimeStamp")}} ({{bug(1026803)}}). +- Экспериментальная поддержка {{domxref("Selection")}} событий {{event("selectionchange")}} и {{event("selectstart")}}, а также добавлены {{domxref("Document.onselectionchange")}} и {{domxref("GlobalEventHandlers.onselectstart")}} свойства для обработчиков событий ({{bug(571294)}}). Событие` selectionchange` теперь возникает на {{domxref("Document")}} если связано с объектом `Selection`, или в особом случае {{domxref("HTMLInputElement")}} или {{domxref("HTMLTextAreaElement")}} ({{bug(1196479)}}). Это свойство контролируется с помощью настройки `dom.select_events.enabled`, которое по умолчанию имеет значение `false`, за исключением Firefox Nightly. +- Поддержка {{domxref("MouseEvent.offsetX")}} и {{domxref("MouseEvent.offsetY")}} доступна по умолчанию в Android версии Firefox и Firefox OS ({{bug(1204841)}}). +- Удалён метод {{domxref("HTMLCanvasElement.mozFetchAsStream()")}} ({{bug(1206030)}}). +- Конструктор {{domxref("Request.Request", "Request()")}} а также {{domxref("Window.fetch", "fetch()")}} теперь выбросит исключение {{jsxref("TypeError")}} если будет использовано в URL которое содержит параметры с именами username и password ({{bug(1195820)}}). -

MathML

+### MathML -

Без изменений.

+_Без изменений._ -

SVG

+### SVG -

Без изменений.

+_Без изменений._ -

Audio/Video

+### Audio/Video -

Без изменений.

+_Без изменений._ -

HTTP

+## HTTP -

Без изменений.

+_Без изменений._ -

Networking

+## Networking -

Без изменений.

+_Без изменений._ -

Безопасность

+## Безопасность -
    -
  • Доступ к Web Storage (i.e. localStorage и sessionStorage) из других IFrame-мов запрещён если у пользователя заблокированы куки из сторонних сервисов (других веб-сайтов) ({{bug("536509")}}).
  • -
  • Белый список удалён из Nightly и Aurora/Dev Edition браузеров ({{bug(1201023)}}). Также запланировано удаление из Beta и Release версий в следующей версии (Firefox 44).
  • -
  • Реализована целостность ресурсов для {{htmlelement("script")}} и {{htmlelement("link")}} которые ведут к файлам стилей ({{bug("992096")}}).
  • -
+- Доступ к Web Storage (i.e. `localStorage` и `sessionStorage`) из других IFrame-мов запрещён если у пользователя [заблокированы куки из сторонних сервисов (других веб-сайтов) ](https://support.mozilla.org/en-US/kb/disable-third-party-cookies)({{bug("536509")}}). +- Белый список удалён из Nightly и Aurora/Dev Edition браузеров ({{bug(1201023)}}). Также запланировано удаление из Beta и Release версий в следующей версии (Firefox 44). +- Реализована целостность ресурсов для {{htmlelement("script")}} и {{htmlelement("link")}} которые ведут к файлам стилей ({{bug("992096")}}). -

Изменения для разработчиков дополнений и разработчиков Mozilla

+## Изменения для разработчиков дополнений и разработчиков Mozilla -

Interfaces

+### Interfaces -

Без изменений.

+_Без изменений._ -

XUL

+### XUL -

Без изменений.

+_Без изменений._ -

JavaScript code modules

+### JavaScript code modules -

Без изменений.

+_Без изменений._ -

XPCOM

+### XPCOM -

Без изменений.

+_Без изменений._ -

Other

+### Other -

Без изменений.

+_Без изменений._ -

Старые версии

+## Старые версии -

{{Firefox_for_developers('42')}}

+{{Firefox_for_developers('42')}} diff --git a/files/ru/mozilla/firefox/releases/53/index.md b/files/ru/mozilla/firefox/releases/53/index.md index 0c1201910876df..9a0f7e2573550e 100644 --- a/files/ru/mozilla/firefox/releases/53/index.md +++ b/files/ru/mozilla/firefox/releases/53/index.md @@ -3,204 +3,160 @@ title: Firefox 53 для разработчиков slug: Mozilla/Firefox/Releases/53 translation_of: Mozilla/Firefox/Releases/53 --- -
{{FirefoxSidebar}}
- -

Firefox 53 был выпущен 19 апреля 2017. В этой статье перечислены основные изменения, которые полезны не только для веб-разработчиков, но и разработчиков Firefox и Gecko, а также разработчикам дополнений.

- -

Изменения для веб-разработчиков

- -

Инструменты разработчика

- -
    -
  • Избегание задержки в прокрутке на подсветке заданных АПЗ ({{bug (1312103)}}).
  • -
  • Добавлена возможность копировать полный путь CSS элемента ({{bug(1323700)}}).
  • -
  • Devtools добавлена поддержка CSS-цвета-4 ({{bug (1310681)}}).
  • -
  • Разметка вид: добавить визуальную подсказку между открывающим и закрывающим тегами сложенного узла ({{bug(1323193)}}).
  • -
+{{FirefoxSidebar}} -

CSS

- -

Новые возможности

- -
    -
  • В mask-*свойствах обыкновенного письма (см CSS маски ) все поддерживается и доступны по умолчанию (см {{bug (1251161)}}).
  • -
  • Добавлено {{cssxref("caret-color")}} Свойство ({{bug (1063162)}}).
  • -
  • Реализована {{cssxref("place-items")}} / {{cssxref("place-self")}} / {{cssxref("place-content")}} Shorthands ({{bug (1319958)}} ).
  • -
  • Добавлено flow-rootзначение {{cssxref ( "display")}} свойства ({{bug(1322191)}}).
  • -
  • {{cssxref("tab-size", "-moz-tab-size")}} теперь принимает {{cssxref("<length>")}} значения ({{bug (943918)}}), а теперь анимируемый ({{bug (1308110)}}).
  • -
  • {{cssxref("mask-mode")}}: яркости не работает на градиентных масок ({{bug (1346265)}}).
  • -
  • [CSS-сетка] FR Единица в {{cssxref("grid-template-rows")}} не заполняя окно просмотра ({{bug(1346699)}}).
  • -
  • гибкие элементы не сортируются в соответствии с «порядком», если они отделены друг от друга abspos собрата ({{bug (1345873)}}).
  • -
- -

Другие изменения

- -
    -
  • Включить маски longhands по элементам SVG ({{bug(1319667)}}).
  • -
  • [CSS-сетка] Исправлено: align-self/ justify-self:stretch/ normalне работает на <table>элементах сетки ({{bug (1316051)}}).
  • -
  • Установленный: clip-path: circle()с большой ссылкой окно и процент радиус не оказывают правильно ({{bug (1324713)}}.
  • -
  • При применении {{cssxref ("text-transform")}} значения из uppercaseдревнегреческого текста, акцент на дизъюнктивной ETA (rj) больше не удаляется (см {{bug(1322989)}}).
  • -
  • Наличие contentsзначения {{cssxref ("display")}} контролировали через layout.css.display-contents.enabledнастройку. В Firefox 53 эта настройка была удалена полностью, так что значение всегда будет доступен и больше не могут быть отключены ({{bug (1295788)}}).
  • -
- -

JavaScript

- -
    -
  • ECMAScript 2015 семантика для {{jsxref ( "Function.name")}} свойства были реализованы. Это включает в себя выведенные имена на анонимные функции ( var foo = function() {}) ({{bug (883377)}}).
  • -
  • ECMAScript 2015 семантика для закрытия итераторы были реализованы. Это влияет на for...ofцикл, например ({{bug(1147371)}}).
  • -
  • Шаблон Буквальное предложение Revision , что снимает ограничения избежать последовательностей на помеченных литералах шаблона было реализовано ({{bug(1317375)}}).
  • -
  • Нестандартные Струнные дженерики теперь представьте предупреждение устаревания в консоли. Не используйте их больше, они будут удалены в будущем! ({{bug (1319926)}}).
  • -
  • Статическое lengthсвойство {{jsxref ( "TypedArray")}} объектов было изменено с 3 до 0 в соответствии с ES2016 ({{bug (1317306)}}).
  • -
  • {{jsxref ( "SharedArrayBuffer")}} теперь может быть использован в {{jsxref ( "DataView")}} объекты ({{bug (1246597)}}).
  • -
  • В более ранних версиях спецификации, {{jsxref ( "SharedArrayBuffer")}} объектов необходимо явно переданы в ходе структурированного клонирования . В новой спецификации они не являются переводными объекты больше , и , следовательно , не должны быть в списке передачи. Новое поведение используется для представления консоли предупреждения только, но теперь будет выдавать ошибку ({{bug(1302037)}}).
  • -
  • {{jsxref ( "ArrayBuffer")}} длина теперь ограничена {{jsxref ( "Number.MAX_SAFE_INTEGER")}} (> = 2 ** 53) ({{bug (1255128)}}).
  • -
  • {{jsxref ( "Error.prototype")}} и другие нативный объект ошибки прототипы , как {{jsxref ( "RangeError.prototype")}} и т.д. теперь обычные объекты вместо соответствующих объектов Error. (В частности, Object.prototype.toString.call(Error.prototype)теперь "[object Object]"вместо "[object Error]".) ({{bug (1213341)}}).
  • -
+Firefox 53 был выпущен 19 апреля 2017. В этой статье перечислены основные изменения, которые полезны не только для веб-разработчиков, но и разработчиков Firefox и Gecko, а также разработчикам дополнений. -

Мероприятия

- -
    -
  • CSS Transitions: The {{event("transitionstart")}}, {{event ( "transitionrun")}} и {{event ( "transitioncancel")}} события были реализованы (см {{bug (1264125)}} и {{bug (1287983)}}).
  • -
  • {{Domxref ( "CompositionEvent.CompositionEvent", "CompositionEvent")}} Конструктор был реализован (см {{bug(1002256)}}).
  • -
  • {{Domxref ( "MouseEvent.x")}} и {{domxref ( "MouseEvent.y")}} псевдонимами {{domxref ( "MouseEvent.clientX")}} / {{domxref ( "MouseEvent.clientY" )}} были реализованы (см {{bug(424390)}}).
  • -
  • {{Event ( "auxclick")}} событие и соответствующий {{domxref ( "GlobalEventHandlers.onauxclick")}} был реализован обработчик (см {{bug (1304044)}}).
  • -
  • {{Event ( "transitioncancel")}} событие теперь уволен после перехода отменяется. См {{domxref ( "GlobalEventHandlers.ontransitioncancel")}} для получения более подробной информации и пример ({{bug ( "1264125")}}).
  • -
- -

DOM

+## Изменения для веб-разработчиков -
    -
  • {{Domxref ( "HTMLHyperLinkElementUtils.pathname", "путь")}} и {{domxref ( "HTMLHyperLinkElementUtils.search", "поиск")}} {{domxref ( "HTMLHyperLinkElementUtils")}} свойства ранее возвращено неправильные части в URL. Например, для URL из http://z.com/x?a=true&b=false, pathnameбудет возвращаться « /x?a=true&b=false"и searchвернётся„“, а не» /x«и» ?a=true&b=false"соответственно. Теперь это было исправлено ({{bug (1310483)}}).
  • -
  • {{Domxref ( "URLSearchParams.URLSearchParams", "URLSearchParams ()")}} Конструктор теперь принимает на {{domxref ( "USVString")}} или последовательность {{domxref ( "USVString")}} ев в качестве инициализации объект ({{bug( "1330678")}}).
  • -
  • {{Domxref ( "Selection.setBaseAndExtent ()")}} метод API выбора теперь реализован (см {{bug (1321623)}}).
  • -
  • "Fakepath" дополнение fileтипа {{HTMLElement ( "вход")}} valuesбыла реализована в Gecko, давая его соотношение с другими браузерами (см {{bug (1274596)}}).
  • -
  • {{Domxref ( "Node.getRootNode ()")}} была реализована, заменяя устаревшее {{domxref ( "Node.rootNode")}} Свойство ({{bug(1269155)}}).
  • -
  • Собственные свойства {{domxref ( "Plugin")}} и {{domxref ( "PluginArray")}} объектов больше не перечислимы ({{bug ( "1270366")}}).
  • -
  • Названные свойства {{domxref ( "MimeTypeArray")}} объекты больше не перечислимы ({{bug ( "1270364")}}).
  • -
  • API разрешений теперь имеет новое название разрешения доступного - persistent-storage- как он используется при создании {{domxref ( "Permissions.query ()")}} (см {{bug (1270038)}}). Это позволяет источнику использовать постоянную форму (т.е. постоянного хранения ) для его хранения, в соответствии с API хранения .
  • -
+### Инструменты разработчика -

Рабочие и работники сферы обслуживания

+- Избегание задержки в прокрутке на подсветке заданных АПЗ ({{bug (1312103)}}). +- Добавлена возможность [копировать полный путь CSS]() элемента ({{bug(1323700)}}). +- Devtools добавлена поддержка CSS-цвета-4 ({{bug (1310681)}}). +- Разметка вид: добавить визуальную подсказку между открывающим и закрывающим тегами сложенного узла ({{bug(1323193)}}). -
    -
  • Network Information API теперь доступен в рабочих (см {{bug (1323172)}}).
  • -
  • События сервера посланных теперь могут быть использованы из рабочих (см {{bug (1267903)}}).
  • -
  • {{Domxref ( "ExtendableEvent.waitUntil", "ExtendableEvent.waitUntil ()")}} Теперь можно вызвать асинхронно (см {{bug(1263304)}}).
  • -
+### CSS -

WebGL

+#### Новые возможности -
    -
  • {{Domxref ( "WEBGL_compressed_texture_astc")}} реализуется расширение WebGL ({{bug(1250077)}}).
  • -
  • {{Domxref ( "WEBGL_debug_renderer_info")}} расширение WebGL теперь включён по умолчанию ({{bug(1336645)}}).
  • -
+- В `mask-*`свойствах обыкновенного письма (см [CSS маски](/ru/docs/Web/CSS/CSS_Masks) ) все поддерживается и доступны по умолчанию (см {{bug (1251161)}}). +- Добавлено {{cssxref("caret-color")}} Свойство ({{bug (1063162)}}). +- Реализована {{cssxref("place-items")}} / {{cssxref("place-self")}} / {{cssxref("place-content")}} Shorthands ({{bug (1319958)}} ). +- Добавлено `flow-root`значение {{cssxref ( "display")}} свойства ({{bug(1322191)}}). +- {{cssxref("tab-size", "-moz-tab-size")}} теперь принимает {{cssxref("<length>")}} значения ({{bug (943918)}}), а теперь анимируемый ({{bug (1308110)}}). +- {{cssxref("mask-mode")}}: яркости не работает на градиентных масок ({{bug (1346265)}}). +- \[CSS-сетка] FR Единица в {{cssxref("grid-template-rows")}} не заполняя окно просмотра ({{bug(1346699)}}). +- гибкие элементы не сортируются в соответствии с «порядком», если они отделены друг от друга abspos собрата ({{bug (1345873)}}). -

Аудио, видео и медиа

+#### Другие изменения -

Генеральная

+- Включить маски longhands по элементам SVG ({{bug(1319667)}}). +- \[CSS-сетка] Исправлено: `align-self`/ `justify-self:stretch`/ `normal`не работает на ``элементах сетки ({{bug (1316051)}}). +- Установленный: `clip-path: circle()`с большой ссылкой окно и процент радиус не оказывают правильно ({{bug (1324713)}}. +- При применении {{cssxref ("text-transform")}} значения из `uppercase`древнегреческого текста, акцент на дизъюнктивной ETA (rj) больше не удаляется (см {{bug(1322989)}}). +- Наличие `contents`значения {{cssxref ("display")}} контролировали через `layout.css.display-contents.enabled`настройку. В Firefox 53 эта настройка была удалена полностью, так что значение всегда будет доступен и больше не могут быть отключены ({{bug (1295788)}}). -
    -
  • Начиная с Firefox 53 для Android , декодирование массовой информации обрабатывается вне процесса для повышения производительности на многоядерных системах ({{bug (1333323)}}).
  • -
+### JavaScript -

элементы медиа

+- ECMAScript 2015 семантика для {{jsxref ( "Function.name")}} свойства были реализованы. Это включает в себя выведенные имена на анонимные функции ( `var foo = function() {}`) ({{bug (883377)}}). +- ECMAScript 2015 семантика для закрытия итераторы были реализованы. Это влияет на [`for...of`](/en-US/docs/Web/JavaScript/Reference/Statements/for...of)цикл, например ({{bug(1147371)}}). +- [Шаблон Буквальное предложение Revision](https://tc39.github.io/proposal-template-literal-revision/) , что [снимает ограничения избежать последовательностей на помеченных литералах шаблона](/ru/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals_and_escape_sequences) было реализовано ({{bug(1317375)}}). +- Нестандартные [Струнные дженерики](/ru/docs/Web/JavaScript/Reference/Global_Objects/String#String_generic_methods) теперь представьте предупреждение устаревания в консоли. Не используйте их больше, они будут удалены в будущем! ({{bug (1319926)}}). +- Статическое `length`свойство {{jsxref ( "TypedArray")}} объектов было изменено с 3 до 0 в соответствии с ES2016 ({{bug (1317306)}}). +- {{jsxref ( "SharedArrayBuffer")}} теперь может быть использован в {{jsxref ( "DataView")}} объекты ({{bug (1246597)}}). +- В более ранних версиях спецификации, {{jsxref ( "SharedArrayBuffer")}} объектов необходимо явно переданы в ходе [структурированного клонирования](/ru/docs/Web/API/Web_Workers_API/Structured_clone_algorithm) . В новой спецификации они не являются [переводными объекты](/ru/docs/Web/API/Transferable) больше , и , следовательно , не должны быть в списке передачи. Новое поведение используется для представления консоли предупреждения только, но теперь будет выдавать ошибку ({{bug(1302037)}}). +- {{jsxref ( "ArrayBuffer")}} длина теперь ограничена {{jsxref ( "Number.MAX_SAFE_INTEGER")}} (> = 2 \*\* 53) ({{bug (1255128)}}). +- {{jsxref ( "Error.prototype")}} и другие нативный объект ошибки прототипы , как {{jsxref ( "RangeError.prototype")}} и т.д. теперь обычные объекты вместо соответствующих объектов Error. (В частности, `Object.prototype.toString.call(Error.prototype)`теперь `"[object Object]"`вместо `"[object Error]"`.) ({{bug (1213341)}}). -
    -
  • {{domxref ( "HTMLMediaElement.play ()")}} Метод, используемый для начала воспроизведения медиа в любом медиа-элемента, теперь возвращает {{jsxref ( "Promise")}}, которая выполняется, когда воспроизведение начинается и отклоняется если произошла ошибка ({{bug(1244768)}}).
  • -
+### Мероприятия -

Web Audio API

+- CSS Transitions: The {{event("transitionstart")}}, {{event ( "transitionrun")}} и {{event ( "transitioncancel")}} события были реализованы (см {{bug (1264125)}} и {{bug (1287983)}}). +- {{Domxref ( "CompositionEvent.CompositionEvent", "CompositionEvent")}} Конструктор был реализован (см {{bug(1002256)}}). +- {{Domxref ( "MouseEvent.x")}} и {{domxref ( "MouseEvent.y")}} псевдонимами {{domxref ( "MouseEvent.clientX")}} / {{domxref ( "MouseEvent.clientY" )}} были реализованы (см {{bug(424390)}}). +- {{Event ( "auxclick")}} событие и соответствующий {{domxref ( "GlobalEventHandlers.onauxclick")}} был реализован обработчик (см {{bug (1304044)}}). +- {{Event ( "transitioncancel")}} событие теперь уволен после [перехода](/ru/docs/Web/CSS/CSS_Transitions) отменяется. См {{domxref ( "GlobalEventHandlers.ontransitioncancel")}} для получения более подробной информации и пример ({{bug ( "1264125")}}). -
    -
  • был добавлен {{domxref ( "AudioScheduledSourceNode")}} интерфейс и {{domxref ( "AudioBufferSourceNode")}}, {{domxref ( "ConstantSourceNode")}} и {{domxref ( "OscillatorNode")}} интерфейсы теперь основаны на нем ({{bug( "1324568")}}).
  • -
+### DOM -

WebRTC

+- {{Domxref ( "HTMLHyperLinkElementUtils.pathname", "путь")}} и {{domxref ( "HTMLHyperLinkElementUtils.search", "поиск")}} {{domxref ( "HTMLHyperLinkElementUtils")}} свойства ранее возвращено неправильные части в URL. Например, для URL из `http://z.com/x?a=true&b=false`, `pathname`будет возвращаться « `/x?a=true&b=false"`и `search`вернётся„“, а не» `/x`«и» `?a=true&b=false"`соответственно. Теперь это было исправлено ({{bug (1310483)}}). +- {{Domxref ( "URLSearchParams.URLSearchParams", "URLSearchParams ()")}} Конструктор теперь принимает на {{domxref ( "USVString")}} или последовательность {{domxref ( "USVString")}} ев в качестве инициализации объект ({{bug( "1330678")}}). +- {{Domxref ( "Selection.setBaseAndExtent ()")}} метод [API выбора](/ru/docs/Web/API/Selection_API) теперь реализован (см {{bug (1321623)}}). +- ["Fakepath"](https://html.spec.whatwg.org/multipage/forms.html#fakepath-srsly) дополнение `file`типа {{HTMLElement ( "вход")}} `values`была реализована в Gecko, давая его соотношение с другими браузерами (см {{bug (1274596)}}). +- {{Domxref ( "Node.getRootNode ()")}} была реализована, заменяя устаревшее {{domxref ( "Node.rootNode")}} Свойство ({{bug(1269155)}}). +- Собственные свойства {{domxref ( "Plugin")}} и {{domxref ( "PluginArray")}} объектов больше не перечислимы ({{bug ( "1270366")}}). +- Названные свойства {{domxref ( "MimeTypeArray")}} объекты больше не перечислимы ({{bug ( "1270364")}}). +- [API разрешений](/ru/docs/Web/API/Permissions_API) теперь имеет новое название разрешения доступного - `persistent-storage`- как он используется при создании {{domxref ( "Permissions.query ()")}} (см {{bug (1270038)}}). Это позволяет источнику использовать постоянную форму (т.е. [постоянного хранения](https://storage.spec.whatwg.org/#persistence) ) для его хранения, в соответствии с [API хранения](https://storage.spec.whatwg.org/) . -
    -
  • В {{domxref ( "RTCPeerConnection")}} методы {{domxref ( "RTCPeerConnection.createOffer", "createOffer ()")}} и {{domxref ( "RTCPeerConnection.createAnswer", "createAnswer ()")}} Теперь возвращает {{jsxref ( "промис")}} , который возвращает объект , соответствующий словарь {{domxref ( "RTCSessionDescriptionInit")}} вместо возврата {{domxref ( "RTCSessionDescription")}} непосредственно. Существующий код будет продолжать работать, но новый код можно записать более просто .
  • -
  • Аналогичным образом , {{domxref ( "RTCPeerConnection")}} методы {{domxref ( "RTCPeerConnection.setLocalDescription", "setLocalDescription ()")}} и {{domxref ( "RTCPeerConnection.setRemoteDescription", "setRemoteDescription ()")}} теперь принимают в качестве входных данных объекта , соответствующего словарю {{domxref ( "RTCSessionDescriptionInit")}}. Существующий код продолжает работать, но может быть упрощена .
  • -
  • {{Domxref ( "RTCPeerConnection.addIceCandidate ()")}} теперь принимает в качестве входных данных объекта, соответствующую {{domxref ( "RTCIceCandidateInit")}} словарь. Это совместимо с существующим кодом, но позволяет новый код, который будет написано чуть более просто при использовании в сочетании с изменениями перечисленных выше ({{bug (1263312)}}).
  • -
  • {{glossary( "DTMF")}} поддержка теперь включена по умолчанию , используя {{domxref ( "RTCDTMFSender")}}. См Использование DTMF с WebRTC для получения дополнительной информации о том , как это работает.
  • -
+### Рабочие и работники сферы обслуживания -

HTTP / Networking

+- [Network Information API](/ru/docs/Web/API/Network_Information_API) теперь доступен в рабочих (см {{bug (1323172)}}). +- [События сервера посланных](/ru/docs/Web/API/Server-sent_events) теперь могут быть использованы из рабочих (см {{bug (1267903)}}). +- {{Domxref ( "ExtendableEvent.waitUntil", "ExtendableEvent.waitUntil ()")}} Теперь можно вызвать асинхронно (см {{bug(1263304)}}). -
    -
  • Gecko теперь имеет прив доступный в , about:configчтобы позволить пользователям устанавливать их по умолчанию {{HTTPHeader ( "Referrer-политики")}} - ({{bug ( "1304623")}}). Возможные значения: network.http.referer.userControlPolicy +### WebGL -
      -
    • 0 - no-referrer
    • -
    • 1 - same-origin
    • -
    • 2 - strict-origin-when-cross-origin
    • -
    • 3 - no-referrer-when-downgrade(по умолчанию)
    • -
    -
  • -
  • Поддержка следующего протокола переговоров (NPN) была удалена в пользу протокола прикладного уровня переговоров (ALPN) - см {{bug ( "1248198")}}.
  • -
  • {{HTTPHeader ( "Large-Allocation")}} заголовок HTTP теперь доступен по умолчанию, и больше не скрывается за привилегированную ({{bug(1331083)}}).
  • -
+- {{Domxref ( "WEBGL_compressed_texture_astc")}} реализуется расширение WebGL ({{bug(1250077)}}). +- {{Domxref ( "WEBGL_debug_renderer_info")}} расширение WebGL теперь включён по умолчанию ({{bug(1336645)}}). -

SVG

+### Аудио, видео и медиа -
    -
  • Частично реализована {{domxref ( "SVGGeometryElement")}} интерфейс ({{bug (1239100)}}).
  • -
+#### Генеральная -

Переезды с веб-платформы

+- Начиная с **Firefox 53 для Android** , декодирование массовой информации обрабатывается вне процесса для повышения производительности на многоядерных системах ({{bug (1333323)}}). -

HTML / XML

+#### элементы медиа -
    -
  • dom.details_element.enabledПрив - которая контролируется включение / отключение {{HTMLElement ( "детали")}} и {{HTMLElement ( "Резюме")}} опорный элемент в Firefox - теперь был удалён из about:config. Эти элементы (которые впервые были включены по умолчанию в Firefox 49) больше не могут быть отключены. См {{bug (1271549)}}.
  • -
+- {{domxref ( "HTMLMediaElement.play ()")}} Метод, используемый для начала воспроизведения медиа в любом медиа-элемента, теперь возвращает {{jsxref ( "Promise")}}, которая выполняется, когда воспроизведение начинается и отклоняется если произошла ошибка ({{bug(1244768)}}). -

CSS

+#### Web Audio API -
    -
  • Удалены -moz приставкой вариант {{cssxref ( ": реж", ": каталог ()")}} псевдокласс ({{bug (1270406)}}).
  • -
  • -mozПриставкой версия {{cssxref ( "текст-ALIGN-последний")}} был удалён ({{bug (1276808)}}).
  • -
  • Удалены -moz приставкой вариант {{cssxref ( "известково ()")}} Метод ({{bug (1331296)}}).
  • -
+- Был добавлен {{domxref ( "AudioScheduledSourceNode")}} интерфейс и {{domxref ( "AudioBufferSourceNode")}}, {{domxref ( "ConstantSourceNode")}} и {{domxref ( "OscillatorNode")}} интерфейсы теперь основаны на нем ({{bug( "1324568")}}). -

JavaScript

+#### WebRTC -
    -
  • Нестандартный {{jsxref ( "ArrayBuffer.slice ()")}} Метод был удалён (но стандартизированная версия {{jsxref ( "ArrayBuffer.prototype.slice ()")}} сохраняется, см {{bug (1313112)}}).
  • -
+- В {{domxref ( "RTCPeerConnection")}} методы {{domxref ( "RTCPeerConnection.createOffer", "createOffer ()")}} и {{domxref ( "RTCPeerConnection.createAnswer", "createAnswer ()")}} Теперь возвращает {{jsxref ( "промис")}} , который возвращает объект , соответствующий словарь {{domxref ( "RTCSessionDescriptionInit")}} вместо возврата {{domxref ( "RTCSessionDescription")}} непосредственно. Существующий код будет продолжать работать, но [новый код можно записать более просто](/ru/docs/Web/API/RTCPeerConnection/setLocalDescription#About_the_session_description_parameter) . +- Аналогичным образом , {{domxref ( "RTCPeerConnection")}} методы {{domxref ( "RTCPeerConnection.setLocalDescription", "setLocalDescription ()")}} и {{domxref ( "RTCPeerConnection.setRemoteDescription", "setRemoteDescription ()")}} теперь принимают в качестве входных данных объекта , соответствующего словарю {{domxref ( "RTCSessionDescriptionInit")}}. Существующий код продолжает работать, но [может быть упрощена](/ru/docs/Web/API/RTCPeerConnection/setLocalDescription#About_the_session_description_parameter) . +- {{Domxref ( "RTCPeerConnection.addIceCandidate ()")}} теперь принимает в качестве входных данных объекта, соответствующую {{domxref ( "RTCIceCandidateInit")}} словарь. Это совместимо с существующим кодом, но позволяет новый код, который будет написано чуть более просто при использовании в сочетании с изменениями перечисленных выше ({{bug (1263312)}}). +- {{glossary( "DTMF")}} поддержка теперь включена по умолчанию , используя {{domxref ( "RTCDTMFSender")}}. См [Использование DTMF с WebRTC](/ru/docs/Web/API/WebRTC_API/Using_DTMF) для получения дополнительной информации о том , как это работает. -

API-интерфейсы

+### HTTP / Networking -
    -
  • Информация API Wi - Fi , спикер API - менеджер, и Привязывание API и настройки API , были удалены из платформы (см {{bug (1313788)}}, {{bug (1317853)}}, {{bug (1313789)}} и {{bug (1313155)}} соответственно).
  • -
+- Gecko теперь имеет прив доступный в , `about:config`чтобы позволить пользователям устанавливать их по умолчанию {{HTTPHeader ( "Referrer-политики")}} - ({{bug ( "1304623")}}). Возможные значения: `network.http.referer.userControlPolicy` -

Изменения для дополнения и разработчиков Mozilla

+ - 0 - `no-referrer` + - 1 - `same-origin` + - 2 - `strict-origin-when-cross-origin` + - 3 - `no-referrer-when-downgrade`(по умолчанию) -

WebExtensions

+- Поддержка следующего протокола переговоров (NPN) была удалена в пользу [протокола прикладного уровня переговоров](https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation) (ALPN) - см {{bug ( "1248198")}}. +- {{HTTPHeader ( "Large-Allocation")}} заголовок HTTP теперь доступен по умолчанию, и больше не скрывается за привилегированную ({{bug(1331083)}}). -

Новые API:

+### SVG - +- Частично реализована {{domxref ( "SVGGeometryElement")}} интерфейс ({{bug (1239100)}}). -

Усовершенствованные API:

+## Переезды с веб-платформы - +### HTML / XML -

модули JavaScript-код

+- `dom.details_element.enabled`Прив - которая контролируется включение / отключение {{HTMLElement ( "детали")}} и {{HTMLElement ( "Резюме")}} опорный элемент в Firefox - теперь был удалён из `about:config`. Эти элементы (которые впервые были включены по умолчанию в Firefox 49) больше не могут быть отключены. См {{bug (1271549)}}. -
    -
  • Асинхронные интерфейсы AddonManager теперь поддерживают {{jsxref ( "Promise", "Промис")}}, а также колбэки ({{bug (987512)}}.
  • -
+### CSS -

Старые версии

+- Удалены {{property_prefix ( "- Мос")}} приставкой вариант {{cssxref ( ": реж", ": каталог ()")}} псевдокласс ({{bug (1270406)}}). +- `-moz`Приставкой версия {{cssxref ( "текст-ALIGN-последний")}} был удалён ({{bug (1276808)}}). +- Удалены {{property_prefix ( "- Мос")}} приставкой вариант {{cssxref ( "известково ()")}} Метод ({{bug (1331296)}}). -

{{Firefox_for_developers (52)}}

+### JavaScript + +- Нестандартный {{jsxref ( "ArrayBuffer.slice ()")}} Метод был удалён (но стандартизированная версия {{jsxref ( "ArrayBuffer.prototype.slice ()")}} сохраняется, см {{bug (1313112)}}). + +### API-интерфейсы + +- [Информация API Wi - Fi](/ru/docs/Archive/B2G_OS/API/WiFi_Information_API) , спикер API - менеджер, и Привязывание API и [настройки API](/ru/docs/Archive/B2G_OS/API/Settings_API) , были удалены из платформы (см {{bug (1313788)}}, {{bug (1317853)}}, {{bug (1313789)}} и {{bug (1313155)}} соответственно). + +## Изменения для дополнения и разработчиков Mozilla + +### WebExtensions + +Новые API: + +- [`browsingData`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browsingData) +- [`identity`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/identity) +- [`contextualIdentities`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities) + +Усовершенствованные API: + +- [`storage.sync`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/sync) +- `page_action`, `browser_action`, `password`, `tab` [Типы контекстов](/en-US/Add-ons/WebExtensions/API/contextMenus/ContextType) в[`contextMenus`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus) +- [`webRequest.onBeforeRequest`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest) теперь поддерживает `requestBody` +- [`tabs.insertCSS`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS)теперь поддерживает `cssOrigin`, что позволяет вставлять таблицы стилей пользователя. + +### модули JavaScript-код + +- Асинхронные [интерфейсы AddonManager](../../../Add-ons/Add-on_Manager/AddonManager) теперь поддерживают {{jsxref ( "Promise", "Промис")}}, а также колбэки ({{bug (987512)}}. + +## Старые версии + +{{Firefox_for_developers (52)}} diff --git a/files/ru/mozilla/firefox/releases/62/index.md b/files/ru/mozilla/firefox/releases/62/index.md index bed00b8a8261d8..31f82a5203233c 100644 --- a/files/ru/mozilla/firefox/releases/62/index.md +++ b/files/ru/mozilla/firefox/releases/62/index.md @@ -3,211 +3,181 @@ title: Firefox 62 для разработчиков slug: Mozilla/Firefox/Releases/62 translation_of: Mozilla/Firefox/Releases/62 --- -
{{FirefoxSidebar}}
+{{FirefoxSidebar}} -

В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 62 был выпущен 5 сентября 2018 года.

+В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 62 был выпущен 5 сентября 2018 года. -

Изменения для веб-разработчиков

+## Изменения для веб-разработчиков -

Инструменты разработчика

+### Инструменты разработчика -
    -
  • Включён по умолчанию редактор Shape Path — подробности в статье Edit Shape Paths in CSS.
  • -
  • Появилась возможность вынести просмотр CSS-правил в отдельную от других вкладок панель. См. Page inspector 3-pane mode для получения подробных сведений.
  • -
  • Инспектор CSS-сеток обзавёлся новыми возможностями и новой документацией — см. CSS Grid Inspector: Examine grid layouts.
  • -
  • Инструменты разработчика теперь можно разместить не только снизу и справа, но и слева (а также вынести в отдельное окно) ({{bug(1192642)}}).
  • -
  • На панель консоли разделения добавлена кнопка закрытия.
  • -
  • При включённой настройке «Выбрать iframe в качестве текущего целевого документа» соответствующий значок будет появляться на панели инструментов при открытии настроек, даже если текущая страница не содержит фреймов ({{bug(1456069)}}).
  • -
  • Вкладка «Куки» в сетевом мониторе отображает атрибут samesite ({{bug(1452715)}}).
  • -
  • Режим адаптивного дизайна работает и во вкладках, размещённых в контейнерах ({{bug(1306975)}}).
  • -
  • При возникновении и выводе в консоль ошибки {{Glossary("CORS")}} Firefox предоставит ссылку на соответствующую страницу с описанием ошибок CORS ({{bug(1475391)}}).
  • -
  • Появилась возможность создать снимок текущей страницы (без необходимости указывать имя файла) из консоли браузера ({{bug(1464461)}}). Используется команда
    -
    - :screenshot <filename.png> --fullpage
    -
    - где <filename.png> — желаемое имя файла. Файл будет сохранён в каталог загрузок. Параметр --fullpage не является обязательным и служит для создания снимка всей страницы. В этом случае к имени файла будет добавлено -fullpage. Чтобы увидеть список всех доступных параметров, введите :screenshot --help.
  • -
+- Включён по умолчанию редактор Shape Path — подробности в статье [Edit Shape Paths in CSS](/ru/docs/Tools/Page_Inspector/How_to/Edit_CSS_shapes). +- Появилась возможность вынести просмотр CSS-правил в отдельную от других вкладок панель. См. [Page inspector 3-pane mode](/ru/docs/Tools/Page_Inspector/3-pane_mode) для получения подробных сведений. +- Инспектор CSS-сеток обзавёлся новыми возможностями и новой документацией — см. [CSS Grid Inspector: Examine grid layouts](/ru/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts). +- Инструменты разработчика теперь можно разместить не только снизу и справа, но и слева (а также вынести в отдельное окно) ({{bug(1192642)}}). +- На панель [консоли разделения](/ru/docs/Tools/Web_Console/Split_console) добавлена кнопка закрытия. +- При включённой настройке «Выбрать iframe в качестве текущего целевого документа» соответствующий значок будет появляться на панели инструментов при открытии настроек, даже если текущая страница не содержит фреймов ({{bug(1456069)}}). +- Вкладка «[Куки]()» в [сетевом мониторе](/ru/docs/Tools/Network_Monitor) отображает атрибут `samesite` ({{bug(1452715)}}). +- [Режим адаптивного дизайна](/ru/docs/Tools/Responsive_Design_View) работает и во вкладках, размещённых в контейнерах ({{bug(1306975)}}). +- При возникновении и выводе в консоль ошибки {{Glossary("CORS")}} Firefox предоставит ссылку на соответствующую [страницу с описанием ошибок CORS](/ru/docs/Web/HTTP/CORS/Errors) ({{bug(1475391)}}). +- Появилась возможность создать снимок текущей страницы (без необходимости указывать имя файла) из консоли браузера ({{bug(1464461)}}). Используется команда -

Удалено

+ `:screenshot --fullpage` -
    -
  • Удалена панель разработчика/GCLI (которая открывалась сочетанием клавиш Shift + F2) ({{bug(1461970)}}). У интерфейса панели и библиотеки, отвечающей за работу GCLI, уже продолжительное время отсутствует мейнтейнер, некоторые функции не работают (с того времени, как появился многопроцессный режим), а сама GCLI несовместима с unsafeSetInnerHTML. Как следствие, по данным телеметрии панель очень редко используется, к тому же есть альтернативные способы вызова самых популярных команд.
  • -
+ где `` — желаемое имя файла. Файл будет сохранён в каталог загрузок. Параметр `--fullpage` не является обязательным и служит для создания снимка всей страницы. В этом случае к имени файла будет добавлено `-fullpage`. Чтобы увидеть список всех доступных параметров, введите `:screenshot --help`. -

HTML

+#### Удалено -

Без изменений.

+- Удалена [панель разработчика/GCLI](/ru/docs/Tools/GCLI) (которая открывалась сочетанием клавиш -

CSS

+ Shift -
    -
  • Убран префикс у псевдоэлемента :-moz-selection, отныне он называется {{cssxref("::selection")}} ({{bug(509958)}}).
  • -
  • {{cssxref("<resolution>")}} поддерживает x в качестве единицы измерения ({{bug(1460655)}}).
  • -
  • Включена по умолчанию поддержка {{cssxref("shape-margin")}}, {{cssxref("shape-outside")}} и {{cssxref("shape-image-threshold")}} ({{bug(1457297)}}).
  • -
+ \+ -

Удалено

+ F2 -
    -
  • Из документов, отличных от XUL, удалены все XUL-значения display за исключением -moz-box и -moz-inline-box ({{bug(1288572)}}).
  • -
+ ) ({{bug(1461970)}}). У интерфейса панели и библиотеки, отвечающей за работу GCLI, уже продолжительное время отсутствует мейнтейнер, некоторые функции не работают (с того времени, как появился многопроцессный режим), а сама GCLI несовместима с `unsafeSetInnerHTML`. Как следствие, по данным телеметрии панель очень редко используется, к тому же есть альтернативные способы вызова самых популярных команд. -

SVG

+### HTML -

Без изменений.

+_Без изменений._ -

JavaScript

+### CSS -
    -
  • Реализована поддержка конструктора {{jsxref("WebAssembly.Global()")}} и глобальных переменных в WebAssembly ({{bug(1464656)}}).
  • -
  • Включена по умолчанию поддержка методов {{jsxref("Array.prototype.flat()")}} и {{jsxref("Array.prototype.flatMap()")}} ({{bug(1435813)}}).
  • -
  • Реализовано свойство import.meta, отображающее контекстно-специфичных метаданные для модуля JavaScript ({{bug(1427610)}}).
  • -
  • Строковые литералы могут напрямую содержать символы U+2028 LINE SEPARATOR и U+2029 PARAGRAPH SEPARATOR. Как следствие, синтаксис {{jsxref("JSON")}} отныне является подмножеством литерального синтаксиса JavaScript (см. {{bug(1435828)}} и предложенный TC39 json-superset).
  • -
  • Для индексов, выходящих за границы типизированных массивов, {{jsxref("Reflect.defineProperty()")}} и {{jsxref("Reflect.set()")}} будут возвращать false вместо true ({{bug(1308735)}}).
  • -
+- Убран префикс у псевдоэлемента `:-moz-selection`, отныне он называется {{cssxref("::selection")}} ({{bug(509958)}}). +- {{cssxref("<resolution>")}} поддерживает `x` в качестве единицы измерения ({{bug(1460655)}}). +- Включена по умолчанию поддержка {{cssxref("shape-margin")}}, {{cssxref("shape-outside")}} и {{cssxref("shape-image-threshold")}} ({{bug(1457297)}}). -

Удалено

+#### Удалено -
    -
  • Конструкторы DOMPoint и DOMPointReadOnly больше не поддерживают входной параметр типа DOMPointInit; значения свойств требуется указывать с помощью параметров x, y, z и w ({{bug(1186265)}}).
  • -
  • Метод {{domxref("URL.createObjectURL()")}} больше не поддерживает создание URL-адресов объектов для представления {{domxref("MediaStream")}}. Эта возможность уже не актуальна, поскольку можно напрямую задать {{domxref("HTMLMediaElement.srcObject")}} в MediaStream ({{bug(1454889)}}).
  • -
+- Из документов, отличных от XUL, удалены все [XUL-значения `display`](/ru/docs/Web/CSS/display#XUL_values) за исключением `-moz-box` и `-moz-inline-box` ({{bug(1288572)}}). -

API

+### SVG -

Новые API

+_Без изменений._ -
    -
  • В версии для Android включён по умолчанию {{domxref("Web_Speech_API", "API Speech Synthesis (Text-to-Speech)", "", "1")}} ({{bug(1463496)}}).
  • -
+### JavaScript -

DOM

+- Реализована поддержка конструктора {{jsxref("WebAssembly.Global()")}} и глобальных переменных в WebAssembly ({{bug(1464656)}}). +- Включена по умолчанию поддержка методов {{jsxref("Array.prototype.flat()")}} и {{jsxref("Array.prototype.flatMap()")}} ({{bug(1435813)}}). +- Реализовано свойство [`import.meta`](/ru/docs/Web/JavaScript/Reference/Statements/import.meta), отображающее контекстно-специфичных метаданные для модуля JavaScript ({{bug(1427610)}}). +- [Строковые литералы]() могут напрямую содержать символы U+2028 LINE SEPARATOR и U+2029 PARAGRAPH SEPARATOR. Как следствие, синтаксис {{jsxref("JSON")}} отныне является подмножеством литерального синтаксиса JavaScript (см. {{bug(1435828)}} и предложенный TC39 [json-superset](https://github.com/tc39/proposal-json-superset)). +- Для индексов, выходящих за границы [типизированных массивов](/ru/docs/Web/JavaScript/Typed_arrays), {{jsxref("Reflect.defineProperty()")}} и {{jsxref("Reflect.set()")}} будут возвращать `false` вместо `true` ({{bug(1308735)}}). -
    -
  • Интерфейс {{domxref("DOMPointReadOnly")}} поддерживает статическую функцию {{domxref("DOMPointReadOnly.fromPoint()")}}, создающую новый точечный объект из совместимого с {{domxref("DOMPointInit")}} словаря, который содержит любой объект {{domxref("DOMPoint")}}. Функция также доступна на {{domxref("DOMPoint")}} ({{bug(1186265)}}).
  • -
  • В целях совместимости реализована поддержка свойства {{domxref("Event.srcElement")}}. Оно является ссылкой на {{domxref("Event.target")}} ({{bug(453968)}}).
  • -
  • {{domxref("Navigator.registerProtocolHandler()")}} может быть вызван лишь в безопасном контексте ({{bug(1460506)}}).
  • -
  • Отключена по умолчанию поддержка метода {{domxref("Navigator.registerContentHandler()")}}. Он будет удалён в будущем, поскольку уже некоторое время является устаревшим ({{bug(1460481)}}).
  • -
  • Реализован конструктор {{domxref("DataTransfer.DataTransfer", "DataTransfer()")}} ({{bug(1351193)}}).
  • -
  • {{domxref("Document.domain")}} больше не может вернуть null ({{bug(819475)}}). Если не удалось идентифицировать домен, domain вернёт пустую строку вместо null.
  • -
  • Реализован метод {{domxref("Console.timeLog()")}}, отображающий текущее значение таймера консоли без остановки самого таймера ({{bug(1458466)}}).
  • -
  • Реализован метод {{domxref("Console.countReset()")}}, сбрасывающий значение счётчика консоли ({{bug(1459279)}}).
  • -
+#### Удалено -

События DOM

+- Конструкторы `DOMPoint` и `DOMPointReadOnly` больше не поддерживают входной параметр типа `DOMPointInit`; значения свойств требуется указывать с помощью параметров `x`, `y`, `z` и `w` ({{bug(1186265)}}). +- Метод {{domxref("URL.createObjectURL()")}} больше не поддерживает создание URL-адресов объектов для представления {{domxref("MediaStream")}}. Эта возможность уже не актуальна, поскольку можно напрямую задать {{domxref("HTMLMediaElement.srcObject")}} в `MediaStream` ({{bug(1454889)}}). -

Без изменений.

+### API -

Сервис-воркеры

+#### Новые API -

Без изменений.

+- В версии для Android включён по умолчанию {{domxref("Web_Speech_API", "API Speech Synthesis (Text-to-Speech)", "", "1")}} ({{bug(1463496)}}). -

Медиа, Web Audio и WebRTC

+#### DOM -
    -
  • Настройка media.autoplay.enabled распространяется не только на видео-, но и на аудиосодержимое ({{bug(1413098)}}).
  • -
  • Интерфейс {{domxref("ChannelSplitterNode")}} приведён в соответствие спецификации: по умолчанию у него 6 каналов, channelInterpretation имеет значение "discrete", а channelCountMode"explicit" ({{bug(1456265)}}).
  • -
+- Интерфейс {{domxref("DOMPointReadOnly")}} поддерживает статическую функцию {{domxref("DOMPointReadOnly.fromPoint()")}}, создающую новый точечный объект из совместимого с {{domxref("DOMPointInit")}} словаря, который содержит любой объект {{domxref("DOMPoint")}}. Функция также доступна на {{domxref("DOMPoint")}} ({{bug(1186265)}}). +- В целях совместимости реализована поддержка свойства {{domxref("Event.srcElement")}}. Оно является ссылкой на {{domxref("Event.target")}} ({{bug(453968)}}). +- {{domxref("Navigator.registerProtocolHandler()")}} может быть вызван лишь в безопасном контексте ({{bug(1460506)}}). +- Отключена по умолчанию поддержка метода {{domxref("Navigator.registerContentHandler()")}}. Он будет удалён в будущем, поскольку уже некоторое время является устаревшим ({{bug(1460481)}}). +- Реализован конструктор {{domxref("DataTransfer.DataTransfer", "DataTransfer()")}} ({{bug(1351193)}}). +- {{domxref("Document.domain")}} больше не может вернуть `null` ({{bug(819475)}}). Если не удалось идентифицировать домен, `domain` вернёт пустую строку вместо `null`. +- Реализован метод {{domxref("Console.timeLog()")}}, отображающий текущее значение таймера консоли без остановки самого таймера ({{bug(1458466)}}). +- Реализован метод {{domxref("Console.countReset()")}}, сбрасывающий значение счётчика консоли ({{bug(1459279)}}). -

Удалено

+#### События DOM -
    -
  • Поддержка событий {{event("userproximity")}}, {{event("deviceproximity")}} (см. {{domxref("UserProximityEvent")}} и {{domxref("DeviceProximityEvent")}}) отключена по умолчанию и управляется настройкой device.sensors.proximity.enabled ({{bug(1462308)}}).
  • -
  • Поддержка события {{event("devicelight")}} (см. также {{domxref("DeviceLightEvent")}}) отключена по умолчанию и управляется настройкой device.sensors.ambientLight.enabled ({{bug(1462308)}}).
  • -
  • События мутации {{event("DOMSubtreeModified")}} и {{event("DOMAttrModified")}} больше не выбрасываются, когда атрибут {{htmlattrxref("style")}} изменяется с помощью CSSOM ({{bug(1460295)}}).
  • -
  • Прекращена поддержка {{domxref("CSSStyleDeclaration.getPropertyCSSValue()")}} ({{bug(1408301)}}).
  • -
  • Прекращена поддержка {{domxref("CSSValue")}}, {{domxref("CSSPrimitiveValue")}} и {{domxref("CSSValueList")}} ({{bug(1459871)}}).
  • -
  • {{domxref("window.getComputedStyle()")}} больше не возвращает null, если вызван на Window, у которого нет представления ({{bug(1467722)}}).
  • -
+_Без изменений._ -
    -
+#### Сервис-воркеры -
    -
+_Без изменений._ -

HTTP

+#### Медиа, Web Audio и WebRTC -

Удалено

+- Настройка `media.autoplay.enabled` распространяется не только на видео-, но и на аудиосодержимое ({{bug(1413098)}}). +- Интерфейс {{domxref("ChannelSplitterNode")}} приведён в соответствие спецификации: по умолчанию у него 6 каналов, `channelInterpretation` имеет значение `"discrete"`, а `channelCountMode` — `"explicit"` ({{bug(1456265)}}). -
    -
  • Удалена поддержка устаревшей CSP-директивы {{CSP("referrer")}}. Вместо неё следует использовать заголовок {{HTTPHeader("Referrer-Policy")}} ({{bug(1302449)}}).
  • -
+#### Удалено -

Безопасность

+- Поддержка событий {{event("userproximity")}}, {{event("deviceproximity")}} (см. {{domxref("UserProximityEvent")}} и {{domxref("DeviceProximityEvent")}}) отключена по умолчанию и управляется настройкой `device.sensors.proximity.enabled` ({{bug(1462308)}}). +- Поддержка события {{event("devicelight")}} (см. также {{domxref("DeviceLightEvent")}}) отключена по умолчанию и управляется настройкой `device.sensors.ambientLight.enabled` ({{bug(1462308)}}). +- [События мутации](/ru/docs/Web/Guide/Events/Mutation_events) {{event("DOMSubtreeModified")}} и {{event("DOMAttrModified")}} больше не выбрасываются, когда атрибут {{htmlattrxref("style")}} изменяется с помощью CSSOM ({{bug(1460295)}}). +- Прекращена поддержка {{domxref("CSSStyleDeclaration.getPropertyCSSValue()")}} ({{bug(1408301)}}). +- Прекращена поддержка {{domxref("CSSValue")}}, {{domxref("CSSPrimitiveValue")}} и {{domxref("CSSValueList")}} ({{bug(1459871)}}). +- {{domxref("window.getComputedStyle()")}} больше не возвращает `null`, если вызван на `Window`, у которого нет представления ({{bug(1467722)}}). -

Без изменений.

+ -

Плагины

+ -

Без изменений.

+### HTTP -

WebDriver (Marionette)

+#### Удалено -

Новые возможности

+- Удалена поддержка устаревшей CSP-директивы {{CSP("referrer")}}. Вместо неё следует использовать заголовок {{HTTPHeader("Referrer-Policy")}} ({{bug(1302449)}}). -
    -
  • Команда WebDriver:ElementSendKeys приносит в WebDriver возможность загружать файлы ({{bug(1448792)}}).
  • -
  • Запросы к пользователю, вызванные событиями beforeunload, автоматически отклоняются для команд WebDriver:Get, WebDriver:Back, WebDriver:Forward, WebDriver:Refresh и WebDriver:Close ({{bug(1434872)}}).
  • -
  • WebDriver:PerformActions при нажатии Ctrl + Click синтезирует событие {{event("contextmenu")}} ({{bug(1421323)}}).
  • -
+### Безопасность -

Изменения API

+_Без изменений._ -
    -
  • Удалены устаревшие конечные точки, включая getWindowPosition, setWindowPosition, getWindowSize и setWindowSize ({{bug(1348145)}}).
  • -
  • Команды WebDriver, возвращающие успех с данными null, отныне возвращают пустой словарь ({{bug(1461463)}}).
  • -
+### Плагины -

Исправленные ошибки

+_Без изменений._ -
    -
  • WebDriver:ExecuteScript вызывал ошибку циклической ссылки для коллекций WebElement ({{bug(1447977)}}).
  • -
  • -

    Отправка примитива действия pointerMove или pause могла привести к зависанию, таким образом, команда никогда не отправляла ответ ({{bug(1467743)}}, {{bug(1447449)}}).

    -
  • -
+### WebDriver (Marionette) -

Прочее

+#### Новые возможности -

Без изменений.

+- Команда `WebDriver:ElementSendKeys` приносит в WebDriver возможность загружать файлы ({{bug(1448792)}}). +- Запросы к пользователю, вызванные событиями `beforeunload`, автоматически отклоняются для команд `WebDriver:Get`, `WebDriver:Back`, `WebDriver:Forward`, `WebDriver:Refresh` и `WebDriver:Close` ({{bug(1434872)}}). +- `WebDriver:PerformActions` при нажатии -

Изменения для разработчиков дополнений

+ Ctrl -

Изменения API

+ \+ `Click` синтезирует событие {{event("contextmenu")}} ({{bug(1421323)}}). -
    -
  • Добавлен API {{WebExtAPIRef("webRequest.getSecurityInfo()")}}, позволяющий получить подробные сведения о TLS-соединениях ({{bug(1322748)}}).
  • -
  • Добавлен {{WebExtAPIRef("browserSettings.newTabPosition")}}, позволяющий настроить положение новой вкладки ({{bug(1344749)}}).
  • -
  • windowTypes объявлен устаревшим в {{WebExtAPIRef("windows.get()")}}, {{WebExtAPIRef("windows.getCurrent()")}} и {{WebExtAPIRef("windows.getLastFocused()")}} ({{bug(1419132)}}).
  • -
  • Появилась возможность изменять каждое окно браузера в отдельности ({{bug(1419893)}}).
  • -
+#### Изменения API -

Изменения манифеста

+- Удалены устаревшие конечные точки, включая `getWindowPosition`, `setWindowPosition`, `getWindowSize и` `setWindowSize` ({{bug(1348145)}}). +- Команды WebDriver, возвращающие успех с данными `null`, отныне возвращают пустой словарь ({{bug(1461463)}}). -
    -
  • Новое свойство open_at_install ключа sidebar_action манифеста позволяет дополнениям при установке автоматически открывать или не открывать боковые панели ({{bug(1460910)}}).
  • -
  • Изменено свойство browser_style различных ключей манифеста: - -
  • -
+#### Исправленные ошибки -

Изменения темы

+- `WebDriver:ExecuteScript` вызывал ошибку циклической ссылки для коллекций [WebElement](/ru/docs/Web/WebDriver/WebElement) ({{bug(1447977)}}). +- Отправка примитива действия `pointerMove` или `pause` могла привести к зависанию, таким образом, команда никогда не отправляла ответ ({{bug(1467743)}}, {{bug(1447449)}}). -
    -
  • Новое свойство tab_background_separator ключа theme манифеста позволяет дополнениям изменять цвет разделителя вкладок ({{bug(1459455)}}).
  • -
+### Прочее -

Удалено

+_Без изменений._ -
    -
  • Прекращена поддержка установки распакованных дополнений ({{bug(1385057)}}).
  • -
  • Убран показ предупреждения о browser_style при временной загрузке дополнения для тестирования ({{bug(1404724)}}).
  • -
+## Изменения для разработчиков дополнений -

Предыдущие версии

+### Изменения API -

{{Firefox_for_developers(61)}}

+- Добавлен API {{WebExtAPIRef("webRequest.getSecurityInfo()")}}, позволяющий получить подробные сведения о TLS-соединениях ({{bug(1322748)}}). +- Добавлен {{WebExtAPIRef("browserSettings.newTabPosition")}}, позволяющий настроить положение новой вкладки ({{bug(1344749)}}). +- `windowTypes` объявлен устаревшим в {{WebExtAPIRef("windows.get()")}}, {{WebExtAPIRef("windows.getCurrent()")}} и {{WebExtAPIRef("windows.getLastFocused()")}} ({{bug(1419132)}}). +- Появилась возможность изменять каждое окно браузера в отдельности ({{bug(1419893)}}). + +### Изменения манифеста + +- Новое свойство `open_at_install` ключа [`sidebar_action`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action) манифеста позволяет дополнениям при установке автоматически открывать или не открывать боковые панели ({{bug(1460910)}}). +- Изменено свойство `browser_style` различных ключей манифеста: + + - У [`page_action`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action) и [`browser_action`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action) оно по умолчанию стало `false`. + - У [`sidebar_action`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action) и [`options_ui`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui) оно по умолчанию стало `true`. + +### Изменения темы + +- Новое свойство `tab_background_separator` ключа [`theme`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme) манифеста позволяет дополнениям изменять цвет разделителя вкладок ({{bug(1459455)}}). + +### Удалено + +- Прекращена поддержка установки распакованных дополнений ({{bug(1385057)}}). +- Убран показ предупреждения о `browser_style` при временной загрузке дополнения для тестирования ({{bug(1404724)}}). + +## Предыдущие версии + +{{Firefox_for_developers(61)}} diff --git a/files/ru/mozilla/firefox/releases/63/index.md b/files/ru/mozilla/firefox/releases/63/index.md index 08cc0ed987905c..4bd8e26219c22f 100644 --- a/files/ru/mozilla/firefox/releases/63/index.md +++ b/files/ru/mozilla/firefox/releases/63/index.md @@ -8,263 +8,225 @@ tags: - Выпуск translation_of: Mozilla/Firefox/Releases/63 --- -
{{FirefoxSidebar}}
+{{FirefoxSidebar}} -

В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 63 был выпущен 23 октября 2018 года.

- -

Изменения для веб-разработчиков

+В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 63 был выпущен 23 октября 2018 года. -

Инструменты разработчика

+## Изменения для веб-разработчиков -
    -
  • Вкладка инспектора «Шрифты» обзавелась редактором, облегчающим просмотр и правку настроек используемых шрифтов. Подробнее см. в Edit fonts.
  • -
  • Включён по умолчанию инспектор поддержи доступности ({{bug(1482454)}}).
  • -
  • При наведении курсора на объект в инспекторе поддержки доступности, элемент будет подсвечен, а его роль и имя показаны в информационной панели на странице ({{bug(1473030)}}).
  • -
  • Командная строка веб-консоли теперь находится не внизу окна, а прямо после вывода консоли ({{bug(1136299)}}).
  • -
  • Если адрес принадлежит домену, о котором известно, что он отслеживает пользователей, сетевой монитор покажет специальный значок перед этой ссылкой — см. {{SectionOnPage("/ru/docs/Tools/Network_Monitor", "Значки безопасности")}} ({{bug(1333994)}}).
  • -
  • Настройка devtools.aboutdebugging.showSystemAddons отныне по умолчанию имеет значение false, что означает — системные дополнения не будут показаны на странице about:debugging. Значение этой настройки можно изменить на странице about:config ({{bug(1425347)}}).
  • -
  • Упрощена панель инструментов режима адаптивного дизайна, кроме того, добавлена возможность выровнять область просмотра по левому краю.
  • -
  • Для пользовательских элементов инспектор теперь показывает ссылку на определение класса ({{bug(1443923)}}).
  • -
- -

HTML

- -
    -
  • Элемент {{HTMLElement("img")}} обзавёлся поддержкой атрибута decoding ({{bug(1416328)}}); см. также {{DOMxRef("HTMLImageElement.decoding")}}.
  • -
- -

Удалено

- -
    -
  • Удалена поддержка ссылок с типом sidebar (rel="sidebar") ({{bug(1452645)}}).
  • -
- -

CSS

- -
    -
  • Добавлена поддержка псевдокласса {{CSSxRef(":defined")}} ({{bug(1331334)}}).
  • -
  • В Flexbox-раскладку добавлена поддержка {{CSSxRef("row-gap")}}, {{CSSxRef("column-gap")}} и {{CSSxRef("gap")}} ({{bug(1398483)}}).
  • -
  • Снова включена поддержка запросов pixel-density правила @media, у которых есть префикс -webkit ({{bug(1444139)}}).
  • -
  • Реализована поддержка свойств CSS Flexible Box Layout (Flexbox) {{CSSxRef("align-self")}}, {{CSSxRef("align-content")}} и {{CSSxRef("align-items")}}, а также {{CSSxRef("justify-content")}} ({{bug(1472843)}}).
  • -
  • Реализована функция path для {{CSSxRef("offset-path")}} ({{bug(1429298)}}).
  • -
  • Внесены улучшения синтаксиса из спецификации Media Queries Level 4 ({{bug(1472843)}}).
  • -
  • Свойства offset-* переименованы в {{CSSxRef("inset-block-start")}}, {{CSSxRef("inset-block-end")}}, {{CSSxRef("inset-inline-start")}} и {{CSSxRef("inset-inline-end")}} ({{bug(1464782)}}).
  • -
  • Добавлена поддержка prefers-reduced-motion ({{bug(1365045)}}, {{bug(1475462)}}).
  • -
  • Свойство {{CSSxRef("resize")}} обзавелось относительно-направленными значениями (block, inline) ({{bug(1464786)}}).
  • -
  • Реализована flexbox-раскладка для значений safe и unsafe в {{CSSxRef("align-self")}}, {{CSSxRef("align-content")}} и {{CSSxRef("justify-content")}} ({{bug(1297774)}}).
  • -
  • Логические свойства (там, где это необходимо) стали анимируемыми ({{bug(1309752)}}).
  • -
+### Инструменты разработчика -

Удалено

+- Вкладка [инспектора](/ru/docs/Tools/Page_Inspector) «Шрифты» обзавелась редактором, облегчающим просмотр и правку настроек используемых шрифтов. Подробнее см. в [Edit fonts](/ru/docs/Tools/Page_Inspector/How_to/Edit_fonts). +- Включён по умолчанию [инспектор поддержи доступности](/ru/docs/Tools/Accessibility_inspector) ({{bug(1482454)}}). +- При наведении курсора на объект в [инспекторе поддержки доступности](/ru/docs/Tools/Accessibility_inspector), [элемент будет подсвечен](/ru/docs/Tools/Accessibility_inspector#Highlighting_of_UI_items), а его роль и имя показаны в информационной панели на странице ({{bug(1473030)}}). +- Командная строка [веб-консоли](/ru/docs/Tools/Web_Console) теперь находится не внизу окна, а прямо после вывода консоли ({{bug(1136299)}}). +- Если адрес принадлежит домену, о котором известно, что он отслеживает пользователей, [сетевой монитор](/ru/docs/Tools/Network_Monitor) покажет специальный значок перед этой ссылкой — см. {{SectionOnPage("/ru/docs/Tools/Network_Monitor", "Значки безопасности")}} ({{bug(1333994)}}). +- Настройка `devtools.aboutdebugging.showSystemAddons` отныне по умолчанию имеет значение `false`, что означает — системные дополнения не будут показаны на странице `about:debugging`. Значение этой настройки можно изменить на странице `about:config` ({{bug(1425347)}}). +- Упрощена панель инструментов [режима адаптивного дизайна](/ru/docs/Tools/Responsive_Design_Mode), кроме того, добавлена возможность выровнять область просмотра по левому краю. +- Для пользовательских элементов инспектор теперь показывает [ссылку на определение класса](/ru/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Custom_element_definition) ({{bug(1443923)}}). -
    -
  • Удалены offset-block-start, offset-block-end, offset-inline-start и offset-inline-end; как упомянуто выше, они переименованы в inset-* ({{bug(1464782)}}).
  • -
- -

SVG

+### HTML -

Без изменений.

+- Элемент {{HTMLElement("img")}} обзавёлся поддержкой атрибута `decoding` ({{bug(1416328)}}); см. также {{DOMxRef("HTMLImageElement.decoding")}}. -

JavaScript

+#### Удалено -
    -
  • Реализована поддержка свойства {{JSxRef("Symbol.prototype.description")}} ({{bug(1472170)}}).
  • -
  • Добавлен метод {{JSxRef("Object.fromEntries")}} ({{bug(1469019)}}).
  • -
  • Существенно улучшено сообщение об ошибке, выдаваемое при попытке доступа к свойству не определённого объекта. В случае, когда x не определён, а вы пытаетесь получить доступ к x.y, консоль вернёт более понятное x не определён; невозможно получить доступ к его свойству "y" вместо TypeError: x не определён ({{bug(1259822)}}).
  • -
+- Удалена поддержка ссылок с типом `sidebar` (`rel="sidebar"`) ({{bug(1452645)}}). -

Удалено

+### CSS -
    -
  • Удалена экспериментальная поддержка сериализации IndexedDB WebAssembly.Module ({{bug(1469395)}}).
  • -
+- Добавлена поддержка псевдокласса {{CSSxRef(":defined")}} ({{bug(1331334)}}). +- В [Flexbox-раскладку](/ru/docs/Web/CSS/CSS_Box_Alignment/Box_Alignment_in_Flexbox#The_gap_properties) добавлена поддержка {{CSSxRef("row-gap")}}, {{CSSxRef("column-gap")}} и {{CSSxRef("gap")}} ({{bug(1398483)}}). +- Снова включена поддержка [запросов pixel-density правила @media](/ru/docs/Web/CSS/@media/-webkit-device-pixel-ratio), у которых есть префикс -webkit ({{bug(1444139)}}). +- Реализована поддержка свойств [CSS Flexible Box Layout](/ru/docs/Web/CSS/CSS_Flexible_Box_Layout) (Flexbox) {{CSSxRef("align-self")}}, {{CSSxRef("align-content")}} и {{CSSxRef("align-items")}}, а также {{CSSxRef("justify-content")}} ({{bug(1472843)}}). +- Реализована функция `path` для {{CSSxRef("offset-path")}} ({{bug(1429298)}}). +- Внесены [улучшения синтаксиса из спецификации Media Queries Level 4](/ru/docs/Web/JavaScript/Reference/Errors/cant_access_property) ({{bug(1472843)}}). +- Свойства `offset-*` переименованы в {{CSSxRef("inset-block-start")}}, {{CSSxRef("inset-block-end")}}, {{CSSxRef("inset-inline-start")}} и {{CSSxRef("inset-inline-end")}} ({{bug(1464782)}}). +- Добавлена поддержка [prefers-reduced-motion](/ru/docs/Web/CSS/@media/prefers-reduced-motion) ({{bug(1365045)}}, {{bug(1475462)}}). +- Свойство {{CSSxRef("resize")}} обзавелось относительно-направленными значениями (`block`, `inline`) ({{bug(1464786)}}). +- Реализована flexbox-раскладка для значений `safe` и `unsafe` в {{CSSxRef("align-self")}}, {{CSSxRef("align-content")}} и {{CSSxRef("justify-content")}} ({{bug(1297774)}}). +- [Логические свойства](/ru/docs/Web/CSS/CSS_Logical_Properties) (там, где это необходимо) стали анимируемыми ({{bug(1309752)}}). -

API

+#### Удалено -

Новые API

+- Удалены `offset-block-start`, `offset-block-end`, `offset-inline-start` и `offset-inline-end`; как упомянуто выше, они переименованы в `inset-*` ({{bug(1464782)}}). -
    -
  • Включена по умолчанию поддержка API Shadow DOM ({{bug(1471947)}}) и Custom Elements ({{bug(1471948)}}); см. Веб-компоненты для получения подробных сведений.
  • -
  • Реализован API {{domxref("Media_Capabilities_API", "Media Capabilities", "", "1")}} ({{bug(1409664)}}).
  • -
  • Реализована и включена по умолчанию поддержка {{domxref("Clipboard", "API Async Clipboard", "", "1")}} ({{bug(1461465)}}). Как и в Chrome, в Firefox реализованы лишь методы {{domxref("Clipboard.writeText", "writeText()")}} и {{domxref("Clipboard.readText", "readText()")}}, но, в отличие от Chrome, readText() доступен лишь дополнениям.
  • -
  • Поддерживается интерфейс {{DOMxRef("SecurityPolicyViolationEvent")}}. Он позволяет отправлять события при нарушении {{HTTPHeader("Content-Security-Policy")}} ({{bug(1472661)}}).
  • -
+### SVG -

DOM

+_Без изменений._ -
    -
  • Включены по умолчанию следующие элементы API {{domxref("Web_Animations_API", "Web Animations", "", "1")}} (см. {{bug(1476158)}}): -
      -
    • Свойства {{DOMxRef("Animation.ready", "ready")}} и {{DOMxRef("Animation.finished", "finished")}} {{DOMxRef("Animation")}}, указывающие на {{JSxRef("Promise")}} ready и finished объекта Animation.
    • -
    • Свойство {{DOMxRef("Animation.effect", "effect")}} объекта {{DOMxRef("Animation")}}.
    • -
    • Интерфейсы {{DOMxRef("KeyframeEffect")}} и {{DOMxRef("AnimationEffect")}}.
    • -
    -
  • -
  • Реализован метод {{DOMxRef("Element.toggleAttribute()")}} ({{bug(1469592)}}).
  • -
  • В целях совместимости добавлена поддержка нестандартного свойства {{DOMxRef("Event.returnValue")}} ({{bug(1452569)}}).
  • -
  • Теперь, когда свойство {{DOMxRef("Window.event")}} стало стандартным, оно реализовано в Firefox в целях совместимости ({{bug(218415)}}), но из-за проблем совместимости (см. {{bug(1479964)}}) включено лишь в «ночных» выпусках. Его поддержкой управляет настройка dom.window.event.enabled ({{bug(1493869)}}).
  • -
  • Для паритета с Edge и Chrome свойство {{DOMxRef("NavigatorID.platform", "navigator.platform")}} отныне возвращает "Win32" даже в 64-разрядных операционных системах Windows ({{bug(1472618)}}).
  • -
  • Раньше, ссылки, открывающие новые окна с rel="noopener", и {{DOMxRef("Window.open()")}} с noopener приводили к тому, что у окна были отключены все свойства и разработчику приходилось включать необходимые ему стандартные свойства. Отныне такие окна будут иметь все те же свойства, что и любое другое окно, а разработчику следует отключать нежелательные ({{bug(1419960)}}).
  • -
+### JavaScript -

События DOM

+- Реализована поддержка свойства {{JSxRef("Symbol.prototype.description")}} ({{bug(1472170)}}). +- Добавлен метод {{JSxRef("Object.fromEntries")}} ({{bug(1469019)}}). +- Существенно улучшено сообщение об ошибке, выдаваемое при попытке доступа к свойству не определённого объекта. В случае, когда `x` не определён, а вы пытаетесь получить доступ к `x.y`, консоль вернёт более понятное [`x не определён; невозможно получить доступ к его свойству "y"`](/ru/docs/Web/JavaScript/Reference/Errors/cant_access_property) вместо `TypeError: x не определён` ({{bug(1259822)}}). -
    -
  • На платформе Windows улучшена обработка правой клавиши Alt. Если в текущей раскладке клавиша Alt назначена на AltGr, значение {{DOMxRef("KeyboardEvent.key")}} будет "AltGraph". Такое поведение соответствует поведению, принятому недавно в Chrome ({{bug(900750)}}).
  • -
+#### Удалено -

Медиа, Web Audio и WebRTC

- -
    -
  • Доступ к микрофону теперь работает одновременно в нескольких вкладках, даже в рамках одного процесса контента ({{bug(1404977)}}).
  • -
  • {{DOMxRef("RTCDataChannel")}} теперь поддерживает формат данных sctp-sdp-21 в дополнение к старому формату sctp-sdp-05.
  • -
  • Узлы {{DOMxRef("ConstantSourceNode")}} отныне имеют не один, а два канала ({{bug(1413283)}}).
  • -
  • Интерфейс API {{domxref("Web_Audio_API", "Web Audio", "", "1")}} {{DOMxRef("AudioScheduledSourceNode")}} (и все остальные типы узлов, основанные на нём) теперь выбрасывает корректное исключение (RangeError), если время начала узла представляет собой отрицательное значение ({{bug(1413284)}}).
  • -
  • Минимальные и максимально допустимые значения {{DOMxRef("AudioParam.value", "value")}} объекта {{DOMxRef("AudioParam")}} изменены на минимальное отрицательное число с плавающей запятой одинарной точности (-340,282,346,638,528,859,811,704,183,484,516,925,440) и максимальное положительное число с плавающей запятой одинарной точности (+340,282,346,638,528,859,811,704,183,484,516,925,440) ({{bug(1476695)}}).
  • -
  • Включена по умолчанию поддержка метода {{DOMxRef("SourceBuffer.changeType")}}, позволяющего изменить кодеки во время активного потока. Это часть API {{domxref("Media_Source_Extensions_API", "Media Source Extensions", "", "1")}} ({{bug(1481166)}}).
  • -
  • Метод {{DOMxRef("AudioParam.setValueCurveAtTime()")}} обновлён, чтобы корректно принимать массив значений с плавающей запятой для указания значений параметров, которые изменяются со временем. До этого он требовал {{DOMxRef("Float32Array")}} ({{bug(1421091)}}).
  • -
  • {{DOMxRef("AudioParam.setValueCurveAtTime()")}} обновлён, чтобы возвращать правильный TypeError, если в массиве values обнаружено не конечное значение ({{bug(1472095)}}).
  • -
  • Кроме того, setValueCurveAtTime() обновлён таким образом, чтобы, когда параметр заканчивает следовать кривой значений, значение параметра устанавливалось в соответствии с последним значением в списке значений кривой ({{bug(1308436)}}).
  • -
  • Словарь RTCRTPStreamStats переименован в {{DOMxRef("RTCRtpStreamStats")}} согласно прочим словарям WebRTC и спецификации ({{bug(1480498)}}).
  • -
  • Словарь RTCRtpStreamStats получил поддержку свойства {{DOMxRef("RTCRtpStreamStats.kind", "kind")}} ({{bug(1481851)}}).
  • -
  • Свойство {{DOMxRef("RTCRtpStreamStats.isRemote", "isRemote")}} словаря {{DOMxRef("RTCRtpStreamStats")}} объявлено устаревшим и будет удалено в Firefox 65. При доступе к свойству будет выведено предупреждение в консоли. Подробности в блоге ({{bug(1393306)}}).
  • -
- -

Canvas и WebGL

- -
    -
  • {{DOMxRef("HTMLCanvasElement.getContext()")}} обзавёлся новым атрибутом powerPreference. В macOS, при наличии нескольких графических процессоров, это позволяет приложениям и апплетам WebGL, которым не важна производительность, запрашивать слабый GPU вместо более мощного и потребляющего больше энергии ({{bug(1349799)}}).
  • -
- -

Удалено

- -
    -
  • Удалены устаревшие нестандартные методы {{DOMxRef("Window.back()")}} и {{DOMxRef("Window.forward()")}}, реализованные лишь в Firefox. Вместо них следует использовать методы {{DOMxRef("History.back", "window.history.back()")}} и {{DOMxRef("History.forward", "window.history.forward()")}} ({{bug(1479486)}}).
  • -
  • Методы {{DOMxRef("URL.createObjectURL", "createObjectURL()")}} и {{DOMxRef("URL.revokeObjectURL", "revokeObjectURL()")}} больше не доступны на экземплярах {{DOMxRef("ServiceWorker")}}, поскольку легко приводят к утечкам памяти ({{bug(1264182)}}).
  • -
  • Удалена устаревшая и ограниченная поддержка эффектов Доплера на {{DOMxRef("PannerNode")}}. У интерфейса {{DOMxRef("AudioListener")}} удалены свойства {{DOMxRef("AudioListener.dopplerFactor", "dopplerFactor")}} и {{DOMxRef("AudioListener.speedOfSound", "speedOfSound")}}, кроме того, у интерфейса PannerNode удалён метод {{DOMxRef("PannerNode.setVelocity", "setVelocity()")}} ({{bug(1148354)}}).
  • -
- -

CSSOM

- -

Без изменений.

- -

HTTP

- -
    -
  • Реализован заголовок {{HTTPHeader("Clear-Site-Data")}}; больше он не скрыт за соответствующей настройкой ({{bug(1470111)}}).
  • -
- -

Безопасность

- -
    -
  • Фавиконы сайтов отныне подчиняются политике защиты контента (CSP), если она настроена ({{bug(1297156)}}).
  • -
  • Выражение 'report-sample' директивы CSP script-src отныне учитывается при создании отчёта о нарушении. Эта директива указывает, что в отчёт должен быть включён краткий пример того, где произошло нарушение. До этого Firefox всегда включал такой пример в отчёт ({{bug(1473218)}}).
  • -
  • Библиотеки NSS обновлены до версии 3.39 ({{bug(1470914)}}).
  • -
- -

Плагины

- -

Без изменений.

- -

WebDriver (Marionette)

- -

Новые возможности

- -
    -
  • Marionette будет возвращать возможность setWindowRect в ответы WebDriver:NewSession, если браузер поддерживает все команды позиционирования и изменения размера окна (это верно лишь для Firefox, но не для любого мобильного приложения) ({{bug(1470659)}}).
  • -
  • Реализована поддержка возможности unhandledPromptBehavior, позволяющая настроить prompt behavior ({{bug(1264259)}}).
  • -
  • Командам WebDriver:ExecuteScript и WebDriver:ExecuteAsyncScript добавлена возможность обработки запросов к пользователю ({{bug(1439995)}}).
  • -
- -

Изменения API

- -
    -
  • Удалены устаревшие конечные точки команд без префикса WebDriver: ({{bug(1451725)}}).
  • -
  • Команда WebDriver:NewSession возвращает рекомендованные строки (linux, mac, windows) для platformName, как и определено в спецификации WebDriver ({{bug(1470646)}}).
  • -
- -

Исправленные ошибки

- -
    -
  • События, связанные с фокусом, отсутствовали при взаимодействии элементов, если окно браузера находилось в фоне ({{bug(1398111)}}).
  • -
  • Последовательное выполнение действий pointerDown и pointerUp могло вызвать двойной щелчок, поскольку WebDriver:ReleaseActions не сбрасывал счётчик двойных щелчков ({{bug(1422583)}}).
  • -
  • Многократное выполнение действий pause могло привести к бесконечному зависанию ({{bug(1447449)}}).
  • -
  • WebDriver:ExecuteScript и WebDriver:ExecuteAsyncScript вызывали ошибку циклической ссылки при возвращении коллекции элементов ({{bug(1447977)}}).
  • -
  • Для предотвращения состояния гонки команды WebDriver:AcceptAlert и WebDriver:DismissAlert будут ожидать закрытия запроса к пользователю ({{bug(1479368)}}).
  • -
  • Записи журнала, вызванные скриптом фрейма, не ограничивались MarionettePrefs.logLevel, а содержали всё подряд ({{bug(1482829)}}).
  • -
  • WebDriver:TakeScreenshot вызывал ошибку при создании скриншота окна, у которого размер стороны превышал 32767 пикселей ({{bug(1485730)}}).
  • -
  • WebDriver:SendAlertText не заменял текст по умолчанию в запросе у пользователя, если переданный текст представлял собой пустую строку ({{bug(1486485)}}).
  • -
- -

Прочее

- -
    -
  • Исправлено поведение {{DOMxRef("PerformanceObserver.observe()")}}: этот метод теперь ничего не делает, если в указанном массиве типов записей не обнаружены допустимые типы записей или массив пуст/отсутствует. До этого некорректно выбрасывался TypeError ({{bug(1403027)}}).
  • -
  • Формат OpenSearch теперь допускает использование application/json в качестве типа URL-адреса (application/json является ссылкой на application/x-suggestions+json) ({{bug(1425827)}}).
  • -
- -

Изменения для разработчиков дополнений

- -

Изменения API

- -

Темы

- -
    -
  • Цвет текста по умолчанию для значков {{WebExtAPIRef("browserAction")}} теперь автоматически становится чёрным или белым, чтобы достичь максимального контраста с фоном ({{bug(1474110)}}).
  • -
  • Свойства accentcolor и textcolor ключа theme теперь необязательны ({{bug(1413144)}}).
  • -
  • {{WebExtAPIRef("browserAction.getBadgeTextColor()")}} и {{WebExtAPIRef("browserAction.setBadgeTextColor()")}} позволяют получать и настраивать цвет текста значков {{WebExtAPIRef("browserAction")}} ({{bug(1424620)}}).
  • -
  • Объект colors ключа theme теперь поддерживает свойства ntp_text (для указания цвета текста в новой вкладке) и ntp_background (для указания цвета фона) ({{bug(1347204)}}).
  • -
  • Темы получили возможность настраивать цвет боковых панелей, например, боковой панели закладок ({{bug(1418602)}}). Соответствующие свойства: -
      -
    • sidebar: цвет фона.
    • -
    • sidebar_text: цвет текста.
    • -
    • sidebar_highlight: цвет фона выделенного элемента.
    • -
    • sidebar_highlight_text: цвет текста выделенного элемента.
    • -
    -
  • -
  • Метод {{WebExtAPIRef("management.install()")}} позволяет дополнениям устанавливать и задействовать подписанные темы ({{bug(1369209)}}).
  • -
- -

Поиск

+- Удалена экспериментальная поддержка сериализации IndexedDB WebAssembly.Module ({{bug(1469395)}}). -
    -
  • Новый API {{WebExtAPIRef("search")}} позволяет получить список установленных поисковых плагинов, и выполнять поиск с их помощью ({{bug(1352598)}}).
  • -
  • {{WebExtAPIRef("topSites.get()")}} получил поддержку параметра options, позволяющего настроить различные параметры возвращённого списка сайтов ({{bug(1445836)}}).
  • -
+### API -

Вкладки

+#### Новые API -
    -
  • {{WebExtAPIRef("tabs.onHighlighted")}} отныне поддерживает множественное выделение ({{bug(1474440)}}).
  • -
  • {{WebExtAPIRef("tabs.highlight")}} теперь включает необязательное поле в объекте highlightInfopopulate — по умолчанию имеющее значение true. Установка его значения в false запрещает возвращённому объекту windows.Window заполнять список вкладок, что положительно сказывается на производительности ({{bug(1489814)}}).
  • -
  • {{WebExtAPIRef("tabs.update")}} позволяет менять статус выделения вкладки с помощью highlighted: true в параметре updateProperties ({{bug(1479129)}}).
  • -
  • {{WebExtAPIRef("tabs.update")}} поддерживает изменения статуса выделения вкладки без изменения фокуса ({{bug(1486050)}}). Для этого в параметре updateProperties используются одновременно highlighted: true и active: false.
  • -
  • {{WebExtAPIRef("tabs.query")}} стала возвращать массив объектов {{WebExtAPIRef("tabs.Tab")}} при выборе нескольких вкладок ({{bug(1465170)}}).
  • -
  • Свойство {{WebExtAPIRef("tabs.Tab")}} теперь корректно отражает то, какие вкладки выделены (подсвечены), а {{WebExtAPIRef("tabs.highlight")}} поддерживает изменение статуса выделения нескольких вкладок ({{bug(1464862)}}).
  • -
  • Свойство isarticle в объекте extraParameters, передаваемом в {{WebExtAPIRef("tabs.onUpdated")}}, переименовано в isArticle. Старое название сохранено, но объявлено устаревшим. Это изменение попало в Firefox 62 ({{bug(1461695)}}).
  • -
  • Событие {{WebExtAPIRef("tabs.onUpdated")}} позволяет отслеживать, какая вкладка привлекает внимание пользователя с помощью свойства attention объекта changeInfo ({{bug(1396684)}}).
  • -
- -

Меню

- -
    -
  • В API {{WebExtApiRef("menus")}} добавлен {{WebExtApiRef("menus.getTargetElement()")}}. Метод возвращает щелчок по элементу, на который ссылается параметр targetElementId ({{bug(1325814)}}).
  • -
  • {{WebExtAPIRef("menus.create()")}} теперь позволяет создавать невидимые пункты меню, {{WebExtAPIRef("menus.update()")}} позволяет переключать видимость пунктов меню ({{bug(1482529)}}).
  • -
  • Элементы, созданные с помощью API {{WebExtAPIRef("menus")}}, обзавелись поддержкой клавиш доступа ({{bug(1320462)}}).
  • -
  • Параметр {{WebExtApiRef("menus.create()")}} и {{WebExtApiRef("menus.update()")}} targetUrlPatterns теперь поддерживает любые схемы URL-адресов, даже те, которые обычно не допускаются в шаблоне соответствия ({{bug(1280370)}}).
  • -
  • При нажатии на элемент контекстного меню вкладки, разрешение "activeTab" будет дано этой вкладке, даже если она не является активной ({{bug(1446956)}}).
  • -
- -

Прочее

- -
    -
  • {{WebExtAPIRef("commands.onCommand")}} теперь расценивается как пользовательский ввод ({{bug(1408129)}}).
  • -
  • API {{WebExtAPIRef("webRequest")}} позволяет фильтровать speculative-соединения ({{bug(1479565)}}).
  • -
  • {{WebExtAPIRef("webRequest.SecurityInfo")}} обзавёлся свойствами keaGroupName и signatureSchemeName. Это изменение попало в Firefox 62 ({{bug(1471959)}}).
  • -
  • {{WebExtAPIRef("cookies.Cookie")}} включает свойство, показывающее состояние атрибута SameSite у кук. Перечисление {{WebExtAPIRef ("cookies.SameSiteStatus")}} определяет значение состояния SameSite ({{bug(1351663)}}).
  • -
  • Шаблоны соответствия для URL-адресов теперь явно соответствуют схеме "данные" ({{bug(1280370)}}).
  • -
- -

Предыдущие версии

- -

{{Firefox_for_developers(62)}}

+- Включена по умолчанию поддержка API Shadow DOM ({{bug(1471947)}}) и Custom Elements ({{bug(1471948)}}); см. [Веб-компоненты](/ru/docs/Web/Web_Components) для получения подробных сведений. +- Реализован API {{domxref("Media_Capabilities_API", "Media Capabilities", "", "1")}} ({{bug(1409664)}}). +- Реализована и включена по умолчанию поддержка {{domxref("Clipboard", "API Async Clipboard", "", "1")}} ({{bug(1461465)}}). Как и в Chrome, в Firefox реализованы лишь методы {{domxref("Clipboard.writeText", "writeText()")}} и {{domxref("Clipboard.readText", "readText()")}}, но, в отличие от Chrome, `readText()` доступен лишь [дополнениям](/ru/docs/Mozilla/Add-ons/WebExtensions). +- Поддерживается интерфейс {{DOMxRef("SecurityPolicyViolationEvent")}}. Он позволяет отправлять события при нарушении {{HTTPHeader("Content-Security-Policy")}} ({{bug(1472661)}}). + +#### DOM + +- Включены по умолчанию следующие элементы API {{domxref("Web_Animations_API", "Web Animations", "", "1")}} (см. {{bug(1476158)}}): + + - Свойства {{DOMxRef("Animation.ready", "ready")}} и {{DOMxRef("Animation.finished", "finished")}} {{DOMxRef("Animation")}}, указывающие на {{JSxRef("Promise")}} `ready` и `finished` объекта `Animation`. + - Свойство {{DOMxRef("Animation.effect", "effect")}} объекта {{DOMxRef("Animation")}}. + - Интерфейсы {{DOMxRef("KeyframeEffect")}} и {{DOMxRef("AnimationEffect")}}. + +- Реализован метод {{DOMxRef("Element.toggleAttribute()")}} ({{bug(1469592)}}). +- В целях совместимости добавлена поддержка нестандартного свойства {{DOMxRef("Event.returnValue")}} ({{bug(1452569)}}). +- Теперь, когда свойство {{DOMxRef("Window.event")}} стало стандартным, оно реализовано в Firefox в целях совместимости ({{bug(218415)}}), но из-за проблем совместимости (см. {{bug(1479964)}}) включено лишь в «ночных» выпусках. Его поддержкой управляет настройка `dom.window.event.enabled` ({{bug(1493869)}}). +- Для паритета с Edge и Chrome свойство {{DOMxRef("NavigatorID.platform", "navigator.platform")}} отныне возвращает `"Win32"` даже в 64-разрядных операционных системах Windows ({{bug(1472618)}}). +- Раньше, ссылки, открывающие новые окна с `rel="noopener"`, и {{DOMxRef("Window.open()")}} с [`noopener`](/en-US/docs/Web/API/Window/open#noopener) приводили к тому, что у окна были отключены все свойства и разработчику приходилось включать необходимые ему стандартные свойства. Отныне такие окна будут иметь все те же свойства, что и любое другое окно, а разработчику следует отключать нежелательные ({{bug(1419960)}}). + +#### События DOM + +- На платформе Windows улучшена обработка _правой_ клавиши + + Alt + + . Если в текущей раскладке клавиша + + Alt + + назначена на + + AltGr + + , значение {{DOMxRef("KeyboardEvent.key")}} будет `"AltGraph"`. Такое поведение соответствует поведению, принятому недавно в Chrome ({{bug(900750)}}). + +#### Медиа, Web Audio и WebRTC + +- Доступ к микрофону теперь работает одновременно в нескольких вкладках, даже в рамках одного процесса контента ({{bug(1404977)}}). +- {{DOMxRef("RTCDataChannel")}} теперь поддерживает формат данных sctp-sdp-21 в дополнение к старому формату sctp-sdp-05. +- Узлы {{DOMxRef("ConstantSourceNode")}} отныне имеют не один, а два канала ({{bug(1413283)}}). +- Интерфейс API {{domxref("Web_Audio_API", "Web Audio", "", "1")}} {{DOMxRef("AudioScheduledSourceNode")}} (и все остальные типы узлов, основанные на нём) теперь выбрасывает корректное исключение (`RangeError`), если время начала узла представляет собой отрицательное значение ({{bug(1413284)}}). +- Минимальные и максимально допустимые значения {{DOMxRef("AudioParam.value", "value")}} объекта {{DOMxRef("AudioParam")}} изменены на минимальное отрицательное число с плавающей запятой одинарной точности (-340,282,346,638,528,859,811,704,183,484,516,925,440) и максимальное положительное число с плавающей запятой одинарной точности (+340,282,346,638,528,859,811,704,183,484,516,925,440) ({{bug(1476695)}}). +- Включена по умолчанию поддержка метода {{DOMxRef("SourceBuffer.changeType")}}, позволяющего изменить кодеки во время активного потока. Это часть API {{domxref("Media_Source_Extensions_API", "Media Source Extensions", "", "1")}} ({{bug(1481166)}}). +- Метод {{DOMxRef("AudioParam.setValueCurveAtTime()")}} обновлён, чтобы корректно принимать массив значений с плавающей запятой для указания значений параметров, которые изменяются со временем. До этого он требовал {{DOMxRef("Float32Array")}} ({{bug(1421091)}}). +- {{DOMxRef("AudioParam.setValueCurveAtTime()")}} обновлён, чтобы возвращать правильный `TypeError`, если в массиве `values` обнаружено не конечное значение ({{bug(1472095)}}). +- Кроме того, `setValueCurveAtTime()` обновлён таким образом, чтобы, когда параметр заканчивает следовать кривой значений, значение параметра устанавливалось в соответствии с последним значением в списке значений кривой ({{bug(1308436)}}). +- Словарь `RTCRTPStreamStats` переименован в {{DOMxRef("RTCRtpStreamStats")}} согласно прочим словарям WebRTC и спецификации ({{bug(1480498)}}). +- Словарь `RTCRtpStreamStats` получил поддержку свойства {{DOMxRef("RTCRtpStreamStats.kind", "kind")}} ({{bug(1481851)}}). +- Свойство {{DOMxRef("RTCRtpStreamStats.isRemote", "isRemote")}} словаря {{DOMxRef("RTCRtpStreamStats")}} объявлено устаревшим и будет удалено в Firefox 65. При доступе к свойству будет выведено предупреждение в консоли. Подробности в [блоге](https://blog.mozilla.org/webrtc/getstats-isremote-65/) ({{bug(1393306)}}). + +#### Canvas и WebGL + +- {{DOMxRef("HTMLCanvasElement.getContext()")}} обзавёлся новым атрибутом `powerPreference`. В macOS, при наличии нескольких графических процессоров, это позволяет приложениям и апплетам WebGL, которым не важна производительность, запрашивать слабый GPU вместо более мощного и потребляющего больше энергии ({{bug(1349799)}}). + +#### Удалено + +- Удалены устаревшие нестандартные методы {{DOMxRef("Window.back()")}} и {{DOMxRef("Window.forward()")}}, реализованные лишь в Firefox. Вместо них следует использовать методы {{DOMxRef("History.back", "window.history.back()")}} и {{DOMxRef("History.forward", "window.history.forward()")}} ({{bug(1479486)}}). +- Методы {{DOMxRef("URL.createObjectURL", "createObjectURL()")}} и {{DOMxRef("URL.revokeObjectURL", "revokeObjectURL()")}} больше не доступны на экземплярах {{DOMxRef("ServiceWorker")}}, поскольку легко приводят к утечкам памяти ({{bug(1264182)}}). +- Удалена устаревшая и ограниченная поддержка эффектов Доплера на {{DOMxRef("PannerNode")}}. У интерфейса {{DOMxRef("AudioListener")}} удалены свойства {{DOMxRef("AudioListener.dopplerFactor", "dopplerFactor")}} и {{DOMxRef("AudioListener.speedOfSound", "speedOfSound")}}, кроме того, у интерфейса `PannerNode` удалён метод {{DOMxRef("PannerNode.setVelocity", "setVelocity()")}} ({{bug(1148354)}}). + +### CSSOM + +_Без изменений._ + +### HTTP + +- Реализован заголовок {{HTTPHeader("Clear-Site-Data")}}; больше он не скрыт за соответствующей настройкой ({{bug(1470111)}}). + +### Безопасность + +- Фавиконы сайтов отныне подчиняются [политике защиты контента](/ru/docs/Web/HTTP/CSP) (CSP), если она настроена ({{bug(1297156)}}). +- Выражение `'report-sample'` директивы CSP `script-src` отныне учитывается при создании отчёта о нарушении. Эта директива указывает, что в отчёт должен быть включён краткий пример того, где произошло нарушение. До этого Firefox всегда включал такой пример в отчёт ({{bug(1473218)}}). +- Библиотеки NSS обновлены до версии 3.39 ({{bug(1470914)}}). + +### Плагины + +_Без изменений._ + +### WebDriver (Marionette) + +#### Новые возможности + +- Marionette будет возвращать [возможность](/ru/docs/Web/WebDriver/Capabilities) `setWindowRect` в ответы `WebDriver:NewSession`, если браузер поддерживает все команды позиционирования и изменения размера окна (это верно лишь для Firefox, но не для любого мобильного приложения) ({{bug(1470659)}}). +- Реализована поддержка возможности `unhandledPromptBehavior`, позволяющая настроить [prompt behavior](https://w3c.github.io/webdriver/#dfn-user-prompt-handler) ({{bug(1264259)}}). +- Командам `WebDriver:ExecuteScript` и `WebDriver:ExecuteAsyncScript` добавлена возможность обработки запросов к пользователю ({{bug(1439995)}}). + +#### Изменения API + +- Удалены устаревшие конечные точки команд без префикса `WebDriver:` ({{bug(1451725)}}). +- Команда `WebDriver:NewSession` возвращает рекомендованные строки (`linux`, `mac`, `windows`) для `platformName`, как и определено в спецификации WebDriver ({{bug(1470646)}}). + +#### Исправленные ошибки + +- События, связанные с фокусом, отсутствовали при взаимодействии элементов, если окно браузера находилось в фоне ({{bug(1398111)}}). +- Последовательное выполнение действий `pointerDown` и `pointerUp` могло вызвать двойной щелчок, поскольку `WebDriver:ReleaseActions` не сбрасывал счётчик двойных щелчков ({{bug(1422583)}}). +- Многократное выполнение действий `pause` могло привести к бесконечному зависанию ({{bug(1447449)}}). +- `WebDriver:ExecuteScript` и `WebDriver:ExecuteAsyncScript` вызывали ошибку циклической ссылки при возвращении коллекции элементов ({{bug(1447977)}}). +- Для предотвращения состояния гонки команды `WebDriver:AcceptAlert` и `WebDriver:DismissAlert` будут ожидать закрытия запроса к пользователю ({{bug(1479368)}}). +- Записи журнала, вызванные скриптом фрейма, не ограничивались `MarionettePrefs.logLevel`, а содержали всё подряд ({{bug(1482829)}}). +- `WebDriver:TakeScreenshot` вызывал ошибку при создании скриншота окна, у которого размер стороны превышал 32767 пикселей ({{bug(1485730)}}). +- `WebDriver:SendAlertText` не заменял текст по умолчанию в запросе у пользователя, если переданный текст представлял собой пустую строку ({{bug(1486485)}}). + +### Прочее + +- Исправлено поведение {{DOMxRef("PerformanceObserver.observe()")}}: этот метод теперь ничего не делает, если в указанном массиве типов записей не обнаружены допустимые типы записей или массив пуст/отсутствует. До этого некорректно выбрасывался `TypeError` ({{bug(1403027)}}). +- Формат [OpenSearch](/ru/docs/Web/OpenSearch) теперь допускает использование `application/json` в качестве типа URL-адреса (`application/json` является ссылкой на `application/x-suggestions+json`) ({{bug(1425827)}}). + +## Изменения для разработчиков дополнений + +### Изменения API + +#### Темы + +- Цвет текста по умолчанию для значков {{WebExtAPIRef("browserAction")}} теперь автоматически становится чёрным или белым, чтобы достичь максимального контраста с фоном ({{bug(1474110)}}). +- Свойства `accentcolor` и `textcolor` ключа [`theme`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme) теперь необязательны ({{bug(1413144)}}). +- {{WebExtAPIRef("browserAction.getBadgeTextColor()")}} и {{WebExtAPIRef("browserAction.setBadgeTextColor()")}} позволяют получать и настраивать цвет текста значков {{WebExtAPIRef("browserAction")}} ({{bug(1424620)}}). +- Объект `colors` ключа `theme` теперь поддерживает свойства `ntp_text` (для указания цвета текста в новой вкладке) и `ntp_background` (для указания цвета фона) ({{bug(1347204)}}). +- Темы получили возможность настраивать цвет боковых панелей, например, боковой панели закладок ({{bug(1418602)}}). Соответствующие свойства: + + - `sidebar`: цвет фона. + - `sidebar_text`: цвет текста. + - `sidebar_highlight`: цвет фона выделенного элемента. + - `sidebar_highlight_text`: цвет текста выделенного элемента. + +- Метод {{WebExtAPIRef("management.install()")}} позволяет дополнениям устанавливать и задействовать подписанные темы ({{bug(1369209)}}). + +#### Поиск + +- Новый API {{WebExtAPIRef("search")}} позволяет получить список установленных поисковых плагинов, и выполнять поиск с их помощью ({{bug(1352598)}}). +- {{WebExtAPIRef("topSites.get()")}} получил поддержку параметра `options`, позволяющего настроить различные параметры возвращённого списка сайтов ({{bug(1445836)}}). + +#### Вкладки + +- {{WebExtAPIRef("tabs.onHighlighted")}} отныне поддерживает множественное выделение ({{bug(1474440)}}). +- {{WebExtAPIRef("tabs.highlight")}} теперь включает необязательное поле в объекте `highlightInfo` — `populate` — по умолчанию имеющее значение `true`. Установка его значения в `false` запрещает возвращённому объекту `windows.Window` заполнять список вкладок, что положительно сказывается на производительности ({{bug(1489814)}}). +- {{WebExtAPIRef("tabs.update")}} позволяет менять статус выделения вкладки с помощью `highlighted: true` в параметре `updateProperties` ({{bug(1479129)}}). +- {{WebExtAPIRef("tabs.update")}} поддерживает изменения статуса выделения вкладки без изменения фокуса ({{bug(1486050)}}). Для этого в параметре `updateProperties` используются одновременно `highlighted: true` и `active: false`. +- {{WebExtAPIRef("tabs.query")}} стала возвращать массив объектов {{WebExtAPIRef("tabs.Tab")}} при выборе нескольких вкладок ({{bug(1465170)}}). +- Свойство {{WebExtAPIRef("tabs.Tab")}} теперь корректно отражает то, какие вкладки выделены (подсвечены), а {{WebExtAPIRef("tabs.highlight")}} поддерживает изменение статуса выделения нескольких вкладок ({{bug(1464862)}}). +- Свойство `isarticle` в объекте `extraParameters`, передаваемом в {{WebExtAPIRef("tabs.onUpdated")}}, переименовано в `isArticle`. Старое название сохранено, но объявлено устаревшим. Это изменение попало в Firefox 62 ({{bug(1461695)}}). +- Событие {{WebExtAPIRef("tabs.onUpdated")}} позволяет отслеживать, какая вкладка привлекает внимание пользователя с помощью свойства `attention` объекта `changeInfo` ({{bug(1396684)}}). + +#### Меню + +- В API {{WebExtApiRef("menus")}} добавлен {{WebExtApiRef("menus.getTargetElement()")}}. Метод возвращает щелчок по элементу, на который ссылается параметр `targetElementId` ({{bug(1325814)}}). +- {{WebExtAPIRef("menus.create()")}} теперь позволяет создавать невидимые пункты меню, {{WebExtAPIRef("menus.update()")}} позволяет переключать видимость пунктов меню ({{bug(1482529)}}). +- Элементы, созданные с помощью API {{WebExtAPIRef("menus")}}, обзавелись поддержкой клавиш доступа ({{bug(1320462)}}). +- Параметр {{WebExtApiRef("menus.create()")}} и {{WebExtApiRef("menus.update()")}} `targetUrlPatterns` теперь поддерживает любые схемы URL-адресов, даже те, которые обычно не допускаются в шаблоне соответствия ({{bug(1280370)}}). +- При нажатии на элемент контекстного меню вкладки, [разрешение "activeTab"](/en-US/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission) будет дано этой вкладке, даже если она не является активной ({{bug(1446956)}}). + +#### Прочее + +- {{WebExtAPIRef("commands.onCommand")}} теперь расценивается как [пользовательский ввод](/ru/docs/Mozilla/Add-ons/WebExtensions/User_actions) ({{bug(1408129)}}). +- API {{WebExtAPIRef("webRequest")}} позволяет фильтровать speculative-соединения ({{bug(1479565)}}). +- {{WebExtAPIRef("webRequest.SecurityInfo")}} обзавёлся свойствами `keaGroupName` и `signatureSchemeName`. Это изменение попало в Firefox 62 ({{bug(1471959)}}). +- {{WebExtAPIRef("cookies.Cookie")}} включает свойство, показывающее состояние атрибута SameSite у кук. Перечисление {{WebExtAPIRef ("cookies.SameSiteStatus")}} определяет значение состояния SameSite ({{bug(1351663)}}). +- Шаблоны соответствия для URL-адресов теперь явно соответствуют схеме "данные" ({{bug(1280370)}}). + +## Предыдущие версии + +{{Firefox_for_developers(62)}} diff --git a/files/ru/mozilla/firefox/releases/64/index.md b/files/ru/mozilla/firefox/releases/64/index.md index 4dcfa0f5f0ed6b..94ee53ec4f1412 100644 --- a/files/ru/mozilla/firefox/releases/64/index.md +++ b/files/ru/mozilla/firefox/releases/64/index.md @@ -3,202 +3,160 @@ title: Firefox 64 для разработчиков slug: Mozilla/Firefox/Releases/64 translation_of: Mozilla/Firefox/Releases/64 --- -
{{FirefoxSidebar}}
- -

В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 64 был выпущен 11 декабря 2018 года.

- -

Изменения для веб-разработчиков

- -

Инструменты разработчика

- - - -

Удалено

- -
    -
  • Окончательно удалена панель разработчика (GCLI) ({{bug(1429421)}}). Её интерфейс был удалён в Firefox 62, а теперь удалён и оставшийся код.
  • -
- -

HTML

- -

Без изменений.

- -

CSS

- -
    -
  • Включена по умолчанию поддержка полос прокрутки CSS ({{bug(1492012)}}).
  • -
  • Реализована поддержка Interaction Media Features, включающая pointer:coarse ({{bug(1035774)}}). Подробности реализации any-pointer и any-hover см в {{bug(1483111)}}.
  • -
  • Android-версия обзавелась поддержкой prefers-reduced-motion ({{bug(1478505)}}).
  • -
  • Значения {{cssxref("<gradient>")}} теперь поддерживают мультипозиционный синтаксис остановки цвета, например, yellow 25%, yellow 50% можно записать в виде yellow 25% 50% ({{bug(1352643)}}).
  • -
  • Свойство {{cssxref("text-transform")}} теперь принимает значение full-size-kana ({{bug(1498148)}}).
  • -
  • Из-за проблем веб-совместимости добавлена поддержка {{cssxref("appearance", "-webkit-appearance")}} ({{bug(1368555)}}).
  • -
  • Кроме того, удалена большая часть специфичных для Firefox значений -moz-appearance ({{bug(1496720)}}).
  • -
  • {{cssxref("display")}}: list-item отныне поддерживается на элементах {{htmlelement("legend")}} ({{bug(1486602)}}).
  • -
  • SVG path(), при использовании в {{cssxref("offset-path")}}, теперь могут быть анимированными ({{bug(1486094)}}).
  • -
  • Псевдоэлементы с префиксом -webkit- больше не делают цепочку или группу селекторов недействительной ({{bug(1424106)}}). См. {{bug(1486325)}}, чтобы узнать, как включить эту возможность.
  • -
- -

Удалено

- -
    -
  • Нестандартные значения -moz-box и -moz-inline-box {{CSSxRef("display")}} скрыты от веб-содержимого ({{bug(1496961)}}).
  • -
  • Нестандартные псевдоэлементы {{CSSxRef("::-moz-tree")}} скрыты от веб-содержимого ({{bug(1496961)}}).
  • -
  • Удалена настройка layout.css.filters.enabled; CSS-фильтры отныне нельзя отключить ({{bug(1408841)}}).
  • -
  • Отменено ({{bug(1492567)}}) изменение, сделанное в прошлом выпуске — перемена мест значений {{cssxref("overflow")}} ({{bug(1481866)}}). См. причину.
  • -
- -

SVG

- -

Без изменений.

- -

JavaScript

- -
    -
  • Реализовано предложение TC39 Well-formed JSON.stringify, чтобы {{jsxref("JSON.stringify")}} не мог возвращать плохо сформированные строки Unicode ({{bug(1469021)}}).
  • -
  • Проксируемые функции теперь могут быть переданы {{jsxref("Function.prototype.toString")}}.call() ({{bug(1440468)}}).
  • -
  • Если значение не указано, конструктор {{jsxref("WebAssembly.Global")}} будет использовать типизированный 0. Это определяется алгоритмом DefaultValue ({{bug(1490286)}}).
  • -
- -

API

- -

DOM

- -
    -
  • Ряд изменений {{domxref("Fullscreen_API", "API Fullscreen", "", "1")}}: -
      -
    • API лишился префикса ({{bug(1269276)}}).
    • -
    • Методы {{domxref("Element.requestFullscreen()")}} и {{domxref("Document.exitFullscreen()")}} отныне возвращают {{jsxref("Promise")}}, который исполняется, когда завершено изменение режима ({{bug(1188256)}} и {{bug(1491212)}}).
    • -
    • События {{domxref("fullscreenchange")}} и {{domxref("fullscreenerror")}} сначала отправлялись в {{domxref("Document")}}, а затем в {{domxref("Element")}}. Теперь всё стало наоборот. Это поведение отражено в спецификации и совпадает с поведением Chrome ({{bug(1375319)}}).
    • -
    -
  • -
  • На платформе macOS снова включён {{domxref("WebVR_API", "API WebVR", "", "1")}} 1.1 ({{bug(1476091)}}).
  • -
  • В качестве ссылок на {{domxref("Window.screenX")}} и {{domxref("Window.screenY")}} добавлены {{domxref("Window.screenLeft")}} и {{domxref("Window.screenTop")}} ({{bug(1498860)}}).
  • -
  • Метод {{domxref("XMLHttpRequest.getAllResponseHeaders()")}} отныне возвращает имена заголовков в нижнем регистре, в соответствии со спецификацией ({{bug(1398718)}}).
  • -
  • Устаревший интерфейс HTMLAllCollection обновлён в соответствии с последними изменениями спецификации ({{bug(1398354)}}).
  • -
  • В целях конфиденциальности {{domxref("Navigator.buildID")}} будет возвращать фиксированную метку времени ({{bug(583181)}}).
  • -
  • По умолчанию отключены следующие возможности {{domxref("Document.execCommand()")}} ({{bug(1490641)}}): -
      -
    • enableObjectResizing
    • -
    • enableInlineTableEditing
    • -
    • enableAbsolutePositionEditor
    • -
    -
  • -
+{{FirefoxSidebar}} -

Сервис-воркеры

+В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 64 был выпущен 11 декабря 2018 года. -
    -
  • Реализован метод {{domxref("ServiceWorkerContainer.startMessages()")}} ({{bug(1263734)}}).
  • -
- -

Media, Web Audio и WebRTC

- -
    -
  • Свойства {{domxref("PannerNode.refDistance")}}, {{domxref("PannerNode.maxDistance")}}, {{domxref("PannerNode.rolloffFactor")}} и {{domxref("PannerNode.coneOuterGain")}} отныне корректно выбрасывают исключения, когда их значения установлены за пределами допустимого ({{bug(1487963)}}).
  • -
  • Настройки {{domxref("RTCRtpEncodingParameters")}}, изменённые с помощью {{domxref("RTCRtpSender.setParameters()")}}, не обновлялись, если были изменены во время звонка. Теперь они будут обновляться без переподключения ({{bug(1253499)}}).
  • -
  • Реализован {{domxref("RTCIceCandidateStats.relayProtocol")}} — стандартная версия {{domxref("RTCIceCandidateStats.mozLocalTransport")}}, который объявлен устаревшим ({{bug(1435789)}}).
  • -
  • Включена по умолчанию автоматическая регулировка усиления (AGC). Эта возможность управляется настройкой media.getusermedia.agc_enabled ({{bug(1496714)}}).
  • -
- -

Удалено

- -
    -
  • Свойство {{domxref("Window.event")}}, добавленное в Firefox 63 для разрешения проблем веб-совместимости, скрыто за отключённой в релизных версиях настройкой dom.window.event.enabled, поскольку вскрылись иные затруднения ({{bug(1493869)}}). На самом деле, это было сделано в одном из минорных обновлений Firefox 63, мы просто обращаем на это ваше внимание.
  • -
  • Удалён интерфейс {{domxref("LocalMediaStream")}} и его метод stop() ({{bug(1258143)}}). См. {{SectionOnPage("/en-US/docs/Web/API/MediaStreamTrack/stop", "Stopping a video stream")}}, чтобы узнать, как остановить поток целиком.
  • -
  • Удалены интерфейсы AudioStreamTrack и VideoStreamTrack, поскольку они уже некоторое время объявлены устаревшими ({{bug(1377146)}}). Их функции перенесены в {{domxref("MediaStreamTrack")}}; дорожки отныне идентифицируются по значению свойств {{domxref("MediaStreamTrack.kind", "kind")}}, таких, как audio или video.
  • -
+## Изменения для веб-разработчиков -

Безопасность

+### Инструменты разработчика -
    -
  • Прекращено доверие сертификатам, выданным удостоверяющими центрами Symantec (см. {{bug(1409257)}}; также см. подробности в обсуждении Mozilla’s Plan for Symantec Roots).
  • -
  • Теперь можно использовать {{httpheader("Referrer-Policy")}} для управления ресурсами, полученными через таблицы стилей ({{bug(1330487)}}) — см. {{SectionOnPage("/en-US/docs/Web/HTTP/Headers/Referrer-Policy", "Integration with CSS")}} для получения подробных сведений.
  • -
+- [Информационная панель в инструменте поддержки доступности](/ru/docs/Tools/Accessibility_inspector#Выделение_элементов_интерфейса) теперь показывает сведения о соотношении контрастности цветов текста или изображений на странице ({{bug(1473037)}}). +- Выбор устройства в [режиме адаптивного дизайна](/ru/docs/Tools/Responsive_Design_Mode) запоминается и сохраняется между сеансами ({{bug(1248619)}}). +- [Сетевой монитор](/ru/docs/Tools/Network_Monitor) теперь выделяет ресурсы, на которые потенциально может повлиять [защита от отслеживания](/ru/docs/Mozilla/Firefox/Privacy/Tracking_Protection) ({{bug(1333994)}}). +- [Веб-консоль](/ru/docs/Tools/Web_Console) получила усовершенствования, связанные с вводом и оценкой кода: -

Плагины

+ - Регистронезависимое [автодополнение](/ru/docs/Tools/Web_Console/The_command_line_interpreter#Autocomplete) выражений ({{bug(672733)}}). + - Возможность просмотреть [историю выражений консоли](/ru/docs/Tools/Web_Console/The_command_line_interpreter#Command_history) с помощью bash-подобного обратного поиска ({{bug(1024913)}}). + - Подсветка [оценённого кода](/ru/docs/Tools/Web_Console/The_command_line_interpreter) и при вводе, и при выводе ({{bug(1463669)}}). -

Без изменений.

+- Пошаговое выполнение кода в [отладчике JavaScript ](/ru/docs/Tools/Debugger)также было улучшено: -

WebDriver (Marionette)

+ - Отладчик сохраняет [развёрнутые переменные](/ru/docs/Tools/Debugger/UI_Tour#Scopes) при пошаговом выполнении кода ({{bug(1491471)}}). + - [Выход из функции](/ru/docs/Tools/Debugger/How_to/Step_through_code) пропускает возвращаемое значение ({{bug(923975)}}). -

Изменения API

+#### Удалено -
    -
  • Удалены устаревшие конечные точки без префикса Marionette:, L10n: или Addon: (включая singeTap) ({{bug(1504478)}}, {{bug(1504940)}}).
  • -
+- Окончательно удалена панель разработчика (GCLI) ({{bug(1429421)}}). Её интерфейс был удалён в [Firefox 62](/ru/docs/Mozilla/Firefox/Releases/62), а теперь удалён и оставшийся код. -

Исправленные ошибки

+### HTML -
    -
  • Синтезированные события Shift с использованием WebDriver:PerformActions не создавали заглавные буквы ({{bug(1405370)}}).
  • -
  • WebDriver:Navigate мог вызвать бесконечное зависание, если низлежащий процесс контента вкладки менялся много раз во время навигации ({{bug(1504807)}}).
  • -
  • Для улучшения производительности и сокращения количества потребляемой памяти страница, в новой вкладке или окне будет загружаться не about:newtab, а about:blank ({{bug(1506643)}}).
  • -
  • Отключено по умолчанию предложение использовать панель блокировки контента, показ которого препятствует взаимодействию с элементами интерфейса ({{bug(1488826)}}).
  • -
+_Без изменений._ -

Изменения для разработчиков дополнений

+### CSS -

Изменения API

+- Включена по умолчанию поддержка [полос прокрутки CSS](/ru/docs/Web/CSS/CSS_Scrollbars) ({{bug(1492012)}}). +- Реализована поддержка Interaction Media Features, включающая [`pointer:coarse`](/ru/docs/Web/CSS/@media/pointer) ({{bug(1035774)}}). Подробности реализации [`any-pointer`](/ru/docs/Web/CSS/@media/any-pointer) и [`any-hover`](/ru/docs/Web/CSS/@media/any-hover) см в {{bug(1483111)}}. +- Android-версия обзавелась поддержкой [`prefers-reduced-motion`](/ru/docs/Web/CSS/@media/prefers-reduced-motion) ({{bug(1478505)}}). +- Значения {{cssxref("<gradient>")}} теперь поддерживают мультипозиционный синтаксис остановки цвета, например, `yellow 25%, yellow 50%` можно записать в виде `yellow 25% 50%` ({{bug(1352643)}}). +- Свойство {{cssxref("text-transform")}} теперь принимает значение `full-size-kana` ({{bug(1498148)}}). +- Из-за проблем веб-совместимости добавлена поддержка {{cssxref("appearance", "-webkit-appearance")}} ({{bug(1368555)}}). +- Кроме того, удалена большая часть специфичных для Firefox значений `-moz-appearance` ({{bug(1496720)}}). +- {{cssxref("display")}}: `list-item` отныне поддерживается на элементах {{htmlelement("legend")}} ({{bug(1486602)}}). +- SVG `path()`, при использовании в {{cssxref("offset-path")}}, теперь могут быть анимированными ({{bug(1486094)}}). +- Псевдоэлементы с префиксом `-webkit-` больше не делают цепочку или группу селекторов недействительной ({{bug(1424106)}}). См. {{bug(1486325)}}, чтобы узнать, как включить эту возможность. -

Меню

+#### Удалено -
    -
  • Добавлен новый API browser.menus.overrideContext(), который может быть вызван из события DOM contextmenu и позволяет скрыть все пункты меню по умолчанию, чтобы создать собственное контекстное меню на страницах, относящихся к дополнению. Это контекстное меню может состоять из нескольких пунктов меню верхнего уровня дополнения и может включать элементы контекстного меню вкладок или закладок из других дополнений. См. блог для получения подробных сведений. +- Нестандартные значения [`-moz-box` и `-moz-inline-box`](/ru/docs/Mozilla/Gecko/Chrome/CSS/display-xul) {{CSSxRef("display")}} скрыты от веб-содержимого ({{bug(1496961)}}). +- Нестандартные [псевдоэлементы](/ru/docs/Web/CSS/Pseudo-elements) {{CSSxRef("::-moz-tree")}} скрыты от веб-содержимого ({{bug(1496961)}}). +- Удалена настройка `layout.css.filters.enabled`; [CSS-фильтры](/ru/docs/Web/CSS/Filter_Effects) отныне нельзя отключить ({{bug(1408841)}}). +- Отменено ({{bug(1492567)}}) изменение, сделанное в прошлом выпуске — перемена мест значений {{cssxref("overflow")}} ({{bug(1481866)}}). См. [причину](https://bugzilla.mozilla.org/show_bug.cgi?id=1481866#c14). -
      -
    • Реализован browser.menus.overrideContext() (({{bug(1280347)}}).
    • -
    • Реализована опция showDefaults: false, позволяющая скрывать из контекстного меню пункты по умолчанию ({{bug(1367160)}}).
    • -
    • documentURLPatterns теперь может соответствовать адресу moz-extension://, даже если используется browser.menus.overrideContext(). Таким образом, он может надёжно ограничивать пользовательские пункты меню для определённых документов ({{bug(1498896)}}).
    • -
    -
  • -
  • С помощью нового свойства viewTypes в {{WebExtAPIRef("menus.create()")}} и {{WebExtAPIRef("menus.update()")}} можно ограничить места появления контекстного меню в дополнении ({{bug(1416839)}}).
  • -
  • {{WebExtAPIRef("menus.update()")}} теперь позволяет обновить значок существующего пункта меню ({{bug(1414566)}}).
  • -
  • С помощью нового свойства button {{WebExtAPIRef("menus.OnClickData")}} дополнения могут определять, какая кнопка мыши использована для выбора пункта меню ({{bug(1469148)}}).
  • -
+### SVG -

Окна

+_Без изменений._ -
    -
  • Метод {{WebExtAPIRef("windows.create()")}} обзавёлся опцией cookieStoreId, которая определяет CookieStoreId для всех вкладок, созданных при открытии окна ({{bug(1393570)}}).
  • -
+### JavaScript -

Конфиденциальность

+- Реализовано предложение TC39 [Well-formed JSON.stringify](https://github.com/tc39/proposal-well-formed-stringify), чтобы {{jsxref("JSON.stringify")}} не мог возвращать плохо сформированные строки Unicode ({{bug(1469021)}}). +- Проксируемые функции теперь могут быть переданы {{jsxref("Function.prototype.toString")}}`.call()` ({{bug(1440468)}}). +- Если значение не указано, конструктор {{jsxref("WebAssembly.Global")}} будет использовать типизированный 0. Это определяется алгоритмом [`DefaultValue`](https://webassembly.github.io/spec/js-api/#defaultvalue) ({{bug(1490286)}}). -
    -
  • Свойство cookieConfig {{WebExtAPIRef("privacy.websites")}} — это объект, который может принимать свойство behavior. Это свойство теперь может, в свою очередь, принимать новое значение — reject_trackers, которое указывает дополнению отвергать куки, связанными с отслеживанием ({{bug(1493057)}}).
  • -
+### API -

API devtools.panels

+#### DOM -
    -
  • Реализована поддержка метода Sidebar.setPage() devtools.panels.elements ({{bug(1398734)}}).
  • -
+- Ряд изменений {{domxref("Fullscreen_API", "API Fullscreen", "", "1")}}: -

Изменения манифеста

+ - API лишился префикса ({{bug(1269276)}}). + - Методы {{domxref("Element.requestFullscreen()")}} и {{domxref("Document.exitFullscreen()")}} отныне возвращают {{jsxref("Promise")}}, который исполняется, когда завершено изменение режима ({{bug(1188256)}} и {{bug(1491212)}}). + - События {{domxref("fullscreenchange")}} и {{domxref("fullscreenerror")}} сначала отправлялись в {{domxref("Document")}}, а затем в {{domxref("Element")}}. Теперь всё стало наоборот. Это поведение отражено в спецификации и совпадает с поведением Chrome ({{bug(1375319)}}). -
    -
  • Новое свойство pinned ключа манифеста page_action позволяет дополнениям управлять тем, должны ли при установке их действия на странице быть прикреплены к адресной строке или нет ({{bug(1494135)}}).
  • -
  • В Windows наличие ключей NativeMessagingHosts сначала будет проверяться в 32-разрядном представлении реестра (Wow6432Node)); следует использовать то, что подходит для вашего приложения ({{bug(1494709)}}).
  • -
  • Объект search_provider поля chrome_settings_overrides отныне может включать новые свойства — suggest_url, suggest_url_post_params ({{bug(1486819)}}) и search_url_post_params.
  • -
+- На платформе macOS снова включён {{domxref("WebVR_API", "API WebVR", "", "1")}} 1.1 ({{bug(1476091)}}). +- В качестве ссылок на {{domxref("Window.screenX")}} и {{domxref("Window.screenY")}} добавлены {{domxref("Window.screenLeft")}} и {{domxref("Window.screenTop")}} ({{bug(1498860)}}). +- Метод {{domxref("XMLHttpRequest.getAllResponseHeaders()")}} отныне возвращает имена заголовков в нижнем регистре, в соответствии со спецификацией ({{bug(1398718)}}). +- Устаревший интерфейс `HTMLAllCollection` обновлён в соответствии с последними изменениями [спецификации](https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#htmlallcollection) ({{bug(1398354)}}). +- В целях конфиденциальности {{domxref("Navigator.buildID")}} будет возвращать фиксированную метку времени ({{bug(583181)}}). +- По умолчанию отключены следующие возможности {{domxref("Document.execCommand()")}} ({{bug(1490641)}}): -

Предыдущие версии

+ - `enableObjectResizing` + - `enableInlineTableEditing` + - `enableAbsolutePositionEditor` -

{{Firefox_for_developers(64)}}

+#### Сервис-воркеры + +- Реализован метод {{domxref("ServiceWorkerContainer.startMessages()")}} ({{bug(1263734)}}). + +#### Media, Web Audio и WebRTC + +- Свойства {{domxref("PannerNode.refDistance")}}, {{domxref("PannerNode.maxDistance")}}, {{domxref("PannerNode.rolloffFactor")}} и {{domxref("PannerNode.coneOuterGain")}} отныне корректно выбрасывают исключения, когда их значения установлены за пределами допустимого ({{bug(1487963)}}). +- Настройки {{domxref("RTCRtpEncodingParameters")}}, изменённые с помощью {{domxref("RTCRtpSender.setParameters()")}}, не обновлялись, если были изменены во время звонка. Теперь они будут обновляться без переподключения ({{bug(1253499)}}). +- Реализован {{domxref("RTCIceCandidateStats.relayProtocol")}} — стандартная версия {{domxref("RTCIceCandidateStats.mozLocalTransport")}}, который объявлен устаревшим ({{bug(1435789)}}). +- Включена по умолчанию автоматическая регулировка усиления (AGC). Эта возможность управляется настройкой `media.getusermedia.agc_enabled` ({{bug(1496714)}}). + +#### Удалено + +- Свойство {{domxref("Window.event")}}, добавленное в Firefox 63 для разрешения проблем веб-совместимости, скрыто за отключённой в релизных версиях настройкой `dom.window.event.enabled`, поскольку вскрылись иные затруднения ({{bug(1493869)}}). На самом деле, это было сделано в одном из минорных обновлений Firefox 63, мы просто обращаем на это ваше внимание. +- Удалён интерфейс {{domxref("LocalMediaStream")}} и его метод `stop()` ({{bug(1258143)}}). См. {{SectionOnPage("/en-US/docs/Web/API/MediaStreamTrack/stop", "Stopping a video stream")}}, чтобы узнать, как остановить поток целиком. +- Удалены интерфейсы `AudioStreamTrack` и `VideoStreamTrack`, поскольку они уже некоторое время объявлены устаревшими ({{bug(1377146)}}). Их функции перенесены в {{domxref("MediaStreamTrack")}}; дорожки отныне идентифицируются по значению свойств {{domxref("MediaStreamTrack.kind", "kind")}}, таких, как `audio` или `video`. + +### Безопасность + +- Прекращено доверие сертификатам, выданным удостоверяющими центрами Symantec (см. {{bug(1409257)}}; также см. подробности в обсуждении [Mozilla’s Plan for Symantec Roots](https://groups.google.com/forum/#!topic/mozilla.dev.security.policy/FLHRT79e3XE/discussion)). +- Теперь можно использовать {{httpheader("Referrer-Policy")}} для управления ресурсами, полученными через таблицы стилей ({{bug(1330487)}}) — см. {{SectionOnPage("/en-US/docs/Web/HTTP/Headers/Referrer-Policy", "Integration with CSS")}} для получения подробных сведений. + +### Плагины + +_Без изменений._ + +### WebDriver (Marionette) + +#### Изменения API + +- Удалены устаревшие конечные точки без префикса `Marionette:`, `L10n:` или `Addon:` (включая `singeTap`) ({{bug(1504478)}}, {{bug(1504940)}}). + +#### Исправленные ошибки + +- Синтезированные события `Shift` с использованием `WebDriver:PerformActions` не создавали заглавные буквы ({{bug(1405370)}}). +- `WebDriver:Navigate` мог вызвать бесконечное зависание, если низлежащий процесс контента вкладки менялся много раз во время навигации ({{bug(1504807)}}). +- Для улучшения производительности и сокращения количества потребляемой памяти страница, в новой вкладке или окне будет загружаться не `about:newtab`, а `about:blank` ({{bug(1506643)}}). +- Отключено по умолчанию предложение использовать панель блокировки контента, показ которого препятствует взаимодействию с элементами интерфейса ({{bug(1488826)}}). + +## Изменения для разработчиков дополнений + +### Изменения API + +#### Меню + +- Добавлен новый API `browser.menus.overrideContext()`, который может быть вызван из события DOM `contextmenu` и позволяет скрыть все пункты меню по умолчанию, чтобы создать собственное контекстное меню на страницах, относящихся к дополнению. Это контекстное меню может состоять из нескольких пунктов меню верхнего уровня дополнения и может включать элементы контекстного меню вкладок или закладок из других дополнений. См. [блог](https://blog.mozilla.org/addons/2018/11/08/extensions-in-firefox-64/#cm) для получения подробных сведений. + + - Реализован `browser.menus.overrideContext()` (({{bug(1280347)}}). + - Реализована опция `showDefaults: false`, позволяющая скрывать из контекстного меню пункты по умолчанию ({{bug(1367160)}}). + - `documentURLPatterns` теперь может соответствовать адресу `moz-extension://`, даже если используется `browser.menus.overrideContext()`. Таким образом, он может надёжно ограничивать пользовательские пункты меню для определённых документов ({{bug(1498896)}}). + +- С помощью нового свойства `viewTypes` в {{WebExtAPIRef("menus.create()")}} и {{WebExtAPIRef("menus.update()")}} можно ограничить места появления контекстного меню в дополнении ({{bug(1416839)}}). +- {{WebExtAPIRef("menus.update()")}} теперь позволяет обновить значок существующего пункта меню ({{bug(1414566)}}). +- С помощью нового свойства `button` {{WebExtAPIRef("menus.OnClickData")}} дополнения могут определять, какая кнопка мыши использована для выбора пункта меню ({{bug(1469148)}}). + +#### Окна + +- Метод {{WebExtAPIRef("windows.create()")}} обзавёлся опцией `cookieStoreId`, которая определяет `CookieStoreId` для всех вкладок, созданных при открытии окна ({{bug(1393570)}}). + +#### Конфиденциальность + +- Свойство `cookieConfig` {{WebExtAPIRef("privacy.websites")}} — это объект, который может принимать свойство `behavior`. Это свойство теперь может, в свою очередь, принимать новое значение — `reject_trackers`, которое указывает дополнению отвергать куки, связанными с отслеживанием ({{bug(1493057)}}). + +#### API devtools.panels + +- Реализована поддержка метода `Sidebar.setPage()` [`devtools.panels.elements`](/ru/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels/elements) ({{bug(1398734)}}). + +### Изменения манифеста + +- Новое свойство `pinned` ключа манифеста [`page_action`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action) позволяет дополнениям управлять тем, должны ли при установке их действия на странице быть прикреплены к адресной строке или нет ({{bug(1494135)}}). +- В Windows наличие ключей NativeMessagingHosts сначала будет проверяться в 32-разрядном представлении реестра ([Wow6432Node)](https://en.wikipedia.org/wiki/WoW64#Registry_and_file_system)); следует использовать то, что подходит для вашего приложения ({{bug(1494709)}}). +- Объект `search_provider` поля [`chrome_settings_overrides`](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides) отныне может включать новые свойства — `suggest_url`, `suggest_url_post_params` ({{bug(1486819)}}) и `search_url_post_params`. + +## Предыдущие версии + +{{Firefox_for_developers(64)}} diff --git a/files/ru/mozilla/firefox/releases/65/index.md b/files/ru/mozilla/firefox/releases/65/index.md index e7903198b8de98..4785e3f4692800 100644 --- a/files/ru/mozilla/firefox/releases/65/index.md +++ b/files/ru/mozilla/firefox/releases/65/index.md @@ -3,229 +3,234 @@ title: Firefox 65 для разработчиков slug: Mozilla/Firefox/Releases/65 translation_of: Mozilla/Firefox/Releases/65 --- -
{{FirefoxSidebar}}
- -

В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 64 был выпущен 29 января 2019 года.

- -

Изменения для веб-разработчиков

- -

Инструменты разработчика

- -
    -
  • Включён по умолчанию инспектор Flexbox.
  • -
  • Отладчик JavaScript получил поддержку точек останова XHR ({{bug(821610)}}).
  • -
  • Щелчок правой кнопкой по элементу дерева доступности позволяет вывести его в JSON-формате.
  • -
  • Если фон текста является сложным (например, градиент или сложное изображение), инструмент цветового контраста в инспекторе доступности покажет диапазон значений цветового контраста.
  • -
  • Во вкладку «Заголовки» сетевого монитора добавлено отображение политики Referrer для выбранного запроса ({{bug(1496742)}}).
  • -
  • При просмотре трассировки стека (например, в журналах консоли или отладчике JavaScript) вызовы методов фреймворка распознаются и по умолчанию сворачиваются, что облегчает размещение вашего кода.
  • -
  • Подобно традиционным терминалам теперь можно использовать обратный поиск в истории консоли JavaScript(F9 в Windows/Linux или Ctrl + R в macOS, затем ввести искомое, а сочетаниями Ctrl + R/Ctrl + S переключаться между результатами).
  • -
  • Сокращение $0 в консоли JavaScript (ссылается на инспектируемый в данный момент элемент страницы) обзавелось возможностью автодополнения. Например, вы можете ввести $0.te, чтобы получить предложения автодополнения для свойств наподобие $0.textContent.
  • -
  • Правки, внесённые через просмотр правил в Инспекторе, теперь отображаются на вкладке «Изменения» ({{bug(1503920)}}).
  • -
- -

HTML

- -
    -
  • События теперь отправляются на отключённые элементы HTML, то есть элементы {{htmlelement("button")}}, {{htmlelement("fieldset")}}, {{htmlelement("input")}}, {{htmlelement("select")}} и {{htmlelement("textarea")}} с установленными атрибутами disabled ({{bug(329509)}}).
  • -
  • Как в Chrome и Safari, удаление атрибута src у элемента {{htmlelement("iframe")}} загружает в него about:blank ({{bug(1501418)}}) . До этого удаление src не влияло на содержимое iframe.
  • -
  • Добавлена поддержка атрибута {{htmlattrxref("referrerpolicy", "script")}} у элементов {{htmlelement("script")}} ({{bug(1460920)}}).
  • -
- -

CSS

- -
    -
  • Убран префикс у значения crisp-edges свойства {{cssxref("image-rendering")}} ({{bug(1496617)}}).
  • -
  • Значение auto {{cssxref("scrollbar-color")}} теперь разрешается в auto, а не в два цвета ({{bug(1501418)}}).
  • -
  • Реализована поддержка свойств break-* ({{bug(775618)}}): -
      -
    • {{cssxref("break-before")}} → {{cssxref("page-break-before")}}.
    • -
    • {{cssxref("break-after")}} → {{cssxref("page-break-after")}}.
    • -
    • {{cssxref("break-inside")}} → {{cssxref("page-break-inside")}}.
    • -
    -
  • -
  • Реализована поддержка значения anywhere у свойства {{cssxref("overflow-wrap")}} ({{bug(1505786)}}).
  • -
  • Добавлены новые ключевые слова jump-start, jump-end, jump-none и jump-both, используемые внутри временной функции steps() ({{bug(1496619)}}). Функция frames(), ранее использовавшаяся для этого, объявлена устаревшей.
  • -
  • Для совместимости с прочими браузерами добавлены несколько новых значений {{cssxref("appearance", "-webkit-appearance")}}. В частности: -
      -
    • meter, которое отныне используется в качестве значения по умолчанию для элементов {{htmlelement("meter")}}; существующее значение meterbar теперь является псевдонимом meter ({{bug(1501483)}}).
    • -
    • progress-bar, которое отныне используется в качестве значения по умолчанию для элементов {{htmlelement("progress")}}; существующее значение progressbar теперь является псевдонимом progress-bar ({{bug(1501506)}}).
    • -
    • textarea, которое отныне используется в качестве значения по умолчанию для элементов {{htmlelement("textarea")}}; существующее значение textfield-multiline теперь является псевдонимом textarea ({{bug(1507905)}})
    • -
    -
  • -
  • Изменено поведение {{cssxref("user-select")}}, чтобы достичь сходства с прочими браузерами ({{bug(1506547)}}). Конкретно: -
      -
    • user-select: all, установленное на элемент, больше не перекрывает значения user-select дочерних элементов. Пример: -
      <div style="-webkit-user-select: all">All
      -  <div style="-webkit-user-select: none">None</div>
      -</div>
      - <div>, на который установлен none, теперь не выбирается. До этого значение none перекрывалось значением all родительского элемента.
    • -
    • Теперь можно выбирать элементы не-contenteditable, вложенные в элементы contenteditable.
    • -
    • user-select теперь ведёт себя согласованно внутри и снаружи теневого DOM.
    • -
    • Удалено проприетарное значение -moz-text.
    • -
    -
  • -
  • Реализована поддержка переменных среды CSS (функция {{cssxref("env")}}) ({{bug(1462233)}}).
  • -
- -

Удалено

- -
    -
  • Удалена настройка layout.css.shape-outside.enabled; поддержку {{cssxref("shape-outside")}}, {{cssxref("shape-margin")}} и {{cssxref("shape-image-threshold")}} больше нельзя отключить через about:config ({{bug(1504387)}}).
  • -
  • Удалены некоторые специфичные для Firefox значения {{cssxref("user-select")}} — -moz-all, -moz-text, tri-state, element, elements и toggle. См. {{bug(1492958)}} и {{bug(1506547)}}.
  • -
  • Как упоминалось выше, удалена временная функция frames() ({{bug(1496619)}}).
  • -
- -

SVG

- -

Без изменений.

- -

JavaScript

- -
    -
  • Реализована поддержка {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} ({{bug(1504334)}}).
  • -
  • Максимально допустимое значение {{jsxref("String/length","length","","1")}} у строк отныне составляет 2^30 - 2 (~1 ГБ) вместо 2^28 - 1 (~256 МБ) ({{bug(1509542)}}).
  • -
  • Добавлена поддержка свойства globalThis ({{bug(1317422)}}).
  • -
- -

API

+{{FirefoxSidebar}} -

Новые API

+В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 64 был выпущен 29 января 2019 года. -
    -
  • Включена по умолчанию поддержка {{domxref("Streams_API/Using_readable_streams", "Readable Streams", "", "1")}} ({{bug(1505122)}}).
  • -
  • Включена по умолчанию поддержка {{domxref("Storage_Access_API", "Storage Access API", "", "1")}} ({{bug(1513021)}}).
  • -
- -

DOM

+## Изменения для веб-разработчиков -
    -
  • {{domxref("Performance.toJSON()")}} доступен {{domxref("Web_Workers_API", "веб-воркерам", "", "1")}} ({{bug(1504958)}}).
  • -
  • Запросы {{domxref("XMLHttpRequest")}} будут выбрасывать NetworkError, если запрошено содержимое типа Blob, а метод запроса отличен от GET ({{bug(1502599)}}).
  • -
  • Многие функции {{domxref("Fullscreen API", "", "", "1")}} с префиксом -moz- объявлены устаревшими и выдают предупреждение в консоль JavaScript ({{bug(1504946)}}).
  • -
  • {{domxref("WindowOrWorkerGlobalScope.createImageBitmap", "createImageBitmap()")}} отныне поддерживает изображения SVG ({{domxref("SVGImageElement")}}) в качестве источника ({{bug(1500768)}}).
  • -
+### Инструменты разработчика -

События DOM

+- Включён по умолчанию [инспектор Flexbox](/ru/docs/Tools/Page_Inspector/How_to/Examine_Flexbox_layouts). +- [Отладчик JavaScript](/ru/docs/Tools/Debugger) получил поддержку точек останова XHR ({{bug(821610)}}). +- Щелчок правой кнопкой по элементу дерева доступности позволяет [вывести его в JSON-формате](/ru/docs/Tools/Accessibility_inspector#Вывод_дерева_доступности_в_JSON-формате). +- Если фон текста является сложным (например, градиент или сложное изображение), инструмент [цветового контраста](/ru/docs/Tools/Инспектор_доступности#Цветовой_контраст) в инспекторе доступности покажет диапазон значений цветового контраста. +- Во вкладку «Заголовки» [сетевого монитора](/ru/docs/Tools/Network_Monitor) добавлено отображение политики Referrer для выбранного запроса ({{bug(1496742)}}). +- При просмотре трассировки стека (например, в журналах консоли или отладчике JavaScript) вызовы методов фреймворка распознаются и по умолчанию сворачиваются, что облегчает размещение вашего кода. +- Подобно традиционным терминалам теперь можно использовать обратный поиск в истории консоли JavaScript( -
    -
  • За одно событие разрешено не более одного вызова {{domxref("Window.open()")}} ({{bug(675574)}}).
  • -
  • События keyup и keydown в целях улучшения кроссбраузерной совместимости для пользователей CJKT отныне срабатывают во время композиции IME ({{bug(354358)}}).
  • -
- -

Веб-воркеры

- -
    -
  • Поскольку событие {{domxref("SharedWorkerGlobalScope.onconnect")}} является экземпляром {{domxref("MessageEvent")}}, его свойство data теперь представляет собой пустую строку, а не null ({{bug(1508824)}}).
  • -
+ F9 -

Fetch и сервис-воркеры

+ в Windows/Linux или -
    -
  • Метод {{domxref("Response.redirect()")}} теперь корректно выбрасывает TypeError, если в качестве первого параметра указан невалидный URL ({{bug(1503276)}}).
  • -
  • Методы {{domxref("ServiceWorkerContainer.register()")}} и {{domxref("WorkerGlobalScope.importScripts()")}} (когда они используется сервис-воркером) отныне принимают любые файлы с валидными MIME-типом JavaScript ({{bug(1354577)}}).
  • -
  • Добавлена поддержка свойств {{domxref("FetchEvent.replacesClientId")}} и {{domxref("FetchEvent.resultingClientId")}} ({{bug(1264177)}}).
  • -
  • Реализована поддержка {{domxref("ServiceWorkerGlobalScope.onmessageerror")}} и {{domxref("ServiceWorkerContainer.onmessageerror")}} ({{bug(1399446)}}).
  • -
  • Заголовок {{httpheader("Origin")}} больше не устанавливается у запросов Fetch с методом {{HTTPMethod("HEAD")}} или {{HTTPMethod("GET")}} ({{bug(1508661)}}).
  • -
+ Ctrl -

Media, Web Audio и WebRTC

+ \+ -
    -
  • Словарь {{domxref("WebRTC API", "WebRTC", "", "1")}} {{domxref("RTCIceCandidateStats")}} обновлён в соответствии с последними изменениями спецификации ({{bug(1324788)}}, {{bug(1489040)}}).
  • -
  • События pause и resume {{domxref("MediaRecorder")}} (и соответствующие свойства обработчика событий — {{domxref("MediaRecorder.onpause")}} и {{domxref("MediaRecorder.onresume")}}) не были реализованы ранее, хотя таблицы совместимости утверждали обратное. Теперь они реализованы ({{bug(1458538)}}, {{bug(1514016)}}).
  • -
+ R -

Canvas и WebGL

+ в macOS, затем ввести искомое, а сочетаниями -
    -
  • В контекстах WebGL1 и WebGL2 доступно использование расширений сжатия текстур {{domxref("WebGL API", "WebGL", "", "1")}} {{domxref("EXT_texture_compression_bptc")}} и {{domxref("EXT_texture_compression_rgtc")}} ({{bug(1507263)}}).
  • -
+ Ctrl -

Удалено

+ \+ -
    -
  • Отключена мутация событий в теневых деревьях ({{bug(1489858)}}).
  • -
  • Удалено нестандартное свойство currentTime {{domxref("MediaStream")}} ({{bug(1502927)}}).
  • -
  • Удалены настройки dom.webcomponents.shadowdom.enabled и dom.webcomponents.customelements.enabled — больше нельзя отключить поддержку Shadow DOM и Custom Elements через about:config ({{bug(1503019)}}).
  • -
  • Удалено нестандартное событие DOM text, срабатывавшее, чтобы уведомить пользовательский интерфейс редактора браузера о строках данных композиции IME и диапазоне выбора ({{bug(1288640)}}).
  • -
  • Событие {{event("keypress")}} больше не срабатывает для непечатаемых клавиш ({{bug(968056)}}) за исключением клавиши Enter и комбинаций Shift + Enter и Ctrl + Enter (сохранены для кроссбраузерной совместимости).
  • -
+ R -

Безопасность

+ / - + Ctrl -

Сеть

+ \+ -

Без изменений.

+ S -

Плагины

+ переключаться между результатами). -

Без изменений.

+- Сокращение `$0` в консоли JavaScript (ссылается на инспектируемый в данный момент элемент страницы) обзавелось возможностью автодополнения. Например, вы можете ввести `$0.te`, чтобы получить предложения автодополнения для свойств наподобие `$0.textContent`. +- Правки, внесённые через просмотр правил в Инспекторе, теперь отображаются на вкладке «Изменения» ({{bug(1503920)}}). -

WebDriver (Marionette)

+### HTML -

Изменения API

+- События теперь отправляются на отключённые элементы HTML, то есть элементы {{htmlelement("button")}}, {{htmlelement("fieldset")}}, {{htmlelement("input")}}, {{htmlelement("select")}} и {{htmlelement("textarea")}} с установленными атрибутами `disabled` ({{bug(329509)}}). +- Как в Chrome и Safari, удаление атрибута `src` у элемента {{htmlelement("iframe")}} загружает в него `about:blank` ({{bug(1501418)}}) . До этого удаление `src` не влияло на содержимое `iframe`. +- Добавлена поддержка атрибута {{htmlattrxref("referrerpolicy", "script")}} у элементов {{htmlelement("script")}} ({{bug(1460920)}}). -
    -
  • WebDriver:ElementSendKeys при проверке интерактивности обрабатывает <input type=file> менее строго, позволяя скрывать эти элементы без возникновения ошибки not interactable. Если требуется строгая проверка, следует использовать strictFileInteractability ({{bug(1502864)}}).
  • -
+### CSS -

Исправленные ошибки

+- Убран префикс у значения `crisp-edges` свойства {{cssxref("image-rendering")}} ({{bug(1496617)}}). +- Значение `auto` {{cssxref("scrollbar-color")}} теперь разрешается в `auto`, а не в два цвета ({{bug(1501418)}}). +- Реализована поддержка свойств `break-*` ({{bug(775618)}}): -
    -
  • Команды для манипуляций окнами WebDriver:FullscreenWindow, WebDriver:MinimizeWindow, WebDriver:MaximizeWindow и WebDriver:SetWindowRect стали более стабильными ({{bug(1492499)}}). При определённых обстоятельствах они больше не вызывают бесконечное зависание, но ожидают в течение 5 секунд, если запрошенное состояние окна не может быть достигнуто ({{bug(1521527)}}).
  • -
  • WebDriver:ElementClick отныне корректно высчитывает центр элемента для щелчка по нему, что позволяет взаимодействовать с элементами, имеющими размер 1x1 пиксель ({{bug(1499360)}}).
  • -
+ - {{cssxref("break-before")}} → {{cssxref("page-break-before")}}. + - {{cssxref("break-after")}} → {{cssxref("page-break-after")}}. + - {{cssxref("break-inside")}} → {{cssxref("page-break-inside")}}. -

Прочее

+- Реализована поддержка значения `anywhere` у свойства {{cssxref("overflow-wrap")}} ({{bug(1505786)}}). +- Добавлены новые ключевые слова `jump-start`, `jump-end`, `jump-none` и `jump-both`, используемые внутри [временной функции steps()]() ({{bug(1496619)}}). Функция `frames()`, ранее использовавшаяся для этого, объявлена устаревшей. +- Для совместимости с прочими браузерами добавлены несколько новых значений {{cssxref("appearance", "-webkit-appearance")}}. В частности: -
    -
  • При возникновении ошибки unexpected alert open выводятся более понятные сообщения ({{bug(1502268)}}).
  • -
+ - `meter`, которое отныне используется в качестве значения по умолчанию для элементов {{htmlelement("meter")}}; существующее значение `meterbar` теперь является псевдонимом `meter` ({{bug(1501483)}}). + - `progress-bar`, которое отныне используется в качестве значения по умолчанию для элементов {{htmlelement("progress")}}; существующее значение `progressbar` теперь является псевдонимом `progress-bar` ({{bug(1501506)}}). + - `textarea`, которое отныне используется в качестве значения по умолчанию для элементов {{htmlelement("textarea")}}; существующее значение `textfield-multiline` теперь является псевдонимом `textarea` ({{bug(1507905)}}) -

Прочее

+- Изменено поведение {{cssxref("user-select")}}, чтобы достичь сходства с прочими браузерами ({{bug(1506547)}}). Конкретно: -
    -
  • Добавлена поддержка изображений в формате WebP ({{bug(1294490)}}). + - `user-select: all`, установленное на элемент, больше не перекрывает значения `user-select` дочерних элементов. Пример: -
      -
    • Кроме того, для улучшения кросс-браузерной совместимости MIME-тип WebP (image/webp) был добавлен в стандартный заголовок HTTP-запроса {{httpheader ("Accept")}} для файлов HTML ({{bug(1507691)}}).
    • -
    -
  • -
+ ```html +
All +
None
+
+ ``` -

Изменения для разработчиков дополнений

+ `
`, на который установлен `none`, теперь не выбирается. До этого значение `none` перекрывалось значением `all` родительского элемента. -

Изменения API

+ - Теперь можно выбирать элементы не-`contenteditable`, вложенные в элементы `contenteditable`. + - `user-select` теперь ведёт себя согласованно внутри и снаружи теневого DOM. + - Удалено проприетарное значение `-moz-text`. -

Вкладки

+- Реализована поддержка переменных среды CSS (функция {{cssxref("env")}}) ({{bug(1462233)}}). -
    -
  • {{WebExtAPIRef("tabs", "tabs API", "", "1")}} обзавёлся поддержкой наследников вкладок — вкладке можно назначить ID вкладки-наследника, которая станет активной, когда первая вкладка закроется ({{bug(1500479)}}, см. также эту запись в блоге для получения подробных сведений). В частности: +#### Удалено -
      -
    • Тип {{WebExtAPIRef("tabs.Tab")}} получил свойство successorId, используемое для хранения/получения ID вкладки-наследника.
    • -
    • Колбэк обработчика событий {{WebExtAPIRef("tabs.onActivated")}} получил новый параметр, previousTabId, содержащий ID предыдущей активированной вкладки, если она всё ещё открыта.
    • -
    • Объект updateProperties функции {{WebExtAPIRef("tabs.update()")}} обзавёлся новым свойством successorTabId, которое служит для его обновления.
    • -
    • successorTabId также возвращается функциями наподобие {{WebExtAPIRef("tabs.get()")}} и {{WebExtAPIRef("tabs.query()")}}.
    • -
    • Новая функция tabs.moveInSuccession() позволяет массово манипулировать наследниками вкладок.
    • -
    -
  • -
+- Удалена настройка `layout.css.shape-outside.enabled`; поддержку {{cssxref("shape-outside")}}, {{cssxref("shape-margin")}} и {{cssxref("shape-image-threshold")}} больше нельзя отключить через `about:config` ({{bug(1504387)}}). +- Удалены некоторые специфичные для Firefox значения {{cssxref("user-select")}} — `-moz-all`, `-moz-text`, `tri-state`, `element`, `elements` и `toggle`. См. {{bug(1492958)}} и {{bug(1506547)}}. +- Как упоминалось выше, удалена временная функция `frames()` ({{bug(1496619)}}). -

Изменения манифеста

+### SVG -

Без изменений.

+_Без изменений._ -

Прочее

+### JavaScript -
    -
  • Версия для Android теперь поддерживает свойства headerURL/theme_frame для тем Webextension ({{bug(1429488)}}).
  • -
+- Реализована поддержка {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} ({{bug(1504334)}}). +- Максимально допустимое значение {{jsxref("String/length","length","","1")}} у строк отныне составляет `2^30 - 2` (\~1 ГБ) вместо `2^28 - 1` (\~256 МБ) ({{bug(1509542)}}). +- Добавлена поддержка свойства [`globalThis`](https://github.com/tc39/proposal-global) ({{bug(1317422)}}). -

Предыдущие версии

+### API -

{{Firefox_for_developers(65)}}

+#### Новые API + +- Включена по умолчанию поддержка {{domxref("Streams_API/Using_readable_streams", "Readable Streams", "", "1")}} ({{bug(1505122)}}). +- Включена по умолчанию поддержка {{domxref("Storage_Access_API", "Storage Access API", "", "1")}} ({{bug(1513021)}}). + +#### DOM + +- {{domxref("Performance.toJSON()")}} доступен {{domxref("Web_Workers_API", "веб-воркерам", "", "1")}} ({{bug(1504958)}}). +- Запросы {{domxref("XMLHttpRequest")}} будут выбрасывать `NetworkError`, если запрошено содержимое типа `Blob`, а метод запроса отличен от `GET` ({{bug(1502599)}}). +- Многие функции {{domxref("Fullscreen API", "", "", "1")}} с префиксом `-moz-` объявлены устаревшими и выдают предупреждение в консоль JavaScript ({{bug(1504946)}}). +- {{domxref("WindowOrWorkerGlobalScope.createImageBitmap", "createImageBitmap()")}} отныне поддерживает изображения SVG ({{domxref("SVGImageElement")}}) в качестве источника ({{bug(1500768)}}). + +#### События DOM + +- За одно событие разрешено не более одного вызова {{domxref("Window.open()")}} ({{bug(675574)}}). +- События [`keyup`](/en-US/docs/Web/Events/keyup) и [`keydown`](/en-US/docs/Web/Events/keydown) в целях улучшения кроссбраузерной совместимости для пользователей CJKT отныне срабатывают во время композиции IME ({{bug(354358)}}). + +#### Веб-воркеры + +- Поскольку событие {{domxref("SharedWorkerGlobalScope.onconnect")}} является экземпляром {{domxref("MessageEvent")}}, его свойство `data` теперь представляет собой пустую строку, а не `null` ({{bug(1508824)}}). + +#### Fetch и сервис-воркеры + +- Метод {{domxref("Response.redirect()")}} теперь корректно выбрасывает `TypeError`, если в качестве первого параметра указан невалидный URL ({{bug(1503276)}}). +- Методы {{domxref("ServiceWorkerContainer.register()")}} и {{domxref("WorkerGlobalScope.importScripts()")}} (когда они используется сервис-воркером) отныне принимают любые файлы с валидными [MIME-типом JavaScript](/ru/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textjavascript) ({{bug(1354577)}}). +- Добавлена поддержка свойств {{domxref("FetchEvent.replacesClientId")}} и {{domxref("FetchEvent.resultingClientId")}} ({{bug(1264177)}}). +- Реализована поддержка {{domxref("ServiceWorkerGlobalScope.onmessageerror")}} и {{domxref("ServiceWorkerContainer.onmessageerror")}} ({{bug(1399446)}}). +- Заголовок {{httpheader("Origin")}} больше не устанавливается у запросов Fetch с методом {{HTTPMethod("HEAD")}} или {{HTTPMethod("GET")}} ({{bug(1508661)}}). + +#### Media, Web Audio и WebRTC + +- Словарь {{domxref("WebRTC API", "WebRTC", "", "1")}} {{domxref("RTCIceCandidateStats")}} обновлён в соответствии с последними изменениями спецификации ({{bug(1324788)}}, {{bug(1489040)}}). +- События `pause` и `resume` {{domxref("MediaRecorder")}} (и соответствующие свойства обработчика событий — {{domxref("MediaRecorder.onpause")}} и {{domxref("MediaRecorder.onresume")}}) не были реализованы ранее, хотя таблицы совместимости утверждали обратное. Теперь они реализованы ({{bug(1458538)}}, {{bug(1514016)}}). + +#### Canvas и WebGL + +- В контекстах WebGL1 и WebGL2 доступно использование расширений сжатия текстур {{domxref("WebGL API", "WebGL", "", "1")}} {{domxref("EXT_texture_compression_bptc")}} и {{domxref("EXT_texture_compression_rgtc")}} ({{bug(1507263)}}). + +#### Удалено + +- Отключена [мутация событий](/ru/docs/Web/Guide/Events/Mutation_events) в теневых деревьях ({{bug(1489858)}}). +- Удалено нестандартное свойство `currentTime` {{domxref("MediaStream")}} ({{bug(1502927)}}). +- Удалены настройки `dom.webcomponents.shadowdom.enabled` и `dom.webcomponents.customelements.enabled` — больше нельзя отключить поддержку Shadow DOM и Custom Elements через `about:config` ({{bug(1503019)}}). +- Удалено нестандартное событие DOM `text`, срабатывавшее, чтобы уведомить пользовательский интерфейс редактора браузера о строках данных композиции IME и диапазоне выбора ({{bug(1288640)}}). +- Событие {{event("keypress")}} больше не срабатывает для [непечатаемых клавиш]() ({{bug(968056)}}) за исключением клавиши + + Enter + + и комбинаций + + Shift + + \+ + + Enter + + и + + Ctrl + + \+ + + Enter + + (сохранены для кроссбраузерной совместимости). + +### Безопасность + +- К допустимым заголовкам запросов отныне применяются дополнительные ограничения CORS ({{bug(1483815)}}, см. также [whatwg fetch issue 382: CORS-safelisted request headers should be restricted according to RFC 7231](https://github.com/whatwg/fetch/issues/382) для получения дополнительных сведений). + +### Сеть + +_Без изменений._ + +### Плагины + +_Без изменений._ + +### WebDriver (Marionette) + +#### Изменения API + +- `WebDriver:ElementSendKeys` при проверке интерактивности обрабатывает `` менее строго, позволяя скрывать эти элементы без возникновения ошибки `not interactable`. Если требуется строгая проверка, следует использовать `strictFileInteractability` ({{bug(1502864)}}). + +#### Исправленные ошибки + +- Команды для манипуляций окнами `WebDriver:FullscreenWindow`, `WebDriver:MinimizeWindow`, `WebDriver:MaximizeWindow` и `WebDriver:SetWindowRect` стали более стабильными ({{bug(1492499)}}). При определённых обстоятельствах они больше не вызывают бесконечное зависание, но ожидают в течение 5 секунд, если запрошенное состояние окна не может быть достигнуто ({{bug(1521527)}}). +- `WebDriver:ElementClick` отныне корректно высчитывает центр элемента для щелчка по нему, что позволяет взаимодействовать с элементами, имеющими размер 1x1 пиксель ({{bug(1499360)}}). + +#### Прочее + +- При возникновении ошибки `unexpected alert open` выводятся более понятные сообщения ({{bug(1502268)}}). + +### Прочее + +- Добавлена поддержка изображений в формате [WebP](/ru/docs/Glossary/webp) ({{bug(1294490)}}). + + - Кроме того, для улучшения кросс-браузерной совместимости MIME-тип WebP (`image/webp`) был добавлен в стандартный заголовок HTTP-запроса {{httpheader ("Accept")}} для файлов HTML ({{bug(1507691)}}). + +## Изменения для разработчиков дополнений + +### Изменения API + +#### Вкладки + +- {{WebExtAPIRef("tabs", "tabs API", "", "1")}} обзавёлся поддержкой наследников вкладок — вкладке можно назначить ID вкладки-наследника, которая станет активной, когда первая вкладка закроется ({{bug(1500479)}}, см. также [эту запись в блоге](https://qiita.com/piroor/items/ea7e727735631c45a366) для получения подробных сведений). В частности: + + - Тип {{WebExtAPIRef("tabs.Tab")}} получил свойство `successorId`, используемое для хранения/получения ID вкладки-наследника. + - Колбэк обработчика событий {{WebExtAPIRef("tabs.onActivated")}} получил новый параметр, `previousTabId`, содержащий ID предыдущей активированной вкладки, если она всё ещё открыта. + - Объект `updateProperties` функции {{WebExtAPIRef("tabs.update()")}} обзавёлся новым свойством `successorTabId`, которое служит для его обновления. + - `successorTabId` также возвращается функциями наподобие {{WebExtAPIRef("tabs.get()")}} и {{WebExtAPIRef("tabs.query()")}}. + - Новая функция `tabs.moveInSuccession()` позволяет массово манипулировать наследниками вкладок. + +### Изменения манифеста + +_Без изменений._ + +### Прочее + +- Версия для Android теперь поддерживает свойства `headerURL`/`theme_frame` для [тем Webextension](/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme) ({{bug(1429488)}}). + +## Предыдущие версии + +{{Firefox_for_developers(65)}} diff --git a/files/ru/mozilla/firefox/releases/68/index.md b/files/ru/mozilla/firefox/releases/68/index.md index 2fbc3fd3edb61a..b92547ef58024b 100644 --- a/files/ru/mozilla/firefox/releases/68/index.md +++ b/files/ru/mozilla/firefox/releases/68/index.md @@ -8,227 +8,197 @@ tags: - Релиз translation_of: Mozilla/Firefox/Releases/68 --- -

{{FirefoxSidebar}}

+{{FirefoxSidebar}} -

Эта статья содержит информацию об изменениях в Firefox 68, которые касаются разработчиков. Firefox 68 был выпущен 9 июля 2019.

+Эта статья содержит информацию об изменениях в Firefox 68, которые касаются разработчиков. Firefox 68 был выпущен 9 июля 2019. -

Изменения для веб разработчиков

+## Изменения для веб разработчиков -

Инструменты разработчика

+### Инструменты разработчика -

Браузер/веб консоль

+#### Браузер/веб консоль -
    -
  • Веб консоль теперь предоставляет больше информации о CSS предупреждениях, включая древо DOM-элементов, которые используют CSS-правило ({{bug(1093953)}}).
  • -
  • Теперь вы можете фильтровать контент Веб консоли, пользуясь регулярными выражениями ({{bug(1441079)}}).
  • -
  • The Browser console now allows you to show or hide messages from the content process by setting or clearing the checkbox labeled Show Content Messages ({{bug(1260877)}}).
  • -
+- Веб консоль теперь предоставляет [больше информации о CSS предупреждениях](/ru/docs/Tools/Web_Console/Console_messages#CSS), включая древо DOM-элементов, которые используют CSS-правило ({{bug(1093953)}}). +- Теперь вы можете фильтровать контент Веб консоли, пользуясь регулярными выражениями ({{bug(1441079)}}). +- The Browser console now allows you to show or hide messages from the content process by setting or clearing the checkbox labeled _Show Content Messages_ ({{bug(1260877)}}). -

JavaScript дебаггер

+#### JavaScript дебаггер -
    -
  • Теперь вы можете осуществлять Поиск по всем файлам проекта с помощью дебаггера, нажав Shift + Ctrl + F (Windows or Linux) или Shift + Cmd + F (macOS) ({{bug(1320325)}}).
  • -
+- Теперь вы можете осуществлять [Поиск](/ru/docs/Tools/Debugger/How_to/Search#Searching_in_all_files) по всем файлам проекта с помощью дебаггера, нажав -

Сетевой монитор

+ Shift -
    -
  • В списке запросов Сетевой монитора теперь можно блокировать определённые URL ({{bug(1151368)}}).
  • -
  • Теперь вы можете повторно отправить запрос без редактирования метода, URL, параметров и заголовков, используя команду Переотправить в контекстном меню ({{bug(1422014)}}).
  • -
  • Контекстное меню Сетевого монитора, вкладка Заголовки, теперь позволяет вам скопировать всю или же некоторую информацию о заголовках в формате JSON ({{bug(1442249)}}).
  • -
+ \+ -

Инспектор страниц

+ Ctrl -
    -
  • На панель со стилями в Инспекторе страниц, была добавлена кнопка, позволяющая переключиться в режим симуляции печати ({{bug(1534984)}}).
  • -
  • Панель со шрифтами теперь имеет ползунок для изменения letter-spacing ({{bug(1536237)}}).
  • -
  • Значок предупреждения появляется рядом с неподдерживаемыми CSS правилами или правилами, которые имеют некорректные значения, для того, чтобы помочь вам понять, почему некоторые стили не были применены ({{bug(1306054)}}).
  • -
+ \+ -

Инспектор хранилища

+ F - + (Windows or Linux) или -

Прочее

+ Shift -
    -
  • Инспектор поддержки доступности теперь имеет функцию Проверить на ошибки, которая включает в себя число инструментов аудита, чтобы выявить проблемы с доступностью на ваших веб-страницах. Первая доступная проверка — контраст, позволяющая выявить проблемы с цветовым контрастом.
  • -
  • Надстройка контроля видимости внутренних расширений (системных дополнений и скрытых) на странице about:debugging была изменена с devtools.aboutdebugging.showSystemAddons на devtools.aboutdebugging.showHiddenAddons ({{bug(1544372)}}).
  • -
  • Режим адаптивного дизайна был переработан — окошко Параметры устройства (меню выбора устройства > Изменить список...) теперь более интуитивное и стало проще в использовании ({{bug(1487857)}}).
  • -
+ \+ -

Удалённые

+ Cmd -
    -
  • Флажок "Включить дополнение при отладке" был удалён со страницы about:debugging ({{bug(1544813)}}).
  • -
+ \+ -

HTML

+ F -
    -
  • Элемент {{HTMLElement("track")}} — предоставленный {{domxref("HTMLTrackElement")}} — теперь получает {{domxref("HTMLTrackElement.cuechange_event", "cuechange")}} событие в дополнение к {{domxref("TextTrack")}}, если текст трека содержится в медиа элементе ({{bug(1548731)}}).
  • -
  • {{htmlelement("link")}} элементы снова поддерживают атрибут disabled, с другим поведением. Когда disabled установлен на элементе <link> вместе с rel="stylesheet", то стили не загружаются во время загрузки страницы, будут загружены лишь тогда, когда атрибут disabled будет изменён на false, либо удалён ({{bug(1281135)}}).
  • -
+ (macOS) ({{bug(1320325)}}). -

Удалённые

+#### Сетевой монитор - +- В списке[ запросов](/ru/docs/Tools/Network_Monitor/request_list#Filtering_requests) Сетевой монитора теперь можно блокировать определённые URL ({{bug(1151368)}}). +- Теперь вы можете повторно отправить запрос без редактирования метода, URL, параметров и заголовков, используя команду [Переотправить](/ru/docs/Tools/Network_Monitor/request_list#Context_menu) в контекстном меню ({{bug(1422014)}}). +- Контекстное меню Сетевого монитора, вкладка [Заголовки](/ru/docs/Tools/Network_Monitor/request_details#Headers), теперь позволяет вам скопировать всю или же некоторую информацию о заголовках в формате JSON ({{bug(1442249)}}). -

CSS

+#### Инспектор страниц -
    -
  • CSS Scroll Snapping был обновлён до последней версии спецификации ({{bug(1312163)}}) и ({{bug(1544136)}}): +- На панель со [стилями](/ru/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Examine_CSS_rules) в Инспекторе страниц, была добавлена кнопка, позволяющая переключиться в режим симуляции печати ({{bug(1534984)}}). +- [Панель со шрифтами](/ru/docs/Tools/Page_Inspector/How_to/Edit_fonts) теперь имеет ползунок для изменения `letter-spacing` ({{bug(1536237)}}). +- Значок предупреждения появляется рядом с неподдерживаемыми CSS правилами или правилами, которые имеют некорректные значения, для того, чтобы помочь вам понять, почему некоторые стили не были применены ({{bug(1306054)}}). -
      -
    • Свойство scroll-padding ({{bug(1373832)}})
    • -
    • Свойство scroll-margin ({{bug(1373833)}})
    • -
    • {{CSSxRef("scroll-snap-align")}} ({{bug(1373835)}})
    • -
    -
  • -
  • Свойство {{CSSxRef("-webkit-line-clamp")}} было добавлено для обратной совместимости с другими браузерами ({{bug(866102)}}).
  • -
  • Для псевдо-элементов была добавлена поддержка {{CSSxRef("::marker")}} ({{bug(205202)}}) и псевдо ::marker для анимации ({{bug(1538618)}})
  • -
  • Мы изменили {{CSSxRef("currentColor")}} на вычисляемое значение (кроме свойства {{cssxref("color")}}) ({{bug(760345)}}).
  • -
  • Support has been fixed for the ch length unit so it now matches the spec (fallback for no '0' glyph, vertical metrics) ({{bug(282126)}})
  • -
  • Свойство {{CSSxRef("counter-set")}} реализовано. ({{bug(1518201)}}).
  • -
  • Мы реализовали нумерацию списков, используя встроенный счётчик "list-item"; это исправило баги с нумерацией списков ({{bug(288704)}}).
  • -
  • Selector matching and parsing support has been implemented for ::part() ({{bug(1545430)}}) and ({{bug(1545425)}}).
  • -
  • CSS Transforms теперь поддерживаются в косвенно рендерящихся вещах e.g.) {{SVGElement("mask")}}, {{SVGElement("marker")}}, {{SVGElement("pattern")}}, {{SVGElement("clipPath")}} ({{bug(1323962)}}).
  • -
  • -

    While we're keeping the prefixed versions of the various gradient properties ({{cssxref("linear-gradient")}}, {{cssxref("radial-gradient")}}, and {{cssxref("repeating-radial-gradient")}} available for compatibility reasons, we have revised how they're parsed so that they're handled much more like the non-prefixed versions. This means that certain existing styles won't work correctly.

    +#### Инспектор хранилища -

    In particular, the complicated syntax taking both an angle and a position will no longer work, and the to keyword in the <side-or-corner> parameter is not required for the prefixed gradient properties. You are encouraged to use the standard, non-prefixed gradient properties instead, as they're now widely supported ({{bug(1547939)}}).

    -
  • -
+- Теперь вы можете [удалять локальные или сессионные](/ru/docs/Tools/Storage_Inspector#Local_storage_Session_storage) записи в хранилище, выбрав строку в инспекторе хранилища и нажав кнопку backspace ({{bug(1522893)}}). -

Удалённые

+#### Прочее -
    -
  • {{CSSxRef("scroll-snap-coordinate")}}, {{CSSxRef("scroll-snap-destination")}}, {{CSSxRef("scroll-snap-type-x")}} и {{CSSxRef("scroll-snap-type-y")}} были удалены.
  • -
  • Свойство {{CSSxRef("scroll-snap-type")}} стало лонгхэнд, старый шортханд синтаксис scroll-snap-type:mandatory больше не работает.
  • -
+- [Инспектор поддержки доступности](/ru/docs/Tools/Accessibility_inspector) теперь имеет функцию _Проверить на ошибки_, которая включает в себя число инструментов аудита, чтобы выявить проблемы с доступностью на ваших веб-страницах. Первая доступная проверка — _контраст_, позволяющая выявить проблемы с цветовым контрастом. +- Надстройка контроля видимости внутренних расширений (системных дополнений и скрытых) на странице [about:debugging](/ru/docs/Tools/about:debugging) была изменена с `devtools.aboutdebugging.showSystemAddons` на `devtools.aboutdebugging.showHiddenAddons` ({{bug(1544372)}}). +- [Режим адаптивного дизайна](/ru/docs/Tools/Responsive_Design_Mode) был переработан — окошко _Параметры устройства_ (меню выбора устройства > _Изменить список..._) теперь более интуитивное и стало проще в использовании ({{bug(1487857)}}). -

SVG

+#### Удалённые -

Без изменений.

+- Флажок "Включить дополнение при отладке" был удалён со страницы [about:debugging](/ru/docs/Tools/about:debugging) ({{bug(1544813)}}). -

JavaScript

+### HTML -
    -
  • Новый примитив {{jsxref("BigInt")}} теперь включён по умолчанию ({{bug(1527902)}}).
  • -
+- Элемент {{HTMLElement("track")}} — предоставленный {{domxref("HTMLTrackElement")}} — теперь получает {{domxref("HTMLTrackElement.cuechange_event", "cuechange")}} событие в дополнение к {{domxref("TextTrack")}}, если текст трека содержится в медиа элементе ({{bug(1548731)}}). +- {{htmlelement("link")}} элементы снова поддерживают атрибут `disabled`, с другим поведением. Когда `disabled` установлен на элементе `` вместе с `rel="stylesheet"`, то стили не загружаются во время загрузки страницы, будут загружены лишь тогда, когда атрибут `disabled` будет изменён на `false`, либо удалён ({{bug(1281135)}}). -

APIs

+#### Удалённые -

Объектная модель CSS (CSSOM)

+- [``](/en-US/docs/Web/HTML/Element/meta) больше не поддерживается ({{bug(1457503)}}). -
    -
  • Наследие свойств {{domxref("CSSStyleSheet.rules", "rules")}}, {{domxref("CSSStyleSheet.addRule", "addRule()")}} и {{domxref("CSSStyleSheet.removeRule", "removeRule()")}} методов было добавлено в интерфейс {{domxref("CSSStyleSheet")}}. Это было введено в Internet Explorer 9 и никогда полностью не искоренялось, они добавили это для улучшения обратной совместимости с небольшим процентом сайтов, которые всё ещё пользовались этим ({{bug(1545823)}}).
  • -
+### CSS -

DOM

+- [CSS Scroll Snapping](/ru/docs/Web/CSS/CSS_Scroll_Snap) был обновлён до последней версии спецификации ({{bug(1312163)}}) и ({{bug(1544136)}}): -
    -
  • Visual Viewport API было включено по умолчанию на Android ({{bug(1512813)}}). Добавление API для настольной версии Firefox теперь отслеживается в {{bug(1551302)}}.
  • -
  • Возможность {{domxref("Window")}} noreferrer теперь поддерживается; если указана, то новый контент окон будет загружен без передачи имени хоста, IP адреса, URL и прочей идентифицирующей устройство информации ({{bug(1527287)}}).
  • -
  • Метод {{domxref("HTMLImageElement.decode", "decode()")}} на HTMLImageElement реализован. Это может быть использовано для запуска загрузки и декодирования изображения до добавления его в DOM ({{bug(1501794)}}).
  • -
  • {{domxref("XMLHttpRequest")}} был обновлён и больше не принимает нестандартное значение moz-chunked-arraybuffer для {{domxref("XMLHttpRequest.responseType", "responseType")}}. Код, использующий это, должен быть обновлён, чтобы использовать Fetch API как поток ({{bug(1120171)}}).
  • -
  • XMLHttpRequest теперь выводит предупреждения в консоль, если выполняется синхронный запрос во время обработки {{domxref("Window.unload_event", "unload")}}, {{domxref("Window.beforeunload_event", "beforeunload")}}, {{domxref("Window.pagehide_event", "pagehide")}} ({{bug(980902)}}).
  • -
  • Свойство {{domxref("Document.cookie", "cookie")}} было перенесено из интерфейса {{domxref("HTMLDocument")}} в {{domxref("Document")}}, позволяя документам отличным от {{Glossary("HTML")}} использовать куки ({{bug(144795)}}).
  • -
  • Методы {{domxref("HTMLElement.focus()")}} и {{domxref("SVGElement.focus()")}} теперь принимают необязательный объект, который может содержать булеву опцию preventScroll, определяющую: должна или не должна происходить блокировка браузером прокрутки элемента с фокусом в поле зрения ({{bug(1374045)}}).
  • -
+ - Свойство `scroll-padding` ({{bug(1373832)}}) + - Свойство `scroll-margin` ({{bug(1373833)}}) + - {{CSSxRef("scroll-snap-align")}} ({{bug(1373835)}}) -

События DOM

+- Свойство {{CSSxRef("-webkit-line-clamp")}} было добавлено для обратной совместимости с другими браузерами ({{bug(866102)}}). +- Для псевдо-элементов была добавлена поддержка {{CSSxRef("::marker")}} ({{bug(205202)}}) и псевдо `::marker` для анимации ({{bug(1538618)}}) +- Мы изменили {{CSSxRef("currentColor")}} на вычисляемое значение (кроме свойства {{cssxref("color")}}) ({{bug(760345)}}). +- Support has been fixed for the `ch` length unit so it now matches the spec (fallback for no '0' glyph, vertical metrics) ({{bug(282126)}}) +- Свойство {{CSSxRef("counter-set")}} реализовано. ({{bug(1518201)}}). +- Мы реализовали нумерацию списков, используя встроенный счётчик "list-item"; это исправило баги с нумерацией списков ({{bug(288704)}}). +- Selector matching and parsing support has been implemented for [`::part()`](/en-US/docs/Web/CSS/::part) ({{bug(1545430)}}) and ({{bug(1545425)}}). +- [CSS Transforms](/ru/docs/Web/CSS/CSS_Transforms) теперь поддерживаются в косвенно рендерящихся вещах e.g.) {{SVGElement("mask")}}, {{SVGElement("marker")}}, {{SVGElement("pattern")}}, {{SVGElement("clipPath")}} ({{bug(1323962)}}). +- While we're keeping the prefixed versions of the various gradient properties ({{cssxref("linear-gradient")}}, {{cssxref("radial-gradient")}}, and {{cssxref("repeating-radial-gradient")}} available for compatibility reasons, we have revised how they're parsed so that they're handled much more like the non-prefixed versions. This means that certain existing styles won't work correctly. -
    -
  • Firefox для Android больше не отправляет неправильное событие {{domxref("Window.resize_event", "resize")}}, пока не будет отрисован первый фрейм; это улучшит совместимость с сайтами, которые не ожидают, что это событие произойдёт ({{bug(1528052)}}).
  • -
  • Рассылка событий для неосновных кнопок мыши было изменено ближе к спецификации; Событие {{domxref("Element.click_event", "click")}} больше не вызывается, когда неосновные кнопки мыши были нажат, в отличие от события {{domxref("Element.auxclick_event", "auxclick")}}. В дополнение, {{domxref("Element.dblclick_event", "dblclick")}} больше на срабатывает для неосновных кнопок мыши ({{bug(1379466)}}).
  • -
  • Собственное свойство {{domxref("MouseEvent.mozPressure")}} объявлено устаревшим и теперь при вызове сопровождается предупреждением в консоли ({{bug(1165211)}}).
  • -
+ In particular, the complicated syntax taking both an angle and a position will no longer work, and the `to` keyword in the `` parameter is not required for the prefixed gradient properties. You are encouraged to use the standard, non-prefixed gradient properties instead, as they're now widely supported ({{bug(1547939)}}). -

Медиа, Веб-аудио и WebRTC

+#### Удалённые -
    -
  • WebRTC был обновлён и распознаёт null, отправленное в обработчик события {{domxref("RTCPeerConnection.icecandidate", "icecandidate")}}, сообщая о получении, вместо того, чтобы никак не реагировать на это; когда это происходит, ICE состояние ({{domxref("RTCPeerConnection.iceGatheringState", "iceGatheringState")}}) становится complete ({{bug(1318167)}}).
  • -
  • Методы {{domxref("RTCRtpReceiver")}},{{domxref("RTCRtpReceiver.getContributingSources", "getContributingSources()")}} и {{domxref("RTCRtpReceiver.getSynchronizationSources", "getSynchronizationSources()")}} теперь поддерживают видеодорожки; ранее они работали только с audio ({{bug(1534466)}}).
  • -
  • Web Audio API интерфейс {{domxref("MediaStreamTrackAudioSourceNode")}} теперь поддерживается, как метод {{domxref("AudioContext.createMediaStreamTrackSource()")}} ({{bug(1324548)}}).
  • -
  • {{domxref("RTCDataChannel.negotiated")}} теперь реализован ({{bug(1529695)}}).
  • -
  • Конструктор {{domxref("MediaStreamAudioSourceNode.MediaStreamAudioSourceNode", "MediaStreamAudioSourceNode()")}} был обновлён в соответствии со спецификацией, где "first audio track" в потоке дорожка, идентификатора которой приходит первым в лексикографическом порядке ({{bug(1324548)}}).
  • -
  • -

    {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} больше не может быть использован из небезопасного контекста; попытки сделать это будут сопровождаться исключением NotAllowedError. Безопасными контекстами считаются те, которые загруженные через HTTPS, либо которые использую схему file:///, либо загружены из localhost. Сейчас, если необходимо, вы можете включить возможность совершать небезопасные вызовы getUserMedia(), установив надстройку media.getusermedia.insecure.enabled в состояние true ({{bug(1335740)}}).

    +- {{CSSxRef("scroll-snap-coordinate")}}, {{CSSxRef("scroll-snap-destination")}}, {{CSSxRef("scroll-snap-type-x")}} и {{CSSxRef("scroll-snap-type-y")}} были удалены. +- Свойство {{CSSxRef("scroll-snap-type")}} стало лонгхэнд, старый шортханд синтаксис `scroll-snap-type:mandatory` больше не работает. -
    -

    Примечание: В будущем, Firefox также удалит свойство {{domxref("navigator.mediaDevices")}} на незащищённых контекстах, предотвратив доступ к {{domxref("MediaDevices")}} API. Это уже так в Nightly сборках.

    -
    -
  • -
+### SVG -

Удалённые

+_Без изменений._ -
    -
  • Удалён нестандартный метод {{DOMxRef("XMLDocument.load()")}} ({{bug(332175)}}).
  • -
  • Удалён нестандартное свойство {{DOMxRef("XMLDocument.async")}} ({{bug(1328138)}}).
  • -
  • Значение {{domxref("RTCIceCredentialType")}} token было удалено ({{bug(1529595)}}).
  • -
+### JavaScript -

HTTP

+- Новый примитив {{jsxref("BigInt")}} теперь включён по умолчанию ({{bug(1527902)}}). -
    -
  • HTTP заголовок {{HTTPHeader("Clear-Site-Data")}} больше не поддерживает директиву executionContexts. This was removed due to problems with interactions between interconnections among different kinds of data at different points in the navigation process and the way the specification is designed. Было предложено этой директивы из спецификации из-за вышеуказанных причин, включая эту ({{bug(1548034)}}).
  • -
+### APIs -

Удалённые

+#### Объектная модель CSS (CSSOM) -
    -
  • Директива {{HTTPHeader("Content-Security-Policy")}} require-sri-for больше не поддерживается из-за её неоднозначного статуса в спецификации. Ранее она была добавлена лишь в качестве надстройки, отключённой по умолчанию ({{bug(1386214)}}).
  • -
+- Наследие свойств {{domxref("CSSStyleSheet.rules", "rules")}}, {{domxref("CSSStyleSheet.addRule", "addRule()")}} и {{domxref("CSSStyleSheet.removeRule", "removeRule()")}} методов было добавлено в интерфейс {{domxref("CSSStyleSheet")}}. Это было введено в Internet Explorer 9 и никогда полностью не искоренялось, они добавили это для улучшения обратной совместимости с небольшим процентом сайтов, которые всё ещё пользовались этим ({{bug(1545823)}}). -

Безопасность

+#### DOM -
    -
  • Из-за изменений вследствие CVE-2019-11730: Same-origin policy treats all files in a directory as having the same-origin, Firefox теперь обращается к файлам в одной и той же директории так, будто бы они из разных папок. Это спровоцировало некоторые побочные эффекты с файлами вида file:// (смотрите {{bug("file-fallout")}}). Например, workers больше не могут быть загружены.
  • -
+- [Visual Viewport API](/ru/docs/Web/API/Visual_Viewport_API) было включено по умолчанию на Android ({{bug(1512813)}}). Добавление API для настольной версии Firefox теперь отслеживается в {{bug(1551302)}}. +- Возможность {{domxref("Window")}} [`noreferrer`](/en-US/docs/Web/API/Window/open#noreferrer) теперь поддерживается; если указана, то новый контент окон будет загружен без передачи имени хоста, IP адреса, URL и прочей идентифицирующей устройство информации ({{bug(1527287)}}). +- Метод {{domxref("HTMLImageElement.decode", "decode()")}} на `HTMLImageElement` реализован. Это может быть использовано для запуска загрузки и декодирования изображения до добавления его в DOM ({{bug(1501794)}}). +- {{domxref("XMLHttpRequest")}} был обновлён и больше не принимает нестандартное значение `moz-chunked-arraybuffer` для {{domxref("XMLHttpRequest.responseType", "responseType")}}. Код, использующий это, должен быть обновлён, чтобы [использовать Fetch API как поток](/ru/docs/Web/API/Streams_API/Using_readable_streams#Consuming_a_fetch_as_a_stream) ({{bug(1120171)}}). +- `XMLHttpRequest` теперь выводит предупреждения в консоль, если выполняется синхронный запрос во время обработки {{domxref("Window.unload_event", "unload")}}, {{domxref("Window.beforeunload_event", "beforeunload")}}, {{domxref("Window.pagehide_event", "pagehide")}} ({{bug(980902)}}). +- Свойство {{domxref("Document.cookie", "cookie")}} было перенесено из интерфейса {{domxref("HTMLDocument")}} в {{domxref("Document")}}, позволяя документам отличным от {{Glossary("HTML")}} использовать куки ({{bug(144795)}}). +- Методы {{domxref("HTMLElement.focus()")}} и {{domxref("SVGElement.focus()")}} теперь принимают необязательный объект, который может содержать булеву опцию `preventScroll`, определяющую: должна или не должна происходить блокировка браузером прокрутки элемента с фокусом в поле зрения ({{bug(1374045)}}). -

Соответствия WebDriver (Marionette)

+#### События DOM -

Исправления багов

+- [Firefox для Android](/ru/docs/Mozilla/Firefox_for_Android) больше не отправляет неправильное событие {{domxref("Window.resize_event", "resize")}}, пока не будет отрисован первый фрейм; это улучшит совместимость с сайтами, которые не ожидают, что это событие произойдёт ({{bug(1528052)}}). +- Рассылка событий для неосновных кнопок мыши было изменено ближе к спецификации; Событие {{domxref("Element.click_event", "click")}} больше не вызывается, когда неосновные кнопки мыши были нажат, в отличие от события {{domxref("Element.auxclick_event", "auxclick")}}. В дополнение, {{domxref("Element.dblclick_event", "dblclick")}} больше на срабатывает для неосновных кнопок мыши ({{bug(1379466)}}). +- Собственное свойство {{domxref("MouseEvent.mozPressure")}} объявлено устаревшим и теперь при вызове сопровождается предупреждением в консоли ({{bug(1165211)}}). -
    -
  • If WebDriver:SwitchToWindow changes the selection to a different window it now waits for its focus and activate events before returning ({{bug(1335085)}}).
  • -
  • Исправлена ошибка TypeError: this.tabModal is null, которая иногда появлялась при взаимодействии с модальным окном или пользовательскими подсказками ({{bug(1538782)}})
  • -
+#### Медиа, Веб-аудио и WebRTC -

Прочее

+- WebRTC был обновлён и распознаёт `null`, отправленное в обработчик события {{domxref("RTCPeerConnection.icecandidate", "icecandidate")}}, сообщая о получении, вместо того, чтобы никак не реагировать на это; когда это происходит, ICE состояние ({{domxref("RTCPeerConnection.iceGatheringState", "iceGatheringState")}}) становится `complete` ({{bug(1318167)}}). +- Методы {{domxref("RTCRtpReceiver")}},{{domxref("RTCRtpReceiver.getContributingSources", "getContributingSources()")}} и {{domxref("RTCRtpReceiver.getSynchronizationSources", "getSynchronizationSources()")}} теперь поддерживают видеодорожки; ранее они работали только с audio ({{bug(1534466)}}). +- Web Audio API интерфейс {{domxref("MediaStreamTrackAudioSourceNode")}} теперь поддерживается, как метод {{domxref("AudioContext.createMediaStreamTrackSource()")}} ({{bug(1324548)}}). +- {{domxref("RTCDataChannel.negotiated")}} теперь реализован ({{bug(1529695)}}). +- Конструктор {{domxref("MediaStreamAudioSourceNode.MediaStreamAudioSourceNode", "MediaStreamAudioSourceNode()")}} был обновлён в соответствии со спецификацией, где "first audio track" в потоке дорожка, идентификатора которой приходит первым в лексикографическом порядке ({{bug(1324548)}}). +- {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} больше не может быть использован из небезопасного контекста; попытки сделать это будут сопровождаться исключением `NotAllowedError`. Безопасными контекстами считаются те, которые загруженные через HTTPS, либо которые использую схему `file:///`, либо загружены из `localhost`. Сейчас, если необходимо, вы можете включить возможность совершать небезопасные вызовы `getUserMedia()`, установив надстройку `media.getusermedia.insecure.enabled` в состояние `true` ({{bug(1335740)}}). -
    -
  • Отключена функция принудительной выгрузки вкладок при нехватки памяти, для предотвращения магических исчезновений top-level контекстов браузера ({{bug(1553748)}}).
  • -
  • Disabled priviledged content processes that caused HTTP authentication dialogs not to appear when navigating to a website after opening a new tab ({{bug(1558763)}}).
  • -
+ > **Примечание:** В будущем, Firefox также удалит свойство {{domxref("navigator.mediaDevices")}} на незащищённых контекстах, предотвратив доступ к {{domxref("MediaDevices")}} API. **Это уже так в Nightly сборках.** -

Плагины

+#### Удалённые -

Без изменений.

+- Удалён нестандартный метод {{DOMxRef("XMLDocument.load()")}} ({{bug(332175)}}). +- Удалён нестандартное свойство {{DOMxRef("XMLDocument.async")}} ({{bug(1328138)}}). +- Значение {{domxref("RTCIceCredentialType")}} `token` было удалено ({{bug(1529595)}}). -

Изменения для разработчиков дополнений

+### HTTP -

Изменения API

+- [HTTP](/ru/docs/Web/HTTP) заголовок {{HTTPHeader("Clear-Site-Data")}} больше не поддерживает директиву `executionContexts`. This was removed due to problems with interactions between interconnections among different kinds of data at different points in the navigation process and the way the specification is designed. [Было предложено](https://github.com/w3c/webappsec-clear-site-data/issues/59) этой директивы из спецификации из-за вышеуказанных причин, включая эту ({{bug(1548034)}}). -
    -
  • Функции proxy.register() и proxy.unregister() объявлены устаревшими и будут удалены в Firefox 71 ({{bug(1545811)}}).
  • -
  • Сообщения об ошибке, когда дополнение пытается добавить папку с закладками в основную папку, теперь более интуитивно понятное ({{bug(1512171)}}).
  • -
  • Promise, возвращённый browser.tabs.duplicate(), выполняется сразу, пока вкладки не загружены полностью, для повышения производительности ({{bug(1394376)}}).
  • -
  • Была добавлена поддержка chrome.storage.managed, позволяющая настройкам быть реализованным через корпоративную политику ({{bug(1230802)}}).
  • -
  • Появилась опция Групповой Политики, позволяющая добавить все расширения в чёрный список, за исключением тех, что внесены в белый, ({{bug(1522823)}}).
  • -
+#### Удалённые -

Изменения манифеста

+- Директива {{HTTPHeader("Content-Security-Policy")}} `require-sri-for` больше не поддерживается из-за её неоднозначного статуса в спецификации. Ранее она была добавлена лишь в качестве надстройки, отключённой по умолчанию ({{bug(1386214)}}). -

Без изменений.

+### Безопасность -

Предыдущие версии

+- Из-за изменений вследствие [CVE-2019-11730: Same-origin policy treats all files in a directory as having the same-origin](https://www.mozilla.org/en-US/security/advisories/mfsa2019-21/#CVE-2019-11730), Firefox теперь обращается к файлам в одной и той же директории так, будто бы они из разных папок. Это спровоцировало некоторые побочные эффекты с файлами вида file:// (смотрите {{bug("file-fallout")}}). Например, workers больше не могут быть загружены. -

{{Firefox_for_developers(67)}}

+### Соответствия WebDriver (Marionette) + +#### Исправления багов + +- If `WebDriver:SwitchToWindow` changes the selection to a different window it now waits for its `focus` and `activate` events before returning ({{bug(1335085)}}). +- Исправлена ошибка `TypeError: this.tabModal is null`, которая иногда появлялась при взаимодействии с модальным окном или пользовательскими подсказками ({{bug(1538782)}}) + +#### Прочее + +- Отключена функция принудительной выгрузки вкладок при нехватки памяти, для предотвращения магических исчезновений top-level контекстов браузера ({{bug(1553748)}}). +- Disabled priviledged content processes that caused HTTP authentication dialogs not to appear when navigating to a website after opening a new tab ({{bug(1558763)}}). + +### Плагины + +_Без изменений._ + +## Изменения для разработчиков дополнений + +### Изменения API + +- Функции [proxy.register()](/ru/docs/Mozilla/Add-ons/WebExtensions/API/proxy/register) и [proxy.unregister()](/ru/docs/Mozilla/Add-ons/WebExtensions/API/proxy/unregister) объявлены устаревшими и будут удалены в Firefox 71 ({{bug(1545811)}}). +- Сообщения об ошибке, когда дополнение пытается добавить папку с закладками в основную папку, теперь более интуитивно понятное ({{bug(1512171)}}). +- Promise, возвращённый [`browser.tabs.duplicate()`](/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/duplicate), выполняется сразу, пока вкладки не загружены полностью, для повышения производительности ({{bug(1394376)}}). +- Была добавлена поддержка chrome.storage.managed, позволяющая настройкам быть реализованным через корпоративную политику ({{bug(1230802)}}). +- Появилась опция Групповой Политики, позволяющая добавить все расширения в чёрный список, за исключением тех, что внесены в белый, ({{bug(1522823)}}). + +### Изменения манифеста + +_Без изменений._ + +## Предыдущие версии + +{{Firefox_for_developers(67)}} diff --git a/files/ru/mozilla/firefox/releases/index.md b/files/ru/mozilla/firefox/releases/index.md index 6dbb29d3a90bad..a330af70ede3a3 100644 --- a/files/ru/mozilla/firefox/releases/index.md +++ b/files/ru/mozilla/firefox/releases/index.md @@ -7,6 +7,8 @@ tags: - TopicStub translation_of: Mozilla/Firefox/Releases --- -
{{FirefoxSidebar}}

Далее ссылки на "Firefox X for developer" (Firefox для разработчиков, где X это версия релиза). Эти замечания описывают новые фичи к релизу и исправленные баги.

+{{FirefoxSidebar}} -
{{ListSubpages("",1,1,1)}}
+Далее ссылки на "Firefox X for developer" (Firefox для разработчиков, где X это версия релиза). Эти замечания описывают новые фичи к релизу и исправленные баги. + +{{ListSubpages("",1,1,1)}} diff --git a/files/ru/mozilla/index.md b/files/ru/mozilla/index.md index 9a1a9963effd60..ef90649fe5685a 100644 --- a/files/ru/mozilla/index.md +++ b/files/ru/mozilla/index.md @@ -9,8 +9,6 @@ tags: - Расширенный translation_of: Mozilla --- -
+Узнайте как скачать и выполнить сборку кода проектов Mozilla. А также полезные статьи о том как работает этот код, и как собирать дополнения для приложений Mozlla, и т.д. -

Узнайте как скачать и выполнить сборку кода проектов Mozilla. А также полезные статьи о том как работает этот код, и как собирать дополнения для приложений Mozlla, и т.д.

- -
{{LandingPageListSubpages}}
+{{LandingPageListSubpages}} From abec16c44be1319d6d92361141dc2ec0d501bf7c Mon Sep 17 00:00:00 2001 From: SphinxKnight Date: Thu, 29 Sep 2022 12:57:44 +0200 Subject: [PATCH 3/3] Remove languages call with bad escapes --- .../webextensions/api/cookies/cookie/index.md | 9 +- .../webextensions/api/cookies/index.md | 9 +- .../webextensions/api/downloads/index.md | 9 +- .../api/runtime/getmanifest/index.md | 9 +- .../webextensions/api/runtime/index.md | 9 +- .../webextensions/api/tabs/get/index.md | 7 +- .../add-ons/webextensions/api/tabs/index.md | 7 +- .../webextensions/api/webrequest/index.md | 9 +- .../api/windows/createtype/index.md | 9 +- .../webextensions/api/windows/index.md | 9 +- .../intercept_http_requests/index.md | 2 +- .../content_security_policy/index.md | 4 +- .../manifest.json/icons/index.md | 6 +- .../manifest.json/permissions/index.md | 3 +- .../user_interface/omnibox/index.md | 2 +- .../1.5/using_firefox_1.5_caching/index.md | 158 +++++++++--------- files/ru/mozilla/firefox/releases/3/index.md | 37 ---- files/ru/mozilla/firefox/releases/62/index.md | 2 - 18 files changed, 139 insertions(+), 161 deletions(-) diff --git a/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md b/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md index b87ea8cf33472b..2d0a95db61627e 100644 --- a/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md +++ b/files/ru/mozilla/add-ons/webextensions/api/cookies/cookie/index.md @@ -66,9 +66,12 @@ gettingAll.then(logCookies); {{WebExtExamples}} -> **Примечание:** **Примечание**Это API основано на API Chromium [`chrome.cookies`](https://developer.chrome.com/extensions/cookies#type-Cookie). Эта документация основана на [`cookies.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json) из кода Chromium.Информация о совместимости Microsoft Edge предоставлена корпорацией Microsoft и включена здесь под лицензией Creative Commons Attribution 3.0 United States License. +> **Примечание:** Это API основано на API Chromium [`chrome.cookies`](https://developer.chrome.com/extensions/cookies#type-Cookie). Эта документация основана на [`cookies.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json) из кода Chromium. +> +> Информация о совместимости Microsoft Edge предоставлена корпорацией Microsoft и включена здесь под лицензией Creative Commons Attribution 3.0 United States License. -
diff --git a/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md b/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md index fb6563a55e0e57..b14d5c6301b01a 100644 --- a/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md +++ b/files/ru/mozilla/add-ons/webextensions/manifest.json/permissions/index.md @@ -26,8 +26,7 @@ translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions "permissions": [ "*://developer.mozilla.org/*", "webRequest" -] +] diff --git a/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md b/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md index 72dc6a250c5268..35e093f73e583c 100644 --- a/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md +++ b/files/ru/mozilla/add-ons/webextensions/user_interface/omnibox/index.md @@ -31,7 +31,7 @@ browser.omnibox.setDefaultSuggestion({ }); ``` -Далее, вы можете зарегистрировать обработчики на событие {{WebExtAPIRef("omnibox.onInputStarted")}}, которое будет распространяться после введения пользователем ключевого слова и нажатия на пробел, и на событие {{WebExtAPIRef("omnibox.onInputChanged")}}, которое будет распространяться при изменении пользователем строки адреса. Так же, с помощью обработчика события {{WebExtAPIRef("omnibox.onInputChanged")}}, вы будете иметь возможность заполнять выпадающий список своими предложениями. К примеру, в случае поиска кода на сайте https\://searchfox.org/mozilla-central, используя введённые пользователем слова: +Далее, вы можете зарегистрировать обработчики на событие {{WebExtAPIRef("omnibox.onInputStarted")}}, которое будет распространяться после введения пользователем ключевого слова и нажатия на пробел, и на событие {{WebExtAPIRef("omnibox.onInputChanged")}}, которое будет распространяться при изменении пользователем строки адреса. Так же, с помощью обработчика события {{WebExtAPIRef("omnibox.onInputChanged")}}, вы будете иметь возможность заполнять выпадающий список своими предложениями. К примеру, в случае поиска кода на сайте https://searchfox.org/mozilla-central, используя введённые пользователем слова: ```js browser.omnibox.onInputChanged.addListener((text, addSuggestions) => { diff --git a/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md b/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md index 424f16f16df8c9..10162fa8faa57f 100644 --- a/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md +++ b/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.md @@ -74,7 +74,7 @@ Firefox 1.5 пытается имитировать события загруз Если вы хотите использовать события `unload` или `beforeunload`, сохранив кеширование страницы, вы можете просто удалить эти события в обработчике события и восстановить их в обработчике `pageshow`, если возвращаетесь на эту страницу: -``` +```js window.addEventListener('pageshow', PageShowHandler, false); window.addEventListener('unload', UnloadHandler, false); @@ -93,12 +93,8 @@ function UnloadHandler() { - В браузерах, отличных от Firefox 1.5, при каждой загрузке страницы происходит следующее: событие `load` вызывает функцию `onLoad`, которая вызывает функцию `onPageShow` (а также дополнительную функцию). - - - В Firefox 1.5 при первой загрузке страницы событие `load` работает так же, как и в других браузерах. Кроме того, срабатывает событие `pageshow`, и, так как `persisted` установлено в `false`, не предпринимается никаких дополнительных действий. - - - В Firefox 1.5 при загрузке страницы из кеша срабатывает только событие `pageshow`. Так как` persisted` установлено в `true`, вызывается только JavaScript-код в функции `onPageShow`. В этом примере: @@ -106,89 +102,89 @@ function UnloadHandler() { - Страница вычисляет и отображает текущие дату и время каждый раз при загрузке. Это вычисление включает секунды и миллисекунды, так что вы легко можете протестировать функциональность. - Курсор помещается в поле Name при первой загрузке страницы. В Firefox 1.5 при возвращении на страницу курсор остаётся в том поле, где он был, когда пользователь ушёл со страницы. В других браузерах курсор опять помещается в поле Name. -``` +```html - - -Order query : Firefox 1.5 Example - - - - -

Order query

- - - -
- -
- -
- -
- - - + + + Order query : Firefox 1.5 Example + + + + +

Order query

+ + + +
+ +
+ +
+ +
+ + + ``` Напротив, если приведённая выше страница не обрабатывает событие `pageshow` и выполняет все вычисления в обработчике события `load` (если код написан так, как показано в примере ниже), как положение курсора, так и дата/время в Firefox 1.5 будут кешированы, когда пользователь уйдёт со страницы. Когда пользователь вернётся на страницу, отобразятся кешированные дата/время. -``` - +```html + + - ``` @@ -197,5 +193,3 @@ function loadOnlyFirst() { Firefox 1.5 [extensions](/en/Building_an_Extension "en/Building_an_Extension") need to allow for this caching functionality. If you are developing a Firefox extension that you want to be compatible with both 1.5 and earlier versions, make sure that it listens for the `load` event for triggers that can be cached and listens for the `pageshow` event for triggers that shouldn’t be cached. For instance, the Google Toolbar for Firefox should listen for the `load` event for the autolink function and to the `pageshow` event for the PageRank function in order to be compatible with both 1.5 and earlier versions. - -{{ languages( { "it": "it/Usare\_il\_caching\_di\_Firefox\_1.5", "de": "de/Benutzen\_des\_Zwischenspeichers\_in\_Firefox\_1.5\_(caching)", "fr": "fr/Utilisation\_du\_cache\_de\_Firefox\_1.5", "ja": "ja/Using\_Firefox\_1.5\_caching" } ) }} diff --git a/files/ru/mozilla/firefox/releases/3/index.md b/files/ru/mozilla/firefox/releases/3/index.md index 0484a7e3af8692..a87a3827fc27a4 100644 --- a/files/ru/mozilla/firefox/releases/3/index.md +++ b/files/ru/mozilla/firefox/releases/3/index.md @@ -15,72 +15,58 @@ original_slug: Firefox_3_for_developers - [Обновление веб-приложений для Firefox 3](/ru/%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B5%D0%B1-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B4%D0%BB%D1%8F_Firefox_3 "ru/Обновление_веб-приложений_для_Firefox_3") - : Предоставляет информацию об изменениях которые вам возможно нужно внести, чтобы получить выгоду от новых возможностей Firefox 3. - - [Online и offline события](/en/Online_%D0%B8_offline_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F "en/Online_and_offline_events") - : Firefox 3 поддерживает WHATWG online и offline события, которые позволяют приложениям и расширениям определять есть ли активное Интернет соединение, и так же позволяет определять когда появляется и пропадает соединение. - - [Веб-ориентированные обработчики протоколов](/ru/%D0%92%D0%B5%D0%B1-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%B2 "ru/Веб-ориентированные_обработчики протоколов") - : Теперь вы можете регистрировать веб-приложения как обработчик протокола используя метод `navigator.registerProtocolHandler()`. - - [Рисование текста с использованием canvas](/ru/%D0%A0%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_canvas "ru/Рисование_текста_с_использованием_canvas") - : Теперь вы можете рисовать текст с использованием нестандартизированного API canvas поддерживаемого Firefox 3. - - [Поддержка преобразований для canvas](/en/Canvas_tutorial/Transformations#Transforms "en/Canvas_tutorial/Transformations#Transforms") - : Firefox now supports the `transform()` and `setTransform()` methods on canvases. - - [Using microformats](/en/Using_microformats "en/Using_microformats") - : Firefox now has APIs for working with microformats. - - [Drag and drop events](/en/Drag_and_drop_events "en/Drag_and_drop_events") - : Firefox 3 supports new events that are sent to the source node for a drag operation when the drag begins and ends. - - [Focus management in HTML](/en/Focus_management_in_HTML "en/Focus_management_in_HTML") - : The new HTML 5 `activeElement` and `hasFocus` attributes are supported. - - [Offline resources in Firefox](/en/Offline_resources_in_Firefox "en/Offline_resources_in_Firefox") - : Firefox now lets web applications request that resources be cached to allow the application to be used while offline. - - [CSS improvements in Firefox 3](/en/CSS_improvements_in_Firefox_3 "en/CSS_improvements_in_Firefox_3") - : Firefox 3 features a number of improvements in its CSS support. - - [DOM improvements in Firefox 3](/en/DOM_improvements_in_Firefox_3 "en/DOM_improvements_in_Firefox_3") - : Firefox 3 offers a number of new features in Firefox 3's DOM implementation, including support for several Internet Explorer extensions to the DOM. - - [JavaScript 1.8 support](/en/New_in_JavaScript_1.8 "en/New_in_JavaScript_1.8") - : Firefox 3 offers JavaScript 1.8. - - [EXSLT support](/en/EXSLT "en/EXSLT") - : Firefox 3 provides support for a substantial subset of the [EXSLT](/en/EXSLT "en/EXSLT") extensions to [XSLT](/en/XSLT "en/XSLT"). - - [SVG improvements in Firefox 3](/en/SVG_improvements_in_Firefox_3 "en/SVG_improvements_in_Firefox_3") - : SVG support in Firefox 3 has been upgraded significantly, with support for over two dozen new filters, several new elements and attributes, and other improvements. - - [Animated PNG graphics](/en/Animated_PNG_graphics "en/Animated_PNG_graphics") - : Firefox 3 supports the animated PNG (APNG) image format. @@ -92,52 +78,42 @@ original_slug: Firefox_3_for_developers - [Updating extensions for Firefox 3](/en/Updating_extensions_for_Firefox_3 "en/Updating_extensions_for_Firefox_3") - : Provides a guide to the things you'll need to do to update your extension to work with Firefox 3. - - [XUL improvements in Firefox 3](/en/XUL_improvements_in_Firefox_3 "en/XUL_improvements_in_Firefox_3") - : Firefox 3 offers a number of new XUL elements, including new sliding scales, the date and time pickers, and spin buttons. - - [Templates in Firefox 3](/en/Templates_in_Firefox_3 "en/Templates_in_Firefox_3") - : Templates have been significantly improved in Firefox 3. The key improvement allows the use of custom query processors to allow data sources other than RDF to be used. - - [Securing updates](/en/Extension_Versioning,_Update_and_Compatibility#Securing_Updates "en/Extension_Versioning,_Update_and_Compatibility#Securing_Updates") - : In order to provide a more secure add-on upgrade path for users, add-ons are now required to provide a secure method for obtaining updates before they can be installed. Add-ons hosted at [AMO](http://addons.mozilla.org) automatically provide this. Any add-ons installed that do not provide a secure update method when the user upgrades to Firefox 3 will be automatically disabled. Firefox will however continue to check for updates to the extension over the insecure path and attempt to install any update offered (installation will fail if the update also fails to provide a secure update method). - - [Places migration guide](/en/Places_migration_guide "en/Places_migration_guide") - : An article about how to update an existing extension to use the Places API. - - [Download Manager improvements in Firefox 3](/en/Download_Manager_improvements_in_Firefox_3 "en/Download_Manager_improvements_in_Firefox_3") - : The Firefox 3 Download Manager features new and improved APIs, including support for multiple progress listeners. - - [Using nsILoginManager](/en/Using_nsILoginManager "en/Using_nsILoginManager") - : The Password Manager has been replaced by the new Login Manager. - - [Embedding XBL bindings](/en/XBL/XBL_1.0_Reference/Elements#binding "en/XBL/XBL_1.0_Reference/Elements#binding") - : You can now use the `data:` URL scheme from chrome code to embed XBL bindings directly instead of having them in separate XML files. - - [Localizing extension descriptions](/en/Localizing_extension_descriptions "en/Localizing_extension_descriptions") - : Firefox 3 offers a new method for localizing add-on metadata. This lets the localized details be available as soon as the add-on has been downloaded, as well as when the add-on is disabled. - - [Localization and Plurals](/en/Localization_and_Plurals "en/Localization_and_Plurals") - : Firefox 3 adds the new PluralForm module, which provides tools to aid in correctly pluralizing words in multiple localizations. - - [Theme changes in Firefox 3](/en/Theme_changes_in_Firefox_3 "en/Theme_changes_in_Firefox_3") - : Notes and information of use to people who want to create themes for Firefox 3. @@ -147,57 +123,46 @@ original_slug: Firefox_3_for_developers - [FUEL Library](/en/FUEL "en/FUEL") - : FUEL is about making it easier for extension developers to be productive, by minimizing some of the XPCOM formality and adding some "modern" JavaScript ideas. - - [Places](/en/Places "en/Places") - : The history and bookmarks APIs have been completely replaced by the new [Places](/en/Places "en/Places") API. - - [Idle service](/en/nsIIdleService "en/nsIIdleService") - : Firefox 3 offers the new `nsIIdleService` interface, which lets extensions determine how long it's been since the user last pressed a key or moved their mouse. - - [ZIP writer](/en/nsIZipWriter "en/nsIZipWriter") - : The new `nsIZipWriter` interface lets extensions create ZIP archives. - - [Full page zoom](/en/Full_page_zoom "en/Full_page_zoom") - : Firefox 3 improves the user experience by offering full page zoom in addition to text-only zoom. - - [Interfacing with the XPCOM cycle collector](/en/Interfacing_with_the_XPCOM_cycle_collector "en/Interfacing_with_the_XPCOM_cycle_collector") - : XPCOM code can now take advantage of the cycle collector, which helps ensure that unused memory gets released instead of leaking. - - [The Thread Manager](/en/The_Thread_Manager "en/The_Thread_Manager") - : Firefox 3 provides the new `nsIThreadManager` interface, along with new interfaces for threads and thread events, which provides a convenient way to create and manage threads in your code. - - [JavaScript modules](/en/JavaScript_modules "en/JavaScript_modules") - : Firefox 3 now offers a new shared code module mechanism that lets you easily create modules in JavaScript that can be loaded by extensions and applications for use, much like shared libraries. - - [The `nsIJSON` interface](/en/nsIJSON "en/nsIJSON") - : Firefox 3 offers the new `nsIJSON` interface, which offers high-performance encoding and decoding of [JSON](/en/JSON "en/JSON") strings. - - [The nsIParentalControlsService interface](/en/nsIParentalControlsService "en/nsIParentalControlsService") - : Firefox 3 now supports the Microsoft Windows Vista parental controls feature, and allows code to interact with it. - - [Using content preferences](/en/Using_content_preferences "en/Using_content_preferences") - : Firefox 3 includes a new service for getting and setting arbitrary site-specific preferences that extensions as well as core code can use to keep track of their users' preferences for individual sites. - - [Plug-in Monitoring](/en/Monitoring_plugins "en/Monitoring_plugins") - : A new component of the plugin system is now available to measure how long it takes plugins (e.g., Macromedia Flash) to execute their calls. @@ -259,5 +224,3 @@ original_slug: Firefox_3_for_developers - [Updating web applications for Firefox 3](/en/Updating_web_applications_for_Firefox_3 "en/Updating_web_applications_for_Firefox_3") - [Firefox 2 for developers](/en/Firefox_2_for_developers "en/Firefox_2_for_developers") - [Firefox 1.5 for developers](/en/Firefox_1.5_for_developers "en/Firefox_1.5_for_developers") - -{{ languages( { "es": "es/Firefox\_3\_para\_desarrolladores", "fr": "fr/Firefox\_3\_pour\_les\_d\u00e9veloppeurs", "ja": "ja/Firefox\_3\_for\_developers", "zh-tw": "zh\_tw/Firefox\_3\_for\_developers", "ko": "ko/Firefox\_3\_for\_developers", "pl": "pl/Firefox\_3\_dla\_programist\u00f3w", "pt": "pt/Firefox\_3\_para\_desenvolvedores" } ) }} diff --git a/files/ru/mozilla/firefox/releases/62/index.md b/files/ru/mozilla/firefox/releases/62/index.md index 31f82a5203233c..98c7a629b11474 100644 --- a/files/ru/mozilla/firefox/releases/62/index.md +++ b/files/ru/mozilla/firefox/releases/62/index.md @@ -108,9 +108,7 @@ _Без изменений._ - Прекращена поддержка {{domxref("CSSValue")}}, {{domxref("CSSPrimitiveValue")}} и {{domxref("CSSValueList")}} ({{bug(1459871)}}). - {{domxref("window.getComputedStyle()")}} больше не возвращает `null`, если вызван на `Window`, у которого нет представления ({{bug(1467722)}}). - - ### HTTP
Пример -
-"icons": {
+        
"icons": {
   "48": "icon.png",
   "96": "icon@2x.png"
-}
+}