From 500f444d23a7a758da229ebe6b9691cc5d4fe731 Mon Sep 17 00:00:00 2001 From: SphinxKnight Date: Wed, 16 Mar 2022 17:52:18 +0100 Subject: Fix #4269 - Removes empty/special characters (#4270) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove ufeff * Remove u2064 * Remove u2062 * Replace u202f followed by : with  : * Replace u202f next to « or » with   and « or » * Replace u202f followed by ; with  ; * Replace u202f followed by ! with   * Replace u202f followed by ? with  ? * Replace remaining u202f with classical space * Replace u200b surrounded by space with classical space * Replace u200b surrounded by space with classical space - again (repeated) * Remove remaining u200b * Remove u200a * Replace u2009 with   * Remove u00ad * Replace u00a0 followed by : ! or ? with   and punctuation * Replace u00a0 surrounded « or » with   and punctuation * Replace u00a0 followed by whitespaces * Replace u00a0 preceded by whitespaces * Replace u00a0 followed by a newline with a newline * Replace u00a0 followed by a newline with a newline - Take2 * Replace u00a0 followed by a ;   and punctuation * Remove u00a0 followed by , * Remove u00a0 in indentation spaces with \n([ ]*)([\u00a0])([ ]*) * Manual replacement of ([\u00a0])([ ]+) * Replace remaining ([\u00a0]+) by a space * cleaning empty elements * remove ufe0f * Remove u00a0 and u202f after merging against updated main * remove double whitespace using (\w)( )(\w) --- files/fr/games/anatomy/index.md | 118 ++-- files/fr/games/examples/index.md | 20 +- files/fr/games/introduction/index.md | 4 +- .../index.md | 6 +- .../techniques/2d_collision_detection/index.md | 28 +- .../techniques/3d_on_the_web/basic_theory/index.md | 32 +- .../index.md | 4 +- .../index.md | 16 +- files/fr/games/techniques/3d_on_the_web/index.md | 6 +- .../games/techniques/audio_for_web_games/index.md | 6 +- files/fr/games/tools/asm.js/index.md | 4 +- files/fr/games/tools/index.md | 4 +- .../tutorials/2d_breakout_game_phaser/index.md | 6 +- .../bounce_off_the_walls/index.md | 4 +- .../build_the_brick_field/index.md | 18 +- .../collision_detection/index.md | 8 +- .../create_the_canvas_and_draw_on_it/index.md | 18 +- .../game_over/index.md | 6 +- .../2d_breakout_game_pure_javascript/index.md | 10 +- .../move_the_ball/index.md | 28 +- .../paddle_and_keyboard_controls/index.md | 6 +- .../track_the_score_and_win/index.md | 16 +- .../index.md | 22 +- files/fr/glossary/accessibility_tree/index.md | 10 +- files/fr/glossary/alignment_container/index.md | 2 +- files/fr/glossary/alignment_subject/index.md | 8 +- files/fr/glossary/api/index.md | 2 +- files/fr/glossary/argument/index.md | 2 +- files/fr/glossary/aria/index.md | 2 +- files/fr/glossary/arpa/index.md | 2 +- files/fr/glossary/arpanet/index.md | 2 +- files/fr/glossary/array/index.md | 2 +- files/fr/glossary/ascii/index.md | 4 +- files/fr/glossary/attribute/index.md | 2 +- files/fr/glossary/base64/index.md | 260 ++++---- files/fr/glossary/bidi/index.md | 2 +- files/fr/glossary/block/css/index.md | 4 +- files/fr/glossary/boolean/index.md | 2 +- files/fr/glossary/boot2gecko/index.md | 2 +- files/fr/glossary/cache/index.md | 2 +- files/fr/glossary/call_stack/index.md | 2 +- files/fr/glossary/cdn/index.md | 2 +- files/fr/glossary/cipher/index.md | 12 +- files/fr/glossary/cipher_suite/index.md | 4 +- files/fr/glossary/codec/index.md | 2 +- files/fr/glossary/compile/index.md | 2 +- files/fr/glossary/constructor/index.md | 2 +- files/fr/glossary/crud/index.md | 2 +- files/fr/glossary/csrf/index.md | 2 +- files/fr/glossary/css_preprocessor/index.md | 2 +- files/fr/glossary/delta/index.md | 2 +- files/fr/glossary/deserialization/index.md | 2 +- files/fr/glossary/dhtml/index.md | 2 +- files/fr/glossary/doctype/index.md | 2 +- files/fr/glossary/document_directive/index.md | 2 +- files/fr/glossary/dynamic_typing/index.md | 2 +- files/fr/glossary/endianness/index.md | 8 +- files/fr/glossary/engine/index.md | 2 +- files/fr/glossary/entity/index.md | 2 +- files/fr/glossary/entity_header/index.md | 2 +- files/fr/glossary/exception/index.md | 2 +- files/fr/glossary/exif/index.md | 2 +- files/fr/glossary/falsy/index.md | 2 +- files/fr/glossary/fetch_directive/index.md | 2 +- files/fr/glossary/first_contentful_paint/index.md | 2 +- files/fr/glossary/first_meaningful_paint/index.md | 2 +- files/fr/glossary/forbidden_header_name/index.md | 2 +- .../forbidden_response_header_name/index.md | 2 +- files/fr/glossary/ftp/index.md | 2 +- files/fr/glossary/function/index.md | 2 +- files/fr/glossary/garbage_collection/index.md | 2 +- files/fr/glossary/git/index.md | 2 +- files/fr/glossary/graceful_degradation/index.md | 2 +- files/fr/glossary/grid/index.md | 4 +- files/fr/glossary/grid_areas/index.md | 4 +- files/fr/glossary/grid_axis/index.md | 2 +- files/fr/glossary/grid_cell/index.md | 2 +- files/fr/glossary/grid_container/index.md | 4 +- files/fr/glossary/grid_lines/index.md | 4 +- files/fr/glossary/gutters/index.md | 2 +- files/fr/glossary/hoisting/index.md | 12 +- files/fr/glossary/hsts/index.md | 2 +- files/fr/glossary/html/index.md | 4 +- files/fr/glossary/html5/index.md | 2 +- files/fr/glossary/http/index.md | 2 +- files/fr/glossary/iana/index.md | 2 +- files/fr/glossary/icann/index.md | 2 +- files/fr/glossary/idl/index.md | 2 +- files/fr/glossary/iife/index.md | 4 +- files/fr/glossary/indexeddb/index.md | 2 +- files/fr/glossary/input_method_editor/index.md | 2 +- files/fr/glossary/internet/index.md | 2 +- files/fr/glossary/ip_address/index.md | 2 +- files/fr/glossary/ipv4/index.md | 2 +- files/fr/glossary/ipv6/index.md | 2 +- files/fr/glossary/javascript/index.md | 18 +- files/fr/glossary/jquery/index.md | 2 +- files/fr/glossary/json/index.md | 4 +- files/fr/glossary/lazy_load/index.md | 2 +- files/fr/glossary/localization/index.md | 2 +- files/fr/glossary/mathml/index.md | 2 +- files/fr/glossary/method/index.md | 2 +- files/fr/glossary/mime/index.md | 2 +- files/fr/glossary/mime_type/index.md | 2 +- files/fr/glossary/mixin/index.md | 2 +- files/fr/glossary/modem/index.md | 2 +- files/fr/glossary/mozilla_firefox/index.md | 2 +- files/fr/glossary/native/index.md | 2 +- files/fr/glossary/nntp/index.md | 2 +- files/fr/glossary/node.js/index.md | 2 +- files/fr/glossary/node/dom/index.md | 2 +- files/fr/glossary/operator/index.md | 2 +- files/fr/glossary/origin/index.md | 10 +- files/fr/glossary/owasp/index.md | 2 +- files/fr/glossary/pac/index.md | 4 +- files/fr/glossary/plaintext/index.md | 2 +- files/fr/glossary/plugin/index.md | 2 +- files/fr/glossary/primitive/index.md | 2 +- files/fr/glossary/promise/index.md | 8 +- files/fr/glossary/protocol/index.md | 2 +- files/fr/glossary/quality_values/index.md | 2 +- files/fr/glossary/quic/index.md | 2 +- files/fr/glossary/real_user_monitoring/index.md | 2 +- files/fr/glossary/regular_expression/index.md | 4 +- files/fr/glossary/request_header/index.md | 2 +- files/fr/glossary/rest/index.md | 2 +- files/fr/glossary/rgb/index.md | 2 +- files/fr/glossary/same-origin_policy/index.md | 2 +- files/fr/glossary/sgml/index.md | 4 +- files/fr/glossary/signature/function/index.md | 2 +- files/fr/glossary/site/index.md | 6 +- files/fr/glossary/soap/index.md | 2 +- files/fr/glossary/specification/index.md | 2 +- files/fr/glossary/speculative_parsing/index.md | 2 +- files/fr/glossary/sql/index.md | 2 +- files/fr/glossary/stun/index.md | 2 +- files/fr/glossary/svg/index.md | 2 +- files/fr/glossary/svn/index.md | 2 +- files/fr/glossary/symbol/index.md | 2 +- files/fr/glossary/syntax/index.md | 2 +- files/fr/glossary/tag/index.md | 2 +- files/fr/glossary/tcp_handshake/index.md | 2 +- files/fr/glossary/thread/index.md | 2 +- files/fr/glossary/time_to_interactive/index.md | 4 +- files/fr/glossary/tld/index.md | 2 +- files/fr/glossary/tofu/index.md | 2 +- files/fr/glossary/tree_shaking/index.md | 6 +- files/fr/glossary/trident/index.md | 2 +- files/fr/glossary/turn/index.md | 2 +- files/fr/glossary/type/index.md | 2 +- files/fr/glossary/type_coercion/index.md | 6 +- files/fr/glossary/type_conversion/index.md | 2 +- files/fr/glossary/udp/index.md | 2 +- files/fr/glossary/user_agent/index.md | 2 +- files/fr/glossary/ux/index.md | 4 +- files/fr/glossary/validator/index.md | 2 +- files/fr/glossary/wcag/index.md | 6 +- .../accessibility_troubleshooting/index.md | 14 +- .../accessibility/css_and_javascript/index.md | 68 +-- files/fr/learn/accessibility/html/index.md | 86 +-- files/fr/learn/accessibility/index.md | 16 +- files/fr/learn/accessibility/mobile/index.md | 52 +- files/fr/learn/accessibility/multimedia/index.md | 32 +- .../learn/accessibility/wai-aria_basics/index.md | 24 +- .../accessibility/what_is_accessibility/index.md | 26 +- .../available_text_editors/index.md | 4 +- .../index.md | 6 +- .../common_questions/common_web_layouts/index.md | 54 +- .../design_for_all_types_of_users/index.md | 54 +- .../how_does_the_internet_work/index.md | 14 +- .../how_much_does_it_cost/index.md | 8 +- files/fr/learn/common_questions/index.md | 6 +- .../index.md | 4 +- .../set_up_a_local_testing_server/index.md | 34 +- .../thinking_before_coding/index.md | 20 +- .../upload_files_to_a_web_server/index.md | 4 +- .../common_questions/using_github_pages/index.md | 4 +- .../what_are_browser_developer_tools/index.md | 2 +- .../common_questions/what_are_hyperlinks/index.md | 2 +- .../what_is_a_domain_name/index.md | 4 +- .../learn/common_questions/what_is_a_url/index.md | 12 +- .../common_questions/what_is_a_web_server/index.md | 8 +- .../what_is_accessibility/index.md | 6 +- .../what_software_do_i_need/index.md | 6 +- .../building_blocks/a_cool_looking_box/index.md | 14 +- .../backgrounds_and_borders/index.md | 26 +- .../cascade_and_inheritance/index.md | 148 ++--- .../creating_fancy_letterheaded_paper/index.md | 20 +- .../css/building_blocks/debugging_css/index.md | 2 +- .../fundamental_css_comprehension/index.md | 10 +- .../handling_different_text_directions/index.md | 34 +- files/fr/learn/css/building_blocks/index.md | 10 +- .../building_blocks/overflowing_content/index.md | 8 +- .../selectors/attribute_selectors/index.md | 4 +- .../building_blocks/selectors/combinators/index.md | 16 +- .../learn/css/building_blocks/selectors/index.md | 4 +- .../pseudo-classes_and_pseudo-elements/index.md | 38 +- .../selectors/type_class_and_id_selectors/index.md | 38 +- .../css/building_blocks/styling_tables/index.md | 26 +- .../css/building_blocks/the_box_model/index.md | 12 +- .../css/building_blocks/values_and_units/index.md | 54 +- .../fundamental_layout_comprehension/index.md | 14 +- files/fr/learn/css/css_layout/index.md | 4 +- .../fr/learn/css/css_layout/introduction/index.md | 68 +-- .../css/css_layout/legacy_layout_methods/index.md | 106 ++-- .../fr/learn/css/css_layout/media_queries/index.md | 12 +- .../css/css_layout/multiple-column_layout/index.md | 16 +- files/fr/learn/css/css_layout/normal_flow/index.md | 10 +- files/fr/learn/css/css_layout/positioning/index.md | 26 +- .../practical_positioning_examples/index.md | 60 +- .../css/css_layout/responsive_design/index.md | 16 +- .../css_layout/supporting_older_browsers/index.md | 2 +- .../learn/css/first_steps/getting_started/index.md | 96 +-- .../css/first_steps/how_css_is_structured/index.md | 4 +- files/fr/learn/css/first_steps/index.md | 12 +- .../first_steps/using_your_new_knowledge/index.md | 44 +- .../fr/learn/css/first_steps/what_is_css/index.md | 2 +- .../fr/learn/css/howto/create_fancy_boxes/index.md | 22 +- files/fr/learn/css/howto/css_faq/index.md | 6 +- files/fr/learn/css/index.md | 10 +- .../learn/css/styling_text/fundamentals/index.md | 22 +- .../learn/css/styling_text/styling_links/index.md | 2 +- .../learn/css/styling_text/styling_lists/index.md | 2 +- .../styling_text/typesetting_a_homepage/index.md | 26 +- files/fr/learn/css/styling_text/web_fonts/index.md | 48 +- .../forms/basic_native_form_controls/index.md | 152 ++--- files/fr/learn/forms/form_validation/index.md | 148 ++--- .../example_1/index.md | 6 +- .../example_3/index.md | 2 +- .../how_to_build_custom_form_controls/index.md | 24 +- .../forms/how_to_structure_a_web_form/index.md | 76 +-- .../forms/html_forms_in_legacy_browsers/index.md | 50 +- files/fr/learn/forms/index.md | 10 +- .../index.md | 320 +++++----- .../sending_and_retrieving_form_data/index.md | 60 +- .../sending_forms_through_javascript/index.md | 6 +- files/fr/learn/forms/styling_web_forms/index.md | 32 +- .../learn/forms/your_first_form/example/index.md | 108 ++-- files/fr/learn/forms/your_first_form/index.md | 36 +- files/fr/learn/front-end_web_developer/index.md | 10 +- .../css_basics/index.md | 18 +- .../dealing_with_files/index.md | 12 +- .../how_the_web_works/index.md | 14 +- .../html_basics/index.md | 16 +- .../fr/learn/getting_started_with_the_web/index.md | 6 +- .../installing_basic_software/index.md | 14 +- .../javascript_basics/index.md | 62 +- .../publishing_your_website/index.md | 4 +- .../what_will_your_website_look_like/index.md | 18 +- files/fr/learn/html/cheatsheet/index.md | 4 +- .../add_a_hit_map_on_top_of_an_image/index.md | 4 +- .../howto/author_fast-loading_html_pages/index.md | 22 +- .../html/howto/define_terms_with_html/index.md | 4 +- .../learn/html/howto/use_data_attributes/index.md | 12 +- .../howto/use_javascript_within_a_webpage/index.md | 6 +- files/fr/learn/html/index.md | 8 +- .../advanced_text_formatting/index.md | 46 +- .../creating_hyperlinks/index.md | 2 +- .../introduction_to_html/debugging_html/index.md | 56 +- .../document_and_website_structure/index.md | 42 +- .../html_text_fundamentals/index.md | 26 +- .../marking_up_a_letter/index.md | 30 +- .../structuring_a_page_of_content/index.md | 14 +- .../adding_vector_graphics_to_the_web/index.md | 8 +- .../images_in_html/index.md | 56 +- .../learn/html/multimedia_and_embedding/index.md | 16 +- .../mozilla_splash_page/index.md | 8 +- .../other_embedding_technologies/index.md | 68 +-- .../responsive_images/index.md | 82 +-- .../video_and_audio_content/index.md | 88 +-- files/fr/learn/html/tables/advanced/index.md | 62 +- files/fr/learn/html/tables/basics/index.md | 38 +- files/fr/learn/html/tables/index.md | 4 +- .../html/tables/structuring_planet_data/index.md | 2 +- files/fr/learn/index.md | 14 +- .../build_your_own_function/index.md | 66 +-- .../building_blocks/conditionals/index.md | 128 ++-- .../javascript/building_blocks/functions/index.md | 32 +- .../building_blocks/image_gallery/index.md | 16 +- files/fr/learn/javascript/building_blocks/index.md | 4 +- .../building_blocks/looping_code/index.md | 24 +- .../building_blocks/return_values/index.md | 42 +- .../client-side_storage/index.md | 46 +- .../client-side_web_apis/drawing_graphics/index.md | 16 +- .../client-side_web_apis/fetching_data/index.md | 50 +- .../learn/javascript/client-side_web_apis/index.md | 12 +- .../client-side_web_apis/introduction/index.md | 20 +- .../client-side_web_apis/third_party_apis/index.md | 6 +- .../video_and_audio_apis/index.md | 60 +- .../javascript/first_steps/a_first_splash/index.md | 130 ++-- .../learn/javascript/first_steps/arrays/index.md | 88 +-- files/fr/learn/javascript/first_steps/index.md | 22 +- .../fr/learn/javascript/first_steps/math/index.md | 68 +-- .../first_steps/silly_story_generator/index.md | 20 +- .../learn/javascript/first_steps/strings/index.md | 58 +- .../first_steps/useful_string_methods/index.md | 52 +- .../javascript/first_steps/variables/index.md | 108 ++-- .../first_steps/what_is_javascript/index.md | 86 +-- .../first_steps/what_went_wrong/index.md | 88 +-- files/fr/learn/javascript/index.md | 6 +- .../adding_bouncing_balls_features/index.md | 76 +-- files/fr/learn/javascript/objects/basics/index.md | 20 +- .../objects/classes_in_javascript/index.md | 74 +-- files/fr/learn/javascript/objects/index.md | 16 +- files/fr/learn/javascript/objects/json/index.md | 162 ++--- .../objects/object_building_practice/index.md | 98 +-- files/fr/learn/performance/css/index.md | 4 +- files/fr/learn/performance/html/index.md | 4 +- files/fr/learn/performance/index.md | 8 +- .../performance/measuring_performance/index.md | 20 +- .../learn/performance/why_web_performance/index.md | 2 +- .../learn/server-side/django/admin_site/index.md | 20 +- .../server-side/django/generic_views/index.md | 172 +++--- .../fr/learn/server-side/django/home_page/index.md | 46 +- .../learn/server-side/django/introduction/index.md | 96 +-- files/fr/learn/server-side/django/models/index.md | 86 +-- .../server-side/django/skeleton_website/index.md | 74 +-- files/fr/learn/server-side/django/testing/index.md | 630 ++++++++++---------- .../django/tutorial_local_library_website/index.md | 4 +- .../express_nodejs/introduction/index.md | 12 +- .../first_steps/client-server_overview/index.md | 68 +-- files/fr/learn/server-side/first_steps/index.md | 8 +- .../server-side/first_steps/introduction/index.md | 52 +- .../first_steps/web_frameworks/index.md | 34 +- .../first_steps/website_security/index.md | 18 +- .../client-side_javascript_frameworks/index.md | 4 +- .../introduction/index.md | 8 +- .../main_features/index.md | 6 +- .../react_getting_started/index.md | 2 +- .../react_todo_list_beginning/index.md | 8 +- .../vue_getting_started/index.md | 6 +- .../cross_browser_testing/accessibility/index.md | 30 +- .../cross_browser_testing/html_and_css/index.md | 38 +- .../cross_browser_testing/introduction/index.md | 16 +- .../cross_browser_testing/javascript/index.md | 62 +- .../testing_strategies/index.md | 4 +- files/fr/learn/tools_and_testing/github/index.md | 2 +- .../understanding_client-side_tools/index.md | 2 +- files/fr/mdn/about/index.md | 4 +- files/fr/mdn/at_ten/history_of_mdn/index.md | 4 +- files/fr/mdn/at_ten/index.md | 2 +- files/fr/mdn/contribute/github_beginners/index.md | 2 +- .../howto/create_and_edit_pages/index.md | 4 +- .../write_a_new_entry_in_the_glossary/index.md | 4 +- files/fr/mdn/guidelines/code_guidelines/index.md | 2 +- .../macros/commonly-used_macros/index.md | 2 +- files/fr/mozilla/add-ons/index.md | 8 +- .../add_a_button_to_the_toolbar/index.md | 50 +- .../anatomy_of_a_webextension/index.md | 8 +- .../webextensions/api/alarms/create/index.md | 2 +- .../webextensions/api/alarms/onalarm/index.md | 2 +- .../api/bookmarks/bookmarktreenode/index.md | 4 +- .../bookmarktreenodeunmodifiable/index.md | 2 +- .../webextensions/api/bookmarks/create/index.md | 8 +- .../api/bookmarks/createdetails/index.md | 4 +- .../webextensions/api/bookmarks/get/index.md | 2 +- .../api/bookmarks/getchildren/index.md | 2 +- .../webextensions/api/bookmarks/getrecent/index.md | 4 +- .../api/bookmarks/getsubtree/index.md | 4 +- .../webextensions/api/bookmarks/gettree/index.md | 6 +- .../add-ons/webextensions/api/bookmarks/index.md | 2 +- .../webextensions/api/bookmarks/move/index.md | 6 +- .../webextensions/api/bookmarks/onchanged/index.md | 2 +- .../api/bookmarks/onchildrenreordered/index.md | 4 +- .../webextensions/api/bookmarks/oncreated/index.md | 2 +- .../api/bookmarks/onimportbegan/index.md | 2 +- .../api/bookmarks/onimportended/index.md | 2 +- .../webextensions/api/bookmarks/onmoved/index.md | 2 +- .../webextensions/api/bookmarks/onremoved/index.md | 2 +- .../webextensions/api/bookmarks/remove/index.md | 2 +- .../api/bookmarks/removetree/index.md | 2 +- .../webextensions/api/bookmarks/search/index.md | 4 +- .../webextensions/api/bookmarks/update/index.md | 2 +- .../api/browseraction/colorarray/index.md | 2 +- .../browseraction/getbadgebackgroundcolor/index.md | 2 +- .../api/browseraction/getpopup/index.md | 2 +- .../api/browseraction/gettitle/index.md | 2 +- .../api/browseraction/imagedatatype/index.md | 2 +- .../webextensions/api/browseraction/index.md | 4 +- .../api/browseraction/isenabled/index.md | 8 +- .../api/browseraction/onclicked/index.md | 4 +- .../browseraction/setbadgebackgroundcolor/index.md | 2 +- .../api/browseraction/seticon/index.md | 6 +- .../api/browseraction/setpopup/index.md | 2 +- .../api/browseraction/settitle/index.md | 2 +- .../allowpopupsforuserevents/index.md | 2 +- .../api/browsersettings/homepageoverride/index.md | 2 +- .../webextensions/api/browsersettings/index.md | 2 +- .../api/browsersettings/newtabposition/index.md | 8 +- .../overridedocumentcolors/index.md | 2 +- .../api/browsersettings/usedocumentfonts/index.md | 2 +- .../api/browsingdata/datatypeset/index.md | 6 +- .../webextensions/api/browsingdata/index.md | 2 +- .../api/browsingdata/removaloptions/index.md | 2 +- .../webextensions/api/browsingdata/remove/index.md | 2 +- .../api/browsingdata/removecache/index.md | 2 +- .../api/browsingdata/removecookies/index.md | 2 +- .../api/browsingdata/removehistory/index.md | 2 +- .../api/browsingdata/settings/index.md | 6 +- .../webextensions/api/commands/command/index.md | 6 +- .../webextensions/api/commands/getall/index.md | 10 +- .../webextensions/api/commands/oncommand/index.md | 2 +- .../webextensions/api/contentscripts/index.md | 2 +- .../api/contentscripts/register/index.md | 4 +- .../registeredcontentscript/index.md | 2 +- .../api/contextualidentities/index.md | 6 +- .../api/contextualidentities/oncreated/index.md | 2 +- .../api/contextualidentities/onremoved/index.md | 2 +- .../api/contextualidentities/query/index.md | 2 +- .../webextensions/api/cookies/cookie/index.md | 6 +- .../add-ons/webextensions/api/cookies/get/index.md | 14 +- .../webextensions/api/cookies/getall/index.md | 2 +- .../api/cookies/getallcookiestores/index.md | 2 +- .../add-ons/webextensions/api/cookies/index.md | 30 +- .../webextensions/api/cookies/onchanged/index.md | 16 +- .../api/cookies/onchangedcause/index.md | 10 +- .../webextensions/api/cookies/remove/index.md | 2 +- .../add-ons/webextensions/api/cookies/set/index.md | 4 +- .../add-ons/webextensions/api/devtools/index.md | 2 +- .../api/devtools/inspectedwindow/eval/index.md | 2 +- .../api/devtools/inspectedwindow/index.md | 4 +- .../webextensions/api/devtools/network/index.md | 2 +- .../api/devtools/network/onnavigated/index.md | 2 +- .../devtools/network/onrequestfinished/index.md | 2 +- .../api/devtools/panels/create/index.md | 2 +- .../api/devtools/panels/extensionpanel/index.md | 2 +- .../panels/extensionsidebarpane/onhidden/index.md | 2 +- .../extensionsidebarpane/setexpression/index.md | 2 +- .../panels/extensionsidebarpane/setobject/index.md | 2 +- .../webextensions/api/devtools/panels/index.md | 2 +- .../api/devtools/panels/onthemechanged/index.md | 2 +- .../add-ons/webextensions/api/dns/resolve/index.md | 2 +- .../webextensions/api/downloads/download/index.md | 10 +- .../api/downloads/downloaditem/index.md | 6 +- .../api/downloads/downloadquery/index.md | 16 +- .../add-ons/webextensions/api/downloads/index.md | 2 +- .../webextensions/api/downloads/onchanged/index.md | 10 +- .../webextensions/api/downloads/onerased/index.md | 2 +- .../webextensions/api/downloads/open/index.md | 2 +- .../api/downloads/removefile/index.md | 8 +- .../webextensions/api/downloads/search/index.md | 6 +- .../api/downloads/setshelfenabled/index.md | 4 +- .../webextensions/api/downloads/show/index.md | 2 +- .../webextensions/api/downloads/state/index.md | 2 +- .../webextensions/api/events/urlfilter/index.md | 10 +- .../api/extension/getbackgroundpage/index.md | 2 +- .../api/extension/sendrequest/index.md | 2 +- .../api/extensiontypes/imagedetails/index.md | 2 +- .../api/extensiontypes/runat/index.md | 2 +- .../add-ons/webextensions/api/find/find/index.md | 16 +- .../api/find/highlightresults/index.md | 2 +- .../webextensions/api/history/addurl/index.md | 4 +- .../webextensions/api/history/deleteall/index.md | 2 +- .../add-ons/webextensions/api/history/index.md | 2 +- .../api/history/ontitlechanged/index.md | 2 +- .../webextensions/api/history/onvisited/index.md | 2 +- .../api/history/onvisitremoved/index.md | 2 +- .../webextensions/api/history/search/index.md | 6 +- .../webextensions/api/i18n/detectlanguage/index.md | 2 +- .../api/i18n/getacceptlanguages/index.md | 2 +- .../webextensions/api/i18n/getuilanguage/index.md | 2 +- .../add-ons/webextensions/api/i18n/index.md | 4 +- .../locale-specific_message_reference/index.md | 6 +- .../add-ons/webextensions/api/identity/index.md | 6 +- .../api/identity/launchwebauthflow/index.md | 4 +- .../add-ons/webextensions/api/idle/index.md | 2 +- .../webextensions/api/idle/onstatechanged/index.md | 2 +- .../webextensions/api/idle/querystate/index.md | 4 +- .../api/idle/setdetectioninterval/index.md | 4 +- .../api/management/extensioninfo/index.md | 6 +- .../webextensions/api/management/get/index.md | 2 +- .../webextensions/api/management/getall/index.md | 14 +- .../management/getpermissionwarningsbyid/index.md | 2 +- .../add-ons/webextensions/api/management/index.md | 2 +- .../webextensions/api/management/install/index.md | 2 +- .../api/management/ondisabled/index.md | 2 +- .../api/management/onenabled/index.md | 2 +- .../api/management/oninstalled/index.md | 2 +- .../api/management/onuninstalled/index.md | 2 +- .../api/management/uninstall/index.md | 4 +- .../api/management/uninstallself/index.md | 4 +- .../webextensions/api/menus/create/index.md | 8 +- .../api/menus/createproperties/index.md | 6 +- .../api/menus/gettargetelement/index.md | 2 +- .../add-ons/webextensions/api/menus/index.md | 4 +- .../webextensions/api/menus/itemtype/index.md | 4 +- .../webextensions/api/menus/onclickdata/index.md | 4 +- .../webextensions/api/menus/onhidden/index.md | 2 +- .../webextensions/api/menus/onshown/index.md | 2 +- .../api/menus/overridecontext/index.md | 2 +- .../webextensions/api/menus/update/index.md | 8 +- .../api/notifications/create/index.md | 4 +- .../webextensions/api/notifications/index.md | 4 +- .../api/notifications/onclosed/index.md | 4 +- .../api/notifications/update/index.md | 4 +- .../add-ons/webextensions/api/omnibox/index.md | 8 +- .../api/omnibox/oninputchanged/index.md | 6 +- .../api/omnibox/oninputentered/index.md | 8 +- .../api/omnibox/oninputstarted/index.md | 2 +- .../api/omnibox/setdefaultsuggestion/index.md | 2 +- .../api/omnibox/suggestresult/index.md | 4 +- .../webextensions/api/pageaction/getpopup/index.md | 2 +- .../webextensions/api/pageaction/gettitle/index.md | 2 +- .../add-ons/webextensions/api/pageaction/index.md | 4 +- .../webextensions/api/pageaction/isshown/index.md | 6 +- .../webextensions/api/pageaction/show/index.md | 4 +- .../api/permissions/contains/index.md | 18 +- .../webextensions/api/permissions/getall/index.md | 2 +- .../add-ons/webextensions/api/permissions/index.md | 2 +- .../webextensions/api/permissions/onadded/index.md | 2 +- .../api/permissions/onremoved/index.md | 2 +- .../webextensions/api/permissions/remove/index.md | 2 +- .../webextensions/api/permissions/request/index.md | 2 +- .../api/pkcs11/getmoduleslots/index.md | 2 +- .../add-ons/webextensions/api/pkcs11/index.md | 4 +- .../webextensions/api/privacy/network/index.md | 4 +- .../webextensions/api/privacy/services/index.md | 2 +- .../webextensions/api/privacy/websites/index.md | 8 +- .../add-ons/webextensions/api/proxy/index.md | 2 +- .../webextensions/api/proxy/onrequest/index.md | 4 +- .../webextensions/api/proxy/proxyinfo/index.md | 8 +- .../webextensions/api/proxy/register/index.md | 8 +- .../api/proxy/requestdetails/index.md | 8 +- .../webextensions/api/proxy/unregister/index.md | 2 +- .../webextensions/api/runtime/connect/index.md | 2 +- .../api/runtime/connectnative/index.md | 2 +- .../api/runtime/getbackgroundpage/index.md | 2 +- .../add-ons/webextensions/api/runtime/index.md | 4 +- .../webextensions/api/runtime/lasterror/index.md | 8 +- .../api/runtime/messagesender/index.md | 6 +- .../api/runtime/onconnectexternal/index.md | 6 +- .../webextensions/api/runtime/oninstalled/index.md | 6 +- .../webextensions/api/runtime/onmessage/index.md | 32 +- .../api/runtime/onmessageexternal/index.md | 2 +- .../api/runtime/onrestartrequiredreason/index.md | 2 +- .../api/runtime/onsuspendcanceled/index.md | 2 +- .../api/runtime/openoptionspage/index.md | 2 +- .../api/runtime/platformarch/index.md | 2 +- .../webextensions/api/runtime/port/index.md | 6 +- .../api/runtime/requestupdatecheck/index.md | 2 +- .../webextensions/api/runtime/sendmessage/index.md | 2 +- .../api/runtime/sendnativemessage/index.md | 4 +- .../api/runtime/setuninstallurl/index.md | 2 +- .../add-ons/webextensions/api/search/get/index.md | 2 +- .../webextensions/api/search/search/index.md | 4 +- .../api/sessions/getrecentlyclosed/index.md | 4 +- .../api/sessions/gettabvalue/index.md | 4 +- .../add-ons/webextensions/api/sessions/index.md | 6 +- .../webextensions/api/sessions/onchanged/index.md | 2 +- .../webextensions/api/sessions/restore/index.md | 4 +- .../webextensions/api/sessions/session/index.md | 2 +- .../api/sessions/setwindowvalue/index.md | 2 +- .../api/sidebaraction/getpanel/index.md | 4 +- .../api/sidebaraction/gettitle/index.md | 4 +- .../webextensions/api/sidebaraction/index.md | 2 +- .../api/sidebaraction/isopen/index.md | 2 +- .../webextensions/api/sidebaraction/open/index.md | 2 +- .../api/sidebaraction/seticon/index.md | 2 +- .../api/sidebaraction/setpanel/index.md | 6 +- .../api/sidebaraction/settitle/index.md | 6 +- .../add-ons/webextensions/api/storage/index.md | 4 +- .../webextensions/api/storage/local/index.md | 6 +- .../webextensions/api/storage/onchanged/index.md | 2 +- .../api/storage/storagearea/get/index.md | 4 +- .../api/storage/storagearea/set/index.md | 2 +- .../webextensions/api/tabs/capturetab/index.md | 2 +- .../api/tabs/capturevisibletab/index.md | 2 +- .../webextensions/api/tabs/connect/index.md | 2 +- .../add-ons/webextensions/api/tabs/create/index.md | 10 +- .../webextensions/api/tabs/detectlanguage/index.md | 4 +- .../webextensions/api/tabs/discard/index.md | 2 +- .../webextensions/api/tabs/duplicate/index.md | 2 +- .../webextensions/api/tabs/executescript/index.md | 12 +- .../webextensions/api/tabs/getcurrent/index.md | 2 +- .../webextensions/api/tabs/getzoom/index.md | 2 +- .../add-ons/webextensions/api/tabs/goback/index.md | 2 +- .../add-ons/webextensions/api/tabs/hide/index.md | 4 +- .../webextensions/api/tabs/highlight/index.md | 2 +- .../add-ons/webextensions/api/tabs/index.md | 10 +- .../webextensions/api/tabs/insertcss/index.md | 4 +- .../add-ons/webextensions/api/tabs/move/index.md | 2 +- .../api/tabs/moveinsuccession/index.md | 6 +- .../webextensions/api/tabs/onactivated/index.md | 2 +- .../webextensions/api/tabs/oncreated/index.md | 2 +- .../webextensions/api/tabs/onmoved/index.md | 2 +- .../api/tabs/onselectionchanged/index.md | 2 +- .../webextensions/api/tabs/onupdated/index.md | 6 +- .../webextensions/api/tabs/pagesettings/index.md | 4 +- .../webextensions/api/tabs/printpreview/index.md | 2 +- .../add-ons/webextensions/api/tabs/query/index.md | 6 +- .../webextensions/api/tabs/removecss/index.md | 4 +- .../webextensions/api/tabs/saveaspdf/index.md | 2 +- .../webextensions/api/tabs/sendmessage/index.md | 2 +- .../webextensions/api/tabs/setzoom/index.md | 2 +- .../add-ons/webextensions/api/tabs/tab/index.md | 10 +- .../api/tabs/togglereadermode/index.md | 2 +- .../add-ons/webextensions/api/tabs/update/index.md | 8 +- .../webextensions/api/tabs/zoomsettings/index.md | 2 +- .../api/tabs/zoomsettingsscope/index.md | 6 +- .../webextensions/api/theme/onupdated/index.md | 2 +- .../webextensions/api/topsites/get/index.md | 6 +- .../add-ons/webextensions/api/topsites/index.md | 2 +- .../api/types/browsersetting/clear/index.md | 2 +- .../api/types/browsersetting/get/index.md | 2 +- .../api/types/browsersetting/index.md | 2 +- .../api/types/browsersetting/set/index.md | 4 +- .../add-ons/webextensions/api/userscripts/index.md | 4 +- .../api/userscripts/onbeforescript/index.md | 2 +- .../api/userscripts/register/index.md | 8 +- .../registereduserscript/unregister/index.md | 2 +- .../api/userscripts/userscriptoptions/index.md | 2 +- .../userscripts/working_with_userscripts/index.md | 8 +- .../api/webnavigation/getframe/index.md | 2 +- .../webextensions/api/webnavigation/index.md | 6 +- .../api/webnavigation/onbeforenavigate/index.md | 4 +- .../api/webnavigation/oncompleted/index.md | 4 +- .../oncreatednavigationtarget/index.md | 4 +- .../api/webnavigation/ondomcontentloaded/index.md | 4 +- .../api/webnavigation/onerroroccurred/index.md | 4 +- .../webnavigation/onhistorystateupdated/index.md | 8 +- .../onreferencefragmentupdated/index.md | 2 +- .../api/webrequest/blockingresponse/index.md | 12 +- .../api/webrequest/certificateinfo/index.md | 4 +- .../api/webrequest/filterresponsedata/index.md | 2 +- .../api/webrequest/getsecurityinfo/index.md | 8 +- .../api/webrequest/handlerbehaviorchanged/index.md | 4 +- .../add-ons/webextensions/api/webrequest/index.md | 10 +- .../api/webrequest/onauthrequired/index.md | 10 +- .../api/webrequest/onbeforerequest/index.md | 10 +- .../api/webrequest/onbeforesendheaders/index.md | 4 +- .../api/webrequest/onheadersreceived/index.md | 2 +- .../api/webrequest/onsendheaders/index.md | 2 +- .../api/webrequest/requestfilter/index.md | 2 +- .../api/webrequest/resourcetype/index.md | 12 +- .../api/webrequest/securityinfo/index.md | 28 +- .../api/webrequest/streamfilter/close/index.md | 6 +- .../webrequest/streamfilter/disconnect/index.md | 2 +- .../api/webrequest/streamfilter/error/index.md | 2 +- .../api/webrequest/streamfilter/ondata/index.md | 2 +- .../api/webrequest/streamfilter/onerror/index.md | 2 +- .../api/webrequest/streamfilter/onstop/index.md | 2 +- .../api/webrequest/streamfilter/resume/index.md | 2 +- .../api/webrequest/streamfilter/status/index.md | 8 +- .../api/webrequest/streamfilter/write/index.md | 2 +- .../webextensions/api/windows/create/index.md | 8 +- .../add-ons/webextensions/api/windows/get/index.md | 6 +- .../webextensions/api/windows/getall/index.md | 4 +- .../webextensions/api/windows/getcurrent/index.md | 4 +- .../api/windows/getlastfocused/index.md | 2 +- .../webextensions/api/windows/remove/index.md | 2 +- .../webextensions/api/windows/update/index.md | 2 +- .../webextensions/api/windows/window/index.md | 2 +- .../chrome_incompatibilities/index.md | 6 +- .../add-ons/webextensions/content_scripts/index.md | 56 +- .../debugging_(before_firefox_50)/index.md | 10 +- .../index.md | 2 +- .../index.md | 2 +- .../add-ons/webextensions/examples/index.md | 8 +- .../extending_the_developer_tools/index.md | 12 +- .../webextensions/firefox_differentiators/index.md | 8 +- .../firefox_workflow_overview/index.md | 4 +- .../implement_a_settings_page/index.md | 2 +- .../interact_with_the_clipboard/index.md | 8 +- .../webextensions/intercept_http_requests/index.md | 10 +- .../webextensions/internationalization/index.md | 38 +- .../manifest.json/background/index.md | 4 +- .../manifest.json/browser_action/index.md | 10 +- .../browser_specific_settings/index.md | 2 +- .../chrome_settings_overrides/index.md | 4 +- .../manifest.json/chrome_url_overrides/index.md | 6 +- .../webextensions/manifest.json/commands/index.md | 4 +- .../manifest.json/content_scripts/index.md | 46 +- .../manifest.json/content_security_policy/index.md | 40 +- .../manifest.json/dictionaries/index.md | 2 +- .../manifest.json/externally_connectable/index.md | 28 +- .../manifest.json/homepage_url/index.md | 2 +- .../webextensions/manifest.json/icons/index.md | 2 +- .../manifest.json/offline_enabled/index.md | 4 +- .../webextensions/manifest.json/omnibox/index.md | 2 +- .../manifest.json/optional_permissions/index.md | 2 +- .../manifest.json/options_ui/index.md | 12 +- .../manifest.json/page_action/index.md | 4 +- .../manifest.json/permissions/index.md | 14 +- .../manifest.json/protocol_handlers/index.md | 16 +- .../manifest.json/sidebar_action/index.md | 12 +- .../webextensions/manifest.json/storage/index.md | 2 +- .../webextensions/manifest.json/theme/index.md | 44 +- .../manifest.json/theme_experiment/index.md | 4 +- .../web_accessible_resources/index.md | 6 +- .../add-ons/webextensions/match_patterns/index.md | 6 +- .../webextensions/modify_a_web_page/index.md | 6 +- .../webextensions/native_manifests/index.md | 14 +- .../webextensions/native_messaging/index.md | 22 +- .../index.md | 2 +- .../sharing_objects_with_page_scripts/index.md | 4 +- .../fr/mozilla/add-ons/webextensions/tips/index.md | 2 +- .../add-ons/webextensions/user_actions/index.md | 4 +- .../user_interface/browser_action/index.md | 6 +- .../user_interface/browser_styles/index.md | 6 +- .../user_interface/context_menu_items/index.md | 2 +- .../user_interface/devtools_panels/index.md | 2 +- .../user_interface/extension_pages/index.md | 14 +- .../webextensions/user_interface/omnibox/index.md | 6 +- .../user_interface/options_pages/index.md | 4 +- .../user_interface/page_actions/index.md | 2 +- .../webextensions/user_interface/popups/index.md | 2 +- .../webextensions/user_interface/sidebars/index.md | 6 +- .../webextensions/what_are_webextensions/index.md | 6 +- .../add-ons/webextensions/what_next_/index.md | 8 +- .../work_with_contextual_identities/index.md | 122 ++-- .../work_with_the_bookmarks_api/index.md | 118 ++-- .../work_with_the_cookies_api/index.md | 86 +-- .../webextensions/working_with_files/index.md | 36 +- .../working_with_the_tabs_api/index.md | 40 +- .../webextensions/your_first_webextension/index.md | 24 +- files/fr/mozilla/firefox/index.md | 2 +- .../index.md | 4 +- files/fr/mozilla/firefox/releases/1.5/index.md | 10 +- .../1.5/using_firefox_1.5_caching/index.md | 30 +- files/fr/mozilla/firefox/releases/19/index.md | 2 +- .../firefox/releases/2/security_changes/index.md | 4 +- .../releases/2/updating_extensions/index.md | 12 +- files/fr/mozilla/firefox/releases/20/index.md | 2 +- files/fr/mozilla/firefox/releases/21/index.md | 2 +- files/fr/mozilla/firefox/releases/22/index.md | 12 +- files/fr/mozilla/firefox/releases/25/index.md | 8 +- files/fr/mozilla/firefox/releases/26/index.md | 4 +- files/fr/mozilla/firefox/releases/29/index.md | 8 +- files/fr/mozilla/firefox/releases/3.5/index.md | 34 +- files/fr/mozilla/firefox/releases/3.6/index.md | 38 +- .../firefox/releases/3/full_page_zoom/index.md | 2 +- files/fr/mozilla/firefox/releases/3/index.md | 8 +- .../firefox/releases/3/site_compatibility/index.md | 4 +- .../firefox/releases/3/svg_improvements/index.md | 2 +- .../releases/3/updating_extensions/index.md | 42 +- .../releases/3/updating_web_applications/index.md | 16 +- .../3/xul_improvements_in_firefox_3/index.md | 4 +- files/fr/mozilla/firefox/releases/30/index.md | 2 +- files/fr/mozilla/firefox/releases/32/index.md | 12 +- files/fr/mozilla/firefox/releases/35/index.md | 68 +-- files/fr/mozilla/firefox/releases/39/index.md | 6 +- files/fr/mozilla/firefox/releases/4/index.md | 16 +- files/fr/mozilla/firefox/releases/40/index.md | 10 +- files/fr/mozilla/firefox/releases/41/index.md | 6 +- files/fr/mozilla/firefox/releases/6/index.md | 34 +- files/fr/mozilla/firefox/releases/7/index.md | 2 +- files/fr/mozilla/firefox/releases/8/index.md | 14 +- files/fr/mozilla/firefox/releases/9/index.md | 4 +- files/fr/tools/3d_view/index.html | 2 +- .../index.html | 40 +- files/fr/tools/accessibility_inspector/index.html | 8 +- .../accessibility_inspector/simulation/index.html | 2 +- files/fr/tools/browser_toolbox/index.html | 4 +- .../how_to/breaking_on_exceptions/index.html | 2 - .../debugger/how_to/debug_eval_sources/index.html | 2 +- .../debugger/how_to/ignore_a_source/index.html | 2 +- .../debugger/how_to/open_the_debugger/index.html | 2 +- files/fr/tools/debugger/ui_tour/index.html | 4 +- files/fr/tools/devtoolsapi/index.html | 12 +- files/fr/tools/devtoolscolors/index.html | 98 +-- files/fr/tools/dom_property_viewer/index.html | 2 +- .../fr/tools/firefox_os_simulator_clone/index.html | 2 +- files/fr/tools/index.html | 2 +- files/fr/tools/json_viewer/index.html | 2 +- files/fr/tools/keyboard_shortcuts/index.html | 10 +- files/fr/tools/memory/aggregate_view/index.html | 32 +- files/fr/tools/memory/dominators/index.html | 2 +- files/fr/tools/memory/dominators_view/index.html | 4 +- files/fr/tools/memory/monster_example/index.html | 2 +- files/fr/tools/memory/tree_map_view/index.html | 2 +- files/fr/tools/migrating_from_firebug/index.html | 8 +- files/fr/tools/network_monitor/index.html | 2 +- .../network_monitor/request_details/index.html | 4 +- .../tools/network_monitor/request_list/index.html | 30 +- .../fr/tools/page_inspector/3-pane_mode/index.html | 2 +- .../how_to/edit_css_filters/index.html | 2 +- .../how_to/examine_and_edit_css/index.html | 10 +- .../examine_and_edit_the_box_model/index.html | 2 +- .../how_to/examine_event_listeners/index.html | 4 - .../how_to/examine_grid_layouts/index.html | 2 +- .../how_to/select_an_element/index.html | 2 +- .../how_to/work_with_animations/index.html | 2 +- files/fr/tools/page_inspector/ui_tour/index.html | 8 - files/fr/tools/paint_flashing_tool/index.html | 28 +- files/fr/tools/performance/call_tree/index.html | 4 +- files/fr/tools/performance/examples/index.html | 2 +- .../scenarios/intensive_javascript/index.html | 6 +- files/fr/tools/performance/waterfall/index.html | 17 +- .../index.html | 6 +- .../tools/remote_debugging/thunderbird/index.html | 2 +- files/fr/tools/responsive_design_mode/index.html | 6 +- files/fr/tools/shader_editor/index.html | 2 +- files/fr/tools/style_editor/index.html | 2 +- files/fr/tools/taking_screenshots/index.html | 2 +- files/fr/tools/tips/index.html | 2 +- files/fr/tools/tools_toolbox/index.html | 2 +- files/fr/tools/validators/index.html | 4 +- files/fr/tools/web_audio_editor/index.html | 8 +- .../tools/web_console/console_messages/index.html | 88 +-- files/fr/tools/web_console/helpers/index.html | 2 +- files/fr/tools/web_console/index.html | 4 +- .../the_command_line_interpreter/index.html | 18 +- files/fr/tools/working_with_iframes/index.html | 2 +- .../index.md | 16 +- .../fr/web/accessibility/aria/aria_guides/index.md | 2 +- .../accessibility/aria/aria_live_regions/index.md | 44 +- .../accessibility/aria/aria_techniques/index.md | 2 +- .../using_the_alertdialog_role/index.md | 14 +- .../using_the_aria-invalid_attribute/index.md | 10 +- .../using_the_aria-label_attribute/index.md | 4 +- .../using_the_aria-labelledby_attribute/index.md | 34 +- .../using_the_aria-orientation_attribute/index.md | 6 +- .../using_the_aria-relevant_attribute/index.md | 2 +- .../using_the_aria-required_attribute/index.md | 20 +- .../using_the_aria-valuemax_attribute/index.md | 12 +- .../using_the_aria-valuemin_attribute/index.md | 12 +- .../using_the_aria-valuenow_attribute/index.md | 8 +- .../using_the_aria-valuetext_attribute/index.md | 10 +- .../using_the_article_role/index.md | 22 +- .../aria_techniques/using_the_group_role/index.md | 16 +- .../aria_techniques/using_the_link_role/index.md | 12 +- .../aria_techniques/using_the_log_role/index.md | 18 +- .../using_the_presentation_role/index.md | 4 +- .../using_the_progressbar_role/index.md | 10 +- .../aria_techniques/using_the_slider_role/index.md | 22 +- .../aria_techniques/using_the_status_role/index.md | 14 +- .../web/accessibility/aria/forms/alerts/index.md | 34 +- .../aria/forms/basic_form_hints/index.md | 14 +- files/fr/web/accessibility/aria/forms/index.md | 6 +- .../aria/forms/multipart_labels/index.md | 10 +- .../aria/how_to_file_aria-related_bugs/index.md | 10 +- files/fr/web/accessibility/aria/index.md | 4 +- .../accessibility/aria/roles/alert_role/index.md | 40 +- .../accessibility/aria/roles/banner_role/index.md | 14 +- .../aria/roles/checkbox_role/index.md | 18 +- .../accessibility/aria/roles/dialog_role/index.md | 22 +- .../accessibility/aria/roles/listbox_role/index.md | 16 +- .../accessibility/aria/roles/textbox_role/index.md | 16 +- .../aria/web_applications_and_aria_faq/index.md | 74 +-- files/fr/web/accessibility/community/index.md | 2 +- files/fr/web/accessibility/index.md | 6 +- .../keyboard-navigable_javascript_widgets/index.md | 14 +- .../web/accessibility/understanding_wcag/index.md | 4 +- .../perceivable/color_contrast/index.md | 2 +- .../understanding_wcag/perceivable/index.md | 65 +- files/fr/web/api/abortsignal/index.md | 6 +- .../fr/web/api/analysernode/analysernode/index.md | 2 +- files/fr/web/api/analysernode/fftsize/index.md | 72 +-- .../api/analysernode/frequencybincount/index.md | 34 +- .../api/analysernode/getbytefrequencydata/index.md | 34 +- .../analysernode/getbytetimedomaindata/index.md | 72 +-- .../analysernode/getfloatfrequencydata/index.md | 4 +- .../analysernode/getfloattimedomaindata/index.md | 4 +- files/fr/web/api/analysernode/index.md | 4 +- files/fr/web/api/analysernode/maxdecibels/index.md | 36 +- files/fr/web/api/analysernode/mindecibels/index.md | 32 +- .../analysernode/smoothingtimeconstant/index.md | 34 +- .../web/api/animationevent/animationevent/index.md | 2 +- files/fr/web/api/atob/index.md | 8 +- files/fr/web/api/attr/index.md | 8 +- files/fr/web/api/attr/localname/index.md | 8 +- files/fr/web/api/attr/namespaceuri/index.md | 2 +- files/fr/web/api/attr/prefix/index.md | 4 +- files/fr/web/api/audiobuffer/audiobuffer/index.md | 4 +- .../web/api/audiobuffer/copyfromchannel/index.md | 6 +- .../fr/web/api/audiobuffer/copytochannel/index.md | 6 +- files/fr/web/api/audiobuffer/duration/index.md | 4 +- .../fr/web/api/audiobuffer/getchanneldata/index.md | 2 +- files/fr/web/api/audiobuffer/index.md | 4 +- files/fr/web/api/audiobuffer/length/index.md | 2 +- .../web/api/audiobuffer/numberofchannels/index.md | 2 +- files/fr/web/api/audiobuffer/samplerate/index.md | 4 +- .../web/api/audiobuffersourcenode/detune/index.md | 4 +- files/fr/web/api/audiobuffersourcenode/index.md | 2 +- .../fr/web/api/audiobuffersourcenode/loop/index.md | 8 +- .../web/api/audiobuffersourcenode/loopend/index.md | 2 +- .../api/audiobuffersourcenode/loopstart/index.md | 66 +-- .../audiobuffersourcenode/playbackrate/index.md | 60 +- .../web/api/audiobuffersourcenode/start/index.md | 2 +- .../audiocontext/createmediaelementsource/index.md | 4 +- files/fr/web/api/audiocontext/index.md | 46 +- files/fr/web/api/audiolistener/index.md | 14 +- files/fr/web/api/audionode/index.md | 6 +- files/fr/web/api/audioparam/index.md | 12 +- files/fr/web/api/audioprocessingevent/index.md | 2 +- .../authenticatordata/index.md | 2 +- .../web/api/baseaudiocontext/createbuffer/index.md | 2 +- .../web/api/baseaudiocontext/creategain/index.md | 8 +- .../baseaudiocontext/createperiodicwave/index.md | 2 +- files/fr/web/api/baseaudiocontext/index.md | 4 +- .../fr/web/api/biquadfilternode/frequency/index.md | 4 +- files/fr/web/api/biquadfilternode/index.md | 18 +- files/fr/web/api/blob/type/index.md | 2 +- files/fr/web/api/blobevent/blobevent/index.md | 2 +- files/fr/web/api/btoa/index.md | 16 +- files/fr/web/api/cache/add/index.md | 20 +- files/fr/web/api/cache/addall/index.md | 14 +- files/fr/web/api/cache/delete/index.md | 16 +- files/fr/web/api/cache/index.md | 6 +- files/fr/web/api/cache/keys/index.md | 16 +- files/fr/web/api/cache/match/index.md | 18 +- files/fr/web/api/cache/matchall/index.md | 12 +- files/fr/web/api/cache/put/index.md | 34 +- files/fr/web/api/caches/index.md | 6 +- files/fr/web/api/cachestorage/delete/index.md | 22 +- files/fr/web/api/cachestorage/has/index.md | 14 +- files/fr/web/api/cachestorage/index.md | 34 +- files/fr/web/api/cachestorage/keys/index.md | 6 +- files/fr/web/api/cachestorage/match/index.md | 20 +- files/fr/web/api/cachestorage/open/index.md | 8 +- .../web/api/canvas_api/a_basic_ray-caster/index.md | 4 +- files/fr/web/api/canvas_api/index.md | 32 +- .../manipulating_video_using_canvas/index.md | 2 +- .../tutorial/advanced_animations/index.md | 4 +- .../tutorial/applying_styles_and_colors/index.md | 30 +- .../canvas_api/tutorial/basic_animations/index.md | 10 +- .../api/canvas_api/tutorial/basic_usage/index.md | 6 +- .../tutorial/compositing/example/index.md | 396 ++++++------- .../canvas_api/tutorial/drawing_shapes/index.md | 510 ++++++++-------- .../hit_regions_and_accessibility/index.md | 28 +- .../canvas_api/tutorial/optimizing_canvas/index.md | 8 +- .../pixel_manipulation_with_canvas/index.md | 38 +- .../canvas_api/tutorial/transformations/index.md | 2 +- .../web/api/canvasgradient/addcolorstop/index.md | 12 +- files/fr/web/api/canvasgradient/index.md | 10 +- .../web/api/canvasrenderingcontext2d/arc/index.md | 26 +- .../canvasrenderingcontext2d/beginpath/index.md | 6 +- .../beziercurveto/index.md | 2 +- .../api/canvasrenderingcontext2d/canvas/index.md | 6 +- .../canvasrenderingcontext2d/clearrect/index.md | 18 +- .../canvasrenderingcontext2d/closepath/index.md | 8 +- .../createlineargradient/index.md | 16 +- .../canvasrenderingcontext2d/direction/index.md | 12 +- .../canvasrenderingcontext2d/drawimage/index.md | 42 +- .../api/canvasrenderingcontext2d/ellipse/index.md | 30 +- .../web/api/canvasrenderingcontext2d/fill/index.md | 10 +- .../api/canvasrenderingcontext2d/fillrect/index.md | 18 +- .../canvasrenderingcontext2d/fillstyle/index.md | 6 +- .../api/canvasrenderingcontext2d/filltext/index.md | 12 +- .../web/api/canvasrenderingcontext2d/font/index.md | 8 +- .../canvasrenderingcontext2d/getimagedata/index.md | 18 +- .../canvasrenderingcontext2d/globalalpha/index.md | 18 +- .../globalcompositeoperation/index.md | 14 +- .../imagesmoothingenabled/index.md | 10 +- files/fr/web/api/canvasrenderingcontext2d/index.md | 138 ++--- .../api/canvasrenderingcontext2d/linecap/index.md | 24 +- .../api/canvasrenderingcontext2d/linejoin/index.md | 4 +- .../api/canvasrenderingcontext2d/lineto/index.md | 12 +- .../canvasrenderingcontext2d/measuretext/index.md | 12 +- .../api/canvasrenderingcontext2d/moveto/index.md | 6 +- .../quadraticcurveto/index.md | 2 +- .../web/api/canvasrenderingcontext2d/rect/index.md | 4 +- .../api/canvasrenderingcontext2d/rotate/index.md | 14 +- .../api/canvasrenderingcontext2d/scale/index.md | 24 +- .../canvasrenderingcontext2d/setlinedash/index.md | 24 +- .../canvasrenderingcontext2d/settransform/index.md | 18 +- .../api/canvasrenderingcontext2d/stroke/index.md | 6 +- .../canvasrenderingcontext2d/strokerect/index.md | 16 +- .../canvasrenderingcontext2d/strokestyle/index.md | 6 +- .../canvasrenderingcontext2d/stroketext/index.md | 24 +- .../canvasrenderingcontext2d/textalign/index.md | 16 +- .../canvasrenderingcontext2d/textbaseline/index.md | 22 +- .../canvasrenderingcontext2d/transform/index.md | 12 +- .../canvasrenderingcontext2d/translate/index.md | 16 +- files/fr/web/api/clearinterval/index.md | 2 +- files/fr/web/api/client/frametype/index.md | 2 +- files/fr/web/api/client/id/index.md | 2 +- files/fr/web/api/client/index.md | 12 +- files/fr/web/api/client/postmessage/index.md | 2 +- files/fr/web/api/client/url/index.md | 6 +- files/fr/web/api/clients/claim/index.md | 20 +- files/fr/web/api/clients/get/index.md | 4 +- files/fr/web/api/clients/matchall/index.md | 8 +- files/fr/web/api/clients/openwindow/index.md | 8 +- files/fr/web/api/clipboard/index.md | 8 +- files/fr/web/api/clipboard/write/index.md | 12 +- files/fr/web/api/clipboard_api/index.md | 4 +- files/fr/web/api/closeevent/index.md | 44 +- files/fr/web/api/comment/index.md | 4 +- files/fr/web/api/compositionevent/index.md | 4 +- files/fr/web/api/console/assert/index.md | 8 +- files/fr/web/api/console/clear/index.md | 4 +- files/fr/web/api/console/count/index.md | 12 +- files/fr/web/api/console/countreset/index.md | 8 +- files/fr/web/api/console/error/index.md | 2 +- files/fr/web/api/console/groupcollapsed/index.md | 2 +- files/fr/web/api/console/groupend/index.md | 2 +- files/fr/web/api/console/index.md | 18 +- files/fr/web/api/console/profileend/index.md | 4 +- files/fr/web/api/console/table/index.md | 6 +- files/fr/web/api/console/time/index.md | 6 +- files/fr/web/api/console/timelog/index.md | 6 +- files/fr/web/api/credential/index.md | 4 +- .../web/api/credentialscontainer/create/index.md | 4 +- files/fr/web/api/credentialscontainer/get/index.md | 2 +- .../preventsilentaccess/index.md | 2 +- files/fr/web/api/crossoriginisolated/index.md | 4 +- files/fr/web/api/crypto/getrandomvalues/index.md | 8 +- files/fr/web/api/crypto_property/index.md | 2 +- files/fr/web/api/cryptokey/index.md | 4 +- files/fr/web/api/css_font_loading_api/index.md | 2 +- .../index.md | 2 +- files/fr/web/api/css_object_model/index.md | 24 +- .../managing_screen_orientation/index.md | 2 +- .../web/api/css_properties_and_values_api/index.md | 4 +- files/fr/web/api/cssmediarule/index.md | 2 +- files/fr/web/api/cssrulelist/index.md | 2 +- .../web/api/cssstyledeclaration/csstext/index.md | 2 +- files/fr/web/api/cssstyledeclaration/index.md | 8 +- files/fr/web/api/cssstylerule/index.md | 6 +- files/fr/web/api/cssvaluelist/index.md | 4 +- files/fr/web/api/datatransfer/cleardata/index.md | 4 +- files/fr/web/api/datatransfer/files/index.md | 4 +- files/fr/web/api/datatransfer/index.md | 82 +-- .../fr/web/api/dedicatedworkerglobalscope/index.md | 6 +- .../api/dedicatedworkerglobalscope/name/index.md | 4 +- .../accelerationincludinggravity/index.md | 4 +- .../devicemotionevent/devicemotionevent/index.md | 2 +- files/fr/web/api/devicemotionevent/index.md | 2 +- .../fr/web/api/devicemotionevent/interval/index.md | 2 +- .../api/deviceorientationevent/absolute/index.md | 2 +- files/fr/web/api/deviceorientationevent/index.md | 2 +- files/fr/web/api/document/adoptnode/index.md | 2 +- files/fr/web/api/document/alinkcolor/index.md | 10 +- files/fr/web/api/document/anchors/index.md | 6 +- files/fr/web/api/document/bgcolor/index.md | 6 +- .../web/api/document/caretrangefrompoint/index.md | 44 +- files/fr/web/api/document/clear/index.md | 2 +- files/fr/web/api/document/compatmode/index.md | 8 +- files/fr/web/api/document/contenttype/index.md | 2 +- files/fr/web/api/document/createattribute/index.md | 2 +- files/fr/web/api/document/createelement/index.md | 6 +- files/fr/web/api/document/createelementns/index.md | 4 +- .../web/api/document/createnodeiterator/index.md | 10 +- .../fr/web/api/document/creatensresolver/index.md | 2 +- .../document/createprocessinginstruction/index.md | 2 +- files/fr/web/api/document/createrange/index.md | 4 +- .../fr/web/api/document/createtreewalker/index.md | 2 +- files/fr/web/api/document/documentelement/index.md | 6 +- files/fr/web/api/document/documenturi/index.md | 2 +- .../fr/web/api/document/documenturiobject/index.md | 2 +- files/fr/web/api/document/domain/index.md | 16 +- .../api/document/domcontentloaded_event/index.md | 2 +- files/fr/web/api/document/drag_event/index.md | 2 +- files/fr/web/api/document/dragend_event/index.md | 2 +- files/fr/web/api/document/dragenter_event/index.md | 2 +- files/fr/web/api/document/dragleave_event/index.md | 2 +- files/fr/web/api/document/dragover_event/index.md | 2 +- files/fr/web/api/document/dragstart_event/index.md | 136 ++--- files/fr/web/api/document/drop_event/index.md | 2 +- .../fr/web/api/document/elementfrompoint/index.md | 2 +- .../fr/web/api/document/elementsfrompoint/index.md | 4 +- .../api/document/enablestylesheetsforset/index.md | 4 +- files/fr/web/api/document/evaluate/index.md | 14 +- files/fr/web/api/document/forms/index.md | 2 +- files/fr/web/api/document/getelementbyid/index.md | 10 +- .../api/document/getelementsbyclassname/index.md | 8 +- .../fr/web/api/document/getelementsbyname/index.md | 2 +- .../web/api/document/getelementsbytagname/index.md | 6 +- files/fr/web/api/document/hasfocus/index.md | 2 +- files/fr/web/api/document/images/index.md | 4 +- files/fr/web/api/document/importnode/index.md | 2 +- files/fr/web/api/document/index.md | 34 +- files/fr/web/api/document/lastmodified/index.md | 24 +- .../fr/web/api/document/laststylesheetset/index.md | 4 +- files/fr/web/api/document/location/index.md | 4 +- .../web/api/document/mozsetimageelement/index.md | 2 +- .../web/api/document/mozsyntheticdocument/index.md | 2 +- files/fr/web/api/document/ononline/index.md | 6 +- files/fr/web/api/document/open/index.md | 2 +- files/fr/web/api/document/origin/index.md | 2 +- files/fr/web/api/document/popupnode/index.md | 2 +- .../api/document/preferredstylesheetset/index.md | 2 +- files/fr/web/api/document/queryselector/index.md | 24 +- .../fr/web/api/document/queryselectorall/index.md | 16 +- files/fr/web/api/document/readystate/index.md | 22 +- .../api/document/readystatechange_event/index.md | 2 +- files/fr/web/api/document/registerelement/index.md | 6 +- .../api/document/selectedstylesheetset/index.md | 4 +- files/fr/web/api/document/stylesheets/index.md | 4 +- files/fr/web/api/document/title/index.md | 10 +- .../web/api/document/transitionend_event/index.md | 14 +- files/fr/web/api/document/url/index.md | 2 +- files/fr/web/api/document/visibilitystate/index.md | 2 +- files/fr/web/api/document/width/index.md | 2 +- files/fr/web/api/document/write/index.md | 6 +- files/fr/web/api/document/xmlversion/index.md | 2 +- .../api/document_object_model/examples/index.md | 26 +- .../how_to_create_a_dom_tree/index.md | 6 +- files/fr/web/api/document_object_model/index.md | 2 +- .../index.md | 30 +- .../using_the_w3c_dom_level_1_core/index.md | 6 +- .../api/document_object_model/whitespace/index.md | 20 +- .../api/documentfragment/documentfragment/index.md | 2 +- files/fr/web/api/documenttype/index.md | 4 +- files/fr/web/api/domerror/index.md | 2 +- files/fr/web/api/domexception/index.md | 42 +- files/fr/web/api/domhighrestimestamp/index.md | 18 +- .../domimplementation/createdocumenttype/index.md | 4 +- .../domimplementation/createhtmldocument/index.md | 4 +- files/fr/web/api/dommatrix/index.md | 6 +- files/fr/web/api/domobject/index.md | 2 +- files/fr/web/api/dompoint/index.md | 2 +- files/fr/web/api/dompointreadonly/index.md | 4 +- files/fr/web/api/domrect/index.md | 4 +- files/fr/web/api/domstringlist/index.md | 2 +- files/fr/web/api/domtokenlist/add/index.md | 4 +- files/fr/web/api/domtokenlist/entries/index.md | 2 +- files/fr/web/api/domtokenlist/foreach/index.md | 2 +- files/fr/web/api/domtokenlist/index.md | 2 +- files/fr/web/api/domtokenlist/supports/index.md | 2 +- files/fr/web/api/element/animate/index.md | 38 +- files/fr/web/api/element/attachshadow/index.md | 10 +- files/fr/web/api/element/attributes/index.md | 2 +- .../fr/web/api/element/childelementcount/index.md | 2 +- files/fr/web/api/element/classlist/index.md | 8 +- files/fr/web/api/element/classname/index.md | 4 +- files/fr/web/api/element/closest/index.md | 2 +- .../web/api/element/compositionend_event/index.md | 2 +- .../api/element/compositionstart_event/index.md | 2 +- files/fr/web/api/element/error_event/index.md | 4 +- files/fr/web/api/element/getattribute/index.md | 2 +- files/fr/web/api/element/getattributenode/index.md | 2 +- files/fr/web/api/element/getattributens/index.md | 10 +- .../web/api/element/getboundingclientrect/index.md | 2 +- .../api/element/getelementsbyclassname/index.md | 18 +- files/fr/web/api/element/innerhtml/index.md | 4 +- .../web/api/element/insertadjacentelement/index.md | 4 +- .../fr/web/api/element/insertadjacenthtml/index.md | 10 +- .../fr/web/api/element/insertadjacenttext/index.md | 10 +- files/fr/web/api/element/outerhtml/index.md | 4 +- .../web/api/element/removeattributenode/index.md | 4 +- .../fr/web/api/element/removeattributens/index.md | 2 +- .../fr/web/api/element/requestfullscreen/index.md | 8 +- files/fr/web/api/element/scrollheight/index.md | 28 +- files/fr/web/api/element/scrollintoview/index.md | 2 +- files/fr/web/api/element/scrollleft/index.md | 2 +- files/fr/web/api/element/scrollleftmax/index.md | 2 +- files/fr/web/api/element/scrollto/index.md | 8 +- files/fr/web/api/element/scrollwidth/index.md | 2 +- files/fr/web/api/element/select_event/index.md | 8 +- files/fr/web/api/element/setattribute/index.md | 2 +- files/fr/web/api/element/setattributenode/index.md | 4 +- .../fr/web/api/element/setattributenodens/index.md | 2 +- files/fr/web/api/element/setattributens/index.md | 2 +- files/fr/web/api/encoding_api/index.md | 2 +- files/fr/web/api/errorevent/index.md | 16 +- files/fr/web/api/event/bubbles/index.md | 6 +- files/fr/web/api/event/cancelable/index.md | 6 +- files/fr/web/api/event/cancelbubble/index.md | 2 +- .../api/event/comparison_of_event_targets/index.md | 112 ++-- files/fr/web/api/event/defaultprevented/index.md | 2 +- files/fr/web/api/event/eventphase/index.md | 32 +- .../web/api/event/explicitoriginaltarget/index.md | 2 +- files/fr/web/api/event/initevent/index.md | 6 +- files/fr/web/api/event/istrusted/index.md | 4 +- files/fr/web/api/event/originaltarget/index.md | 2 +- .../api/event/stopimmediatepropagation/index.md | 2 +- files/fr/web/api/event/stoppropagation/index.md | 6 +- files/fr/web/api/event/target/index.md | 6 +- files/fr/web/api/event/timestamp/index.md | 4 +- files/fr/web/api/event/type/index.md | 4 +- files/fr/web/api/eventsource/close/index.md | 8 +- files/fr/web/api/eventsource/open_event/index.md | 6 +- .../web/api/eventtarget/addeventlistener/index.md | 6 +- .../fr/web/api/eventtarget/dispatchevent/index.md | 4 +- files/fr/web/api/eventtarget/eventtarget/index.md | 4 +- .../api/eventtarget/removeeventlistener/index.md | 4 +- .../api/extendableevent/extendableevent/index.md | 6 +- .../web/api/extendablemessageevent/data/index.md | 2 +- .../extendablemessageevent/index.md | 12 +- files/fr/web/api/extendablemessageevent/index.md | 12 +- .../extendablemessageevent/lasteventid/index.md | 8 +- .../web/api/extendablemessageevent/origin/index.md | 8 +- .../web/api/extendablemessageevent/ports/index.md | 10 +- .../web/api/featurepolicy/allowedfeatures/index.md | 4 +- .../web/api/featurepolicy/allowsfeature/index.md | 8 +- files/fr/web/api/featurepolicy/features/index.md | 2 +- .../featurepolicy/getallowlistforfeature/index.md | 4 +- files/fr/web/api/federatedcredential/index.md | 4 +- files/fr/web/api/fetch/index.md | 6 +- files/fr/web/api/fetch_api/basic_concepts/index.md | 2 +- files/fr/web/api/fetch_api/index.md | 10 +- files/fr/web/api/fetch_api/using_fetch/index.md | 12 +- files/fr/web/api/fetchevent/index.md | 28 +- files/fr/web/api/file/index.md | 12 +- .../using_files_from_web_applications/index.md | 208 +++---- .../api/file_and_directory_entries_api/index.md | 6 +- files/fr/web/api/filereader/filereader/index.md | 12 +- .../web/api/filereader/readasbinarystring/index.md | 6 +- files/fr/web/api/filereader/readastext/index.md | 4 +- files/fr/web/api/filerequest/onprogress/index.md | 2 +- files/fr/web/api/force_touch_events/index.md | 4 +- files/fr/web/api/formdata/append/index.md | 16 +- files/fr/web/api/formdata/entries/index.md | 8 +- files/fr/web/api/formdata/formdata/index.md | 12 +- .../api/formdata/using_formdata_objects/index.md | 74 +-- files/fr/web/api/fullscreen_api/index.md | 40 +- files/fr/web/api/gainnode/index.md | 2 +- files/fr/web/api/gamepad/index.md | 4 +- files/fr/web/api/gamepad_api/index.md | 2 +- .../api/gamepad_api/using_the_gamepad_api/index.md | 192 +++--- files/fr/web/api/geolocation/clearwatch/index.md | 4 +- files/fr/web/api/geolocation/index.md | 14 +- .../fr/web/api/geolocation/watchposition/index.md | 8 +- files/fr/web/api/geolocationpositionerror/index.md | 2 +- files/fr/web/api/globaleventhandlers/index.md | 2 +- .../web/api/globaleventhandlers/onabort/index.md | 6 +- .../fr/web/api/globaleventhandlers/onblur/index.md | 6 +- .../web/api/globaleventhandlers/onchange/index.md | 6 +- .../web/api/globaleventhandlers/onclick/index.md | 2 +- .../web/api/globaleventhandlers/onclose/index.md | 2 +- .../api/globaleventhandlers/ondblclick/index.md | 4 +- .../web/api/globaleventhandlers/onerror/index.md | 26 +- .../ongotpointercapture/index.md | 2 +- .../web/api/globaleventhandlers/onreset/index.md | 4 +- .../web/api/globaleventhandlers/onresize/index.md | 2 +- .../web/api/globaleventhandlers/onwheel/index.md | 4 +- files/fr/web/api/headers/index.md | 12 +- files/fr/web/api/history/index.md | 22 +- files/fr/web/api/history_api/example/index.md | 516 ++++++++-------- files/fr/web/api/history_api/index.md | 10 +- .../drag_operations/index.md | 20 +- files/fr/web/api/html_drag_and_drop_api/index.md | 4 +- files/fr/web/api/htmlbodyelement/index.md | 2 +- files/fr/web/api/htmlbrelement/index.md | 2 +- files/fr/web/api/htmlbuttonelement/index.md | 14 +- .../web/api/htmlcanvaselement/getcontext/index.md | 42 +- files/fr/web/api/htmlcanvaselement/height/index.md | 10 +- files/fr/web/api/htmlcollection/index.md | 10 +- files/fr/web/api/htmlcollection/item/index.md | 2 +- .../getdistributednodes/index.md | 4 +- files/fr/web/api/htmlcontentelement/index.md | 12 +- .../fr/web/api/htmlcontentelement/select/index.md | 4 +- files/fr/web/api/htmldocument/index.md | 4 +- files/fr/web/api/htmlelement/accesskey/index.md | 4 +- .../web/api/htmlelement/beforeinput_event/index.md | 2 +- files/fr/web/api/htmlelement/change_event/index.md | 2 +- files/fr/web/api/htmlelement/click/index.md | 2 +- .../web/api/htmlelement/contenteditable/index.md | 4 +- files/fr/web/api/htmlelement/dir/index.md | 8 +- files/fr/web/api/htmlelement/hidden/index.md | 4 +- files/fr/web/api/htmlelement/index.md | 6 +- files/fr/web/api/htmlelement/innertext/index.md | 2 +- files/fr/web/api/htmlelement/input_event/index.md | 4 +- .../web/api/htmlelement/iscontenteditable/index.md | 2 +- files/fr/web/api/htmlelement/lang/index.md | 4 +- files/fr/web/api/htmlelement/offsetheight/index.md | 2 +- files/fr/web/api/htmlelement/offsetleft/index.md | 8 +- files/fr/web/api/htmlelement/offsetparent/index.md | 2 +- files/fr/web/api/htmlelement/offsetwidth/index.md | 2 +- files/fr/web/api/htmlelement/outertext/index.md | 2 +- files/fr/web/api/htmlelement/title/index.md | 4 +- .../api/htmlelement/transitionend_event/index.md | 4 +- .../web/api/htmlformelement/acceptcharset/index.md | 4 +- files/fr/web/api/htmlformelement/action/index.md | 2 +- files/fr/web/api/htmlformelement/elements/index.md | 2 +- files/fr/web/api/htmlformelement/encoding/index.md | 2 +- files/fr/web/api/htmlformelement/enctype/index.md | 4 +- files/fr/web/api/htmlformelement/index.md | 6 +- files/fr/web/api/htmlformelement/length/index.md | 2 +- files/fr/web/api/htmlformelement/method/index.md | 2 +- files/fr/web/api/htmlformelement/name/index.md | 8 +- .../api/htmlformelement/reportvalidity/index.md | 4 +- files/fr/web/api/htmlformelement/submit/index.md | 6 +- files/fr/web/api/htmlformelement/target/index.md | 2 +- .../api/htmliframeelement/contentdocument/index.md | 2 +- files/fr/web/api/htmlimageelement/index.md | 34 +- files/fr/web/api/htmlinputelement/index.md | 2 +- .../web/api/htmlmediaelement/abort_event/index.md | 2 +- .../api/htmlmediaelement/canplay_event/index.md | 2 +- .../api/htmlmediaelement/capturestream/index.md | 6 +- files/fr/web/api/htmlmediaelement/index.md | 26 +- files/fr/web/api/htmlmediaelement/play/index.md | 10 +- files/fr/web/api/htmlmediaelement/volume/index.md | 2 +- files/fr/web/api/htmlselectelement/remove/index.md | 4 +- .../htmlselectelement/setcustomvalidity/index.md | 4 +- files/fr/web/api/htmlstyleelement/index.md | 8 +- files/fr/web/api/htmltablecellelement/index.md | 2 +- files/fr/web/api/htmltableelement/caption/index.md | 2 +- .../fr/web/api/htmltableelement/insertrow/index.md | 12 +- .../api/htmltablerowelement/insertcell/index.md | 4 +- files/fr/web/api/htmlunknownelement/index.md | 6 +- files/fr/web/api/idbcursor/advance/index.md | 6 +- files/fr/web/api/idbcursor/continue/index.md | 4 +- files/fr/web/api/idbcursor/index.md | 2 +- files/fr/web/api/idbdatabase/close/index.md | 2 +- .../web/api/idbdatabase/createobjectstore/index.md | 2 +- .../web/api/idbdatabase/deleteobjectstore/index.md | 6 +- files/fr/web/api/idbdatabase/index.md | 2 +- files/fr/web/api/idbdatabase/name/index.md | 2 +- .../web/api/idbdatabase/objectstorenames/index.md | 4 +- files/fr/web/api/idbdatabase/transaction/index.md | 2 +- files/fr/web/api/idbdatabase/version/index.md | 2 +- .../api/idbdatabase/versionchange_event/index.md | 2 +- files/fr/web/api/idbenvironment/index.md | 2 +- files/fr/web/api/idbfactory/cmp/index.md | 2 +- .../fr/web/api/idbfactory/deletedatabase/index.md | 4 +- files/fr/web/api/idbfactory/index.md | 2 +- files/fr/web/api/idbfactory/open/index.md | 22 +- files/fr/web/api/idbindex/count/index.md | 4 +- files/fr/web/api/idbindex/get/index.md | 6 +- files/fr/web/api/idbindex/getall/index.md | 2 +- files/fr/web/api/idbindex/getkey/index.md | 2 +- files/fr/web/api/idbindex/keypath/index.md | 2 +- files/fr/web/api/idbindex/multientry/index.md | 2 +- files/fr/web/api/idbindex/name/index.md | 2 +- files/fr/web/api/idbindex/objectstore/index.md | 2 +- files/fr/web/api/idbindex/opencursor/index.md | 2 +- files/fr/web/api/idbindex/openkeycursor/index.md | 2 +- files/fr/web/api/idbindex/unique/index.md | 2 +- files/fr/web/api/idbkeyrange/bound/index.md | 2 +- files/fr/web/api/idbkeyrange/includes/index.md | 2 +- files/fr/web/api/idbkeyrange/lower/index.md | 2 +- files/fr/web/api/idbkeyrange/lowerbound/index.md | 4 +- files/fr/web/api/idbkeyrange/loweropen/index.md | 2 +- files/fr/web/api/idbkeyrange/only/index.md | 2 +- files/fr/web/api/idbkeyrange/upper/index.md | 2 +- files/fr/web/api/idbkeyrange/upperbound/index.md | 4 +- files/fr/web/api/idbkeyrange/upperopen/index.md | 2 +- files/fr/web/api/idbobjectstore/add/index.md | 4 +- .../web/api/idbobjectstore/autoincrement/index.md | 6 +- files/fr/web/api/idbobjectstore/clear/index.md | 4 +- files/fr/web/api/idbobjectstore/count/index.md | 2 +- .../fr/web/api/idbobjectstore/createindex/index.md | 8 +- files/fr/web/api/idbobjectstore/delete/index.md | 2 +- .../fr/web/api/idbobjectstore/deleteindex/index.md | 14 +- files/fr/web/api/idbobjectstore/get/index.md | 4 +- files/fr/web/api/idbobjectstore/getall/index.md | 8 +- .../fr/web/api/idbobjectstore/getallkeys/index.md | 4 +- files/fr/web/api/idbobjectstore/index.md | 2 +- files/fr/web/api/idbobjectstore/index/index.md | 2 +- .../fr/web/api/idbobjectstore/indexnames/index.md | 4 +- files/fr/web/api/idbobjectstore/keypath/index.md | 4 +- files/fr/web/api/idbobjectstore/name/index.md | 2 +- .../fr/web/api/idbobjectstore/opencursor/index.md | 2 +- .../web/api/idbobjectstore/openkeycursor/index.md | 2 +- files/fr/web/api/idbobjectstore/put/index.md | 6 +- .../fr/web/api/idbobjectstore/transaction/index.md | 6 +- files/fr/web/api/idbopendbrequest/index.md | 22 +- files/fr/web/api/idbrequest/error/index.md | 2 +- files/fr/web/api/idbrequest/index.md | 4 +- files/fr/web/api/idbrequest/onerror/index.md | 2 +- files/fr/web/api/idbrequest/onsuccess/index.md | 2 +- files/fr/web/api/idbrequest/readystate/index.md | 4 +- files/fr/web/api/idbrequest/source/index.md | 6 +- files/fr/web/api/idbrequest/transaction/index.md | 4 +- files/fr/web/api/idbtransaction/abort/index.md | 2 +- files/fr/web/api/idbtransaction/db/index.md | 6 +- files/fr/web/api/idbtransaction/error/index.md | 6 +- .../fr/web/api/idbtransaction/error_event/index.md | 4 +- files/fr/web/api/idbtransaction/index.md | 2 +- files/fr/web/api/idbtransaction/mode/index.md | 2 +- .../fr/web/api/idbtransaction/objectstore/index.md | 6 +- .../api/idbtransaction/objectstorenames/index.md | 2 +- files/fr/web/api/imagedata/data/index.md | 4 +- files/fr/web/api/imagedata/index.md | 4 +- files/fr/web/api/index.md | 2 +- .../index.md | 16 +- files/fr/web/api/indexeddb_api/index.md | 22 +- .../web/api/indexeddb_api/using_indexeddb/index.md | 36 +- .../fr/web/api/intersection_observer_api/index.md | 20 +- .../fr/web/api/intersectionobserverentry/index.md | 2 +- files/fr/web/api/issecurecontext/index.md | 4 +- files/fr/web/api/keyboardevent/code/index.md | 6 +- files/fr/web/api/keyboardevent/index.md | 86 +-- .../web/api/keyboardevent/key/key_values/index.md | 42 +- .../web/api/keyboardevent/keyboardevent/index.md | 4 +- .../web/api/keyframeeffect/keyframeeffect/index.md | 2 +- files/fr/web/api/location/reload/index.md | 2 +- .../fr/web/api/mediadevices/getusermedia/index.md | 2 +- files/fr/web/api/mediastream/index.md | 20 +- .../fr/web/api/mediastreamaudiosourcenode/index.md | 2 +- files/fr/web/api/mouseevent/index.md | 24 +- files/fr/web/api/mouseevent/offsetx/index.md | 4 +- files/fr/web/api/mouseevent/offsety/index.md | 4 +- files/fr/web/api/mutationobserver/index.md | 8 +- files/fr/web/api/navigator/connection/index.md | 2 +- files/fr/web/api/navigator/credentials/index.md | 10 +- files/fr/web/api/navigator/getgamepads/index.md | 2 +- files/fr/web/api/navigator/getusermedia/index.md | 16 +- .../api/navigator/mozislocallyavailable/index.md | 4 +- .../web-based_protocol_handlers/index.md | 18 +- files/fr/web/api/navigator/sendbeacon/index.md | 22 +- files/fr/web/api/navigator/serviceworker/index.md | 4 +- files/fr/web/api/navigator/share/index.md | 14 +- files/fr/web/api/network_information_api/index.md | 4 +- files/fr/web/api/node/appendchild/index.md | 2 +- files/fr/web/api/node/baseuri/index.md | 6 +- files/fr/web/api/node/childnodes/index.md | 6 +- files/fr/web/api/node/clonenode/index.md | 10 +- .../web/api/node/comparedocumentposition/index.md | 2 +- files/fr/web/api/node/contains/index.md | 2 +- files/fr/web/api/node/firstchild/index.md | 6 +- files/fr/web/api/node/index.md | 30 +- files/fr/web/api/node/insertbefore/index.md | 2 +- files/fr/web/api/node/isconnected/index.md | 2 +- files/fr/web/api/node/isdefaultnamespace/index.md | 2 +- files/fr/web/api/node/isequalnode/index.md | 4 +- files/fr/web/api/node/issamenode/index.md | 12 +- files/fr/web/api/node/issupported/index.md | 6 +- files/fr/web/api/node/nextsibling/index.md | 2 +- files/fr/web/api/node/nodename/index.md | 6 +- files/fr/web/api/node/nodetype/index.md | 2 +- files/fr/web/api/node/nodevalue/index.md | 2 +- files/fr/web/api/node/normalize/index.md | 2 +- files/fr/web/api/node/ownerdocument/index.md | 2 +- files/fr/web/api/node/parentelement/index.md | 2 +- files/fr/web/api/node/parentnode/index.md | 4 +- files/fr/web/api/node/previoussibling/index.md | 2 +- files/fr/web/api/node/removechild/index.md | 10 +- files/fr/web/api/node/textcontent/index.md | 10 +- files/fr/web/api/nodefilter/index.md | 2 +- .../nodeiterator/expandentityreferences/index.md | 2 +- files/fr/web/api/nodeiterator/index.md | 2 +- files/fr/web/api/nodeiterator/nextnode/index.md | 4 +- files/fr/web/api/nodeiterator/whattoshow/index.md | 2 +- files/fr/web/api/nodelist/foreach/index.md | 8 +- files/fr/web/api/nodelist/index.md | 16 +- files/fr/web/api/notification/data/index.md | 2 +- files/fr/web/api/notification/permission/index.md | 2 +- files/fr/web/api/notification/silent/index.md | 2 +- files/fr/web/api/notificationevent/index.md | 2 +- files/fr/web/api/notifications_api/index.md | 2 +- .../offlineaudiocontext/complete_event/index.md | 2 +- files/fr/web/api/offscreencanvas/index.md | 16 +- files/fr/web/api/origin/index.md | 6 +- files/fr/web/api/oscillatornode/index.md | 26 +- files/fr/web/api/page_visibility_api/index.md | 22 +- files/fr/web/api/pagetransitionevent/index.md | 6 +- files/fr/web/api/passwordcredential/name/index.md | 2 +- files/fr/web/api/payment_request_api/index.md | 44 +- files/fr/web/api/periodicwave/index.md | 6 +- files/fr/web/api/plugin/index.md | 10 +- files/fr/web/api/pointer_events/index.md | 6 +- .../pointer_events/pinch_zoom_gestures/index.md | 2 +- files/fr/web/api/pointer_lock_api/index.md | 12 +- files/fr/web/api/pointerevent/index.md | 18 +- files/fr/web/api/proximity_events/index.md | 4 +- files/fr/web/api/push_api/index.md | 2 +- files/fr/web/api/pushevent/index.md | 46 +- files/fr/web/api/queuemicrotask/index.md | 12 +- .../api/range/createcontextualfragment/index.md | 2 +- files/fr/web/api/range/detach/index.md | 2 +- files/fr/web/api/range/selectnode/index.md | 2 +- files/fr/web/api/range/setstart/index.md | 2 +- files/fr/web/api/range/surroundcontents/index.md | 4 +- files/fr/web/api/request/mode/index.md | 2 +- files/fr/web/api/request/request/index.md | 4 +- files/fr/web/api/rtciceserver/index.md | 18 +- .../rtcpeerconnection/setconfiguration/index.md | 8 +- files/fr/web/api/screen_capture_api/index.md | 6 +- .../audioprocess_event/index.md | 6 +- files/fr/web/api/selection/collapse/index.md | 6 +- files/fr/web/api/selection/index.md | 28 +- files/fr/web/api/selection/tostring/index.md | 2 +- files/fr/web/api/server-sent_events/index.md | 4 +- .../using_server-sent_events/index.md | 22 +- files/fr/web/api/service_worker_api/index.md | 2 +- .../using_service_workers/index.md | 84 +-- files/fr/web/api/serviceworker/index.md | 72 +-- .../web/api/serviceworker/onstatechange/index.md | 12 +- files/fr/web/api/serviceworkercontainer/index.md | 8 +- .../api/serviceworkercontainer/register/index.md | 64 +- files/fr/web/api/serviceworkerglobalscope/index.md | 2 +- .../onnotificationclick/index.md | 2 +- .../api/serviceworkerregistration/active/index.md | 2 +- .../getnotifications/index.md | 2 +- .../fr/web/api/serviceworkerregistration/index.md | 52 +- .../shownotification/index.md | 6 +- files/fr/web/api/settimeout/index.md | 12 +- files/fr/web/api/sharedworker/index.md | 4 +- files/fr/web/api/sharedworker/port/index.md | 2 +- files/fr/web/api/speechrecognition/index.md | 6 +- files/fr/web/api/speechsynthesisutterance/index.md | 20 +- files/fr/web/api/storage/clear/index.md | 6 +- files/fr/web/api/storage/getitem/index.md | 2 +- files/fr/web/api/storage/index.md | 10 +- files/fr/web/api/storage/key/index.md | 8 +- files/fr/web/api/storage/length/index.md | 6 +- files/fr/web/api/storage/removeitem/index.md | 8 +- files/fr/web/api/storage/setitem/index.md | 4 +- files/fr/web/api/storage_api/index.md | 38 +- files/fr/web/api/storagemanager/estimate/index.md | 2 +- files/fr/web/api/storagemanager/index.md | 4 +- files/fr/web/api/storagemanager/persist/index.md | 12 +- files/fr/web/api/storagemanager/persisted/index.md | 4 +- files/fr/web/api/streams_api/index.md | 8 +- files/fr/web/api/stylesheetlist/index.md | 4 +- files/fr/web/api/subtlecrypto/digest/index.md | 2 +- files/fr/web/api/subtlecrypto/index.md | 14 +- files/fr/web/api/svgelement/index.md | 10 +- files/fr/web/api/svgmatrix/index.md | 6 +- files/fr/web/api/svgrectelement/index.md | 14 +- files/fr/web/api/svgtitleelement/index.md | 4 +- files/fr/web/api/syncmanager/index.md | 4 +- files/fr/web/api/text/index.md | 6 +- files/fr/web/api/text/splittext/index.md | 4 +- files/fr/web/api/textencoder/index.md | 114 ++-- files/fr/web/api/textencoder/textencoder/index.md | 2 +- files/fr/web/api/textmetrics/index.md | 28 +- files/fr/web/api/textmetrics/width/index.md | 4 +- files/fr/web/api/timeranges/index.md | 10 +- files/fr/web/api/touch_events/index.md | 4 +- files/fr/web/api/transferable/index.md | 2 +- .../api/treewalker/expandentityreferences/index.md | 2 +- files/fr/web/api/treewalker/whattoshow/index.md | 4 +- files/fr/web/api/uievent/detail/index.md | 4 +- files/fr/web/api/uievent/index.md | 6 +- files/fr/web/api/uievent/layerx/index.md | 8 +- files/fr/web/api/url/createobjecturl/index.md | 4 +- files/fr/web/api/url/hash/index.md | 4 +- files/fr/web/api/url/index.md | 10 +- files/fr/web/api/url/protocol/index.md | 2 +- files/fr/web/api/url/search/index.md | 2 +- files/fr/web/api/url/searchparams/index.md | 8 +- files/fr/web/api/url/tojson/index.md | 2 +- files/fr/web/api/url/tostring/index.md | 4 +- files/fr/web/api/url/url/index.md | 4 +- files/fr/web/api/urlsearchparams/entries/index.md | 2 +- files/fr/web/api/urlsearchparams/index.md | 4 +- files/fr/web/api/vibration_api/index.md | 6 +- files/fr/web/api/vrdisplaycapabilities/index.md | 14 +- .../audionodes.svg | 2 +- .../basic_concepts_behind_web_audio_api/index.md | 72 +-- files/fr/web/api/web_audio_api/index.md | 288 ++++----- .../api/web_audio_api/using_web_audio_api/index.md | 18 +- .../visualizations_with_web_audio_api/index.md | 6 +- .../web_audio_spatialization_basics/index.md | 4 +- files/fr/web/api/web_speech_api/index.md | 32 +- .../using_the_web_speech_api/index.md | 16 +- files/fr/web/api/web_storage_api/index.md | 16 +- .../using_the_web_storage_api/index.md | 10 +- .../index.md | 2 +- files/fr/web/api/web_workers_api/index.md | 4 +- .../structured_clone_algorithm/index.md | 32 +- .../api/web_workers_api/using_web_workers/index.md | 6 +- files/fr/web/api/webgl2renderingcontext/index.md | 30 +- .../webgl_api/by_example/basic_scissoring/index.md | 6 +- .../webgl_api/by_example/boilerplate_1/index.md | 2 +- .../by_example/clearing_by_clicking/index.md | 8 +- .../by_example/raining_rectangles/index.md | 18 +- files/fr/web/api/webgl_api/data/index.md | 10 +- files/fr/web/api/webgl_api/index.md | 76 +-- .../adding_2d_content_to_a_webgl_context/index.md | 82 +-- .../tutorial/animating_objects_with_webgl/index.md | 16 +- .../tutorial/animating_textures_in_webgl/index.md | 130 ++-- .../creating_3d_objects_using_webgl/index.md | 34 +- .../tutorial/getting_started_with_webgl/index.md | 52 +- files/fr/web/api/webgl_api/tutorial/index.md | 30 +- .../webgl_api/tutorial/lighting_in_webgl/index.md | 24 +- .../using_shaders_to_apply_color_in_webgl/index.md | 20 +- .../tutorial/using_textures_in_webgl/index.md | 66 +-- files/fr/web/api/webgl_api/types/index.md | 12 +- files/fr/web/api/webglbuffer/index.md | 2 +- files/fr/web/api/webglprogram/index.md | 12 +- .../webglrenderingcontext/activetexture/index.md | 12 +- .../webglrenderingcontext/attachshader/index.md | 6 +- .../api/webglrenderingcontext/bindbuffer/index.md | 12 +- .../api/webglrenderingcontext/bindtexture/index.md | 20 +- .../api/webglrenderingcontext/bufferdata/index.md | 36 +- .../web/api/webglrenderingcontext/canvas/index.md | 6 +- .../web/api/webglrenderingcontext/clear/index.md | 14 +- .../webglrenderingcontext/compileshader/index.md | 4 +- .../webglrenderingcontext/createprogram/index.md | 6 +- .../webglrenderingcontext/createshader/index.md | 6 +- .../webglrenderingcontext/createtexture/index.md | 8 +- .../webglrenderingcontext/deletebuffer/index.md | 2 +- .../webglrenderingcontext/deleteshader/index.md | 2 +- .../api/webglrenderingcontext/drawarrays/index.md | 27 +- .../web/api/webglrenderingcontext/enable/index.md | 12 +- .../enablevertexattribarray/index.md | 24 +- .../webglrenderingcontext/generatemipmap/index.md | 20 +- .../getattriblocation/index.md | 6 +- .../api/webglrenderingcontext/geterror/index.md | 2 +- .../getshaderparameter/index.md | 10 +- .../webglrenderingcontext/gettexparameter/index.md | 24 +- .../getuniformlocation/index.md | 6 +- .../api/webglrenderingcontext/isbuffer/index.md | 4 +- .../webglrenderingcontext/shadersource/index.md | 6 +- .../api/webglrenderingcontext/teximage2d/index.md | 46 +- .../webglrenderingcontext/texparameter/index.md | 20 +- .../web/api/webglrenderingcontext/uniform/index.md | 16 +- .../webglrenderingcontext/uniformmatrix/index.md | 8 +- .../api/webglrenderingcontext/useprogram/index.md | 2 +- .../vertexattribpointer/index.md | 46 +- .../api/webglrenderingcontext/viewport/index.md | 14 +- files/fr/web/api/webglshader/index.md | 12 +- .../signaling_and_video_calling/index.md | 20 +- .../api/webrtc_api/taking_still_photos/index.md | 2 +- files/fr/web/api/websocket/binarytype/index.md | 2 +- files/fr/web/api/websockets_api/index.md | 30 +- .../writing_a_websocket_server_in_java/index.md | 6 +- .../writing_websocket_client_applications/index.md | 48 +- .../writing_websocket_servers/index.md | 114 ++-- .../using_vr_controllers_with_webvr/index.md | 2 +- files/fr/web/api/webvtt_api/index.md | 4 +- files/fr/web/api/webxr_device_api/index.md | 64 +- files/fr/web/api/window/alert/index.md | 6 +- files/fr/web/api/window/applicationcache/index.md | 6 +- .../fr/web/api/window/beforeunload_event/index.md | 2 +- .../web/api/window/cancelanimationframe/index.md | 2 +- .../fr/web/api/window/cancelidlecallback/index.md | 2 +- files/fr/web/api/window/clearimmediate/index.md | 4 +- files/fr/web/api/window/close/index.md | 2 +- files/fr/web/api/window/closed/index.md | 8 +- files/fr/web/api/window/confirm/index.md | 2 +- files/fr/web/api/window/console/index.md | 2 +- files/fr/web/api/window/content/index.md | 2 +- files/fr/web/api/window/devicepixelratio/index.md | 4 +- .../web/api/window/domcontentloaded_event/index.md | 8 +- files/fr/web/api/window/focus/index.md | 2 +- files/fr/web/api/window/frames/index.md | 4 +- files/fr/web/api/window/fullscreen/index.md | 8 +- files/fr/web/api/window/getcomputedstyle/index.md | 2 +- files/fr/web/api/window/getselection/index.md | 2 +- files/fr/web/api/window/history/index.md | 12 +- files/fr/web/api/window/index.md | 100 ++-- files/fr/web/api/window/innerheight/index.md | 10 +- files/fr/web/api/window/innerwidth/index.md | 4 +- files/fr/web/api/window/length/index.md | 2 +- files/fr/web/api/window/location/index.md | 8 +- files/fr/web/api/window/name/index.md | 6 +- files/fr/web/api/window/offline_event/index.md | 2 +- files/fr/web/api/window/open/index.md | 120 ++-- files/fr/web/api/window/opener/index.md | 2 +- files/fr/web/api/window/outerheight/index.md | 6 +- files/fr/web/api/window/pageshow_event/index.md | 6 +- files/fr/web/api/window/parent/index.md | 2 +- files/fr/web/api/window/popstate_event/index.md | 8 +- files/fr/web/api/window/postmessage/index.md | 10 +- .../web/api/window/requestanimationframe/index.md | 10 +- .../fr/web/api/window/requestidlecallback/index.md | 6 +- files/fr/web/api/window/screen/index.md | 4 +- files/fr/web/api/window/screenx/index.md | 2 +- files/fr/web/api/window/scrollby/index.md | 8 +- files/fr/web/api/window/scrollbypages/index.md | 2 +- files/fr/web/api/window/scrolly/index.md | 2 +- files/fr/web/api/window/showmodaldialog/index.md | 16 +- files/fr/web/api/window/unload_event/index.md | 22 +- .../web/api/window/vrdisplayconnect_event/index.md | 4 +- .../api/window/vrdisplaydisconnect_event/index.md | 4 +- files/fr/web/api/windowclient/focus/index.md | 4 +- files/fr/web/api/windowclient/focused/index.md | 2 +- files/fr/web/api/windowclient/index.md | 4 +- files/fr/web/api/windowclient/navigate/index.md | 4 +- .../web/api/windowclient/visibilitystate/index.md | 4 +- files/fr/web/api/windoweventhandlers/index.md | 2 +- .../api/windoweventhandlers/onafterprint/index.md | 2 +- .../api/windoweventhandlers/onbeforeprint/index.md | 2 +- .../api/windoweventhandlers/onhashchange/index.md | 22 +- .../api/windoweventhandlers/onpopstate/index.md | 10 +- files/fr/web/api/worker/onmessage/index.md | 4 +- files/fr/web/api/worker/postmessage/index.md | 4 +- .../fr/web/api/workerglobalscope/console/index.md | 8 +- files/fr/web/api/workerglobalscope/dump/index.md | 2 +- .../api/workerglobalscope/importscripts/index.md | 2 +- files/fr/web/api/workerglobalscope/index.md | 2 +- .../fr/web/api/workerglobalscope/location/index.md | 22 +- .../web/api/workerglobalscope/navigator/index.md | 2 +- files/fr/web/api/workerglobalscope/self/index.md | 8 +- files/fr/web/api/workerlocation/index.md | 26 +- files/fr/web/api/xmldocument/load/index.md | 6 +- files/fr/web/api/xmlhttprequest/index.md | 2 +- .../fr/web/api/xmlhttprequest/load_event/index.md | 2 +- files/fr/web/api/xmlhttprequest/open/index.md | 6 +- .../fr/web/api/xmlhttprequest/readystate/index.md | 4 +- .../xmlhttprequest/readystatechange_event/index.md | 6 +- files/fr/web/api/xmlhttprequest/response/index.md | 16 +- .../web/api/xmlhttprequest/responsetext/index.md | 2 +- files/fr/web/api/xmlhttprequest/send/index.md | 6 +- .../api/xmlhttprequest/setrequestheader/index.md | 10 +- .../xmlhttprequest/using_xmlhttprequest/index.md | 660 ++++++++++----------- .../api/xmlhttprequest/withcredentials/index.md | 6 +- .../web/api/xmlhttprequest/xmlhttprequest/index.md | 2 +- files/fr/web/api/xmlserializer/index.md | 8 +- .../web/api/xsltprocessor/basic_example/index.md | 12 +- .../web/api/xsltprocessor/generating_html/index.md | 20 +- .../xsl_transformations_in_mozilla_faq/index.md | 20 +- files/fr/web/css/-moz-context-properties/index.md | 2 +- files/fr/web/css/-moz-user-focus/index.md | 2 +- files/fr/web/css/-webkit-line-clamp/index.md | 14 +- files/fr/web/css/-webkit-mask-box-image/index.md | 2 +- files/fr/web/css/-webkit-mask-position-x/index.md | 2 +- files/fr/web/css/-webkit-mask-repeat-x/index.md | 2 +- files/fr/web/css/-webkit-mask-repeat-y/index.md | 2 +- files/fr/web/css/@charset/index.md | 4 +- files/fr/web/css/@counter-style/fallback/index.md | 2 +- files/fr/web/css/@counter-style/system/index.md | 10 +- files/fr/web/css/@document/index.md | 18 +- files/fr/web/css/@font-face/font-display/index.md | 2 +- .../@font-face/font-variation-settings/index.md | 2 +- files/fr/web/css/@font-face/index.md | 2 +- files/fr/web/css/@font-feature-values/index.md | 4 +- files/fr/web/css/@keyframes/index.md | 12 +- .../css/@media/-moz-device-pixel-ratio/index.md | 4 +- files/fr/web/css/@media/-webkit-animation/index.md | 2 +- .../web/css/@media/-webkit-transform-2d/index.md | 2 +- .../fr/web/css/@media/-webkit-transition/index.md | 2 +- files/fr/web/css/@media/device-height/index.md | 2 +- files/fr/web/css/@media/monochrome/index.md | 2 +- files/fr/web/css/@media/prefers-contrast/index.md | 4 +- .../web/css/@media/prefers-reduced-motion/index.md | 2 +- files/fr/web/css/@media/shape/index.md | 20 +- files/fr/web/css/@page/index.md | 2 +- files/fr/web/css/@property/index.md | 6 +- files/fr/web/css/@supports/index.md | 8 +- files/fr/web/css/_colon_-moz-broken/index.md | 2 +- files/fr/web/css/_colon_-moz-first-node/index.md | 2 +- files/fr/web/css/_colon_-moz-last-node/index.md | 2 +- .../web/css/_colon_-moz-only-whitespace/index.md | 2 +- .../fr/web/css/_colon_-moz-user-disabled/index.md | 2 +- files/fr/web/css/_colon_active/index.md | 2 +- files/fr/web/css/_colon_autofill/index.md | 2 +- files/fr/web/css/_colon_empty/index.md | 2 +- files/fr/web/css/_colon_first-child/index.md | 2 +- files/fr/web/css/_colon_first-of-type/index.md | 2 +- files/fr/web/css/_colon_focus-visible/index.md | 2 +- files/fr/web/css/_colon_focus-within/index.md | 2 +- files/fr/web/css/_colon_focus/index.md | 2 +- files/fr/web/css/_colon_fullscreen/index.md | 2 +- files/fr/web/css/_colon_future/index.md | 8 +- files/fr/web/css/_colon_host()/index.md | 4 +- files/fr/web/css/_colon_host-context()/index.md | 2 +- files/fr/web/css/_colon_host/index.md | 4 +- files/fr/web/css/_colon_hover/index.md | 8 +- files/fr/web/css/_colon_is/index.md | 24 +- files/fr/web/css/_colon_last-child/index.md | 2 +- files/fr/web/css/_colon_link/index.md | 2 +- files/fr/web/css/_colon_local-link/index.md | 2 +- files/fr/web/css/_colon_not/index.md | 2 +- files/fr/web/css/_colon_nth-last-of-type/index.md | 2 +- files/fr/web/css/_colon_nth-of-type/index.md | 2 +- files/fr/web/css/_colon_only-child/index.md | 4 +- files/fr/web/css/_colon_optional/index.md | 2 +- files/fr/web/css/_colon_past/index.md | 6 +- files/fr/web/css/_colon_placeholder-shown/index.md | 2 +- files/fr/web/css/_colon_right/index.md | 4 +- files/fr/web/css/_colon_target-within/index.md | 8 +- files/fr/web/css/_colon_target/index.md | 8 +- files/fr/web/css/_colon_visited/index.md | 4 +- files/fr/web/css/_colon_where/index.md | 2 +- .../css/_doublecolon_-moz-color-swatch/index.md | 2 +- .../index.md | 2 +- .../_doublecolon_-webkit-progress-value/index.md | 4 +- files/fr/web/css/_doublecolon_after/index.md | 8 +- .../fr/web/css/_doublecolon_first-letter/index.md | 4 +- files/fr/web/css/_doublecolon_first-line/index.md | 2 +- files/fr/web/css/_doublecolon_part/index.md | 6 +- files/fr/web/css/_doublecolon_placeholder/index.md | 4 +- files/fr/web/css/_doublecolon_slotted/index.md | 4 +- files/fr/web/css/_doublecolon_target-text/index.md | 2 +- files/fr/web/css/accent-color/index.md | 2 +- .../web/css/adjacent_sibling_combinator/index.md | 2 +- files/fr/web/css/align-items/index.md | 2 +- files/fr/web/css/align-self/index.md | 8 +- files/fr/web/css/all/index.md | 2 +- files/fr/web/css/angle-percentage/index.md | 2 +- files/fr/web/css/angle/index.md | 2 +- files/fr/web/css/animation-delay/index.md | 2 +- files/fr/web/css/animation-direction/index.md | 4 +- .../fr/web/css/animation-iteration-count/index.md | 6 +- files/fr/web/css/animation-play-state/index.md | 2 +- .../fr/web/css/animation-timing-function/index.md | 2 +- files/fr/web/css/animation/index.md | 2 +- files/fr/web/css/aspect-ratio/index.md | 6 +- files/fr/web/css/attribute_selectors/index.md | 8 +- files/fr/web/css/background-color/index.md | 6 +- files/fr/web/css/background-position-x/index.md | 2 +- files/fr/web/css/background-position-y/index.md | 2 +- files/fr/web/css/basic-shape/index.md | 4 +- files/fr/web/css/border-block-end-color/index.md | 2 +- files/fr/web/css/border-block-end-style/index.md | 2 +- files/fr/web/css/border-block-end-width/index.md | 2 +- files/fr/web/css/border-block-end/index.md | 2 +- files/fr/web/css/border-block-start-color/index.md | 2 +- files/fr/web/css/border-block-start-style/index.md | 2 +- files/fr/web/css/border-block-start-width/index.md | 2 +- files/fr/web/css/border-block-start/index.md | 2 +- files/fr/web/css/border-block-width/index.md | 4 +- .../fr/web/css/border-bottom-left-radius/index.md | 8 +- .../fr/web/css/border-bottom-right-radius/index.md | 8 +- files/fr/web/css/border-end-end-radius/index.md | 4 +- files/fr/web/css/border-end-start-radius/index.md | 4 +- files/fr/web/css/border-inline-end-color/index.md | 2 +- files/fr/web/css/border-inline-end-style/index.md | 2 +- files/fr/web/css/border-inline-end-width/index.md | 2 +- files/fr/web/css/border-inline-end/index.md | 2 +- .../fr/web/css/border-inline-start-color/index.md | 2 +- .../fr/web/css/border-inline-start-style/index.md | 2 +- .../fr/web/css/border-inline-start-width/index.md | 2 +- files/fr/web/css/border-inline-width/index.md | 4 +- files/fr/web/css/border-spacing/index.md | 4 +- files/fr/web/css/border-start-end-radius/index.md | 4 +- .../fr/web/css/border-start-start-radius/index.md | 4 +- files/fr/web/css/border-top-left-radius/index.md | 8 +- files/fr/web/css/border-top-right-radius/index.md | 8 +- files/fr/web/css/border-width/index.md | 2 +- files/fr/web/css/bottom/index.md | 2 +- files/fr/web/css/box-orient/index.md | 2 +- files/fr/web/css/box-pack/index.md | 6 +- files/fr/web/css/box-sizing/index.md | 4 +- files/fr/web/css/calc()/index.md | 6 +- files/fr/web/css/child_combinator/index.md | 2 +- files/fr/web/css/clamp()/index.md | 8 +- files/fr/web/css/class_selectors/index.md | 4 +- files/fr/web/css/clip-path/index.md | 6 +- files/fr/web/css/clip/index.md | 2 +- files/fr/web/css/color-scheme/index.md | 2 +- files/fr/web/css/color/index.md | 6 +- files/fr/web/css/color_value/index.md | 2 +- files/fr/web/css/columns/index.md | 8 +- files/fr/web/css/contain/index.md | 2 +- files/fr/web/css/containing_block/index.md | 2 +- files/fr/web/css/counter()/index.md | 4 +- files/fr/web/css/counter-set/index.md | 2 +- files/fr/web/css/counters()/index.md | 4 +- .../detecting_css_animation_support/index.md | 4 +- files/fr/web/css/css_animations/tips/index.md | 2 +- .../web/css/css_backgrounds_and_borders/index.md | 6 +- .../resizing_background_images/index.md | 12 +- .../box_alignment_in_block_abspos_tables/index.md | 6 +- files/fr/web/css/css_box_model/index.md | 4 +- files/fr/web/css/css_color/index.md | 6 +- .../basic_concepts_of_multicol/index.md | 2 +- .../handling_content_breaks_in_multicol/index.md | 2 +- files/fr/web/css/css_columns/index.md | 2 +- .../using_multi-column_layouts/index.md | 66 +-- .../css_counter_styles/using_css_counters/index.md | 2 +- .../backwards_compatibility_of_flexbox/index.md | 2 +- .../index.md | 12 +- files/fr/web/css/css_flexible_box_layout/index.md | 2 +- .../mastering_wrapping_of_flex_items/index.md | 2 +- .../ordering_flex_items/index.md | 18 +- .../typical_use_cases_of_flexbox/index.md | 6 +- .../intro_to_formatting_contexts/index.md | 4 +- .../css/css_fonts/opentype_fonts_guide/index.md | 6 +- .../css/css_fonts/variable_fonts_guide/index.md | 14 +- files/fr/web/css/css_generated_content/index.md | 2 +- .../auto-placement_in_css_grid_layout/index.md | 16 +- .../box_alignment_in_css_grid_layout/index.md | 2 +- .../css_grid_and_progressive_enhancement/index.md | 2 +- .../index.md | 2 +- .../css_grid_layout/grid_template_areas/index.md | 30 +- files/fr/web/css/css_grid_layout/index.md | 2 +- .../line-based_placement_with_css_grid/index.md | 2 +- .../implementing_image_sprites_in_css/index.md | 2 +- files/fr/web/css/css_images/index.md | 4 +- .../consistent_list_indentation/index.md | 16 +- .../margins_borders_padding/index.md | 4 +- files/fr/web/css/css_masking/index.md | 2 +- files/fr/web/css/css_overflow/index.md | 6 +- files/fr/web/css/css_pages/index.md | 6 +- files/fr/web/css/css_positioning/index.md | 4 +- .../understanding_z_index/adding_z-index/index.md | 4 +- .../css_positioning/understanding_z_index/index.md | 14 +- .../stacking_and_float/index.md | 14 +- .../stacking_context_example_1/index.md | 8 +- .../stacking_context_example_2/index.md | 6 +- .../stacking_context_example_3/index.md | 8 +- .../stacking_without_z-index/index.md | 2 +- files/fr/web/css/css_properties_reference/index.md | 2 +- .../css/css_scroll_snap/basic_concepts/index.md | 2 +- files/fr/web/css/css_selectors/index.md | 10 +- .../index.md | 14 +- .../css/css_shapes/overview_of_css_shapes/index.md | 6 +- files/fr/web/css/css_text/index.md | 4 +- files/fr/web/css/css_text_decoration/index.md | 4 +- files/fr/web/css/css_transitions/index.md | 8 +- files/fr/web/css/css_values_and_units/index.md | 20 +- files/fr/web/css/css_writing_modes/index.md | 4 +- files/fr/web/css/descendant_combinator/index.md | 8 +- files/fr/web/css/direction/index.md | 4 +- files/fr/web/css/display-box/index.md | 2 +- files/fr/web/css/display-inside/index.md | 6 +- files/fr/web/css/display-internal/index.md | 8 +- files/fr/web/css/display-listitem/index.md | 2 +- files/fr/web/css/display-outside/index.md | 2 +- .../fr/web/css/filter-function/opacity()/index.md | 2 +- files/fr/web/css/fit-content/index.md | 6 +- files/fr/web/css/flex-basis/index.md | 2 +- files/fr/web/css/flex-direction/index.md | 12 +- files/fr/web/css/flex/index.md | 4 +- files/fr/web/css/flex_value/index.md | 2 +- files/fr/web/css/float/index.md | 4 +- files/fr/web/css/font-feature-settings/index.md | 2 +- files/fr/web/css/font-kerning/index.md | 2 +- files/fr/web/css/font-language-override/index.md | 2 +- files/fr/web/css/font-optical-sizing/index.md | 4 +- files/fr/web/css/font-size/index.md | 8 +- files/fr/web/css/font-variant-position/index.md | 2 +- files/fr/web/css/font/index.md | 6 +- files/fr/web/css/forced-color-adjust/index.md | 4 +- files/fr/web/css/frequency-percentage/index.md | 2 +- .../fr/web/css/gradient/linear-gradient()/index.md | 2 +- files/fr/web/css/grid-area/index.md | 2 +- files/fr/web/css/grid-auto-columns/index.md | 12 +- files/fr/web/css/grid-auto-flow/index.md | 14 +- files/fr/web/css/grid-auto-rows/index.md | 12 +- files/fr/web/css/grid-column-end/index.md | 2 +- files/fr/web/css/grid-row-end/index.md | 2 +- files/fr/web/css/grid-template-areas/index.md | 4 +- files/fr/web/css/grid-template/index.md | 4 +- files/fr/web/css/height/index.md | 10 +- files/fr/web/css/id_selectors/index.md | 6 +- files/fr/web/css/index.md | 6 +- files/fr/web/css/inheritance/index.md | 10 +- files/fr/web/css/initial-letter-align/index.md | 8 +- files/fr/web/css/initial-letter/index.md | 2 +- files/fr/web/css/initial/index.md | 2 +- files/fr/web/css/initial_value/index.md | 2 +- files/fr/web/css/inset-block-end/index.md | 2 +- files/fr/web/css/inset-block-start/index.md | 2 +- files/fr/web/css/inset-block/index.md | 2 +- files/fr/web/css/inset-inline-end/index.md | 2 +- files/fr/web/css/inset-inline-start/index.md | 2 +- files/fr/web/css/inset-inline/index.md | 2 +- files/fr/web/css/integer/index.md | 2 +- files/fr/web/css/isolation/index.md | 10 +- files/fr/web/css/justify-self/index.md | 6 +- files/fr/web/css/layout_cookbook/card/index.md | 2 +- .../css/layout_cookbook/center_an_element/index.md | 10 +- .../css/layout_cookbook/column_layouts/index.md | 2 +- .../contribute_a_recipe/cookbook_template/index.md | 2 +- .../layout_cookbook/contribute_a_recipe/index.md | 2 +- files/fr/web/css/layout_cookbook/index.md | 2 +- .../fr/web/css/layout_cookbook/pagination/index.md | 10 +- files/fr/web/css/line-height-step/index.md | 10 +- files/fr/web/css/line-height/index.md | 4 +- files/fr/web/css/margin-block-end/index.md | 2 +- files/fr/web/css/margin-block-start/index.md | 2 +- files/fr/web/css/margin-block/index.md | 4 +- files/fr/web/css/margin-inline-end/index.md | 2 +- files/fr/web/css/margin-inline-start/index.md | 2 +- files/fr/web/css/margin-inline/index.md | 4 +- files/fr/web/css/margin-left/index.md | 10 +- files/fr/web/css/margin-right/index.md | 10 +- files/fr/web/css/margin/index.md | 22 +- files/fr/web/css/mask-border-slice/index.md | 2 +- files/fr/web/css/mask/index.md | 2 +- files/fr/web/css/max-height/index.md | 6 +- files/fr/web/css/max-width/index.md | 4 +- files/fr/web/css/media_queries/index.md | 8 +- .../media_queries/testing_media_queries/index.md | 2 +- files/fr/web/css/min-block-size/index.md | 2 +- files/fr/web/css/min-inline-size/index.md | 2 +- files/fr/web/css/min-width/index.md | 8 +- files/fr/web/css/offset-position/index.md | 4 +- files/fr/web/css/opacity/index.md | 2 +- files/fr/web/css/order/index.md | 2 +- files/fr/web/css/outline-color/index.md | 4 +- files/fr/web/css/outline/index.md | 2 +- .../guide_to_scroll_anchoring/index.md | 4 +- files/fr/web/css/overflow-block/index.md | 2 +- files/fr/web/css/overflow-inline/index.md | 2 +- files/fr/web/css/overflow-wrap/index.md | 2 +- files/fr/web/css/overflow-x/index.md | 2 +- files/fr/web/css/overflow-y/index.md | 2 +- files/fr/web/css/overflow/index.md | 2 +- files/fr/web/css/overscroll-behavior-x/index.md | 2 +- files/fr/web/css/overscroll-behavior-y/index.md | 4 +- files/fr/web/css/overscroll-behavior/index.md | 2 +- files/fr/web/css/padding-block-end/index.md | 2 +- files/fr/web/css/padding-block-start/index.md | 2 +- files/fr/web/css/padding-block/index.md | 2 +- files/fr/web/css/padding-inline-end/index.md | 2 +- files/fr/web/css/padding-inline/index.md | 2 +- files/fr/web/css/padding-left/index.md | 2 +- files/fr/web/css/padding-right/index.md | 2 +- files/fr/web/css/path()/index.md | 2 +- files/fr/web/css/perspective/index.md | 4 +- files/fr/web/css/place-content/index.md | 14 +- files/fr/web/css/place-items/index.md | 40 +- files/fr/web/css/place-self/index.md | 2 +- files/fr/web/css/pseudo-classes/index.md | 16 +- files/fr/web/css/quotes/index.md | 2 +- files/fr/web/css/ratio/index.md | 2 +- files/fr/web/css/resize/index.md | 4 +- files/fr/web/css/right/index.md | 2 +- files/fr/web/css/rotate/index.md | 2 +- files/fr/web/css/ruby-position/index.md | 16 +- files/fr/web/css/scale/index.md | 2 +- files/fr/web/css/scroll-snap-destination/index.md | 18 +- files/fr/web/css/scroll-snap-points-x/index.md | 18 +- files/fr/web/css/scroll-snap-points-y/index.md | 6 +- files/fr/web/css/scroll-snap-type/index.md | 2 +- files/fr/web/css/selector_list/index.md | 2 +- files/fr/web/css/text-align/index.md | 2 +- files/fr/web/css/text-decoration/index.md | 2 +- files/fr/web/css/text-emphasis-position/index.md | 2 +- files/fr/web/css/text-justify/index.md | 4 +- files/fr/web/css/text-overflow/index.md | 4 +- files/fr/web/css/text-shadow/index.md | 22 +- files/fr/web/css/time-percentage/index.md | 2 +- files/fr/web/css/time/index.md | 2 +- files/fr/web/css/top/index.md | 8 +- files/fr/web/css/transform-function/index.md | 2 +- .../web/css/transform-function/rotate3d()/index.md | 2 +- .../web/css/transform-function/scaley()/index.md | 2 +- .../css/transform-function/translate()/index.md | 2 +- .../css/transform-function/translate3d()/index.md | 4 +- .../css/transform-function/translatey()/index.md | 2 +- files/fr/web/css/translate/index.md | 4 +- files/fr/web/css/translation-value/index.md | 2 +- files/fr/web/css/type_selectors/index.md | 2 +- files/fr/web/css/unicode-bidi/index.md | 4 +- files/fr/web/css/used_value/index.md | 4 +- files/fr/web/css/user-select/index.md | 4 +- .../web/css/using_css_custom_properties/index.md | 20 +- files/fr/web/css/value_definition_syntax/index.md | 4 +- files/fr/web/css/var()/index.md | 2 +- files/fr/web/css/viewport_concepts/index.md | 4 +- files/fr/web/css/visual_formatting_model/index.md | 2 +- files/fr/web/css/width/index.md | 4 +- files/fr/web/css/zoom/index.md | 4 +- files/fr/web/demos/index.md | 2 +- files/fr/web/exslt/exsl/object-type/index.md | 2 +- files/fr/web/exslt/index.md | 4 +- files/fr/web/exslt/str/split/index.md | 4 +- files/fr/web/exslt/str/tokenize/index.md | 4 +- files/fr/web/guide/ajax/getting_started/index.md | 60 +- files/fr/web/guide/ajax/index.md | 22 +- .../index.md | 12 +- .../buffering_seeking_time_ranges/index.md | 16 +- .../fr/web/guide/audio_and_video_delivery/index.md | 54 +- .../live_streaming_web_audio_and_video/index.md | 22 +- .../guide/audio_and_video_manipulation/index.md | 10 +- files/fr/web/guide/graphics/index.md | 4 +- .../fr/web/guide/html/content_categories/index.md | 6 +- files/fr/web/guide/performance/index.md | 4 +- .../writing_forward-compatible_websites/index.md | 8 +- files/fr/web/html/attributes/accept/index.md | 4 +- files/fr/web/html/date_and_time_formats/index.md | 2 +- files/fr/web/html/element/a/index.md | 2 +- files/fr/web/html/element/audio/index.md | 2 +- files/fr/web/html/element/colgroup/index.md | 2 +- files/fr/web/html/element/head/index.md | 2 +- files/fr/web/html/element/hgroup/index.md | 4 +- files/fr/web/html/element/input/button/index.md | 2 +- files/fr/web/html/element/input/date/index.md | 6 +- .../web/html/element/input/datetime-local/index.md | 2 +- files/fr/web/html/element/input/email/index.md | 4 +- files/fr/web/html/element/input/file/index.md | 4 +- files/fr/web/html/element/input/image/index.md | 2 +- files/fr/web/html/element/input/index.md | 4 +- files/fr/web/html/element/input/password/index.md | 2 +- files/fr/web/html/element/input/range/index.md | 20 +- files/fr/web/html/element/input/reset/index.md | 2 +- files/fr/web/html/element/input/search/index.md | 2 +- files/fr/web/html/element/input/submit/index.md | 2 +- files/fr/web/html/element/input/tel/index.md | 20 +- files/fr/web/html/element/input/text/index.md | 8 +- files/fr/web/html/element/input/url/index.md | 2 +- files/fr/web/html/element/ins/index.md | 6 +- files/fr/web/html/element/kbd/index.md | 10 +- files/fr/web/html/element/keygen/index.md | 2 +- files/fr/web/html/element/legend/index.md | 2 +- files/fr/web/html/element/link/index.md | 2 +- files/fr/web/html/element/main/index.md | 6 +- files/fr/web/html/element/map/index.md | 4 +- files/fr/web/html/element/mark/index.md | 6 +- files/fr/web/html/element/meta/index.md | 2 +- files/fr/web/html/element/meter/index.md | 2 +- files/fr/web/html/element/nav/index.md | 2 +- files/fr/web/html/element/noframes/index.md | 4 +- files/fr/web/html/element/object/index.md | 22 +- files/fr/web/html/element/optgroup/index.md | 6 +- files/fr/web/html/element/output/index.md | 4 +- files/fr/web/html/element/p/index.md | 2 +- files/fr/web/html/element/param/index.md | 6 +- files/fr/web/html/element/picture/index.md | 2 +- files/fr/web/html/element/pre/index.md | 4 +- files/fr/web/html/element/progress/index.md | 4 +- files/fr/web/html/element/q/index.md | 4 +- files/fr/web/html/element/rb/index.md | 2 +- files/fr/web/html/element/rp/index.md | 4 +- files/fr/web/html/element/rtc/index.md | 6 +- files/fr/web/html/element/ruby/index.md | 2 +- files/fr/web/html/element/samp/index.md | 6 +- files/fr/web/html/element/strong/index.md | 8 +- files/fr/web/html/element/style/index.md | 2 +- files/fr/web/html/element/sub/index.md | 4 +- files/fr/web/html/element/sup/index.md | 4 +- files/fr/web/html/element/table/index.md | 10 +- files/fr/web/html/element/td/index.md | 42 +- files/fr/web/html/element/textarea/index.md | 6 +- files/fr/web/html/element/tfoot/index.md | 8 +- files/fr/web/html/element/th/index.md | 8 +- files/fr/web/html/element/thead/index.md | 8 +- files/fr/web/html/element/title/index.md | 6 +- files/fr/web/html/element/track/index.md | 2 +- files/fr/web/html/element/u/index.md | 4 +- files/fr/web/html/element/var/index.md | 4 +- .../html/global_attributes/autocapitalize/index.md | 2 +- files/fr/web/html/global_attributes/class/index.md | 2 +- .../html/global_attributes/contextmenu/index.md | 12 +- files/fr/web/html/global_attributes/dir/index.md | 2 +- .../web/html/global_attributes/draggable/index.md | 2 +- .../html/global_attributes/enterkeyhint/index.md | 2 +- files/fr/web/html/global_attributes/index.md | 2 +- files/fr/web/html/global_attributes/is/index.md | 2 +- .../fr/web/html/global_attributes/itemid/index.md | 4 +- .../web/html/global_attributes/itemprop/index.md | 10 +- .../fr/web/html/global_attributes/itemref/index.md | 8 +- .../web/html/global_attributes/itemscope/index.md | 4 +- .../web/html/global_attributes/itemtype/index.md | 8 +- files/fr/web/html/global_attributes/lang/index.md | 4 +- files/fr/web/html/global_attributes/slot/index.md | 4 +- files/fr/web/html/link_types/preload/index.md | 84 +-- files/fr/web/html/viewport_meta_tag/index.md | 4 +- .../fr/web/http/basics_of_http/mime_types/index.md | 2 +- .../index.md | 34 +- files/fr/web/http/caching/index.md | 48 +- files/fr/web/http/content_negotiation/index.md | 12 +- files/fr/web/http/cookies/index.md | 18 +- .../corsalloworiginnotmatchingorigin/index.md | 2 +- .../http/cors/errors/corsdidnotsucceed/index.md | 4 +- .../cors/errors/corsmissingalloworigin/index.md | 2 +- .../http/cors/errors/corsrequestnothttp/index.md | 2 +- files/fr/web/http/cors/index.md | 6 +- files/fr/web/http/csp/index.md | 4 +- files/fr/web/http/headers/accept-charset/index.md | 4 +- files/fr/web/http/headers/accept-language/index.md | 12 +- files/fr/web/http/headers/accept/index.md | 8 +- .../headers/access-control-allow-origin/index.md | 8 +- .../access-control-request-headers/index.md | 2 +- files/fr/web/http/headers/cache-control/index.md | 2 +- .../web/http/headers/content-disposition/index.md | 18 +- .../fr/web/http/headers/content-encoding/index.md | 10 +- .../fr/web/http/headers/content-language/index.md | 18 +- .../block-all-mixed-content/index.md | 2 +- .../http/headers/content-security-policy/index.md | 8 +- .../require-trusted-types-for/index.md | 14 +- .../script-src-attr/index.md | 4 +- .../content-security-policy/script-src/index.md | 4 +- .../content-security-policy/style-src/index.md | 2 +- .../content-security-policy/trusted-types/index.md | 8 +- .../upgrade-insecure-requests/index.md | 2 +- files/fr/web/http/headers/content-type/index.md | 2 +- files/fr/web/http/headers/expires/index.md | 6 +- files/fr/web/http/headers/feature-policy/index.md | 2 +- files/fr/web/http/headers/if-none-match/index.md | 12 +- files/fr/web/http/headers/index.md | 8 +- files/fr/web/http/headers/last-modified/index.md | 18 +- files/fr/web/http/headers/location/index.md | 10 +- files/fr/web/http/headers/origin/index.md | 2 +- files/fr/web/http/headers/referrer-policy/index.md | 4 +- .../web/http/headers/set-cookie/samesite/index.md | 6 +- files/fr/web/http/headers/tk/index.md | 8 +- files/fr/web/http/headers/trailer/index.md | 2 +- files/fr/web/http/headers/vary/index.md | 10 +- .../http/headers/x-content-type-options/index.md | 4 +- files/fr/web/http/index.md | 2 +- files/fr/web/http/link_prefetching_faq/index.md | 52 +- files/fr/web/http/methods/connect/index.md | 2 +- files/fr/web/http/methods/delete/index.md | 4 +- files/fr/web/http/methods/head/index.md | 4 +- files/fr/web/http/methods/index.md | 4 +- files/fr/web/http/methods/options/index.md | 12 +- files/fr/web/http/methods/post/index.md | 12 +- files/fr/web/http/methods/trace/index.md | 2 +- files/fr/web/http/overview/index.md | 4 +- files/fr/web/http/public_key_pinning/index.md | 32 +- files/fr/web/http/redirections/index.md | 2 +- .../a_re-introduction_to_javascript/index.md | 8 +- files/fr/web/javascript/about_javascript/index.md | 6 +- files/fr/web/javascript/data_structures/index.md | 6 +- .../index.md | 8 +- .../equality_comparisons_and_sameness/index.md | 4 +- files/fr/web/javascript/eventloop/index.md | 8 +- .../guide/details_of_the_object_model/index.md | 2 +- .../guide/expressions_and_operators/index.md | 8 +- files/fr/web/javascript/guide/functions/index.md | 10 +- .../javascript/guide/grammar_and_types/index.md | 6 +- .../javascript/guide/indexed_collections/index.md | 2 +- .../javascript/guide/keyed_collections/index.md | 4 +- .../javascript/guide/loops_and_iteration/index.md | 2 +- .../web/javascript/guide/meta_programming/index.md | 2 +- .../javascript/guide/numbers_and_dates/index.md | 4 +- .../guide/regular_expressions/assertions/index.md | 2 +- .../regular_expressions/character_classes/index.md | 6 +- .../guide/regular_expressions/cheatsheet/index.md | 2 +- .../regular_expressions/groups_and_ranges/index.md | 2 +- .../javascript/guide/regular_expressions/index.md | 8 +- .../unicode_property_escapes/index.md | 56 +- .../web/javascript/guide/text_formatting/index.md | 62 +- .../web/javascript/guide/using_promises/index.md | 8 +- .../javascript/guide/working_with_objects/index.md | 4 +- .../inheritance_and_the_prototype_chain/index.md | 4 +- .../fr/web/javascript/language_resources/index.md | 2 +- files/fr/web/javascript/reference/classes/index.md | 2 +- .../classes/private_class_fields/index.md | 110 ++-- .../reference/classes/public_class_fields/index.md | 74 +-- .../javascript/reference/classes/static/index.md | 6 +- .../reference/errors/bad_return_or_yield/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../reference/errors/cant_delete/index.md | 2 +- .../deprecated_caller_or_arguments_usage/index.md | 10 +- .../errors/deprecated_tolocaleformat/index.md | 2 +- .../for-each-in_loops_are_deprecated/index.md | 2 +- .../reference/errors/illegal_character/index.md | 4 +- .../reference/errors/is_not_iterable/index.md | 2 +- .../errors/malformed_formal_parameter/index.md | 2 +- .../index.md | 6 +- .../missing_parenthesis_after_condition/index.md | 2 +- .../errors/non_configurable_array_element/index.md | 2 +- .../reference/errors/not_a_function/index.md | 2 +- .../errors/property_access_denied/index.md | 14 +- .../index.md | 4 +- .../reference/errors/undefined_prop/index.md | 2 +- .../functions/arguments/@@iterator/index.md | 4 +- .../reference/functions/arguments/callee/index.md | 8 +- .../reference/functions/arguments/index.md | 24 +- .../reference/functions/arguments/length/index.md | 6 +- .../reference/functions/arrow_functions/index.md | 20 +- .../functions/default_parameters/index.md | 2 +- .../fr/web/javascript/reference/functions/index.md | 16 +- .../functions/method_definitions/index.md | 4 +- .../global_objects/array/@@iterator/index.md | 2 +- .../global_objects/array/@@species/index.md | 4 +- .../global_objects/array/@@unscopables/index.md | 6 +- .../global_objects/array/copywithin/index.md | 14 +- .../global_objects/array/entries/index.md | 2 +- .../reference/global_objects/array/every/index.md | 4 +- .../reference/global_objects/array/fill/index.md | 2 +- .../reference/global_objects/array/filter/index.md | 16 +- .../reference/global_objects/array/find/index.md | 6 +- .../global_objects/array/findindex/index.md | 2 +- .../reference/global_objects/array/flat/index.md | 2 +- .../global_objects/array/indexof/index.md | 4 +- .../global_objects/array/isarray/index.md | 4 +- .../reference/global_objects/array/join/index.md | 6 +- .../reference/global_objects/array/keys/index.md | 2 +- .../reference/global_objects/array/length/index.md | 2 +- .../reference/global_objects/array/map/index.md | 2 +- .../reference/global_objects/array/of/index.md | 2 +- .../reference/global_objects/array/pop/index.md | 6 +- .../reference/global_objects/array/push/index.md | 8 +- .../global_objects/array/reduceright/index.md | 4 +- .../global_objects/array/reverse/index.md | 8 +- .../reference/global_objects/array/shift/index.md | 8 +- .../reference/global_objects/array/slice/index.md | 6 +- .../reference/global_objects/array/some/index.md | 10 +- .../reference/global_objects/array/sort/index.md | 58 +- .../reference/global_objects/array/splice/index.md | 2 +- .../global_objects/array/tosource/index.md | 6 +- .../global_objects/array/tostring/index.md | 6 +- .../reference/global_objects/array/values/index.md | 2 +- .../global_objects/arraybuffer/@@species/index.md | 2 +- .../global_objects/arraybuffer/bytelength/index.md | 2 +- .../global_objects/arraybuffer/isview/index.md | 2 +- .../global_objects/arraybuffer/slice/index.md | 4 +- .../global_objects/asyncfunction/index.md | 2 +- .../reference/global_objects/atomics/add/index.md | 2 +- .../reference/global_objects/atomics/and/index.md | 2 +- .../atomics/compareexchange/index.md | 2 +- .../global_objects/atomics/exchange/index.md | 2 +- .../reference/global_objects/atomics/index.md | 4 +- .../reference/global_objects/atomics/load/index.md | 2 +- .../reference/global_objects/atomics/or/index.md | 2 +- .../global_objects/atomics/store/index.md | 2 +- .../reference/global_objects/atomics/sub/index.md | 2 +- .../reference/global_objects/atomics/xor/index.md | 2 +- .../global_objects/bigint/tolocalestring/index.md | 2 +- .../global_objects/bigint/tostring/index.md | 2 +- .../reference/global_objects/boolean/index.md | 2 +- .../global_objects/boolean/tostring/index.md | 6 +- .../global_objects/boolean/valueof/index.md | 6 +- .../global_objects/dataview/buffer/index.md | 2 +- .../global_objects/dataview/bytelength/index.md | 4 +- .../global_objects/dataview/byteoffset/index.md | 4 +- .../global_objects/dataview/getfloat32/index.md | 2 +- .../global_objects/dataview/getfloat64/index.md | 2 +- .../global_objects/dataview/getint16/index.md | 2 +- .../global_objects/dataview/getint32/index.md | 2 +- .../global_objects/dataview/getint8/index.md | 2 +- .../global_objects/dataview/getuint16/index.md | 2 +- .../global_objects/dataview/getuint32/index.md | 2 +- .../global_objects/dataview/getuint8/index.md | 2 +- .../reference/global_objects/dataview/index.md | 2 +- .../global_objects/dataview/setfloat32/index.md | 2 +- .../global_objects/dataview/setfloat64/index.md | 2 +- .../global_objects/dataview/setint16/index.md | 2 +- .../global_objects/dataview/setint32/index.md | 2 +- .../global_objects/dataview/setint8/index.md | 2 +- .../global_objects/dataview/setuint16/index.md | 2 +- .../global_objects/dataview/setuint32/index.md | 2 +- .../global_objects/dataview/setuint8/index.md | 2 +- .../global_objects/date/@@toprimitive/index.md | 4 +- .../reference/global_objects/date/getdate/index.md | 8 +- .../reference/global_objects/date/getday/index.md | 6 +- .../global_objects/date/getfullyear/index.md | 6 +- .../global_objects/date/gethours/index.md | 8 +- .../global_objects/date/getmilliseconds/index.md | 6 +- .../global_objects/date/getminutes/index.md | 8 +- .../global_objects/date/getmonth/index.md | 8 +- .../global_objects/date/getseconds/index.md | 8 +- .../reference/global_objects/date/gettime/index.md | 6 +- .../global_objects/date/gettimezoneoffset/index.md | 6 +- .../global_objects/date/getutcdate/index.md | 6 +- .../global_objects/date/getutcday/index.md | 6 +- .../global_objects/date/getutcfullyear/index.md | 6 +- .../global_objects/date/getutchours/index.md | 6 +- .../global_objects/date/getutcminutes/index.md | 6 +- .../global_objects/date/getutcmonth/index.md | 6 +- .../global_objects/date/getutcseconds/index.md | 6 +- .../reference/global_objects/date/getyear/index.md | 4 +- .../reference/global_objects/date/index.md | 2 +- .../reference/global_objects/date/now/index.md | 4 +- .../reference/global_objects/date/parse/index.md | 2 +- .../reference/global_objects/date/setdate/index.md | 8 +- .../global_objects/date/setfullyear/index.md | 6 +- .../global_objects/date/sethours/index.md | 6 +- .../global_objects/date/setmilliseconds/index.md | 6 +- .../global_objects/date/setminutes/index.md | 6 +- .../global_objects/date/setmonth/index.md | 6 +- .../global_objects/date/setseconds/index.md | 6 +- .../reference/global_objects/date/settime/index.md | 6 +- .../global_objects/date/setutcdate/index.md | 6 +- .../global_objects/date/setutcfullyear/index.md | 6 +- .../global_objects/date/setutchours/index.md | 6 +- .../date/setutcmilliseconds/index.md | 6 +- .../global_objects/date/setutcminutes/index.md | 6 +- .../global_objects/date/setutcmonth/index.md | 6 +- .../global_objects/date/setutcseconds/index.md | 6 +- .../global_objects/date/toisostring/index.md | 4 +- .../reference/global_objects/date/tojson/index.md | 4 +- .../date/tolocaletimestring/index.md | 2 +- .../global_objects/date/tostring/index.md | 6 +- .../global_objects/date/totimestring/index.md | 8 +- .../global_objects/date/toutcstring/index.md | 6 +- .../reference/global_objects/date/utc/index.md | 4 +- .../reference/global_objects/date/valueof/index.md | 8 +- .../global_objects/decodeuricomponent/index.md | 6 +- .../reference/global_objects/encodeuri/index.md | 4 +- .../global_objects/encodeuricomponent/index.md | 6 +- .../reference/global_objects/error/index.md | 42 +- .../global_objects/error/linenumber/index.md | 2 +- .../global_objects/error/message/index.md | 6 +- .../reference/global_objects/error/name/index.md | 6 +- .../reference/global_objects/error/stack/index.md | 22 +- .../global_objects/error/tosource/index.md | 2 +- .../global_objects/error/tostring/index.md | 2 +- .../reference/global_objects/eval/index.md | 4 +- .../reference/global_objects/evalerror/index.md | 2 +- .../global_objects/function/arguments/index.md | 2 +- .../global_objects/function/bind/index.md | 20 +- .../global_objects/function/call/index.md | 6 +- .../global_objects/function/length/index.md | 4 +- .../global_objects/function/tostring/index.md | 2 +- .../global_objects/generator/next/index.md | 2 +- .../global_objects/generator/return/index.md | 2 +- .../global_objects/generator/throw/index.md | 2 +- .../global_objects/generatorfunction/index.md | 2 +- .../javascript/reference/global_objects/index.md | 2 +- .../reference/global_objects/infinity/index.md | 8 +- .../reference/global_objects/int16array/index.md | 4 +- .../reference/global_objects/int32array/index.md | 2 +- .../reference/global_objects/int8array/index.md | 4 +- .../global_objects/intl/collator/compare/index.md | 6 +- .../global_objects/intl/collator/index.md | 8 +- .../intl/collator/supportedlocalesof/index.md | 8 +- .../intl/datetimeformat/format/index.md | 4 +- .../global_objects/intl/datetimeformat/index.md | 2 +- .../datetimeformat/supportedlocalesof/index.md | 6 +- .../reference/global_objects/intl/index.md | 2 +- .../global_objects/intl/listformat/format/index.md | 2 +- .../intl/listformat/formattoparts/index.md | 2 +- .../global_objects/intl/listformat/index.md | 4 +- .../intl/listformat/resolvedoptions/index.md | 4 +- .../intl/listformat/supportedlocalesof/index.md | 4 +- .../global_objects/intl/locale/calendar/index.md | 4 +- .../global_objects/intl/locale/maximize/index.md | 2 +- .../intl/numberformat/format/index.md | 10 +- .../intl/numberformat/formattoparts/index.md | 2 +- .../global_objects/intl/numberformat/index.md | 14 +- .../intl/numberformat/resolvedoptions/index.md | 6 +- .../intl/numberformat/supportedlocalesof/index.md | 4 +- .../intl/relativetimeformat/format/index.md | 2 +- .../intl/relativetimeformat/formattoparts/index.md | 2 +- .../intl/relativetimeformat/index.md | 4 +- .../relativetimeformat/resolvedoptions/index.md | 6 +- .../relativetimeformat/supportedlocalesof/index.md | 2 +- .../reference/global_objects/isfinite/index.md | 6 +- .../reference/global_objects/isnan/index.md | 6 +- .../reference/global_objects/json/index.md | 6 +- .../reference/global_objects/json/parse/index.md | 4 +- .../global_objects/json/stringify/index.md | 8 +- .../global_objects/map/@@iterator/index.md | 2 +- .../global_objects/map/@@species/index.md | 2 +- .../global_objects/map/@@tostringtag/index.md | 2 +- .../reference/global_objects/map/clear/index.md | 2 +- .../reference/global_objects/map/delete/index.md | 2 +- .../reference/global_objects/map/entries/index.md | 2 +- .../reference/global_objects/map/has/index.md | 2 +- .../reference/global_objects/map/index.md | 6 +- .../reference/global_objects/map/keys/index.md | 2 +- .../reference/global_objects/map/set/index.md | 2 +- .../reference/global_objects/map/size/index.md | 2 +- .../reference/global_objects/map/values/index.md | 2 +- .../reference/global_objects/math/abs/index.md | 6 +- .../reference/global_objects/math/acos/index.md | 8 +- .../reference/global_objects/math/acosh/index.md | 2 +- .../reference/global_objects/math/asin/index.md | 6 +- .../reference/global_objects/math/asinh/index.md | 2 +- .../reference/global_objects/math/atan/index.md | 6 +- .../reference/global_objects/math/atanh/index.md | 6 +- .../reference/global_objects/math/cbrt/index.md | 2 +- .../reference/global_objects/math/ceil/index.md | 4 +- .../reference/global_objects/math/clz32/index.md | 6 +- .../reference/global_objects/math/cos/index.md | 6 +- .../reference/global_objects/math/cosh/index.md | 2 +- .../reference/global_objects/math/e/index.md | 6 +- .../reference/global_objects/math/exp/index.md | 8 +- .../reference/global_objects/math/expm1/index.md | 2 +- .../reference/global_objects/math/floor/index.md | 2 +- .../reference/global_objects/math/hypot/index.md | 2 +- .../reference/global_objects/math/imul/index.md | 2 +- .../reference/global_objects/math/ln10/index.md | 6 +- .../reference/global_objects/math/ln2/index.md | 6 +- .../reference/global_objects/math/log/index.md | 2 +- .../reference/global_objects/math/log10/index.md | 4 +- .../reference/global_objects/math/log10e/index.md | 6 +- .../reference/global_objects/math/log1p/index.md | 2 +- .../reference/global_objects/math/log2e/index.md | 6 +- .../reference/global_objects/math/max/index.md | 6 +- .../reference/global_objects/math/min/index.md | 6 +- .../reference/global_objects/math/pi/index.md | 6 +- .../reference/global_objects/math/sin/index.md | 6 +- .../reference/global_objects/math/sinh/index.md | 2 +- .../reference/global_objects/math/sqrt/index.md | 8 +- .../reference/global_objects/math/sqrt1_2/index.md | 6 +- .../reference/global_objects/math/sqrt2/index.md | 6 +- .../reference/global_objects/math/tan/index.md | 6 +- .../reference/global_objects/math/tanh/index.md | 8 +- .../reference/global_objects/nan/index.md | 6 +- .../reference/global_objects/null/index.md | 6 +- .../global_objects/number/epsilon/index.md | 2 +- .../reference/global_objects/number/index.md | 14 +- .../global_objects/number/isfinite/index.md | 4 +- .../reference/global_objects/number/isnan/index.md | 6 +- .../global_objects/number/issafeinteger/index.md | 2 +- .../number/max_safe_integer/index.md | 2 +- .../global_objects/number/max_value/index.md | 6 +- .../global_objects/number/min_value/index.md | 8 +- .../reference/global_objects/number/nan/index.md | 10 +- .../number/negative_infinity/index.md | 10 +- .../global_objects/number/parsefloat/index.md | 4 +- .../global_objects/number/parseint/index.md | 2 +- .../number/positive_infinity/index.md | 8 +- .../global_objects/number/toexponential/index.md | 10 +- .../global_objects/number/tofixed/index.md | 10 +- .../global_objects/number/tolocalestring/index.md | 18 +- .../global_objects/number/toprecision/index.md | 6 +- .../global_objects/number/tostring/index.md | 8 +- .../global_objects/number/valueof/index.md | 6 +- .../global_objects/object/constructor/index.md | 10 +- .../global_objects/object/create/index.md | 4 +- .../object/defineproperties/index.md | 6 +- .../global_objects/object/defineproperty/index.md | 16 +- .../global_objects/object/entries/index.md | 4 +- .../global_objects/object/freeze/index.md | 6 +- .../object/getownpropertydescriptor/index.md | 6 +- .../object/getownpropertydescriptors/index.md | 2 +- .../object/getownpropertynames/index.md | 6 +- .../object/getownpropertysymbols/index.md | 2 +- .../global_objects/object/getprototypeof/index.md | 4 +- .../global_objects/object/hasownproperty/index.md | 8 +- .../reference/global_objects/object/index.md | 52 +- .../reference/global_objects/object/is/index.md | 4 +- .../global_objects/object/isextensible/index.md | 4 +- .../global_objects/object/isfrozen/index.md | 4 +- .../global_objects/object/isprototypeof/index.md | 20 +- .../global_objects/object/issealed/index.md | 4 +- .../object/preventextensions/index.md | 4 +- .../object/propertyisenumerable/index.md | 6 +- .../global_objects/object/setprototypeof/index.md | 4 +- .../global_objects/object/tolocalestring/index.md | 12 +- .../global_objects/object/tostring/index.md | 4 +- .../global_objects/object/valueof/index.md | 10 +- .../global_objects/object/values/index.md | 2 +- .../reference/global_objects/parsefloat/index.md | 4 +- .../reference/global_objects/parseint/index.md | 2 +- .../reference/global_objects/promise/all/index.md | 2 +- .../global_objects/promise/reject/index.md | 2 +- .../global_objects/promise/resolve/index.md | 2 +- .../reference/global_objects/promise/then/index.md | 2 +- .../reference/global_objects/proxy/index.md | 6 +- .../global_objects/proxy/proxy/apply/index.md | 2 +- .../global_objects/proxy/proxy/construct/index.md | 4 +- .../proxy/proxy/defineproperty/index.md | 2 +- .../proxy/proxy/deleteproperty/index.md | 2 +- .../global_objects/proxy/proxy/get/index.md | 2 +- .../proxy/proxy/getownpropertydescriptor/index.md | 2 +- .../proxy/proxy/getprototypeof/index.md | 10 +- .../global_objects/proxy/proxy/has/index.md | 2 +- .../reference/global_objects/proxy/proxy/index.md | 2 +- .../proxy/proxy/isextensible/index.md | 4 +- .../global_objects/proxy/proxy/ownkeys/index.md | 2 +- .../proxy/proxy/preventextensions/index.md | 2 +- .../global_objects/proxy/proxy/set/index.md | 2 +- .../proxy/proxy/setprototypeof/index.md | 4 +- .../global_objects/proxy/revocable/index.md | 2 +- .../global_objects/referenceerror/index.md | 6 +- .../global_objects/reflect/apply/index.md | 2 +- .../global_objects/reflect/defineproperty/index.md | 2 +- .../global_objects/reflect/deleteproperty/index.md | 2 +- .../reference/global_objects/reflect/get/index.md | 2 +- .../reflect/getownpropertydescriptor/index.md | 2 +- .../global_objects/reflect/getprototypeof/index.md | 2 +- .../reference/global_objects/reflect/has/index.md | 2 +- .../reference/global_objects/reflect/index.md | 2 +- .../global_objects/reflect/isextensible/index.md | 2 +- .../global_objects/reflect/ownkeys/index.md | 4 +- .../reference/global_objects/reflect/set/index.md | 2 +- .../global_objects/regexp/@@match/index.md | 2 +- .../global_objects/regexp/@@matchall/index.md | 2 +- .../global_objects/regexp/@@replace/index.md | 2 +- .../global_objects/regexp/@@search/index.md | 2 +- .../global_objects/regexp/@@species/index.md | 2 +- .../global_objects/regexp/@@split/index.md | 4 +- .../global_objects/regexp/compile/index.md | 2 +- .../global_objects/regexp/dotall/index.md | 2 +- .../reference/global_objects/regexp/flags/index.md | 2 +- .../global_objects/regexp/global/index.md | 4 +- .../global_objects/regexp/ignorecase/index.md | 4 +- .../reference/global_objects/regexp/index.md | 16 +- .../global_objects/regexp/lastindex/index.md | 6 +- .../global_objects/regexp/multiline/index.md | 4 +- .../global_objects/regexp/source/index.md | 2 +- .../global_objects/regexp/sticky/index.md | 2 +- .../reference/global_objects/regexp/test/index.md | 4 +- .../global_objects/regexp/tostring/index.md | 4 +- .../global_objects/regexp/unicode/index.md | 2 +- .../global_objects/set/@@iterator/index.md | 2 +- .../global_objects/set/@@species/index.md | 2 +- .../reference/global_objects/set/add/index.md | 2 +- .../reference/global_objects/set/clear/index.md | 2 +- .../reference/global_objects/set/delete/index.md | 2 +- .../reference/global_objects/set/foreach/index.md | 2 +- .../reference/global_objects/set/has/index.md | 2 +- .../reference/global_objects/set/index.md | 2 +- .../reference/global_objects/set/values/index.md | 2 +- .../global_objects/sharedarraybuffer/index.md | 2 +- .../global_objects/string/@@iterator/index.md | 2 +- .../reference/global_objects/string/bold/index.md | 2 +- .../global_objects/string/charat/index.md | 2 +- .../global_objects/string/codepointat/index.md | 2 +- .../global_objects/string/concat/index.md | 6 +- .../global_objects/string/endswith/index.md | 10 +- .../global_objects/string/fontcolor/index.md | 4 +- .../global_objects/string/includes/index.md | 6 +- .../reference/global_objects/string/index.md | 4 +- .../global_objects/string/indexof/index.md | 16 +- .../global_objects/string/lastindexof/index.md | 18 +- .../reference/global_objects/string/link/index.md | 2 +- .../global_objects/string/localecompare/index.md | 14 +- .../reference/global_objects/string/match/index.md | 8 +- .../global_objects/string/normalize/index.md | 2 +- .../global_objects/string/padend/index.md | 4 +- .../global_objects/string/padstart/index.md | 2 +- .../global_objects/string/replace/index.md | 96 +-- .../global_objects/string/search/index.md | 6 +- .../reference/global_objects/string/slice/index.md | 24 +- .../global_objects/string/substr/index.md | 16 +- .../global_objects/string/substring/index.md | 16 +- .../string/tolocalelowercase/index.md | 6 +- .../string/tolocaleuppercase/index.md | 6 +- .../global_objects/string/tolowercase/index.md | 8 +- .../global_objects/string/tostring/index.md | 8 +- .../global_objects/string/touppercase/index.md | 12 +- .../reference/global_objects/string/trim/index.md | 8 +- .../global_objects/string/trimend/index.md | 2 +- .../global_objects/string/valueof/index.md | 6 +- .../global_objects/symbol/@@toprimitive/index.md | 4 +- .../global_objects/symbol/asynciterator/index.md | 2 +- .../reference/global_objects/symbol/for/index.md | 2 +- .../global_objects/symbol/hasinstance/index.md | 2 +- .../reference/global_objects/symbol/index.md | 2 +- .../symbol/isconcatspreadable/index.md | 2 +- .../global_objects/symbol/keyfor/index.md | 2 +- .../reference/global_objects/symbol/match/index.md | 4 +- .../global_objects/symbol/matchall/index.md | 2 +- .../global_objects/symbol/replace/index.md | 2 +- .../global_objects/symbol/search/index.md | 2 +- .../global_objects/symbol/species/index.md | 2 +- .../reference/global_objects/symbol/split/index.md | 2 +- .../global_objects/symbol/toprimitive/index.md | 2 +- .../global_objects/symbol/tostring/index.md | 2 +- .../global_objects/symbol/tostringtag/index.md | 2 +- .../global_objects/symbol/unscopables/index.md | 4 +- .../global_objects/symbol/valueof/index.md | 2 +- .../reference/global_objects/syntaxerror/index.md | 6 +- .../global_objects/typedarray/@@iterator/index.md | 2 +- .../global_objects/typedarray/@@species/index.md | 2 +- .../global_objects/typedarray/buffer/index.md | 2 +- .../global_objects/typedarray/bytelength/index.md | 2 +- .../global_objects/typedarray/byteoffset/index.md | 2 +- .../typedarray/bytes_per_element/index.md | 2 +- .../global_objects/typedarray/copywithin/index.md | 4 +- .../global_objects/typedarray/entries/index.md | 2 +- .../global_objects/typedarray/every/index.md | 2 +- .../global_objects/typedarray/fill/index.md | 2 +- .../global_objects/typedarray/filter/index.md | 4 +- .../global_objects/typedarray/find/index.md | 2 +- .../global_objects/typedarray/findindex/index.md | 2 +- .../global_objects/typedarray/foreach/index.md | 2 +- .../global_objects/typedarray/includes/index.md | 2 +- .../reference/global_objects/typedarray/index.md | 8 +- .../global_objects/typedarray/indexof/index.md | 2 +- .../global_objects/typedarray/join/index.md | 2 +- .../global_objects/typedarray/keys/index.md | 2 +- .../global_objects/typedarray/lastindexof/index.md | 4 +- .../global_objects/typedarray/length/index.md | 2 +- .../global_objects/typedarray/map/index.md | 4 +- .../global_objects/typedarray/name/index.md | 2 +- .../global_objects/typedarray/reduce/index.md | 2 +- .../global_objects/typedarray/reduceright/index.md | 4 +- .../global_objects/typedarray/reverse/index.md | 2 +- .../global_objects/typedarray/set/index.md | 2 +- .../global_objects/typedarray/slice/index.md | 2 +- .../global_objects/typedarray/some/index.md | 8 +- .../global_objects/typedarray/sort/index.md | 2 +- .../global_objects/typedarray/subarray/index.md | 4 +- .../typedarray/tolocalestring/index.md | 2 +- .../global_objects/typedarray/tostring/index.md | 2 +- .../global_objects/typedarray/values/index.md | 2 +- .../reference/global_objects/typeerror/index.md | 12 +- .../reference/global_objects/undefined/index.md | 10 +- .../global_objects/weakmap/delete/index.md | 2 +- .../reference/global_objects/weakmap/get/index.md | 2 +- .../reference/global_objects/weakmap/has/index.md | 2 +- .../reference/global_objects/weakref/index.md | 2 +- .../reference/global_objects/weakset/add/index.md | 2 +- .../global_objects/weakset/delete/index.md | 2 +- .../reference/global_objects/weakset/has/index.md | 2 +- .../webassembly/compileerror/index.md | 2 +- .../webassembly/compilestreaming/index.md | 2 +- .../reference/global_objects/webassembly/index.md | 4 +- .../webassembly/instantiate/index.md | 4 +- .../webassembly/instantiatestreaming/index.md | 2 +- .../webassembly/memory/grow/index.md | 6 +- .../global_objects/webassembly/module/index.md | 2 +- .../global_objects/webassembly/table/get/index.md | 2 +- .../global_objects/webassembly/table/index.md | 6 +- .../reference/iteration_protocols/index.md | 4 +- .../reference/operators/assignment/index.md | 2 +- .../reference/operators/async_function/index.md | 4 +- .../javascript/reference/operators/class/index.md | 6 +- .../reference/operators/comma_operator/index.md | 6 +- .../operators/conditional_operator/index.md | 4 +- .../reference/operators/function/index.md | 6 +- .../reference/operators/function_star_/index.md | 2 +- .../reference/operators/grouping/index.md | 6 +- .../web/javascript/reference/operators/in/index.md | 10 +- .../reference/operators/instanceof/index.md | 20 +- .../reference/operators/new.target/index.md | 4 +- .../javascript/reference/operators/new/index.md | 30 +- .../operators/nullish_coalescing_operator/index.md | 18 +- .../operators/object_initializer/index.md | 2 +- .../reference/operators/optional_chaining/index.md | 6 +- .../operators/property_accessors/index.md | 14 +- .../reference/operators/spread_syntax/index.md | 4 +- .../javascript/reference/operators/this/index.md | 2 +- .../javascript/reference/operators/void/index.md | 12 +- .../javascript/reference/operators/yield/index.md | 34 +- .../reference/operators/yield_star_/index.md | 2 +- .../reference/statements/async_function/index.md | 4 +- .../javascript/reference/statements/break/index.md | 6 +- .../javascript/reference/statements/class/index.md | 6 +- .../reference/statements/continue/index.md | 6 +- .../reference/statements/do...while/index.md | 2 +- .../javascript/reference/statements/empty/index.md | 8 +- .../reference/statements/export/index.md | 20 +- .../reference/statements/for...in/index.md | 2 +- .../reference/statements/for...of/index.md | 6 +- .../javascript/reference/statements/for/index.md | 10 +- .../reference/statements/function/index.md | 8 +- .../reference/statements/import/index.md | 42 +- .../javascript/reference/statements/label/index.md | 8 +- .../javascript/reference/statements/let/index.md | 2 +- .../reference/statements/return/index.md | 6 +- .../reference/statements/switch/index.md | 8 +- .../javascript/reference/statements/with/index.md | 6 +- .../web/javascript/reference/strict_mode/index.md | 2 +- .../reference/template_literals/index.md | 68 +-- files/fr/web/javascript/shells/index.md | 4 +- .../index.md | 2 +- files/fr/web/manifest/index.md | 18 +- files/fr/web/manifest/theme_color/index.md | 2 +- files/fr/web/mathml/attribute/index.md | 2 +- files/fr/web/mathml/element/math/index.md | 10 +- files/fr/web/mathml/element/menclose/index.md | 10 +- files/fr/web/mathml/element/mfenced/index.md | 2 +- files/fr/web/mathml/element/mover/index.md | 4 +- files/fr/web/mathml/element/msub/index.md | 8 +- files/fr/web/mathml/element/munderover/index.md | 2 +- .../deriving_the_quadratic_formula/index.md | 4 +- .../index.md | 2 +- .../fr/web/performance/how_browsers_work/index.md | 4 +- .../web/performance/how_long_is_too_long/index.md | 12 +- files/fr/web/performance/index.md | 18 +- files/fr/web/performance/lazy_loading/index.md | 12 +- .../web/performance/performance_budgets/index.md | 2 +- .../add_to_home_screen/index.md | 2 +- .../progressive_web_apps/app_structure/index.md | 8 +- .../web/progressive_web_apps/introduction/index.md | 6 +- files/fr/web/progressive_web_apps/loading/index.md | 4 +- .../offline_service_workers/index.md | 18 +- .../re-engageable_notifications_push/index.md | 6 +- files/fr/web/security/index.md | 2 +- .../index.md | 10 +- files/fr/web/security/same-origin_policy/index.md | 4 +- files/fr/web/security/secure_contexts/index.md | 34 +- .../fr/web/security/subresource_integrity/index.md | 6 +- .../applying_svg_effects_to_html_content/index.md | 24 +- files/fr/web/svg/attribute/clip-path/index.md | 2 +- files/fr/web/svg/attribute/color/index.md | 2 +- files/fr/web/svg/attribute/core/index.md | 4 +- files/fr/web/svg/attribute/cx/index.md | 2 +- files/fr/web/svg/attribute/cy/index.md | 4 +- files/fr/web/svg/attribute/d/index.md | 20 +- files/fr/web/svg/attribute/dy/index.md | 52 +- files/fr/web/svg/attribute/fill-opacity/index.md | 2 +- files/fr/web/svg/attribute/fill-rule/index.md | 92 +-- files/fr/web/svg/attribute/fill/index.md | 38 +- files/fr/web/svg/attribute/height/index.md | 8 +- files/fr/web/svg/attribute/in/index.md | 30 +- files/fr/web/svg/attribute/points/index.md | 6 +- files/fr/web/svg/attribute/presentation/index.md | 2 +- files/fr/web/svg/attribute/seed/index.md | 2 +- .../fr/web/svg/attribute/stroke-dasharray/index.md | 6 +- .../web/svg/attribute/stroke-dashoffset/index.md | 62 +- files/fr/web/svg/attribute/stroke-linecap/index.md | 82 +-- .../fr/web/svg/attribute/stroke-linejoin/index.md | 110 ++-- files/fr/web/svg/attribute/stroke-opacity/index.md | 2 +- files/fr/web/svg/attribute/stroke-width/index.md | 4 +- files/fr/web/svg/attribute/transform/index.md | 78 +-- files/fr/web/svg/attribute/viewbox/index.md | 12 +- files/fr/web/svg/attribute/width/index.md | 8 +- files/fr/web/svg/element/animatetransform/index.md | 2 +- files/fr/web/svg/element/clippath/index.md | 16 +- files/fr/web/svg/element/defs/index.md | 12 +- files/fr/web/svg/element/desc/index.md | 4 +- files/fr/web/svg/element/ellipse/index.md | 2 +- .../web/svg/element/fecomponenttransfer/index.md | 4 +- files/fr/web/svg/element/feconvolvematrix/index.md | 16 +- files/fr/web/svg/element/feimage/index.md | 2 +- files/fr/web/svg/element/femergenode/index.md | 28 +- .../fr/web/svg/element/fespecularlighting/index.md | 16 +- files/fr/web/svg/element/fetile/index.md | 2 +- files/fr/web/svg/element/filter/index.md | 4 +- files/fr/web/svg/element/foreignobject/index.md | 2 +- files/fr/web/svg/element/g/index.md | 6 +- files/fr/web/svg/element/line/index.md | 14 +- files/fr/web/svg/element/lineargradient/index.md | 2 +- files/fr/web/svg/element/marker/index.md | 36 +- files/fr/web/svg/element/mask/index.md | 4 +- files/fr/web/svg/element/metadata/index.md | 2 +- files/fr/web/svg/element/polyline/index.md | 2 +- files/fr/web/svg/element/radialgradient/index.md | 2 +- files/fr/web/svg/element/rect/index.md | 2 +- files/fr/web/svg/element/stop/index.md | 6 +- files/fr/web/svg/element/style/index.md | 4 +- files/fr/web/svg/element/svg/index.md | 6 +- files/fr/web/svg/element/switch/index.md | 4 +- files/fr/web/svg/element/symbol/index.md | 28 +- files/fr/web/svg/element/text/index.md | 26 +- files/fr/web/svg/element/title/index.md | 8 +- files/fr/web/svg/element/tspan/index.md | 2 +- files/fr/web/svg/element/use/index.md | 16 +- files/fr/web/svg/index.md | 4 +- files/fr/web/svg/svg_animation_with_smil/index.md | 6 +- files/fr/web/svg/svg_as_an_image/index.md | 4 +- .../svg/tutorial/basic_transformations/index.md | 2 +- .../web/svg/tutorial/clipping_and_masking/index.md | 2 +- files/fr/web/svg/tutorial/gradients/index.md | 66 +-- files/fr/web/svg/tutorial/introduction/index.md | 4 +- files/fr/web/svg/tutorial/paths/index.md | 24 +- files/fr/web/svg/tutorial/patterns/index.md | 158 ++--- files/fr/web/svg/tutorial/svg_and_css/index.md | 4 +- files/fr/web/svg/tutorial/svg_fonts/index.md | 2 +- files/fr/web/svg/tutorial/svg_image_tag/index.md | 4 +- .../svg/tutorial/svg_in_html_introduction/index.md | 6 +- files/fr/web/svg/tutorial/texts/index.md | 12 +- files/fr/web/svg/tutorial/tools_for_svg/index.md | 28 +- .../using_templates_and_slots/index.md | 32 +- files/fr/web/xml/xml_introduction/index.md | 26 +- files/fr/web/xpath/functions/ceiling/index.md | 2 +- files/fr/web/xpath/functions/current/index.md | 2 +- files/fr/web/xpath/functions/false/index.md | 2 +- files/fr/web/xpath/functions/lang/index.md | 6 +- files/fr/web/xpath/functions/not/index.md | 2 +- files/fr/web/xpath/functions/position/index.md | 2 +- files/fr/web/xpath/functions/string/index.md | 2 +- .../web/xpath/functions/system-property/index.md | 4 +- files/fr/web/xslt/element/if/index.md | 2 +- files/fr/web/xslt/element/index.md | 8 +- files/fr/web/xslt/element/message/index.md | 2 +- files/fr/web/xslt/element/number/index.md | 6 +- files/fr/web/xslt/element/sort/index.md | 2 +- files/fr/web/xslt/element/text/index.md | 2 +- files/fr/web/xslt/element/value-of/index.md | 2 +- files/fr/web/xslt/element/when/index.md | 2 +- files/fr/web/xslt/pi_parameters/index.md | 20 +- .../an_overview/index.md | 8 +- .../for_further_reading/index.md | 28 +- .../web/xslt/transforming_xml_with_xslt/index.md | 2 +- .../index.md | 6 +- .../advanced_example/index.md | 6 +- .../basic_example/index.md | 10 +- .../javascript_xslt_bindings/index.md | 10 +- .../setting_parameters/index.md | 8 +- files/fr/webassembly/c_to_wasm/index.md | 42 +- files/fr/webassembly/concepts/index.md | 64 +- files/fr/webassembly/exported_functions/index.md | 20 +- files/fr/webassembly/index.md | 2 +- files/fr/webassembly/loading_and_running/index.md | 36 +- .../webassembly/using_the_javascript_api/index.md | 120 ++-- 2820 files changed, 15551 insertions(+), 15582 deletions(-) diff --git a/files/fr/games/anatomy/index.md b/files/fr/games/anatomy/index.md index 1e7d38a462..ec03f5ae89 100644 --- a/files/fr/games/anatomy/index.md +++ b/files/fr/games/anatomy/index.md @@ -13,27 +13,27 @@ original_slug: Jeux/Anatomie {{IncludeSubnav("/fr/docs/Jeux")}} -Cet article se concentre sur l'anatomie et le flux de la plupart des jeux video à partir d'un point de vue technique, concernant la manière dont la boucle principale devrait tourner. Cela aide les débutants dans l'arène du développement à comprendre  ce qui est requis quand il est question de bâtir un jeu et comment les standards du web comme JavaScript leur est offert comme outil. Les programmeurs de jeux expérimentés et nouveaux dans le développement web pourront aussi en tirer bénéfice. +Cet article se concentre sur l'anatomie et le flux de la plupart des jeux video à partir d'un point de vue technique, concernant la manière dont la boucle principale devrait tourner. Cela aide les débutants dans l'arène du développement à comprendre ce qui est requis quand il est question de bâtir un jeu et comment les standards du web comme JavaScript leur est offert comme outil. Les programmeurs de jeux expérimentés et nouveaux dans le développement web pourront aussi en tirer bénéfice. ## Présenter, accepter, interpréter, calculer, repéter -Le but de chaque jeu vidéo est de **présenter** à (aux) utilisateur(s) une situation, **accepter** leur entrée, **interpréter** ces signaux en actions, et **calculer** une nouvelle situation résultant de ces actes. Les jeux bouclent continuellement à travers ces niveaux, jusqu'à ce qu'une condition finale arrive (comme gagner, perdre, ou quitter le jeu). Sans surprise, ce modèle correspond à la manière dont un moteur de jeu est programmé. +Le but de chaque jeu vidéo est de **présenter** à (aux) utilisateur(s) une situation, **accepter** leur entrée, **interpréter** ces signaux en actions, et **calculer** une nouvelle situation résultant de ces actes. Les jeux bouclent continuellement à travers ces niveaux, jusqu'à ce qu'une condition finale arrive (comme gagner, perdre, ou quitter le jeu). Sans surprise, ce modèle correspond à la manière dont un moteur de jeu est programmé. Ces spécificités dépendent du jeu. -Certains jeu maintiennent ce cycle par les entrées du joueur. Imaginez que vous développez un jeu du type *"trouvez les différences entre ces deux images"*. Ces jeux **présentent** deux images à l'utilisateur; ils **accèptent** leur clics (ou touchés); ils **interprètent** l'entrée comme un succès, une erreur, une pause, une interaction de menu, etc.; finalement, ils **calculent** une scène mise à jour resultant de l'entrée de donnée. La boucle du jeu évolue par l'entrée de l'utilisateur et s'arrête jusqu'à ce qu'il en soumette une nouvelle. C'est plus une approche au coup par coup qui ne demande pas une mise à jour continuelle de chaque image, mais juste quand le joueur réagit. +Certains jeu maintiennent ce cycle par les entrées du joueur. Imaginez que vous développez un jeu du type *"trouvez les différences entre ces deux images"*. Ces jeux **présentent** deux images à l'utilisateur; ils **accèptent** leur clics (ou touchés); ils **interprètent** l'entrée comme un succès, une erreur, une pause, une interaction de menu, etc.; finalement, ils **calculent** une scène mise à jour resultant de l'entrée de donnée. La boucle du jeu évolue par l'entrée de l'utilisateur et s'arrête jusqu'à ce qu'il en soumette une nouvelle. C'est plus une approche au coup par coup qui ne demande pas une mise à jour continuelle de chaque image, mais juste quand le joueur réagit. -D'autres jeux demandent un contrôle précis à chaque fraction de seconde. Les principes sont les mêmes avec une légère différence: chaque animation fait progresser le cycle et tout changement d'entrée d'un utilisateur est capturé dès que possible. Ce modèle au coup par image  est implementé dans ce que l'on appelle la **boucle principale**. Si vos boucles de jeu sont basées sur le temps alors ce sera là-dessus que seront basées vos simulations. +D'autres jeux demandent un contrôle précis à chaque fraction de seconde. Les principes sont les mêmes avec une légère différence: chaque animation fait progresser le cycle et tout changement d'entrée d'un utilisateur est capturé dès que possible. Ce modèle au coup par image est implementé dans ce que l'on appelle la **boucle principale**. Si vos boucles de jeu sont basées sur le temps alors ce sera là-dessus que seront basées vos simulations. -Mais parfois ce n'est pas un contrôle dans le temps. Votre boucle de jeu peut être similaire à l'exemple *cherchez les différences* et se baser directement sur les entrées. Cela peut être nécessaire d'avoir à la fois les entrées et un temps simulé. Cela peut aussi être basé sur une boucle qui utilise d'autre chose. +Mais parfois ce n'est pas un contrôle dans le temps. Votre boucle de jeu peut être similaire à l'exemple *cherchez les différences* et se baser directement sur les entrées. Cela peut être nécessaire d'avoir à la fois les entrées et un temps simulé. Cela peut aussi être basé sur une boucle qui utilise d'autre chose. -Le JavaScript moderne — comme décrit dans les prochaines sections — heureusement, facilite le développement d'une boucle efficace éxécutée une fois par seconde. Bien sûr, votre jeu sera optimisé au long de sa conception. Si quelque chose doit s'apparenter à un évènement peu fréquent alors il sera préférable de briser la boucle principale (mais pas tout le temps). +Le JavaScript moderne — comme décrit dans les prochaines sections — heureusement, facilite le développement d'une boucle efficace éxécutée une fois par seconde. Bien sûr, votre jeu sera optimisé au long de sa conception. Si quelque chose doit s'apparenter à un évènement peu fréquent alors il sera préférable de briser la boucle principale (mais pas tout le temps). -## Construire une boucle principale en JavaScript +## Construire une boucle principale en JavaScript -JavaScript travaille beaucoup mieux avec des évènements et des fonctions de rappel. Les navigateur modernes s'efforcent d'appeler des méthodes au moment où elles sont nécessaires et mises en pause (ou font leur travail) le reste du temps. Il est de bonne pratique d'attacher votre code au moment le plus approprié. Pensez à quel moment votre fonction à besoin d'être appelée sur un interval de temps strict, à chaque image, ou seulement après que quelque chose se soit passé. Être plus spécifique avec le navigateur quand votre fonction à besoin d'être appelée permet au navigateur d'être optimisé une fois votre boucle appelée. De plus, cela peut rendre votre tâche plus aisée. +JavaScript travaille beaucoup mieux avec des évènements et des fonctions de rappel. Les navigateur modernes s'efforcent d'appeler des méthodes au moment où elles sont nécessaires et mises en pause (ou font leur travail) le reste du temps. Il est de bonne pratique d'attacher votre code au moment le plus approprié. Pensez à quel moment votre fonction à besoin d'être appelée sur un interval de temps strict, à chaque image, ou seulement après que quelque chose se soit passé. Être plus spécifique avec le navigateur quand votre fonction à besoin d'être appelée permet au navigateur d'être optimisé une fois votre boucle appelée. De plus, cela peut rendre votre tâche plus aisée. -Certain programmes ont besoin d'être lancés image-par-image alors pourquoi y attacher quelque chose d'autre que le taux de rafraîchissement du navigateur ? Dans le web, `{{ domxref("window.requestAnimationFrame()") }}` sera la fondation de bien des boucles principales. Une fonction de rappel doit lui être passée quand elle est appelée. Cette fonction de rappel sera éxécutée à un moment précis avant le prochain rafraîchissement. Voici un exemple d'une simple boucle principale: +Certain programmes ont besoin d'être lancés image-par-image alors pourquoi y attacher quelque chose d'autre que le taux de rafraîchissement du navigateur ? Dans le web, `{{ domxref("window.requestAnimationFrame()") }}` sera la fondation de bien des boucles principales. Une fonction de rappel doit lui être passée quand elle est appelée. Cette fonction de rappel sera éxécutée à un moment précis avant le prochain rafraîchissement. Voici un exemple d'une simple boucle principale: window.main = function () { window.requestAnimationFrame( main ); @@ -43,19 +43,19 @@ Certain programmes ont besoin d'être lancés image-par-image alors pourquoi main(); //Débuter le cycle. -**Note**: Dans chaque méthodes `main()` présentées ici, nous planifions un nouveau `requestAnimationFrame` avant de lancer le contenu de notre boucle. Ce n'est pas par accident et c'est considéré comme une meilleure pratique. Appeler le prochain `requestAnimationFrame` plus tôt assure que le navigateur la recevra à temps pour le planifier convenablement même si vous image courrante rate la fenêtre de synchronisation principale (VSync). +**Note**: Dans chaque méthodes `main()` présentées ici, nous planifions un nouveau `requestAnimationFrame` avant de lancer le contenu de notre boucle. Ce n'est pas par accident et c'est considéré comme une meilleure pratique. Appeler le prochain `requestAnimationFrame` plus tôt assure que le navigateur la recevra à temps pour le planifier convenablement même si vous image courrante rate la fenêtre de synchronisation principale (VSync). -La portion de code ci-dessus comporte deux déclarations. La première créée une fonction comme variable globale appelée `main()`. Cette fonction effectue un travail et indique aussi au navigateur de s'appeler elle-même au prochain `window.requestAnimationFrame()`. La seconde déclaration appelle la fonction `main()`, definie dans la première déclaration. Parceque `main()` est appelé une fois dans la seconde déclaration et chaque appel de celle-ci la place dans la queue des choses à faire à chaque image, `main()` est synchronisée à votre taux de rafraîchissement. +La portion de code ci-dessus comporte deux déclarations. La première créée une fonction comme variable globale appelée `main()`. Cette fonction effectue un travail et indique aussi au navigateur de s'appeler elle-même au prochain `window.requestAnimationFrame()`. La seconde déclaration appelle la fonction `main()`, definie dans la première déclaration. Parceque `main()` est appelé une fois dans la seconde déclaration et chaque appel de celle-ci la place dans la queue des choses à faire à chaque image, `main()` est synchronisée à votre taux de rafraîchissement. Bien sûr, cette boucle n'est pas parfaite. Avant que nous discutions de manières de la modifier, parlons de ce qu'elle fait de bien. -Temporiser la boucle principale avec le rafraîchissement du navigateur permet à votre boucle d'être éxécutée aussi fréquemment que le navigateur à besoin de rafraîchir l'écran. Cela vous permet de contrôler chaque image de votre animation. C'est aussi beaucoup plus simple car `main()` est la seule fonction qui est bouclée. Dans un jeu de tir à la première personne (ou un jeu équivalent) on présente une nouvelle scène à chaque image. Vous ne pouvez donc pas obtenir quelque chose de plus fluide que cela. +Temporiser la boucle principale avec le rafraîchissement du navigateur permet à votre boucle d'être éxécutée aussi fréquemment que le navigateur à besoin de rafraîchir l'écran. Cela vous permet de contrôler chaque image de votre animation. C'est aussi beaucoup plus simple car `main()` est la seule fonction qui est bouclée. Dans un jeu de tir à la première personne (ou un jeu équivalent) on présente une nouvelle scène à chaque image. Vous ne pouvez donc pas obtenir quelque chose de plus fluide que cela. -Pourtant n'imaginez pas que les animations requièrent un contrôle image-par-image. De simples animations peuvent être éxécutées, même avec une accélération matérielle, avec des animations CSS et d'autres outils inclus dans le navigateur. Bon nombre vont vous faciliter la vie. +Pourtant n'imaginez pas que les animations requièrent un contrôle image-par-image. De simples animations peuvent être éxécutées, même avec une accélération matérielle, avec des animations CSS et d'autres outils inclus dans le navigateur. Bon nombre vont vous faciliter la vie. -## Construire une *meilleure* boucle principale en Javascript +## Construire une *meilleure* boucle principale en Javascript -Il y a deux problèmes évidents avec notre boucle principale précédente: `main()` pollue l'objet `{{ domxref("window") }}` (où sont stockées toutes les variables globales) et l'exemple donné ne nous permet pas de *stopper* la boucle à moins que l'onglet du navigateur ne soit fermé ou rafraîchit. Pour le premier problème, si vous désirez que la boucle principale tourne simplement sans y accéder directement, vous pouvez en crééer une fonction à accès immédiat -(FAI ou "Immediately-Invoked Function Expression - IIFE"). +Il y a deux problèmes évidents avec notre boucle principale précédente: `main()` pollue l'objet `{{ domxref("window") }}` (où sont stockées toutes les variables globales) et l'exemple donné ne nous permet pas de *stopper* la boucle à moins que l'onglet du navigateur ne soit fermé ou rafraîchit. Pour le premier problème, si vous désirez que la boucle principale tourne simplement sans y accéder directement, vous pouvez en crééer une fonction à accès immédiat -(FAI ou "Immediately-Invoked Function Expression - IIFE"). /* * Débuter avec le point virgue au cas où le code qui réside au-dessus de cet exemple @@ -74,11 +74,11 @@ Il y a deux problèmes évidents avec notre boucle principale précédente: `mai main(); // Débute le cycle })(); -Quand le navigateur passe à travers la FAI, cela va définir votre boucle principale et immédiatement la mettre en file d'attente pour la prochaine image. Cela ne sera attaché à aucun objet et `main` (ou `main()` pour les méthodes) sera un nom valide inutilisé dans le reste de l'application, libre d'être défini comme quelque chose d'autre. +Quand le navigateur passe à travers la FAI, cela va définir votre boucle principale et immédiatement la mettre en file d'attente pour la prochaine image. Cela ne sera attaché à aucun objet et `main` (ou `main()` pour les méthodes) sera un nom valide inutilisé dans le reste de l'application, libre d'être défini comme quelque chose d'autre. -Note: En pratique, il est plus courant de prévenir le prochain requestAnimationFrame() avec une déclaration "if", plutôt que d'appeler cancelAnimationFrame(). +Note: En pratique, il est plus courant de prévenir le prochain requestAnimationFrame() avec une déclaration "if", plutôt que d'appeler cancelAnimationFrame(). -Pour le second problème, arrêter la boucle principale, vous aurez besoin d'annuler l'appel à `main()` avec `{{ domxref("window.cancelAnimationFrame()") }}`. Vous aurez besoin de passer la valeur donneé par `cancelAnimationFrame()` en référence à `requestAnimationFrame()` quand elle a été appelée en dernier. Assumons que vos fonctions de jeu et les variables sont bâties dans un espace de nom appelé `MyGame`. Avec notre dernier exemple étendu, la boucle principale aura maintenant l'air de ceci: +Pour le second problème, arrêter la boucle principale, vous aurez besoin d'annuler l'appel à `main()` avec `{{ domxref("window.cancelAnimationFrame()") }}`. Vous aurez besoin de passer la valeur donneé par `cancelAnimationFrame()` en référence à `requestAnimationFrame()` quand elle a été appelée en dernier. Assumons que vos fonctions de jeu et les variables sont bâties dans un espace de nom appelé `MyGame`. Avec notre dernier exemple étendu, la boucle principale aura maintenant l'air de ceci: /* * Débuter avec le point virgue au cas où le code qui réside au-dessus de cet exemple @@ -99,34 +99,34 @@ Pour le second problème, arrêter la boucle principale, vous aurez besoin d'ann main(); // Début du cycle })(); -Nous avons maintenant une variable déclarée dans l'espace de nom `MyGame`, que nous appelons `stopMain`, qui contient la valeur de l'appel de notre boucle principale `requestAnimationFrame()` la plus récente. À tout moment, nous pouvons stopper la boucle principale en disant au navigateur d'annuler la requête qui correspond à notre valeur. +Nous avons maintenant une variable déclarée dans l'espace de nom `MyGame`, que nous appelons `stopMain`, qui contient la valeur de l'appel de notre boucle principale `requestAnimationFrame()` la plus récente. À tout moment, nous pouvons stopper la boucle principale en disant au navigateur d'annuler la requête qui correspond à notre valeur. window.cancelAnimationFrame( MyGame.stopMain ); -La clé pour programmer une boucle principale, en JavaScript, est d'attacher n'importe quel évènement qui doit diriger votre action et porter attention aux systèmes interconnectés. Vous pourriez avoir différents composants dirigés par différents évènements. Cela paraît comme d'une complexité inutile mais cela peut être une bonne optimisation (pas nécessairement, bien sûr). Le problème c'est que vous ne programmez pas une boucle principale typique. En Javascript, vous utilisez la boucle principale du navigateur et vous essayez de le faire avec efficacité. +La clé pour programmer une boucle principale, en JavaScript, est d'attacher n'importe quel évènement qui doit diriger votre action et porter attention aux systèmes interconnectés. Vous pourriez avoir différents composants dirigés par différents évènements. Cela paraît comme d'une complexité inutile mais cela peut être une bonne optimisation (pas nécessairement, bien sûr). Le problème c'est que vous ne programmez pas une boucle principale typique. En Javascript, vous utilisez la boucle principale du navigateur et vous essayez de le faire avec efficacité. -## Construire une boucle principale *encore plus optimisée* en JavaScript +## Construire une boucle principale *encore plus optimisée* en JavaScript -En fin de compte, en JavaScript, le navigateur roule sa propre boucle principale et votre code existe dans certaines de ses étapes. La section ci-dessus décrit des boucles principales qui essaient de ne pas lâcher le contrôle du navigateur. Ces méthodes principales s'attachent à `window.requestAnimationFrame()`, qui demandent au navigateur le contrôle sur la prochaine image qui arrive. C'est au navigateur de décider de la gestion de sa boucle principale. Les spécifications du [W3C en matière de requestAnimationFrame](http://www.w3.org/TR/animation-timing/) ne définissent pas exactement quand les navigateur doivent éxécuter les rappels de requestAnimationFrame. Cela pourrait être bénéfique car cela laisse aux concepteurs de navigateurs la liberté d'expérimenter les solutions qu'ils pensent être les meilleures au travers du temps. +En fin de compte, en JavaScript, le navigateur roule sa propre boucle principale et votre code existe dans certaines de ses étapes. La section ci-dessus décrit des boucles principales qui essaient de ne pas lâcher le contrôle du navigateur. Ces méthodes principales s'attachent à `window.requestAnimationFrame()`, qui demandent au navigateur le contrôle sur la prochaine image qui arrive. C'est au navigateur de décider de la gestion de sa boucle principale. Les spécifications du [W3C en matière de requestAnimationFrame](http://www.w3.org/TR/animation-timing/) ne définissent pas exactement quand les navigateur doivent éxécuter les rappels de requestAnimationFrame. Cela pourrait être bénéfique car cela laisse aux concepteurs de navigateurs la liberté d'expérimenter les solutions qu'ils pensent être les meilleures au travers du temps. -Les versions modernes de Firefox et Google Chrome (et probablement d'autres)*tentent* de connecter les rappels de `requestAnimationFrame` à leur fil principal au tout début de chaque image. De ce fait, le déroulement principal *essaye* d'être le plus possible comme ci-dessous: +Les versions modernes de Firefox et Google Chrome (et probablement d'autres)*tentent* de connecter les rappels de `requestAnimationFrame` à leur fil principal au tout début de chaque image. De ce fait, le déroulement principal *essaye* d'être le plus possible comme ci-dessous: 1. Débuter une nouvelle image (pendant que la précédente est prise en charge par l'affichage). -2. Passer à travers la liste de retours `requestAnimationFrame` et les appeler. +2. Passer à travers la liste de retours `requestAnimationFrame` et les appeler. 3. Passer le ramasse-miettes et autres tâches par-images quand les retours ci-dessous cessent de controler le fil principal. -4. Se mettre en veille (à moins qu'un évènement interrompe la sieste du navigateur) jusqu'à ce que le moniteur ne soit prêt pour votre image ([VSync](http://www.techopedia.com/definition/92/vertical-sync-vsync)) et répète. +4. Se mettre en veille (à moins qu'un évènement interrompe la sieste du navigateur) jusqu'à ce que le moniteur ne soit prêt pour votre image ([VSync](http://www.techopedia.com/definition/92/vertical-sync-vsync)) et répète. -Vous pouvez considérer que développer une application en temps réél est comme avoir un temps donné pour faire le travail. Toutes les étapes ci-dessus doivent prendre effet toutes les 16.5 millisecondes pour fonctionner avec un affichage de 60Hz. Les navigateurs invoquent leur code aussitôt que possible pour donner un maximum de temps aux calculs. Votre fil principal va souvent débuter par les tâches qui ne sont même pas dans le fil principal (tel que la rasterisation ou les ombrages en WebGL). Les longs calculs peuvent être fait par un Web Worker ou une accélération matérielle en même temps que le navigateur utilise son propre fil principal pour passer le ramasse-miette, ces autres tâches, ou gérer les évènements asynchrones. +Vous pouvez considérer que développer une application en temps réél est comme avoir un temps donné pour faire le travail. Toutes les étapes ci-dessus doivent prendre effet toutes les 16.5 millisecondes pour fonctionner avec un affichage de 60Hz. Les navigateurs invoquent leur code aussitôt que possible pour donner un maximum de temps aux calculs. Votre fil principal va souvent débuter par les tâches qui ne sont même pas dans le fil principal (tel que la rasterisation ou les ombrages en WebGL). Les longs calculs peuvent être fait par un Web Worker ou une accélération matérielle en même temps que le navigateur utilise son propre fil principal pour passer le ramasse-miette, ces autres tâches, ou gérer les évènements asynchrones. -Bien que nous ne discutons pas du gain de temps, plusieurs navigateur ont un outil appelé *Temps Haute Résolution*. L'objet {{ domxref("Date") }} n'est plus la méthode reconnue pour temporiser les évènements car elle est très imprécise et peut être modifiée par l'horloge système. Le Temps Haute Résolution, d'un autre côté, compte le nombre de millisecondes depuis `navigationStart` (quand le document précédent est déchargé). Cette valeur est retournée en un nombre décimal précis au millième de seconde. Il est connu comme étant `{{ domxref("DOMHighResTimeStamp") }}` mais, à toutes fins utiles, considérez le comme un nombre décimal à virgule flottante. +Bien que nous ne discutons pas du gain de temps, plusieurs navigateur ont un outil appelé *Temps Haute Résolution*. L'objet {{ domxref("Date") }} n'est plus la méthode reconnue pour temporiser les évènements car elle est très imprécise et peut être modifiée par l'horloge système. Le Temps Haute Résolution, d'un autre côté, compte le nombre de millisecondes depuis `navigationStart` (quand le document précédent est déchargé). Cette valeur est retournée en un nombre décimal précis au millième de seconde. Il est connu comme étant `{{ domxref("DOMHighResTimeStamp") }}` mais, à toutes fins utiles, considérez le comme un nombre décimal à virgule flottante. -**Note**: Les systèmes (matériels ou logiciels) qui ne sont pas capables d'avoir une précision à la microseconde sont autorisés à fournir une précision à la milliseconde au minimum. Sinon, ils devraient fournir une précision de 0.001ms s'ils en sont capables. +**Note**: Les systèmes (matériels ou logiciels) qui ne sont pas capables d'avoir une précision à la microseconde sont autorisés à fournir une précision à la milliseconde au minimum. Sinon, ils devraient fournir une précision de 0.001ms s'ils en sont capables. -Seule, cette valeur n'est pas très utile, considérant qu'il est relatif à un évènement peu intéressant, mais ils peut quand même être soustrait d'une autre prise de temps pour déterminer plus précisément combien de temps s'est déroulé entre ces deux poins. Pour obtenir une de ces prises de temps, vous pouvez appeler la fonction `window.performance.now()` et stocker le résultat dans une variable. +Seule, cette valeur n'est pas très utile, considérant qu'il est relatif à un évènement peu intéressant, mais ils peut quand même être soustrait d'une autre prise de temps pour déterminer plus précisément combien de temps s'est déroulé entre ces deux poins. Pour obtenir une de ces prises de temps, vous pouvez appeler la fonction `window.performance.now()` et stocker le résultat dans une variable. var tNow = window.performance.now(); -Retournons sur le sujet de la boucle principale. Il vous arrivera souvent de vouloir savoir quand votre boucle principale a été invoquée. Parce que cela est commun, la fonction `window.requestAnimationFrame()` fourni toujours un `DOMHighResTimeStamp` avec un argument de retour quand elles sont éxécutées. Cela mène à une amélioration de notre boucle précédente. +Retournons sur le sujet de la boucle principale. Il vous arrivera souvent de vouloir savoir quand votre boucle principale a été invoquée. Parce que cela est commun, la fonction `window.requestAnimationFrame()` fourni toujours un `DOMHighResTimeStamp` avec un argument de retour quand elles sont éxécutées. Cela mène à une amélioration de notre boucle précédente. /* * Débuter avec le point virgue au cas où le code qui réside au-dessus de cet exemple @@ -148,11 +148,11 @@ Retournons sur le sujet de la boucle principale. Il vous arrivera souvent de vou main(); // Débute le cycle })(); -Plusieurs autres optimisations sont possibles et cela dépend vraiment de ce que votre jeu tente d'accomplir. Le genre de votre jeu va visiblement faire la différence mais il peut être aussi subtil que cela. Vous pourriez dessiner un pixel à la fois sur un canvas ou vous pourriez étager des éléments du DOM (incluant de multiples canvas de WebGL avec des arrières-plans transparents si vous le désirez) en une hierarchie complexe. Chacunes de ces solutions mènera à des contraintes et opportunités différentes. +Plusieurs autres optimisations sont possibles et cela dépend vraiment de ce que votre jeu tente d'accomplir. Le genre de votre jeu va visiblement faire la différence mais il peut être aussi subtil que cela. Vous pourriez dessiner un pixel à la fois sur un canvas ou vous pourriez étager des éléments du DOM (incluant de multiples canvas de WebGL avec des arrières-plans transparents si vous le désirez) en une hierarchie complexe. Chacunes de ces solutions mènera à des contraintes et opportunités différentes. ## Il est temps de la... décision -Vous aurez besoin de faire un choix difficile concernant votre boucle principale: comment simuler l'évolution du temps. Si vous désirez un contrôle par image alors vous aurez besoin de déterminer combien sera-t-il nécessaire à votre jeu d'être remis à jour et dessiné. Vous pourriez même vouloir une mise à jour et dessiner à différents taux (de rafraîchissement). Vous aurez aussi besoin de considérer combien comment votre jeu échouera gracieusement si le système de l'utilisateur ne peut soutenir la charge de travail. Commençons par considérer que vous serez capables de gérer les entrées de l'utilisateur et de mettre à jour l'état du jeu à chaque fois que vous dessinez. Nous ramifierons après. +Vous aurez besoin de faire un choix difficile concernant votre boucle principale: comment simuler l'évolution du temps. Si vous désirez un contrôle par image alors vous aurez besoin de déterminer combien sera-t-il nécessaire à votre jeu d'être remis à jour et dessiné. Vous pourriez même vouloir une mise à jour et dessiner à différents taux (de rafraîchissement). Vous aurez aussi besoin de considérer combien comment votre jeu échouera gracieusement si le système de l'utilisateur ne peut soutenir la charge de travail. Commençons par considérer que vous serez capables de gérer les entrées de l'utilisateur et de mettre à jour l'état du jeu à chaque fois que vous dessinez. Nous ramifierons après. **Note :** Changer la manière dont votre boucle principale gère le temps est un cauchemar de débuggage, partout. Pensez à vos besoins, précautionneusement, avant de travailler sur votre boucle principale. @@ -180,42 +180,42 @@ Si votre jeu peut atteindre le maximum du taux de rafraîchissement sur n'import main(); // Start the cycle })(); -Si le maximum du taux de rafraîchissement ne peut être atteind, les paramètres de qualités pourraient être mis à jour pour rester sous notre gain en temps. L'exemple le plus célèbre de ce concept est le jeu de id Software, RAGE. Ce jeu a retiré à l'utilisateur le contrôle afin de conserver son temps de calcul à environ 16ms (ou environ 60ips). Si le calcul prenait trop de temps alors la résolution serait diminuée, les textures et autres éléments échoueraient au chargement et à l'affichage, et ainsi de suite. Ce cas (non-web) a créé plusieurs hypothèses et faits: +Si le maximum du taux de rafraîchissement ne peut être atteind, les paramètres de qualités pourraient être mis à jour pour rester sous notre gain en temps. L'exemple le plus célèbre de ce concept est le jeu de id Software, RAGE. Ce jeu a retiré à l'utilisateur le contrôle afin de conserver son temps de calcul à environ 16ms (ou environ 60ips). Si le calcul prenait trop de temps alors la résolution serait diminuée, les textures et autres éléments échoueraient au chargement et à l'affichage, et ainsi de suite. Ce cas (non-web) a créé plusieurs hypothèses et faits: - Chaque image d'animation compte pour une entrée utilisateur. - Aucune image n'a besoin d'être extrapolée (devinée) car chaque élément à sa propre mise à jour. -- Les systèmes simulés peuvent en gros considérer que chaque mise à jour complète est d'environ 16ms. -- Permettant à l'utilisateur le contrôle à travers des paramètres serait un cauchemar. +- Les systèmes simulés peuvent en gros considérer que chaque mise à jour complète est d'environ 16ms. +- Permettant à l'utilisateur le contrôle à travers des paramètres serait un cauchemar. - Des moniteur différents apportent des taux de rafraîchissement différents: 30 FPS, 75 FPS, 100 FPS, 120 FPS, 144 FPS, etc. -- Des systèmes qui ne sont pas capables de fonctionner avec 60 FPS vont perdre en qualité pour permettre au jeu de rouler à une vitesse optimale (éventuellement, il échouera complètement si cela devient trop bas). +- Des systèmes qui ne sont pas capables de fonctionner avec 60 FPS vont perdre en qualité pour permettre au jeu de rouler à une vitesse optimale (éventuellement, il échouera complètement si cela devient trop bas). -### Autres manières de gérer les besoins du taux de rafraîchissement variable +### Autres manières de gérer les besoins du taux de rafraîchissement variable -D'autres méthodes d'approcher le problème existent. +D'autres méthodes d'approcher le problème existent. -Une technique commune est de mettre à jour la simulation à une fréquence constante et dessiner autant (ou au moins) que le taux actuel le permet. Cette méthode de mise à jour peut continuer à boucler sans se soucier de ce que l'utilisateur voit. Cette méthode peut voir la dernière mise à jour, et quand elle est arrivée. Quand le dessin sait quand il est représenté, et le temps simulé pour la dernière mise à jour, il peut prédire une image plausible à dessiner. Cela n'a pas d'importance si c'est plus fréquent que la mise à jour officielle (ou même moins fréquente). La méthode de mise à jour établis des points de contrôle, autant que le système le permet, la méthode de rendu va dessiner autour de ces intants de temps. Il y a plusieurs manières de séparer la méthode de mise à jour dans les standards du web: +Une technique commune est de mettre à jour la simulation à une fréquence constante et dessiner autant (ou au moins) que le taux actuel le permet. Cette méthode de mise à jour peut continuer à boucler sans se soucier de ce que l'utilisateur voit. Cette méthode peut voir la dernière mise à jour, et quand elle est arrivée. Quand le dessin sait quand il est représenté, et le temps simulé pour la dernière mise à jour, il peut prédire une image plausible à dessiner. Cela n'a pas d'importance si c'est plus fréquent que la mise à jour officielle (ou même moins fréquente). La méthode de mise à jour établis des points de contrôle, autant que le système le permet, la méthode de rendu va dessiner autour de ces intants de temps. Il y a plusieurs manières de séparer la méthode de mise à jour dans les standards du web: -- Dessiner à chaque `requestAnimationFrame` et mettre à jour {{ domxref("window.setInterval") }} ou {{ domxref("window.setTimeout") }}. +- Dessiner à chaque `requestAnimationFrame` et mettre à jour {{ domxref("window.setInterval") }} ou {{ domxref("window.setTimeout") }}. - - Cela utilise le temps du processeur même quand il n'a pas l'attention ou qu'il est minimisé, qu'il ne monopolise pas le fil principal, et est probablement un artefact de la traditionnelle boucle principale (mais plus simple). + - Cela utilise le temps du processeur même quand il n'a pas l'attention ou qu'il est minimisé, qu'il ne monopolise pas le fil principal, et est probablement un artefact de la traditionnelle boucle principale (mais plus simple). -- Dessiner à chaque `requestAnimationFrame` et mettre à jour sur un `setInterval` ou `setTimeout` dans un [Web Worker](/fr/docs/Web/Guide/Performance/Using_web_workers). +- Dessiner à chaque `requestAnimationFrame` et mettre à jour sur un `setInterval` ou `setTimeout` dans un [Web Worker](/fr/docs/Web/Guide/Performance/Using_web_workers). - - C'est la même chose que ci-dessus, excepté que la mise à jour ne monopolise pas le fil principal (ni le fil principal ne le monopolise). C'est une solution plus complexe, et ce pourrait être trop de travail pour de simples mises à jours. + - C'est la même chose que ci-dessus, excepté que la mise à jour ne monopolise pas le fil principal (ni le fil principal ne le monopolise). C'est une solution plus complexe, et ce pourrait être trop de travail pour de simples mises à jours. -- Dessiner à chaque `requestAnimationFrame` et l'utiliser pour solliciter un Web Worker qui contient la méthode de mise à jour avec la quantité de temps à calculer, s'il y a lieu. +- Dessiner à chaque `requestAnimationFrame` et l'utiliser pour solliciter un Web Worker qui contient la méthode de mise à jour avec la quantité de temps à calculer, s'il y a lieu. - - Cela se met en veille jusqu'à ce que `requestAnimationFrame` est appelée et ne pollue pas le fil principal, et de plus vous ne vous reposez pas sur d'anciennes méthodes. À nouveau, c'est un peu plus complexe que les deux premières options, et *débuter* chaque mise à jour sera bloqué tant que le navigateur ne décide de lancer les retours rAF. + - Cela se met en veille jusqu'à ce que `requestAnimationFrame` est appelée et ne pollue pas le fil principal, et de plus vous ne vous reposez pas sur d'anciennes méthodes. À nouveau, c'est un peu plus complexe que les deux premières options, et *débuter* chaque mise à jour sera bloqué tant que le navigateur ne décide de lancer les retours rAF. Chacune de ces méthodes ont un compromis similaire: -- Les utilisateurs peuvent éviter le rendu d'images ou interpoler celles en sus dépendant de leurs performances. -- Vous pouvez compter sur tous les utilisateurs mettant à jours les variables non-cosmetiques à la même fréquence constante, moins quelques hoquets. +- Les utilisateurs peuvent éviter le rendu d'images ou interpoler celles en sus dépendant de leurs performances. +- Vous pouvez compter sur tous les utilisateurs mettant à jours les variables non-cosmetiques à la même fréquence constante, moins quelques hoquets. - Beaucoup plus compliquée à programmer que la boucle de base que nous avons vu précédemment. -- Les entrées utilisateurs sont complètement ignorées jusqu'à la prochaine mise à jour (même si l'utilisateur à un système rapide). +- Les entrées utilisateurs sont complètement ignorées jusqu'à la prochaine mise à jour (même si l'utilisateur à un système rapide). - L'interpolation obligatoire à un défaut de performance obligatoire. -Une méthode séparée de mise à jour et de dessin pourrait avoir l'air de l'exemple suivant. Pour les besoins de la démonstration, l'exemple est basé sur le troisième point, sans l'utilisation des Web Workers par soucis de lecture (et, soyons honnête, pour faciliter l'écriture). +Une méthode séparée de mise à jour et de dessin pourrait avoir l'air de l'exemple suivant. Pour les besoins de la démonstration, l'exemple est basé sur le troisième point, sans l'utilisation des Web Workers par soucis de lecture (et, soyons honnête, pour faciliter l'écriture). _Note: Cet exemple spécifiquement, aurait besoin d'une relecture._ @@ -236,12 +236,12 @@ _Note: Cet exemple spécifiquement, aurait besoin d'une relecture._ * numTicks est combien de mises à jour auraient dû avoir lieu entre 2 rendus d'images. * * render() se voit passé tFrame car il est considéré que la méthode de rendu va calculer -   combien de temps se sera écoulé depuis la mise à jour la plus récente pour -   extrapolation (purement cosmétique pour des systèmes rapides). La scène est dessinée. + combien de temps se sera écoulé depuis la mise à jour la plus récente pour + extrapolation (purement cosmétique pour des systèmes rapides). La scène est dessinée. * * update() calcule l'état du jeu comme point donné dans le temps. Ça devrait toujours être -   incrémenté par tickLength. C'est l'autorité de l'état du jeu. On lui passe le -   DOMHighResTimeStamp pour le temps que cela représente (qui, à nouveau, est toujours + incrémenté par tickLength. C'est l'autorité de l'état du jeu. On lui passe le + DOMHighResTimeStamp pour le temps que cela représente (qui, à nouveau, est toujours la dernière mise à jour + MyGame.tickLength qu'une pause ne soit ajoutée, etc.) * * setInitialState() réalise n'importe quel tâche mise de côté avant que la boucle principale ne doive tourner. @@ -283,21 +283,21 @@ _Note: Cet exemple spécifiquement, aurait besoin d'une relecture._ main(performance.now()); // Débute le cycle })(); -Une autre alternative est de simplement faire certaines choses moins souvent. Si une portion de votre boucle de mise à jour est difficile à calculer et intense (en temps), vous devrier considérer réduire sa fréquence et, idéalement, la diviser en portions à travers une période plus allongée. Un exemple implicite de cela est rencontré dans "The Artillery Blog for Artillery Games", où ils [ajustent leur taux de création de miettes](http://blog.artillery.com/2012/10/browser-garbage-collection-and-framerate.html) pour optimiser leur ramasse-miettes. Apparemment, le nettoyage des ressources n'est pas sensible au temps (spécialement si le nettoyage est plus dérangeant que le la miette elle-même). +Une autre alternative est de simplement faire certaines choses moins souvent. Si une portion de votre boucle de mise à jour est difficile à calculer et intense (en temps), vous devrier considérer réduire sa fréquence et, idéalement, la diviser en portions à travers une période plus allongée. Un exemple implicite de cela est rencontré dans "The Artillery Blog for Artillery Games", où ils [ajustent leur taux de création de miettes](http://blog.artillery.com/2012/10/browser-garbage-collection-and-framerate.html) pour optimiser leur ramasse-miettes. Apparemment, le nettoyage des ressources n'est pas sensible au temps (spécialement si le nettoyage est plus dérangeant que le la miette elle-même). Cela peut aussi s'appliquer à vos propres tâches. Elles sont de bonnes candidates pour en générer quand les ressources disponibles deviennent un problème. ## Sommaire -J'aimerai être clair que rien de ce qu'il y a ci-dessus, ou rien de cela, ne puisse être ce qu'il y a de mieux pour votre jeu. La décision correcte dépend entièrement des compromis que vous êtes prêts (ou pas) à faire. La préocupation est principalement de permuter vers une autre option. Heureusement, je n'en ai pas l'expérience mais j'ai entendu dire que c'est un jeu de cache-cache exténuant. +J'aimerai être clair que rien de ce qu'il y a ci-dessus, ou rien de cela, ne puisse être ce qu'il y a de mieux pour votre jeu. La décision correcte dépend entièrement des compromis que vous êtes prêts (ou pas) à faire. La préocupation est principalement de permuter vers une autre option. Heureusement, je n'en ai pas l'expérience mais j'ai entendu dire que c'est un jeu de cache-cache exténuant. -Une chose importante à retenir pour les plateformes gérées, telles que le web, est que votre boucle pourrait arrêter son éxécution pour une période de temps significative. Cela pourrait arriver quand l'utilisateur déselectionne votre onglet et que le navigateur tombe en veille (ou ralenti) son interval de retour `requestAnimationFrame`. Vous avez plusieurs façons de gérer cela et cela peut dépendre de votre jeu, s'il est pour un seul joueur ou multijoueurs. Certains des choix sont: +Une chose importante à retenir pour les plateformes gérées, telles que le web, est que votre boucle pourrait arrêter son éxécution pour une période de temps significative. Cela pourrait arriver quand l'utilisateur déselectionne votre onglet et que le navigateur tombe en veille (ou ralenti) son interval de retour `requestAnimationFrame`. Vous avez plusieurs façons de gérer cela et cela peut dépendre de votre jeu, s'il est pour un seul joueur ou multijoueurs. Certains des choix sont: -- Considérer le écart comme "une pause" et ne pas prendre en compte le temps. +- Considérer le écart comme "une pause" et ne pas prendre en compte le temps. - Vous pouvez probablement voir comment cela peut être problématique pour la plupart des jeux multijoueurs. -- Vous pouvez stimuler l'écart pour faire du rattrapage. +- Vous pouvez stimuler l'écart pour faire du rattrapage. - Cela peut être un problème pour de longues pauses et/ou des mises à jour complexes. @@ -305,4 +305,4 @@ Une chose importante à retenir pour les plateformes gérées, telles que le web - Ceci n'est pas efficace si votre pair ou le serveur sont périmés eux-aussi, ou s'ils n'existent pas car le jeu en mode un seul joueur n'existe pas et n'a pas de serveur. -Une fois que votre boucle principale a été développée et que vous avez pris vos décisions sur un lot d'hypothèses et de compromis qui conviendront à votre jeu, cela devient juste une question d'utilisation de vos décisions pour calculer n'importe quelle physique applicable, intelligence artificielle, sons, synchronisation réseau, et quoique votre jeu ai besoin. +Une fois que votre boucle principale a été développée et que vous avez pris vos décisions sur un lot d'hypothèses et de compromis qui conviendront à votre jeu, cela devient juste une question d'utilisation de vos décisions pour calculer n'importe quelle physique applicable, intelligence artificielle, sons, synchronisation réseau, et quoique votre jeu ai besoin. diff --git a/files/fr/games/examples/index.md b/files/fr/games/examples/index.md index a25682538b..05d90cf1da 100644 --- a/files/fr/games/examples/index.md +++ b/files/fr/games/examples/index.md @@ -9,9 +9,9 @@ tags: translation_of: Games/Examples original_slug: Jeux/Exemples --- -{{GamesSidebar}}  {{IncludeSubnav("/fr/docs/Jeux")}} +{{GamesSidebar}} {{IncludeSubnav("/fr/docs/Jeux")}} -Cette page liste un grand nombre de démos de technologies web impressionnantes vous permettant de vous inspirer et de vous amuser. Une preuve de ce qui peut être fait avec Javascript, WebGL et autres. Les deux premières sections listent des jeux tandis que la troisième est une liste de démos de technologies web. +Cette page liste un grand nombre de démos de technologies web impressionnantes vous permettant de vous inspirer et de vous amuser. Une preuve de ce qui peut être fait avec Javascript, WebGL et autres. Les deux premières sections listent des jeux tandis que la troisième est une liste de démos de technologies web. ## Démos/Jeux gratuits @@ -20,11 +20,11 @@ Cette page liste un grand nombre de démos de technologies web impressionnantes - [Beloola](http://www.beloola.com) - : Plateforme sociale de réalité virtuelle web pour les passionnés. Expérience disponible à la fois sur écrans 2D et casques de réalité virtuelle (_Paramètres / Passer en mode VR_) - [Tanx](http://playcanv.as/p/aP0oxhUr) - - : Un jeu de combat de tanks multijoueurs, créé avec [PlayCanvas](https://playcanvas.com/). + - : Un jeu de combat de tanks multijoueurs, créé avec [PlayCanvas](https://playcanvas.com/). - [Hyper Vanguard Force](https://robertsspaceindustries.com/comm-link/transmission/14704-Hyper-Vanguard-Force) - : Un "space shooter" _(tireur de l'espace)_ à défilement vertical. - [Swooop](http://playcanv.as/p/JtL2iqIH) - - : Un jeu d'aviation : contrôle ton avion et récupère les joyaux. Aussi créé avec [PlayCanvas](https://playcanvas.com/). + - : Un jeu d'aviation : contrôle ton avion et récupère les joyaux. Aussi créé avec [PlayCanvas](https://playcanvas.com/). - [Save the Day](https://ga.me/games/save-the-day) - : Volez à bord de votre hélicoptère de sauvetage vers la zone sinistrée et sauvez les victimes coincées (ga.me). - [Polycraft](https://ga.me/games/polycraft) @@ -32,9 +32,9 @@ Cette page liste un grand nombre de démos de technologies web impressionnantes - [HexGL](http://hexgl.bkcore.com/) - : Un jeu de course futuriste rythmé. - [Dead Trigger 2](http://beta.unity3d.com/jonas/DT2/) - - : Un jeu d'action avec des zombies, créé avec [Unity3D](http://unity3d.com/). + - : Un jeu d'action avec des zombies, créé avec [Unity3D](http://unity3d.com/). - [Angry Bots](http://beta.unity3d.com/jonas/AngryBots/) - - : Une démo de jeu de tir futuriste à la 3ème personne, créé avec [Unity3D](http://unity3d.com/). + - : Une démo de jeu de tir futuriste à la 3ème personne, créé avec [Unity3D](http://unity3d.com/). - [Nutmeg](http://sandbox.photonstorm.com/html5/nutmeg/) - : Jeu de plateforme action rétro. - [Back to Candyland](http://www.zibbo.com/game/match-3-games-top/back-to-candyland-episode-1) @@ -62,7 +62,7 @@ Cette page liste un grand nombre de démos de technologies web impressionnantes - [BrowserQuest](http://browserquest.mozilla.org/) - : Un MMORPG crée par the Little Workshop et Mozilla. - [Shoot The Rocks](https://arcade.ly/games/asteroids/) - - : Un jeu de tir solo 2D Canvas, dans le style des classiques Asteroids d' Atari, jeux d' arcade depuis 1979. + - : Un jeu de tir solo 2D Canvas, dans le style des classiques Asteroids d' Atari, jeux d' arcade depuis 1979. - [Star Citadel](https://arcade.ly/games/starcastle/) - : Une nouvelle version de Star Castle, le classique jeu d'arcade 1980 de Cinematronics, construit avec Canvas 2D. @@ -102,9 +102,9 @@ Cette page liste un grand nombre de démos de technologies web impressionnantes - [Rainbow Firestorm](http://codepen.io/jackrugile/pen/AokpF) - : Des particules de couleur arc-en-ciel, tombant comme de la pluie, rebondissent sur un terrain d'orbes. - [Crowd Simulation](http://visualiser.fr/babylon/crowd/) - - : Simulation d'une foule de personnes agitées  voulant rejoindre des directions opposées. + - : Simulation d'une foule de personnes agitées voulant rejoindre des directions opposées. - [SVG Masking Experiment](http://codepen.io/noeldelgado/pen/ByxQjL) - - : Une machine à rayons X, créée en utilisant un calque SVG. + - : Une machine à rayons X, créée en utilisant un calque SVG. - [Realistic Water Simulation](https://www.shadertoy.com/view/Ms2SD1) - : De l'eau en mouvement, comme les vagues d'un océan. - [Dungeon demo](http://www.haxor.xyz/demos/1.0/dungeon/) @@ -114,7 +114,7 @@ Cette page liste un grand nombre de démos de technologies web impressionnantes - [Flight Stream](https://callumprentice.github.io/apps/flight_stream/index.html) - : Globe en 3D avec des itinéraires d'avions simulés. - [WebGL filters](http://pixelscommander.com/polygon/htmlgl/demo/filters.html) - - : Démo montrant comment WebGL peut être utilisé pour ajouter des effets à des éléments HTML. + - : Démo montrant comment WebGL peut être utilisé pour ajouter des effets à des éléments HTML. - [SVG isometic tiles](http://codepen.io/AshKyd/pen/zxmgzV) - : Génère des tuiles isométriques avec une matrice SVG. - [ThreeJS App Player](https://jsfiddle.net/jetienne/rkth90c9/) diff --git a/files/fr/games/introduction/index.md b/files/fr/games/introduction/index.md index ab1da728d2..34ec1c9de6 100644 --- a/files/fr/games/introduction/index.md +++ b/files/fr/games/introduction/index.md @@ -13,7 +13,7 @@ original_slug: Jeux/Introduction {{IncludeSubnav("/fr/docs/Jeux")}} -Le Web d'aujourd'hui est désormais une plate-forme viable pour créer des jeux époustouflants et de bonne qualité, mais aussi et surtout pour distribuer ces jeux. Imaginez tous les jeux qui peuvent être créés... +Le Web d'aujourd'hui est désormais une plate-forme viable pour créer des jeux époustouflants et de bonne qualité, mais aussi et surtout pour distribuer ces jeux. Imaginez tous les jeux qui peuvent être créés... Grâce aux technologies web actuelles et aux navigateurs récents, il est tout à fait possible de créer un jeu excellent pour le Web. Et nous ne parlons pas ici de jeux de cartes ou de jeux sociaux multi-joueurs déjà créés il y a longtemps, avec Flash®, mais bien de jeux de tirs en 3D, de RPG etc. Grâce aux améliorations des performances des compilateurs juste-à-temps [JavaScript](/fr/docs/JavaScript "/fr/docs/JavaScript") et aux nouvelles APIs, vous pouvez construire des jeux vidéo qui fonctionnent dans un navigateur (ou sur des plateformes HTML5 comme [Firefox OS](/fr/docs/Mozilla/Firefox_OS "/fr/docs/Mozilla/Firefox_OS")) sans compromettre les performances. @@ -41,7 +41,7 @@ En tant que développeur de jeux vidéo, que vous soyez seul ou fassiez partie d 1. La portée du Web est phénoménale : il est partout. Les jeux construits avec HTML5 peuvent fonctionner sur les smartphones, les tablettes, les PCs et les télévisions connectées. 2. La visibilité de votre jeu et le marketing en sont améliorés. En effet, la promotion de votre jeu n'est pas limitée à un "app store" _(magasin d'applications)_ maîtrisé par quelqu'un d'autre. Vous pouvez tout à fait promouvoir et faire la publicité de votre jeu sur le Web lui-même comme sur d'autres médias. Les liens, les partages effectués sur le Web sont autant d'avantages pour atteindre de nouveaux utilisateurs. -3. Vous disposez d'un contrôle à un endroit important : les paiements. Il n'est pas nécessaire pour vous de reverser 30% de vos revenus à  d'autres simplement parce que votre jeu fait partie de leur écosystème. Vous pouvez décider de votre propre politique tarifaire et utiliser le service de paiement que vous voulez. +3. Vous disposez d'un contrôle à un endroit important : les paiements. Il n'est pas nécessaire pour vous de reverser 30% de vos revenus à d'autres simplement parce que votre jeu fait partie de leur écosystème. Vous pouvez décider de votre propre politique tarifaire et utiliser le service de paiement que vous voulez. 4. Le contrôle, encore. Vous pouvez mettre à jour votre jeu dès que vous le souhaitez. Vous n'avez pas à attendre l'approbation de quelqu'un d'une autre entreprise décidant si oui ou non tel ou tel correctif sera livré aujourd'hui ou demain. 5. L'analytique. Plutôt que de vous reposer sur des décisions et influences externes quant aux données dont vous avez besoin, vous pouvez collecter les statistiques que vous voulez, ou bien utiliser un outil analytique tiers de votre choix afin de mesurer les ventes et la portée de votre jeu. 6. Vous pouvez gérer la relation clientèle de façon plus directe, sans que les retours des clients soient limités aux mécanismes d'un magasin d'application. Soyez directement au contact de vos clients, sans intermédiaire. diff --git a/files/fr/games/introduction_to_html5_game_development/index.md b/files/fr/games/introduction_to_html5_game_development/index.md index 4c42097aa4..5b9c3b69e6 100644 --- a/files/fr/games/introduction_to_html5_game_development/index.md +++ b/files/fr/games/introduction_to_html5_game_development/index.md @@ -26,11 +26,11 @@ original_slug: Jeux/Introduction_to_HTML5_Game_Gevelopment_(summary) | **Fonction** | Technologie | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Audio** | [Web Audio API](/fr/docs/Web/API/Web_Audio_API) | -| **Graphique** | [WebGL](/fr/docs/Web/API/WebGL_API) ([OpenGL ES](http://www.khronos.org/opengles/ "http://www.khronos.org/opengles/") 2.0) | +| **Graphique** | [WebGL](/fr/docs/Web/API/WebGL_API) ([OpenGL ES](http://www.khronos.org/opengles/ "http://www.khronos.org/opengles/") 2.0) | | **Input** | [Événements tactiles](/fr/docs/Web/Guide/DOM/Events/Touch_events), [Utiliser l'API Gamepad](/fr/docs/Web/Guide/API/Gamepad), capteurs de l'appareil , [L'API WebRTC](/fr/docs/Web/API/WebRTC_API), [Utiliser le mode plein écran](/fr/docs/Web/Guide/DOM/Using_full_screen_mode), [Pointer Lock API](/fr/docs/WebAPI/Pointer_Lock) | -| **Language** | [JavaScript](/fr/docs/JavaScript "/fr/docs/JavaScript") (ou C/C++  utilisant [Emscripten](https://github.com/kripken/emscripten/wiki "https://github.com/kripken/emscripten/wiki") pour compiler en JavaScript ) | +| **Language** | [JavaScript](/fr/docs/JavaScript "/fr/docs/JavaScript") (ou C/C++ utilisant [Emscripten](https://github.com/kripken/emscripten/wiki "https://github.com/kripken/emscripten/wiki") pour compiler en JavaScript ) | | **Networking** | [WebRTC](/fr/docs/WebRTC "/fr/docs/WebRTC") et/ou [WebSockets](/fr/docs/Web/API/WebSockets_API) | -| **Stockage** | [IndexedDB](/fr/docs/Web/API/API_IndexedDB)  ou le "cloud" | +| **Stockage** | [IndexedDB](/fr/docs/Web/API/API_IndexedDB) ou le "cloud" | | **Web** | [HTML](/fr/docs/Web/HTML), [CSS](/fr/docs/Web/CSS), [SVG](/fr/docs/Web/SVG), [Social API](/fr/docs/Social_API "/fr/docs/Social_API") ( et beaucoup plus! ) | - [API plein écran](/fr/docs/DOM/Using_fullscreen_mode "/fr/docs/DOM/Using_fullscreen_mode") diff --git a/files/fr/games/techniques/2d_collision_detection/index.md b/files/fr/games/techniques/2d_collision_detection/index.md index 2cdee32e6a..38f2b5d916 100644 --- a/files/fr/games/techniques/2d_collision_detection/index.md +++ b/files/fr/games/techniques/2d_collision_detection/index.md @@ -13,7 +13,7 @@ translation_of: Games/Techniques/2D_collision_detection {{IncludeSubnav("/fr/docs/Jeux")}} -Les algorithmes de détection de collisions dans les jeux en 2 dimensions dépendent de la forme des objets à détecter (par exemple : rectangle contre rectangle, cercle contre rectangle, cercle contre cercle…). Habituellement, il est préférable d’utiliser une forme générique appelée masque de collision (« *hitbox* ») qui couvrira l’entité. Ainsi, les collisions ne seront pas assurées au pixel près mais cela permettra d’avoir de bonnes performances pour un grand nombre d’entités à tester. +Les algorithmes de détection de collisions dans les jeux en 2 dimensions dépendent de la forme des objets à détecter (par exemple : rectangle contre rectangle, cercle contre rectangle, cercle contre cercle…). Habituellement, il est préférable d’utiliser une forme générique appelée masque de collision (« *hitbox* ») qui couvrira l’entité. Ainsi, les collisions ne seront pas assurées au pixel près mais cela permettra d’avoir de bonnes performances pour un grand nombre d’entités à tester. Cet article donne un résumé des techniques les plus utilisées pour la détection des collisions dans les jeux en deux dimensions. @@ -26,9 +26,9 @@ var rect1 = {x: 5, y: 5, width: 50, height: 50} var rect2 = {x: 20, y: 10, width: 10, height: 10} if (rect1.x < rect2.x + rect2.width && -   rect1.x + rect1.width > rect2.x && -   rect1.y < rect2.y + rect2.height && -   rect1.height + rect1.y > rect2.y) { + rect1.x + rect1.width > rect2.x && + rect1.y < rect2.y + rect2.height && + rect1.height + rect1.y > rect2.y) { // collision détectée ! } @@ -67,25 +67,25 @@ if (distance < circle1.radius + circle2.radius) { Cet algorithme permet de détecter une collision entre deux polygones _convexes_. Cet algorithme est plus compliqué à implémenter que les deux précédents mais il est bien plus puissant. La complexité d’un tel algorithme induit de prendre en considération l’optimisation des performances (voir section suivante). -L’implémentation de cet algorithme est hors de propos sur cette page, nous vous conseillons les articles suivants : +L’implémentation de cet algorithme est hors de propos sur cette page, nous vous conseillons les articles suivants : -1. [Separating Axis Theorem (SAT) explanation](http://www.sevenson.com.au/actionscript/sat/) ; -2. [(Anglais) Collision detection and response (en)](http://www.metanetsoftware.com/technique/tutorialA.html) ; -3. [Collision detection Using the Separating Axis Theorem (en)](http://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169) ; -4. [SAT (Separating Axis Theorem) (en)](http://www.codezealot.org/archives/55) ; +1. [Separating Axis Theorem (SAT) explanation](http://www.sevenson.com.au/actionscript/sat/) ; +2. [(Anglais) Collision detection and response (en)](http://www.metanetsoftware.com/technique/tutorialA.html) ; +3. [Collision detection Using the Separating Axis Theorem (en)](http://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169) ; +4. [SAT (Separating Axis Theorem) (en)](http://www.codezealot.org/archives/55) ; 5. [Separation of Axis Theorem (SAT) for Collision Detection (en)](http://rocketmandevelopment.com/blog/separation-of-axis-theorem-for-collision-detection/). ## Performances -Alors que la plupart de ces algorithmes de détection de collision sont très simples à calculer, cela peut être une perte de ressources de tester _chaque entité_ avec les autres entités. Habituellement les jeux découpent les collisions en deux phases : large (« *broad* ») et étroite (« *narrow* »). +Alors que la plupart de ces algorithmes de détection de collision sont très simples à calculer, cela peut être une perte de ressources de tester _chaque entité_ avec les autres entités. Habituellement les jeux découpent les collisions en deux phases : large (« *broad* ») et étroite (« *narrow* »). ### Phase large -La phase large sert à récupérer une liste d’entités qui _pourraient_ entrer en collision. Cela peut être facilement implémenté avec une structure de données spaciale qui vous donnera une meilleure idée d’où est situé chaque entité et de ce qui existe autour d’elle. Par exemple : +La phase large sert à récupérer une liste d’entités qui _pourraient_ entrer en collision. Cela peut être facilement implémenté avec une structure de données spaciale qui vous donnera une meilleure idée d’où est situé chaque entité et de ce qui existe autour d’elle. Par exemple : -- Les _Quad Trees_ (exemple : [JavaScript QuadTree Implementation (en)](http://blogs.adobe.com/digitalmedia/2011/03/javascript-quadtree-implementation/)) ; -- Les _R-Trees_ (voir [R-Tree sur Wikipedia.org (en)](http://en.wikipedia.org/wiki/R-tree)) ; -- Une « *hashmap* ». +- Les _Quad Trees_ (exemple : [JavaScript QuadTree Implementation (en)](http://blogs.adobe.com/digitalmedia/2011/03/javascript-quadtree-implementation/)) ; +- Les _R-Trees_ (voir [R-Tree sur Wikipedia.org (en)](http://en.wikipedia.org/wiki/R-tree)) ; +- Une « *hashmap* ». ### Phase étroite diff --git a/files/fr/games/techniques/3d_on_the_web/basic_theory/index.md b/files/fr/games/techniques/3d_on_the_web/basic_theory/index.md index e4074f5f75..609a2a98b6 100644 --- a/files/fr/games/techniques/3d_on_the_web/basic_theory/index.md +++ b/files/fr/games/techniques/3d_on_the_web/basic_theory/index.md @@ -23,22 +23,22 @@ La 3D est principalement basée sur la représentation de formes 3D dans l'espac ![](mdn-games-3d-coordinate-system.png) -WebGL utilise le système de coordonnées de droite — l'axe x pointe vers la droite, l'axe y vers le haut et l'axe z dans la profondeur, comme shématisé ci-dessus. +WebGL utilise le système de coordonnées de droite — l'axe x pointe vers la droite, l'axe y vers le haut et l'axe z dans la profondeur, comme shématisé ci-dessus. ## Objets -Differents types d'objets sont construits en utilisant les sommets. Un Sommet (Vertex) est un point dans l'espace ayant sa propre position 3D dans le système de coordonnées et souvent quelques informations supplémentaires qui le définissent. Chaque sommet est décrit par ces attributs : +Differents types d'objets sont construits en utilisant les sommets. Un Sommet (Vertex) est un point dans l'espace ayant sa propre position 3D dans le système de coordonnées et souvent quelques informations supplémentaires qui le définissent. Chaque sommet est décrit par ces attributs : -- **Position** : L'identifie dans un espace 3D (`x`, `y`, `z`). -- **Color** (Couleur) : Prend une valeur RVBA (R, V et B pour le Rouge, Vert et Bleu, A (alpha) pour l'opacité — toutes les valeurs comprises entre 0.0 et 1.0) -- **Normal :**  Une manière de décrire la direction à laquelle fait face le sommet. +- **Position** : L'identifie dans un espace 3D (`x`, `y`, `z`). +- **Color** (Couleur) : Prend une valeur RVBA (R, V et B pour le Rouge, Vert et Bleu, A (alpha) pour l'opacité — toutes les valeurs comprises entre 0.0 et 1.0) +- **Normal :** Une manière de décrire la direction à laquelle fait face le sommet. - **Texture** : Une image 2D que le sommet peut utiliser pour décorer la surface dont il fait partie à la place d'une simple couleur. -Vous pouvez faire de la géométrie en utilisant ces informations — voici l'exemple d'un cube : +Vous pouvez faire de la géométrie en utilisant ces informations — voici l'exemple d'un cube : ![Cube](mdn-games-3d-cube.png) -Une face de la forme donnée est un plan entre des sommets. Par exemple, un cube a 8 différents sommets (points dans l'espace) et 6 différentes faces, chacune construite à partir de 4 sommets. Une norme définit de quelle manière la face est orientée. De plus, en connectant les points, on crée les arêtes du cube.La géométrie est basée sur les sommets et les faces, où le matériau est une texture, utilisant une couleur ou une image. Si l'on connecte la géométrie avec le matériau, on obtient une maille (mesh) +Une face de la forme donnée est un plan entre des sommets. Par exemple, un cube a 8 différents sommets (points dans l'espace) et 6 différentes faces, chacune construite à partir de 4 sommets. Une norme définit de quelle manière la face est orientée. De plus, en connectant les points, on crée les arêtes du cube.La géométrie est basée sur les sommets et les faces, où le matériau est une texture, utilisant une couleur ou une image. Si l'on connecte la géométrie avec le matériau, on obtient une maille (mesh) ## Rendu des tuyaux (_pipeline_) @@ -48,11 +48,11 @@ Le rendu des tuyaux est un procédé avec lequel les images sont préparées et Terminologie utilisée dans le diagramme ci-dessus : -- Une **Primitive** : Une source pour le tuyau — construite à partir de sommets et peut être un triangle, un point ou une ligne. -- Un **Fragment** : Une projection 3D d'un pixel, qui a les mêmes attributs qu'un pixel. -- Un **Pixel** : Un point sur l'écran arrangé sur une grille 2D, qui prend une couleur RVBA. +- Une **Primitive** : Une source pour le tuyau — construite à partir de sommets et peut être un triangle, un point ou une ligne. +- Un **Fragment** : Une projection 3D d'un pixel, qui a les mêmes attributs qu'un pixel. +- Un **Pixel** : Un point sur l'écran arrangé sur une grille 2D, qui prend une couleur RVBA. -Le traitement des sommets et des fragments est programmable — vous pouvez [écrire vos propres shaders](/fr/docs/Games/Techniques/3D_on_the_web/GLSL_Shaders) qui manipulent le rendu. +Le traitement des sommets et des fragments est programmable — vous pouvez [écrire vos propres shaders](/fr/docs/Games/Techniques/3D_on_the_web/GLSL_Shaders) qui manipulent le rendu. ## Traitement de sommet @@ -60,11 +60,11 @@ Le traitement de sommet consiste à combiner les informations à propos de chaqu ![](mdn-games-3d-vertex-processing.png) -Il y a 4 étapes dans ce traitement : la première implique d'arranger les objets dans le monde, elle est appelée la **transformation du modèle**. Ensuite, il y a la **transformation de la vue**, qui prend soin de positionner et de régler l'orientation de la caméra dans l'espace 3D. La caméra a 3 paramètres — position, direction et orientation — qui doivent être définis pour la scène nouvellement créée. +Il y a 4 étapes dans ce traitement : la première implique d'arranger les objets dans le monde, elle est appelée la **transformation du modèle**. Ensuite, il y a la **transformation de la vue**, qui prend soin de positionner et de régler l'orientation de la caméra dans l'espace 3D. La caméra a 3 paramètres — position, direction et orientation — qui doivent être définis pour la scène nouvellement créée. ![Camera](mdn-games-3d-camera.png) -La **transformation de la projection** (aussi appelée transformation de la perspective) définit ensuite les réglages de la caméra. Elle définit ce qui peut être vu par la caméra — la configuration inclut le champ de vision, le ratio d'aspect, et éventuellement les plans proches et éloignés. Lisez le [paragraphe sur la Caméra](/fr/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js#Camera) dans l'article de Three.js pour en savoir plus. +La **transformation de la projection** (aussi appelée transformation de la perspective) définit ensuite les réglages de la caméra. Elle définit ce qui peut être vu par la caméra — la configuration inclut le champ de vision, le ratio d'aspect, et éventuellement les plans proches et éloignés. Lisez le [paragraphe sur la Caméra](/fr/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js#Camera) dans l'article de Three.js pour en savoir plus. ![](mdn-games-3d-camera-settings.png) @@ -76,7 +76,7 @@ La rastérisation convertit les primitives (des sommets reliés) à un ensemble ![](mdn-games-3d-rasterization.png) -Ces fragments — qui sont des projections 3D de pixels 2D — sont alignés sur la grille de pixels, donc éventuellement ils peuvent être affichés comme des pixels sur un écran 2D durant la phase de fusion du résultat. +Ces fragments — qui sont des projections 3D de pixels 2D — sont alignés sur la grille de pixels, donc éventuellement ils peuvent être affichés comme des pixels sur un écran 2D durant la phase de fusion du résultat. ## Traitement de fragment @@ -86,13 +86,13 @@ Le traitement de fragment se concentre sur les textures et les lumières — il ### Textures -Les textures sont des images 2D utilisées dans l'espace 3D pour faire que les objets rendent mieux et paraissent plus réalistes. Les textures sont combinées à partir de simples éléments de texture appelés texels, de la même manière que les images sont combinées à partir de pixels. Appliquer des textures sur des objets durant le traitement des fragments, vous permet de l'ajuster en lui donnant une enveloppe ou des filtres si nécessaire. +Les textures sont des images 2D utilisées dans l'espace 3D pour faire que les objets rendent mieux et paraissent plus réalistes. Les textures sont combinées à partir de simples éléments de texture appelés texels, de la même manière que les images sont combinées à partir de pixels. Appliquer des textures sur des objets durant le traitement des fragments, vous permet de l'ajuster en lui donnant une enveloppe ou des filtres si nécessaire. L'habillage de texture permet de répéter l'image 2D autour de l'objet 3D. Le filtrage de texture est appliqué lorsque la résolution d'origine ou l'image de texture est différente du fragment affiché — elle sera réduite ou agrandie en conséquence. ### Lumières -Les couleurs que nous voyons sur l'écran sont le résultat d'une source de lumière intéragissant avec la couleur à la surface des matériaux des objets. La lumière peut être absorbée ou réfléchie. Le **modèle de lumière Phong** standard implémenté dans WebGL a 4 types de base de lumière : +Les couleurs que nous voyons sur l'écran sont le résultat d'une source de lumière intéragissant avec la couleur à la surface des matériaux des objets. La lumière peut être absorbée ou réfléchie. Le **modèle de lumière Phong** standard implémenté dans WebGL a 4 types de base de lumière : - **Diffuse** _(diffusion)_ : Une lumière directionnelle distante, comme le Soleil. - **Specular** _(Particulier)_ : Un point de lumière, comme un bulle de lumière dans une pièce ou un flash. diff --git a/files/fr/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/index.md b/files/fr/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/index.md index 588289c009..3143678cee 100644 --- a/files/fr/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/index.md +++ b/files/fr/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/index.md @@ -23,7 +23,7 @@ translation_of: Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Pla PlayCanvas a publié quelques démos populaires présentant ses fonctionnalités. - [Tanx](http://playcanv.as/p/aP0oxhUr) est un jeu de char multijoueur dans lequel vous pouvez conduire votre char, en tirant sur d'autres joueurs au fur et à mesure. -- [Swooop](http://playcanv.as/p/JtL2iqIH)  est un jeu de vol où vous pilotez votre avion autour d'une île magique tout en collectant des bijoux et du carburant. +- [Swooop](http://playcanv.as/p/JtL2iqIH) est un jeu de vol où vous pilotez votre avion autour d'une île magique tout en collectant des bijoux et du carburant. - Des visualisations comme the [Star Lord](http://playcanv.as/b/FQbBsJTd) et [BMW i8](http://playcanv.as/p/RqJJ9oU9) mettent également en valeur les possibilités du moteur. ![](playcanvas-demos.png) @@ -38,7 +38,7 @@ Le moteur peut lui même être utilisé comme une bibliotheque standard en inclu Conçu pour les navigateurs modernes, PlayCanvas est un moteur de jeu 3D complet intégrant le chargement de ressources, un système d'entité et de composants, une manipulation avancée des graphismes, un moteur de collision et de physique (conçu avec [ammo.js](https://github.com/kripken/ammo.js/)), la gestion du son et des simplifications pour la gestion des entrées de nombreux dispositifs (y compris les manettes de jeu). C'est une liste assez impressionnante de sonctionnalités — observez-en quelques-unes en action en consultant la rubrique [Conception d'une démo de base avec PlayCanvas](/fr/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas/engine) pour plus de détails. -## Éditeur PlayCanvas  +## Éditeur PlayCanvas Au lieu de tout coder à parir de zéro, vous pouvez également utiliser l'éditeur en ligne. Cela peut être un environnement de travail plus agréable si vous n'êtes pas très orienté codage. Voici la [construction d'une démo de base avec l'éditeur de PlayCanvas](/fr/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas/editor) pour plus de détails. diff --git a/files/fr/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md b/files/fr/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md index 9cca38137f..44d4b8acce 100644 --- a/files/fr/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md +++ b/files/fr/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md @@ -5,7 +5,7 @@ translation_of: Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Thr --- {{GamesSidebar}} -Une scène 3D  dans un jeu - même la plus simple - contient des éléments standard comme des formes situées dans un système de coordonnées, une caméra pour les voir réellement, des lumières et des matériaux pour amelioré son esthétique, des animations pour la rendre vivante, etc. **Three.js**, comme avec toute autre bibliothèque 3D, fournit des fonctions d'assistance intégrées pour vous aider à implémenter plus rapidement les fonctionnalités 3D courantes. Dans cet article, nous vous expliquerons les bases de l'utilisation de Three, notamment la configuration d'un environnement de développement, la structuration du code HTML nécessaire, les objets fondamentaux de Three et la manière de créer une démonstration de base. +Une scène 3D dans un jeu - même la plus simple - contient des éléments standard comme des formes situées dans un système de coordonnées, une caméra pour les voir réellement, des lumières et des matériaux pour amelioré son esthétique, des animations pour la rendre vivante, etc. **Three.js**, comme avec toute autre bibliothèque 3D, fournit des fonctions d'assistance intégrées pour vous aider à implémenter plus rapidement les fonctionnalités 3D courantes. Dans cet article, nous vous expliquerons les bases de l'utilisation de Three, notamment la configuration d'un environnement de développement, la structuration du code HTML nécessaire, les objets fondamentaux de Three et la manière de créer une démonstration de base. > **Note :** Nous avons choisi Three car il s'agit de l'une des bibliothèques WebGL les plus populaires, et il est facile de commencer. Nous n'essayons pas de dire que c'est mieux que toute autre bibliothèque WebGL disponible, et vous devriez vous sentir libre d'essayer une autre bibliothèque, comme CopperLicht, GLGE ou PlayCanvas @@ -54,9 +54,9 @@ avant de poursuivre copier se code dans un fichier nommé index.html. ## Renderer ou Moteur de rendue -un Moteur de rendue est un outil qui affiche les scénes directement dans votre navigateur.Il existe plusieur moteur different :WebGL est la valeur par défaut, vous pouvez utilisercanvas,SVG,CSS et DOM . ils différent dans la façons dont il gere le  rendu. Malgres leurs differences , l experience utilisateur sera la meme. +un Moteur de rendue est un outil qui affiche les scénes directement dans votre navigateur.Il existe plusieur moteur different :WebGL est la valeur par défaut, vous pouvez utilisercanvas,SVG,CSS et DOM . ils différent dans la façons dont il gere le rendu. Malgres leurs differences , l experience utilisateur sera la meme. -Grace à cette approche, une solution de secour peut etre  utilisée , si une technologie n'est pas prise en charge par le navigatueur. +Grace à cette approche, une solution de secour peut etre utilisée , si une technologie n'est pas prise en charge par le navigatueur. ```js var renderer = new THREE.WebGLRenderer({antialias:true}); @@ -103,7 +103,7 @@ Vous devez expérimenter ces valeurs et voir comment elles changent ce que vous ## Rendu de la scene -Tout est prêt, mais on ne voit toujours rien. Bien que nous ayons configuré le moteur de rendu, nous devons toujours effetué le rendu. Notre fonction render () fera ce travail, avec un peu d'aide de requestAnimationFrame (), ce qui fait que la scène sera  restituée sur chaque image: +Tout est prêt, mais on ne voit toujours rien. Bien que nous ayons configuré le moteur de rendu, nous devons toujours effetué le rendu. Notre fonction render () fera ce travail, avec un peu d'aide de requestAnimationFrame (), ce qui fait que la scène sera restituée sur chaque image: ```js function render() { @@ -157,7 +157,7 @@ We've now created a cube, using the geometry and material defined earlier. The l scene.add(cube); ``` -If you save, and refresh your Web browser, our object will now look like a square, because it's facing the camera. The good thing about objects, is that we can move them on the scene, however we want. For example, rotating and scaling as we like. Let's apply a little rotation to the cube, so we can see more than one face.  Again, adding our code below the previous: +If you save, and refresh your Web browser, our object will now look like a square, because it's facing the camera. The good thing about objects, is that we can move them on the scene, however we want. For example, rotating and scaling as we like. Let's apply a little rotation to the cube, so we can see more than one face. Again, adding our code below the previous: ```js cube.rotation.set(0.4, 0.2, 0); @@ -181,7 +181,7 @@ Now we will add more shapes to the scene, and explore other shapes, materials, l cube.position.x = -25; ``` -Now onto more shapes and materials. What might happen when you add a torus, wrapped in the Phong material? Try adding the following lines, just below the lines defining the cube. +Now onto more shapes and materials. What might happen when you add a torus, wrapped in the Phong material? Try adding the following lines, just below the lines defining the cube. ```js var torusGeometry = new THREE.TorusGeometry(7, 1, 6, 12); @@ -224,7 +224,7 @@ This looks a little boring though. In a game, something is usually happening. We ## Animation -We already used rotation, to adjust the position of the cube. We can also scale the shapes, or change their positions. To show animation, we need to make changes to these values inside the render loop, so they update on each frame. +We already used rotation, to adjust the position of the cube. We can also scale the shapes, or change their positions. To show animation, we need to make changes to these values inside the render loop, so they update on each frame. ### Rotation @@ -251,7 +251,7 @@ t += 0.01; torus.scale.y = Math.abs(Math.sin(t)); ``` -We use `Math.sin`, ending up with quite an interesting result. This scales the torus, repeating the process, as `sin` is a periodic function. We're wrapping the scale value in `Math.abs`, to pass the absolute values, greater or equal to 0. As sin is between -1 and 1,  negative values might render out torus in unexpected way. In this case it looks black half the time. +We use `Math.sin`, ending up with quite an interesting result. This scales the torus, repeating the process, as `sin` is a periodic function. We're wrapping the scale value in `Math.abs`, to pass the absolute values, greater or equal to 0. As sin is between -1 and 1, negative values might render out torus in unexpected way. In this case it looks black half the time. Now, onto movement. diff --git a/files/fr/games/techniques/3d_on_the_web/index.md b/files/fr/games/techniques/3d_on_the_web/index.md index 7d294a7a53..bb153d79cb 100644 --- a/files/fr/games/techniques/3d_on_the_web/index.md +++ b/files/fr/games/techniques/3d_on_the_web/index.md @@ -51,11 +51,11 @@ Il y a aussi la [construction d'une démo de base avec l'article A-Frame](/fr/do Le codage de WebGL brut est assez complexe, mais vous aurez envie de le maîtriser à long terme, car vos projets seront plus avancés (consultez notre [documentation WebGL](/fr/docs/Web/API/WebGL_API) pour commencer). Pour les projets de monde réel, vous utiliserez probablement aussi un "framework" pour accélérer le développement et vous aider à gérer le projet. L'utilisation d'un "framework" pour les jeux 3D permet également d'optimiser les performances, car les outils que vous utilisez vous permettent de vous concentrer sur la construction du jeu. -La bibliothèque 3D JavaScript la plus populaire est [Three.js](http://threejs.org/), un outil polyvalent qui rend les techniques 3D plus simples à implémenter. Il existe d'autres bibliothèques et cadres de développement de jeux populaires qui valent la peine d'être regardés ; [A-Frame](https://aframe.io), [PlayCanvas](https://playcanvas.com/) et [Babylon.js](http://www.babylonjs.com/) sont parmi les plus reconnaissables avec une documentation riche, des éditeurs en ligne et des communautés actives. +La bibliothèque 3D JavaScript la plus populaire est [Three.js](http://threejs.org/), un outil polyvalent qui rend les techniques 3D plus simples à implémenter. Il existe d'autres bibliothèques et cadres de développement de jeux populaires qui valent la peine d'être regardés ; [A-Frame](https://aframe.io), [PlayCanvas](https://playcanvas.com/) et [Babylon.js](http://www.babylonjs.com/) sont parmi les plus reconnaissables avec une documentation riche, des éditeurs en ligne et des communautés actives. ### Construction d'une démo de base avec A-Frame -A-Frame est un "framework" web pour construire des expériences 3D et de la réalité virtuelle. Sous le capot, il s'agit d'un "framework" three.js avec un modèle déclaratif entité-composant, ce qui signifie que nous pouvons construire des scènes avec seulement du HTML. Voir la page [Construction d'une démo de base avec A-Frame](/fr/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_A-Frame) pour le processus étape par étape de création de la démo . +A-Frame est un "framework" web pour construire des expériences 3D et de la réalité virtuelle. Sous le capot, il s'agit d'un "framework" three.js avec un modèle déclaratif entité-composant, ce qui signifie que nous pouvons construire des scènes avec seulement du HTML. Voir la page [Construction d'une démo de base avec A-Frame](/fr/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_A-Frame) pour le processus étape par étape de création de la démo . ### Construction d'une démo de base avec Babylon.js @@ -67,7 +67,7 @@ PlayCanvas est un moteur de jeu 3D WebGL populaire ouvert sur GitHub, avec un é ### Construction d'une démo de base avec Three.js -Three.js, comme toute autre bibliothèque, vous donne un énorme avantage : au lieu d'écrire des centaines de lignes de code WebGL pour construire quelque chose d'intéressant, vous pouvez utiliser des fonctions intégrées pour le faire beaucoup plus facilement et plus rapidement. Voir la page [Construction d'une démo de base avec Three.js](/fr/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js)  pour le processus étape par étape de création de la démo . +Three.js, comme toute autre bibliothèque, vous donne un énorme avantage : au lieu d'écrire des centaines de lignes de code WebGL pour construire quelque chose d'intéressant, vous pouvez utiliser des fonctions intégrées pour le faire beaucoup plus facilement et plus rapidement. Voir la page [Construction d'une démo de base avec Three.js](/fr/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js) pour le processus étape par étape de création de la démo . ### Autres outils diff --git a/files/fr/games/techniques/audio_for_web_games/index.md b/files/fr/games/techniques/audio_for_web_games/index.md index 8049e4ae04..9a5323ab2c 100644 --- a/files/fr/games/techniques/audio_for_web_games/index.md +++ b/files/fr/games/techniques/audio_for_web_games/index.md @@ -300,7 +300,7 @@ Regardons maintenant le code. Nous créons d'abord un nouveau {{domxref ("AudioC `start()` (anciennement appelé `noteOn ())` commence à lire un élément audio. `start ()` demande trois paramètres (facultatifs) : -1. when _(quand)_ : le temps absolu pour commencer la lecture . +1. when _(quand)_ : le temps absolu pour commencer la lecture . 2. where (offset) _(où)_ : la partie de l'audio qui doit commencer à être jouée. 3. how long _(combien de temps)_ : la durée pendant laquelle elle doit être jouée. @@ -316,7 +316,7 @@ Vous pouvez trouver que l'introduction d'une nouvelle piste sonne plus naturelle Pour ce faire, avant de jouer la piste que vous voulez synchroniser, vous devez calculer combien de temps cela va durer jusqu'au début de la prochaine unité musicale. -Voici un peu de code qui donne un tempo (le temps en secondes de votre battement / mesure), calcule combien de temps attendre pour jouer la partie suivante  — vous alimentez la valeur initiale de la fonction `start ()` avec le premier paramètre qui prend le temps absolu de début de la lecture. Notez que le deuxième paramètre (où commencer à jouer à partir de la nouvelle piste) est relatif : +Voici un peu de code qui donne un tempo (le temps en secondes de votre battement / mesure), calcule combien de temps attendre pour jouer la partie suivante — vous alimentez la valeur initiale de la fonction `start ()` avec le premier paramètre qui prend le temps absolu de début de la lecture. Notez que le deuxième paramètre (où commencer à jouer à partir de la nouvelle piste) est relatif : ```js if (offset == 0) { @@ -347,7 +347,7 @@ Nous pouvons relier : - la direction des objets (mouvement de position et génération de l'effet Doppler) - l'environnement (caverneux, sous-marin, etc.) -Ceci est particulièrement utile dans un environnement tridimensionnel rendu en utilisant [WebGL](/fr/docs/Web/API/WebGL_API), avec lequel l'API Web Audio permet d'associer l'audio aux objets et aux points de vue . +Ceci est particulièrement utile dans un environnement tridimensionnel rendu en utilisant [WebGL](/fr/docs/Web/API/WebGL_API), avec lequel l'API Web Audio permet d'associer l'audio aux objets et aux points de vue . > **Note :** Voir [Web Audio API Spatialization Basics](/fr/docs/Web/API/Web_Audio_API/Web_audio_spatialization_basics) _(Bases de la spacialisation de l'API Web Audio)_ pour plus de détails. diff --git a/files/fr/games/tools/asm.js/index.md b/files/fr/games/tools/asm.js/index.md index 5378455b1b..1d51a626ed 100644 --- a/files/fr/games/tools/asm.js/index.md +++ b/files/fr/games/tools/asm.js/index.md @@ -11,11 +11,11 @@ translation_of: Games/Tools/asm.js -C'est un sous-ensemble très petit et strict de JavaScript qui ne permet que des choses comme \`while\`,\` if\`, les nombres, les fonctions nommées de haut niveau et d'autres constructions simples. Cela n'autorise pas les objets, les chaînes, les fermetures, et tout ce qui nécessite une allocation de tas. Le code Asm.js ressemble à C de plusieurs façons, mais il reste toujours un JavaScript valide dans tous les moteurs actuels. Il pousse les moteurs JS à optimiser ce type de code et donne aux compilateurs comme Emascript une définition claire de ce type de code à générer. Nous allons montrer à quoi ressemble le code asm.js et expliquer comment il aide et comment vous pouvez l'utiliser. +C'est un sous-ensemble très petit et strict de JavaScript qui ne permet que des choses comme \`while\`,\` if\`, les nombres, les fonctions nommées de haut niveau et d'autres constructions simples. Cela n'autorise pas les objets, les chaînes, les fermetures, et tout ce qui nécessite une allocation de tas. Le code Asm.js ressemble à C de plusieurs façons, mais il reste toujours un JavaScript valide dans tous les moteurs actuels. Il pousse les moteurs JS à optimiser ce type de code et donne aux compilateurs comme Emascript une définition claire de ce type de code à générer. Nous allons montrer à quoi ressemble le code asm.js et expliquer comment il aide et comment vous pouvez l'utiliser. Ce sous-ensemble de JavaScript est déjà très optimisé dans de nombreux moteurs JavaScript utilisant des techniques de compilation Just-In-Time (JIT). Cependant, en définissant une norme explicite, nous pouvons travailler sur l'optimisation de ce type de code encore plus et obtenir autant de performance que possible. Il est plus facile de collaborer sur plusieurs moteurs JS car il est facile de parler et de comparer. L'idée est que ce type de code devrait fonctionner très rapidement dans chaque moteur, et si ce n'est pas le cas, c'est un bug et il existe une spécification claire pour laquelle les moteurs devraient optimiser. -Il permet également aux personnes d'écrire des compilateurs qui souhaitent générer un code performant sur le Web. Ils peuvent consulter la spécification asm.js et savoir qu'ils fonctionneront rapidement s'ils adhèrent aux modèles asm.js. [Emscripten](https://github.com/kripken/emscripten),  du C / C ++ au compilateur JavaScript, émet le code asm.js pour le faire fonctionner avec des performances proches natives sur plusieurs navigateurs. +Il permet également aux personnes d'écrire des compilateurs qui souhaitent générer un code performant sur le Web. Ils peuvent consulter la spécification asm.js et savoir qu'ils fonctionneront rapidement s'ils adhèrent aux modèles asm.js. [Emscripten](https://github.com/kripken/emscripten), du C / C ++ au compilateur JavaScript, émet le code asm.js pour le faire fonctionner avec des performances proches natives sur plusieurs navigateurs. En outre, si un moteur choisit de reconnaître spécialement le code asm.js, il existe encore plus d'optimisations qui peuvent être réalisées. Firefox est le seul navigateur à le faire maintenant. diff --git a/files/fr/games/tools/index.md b/files/fr/games/tools/index.md index 930b84358e..7dabccaa44 100644 --- a/files/fr/games/tools/index.md +++ b/files/fr/games/tools/index.md @@ -11,12 +11,12 @@ translation_of: Games/Tools --- {{GamesSidebar}}{{IncludeSubnav("/fr/docs/Games")}} -Sur cette page, vous trouverez des liens vers nos articles sur les outils de développement de jeux, qui visent à terme à couvrir les frameworks, les compilateurs et les outils de  débogage. +Sur cette page, vous trouverez des liens vers nos articles sur les outils de développement de jeux, qui visent à terme à couvrir les frameworks, les compilateurs et les outils de débogage. - [asm.js](/fr/docs/Games/Tools/asm.js) - : asm.js est un sous-ensemble très limité du langage JavaScript, qui peut être grandement optimisé et exécuté dans un moteur de compilation à l'avance (AOT) pour des performances beaucoup plus rapides que vos performances JavaScript typiques. C'est, bien sûr, idéal pour les jeux. - [Emscripten](https://github.com/kripken/emscripten/wiki "https://github.com/kripken/emscripten/wiki") - - : Un compilateur LLVM vers JavaScript; avec Emscripten, vous pouvez compiler C ++ et d'autres langages qui peuvent compiler en bytecode LLVM en JavaScript haute performance. C'est un excellent outil pour porter des applications sur le Web! Il existe un [tutoriel uitle Emscripten](https://github.com/kripken/emscripten/wiki/Tutorial) disponible sur le wiki. Notez que nous [visons à couvrir Emscripten dans sa propre section de MDN](/fr/docs/Emscripten). + - : Un compilateur LLVM vers JavaScript; avec Emscripten, vous pouvez compiler C ++ et d'autres langages qui peuvent compiler en bytecode LLVM en JavaScript haute performance. C'est un excellent outil pour porter des applications sur le Web! Il existe un [tutoriel uitle Emscripten](https://github.com/kripken/emscripten/wiki/Tutorial) disponible sur le wiki. Notez que nous [visons à couvrir Emscripten dans sa propre section de MDN](/fr/docs/Emscripten). - [Gecko profiler](https://addons.mozilla.org/en-us/firefox/addon/gecko-profiler/ "https://addons.mozilla.org/en-us/firefox/addon/gecko-profiler/") - : L'extension de profileur Gecko vous permet de profiler votre code pour vous aider à déterminer où se trouvent vos problèmes de performances afin que vous puissiez faire fonctionner votre jeu à une vitesse maximale. - [Moteurs de jeu et outils](/fr/docs/Games/Tools/Engines_and_tools) diff --git a/files/fr/games/tutorials/2d_breakout_game_phaser/index.md b/files/fr/games/tutorials/2d_breakout_game_phaser/index.md index f27cde10cf..4da8ade96e 100644 --- a/files/fr/games/tutorials/2d_breakout_game_phaser/index.md +++ b/files/fr/games/tutorials/2d_breakout_game_phaser/index.md @@ -12,7 +12,7 @@ Dans ce tutoriel étape par étape, nous créons un simple jeu mobile **MDN Brea Chaque étape a des échantillons modifiables, disponibles pour jouer avec, de sorte que vous pouvez voir à quoi devraient ressembler les étapes intermédiaires. Vous apprendrez les bases de l'utilisation du framework Phaser pour implémenter les mécanismes fondamentaux du jeu comme le rendu et le mouvement des images, la détection des collisions, les mécanismes de contrôle, les fonctions d'aide spécifiques aux cadres, les animations et les interpolations, les états gagnants et perdants. -Pour tirer le meilleur parti de cette série d'articles, vous devez déjà avoir des connaissances de base ou intermédiaires en [JavaScript](/fr/Learn/Getting_started_with_the_web/JavaScript_basics). Après avoir parcouru ce tutoriel, vous devriez être capable de construire vos propres jeux Web simples avec Phaser. +Pour tirer le meilleur parti de cette série d'articles, vous devez déjà avoir des connaissances de base ou intermédiaires en [JavaScript](/fr/Learn/Getting_started_with_the_web/JavaScript_basics). Après avoir parcouru ce tutoriel, vous devriez être capable de construire vos propres jeux Web simples avec Phaser. ![](mdn-breakout-phaser.png) @@ -37,11 +37,11 @@ Toutes les leçons - et les différentes versions du jeu [MDN Breakout game](htt 15. [Boutons](/fr/docs/Games/Workflows/2D_Breakout_game_Phaser/Buttons) 16. [Mode de jeu aléatoire](/fr/docs/Games/Workflows/2D_Breakout_game_Phaser/Randomizing_gameplay) -Comme note sur les parcours d'apprentissage — en commençant par le JavaScript pur est le meilleur moyen d'acquérir une solide connaissance du développement de jeux en ligne. Si vous n'êtes pas déjà familier avec le développement de jeux en JavaScript pur, nous vous suggérons de travailler d'abord avec l'homologue de cette série, [2D breakout game using pure JavaScript](/fr/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript). +Comme note sur les parcours d'apprentissage — en commençant par le JavaScript pur est le meilleur moyen d'acquérir une solide connaissance du développement de jeux en ligne. Si vous n'êtes pas déjà familier avec le développement de jeux en JavaScript pur, nous vous suggérons de travailler d'abord avec l'homologue de cette série, [2D breakout game using pure JavaScript](/fr/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript). Après cela, vous pouvez choisir n'importe quel framework que vous voulez et l'utiliser pour vos projets ; nous avons choisi Phaser car c'est un bon framework solide, avec un bon support et une communauté disponible, et un bon ensemble de plugins. Les cadres accélèrent le temps de développement et aident à prendre soin des parties ennuyeuses, vous permettant ainsi de vous concentrer sur les choses amusantes. Cependant, les frameworks ne sont pas toujours parfaits, donc si quelque chose d'inattendu se produit ou si vous voulez écrire des fonctionnalités que le framework ne fournit pas, vous aurez besoin de connaissances en JavaScript pur. -> **Note :** Cette série d'articles peut être utilisée comme matériel pour des ateliers pratiques de développement de jeux. Vous pouvez également utiliser la fonction [Gamedev Phaser Content Kit](https://github.com/end3r/Gamedev-Phaser-Content-Kit) basé sur ce tutoriel si vous voulez donner une conférence sur le développement d'un jeu avec Phaser. +> **Note :** Cette série d'articles peut être utilisée comme matériel pour des ateliers pratiques de développement de jeux. Vous pouvez également utiliser la fonction [Gamedev Phaser Content Kit](https://github.com/end3r/Gamedev-Phaser-Content-Kit) basé sur ce tutoriel si vous voulez donner une conférence sur le développement d'un jeu avec Phaser. ## Prochaines étapes diff --git a/files/fr/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.md b/files/fr/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.md index e0a0d0f3e4..8d6baba56e 100644 --- a/files/fr/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.md +++ b/files/fr/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.md @@ -20,7 +20,7 @@ original_slug: >- {{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Move_the_ball", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Paddle_et_contr%C3%B4le_clavier")}} -C'est la **3e étape sur** 10 de ce [tutoriel Gamedev Canvas](/fr/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript). Vous pouvez retrouver le code source de cette leçon sur [Gamedev-Canvas-workshop/lesson3.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson01.html). +C'est la **3e étape sur** 10 de ce [tutoriel Gamedev Canvas](/fr/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript). Vous pouvez retrouver le code source de cette leçon sur [Gamedev-Canvas-workshop/lesson3.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson01.html). C'est agréable de voir notre balle bouger, mais elle disparaît rapidement de l'écran, ce qui limite le plaisir que nous pouvons avoir avec elle ! Pour y pallier, nous allons mettre en place une détection de collision très simple (qui sera expliquée plus tard en détail) pour faire rebondir la balle sur les quatre bords de la toile. @@ -62,7 +62,7 @@ if(y + dy > canvas.height) { } ``` -Si la position en y de la balle est supérieure à  la hauteur du canvas (soit 480 pixels dans cette leçon) on inverse encore la vitesse de la balle. +Si la position en y de la balle est supérieure à la hauteur du canvas (soit 480 pixels dans cette leçon) on inverse encore la vitesse de la balle. On peut rassembler les deux conditions en une grâce au "ou" qui s'écrit || en JavaScript : diff --git a/files/fr/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.md b/files/fr/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.md index ab190b5bfc..4eda41525b 100644 --- a/files/fr/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.md +++ b/files/fr/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.md @@ -16,7 +16,7 @@ original_slug: Games/Workflows/2D_Breakout_game_pure_JavaScript/Build_the_brick_ {{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Game_over", "Games/Workflows/2D_Breakout_game_pure_JavaScript/detection_colisions")}} -Il s'agit de la **6ème étape** sur 10 du [Gamedev Canvas tutorial](/fr/docs/Games/Workflows/Breakout_game_from_scratch). Vous pouvez trouver le code source après avoir complété cette leçon à : [Gamedev-Canvas-workshop/lesson6.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson06.html). +Il s'agit de la **6ème étape** sur 10 du [Gamedev Canvas tutorial](/fr/docs/Games/Workflows/Breakout_game_from_scratch). Vous pouvez trouver le code source après avoir complété cette leçon à : [Gamedev-Canvas-workshop/lesson6.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson06.html). Après avoir modifié la mécanique du Gameplay, nous sommes maintenant en mesure de perdre. Et ça c'est top car on a enfin l'impression de jouer à un vrai jeu. Cependant, ça devient vite ennuyeux si la balle ne fait que rebondir sur la raquette. Ce dont a vraiment besoin un jeu de casse-brique c'est des briques à détruire avec la balle. Et c'est ce que nous allons faire maintenant. @@ -34,9 +34,9 @@ var brickOffsetTop = 30; var brickOffsetLeft = 30; ``` -Ici nous avons défini dans l'ordre le nombre de lignes et de colonnes de briques, mais également une hauteur, une largeur et un espacement (_padding_) entre les briques pour qu'elles ne se touchent pas entre elles et qu'elles ne commencent pas a être tracées sur le bord du canevas. +Ici nous avons défini dans l'ordre le nombre de lignes et de colonnes de briques, mais également une hauteur, une largeur et un espacement (_padding_) entre les briques pour qu'elles ne se touchent pas entre elles et qu'elles ne commencent pas a être tracées sur le bord du canevas. -Nous allons placer nos briques dans un tableau à deux dimensions. Il contiendra les colonnes de briques (c), qui à leur tour contiendront les lignes de briques (r) qui chacune contiendront un objet défini par une position `x` et `y` pour afficher chaque brique sur l'écran. +Nous allons placer nos briques dans un tableau à deux dimensions. Il contiendra les colonnes de briques (c), qui à leur tour contiendront les lignes de briques (r) qui chacune contiendront un objet défini par une position `x` et `y` pour afficher chaque brique sur l'écran. Ajoutez le code suivant juste en-dessous des variables : ```js @@ -71,16 +71,16 @@ function drawBricks() { } ``` -Une nouvelle fois, nous parcourons les colonnes et les lignes pour attribuer une position `x` et `y` à chaque brique, et nous dessinons les briques — de taille : `brickWidth` x `brickHeight`  — sur le canevas, pour chaque itération de la boucle. Le problème est que nous les affichons toutes au même endroit, aux coordonnées `(0,0)`. Ce dont nous avons besoin d'inclure ce sont quelques calculs qui vont définir la position `x` et `y` de chaque brique à chaque passage dans la boucle : +Une nouvelle fois, nous parcourons les colonnes et les lignes pour attribuer une position `x` et `y` à chaque brique, et nous dessinons les briques — de taille : `brickWidth` x `brickHeight` — sur le canevas, pour chaque itération de la boucle. Le problème est que nous les affichons toutes au même endroit, aux coordonnées `(0,0)`. Ce dont nous avons besoin d'inclure ce sont quelques calculs qui vont définir la position `x` et `y` de chaque brique à chaque passage dans la boucle : ```js var brickX = (c*(brickWidth+brickPadding))+brickOffsetLeft; var brickY = (r*(brickHeight+brickPadding))+brickOffsetTop; ``` -Chaque position `brickX` est déterminée par `brickWidth` + `brickPadding`, multiplié par le nombre de colonnes, `c`, plus `brickOffsetLeft`; la logique pour `brickY` est identique excepté qu'on utilise pour les ligne les valeurs `r`,`brickHeight` et `brickOffsetTop`. Maintenant chaque brique peut être dessinée à la bonne place - en lignes et colonnes, avec un espacement entre les briques, avec un espace par rapport à la gauche et au haut du contour du canvas. +Chaque position `brickX` est déterminée par `brickWidth` + `brickPadding`, multiplié par le nombre de colonnes, `c`, plus `brickOffsetLeft`; la logique pour `brickY` est identique excepté qu'on utilise pour les ligne les valeurs `r`,`brickHeight` et `brickOffsetTop`. Maintenant chaque brique peut être dessinée à la bonne place - en lignes et colonnes, avec un espacement entre les briques, avec un espace par rapport à la gauche et au haut du contour du canvas. -La version finale de la fonction `drawBricks()`, après avoir assigné les valeurs `brickX` et `brickY` comme coordonnées, plutot que `(0,0)` à chaque fois, va ressembler à ceci  — ajouter la fonction ci-dessous après `drawPaddle()` : +La version finale de la fonction `drawBricks()`, après avoir assigné les valeurs `brickX` et `brickY` comme coordonnées, plutot que `(0,0)` à chaque fois, va ressembler à ceci — ajouter la fonction ci-dessous après `drawPaddle()` : ```js function drawBricks() { @@ -102,7 +102,7 @@ function drawBricks() { ## Afficher les briques -La dernière chose à faire dans cette leçon est d'ajouter un appel à `drawBricks()` quelque part dans la fonction `draw()`, préférablement au début, entre le nettoyage du canevas et le dessin de la balle. Ajoutez la ligne suivante juste en dessous de `drawBall()` : +La dernière chose à faire dans cette leçon est d'ajouter un appel à `drawBricks()` quelque part dans la fonction `draw()`, préférablement au début, entre le nettoyage du canevas et le dessin de la balle. Ajoutez la ligne suivante juste en dessous de `drawBall()` : ```js drawBricks(); @@ -114,11 +114,11 @@ drawBricks(); {{JSFiddleEmbed("https://jsfiddle.net/yumetodo/t1zqmzLp/","","395")}} -Exercice : essayez de changer le nombre de briques dans une colonne ou dans une ligne ou bien leur position. +Exercice : essayez de changer le nombre de briques dans une colonne ou dans une ligne ou bien leur position. ## Prochaines étapes -Nous avons donc maintenant des briques !   +Nous avons donc maintenant des briques ! Mais la balle n'a toujours aucune interaction avec elles. Nous allons donc changer ça dans le chapitre sept : [Détection des collisions](/fr/docs/) {{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Game_over", "Games/Workflows/2D_Breakout_game_pure_JavaScript/detection_colisions")}} diff --git a/files/fr/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.md b/files/fr/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.md index f1d656f550..4ea2a5e1b8 100644 --- a/files/fr/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.md +++ b/files/fr/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.md @@ -15,7 +15,7 @@ original_slug: Games/Workflows/2D_Breakout_game_pure_JavaScript/detection_colisi {{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Build_the_brick_field", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win")}} -Il s'agit de la **7ème étape** sur 10 du [Gamedev Canvas tutorial](/fr/docs/Games/Workflows/Breakout_game_from_scratch). Vous pouvez trouver le code source tel qu'il devrait être après avoir complété cette leçon à : [Gamedev-Canvas-workshop/lesson7.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson07.html). +Il s'agit de la **7ème étape** sur 10 du [Gamedev Canvas tutorial](/fr/docs/Games/Workflows/Breakout_game_from_scratch). Vous pouvez trouver le code source tel qu'il devrait être après avoir complété cette leçon à : [Gamedev-Canvas-workshop/lesson7.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson07.html). Les briques apparaissent à l'écran, mais le jeu n'est toujours pas intéressant car la balle les traverse. Nous devons ajouter une détection des collisions afin qu’elle puisse rebondir sur les briques et les casser. @@ -58,7 +58,7 @@ function collisionDetection() { } ``` -Ajoutez le bloc ci-dessus à votre code, sous la fonction `keyUpHandler()` . +Ajoutez le bloc ci-dessus à votre code, sous la fonction `keyUpHandler()` . ## Faire disparaître les briques après qu'elles aient été touchées @@ -98,7 +98,7 @@ function drawBricks() { ## Suivi et mise à jour de l'état dans la fonction de détection de collision -Nous devons maintenant impliquer la propriété de `status` de brique dans la fonction `collisionDetection()`: si la brique est active (son statut est `1`), nous vérifierons si une collision a lieu ; Si une collision se produit, nous allons définir l'état de la brique donnée sur `0` afin qu'elle ne soit pas affichée à l'écran. Mettez à jour votre fonction `collisionDetection()` comme indiqué ci-dessous: +Nous devons maintenant impliquer la propriété de `status` de brique dans la fonction `collisionDetection()`: si la brique est active (son statut est `1`), nous vérifierons si une collision a lieu ; Si une collision se produit, nous allons définir l'état de la brique donnée sur `0` afin qu'elle ne soit pas affichée à l'écran. Mettez à jour votre fonction `collisionDetection()` comme indiqué ci-dessous: ```js function collisionDetection() { @@ -134,6 +134,6 @@ Exercice: changez la couleur de la balle lorsqu'elle frappe une brique. ## Prochaine étape -Nous ne sommes plus très loin de la fin ;  poursuivons ! Dans le huitième chapitre, nous verrons comment [Track the score and win](/fr/docs/Games/Workflows/Breakout_game_from_scratch/Track_the_score_and_win). +Nous ne sommes plus très loin de la fin ; poursuivons ! Dans le huitième chapitre, nous verrons comment [Track the score and win](/fr/docs/Games/Workflows/Breakout_game_from_scratch/Track_the_score_and_win). {{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Build_the_brick_field", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win")}} diff --git a/files/fr/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md b/files/fr/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md index 39debd17dd..7479830b59 100644 --- a/files/fr/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md +++ b/files/fr/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md @@ -19,13 +19,13 @@ original_slug: >- {{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Move_the_ball")}} -C'est la **1re étape sur** 10 de ce [tutoriel Gamedev Canvas](/fr/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript). Vous pouvez retrouver le code source de cette leçon sur [Gamedev-Canvas-workshop/lesson1.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson01.html). +C'est la **1re étape sur** 10 de ce [tutoriel Gamedev Canvas](/fr/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript). Vous pouvez retrouver le code source de cette leçon sur [Gamedev-Canvas-workshop/lesson1.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson01.html). -Avant d'écrire les fonctionnalités de notre jeu, nous devons créer une structure où le jeu sera rendu. C'est possible en utilisant HTML et l'élément {{htmlelement("canvas")}}. +Avant d'écrire les fonctionnalités de notre jeu, nous devons créer une structure où le jeu sera rendu. C'est possible en utilisant HTML et l'élément {{htmlelement("canvas")}}. ## La page HTML du jeu -La structure de la page HTML est vraiment simple, car tout le jeu sera contenu dans l'élément {{htmlelement("canvas")}}. Avec votre éditeur de texte préféré, créez un nouveau fichier HTML, sauvegardez-le sous le nom `index.html`, et ajoutez-y le code suivant : +La structure de la page HTML est vraiment simple, car tout le jeu sera contenu dans l'élément {{htmlelement("canvas")}}. Avec votre éditeur de texte préféré, créez un nouveau fichier HTML, sauvegardez-le sous le nom `index.html`, et ajoutez-y le code suivant : ```html @@ -50,18 +50,18 @@ La structure de la page HTML est vraiment simple, car tout le jeu sera contenu d ``` -Dans l'en-tête, nous avons défini l'encodage des caractères (`charset`), le titre  {{htmlelement("title")}} et quelques règles CSS très simples. Le corps contient les éléments {{htmlelement("canvas")}} et {{htmlelement("script")}}. L'élément {{htmlelement("canvas")}} contiendra le rendu du jeu et l'élément {{htmlelement("script")}} l'emplacement du code JavaScript pour contrôler le jeu. L'élément {{htmlelement("canvas")}} a un identifiant nommé `myCanvas` qui permettra de le retrouver facilement en JavaScript, et possède des dimensions de 480 pixels de longueur et 320 pixels de hauteur. Tout le code JavaScript que nous allons écrire dans ce tutoriel sera contenu entre la balise ouvrante ``. +Dans l'en-tête, nous avons défini l'encodage des caractères (`charset`), le titre {{htmlelement("title")}} et quelques règles CSS très simples. Le corps contient les éléments {{htmlelement("canvas")}} et {{htmlelement("script")}}. L'élément {{htmlelement("canvas")}} contiendra le rendu du jeu et l'élément {{htmlelement("script")}} l'emplacement du code JavaScript pour contrôler le jeu. L'élément {{htmlelement("canvas")}} a un identifiant nommé `myCanvas` qui permettra de le retrouver facilement en JavaScript, et possède des dimensions de 480 pixels de longueur et 320 pixels de hauteur. Tout le code JavaScript que nous allons écrire dans ce tutoriel sera contenu entre la balise ouvrante ``. ## Les bases de Canvas -Pour utiliser l'élément {{htmlelement("canvas")}}, pour le rendu graphique de notre jeu, nous devons d'abord en donner la référence à JavaScript. Ajoutez le code après la balise ouvrante `` est mauvais. - ne terminez pas votre écriture avec un retour chariot . `` est mauvais. `` est valide. - notez que l'écriture de balises équilibrées peut entraîner la déduction d'autres balises de telle manière que l'écriture est finalement déséquilibrée. Par exemple, `` à l'intérieur de l'élément d'en-tête sera interprété comme `` qui est déséquilibré. -- ne pas formater une partie de tableau. `
` est mauvais. Par contre, ` ` est valide. +- ne pas formater une partie de tableau. `
` est mauvais. Par contre, ` ` est valide. - À FAIRE : document.write inclus dans d'autres éléments de formatage. diff --git a/files/fr/glossary/sql/index.md b/files/fr/glossary/sql/index.md index 32aab1be1a..862418c35d 100644 --- a/files/fr/glossary/sql/index.md +++ b/files/fr/glossary/sql/index.md @@ -9,7 +9,7 @@ tags: translation_of: Glossary/SQL original_slug: Glossaire/SQL --- -**SQL** (Structured Query Language) est un langage normalisé pour mettre à jour, récupérer et calculer des données dans les tables d'une base de données. +**SQL** (Structured Query Language) est un langage normalisé pour mettre à jour, récupérer et calculer des données dans les tables d'une base de données. ## Pour approfondir diff --git a/files/fr/glossary/stun/index.md b/files/fr/glossary/stun/index.md index 01fc56d356..93c6094c50 100644 --- a/files/fr/glossary/stun/index.md +++ b/files/fr/glossary/stun/index.md @@ -10,7 +10,7 @@ tags: translation_of: Glossary/STUN original_slug: Glossaire/STUN --- -**STUN** (Session Traversal Utilities for NAT) est un protocole auxiliaire servant à transmettre des données dans un environnement avec du {{glossary("NAT")}} (Network Address Translator). STUN retourne l'{{glossary("IP address","adresse IP")}}, le {{glossary("port")}} et l'état de la connectivité d'un ordinateur en réseau derrière un NAT. +**STUN** (Session Traversal Utilities for NAT) est un protocole auxiliaire servant à transmettre des données dans un environnement avec du {{glossary("NAT")}} (Network Address Translator). STUN retourne l'{{glossary("IP address","adresse IP")}}, le {{glossary("port")}} et l'état de la connectivité d'un ordinateur en réseau derrière un NAT. ## Pour approfondir diff --git a/files/fr/glossary/svg/index.md b/files/fr/glossary/svg/index.md index a2cd1d6fa8..82afafbd8a 100644 --- a/files/fr/glossary/svg/index.md +++ b/files/fr/glossary/svg/index.md @@ -14,7 +14,7 @@ _Scalable Vector Graphics_ (**SVG**) est un format d'image vectorielle 2D basé Le {{Glossary("W3C")}} a commencé à travailler sur SVG à la fin des années 90, mais SVG n'est devenu populaire qu'avec la sortie d'{{Glossary("Microsoft Internet Explorer", "Internet Explorer")}} 9, supportant le SVG. Tous les principaux {{Glossary("navigateur","navigateurs")}} le prennent maintenant en charge. -Basé sur une syntaxe {{Glossary("XML")}}, SVG peut être stylé avec {{Glossary("CSS")}} et être rendu interactif grâce à {{Glossary("JavaScript")}}. HTML5 permet à présent d'intégrer directement des {{Glossary("Balise","balises")}} SVG au sein d'un document {{Glossary("HTML")}}. +Basé sur une syntaxe {{Glossary("XML")}}, SVG peut être stylé avec {{Glossary("CSS")}} et être rendu interactif grâce à {{Glossary("JavaScript")}}. HTML5 permet à présent d'intégrer directement des {{Glossary("Balise","balises")}} SVG au sein d'un document {{Glossary("HTML")}}. SVG étant un [format d'image vectorielle](http://fr.wikipedia.org/wiki/Image_vectorielle), les images SVG peuvent être redimensionnées à l'infini, ce qui les rend inestimables pour la {{Glossary("Responsive web design","conception web adaptative")}}, car elles permettent de créer des éléments d'interface qui s'adaptent à toutes les tailles d'écran. SVG fournit également un ensemble d'outils, comme du clipping, des masques, des filtres et des animations. diff --git a/files/fr/glossary/svn/index.md b/files/fr/glossary/svn/index.md index ecb0907c28..0809991219 100644 --- a/files/fr/glossary/svn/index.md +++ b/files/fr/glossary/svn/index.md @@ -8,7 +8,7 @@ tags: translation_of: Glossary/SVN original_slug: Glossaire/SVN --- -**SVN** (pour Apache Subversion) est un logiciel libre de gestion du contrôle de système  ({{Glossary("SCM")}}). Il permet aux développeurs de conserver un historique des modifications de texte et de code. Bien que SVN puisse également gérer les fichiers binaires, nous ne vous recommandons pas de l'utiliser pour de tels fichiers. +**SVN** (pour Apache Subversion) est un logiciel libre de gestion du contrôle de système ({{Glossary("SCM")}}). Il permet aux développeurs de conserver un historique des modifications de texte et de code. Bien que SVN puisse également gérer les fichiers binaires, nous ne vous recommandons pas de l'utiliser pour de tels fichiers. ## En apprendre plus diff --git a/files/fr/glossary/symbol/index.md b/files/fr/glossary/symbol/index.md index 2202be5034..7643448ff0 100644 --- a/files/fr/glossary/symbol/index.md +++ b/files/fr/glossary/symbol/index.md @@ -15,7 +15,7 @@ Le type de données "symbol" est un type de données primitif dont la qualité e Une valeur ayant le type de données "symbole" peut être appelée "valeur de symbole". Dans l'environnement d'exécution JavaScript, une valeur de symbole est créée en appelant la fonction Symbol (), qui produit de façon dynamique une valeur unique anonyme. La seule utilisation judicieuse est de stocker le symbole, puis d'utiliser la valeur stockée pour créer une propriété d'objet. L'exemple suivant stocke le symbole dans un "var". ```js -var myPrivateMethod = Symbol(); +var myPrivateMethod = Symbol(); this[myPrivateMethod] = function() {...}; ``` diff --git a/files/fr/glossary/syntax/index.md b/files/fr/glossary/syntax/index.md index 598f27bc9e..4ec0078016 100644 --- a/files/fr/glossary/syntax/index.md +++ b/files/fr/glossary/syntax/index.md @@ -10,7 +10,7 @@ original_slug: Glossaire/Syntaxe --- La syntaxe définit les séquences et combinaisons de {{Glossary("Character","caractères")}} requises pour créer du code correctement structuré. La syntaxe diffère d'un langage à l'autre (e.g., la syntaxe est différente en {{Glossary("HTML")}} et en {{Glossary("JavaScript")}}). La syntaxe s'applique à la fois aux langages de programmation (commandes données à l'ordinateur) et aux langages de balisage (informations sur la structure de documents). -La syntaxe ne gouverne que la structure et l'odre des instructions ; ces  dernières doivent aussi avoir une _signification_, ce qui est le domaine de la {{Glossary("Semantics","sémantique")}}. +La syntaxe ne gouverne que la structure et l'odre des instructions ; ces dernières doivent aussi avoir une _signification_, ce qui est le domaine de la {{Glossary("Semantics","sémantique")}}. La syntaxe du code doit être correcte pour qu'il puisse être {{Glossary("Compile","compilé")}}, dans le cas contraire, une {{Glossary("Syntax error","erreur de syntaxe")}} se produit. Même de petites erreurs, comme une parenthèse manquante, peut faire échouer la compilation du code source. diff --git a/files/fr/glossary/tag/index.md b/files/fr/glossary/tag/index.md index fe0610b7ac..8497cb29dd 100644 --- a/files/fr/glossary/tag/index.md +++ b/files/fr/glossary/tag/index.md @@ -8,7 +8,7 @@ tags: translation_of: Glossary/Tag original_slug: Glossaire/Balise --- -En {{Glossary("HTML")}} une balise est utilisée pour créer un {{Glossary("element")}}.  Le **nom** d'un élément HTML est le **nom** utilisé dans des chevrons comme par exemple \

pour un paragraphe.  Notez que le **nom** de la balise fermante est précédé par un caractère barre oblique, "\

", et que pour les éléments vides la balise de fin n'est pas nécessaire ni permise. Si les attributs ne sont pas mentionnés, les valeurs par défaut s'appliquent pour chaque cas. +En {{Glossary("HTML")}} une balise est utilisée pour créer un {{Glossary("element")}}. Le **nom** d'un élément HTML est le **nom** utilisé dans des chevrons comme par exemple \

pour un paragraphe. Notez que le **nom** de la balise fermante est précédé par un caractère barre oblique, "\

", et que pour les éléments vides la balise de fin n'est pas nécessaire ni permise. Si les attributs ne sont pas mentionnés, les valeurs par défaut s'appliquent pour chaque cas. ## **En savoir plus** diff --git a/files/fr/glossary/tcp_handshake/index.md b/files/fr/glossary/tcp_handshake/index.md index e60d4b36f2..4ea25001ee 100644 --- a/files/fr/glossary/tcp_handshake/index.md +++ b/files/fr/glossary/tcp_handshake/index.md @@ -6,7 +6,7 @@ tags: translation_of: Glossary/TCP_handshake original_slug: Glossaire/TCP_handshake --- -{{glossary('Transmission_Control_Protocol_(TCP)','TCP (Transmission Control Protocol)')}} est un protocole hôte à hôte de la couche transport permettant la communication en mode connexion entre deux ordinateurs sur un réseau IP. TCP utilise une **liaison à trois voies** (ou TCP-Handshake, trois messages ou **SYN-SYN-ACK**) pour établir une connexion TCP / IP sur un réseau IP : **SYN** pour synchronize et **ACK** pour acuittement. Les trois messages transmis par TCP pour négocier et démarrer une session TCP sont respectivement surnommés _SYN, SYN-ACK_ et *ACK:* **syn**chronize, **syn**chronize **ac**quittement, et **ac**quittement. Le mécanisme à trois messages est conçu pour que deux ordinateurs souhaitant échanger des informations puissent négocier les paramètres de la connexion avant de transmettre des données telles que des requêtes de navigateur HTTP. +{{glossary('Transmission_Control_Protocol_(TCP)','TCP (Transmission Control Protocol)')}} est un protocole hôte à hôte de la couche transport permettant la communication en mode connexion entre deux ordinateurs sur un réseau IP. TCP utilise une **liaison à trois voies** (ou TCP-Handshake, trois messages ou **SYN-SYN-ACK**) pour établir une connexion TCP / IP sur un réseau IP : **SYN** pour synchronize et **ACK** pour acuittement. Les trois messages transmis par TCP pour négocier et démarrer une session TCP sont respectivement surnommés _SYN, SYN-ACK_ et *ACK:* **syn**chronize, **syn**chronize **ac**quittement, et **ac**quittement. Le mécanisme à trois messages est conçu pour que deux ordinateurs souhaitant échanger des informations puissent négocier les paramètres de la connexion avant de transmettre des données telles que des requêtes de navigateur HTTP. L'hôte, généralement le navigateur, envoie un paquet TCP SYNchronize au serveur. Le serveur reçoit le SYN et renvoie un accusé de réception SYNchronize. L'hôte reçoit le SYN-ACK du serveur et envoie un acquittement. Le serveur reçoit ACK et la connexion de socket TCP est établie. diff --git a/files/fr/glossary/thread/index.md b/files/fr/glossary/thread/index.md index feda3e920d..8c39abdf3f 100644 --- a/files/fr/glossary/thread/index.md +++ b/files/fr/glossary/thread/index.md @@ -9,7 +9,7 @@ Le **[fil d'exécution principal](/fr/docs/Glossary/Main_thread)** est celui qui Cependant, le [JavaScript](/fr/docs/JavaScript) moderne offre plusieurs façons de créer des fils additionnels permettant de répartir indépendamment l'exécution tout en permettant à ces fils d'exécution de communiquer les uns avec les autres. Cela est faisable en utilisant des technologies telles que **[l'API web workers](/fr/docs/Web/API/Web_Workers_API)**, qui peut être utilisée pour lancer un sous-programme chargé de se lancer dans son propre fil, en parallèle du fil d'exécution principal. Cela préserve les performances d'ensemble du site ou de l'application, ainsi que plus généralement de l'ensemble du navigateur. Cela permet aussi aux internautes de profiter des avantages des processeurs multicœur modernes. -Il existe un type spécifique de worker, nommé **[service worker](/fr/docs/Web/API/Service_Worker_API)**, qui peut être créé – avec la permission de l'internaute – en arrière-plan afin d'exécuter des scripts alors même que la personne n'est pas connectée au site. C'est utilisé pour créer des sites capables de notifier l'internaute lorsque des choses se passent, même s'il n'est pas connecté activement au site. Cela permet par exemple d'indiquer à une personne le fait qu'elle a reçu un e-mail même si elle n'est pas connectée à son gestionnaire d'e-mails. +Il existe un type spécifique de worker, nommé **[service worker](/fr/docs/Web/API/Service_Worker_API)**, qui peut être créé – avec la permission de l'internaute – en arrière-plan afin d'exécuter des scripts alors même que la personne n'est pas connectée au site. C'est utilisé pour créer des sites capables de notifier l'internaute lorsque des choses se passent, même s'il n'est pas connecté activement au site. Cela permet par exemple d'indiquer à une personne le fait qu'elle a reçu un e-mail même si elle n'est pas connectée à son gestionnaire d'e-mails. Plus généralement, ces fils créés par le système d'exploitation sont extrêmement utiles. Ils aident à minimiser le temps de bascule entre les différents contextes de chaque application tournant sur l'ordinateur, et permettent une communication plus efficiente grâce à l'utilisation de l'architecture multiprocesseur des ordinateurs modernes. diff --git a/files/fr/glossary/time_to_interactive/index.md b/files/fr/glossary/time_to_interactive/index.md index 42fbd30048..ef4cfb5351 100644 --- a/files/fr/glossary/time_to_interactive/index.md +++ b/files/fr/glossary/time_to_interactive/index.md @@ -4,7 +4,7 @@ slug: Glossary/Time_to_interactive translation_of: Glossary/Time_to_interactive original_slug: Glossaire/Time_to_interactive --- -Le **Time to Interactive** (TTI) est une métrique non standardisée des performances web indiquant la « progression » du chargement. Elle correspond au moment où la dernière [tâche longue](/fr/docs/Web/API/Long_Tasks_API) s'est terminée et a été suivie de 5 secondes d'inactivité du réseau et du fil de chargement principal. +Le **Time to Interactive** (TTI) est une métrique non standardisée des performances web indiquant la « progression » du chargement. Elle correspond au moment où la dernière [tâche longue](/fr/docs/Web/API/Long_Tasks_API) s'est terminée et a été suivie de 5 secondes d'inactivité du réseau et du fil de chargement principal. Proposé par le Web Incubator Community Group en 2018, le **TTI** est destiné à fournir une métrique qui décrit quand une page ou une application contient un contenu utile et que le fil de chargement principal est inactif et libre de répondre aux interactions des internautes, y compris l'enregistrement des gestionnaires d'événements. @@ -20,7 +20,7 @@ TTI est calculé en exploitant les informations de l'API [Long Task (en anglais) -- Time to Interactive — focusing on human-centric metrics +- Time to Interactive — focusing on human-centric metrics par Radimir Bitsov diff --git a/files/fr/glossary/tld/index.md b/files/fr/glossary/tld/index.md index 27873437a1..4dbf1b2da3 100644 --- a/files/fr/glossary/tld/index.md +++ b/files/fr/glossary/tld/index.md @@ -13,7 +13,7 @@ Un domaine de premier niveau ou TLD (_top-level domain_) est le {{Glossary("doma L'{{Glossary("ICANN")}} (Internet Corporation for Assigned Names and Numbers) désigne des organisations pour gérer chaque TLD. En fonction des contraintes que peuvent imposer ces organisations d'administration, le TLD apporte souvent une indication sur le but, le propriétaire ou la nationalité d'un site web. Considérons par exemple l'adresse Internet : `https://developer.mozilla.org` -Ici,  org est le TLD ; mozilla.org est le nom de domaine de deuxième niveau ; et developer est un nom de sous-domaine. Ensemble, ces éléments constituent un nom de domaine pleinement qualifié ; l'ajout de https\:// permet d'obtenir une URL complète. +Ici, org est le TLD ; mozilla.org est le nom de domaine de deuxième niveau ; et developer est un nom de sous-domaine. Ensemble, ces éléments constituent un nom de domaine pleinement qualifié ; l'ajout de https\:// permet d'obtenir une URL complète. De nos jours, {{Glossary("IANA")}} divise les domaines de premier niveau en plusieurs groupes : diff --git a/files/fr/glossary/tofu/index.md b/files/fr/glossary/tofu/index.md index 54e18960ae..493679e249 100644 --- a/files/fr/glossary/tofu/index.md +++ b/files/fr/glossary/tofu/index.md @@ -10,7 +10,7 @@ original_slug: Glossaire/TOFU --- **Trust On First Use** **(TOFU**) (_confiance à la première utilisation_) est un modèle de sécurité dans lequel un client doit créer une relation avec un serveur inconnu. Pour ce faire, les clients rechercheront des identifiants (par exemple des clés publiques) stockés localement. Si un identifiant est trouvé, le client peut établir la connexion. Si aucun identifiant n'est trouvé, le client peut demander à l'utilisateur de déterminer si le client doit approuver l'identifiant. -TOFU est utilisé dans le protocole SSH, dans [HTTP Public Key Pinning](/fr/docs/Web/HTTP/Public_Key_Pinning) ({{Glossary("HPKP")}}) où les navigateurs accepteront la première clé publique renvoyée par le serveur et dans {{HTTPHeader("Strict-Transport-Security")}}  ({{Glossary("HSTS")}}) où un navigateur obéira à la règle de redirection. +TOFU est utilisé dans le protocole SSH, dans [HTTP Public Key Pinning](/fr/docs/Web/HTTP/Public_Key_Pinning) ({{Glossary("HPKP")}}) où les navigateurs accepteront la première clé publique renvoyée par le serveur et dans {{HTTPHeader("Strict-Transport-Security")}} ({{Glossary("HSTS")}}) où un navigateur obéira à la règle de redirection. ## En apprendre plus diff --git a/files/fr/glossary/tree_shaking/index.md b/files/fr/glossary/tree_shaking/index.md index 9f31e6f6cf..28f24485a6 100644 --- a/files/fr/glossary/tree_shaking/index.md +++ b/files/fr/glossary/tree_shaking/index.md @@ -11,15 +11,15 @@ original_slug: Glossaire/Tree_shaking Il repose sur les états [import](/fr/docs/Web/JavaScript/Reference/Instructions/import) et [export](/fr/docs/Web/JavaScript/Reference/Instructions/export) en ES6 pour détecter si les modules de code sont exportés et importés pour une utilisation entre des fichiers JavaScript. -Dans les applications JavaScript modernes, nous utilisons des gestionnaires de regroupements de modules (par exemple, [webpack](https://webpack.js.org/) ou [Rollup](https://github.com/rollup/rollup)) pour supprimer automatiquement le code mort lors du regroupement de plusieurs fichiers JavaScript dans des fichiers uniques. Ceci est important pour préparer un code prêt pour la production, par exemple avec des structures propres et une taille de fichier minimale. +Dans les applications JavaScript modernes, nous utilisons des gestionnaires de regroupements de modules (par exemple, [webpack](https://webpack.js.org/) ou [Rollup](https://github.com/rollup/rollup)) pour supprimer automatiquement le code mort lors du regroupement de plusieurs fichiers JavaScript dans des fichiers uniques. Ceci est important pour préparer un code prêt pour la production, par exemple avec des structures propres et une taille de fichier minimale. ## En apprendre plus ### Culture générale -- ["Benefits of dead code elimination during bundling"](http://exploringjs.com/es6/ch_modules.html#_benefit-dead-code-elimination-during-bundling) in Axel Rauschmayer's book: "Exploring JS: Modules" +- ["Benefits of dead code elimination during bundling"](http://exploringjs.com/es6/ch_modules.html#_benefit-dead-code-elimination-during-bundling) in Axel Rauschmayer's book: "Exploring JS: Modules" - {{Interwiki("wikipedia", "Réusinage_de_code#Suppression_du_code_mort","Suppression du code mort")}} sur Wikipédia ### Références techniques -- [Tree shaking implementation with webpack](https://webpack.js.org/guides/tree-shaking/) +- [Tree shaking implementation with webpack](https://webpack.js.org/guides/tree-shaking/) diff --git a/files/fr/glossary/trident/index.md b/files/fr/glossary/trident/index.md index 7adb312fb9..af7c52c963 100644 --- a/files/fr/glossary/trident/index.md +++ b/files/fr/glossary/trident/index.md @@ -9,7 +9,7 @@ tags: translation_of: Glossary/Trident original_slug: Glossaire/Trident --- -Trident (ou MSHTML) est un moteur de rendu qui fait fonctionner {{Glossary("Microsoft Internet Explorer","Internet Explorer")}}.  Un "{{Glossary("Fork","embranchement")}}" de Trident appelé _EdgeHTML_ a remplacé Trident dans le successeur d'Internet Explorer, {{Glossary("Microsoft Edge","Edge")}}. +Trident (ou MSHTML) est un moteur de rendu qui fait fonctionner {{Glossary("Microsoft Internet Explorer","Internet Explorer")}}. Un "{{Glossary("Fork","embranchement")}}" de Trident appelé _EdgeHTML_ a remplacé Trident dans le successeur d'Internet Explorer, {{Glossary("Microsoft Edge","Edge")}}. ## En apprendre plus diff --git a/files/fr/glossary/turn/index.md b/files/fr/glossary/turn/index.md index 3a7bf0cbb7..c26ec88d65 100644 --- a/files/fr/glossary/turn/index.md +++ b/files/fr/glossary/turn/index.md @@ -9,7 +9,7 @@ tags: translation_of: Glossary/TURN original_slug: Glossaire/TURN --- -**TURN** (Traversal Using Relays around NAT) est un {{Glossary("protocol","protocole")}} permettant à un ordinateur de recevoir et d'envoyer des données malgré l'utilisation de {{glossary("NAT", "translation d'adresse réseau")}} (NAT) ou le fait d'être derrière un pare-feu. +**TURN** (Traversal Using Relays around NAT) est un {{Glossary("protocol","protocole")}} permettant à un ordinateur de recevoir et d'envoyer des données malgré l'utilisation de {{glossary("NAT", "translation d'adresse réseau")}} (NAT) ou le fait d'être derrière un pare-feu. ## Pour approfondir diff --git a/files/fr/glossary/type/index.md b/files/fr/glossary/type/index.md index 694b81002a..b16ac91e21 100644 --- a/files/fr/glossary/type/index.md +++ b/files/fr/glossary/type/index.md @@ -9,7 +9,7 @@ tags: translation_of: Glossary/Type original_slug: Glossaire/Type --- -Le **type** (ou _type de donnée_) est une caractéristique d'une {{glossary("Value","valeur")}} qui détermine le genre de données qu'elle peut stocker - par exemple, en JavaScript, un  {{domxref("Boolean")}} ne contient que des valeurs true (_vrai_) / false (_faux_), alors qu'une {{domxref("String")}} _(chaîne de caractères)_ contient des chaînes de texte, un  {{domxref("Number")}} contient toute sorte de nombres, etc. +Le **type** (ou _type de donnée_) est une caractéristique d'une {{glossary("Value","valeur")}} qui détermine le genre de données qu'elle peut stocker - par exemple, en JavaScript, un {{domxref("Boolean")}} ne contient que des valeurs true (_vrai_) / false (_faux_), alors qu'une {{domxref("String")}} _(chaîne de caractères)_ contient des chaînes de texte, un {{domxref("Number")}} contient toute sorte de nombres, etc. Le type de données d'une valeur affecte également les opérations valides sur cette valeur. Par exemple, un entier peut être multiplié par un entier, mais pas par une chaîne de caractères. diff --git a/files/fr/glossary/type_coercion/index.md b/files/fr/glossary/type_coercion/index.md index 69df7772ac..5112370474 100644 --- a/files/fr/glossary/type_coercion/index.md +++ b/files/fr/glossary/type_coercion/index.md @@ -8,7 +8,7 @@ tags: translation_of: Glossary/Type_coercion original_slug: Glossaire/Type_coercion --- -La _type coercion_ (en français, coercition de type) est la conversion automatique ou implicite de valeurs d'un type de données à un autre (par exemple : de string à nombre). La *{{Glossary("type conversion")}}* est similaire à la *type coercion* puisque les deux convertissent des valeurs d'un type de données à un autre. La différence fondamentale entre elles est que la _type coercion_ est implicite alors que la _type conversion_ peut être implicite ou explicite. +La _type coercion_ (en français, coercition de type) est la conversion automatique ou implicite de valeurs d'un type de données à un autre (par exemple : de string à nombre). La *{{Glossary("type conversion")}}* est similaire à la *type coercion* puisque les deux convertissent des valeurs d'un type de données à un autre. La différence fondamentale entre elles est que la _type coercion_ est implicite alors que la _type conversion_ peut être implicite ou explicite. ## Exemples @@ -20,9 +20,9 @@ let somme = valeur1 + valeur2; console.log(somme); ``` -Dans l'exemple ci-dessus, Javascript a *coercé* le nombre `9` en une string, et a concaténé les deux valeurs, ce qui donne comme résultat la string `59`. JavaScript avait le choix entre une string et un nombre et a décidé d'utiliser une string. +Dans l'exemple ci-dessus, Javascript a *coercé* le nombre `9` en une string, et a concaténé les deux valeurs, ce qui donne comme résultat la string `59`. JavaScript avait le choix entre une string et un nombre et a décidé d'utiliser une string. -Le compilateur aurait pu coercer le `5` en un nombre et retourner la somme de `14`, mais ce n'est pas ce qu'il a fait. Pour pouvoir retourner `14`, il aurait fallu explicitement convertir le 5 en un nombre grâce à la méthode {{jsxref("Global_Objects/Number", "Number()")}}: +Le compilateur aurait pu coercer le `5` en un nombre et retourner la somme de `14`, mais ce n'est pas ce qu'il a fait. Pour pouvoir retourner `14`, il aurait fallu explicitement convertir le 5 en un nombre grâce à la méthode {{jsxref("Global_Objects/Number", "Number()")}}: ```js somme = Number(valeur1) + valeur2; diff --git a/files/fr/glossary/type_conversion/index.md b/files/fr/glossary/type_conversion/index.md index 9e27eda431..51a4ad3c7e 100644 --- a/files/fr/glossary/type_conversion/index.md +++ b/files/fr/glossary/type_conversion/index.md @@ -9,7 +9,7 @@ tags: translation_of: Glossary/Type_Conversion original_slug: Glossaire/Conversion_de_type --- -La conversion de type (ou transtypage) est le transfert d'une donnée d'un type de donnée vers un autre. Une _conversion implicite_ se produit quand le compilateur affecte les types de donnée automatiquement, mais le code source peut aussi demander à ce qu'une conversion ait lieu de manière _explicite_.  Exemples simples : étant donnée l'instruction `5+2.0`, l'entier `5` est converti implicitement en nombre à virgule flottante, mais avec l'instruction `Number("0x11")`, la chaîne "0x11" est explicitement convertie en valeur numérique 17. +La conversion de type (ou transtypage) est le transfert d'une donnée d'un type de donnée vers un autre. Une _conversion implicite_ se produit quand le compilateur affecte les types de donnée automatiquement, mais le code source peut aussi demander à ce qu'une conversion ait lieu de manière _explicite_. Exemples simples : étant donnée l'instruction `5+2.0`, l'entier `5` est converti implicitement en nombre à virgule flottante, mais avec l'instruction `Number("0x11")`, la chaîne "0x11" est explicitement convertie en valeur numérique 17. ## Pour en savoir plus diff --git a/files/fr/glossary/udp/index.md b/files/fr/glossary/udp/index.md index f3c672e130..f4fb20bbf7 100644 --- a/files/fr/glossary/udp/index.md +++ b/files/fr/glossary/udp/index.md @@ -8,7 +8,7 @@ tags: translation_of: Glossary/UDP original_slug: Glossaire/UDP --- -**UDP** (User Datagram Protocol) est un {{glossary("protocol","protocole")}} de longue date utilisé avec {{glossary("IPv6","IP")}} pour envoyer des données lorsque la vitesse de transmission et l'efficacité importent davantage que la sécurité et la fiabilitié. +**UDP** (User Datagram Protocol) est un {{glossary("protocol","protocole")}} de longue date utilisé avec {{glossary("IPv6","IP")}} pour envoyer des données lorsque la vitesse de transmission et l'efficacité importent davantage que la sécurité et la fiabilitié. ## Pour en savoir plus diff --git a/files/fr/glossary/user_agent/index.md b/files/fr/glossary/user_agent/index.md index a718d1af25..01e5e2a64e 100644 --- a/files/fr/glossary/user_agent/index.md +++ b/files/fr/glossary/user_agent/index.md @@ -17,7 +17,7 @@ Les spambots, gestionnaires de téléchargements et certains navigateurs envoien Côté client, la chaîne de l'agent utilisateur est accessible en {{Glossary("JavaScript")}} avec `navigator.userAgent.` -Une chaîne classique d'agent utilisateur ressemble à ceci : `"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0"`. +Une chaîne classique d'agent utilisateur ressemble à ceci : `"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0"`. ## Pour approfondir diff --git a/files/fr/glossary/ux/index.md b/files/fr/glossary/ux/index.md index edaf7da786..fb8c5f8838 100644 --- a/files/fr/glossary/ux/index.md +++ b/files/fr/glossary/ux/index.md @@ -11,9 +11,9 @@ tags: translation_of: Glossary/UX original_slug: Glossaire/UX --- -**UX** est un acronyme signifiant User eXperience (expérience utilisateur). Il s'agit de l'étude de l'interaction entre des utilisateurs et un système. Son objectif est de rendre l'interaction avec un système plus simple du point de vue de l'utilisateur. +**UX** est un acronyme signifiant User eXperience (expérience utilisateur). Il s'agit de l'étude de l'interaction entre des utilisateurs et un système. Son objectif est de rendre l'interaction avec un système plus simple du point de vue de l'utilisateur. -Le système peut être n'importe quel type de produit ou d'application avec lequel un utilisateur final est censé intéragir. Les études UX entreprises sur une page web par exemple peuvent servir à démontrer s'il est simple pour les utilisateurs de comprendre la page, naviguer dans différentes zones, réaliser des tâches simples et ainsi détecter où ce genre de processus pourrait être moins problématique. +Le système peut être n'importe quel type de produit ou d'application avec lequel un utilisateur final est censé intéragir. Les études UX entreprises sur une page web par exemple peuvent servir à démontrer s'il est simple pour les utilisateurs de comprendre la page, naviguer dans différentes zones, réaliser des tâches simples et ainsi détecter où ce genre de processus pourrait être moins problématique. ## Approfondir diff --git a/files/fr/glossary/validator/index.md b/files/fr/glossary/validator/index.md index ea6c048be2..13dcf738ed 100644 --- a/files/fr/glossary/validator/index.md +++ b/files/fr/glossary/validator/index.md @@ -7,7 +7,7 @@ tags: translation_of: Glossary/Validator original_slug: Glossaire/Validator --- -Un validateur est un programme qui vérifie les erreurs de syntaxe d'un code informatique. Ils peuvent être créés pour tous les formats et langages, mais dans notre contexte on parle d'outils vérifiant le {{Glossary("HTML")}}, {{Glossary("CSS")}}, et {{Glossary("XML")}}. +Un validateur est un programme qui vérifie les erreurs de syntaxe d'un code informatique. Ils peuvent être créés pour tous les formats et langages, mais dans notre contexte on parle d'outils vérifiant le {{Glossary("HTML")}}, {{Glossary("CSS")}}, et {{Glossary("XML")}}. ## En apprendre plus diff --git a/files/fr/glossary/wcag/index.md b/files/fr/glossary/wcag/index.md index c162e79bdf..5bb033cf56 100644 --- a/files/fr/glossary/wcag/index.md +++ b/files/fr/glossary/wcag/index.md @@ -15,9 +15,9 @@ WCAG 2.0, qui a replacé WCAG 1.0, a été publié en tant que recommandation W3 WCAG utilise trois niveaux d'accessibilité : -- Priorité 1 : Les développeurs web **doivent** satisfaire ces conditions, sinon il sera impossible à un ou plusieurs groupes d'accéder au contenu du web. Atteindre ce niveau est désigné par A. -- Priorité 2 : Les développeurs web **devraient** satisfaire ces conditions, sinon certains groupes éprouveront des difficultés à accéder au contenu du web. Atteindre ce niveau est désigné par AA ou double A. -- Priorité 3 : Les développeurs web **peuvent** satisfaire ces conditions dans le but de faciliter l'accès au web pour certains groupes. Atteindre ce niveau est désigné par AAA ou triple A. +- Priorité 1 : Les développeurs web **doivent** satisfaire ces conditions, sinon il sera impossible à un ou plusieurs groupes d'accéder au contenu du web. Atteindre ce niveau est désigné par A. +- Priorité 2 : Les développeurs web **devraient** satisfaire ces conditions, sinon certains groupes éprouveront des difficultés à accéder au contenu du web. Atteindre ce niveau est désigné par AA ou double A. +- Priorité 3 : Les développeurs web **peuvent** satisfaire ces conditions dans le but de faciliter l'accès au web pour certains groupes. Atteindre ce niveau est désigné par AAA ou triple A. ## Pour approfondir diff --git a/files/fr/learn/accessibility/accessibility_troubleshooting/index.md b/files/fr/learn/accessibility/accessibility_troubleshooting/index.md index 7d501db4fb..4dae77c200 100644 --- a/files/fr/learn/accessibility/accessibility_troubleshooting/index.md +++ b/files/fr/learn/accessibility/accessibility_troubleshooting/index.md @@ -22,7 +22,7 @@ Dans l’évaluation de ce module, nous vous présentons un site simple, qui pr Conditions préalables: Connaissances informatiques de base, une compréhension de base de HTML, - CSS et JavaScript, une compréhension de la  previous articles in the course. @@ -40,7 +40,7 @@ Dans l’évaluation de ce module, nous vous présentons un site simple, qui pr ## Point de départ -Pour lancer cette évaluation, vous devez aller chercher le  [ZIP containing the files that comprise the example](https://github.com/mdn/learning-area/blob/master/accessibility/assessment-start/assessment-files.zip?raw=true). Décompressez le contenu dans un nouveau répertoire quelque part sur votre ordinateur local +Pour lancer cette évaluation, vous devez aller chercher le [ZIP containing the files that comprise the example](https://github.com/mdn/learning-area/blob/master/accessibility/assessment-start/assessment-files.zip?raw=true). Décompressez le contenu dans un nouveau répertoire quelque part sur votre ordinateur local Le site d'évaluation terminé devrait ressembler à ceci: @@ -70,13 +70,13 @@ Les images sont actuellement inaccessibles aux utilisateurs de lecteur d'écran. ### Le lecteur audio -1. Le lecteur  `