Count numbers: <\/output><\/p>\nStart Worker<\/button> \nStop Worker<\/button>\n\n\n 国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂 ?? ?? ?? ?? Q&A ??? ?? ????? ?? ?? ????? ?? ?? ???? ?? ?? PHP ????? JS ?? ?? ???? ?? ?? ???? AI ?? ?? ?? ???? ?? ???? ??? 簡(jiǎn)體中文 English 繁體中文 日本語(yǔ) ??? Melayu Fran?ais Deutsch Login singup ?? HTML5? ?? 10?? ??? ?? ? ? ????? ????? Q&A html5? ??? ??? ?????? html5? ??? ??? ?????? 青燈夜游 Jan 28, 2023 pm 06:15 PM html5 HTML5? ??? ??? ??? ????. 1. ???? ???? ????? ???? ?? ??(??, ??? ?) 2. ?? ?? ??? ?? ?? ??? ?? ??? ??? ? ?? ?? ??? ??? ? ????. 3. ??? ? ??? ?? ??? ?? ?? ?? ?? 5. SVG ??? 7. ? ??? , ?. ? ????? ?? ??: Windows 7 ???, HTML5 ??, Dell G3 ???. HTML5? ?? 10?? ??? ?? ???? ??? ??????? ? ? ???? ?? HTML5?? ??? ???, ????? ???, ? ?? ??? ??, ? ?? ?? ?? ? ?? API? ?? ?? ??? ??? ??? ???????. ?? ??? ? ??, ? ?????? ??, ??, ???? ??? ?? ??? ?? ?? (1) ?? ?? ?? ??? ???? ???? ????? ??? ? ? ???? ?? ?? ? ??? ?? ??? ????? ??? ?? ??? ????? ??? ??? ????? ??? ??? ????? (??, ??) ???? ?? ??? ?? ?? ???? ??? ?? ??? ???? ??? ?? ?? ?? ?? (2) ??? ?? HTML5?? ?? ?? ??? ?? ?? ?? ??? ????. ??? ??? ??? ? ?? ?? ?? ? ??? ?????. ?? ?? ?? color ?? ??? ???? ? ????? date ?? ?? ?? ????? ?? datetime ?? ??(UTC ??) DateTime-Local ?? ? ?? ??(???) ??? ?? month ? ?? number ?? ? ?? ?? range ?? ?? ?? ?? ? ?? ?? search ?? ?? ? ?? ???? ?? ?? time ?? ?? url URL ?? ?? ?? week ?? ?? ?? HTML5? ?? ?? ?? ??? ????? Form ??Description ?? ?? ?? ??? ?? ?? ?? < input> ??? ??? ID? ??????. ???? ???? ??? ? ?? ??? ?????. ??? ??? ???? ?? ?????. ??? ??. ? ?? ?? ???? ?? ? ?? ??? ??? ?? ? ?????. HTML5? ??? ?? ?? placehoder ??? ???? ?? ???? ?? ?? ??? ?? ????? ?????. ?, ?? ??? ???? ?? ????? ???? ??? ?? ?????. ?? ??? ?? ?????. ??? ?? ?? ??? ??? ? ????. ?? ??? ??? ?? ???? ? ???? ???? ?????. min ? max ??? ??? ???? ???? ?????. step ??? ?? ??? ??? ?? ??? ?????. ?? ? ?? ??? ??? ??? ??? ??? ?? ? ??? ?????. autofocus ??? ?? ?????. ???? ??? ? ??? ???? ??? ????? ?????. ?? ??? ?? ?????. ?? ??? ?? ?? ??? ? ??? ?????. (3) ??? ? ??? HTML5? ??, ?? ?? ??? ?? ??? ?? ??. ? ???? ????? ???? ?? ??? ???? ???? ???? ???. ??? ?? ?? ??? ??? ? ???, ????? ???? ? ?? ??? ??? ?????. ??? MP3, Wav ? Ogg? ? ?? ??? ?? ??? ?????. HTML5? ??? ??? ?? ???? ???? ?? ??? ?????. <audio controls> <source src="horse.ogg" type="audio/ogg"> <source src="horse.mp3" type="audio/mpeg"> 您的瀏覽器不支持 audio 元素。 </audio>control? ???? ???? ?? ??, ?? ?? ? ?? ?? ??? ?????. DOM ??? ???? play() ? Pause() ???? ?? ???? ?? ? ?? ??? ??? ?? ????. ??? ??? ??? ??? ??? ???? ?? ?? ? ?? ??? ?????. ??? ??? ???? ???? ??? ? ??? ??? ??? ?????. ??? ??? ???? ?? ????? ???? ??? ?? ??? ?? ????? ?? ? ?? ??? ??? ? ??? ???? ?? ???? ??? ?? ?????. ? ?? ??? ??? ???? video ??? ???? ?? ?????? ????? ?????. ??? ??? ?? ?? ??? ???? ??? ??? ??? ??? ? ????. ????? ? ?? ?? ??(MP4, WebM ? Ogg)? ?????. (4) ??? ??? ??? ??? ????? ??? ???? ???? ????? ???? ???. ??? - ??? 1. ???? ????. ???? ??? ?? ??? ? ???? ???? ?????. ????? ???? ???? ??? ????. <video width="320" height="240" controls> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> 您的瀏覽器不支持Video標(biāo)簽。 </video> ??? ????? id ??(?? ?????? ???)? ???? ??, ?? ? ?? ??? ???? ??? ????, ??? ??? ???? ???? ?????. HTML ????? ?? ??? ??? ? ????2. Javascript? ???? ???? ?? ? ????. ??? ?? ???? ??? ??? ????. ?? ??? ??? JavaScript ??? ????? ???<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"></canvas> getContext("2d") ??? ??, ????, ?, ?? ??? ? ??? ??? ?? ?? ???? ??? ?? HTML5 ?????. fillStyle ?? ??? CSS ??, ????? ?? ??? ? ????. ?? fillStyle ??? #000000(???)???. fillRect(x,y,width,height) ???? ????? ?? ??? ??? ?????. ??: ?? ? ???(0,0)?? ???? ???? 150x75 ????? ????. Canvas - ?? ???? ?? ???? ?? ? ?? ???? ?????. moveTo(x,y) ?? ?? ??? ?? lineTo(x,y) ) ?? ? ?? ??? ???? ?? ???? ????()? ????? "??" ???? ???? ???. rreee 定義開始坐標(biāo)(0,0), 和結(jié)束坐標(biāo) (200,100). 然后使用 stroke() 方法來繪制線條Canvas - 文本使用 canvas 繪制文本,重要的屬性和方法如下: font - 定義字體 fillText(text,x,y) - 在 canvas 上繪制實(shí)心的文本 strokeText(text,x,y) - 在 canvas 上繪制空心的文本使用 fillText():var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font="30px Arial"; ctx.fillText("Hello World",10,50); 使用 "Arial" 字體在畫布上繪制一個(gè)高 30px 的文字(實(shí)心)Canvas - 漸變漸變可以填充在矩形, 圓形, 線條, 文本等等, 各種形狀可以自己定義不同的顏色。以下有兩種不同的方式來設(shè)置Canvas漸變: createLinearGradient(x,y,x1,y1) - 創(chuàng)建線條漸變 createRadialGradient(x,y,r,x1,y1,r1) - 創(chuàng)建一個(gè)徑向/圓漸變當(dāng)我們使用漸變對(duì)象,必須使用兩種或兩種以上的停止顏色。addColorStop()方法指定顏色停止,參數(shù)使用坐標(biāo)來描述,可以是0至1.使用漸變,設(shè)置fillStyle或strokeStyle的值為漸變,然后繪制形狀,如矩形,文本,或一條線。var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); // Create gradient var grd=ctx.createLinearGradient(0,0,200,0); grd.addColorStop(0,"red"); grd.addColorStop(1,"white"); // Fill with gradient ctx.fillStyle=grd; ctx.fillRect(10,10,150,80); 創(chuàng)建了一個(gè)線性漸變,使用漸變填充矩形Canvas - 圖像 把一幅圖像放置到畫布上, 使用 drawImage(image,x,y) 方法var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var img=document.getElementById("scream"); ctx.drawImage(img,10,10); 把一幅圖像放置到了畫布上(5)SVG繪圖 SVG是指可伸縮的矢量圖形SVG 與 Canvas兩者間的區(qū)別 SVG 是一種使用 XML 描述 2D 圖形的語(yǔ)言。 Canvas 通過 JavaScript 來繪制 2D 圖形。 SVG 基于 XML,這意味著 SVG DOM 中的每個(gè)元素都是可用的。您可以為某個(gè)元素附加 JavaScript 事件處理器。 在 SVG 中,每個(gè)被繪制的圖形均被視為對(duì)象。如果 SVG 對(duì)象的屬性發(fā)生變化,那么瀏覽器能夠自動(dòng)重現(xiàn)圖形。 Canvas 是逐像素進(jìn)行渲染的。在 canvas 中,一旦圖形被繪制完成,它就不會(huì)繼續(xù)得到瀏覽器的關(guān)注。如果其位置發(fā)生變化,那么整個(gè)場(chǎng)景也需要重新繪制,包括任何或許已被圖形覆蓋的對(duì)象。(6)地理定位 HTML5 Geolocation(地理定位)用于定位用戶的位置。window.navigator.geolocation { getCurrentPosition: fn 用于獲取當(dāng)前的位置數(shù)據(jù) watchPosition: fn 監(jiān)視用戶位置的改變 clearWatch: fn 清除定位監(jiān)視 } 獲取用戶定位信息:navigator.geolocation.getCurrentPosition( function(pos){ console.log('用戶定位數(shù)據(jù)獲取成功') //console.log(arguments); console.log('定位時(shí)間:',pos.timestamp) console.log('經(jīng)度:',pos.coords.longitude) console.log('緯度:',pos.coords.latitude) console.log('海拔:',pos.coords.altitude) console.log('速度:',pos.coords.speed)}, //定位成功的回調(diào)function(err){ console.log('用戶定位數(shù)據(jù)獲取失敗') //console.log(arguments);} //定位失敗的回調(diào))(7)拖放API 拖放是一種常見的特性,即抓取對(duì)象以后拖到另一個(gè)位置。在 HTML5 中,拖放是標(biāo)準(zhǔn)的一部分,任何元素都能夠拖放。 拖放的過程分為源對(duì)象和目標(biāo)對(duì)象。源對(duì)象是指你即將拖動(dòng)元素,而目標(biāo)對(duì)象則是指拖動(dòng)之后要放置的目標(biāo)位置。拖放的源對(duì)象(可能發(fā)生移動(dòng)的)可以觸發(fā)的事件——3個(gè):dragstart:拖動(dòng)開始drag:拖動(dòng)中dragend:拖動(dòng)結(jié)束整個(gè)拖動(dòng)過程的組成: dragstart*1 + drag*n + dragend*1拖放的目標(biāo)對(duì)象(不會(huì)發(fā)生移動(dòng))可以觸發(fā)的事件——4個(gè):dragenter:拖動(dòng)著進(jìn)入dragover:拖動(dòng)著懸停dragleave:拖動(dòng)著離開drop:釋放整個(gè)拖動(dòng)過程的組成1: dragenter*1 + dragover*n + dragleave*1整個(gè)拖動(dòng)過程的組成2: dragenter*1 + dragover*n + drop*1dataTransfer:用于數(shù)據(jù)傳遞的“拖拉機(jī)”對(duì)象; 在拖動(dòng)源對(duì)象事件中使用e.dataTransfer屬性保存數(shù)據(jù):e.dataTransfer.setData( k, v ) 在拖動(dòng)目標(biāo)對(duì)象事件中使用e.dataTransfer屬性讀取數(shù)據(jù):var value = e.dataTransfer.getData( k )(8)Web Worker 當(dāng)在 HTML 頁(yè)面中執(zhí)行腳本時(shí),頁(yè)面的狀態(tài)是不可響應(yīng)的,直到腳本已完成。 web worker 是運(yùn)行在后臺(tái)的 JavaScript,獨(dú)立于其他腳本,不會(huì)影響頁(yè)面的性能。您可以繼續(xù)做任何愿意做的事情:點(diǎn)擊、選取內(nèi)容等等,而此時(shí) web worker 在后臺(tái)運(yùn)行。 首先檢測(cè)瀏覽器是否支持 Web Worker if(typeof(Worker)!=="undefined"){ // 是的! Web worker 支持! // 一些代碼..... }else{ // //抱歉! Web Worker 不支持 } 下面的代碼檢測(cè)是否存在 worker,如果不存在,- 它會(huì)創(chuàng)建一個(gè)新的 web worker 對(duì)象,然后運(yùn)行 "demo_workers.js" 中的代碼 if(typeof(w)=="undefined") { w=new Worker("demo_workers.js"); } 然后我們就可以從 web worker 發(fā)送和接收消息了。向 web worker 添加一個(gè) "onmessage" 事件監(jiān)聽器: w.onmessage=function(event){ document.getElementById("result").innerHTML=event.data; }; 當(dāng) web worker 傳遞消息時(shí),會(huì)執(zhí)行事件監(jiān)聽器中的代碼。event.data 中存有來自 event.data 的數(shù)據(jù)。當(dāng)我們創(chuàng)建 web worker 對(duì)象后,它會(huì)繼續(xù)監(jiān)聽消息(即使在外部腳本完成之后)直到其被終止為止。如需終止 web worker,并釋放瀏覽器/計(jì)算機(jī)資源,使用 terminate() 方法。完整的 Web Worker 實(shí)例代碼<!DOCTYPE html> <html> <body> <p>Count numbers: <output id="result"></output></p> <button onclick="startWorker()">Start Worker</button> <button onclick="stopWorker()">Stop Worker</button> <br><br> <script>var w;function startWorker() {if(typeof(Worker)!=="undefined") { if(typeof(w)=="undefined") { w=new Worker("demo_workers.js"); } w.onmessage = function (event) { document.getElementById("result").innerHTML=event.data; }; }else{ document.getElementById("result").innerHTML="Sorry, your browser does not support Web Workers..."; } }function stopWorker() { w.terminate(); }</script> </body> </html> 創(chuàng)建的計(jì)數(shù)腳本,該腳本存儲(chǔ)于 "demo_workers.js" 文件中var i=0; function timedCount() { i=i+1; postMessage(i); setTimeout("timedCount()",500); } timedCount();(9)Web Storage 使用HTML5可以在本地存儲(chǔ)用戶的瀏覽數(shù)據(jù)。早些時(shí)候,本地存儲(chǔ)使用的是cookies。但是Web 存儲(chǔ)需要更加的安全與快速. 這些數(shù)據(jù)不會(huì)被保存在服務(wù)器上,但是這些數(shù)據(jù)只用于用戶請(qǐng)求網(wǎng)站數(shù)據(jù)上.它也可以存儲(chǔ)大量的數(shù)據(jù),而不影響網(wǎng)站的性能。數(shù)據(jù)以 鍵/值 對(duì)存在, web網(wǎng)頁(yè)的數(shù)據(jù)只允許該網(wǎng)頁(yè)訪問使用。客戶端存儲(chǔ)數(shù)據(jù)的兩個(gè)對(duì)象為:localStorage - 沒有時(shí)間限制的數(shù)據(jù)存儲(chǔ)sessionStorage - 針對(duì)一個(gè) session 的數(shù)據(jù)存儲(chǔ), 當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會(huì)被刪除。 在使用 web 存儲(chǔ)前,應(yīng)檢查瀏覽器是否支持 localStorage 和sessionStorageif(typeof(Storage)!=="undefined") { // 是的! 支持 localStorage sessionStorage 對(duì)象! // 一些代碼..... } else { // 抱歉! 不支持 web 存儲(chǔ)。 } 不管是 localStorage,還是 sessionStorage,可使用的API都相同,常用的有如下幾個(gè)(以localStorage為例):保存數(shù)據(jù):localStorage.setItem(key,value);讀取數(shù)據(jù):localStorage.getItem(key);刪除單個(gè)數(shù)據(jù):localStorage.removeItem(key);刪除所有數(shù)據(jù):localStorage.clear();得到某個(gè)索引的key:localStorage.key(index);(10)WebSocket WebSocket是HTML5開始提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通訊的協(xié)議。在WebSocket API中,瀏覽器和服務(wù)器只需要做一個(gè)握手的動(dòng)作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。瀏覽器通過 JavaScript 向服務(wù)器發(fā)出建立 WebSocket 連接的請(qǐng)求,連接建立以后,客戶端和服務(wù)器端就可以通過 TCP 連接直接交換數(shù)據(jù)。當(dāng)你獲取 Web Socket 連接后,你可以通過 send() 方法來向服務(wù)器發(fā)送數(shù)據(jù),并通過 onmessage 事件來接收服務(wù)器返回的數(shù)據(jù)。<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>W3Cschool教程(w3cschool.cn)</title> <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" in window) { alert("您的瀏覽器支持 WebSocket!"); // 打開一個(gè) web socket var ws = new WebSocket("ws://localhost:9998/echo"); ws.onopen = function() { // Web Socket 已連接上,使用 send() 方法發(fā)送數(shù)據(jù) ws.send("發(fā)送數(shù)據(jù)"); alert("數(shù)據(jù)發(fā)送中..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("數(shù)據(jù)已接收..."); }; ws.onclose = function() { // 關(guān)閉 websocket alert("連接已關(guān)閉..."); }; } else { // 瀏覽器不支持 WebSocket alert("您的瀏覽器不支持 WebSocket!"); } } </script> </head> <body> <div id="sse"> <a href="javascript:WebSocketTest()">運(yùn)行 WebSocket</a> </div> </body> </html>更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問:編程學(xué)習(xí)??! ? ??? html5? ??? ??? ??????? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????! ? ????? ?? ? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????. ? AI ?? Undress AI Tool ??? ???? ?? Undresser.AI Undress ???? ?? ??? ??? ?? AI ?? ? AI Clothes Remover ???? ?? ???? ??? AI ?????. Clothoff.io AI ? ??? Video Face Swap ??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????! ??? ?? ?? ?? ?? ?? ??? | Uma Musume Pretty Derby 1 ? ? ? By Jack chen <night> : ???? 99 ? - ?? ?? ? ?? ?? ?? 4 ? ? ? By DDD Uma Musume Pretty Derby ?? ?? (2025 ? 7 ?) 1 ? ? ? By Jack chen ?? ? ??? ????? Rimworld Odyssey ?? ??? 3 ? ? ? By Jack chen Windows ??? ?? ??? ??? ???? ???? 1 ? ? ? By 下次還敢 ??? ??? ?? ???++7.3.1 ???? ?? ?? ?? ??? SublimeText3 ??? ?? ??? ??, ???? ?? ????. ???? 13.0.1 ??? ??? PHP ?? ?? ?? ???? CS6 ??? ? ?? ?? SublimeText3 Mac ?? ? ??? ?? ?? ?????(SublimeText3) ??? ??? ?? ??? ???? 1601 29 PHP ???? 1502 276 ??? Related knowledge HTML5 ??-??? ???? ?? ?? ? ??? ?????. Jul 03, 2025 am 02:28 AM HTML5SSE? ???? ?? ? ?? ? ??? ???? ???? ??? ?????. 1. ?? ? ?? ????? ??????. ??? ??? ????? ??? ?? ? ? 3 ? ?? ? ?????. ??? ??? ?? ??? ??? ?? ? ? ????. 2. ?? ???? ?? ?? ?? ?? ?? ?? ??? ???? ?? ??? ???? ?? ? ??? ???? ???? ??, ?? ?? ? ?? ?? ? ?? ?? TOKEN? ?? ?? ??? ?????. 3. ??? ???? ?? ????, ?? ??? ?? ?? ????, Navigator.online? ???? ??? ???? ?? ??? ????? ? ? ?? ??? ????? ??????. ??? ??? ?? ???? ???? ??? ??? ???? ? ????. CSS ? JavaScript? HTML5 ??? ????? ?????. Jul 12, 2025 am 03:01 AM HTML5, CSS ? JavaScript? ??? ??, ???? ?? ?? ? ???? ??? ????? ????????. 1. SEO ? ????? ???? ????? ??? ??? ? ?? ??? ??? ?? HTML5 ??? ??? ??????. 2. CSS? ???? ?? ??? ???? ???? ???? ??? ???? ????? ??? ?????. 3. JavaScript? ??? ???? ?? ???? DEFER ?? ASYNC? ???? ?? ???? ??? ?? ??? ????????. 4. ??? ??? ??? ???? ??? ??? ?? ? ??? ?? ?? ??? ?? ??? ???? ?? ?? ?? ??? ?? ?? ???? ??????. ??? ??? ??? ??? ????? ????? ?? ?? ? ? ????. ?? ???? ?? ??? HTML5 DocType? ?????. Jul 03, 2025 am 02:35 AM DocType? HTML ?? ????? ???? ?? ???? ? ???? ????? ???? ????. ?? ? ???? HTML ??? ?? ????? ???????. ? ??? ????? ??? ??? ?? ?? ??? ???? ????? ? ?? ?? ???????. ?? ?? ??? ??? ?? ??? ?? ???? ?? ??? ???? ?? ????. Charset, Viewport ?? ?? ?? ??? ????? ???????. HTML5 Server-Sent Events (SSE)? ??? ???? ?????. Jul 02, 2025 pm 04:46 PM SSE (Server-Sentevents)? HTML5?? ??? ????? ????? ???? ?? ???? ?? ??????. ?? ??, ?? ? ?? ????? ??? ? HTTP ??? ?? ?? ?? ??? ?????. ??? ?? ????? ???? ??? ??? ? ???? ????. consteventSource = newEventSource ( '/stream'); eventSource.onMessage = function (event) {console.log ( '?? ??? :', event.data);}; ??? ??? ??? ???/???? ??????? HTML5 ??? ?? ? ? ???? ???? SEO ??. Jul 03, 2025 am 01:16 AM HTML5 ??? ??? Microdata? ???? ?? ??? ??? ?? ? ??? ??? ? ? ???? ? ????? ??? SEO? ???? ? ????. 1. HTML5 ??? ??? ???? ??? ??? ??? ????? ?? ?? ????? ??? ??? ??? ???? ? ??????. 2. ?? ??, ???, ?? ?? ?? ?? ?? ???? ???? ?? MicroData ??? ? ???? ???? ?? ??? ?? ??? ???? ?? ??? ??? ???? ? ??? ? ???; 3. ??? ???, ?? ??? ???, ??? ? ???? ??? ?????, Schema.org? ??? ????? ????? ??????, ?? SEO ??? ???? ????? ????? ?? ?????? ??????. html5``vs` `??? ?????. Jul 12, 2025 am 03:09 AM ????? ??? ?? ?? ?????. ??? ??? ???? ? ??? ??? ?????. 1. ?, ??, ?? ? ??? ????? ??? ? ???, ?? ?? ??? ????? ?????. 2. ??? ?? ??? ??? ??? ?? ???? ?? ??? ??? ?? ?? ??? ?????. 3. ??? ? ???? ??? ? ??? ???? ??? ?? ???????. 4. ?? ? ? ??? ????? ???? ????. 5. ??? ???? ???? ????? ?? ??? ??? ???? ? ?? ??? ?????. HTML5 ??? ?? API? ???? ?? ??? ????. Jul 02, 2025 pm 05:03 PM ??? ??? ?? ?? html5geolocation API? ???? ?? ?? ??? ??? ?? ??? ??? ???? ???????. ?? ??? Navigator.geolocation.getCurrentPosition ()?? ???? ??, ??? ?? ? ?? ?? ??? ???? ????. ??? ???? ???? ?? ??, ????, ???? ?? ????, ???? ?? ?, ?? ??? ? ??? ????? ????????. ???? ??? ??? ????. 1. ??? ???? ?? ?? ??? ??? ??? ? ?? ?? ??; 2. ???? ??? ????? ?? EnableHighAccuracy, ?? ??, ?? ? ?? ?? ??? ??????. 3. ?? ??? ?? ??? ??????? HTML5 ??? ?? ?? ?? (MSE) ?? Jul 08, 2025 am 02:31 AM MSE (MediaSourceExtensions)? W3C ??? ???? JavaScript? ??? ???? ???? ???? ?? ??? ?? ??? ???????. MediaSource? ?? ??? ??? ???? SourceBuffer? ???? ???? ???? ?? ??? ?? ??? ???? ????? ?????? ? ??? ??? ??? ? ? ????. MSE? ???? ?????? ??? ?????. ② ??? ??????. wource ?? ??? ???? ?? ???? ???? ?????. fetch ()? ?? ???? ? ???? ?? ?? ??? ??????. ???? ?? ??? ??? ????. utions ?? ??? ??; ② ?? ??? ? See all articles
HTML5? ??? ??? ??? ????. 1. ???? ???? ????? ???? ?? ??(??, ??? ?) 2. ?? ?? ??? ?? ?? ??? ?? ??? ??? ? ?? ?? ??? ??? ? ????. 3. ??? ? ??? ?? ??? ?? ?? ?? ?? 5. SVG ??? 7. ? ??? , ?.
? ????? ?? ??: Windows 7 ???, HTML5 ??, Dell G3 ???.
???? ??? ??????? ? ? ???? ?? HTML5?? ??? ???, ????? ???, ? ?? ??? ??, ? ?? ?? ?? ? ?? API? ?? ?? ??? ??? ??? ???????. ?? ??? ? ??, ? ?????? ??, ??, ???? ??? ?? ??? ?? ??
(1) ?? ??
?? ??? ???? ???? ????? ??? ? ? ????
(2) ??? ??
HTML5?? ?? ?? ??? ?? ?? ?? ??? ????. ??? ??? ??? ? ?? ?? ?? ? ??? ?????.
?? ??
color
date
datetime ?? ??(UTC ??)
?? ? ?? ??(???)
?? < input> ??? ??? ID? ??????.
??? ??? ???? ?? ?????. ??? ??.
HTML5? ??? ?? ??
(3) ??? ? ???
HTML5? ??? ??? ?? ???? ???? ?? ??? ?????.
<audio controls> <source src="horse.ogg" type="audio/ogg"> <source src="horse.mp3" type="audio/mpeg"> 您的瀏覽器不支持 audio 元素。 </audio>
??? - ??? 1. ???? ????. ???? ??? ?? ??? ? ???? ???? ?????. ????? ???? ???? ??? ????.
<video width="320" height="240" controls> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> 您的瀏覽器不支持Video標(biāo)簽。 </video>
2. Javascript? ???? ???? ?? ? ????. ??? ?? ???? ??? ??? ????. ?? ??? ??? JavaScript ??? ????? ???
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"></canvas>
Canvas - ??
x,y
lineTo(x,y)
rreee
定義開始坐標(biāo)(0,0), 和結(jié)束坐標(biāo) (200,100). 然后使用 stroke() 方法來繪制線條
Canvas - 文本
使用 canvas 繪制文本,重要的屬性和方法如下:
font - 定義字體
fillText(text,x,y) - 在 canvas 上繪制實(shí)心的文本
strokeText(text,x,y) - 在 canvas 上繪制空心的文本
使用 fillText():
var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font="30px Arial"; ctx.fillText("Hello World",10,50);
使用 "Arial" 字體在畫布上繪制一個(gè)高 30px 的文字(實(shí)心)
Canvas - 漸變
漸變可以填充在矩形, 圓形, 線條, 文本等等, 各種形狀可以自己定義不同的顏色。
以下有兩種不同的方式來設(shè)置Canvas漸變:
createLinearGradient(x,y,x1,y1) - 創(chuàng)建線條漸變
createRadialGradient(x,y,r,x1,y1,r1) - 創(chuàng)建一個(gè)徑向/圓漸變
當(dāng)我們使用漸變對(duì)象,必須使用兩種或兩種以上的停止顏色。
addColorStop()方法指定顏色停止,參數(shù)使用坐標(biāo)來描述,可以是0至1.
使用漸變,設(shè)置fillStyle或strokeStyle的值為漸變,然后繪制形狀,如矩形,文本,或一條線。
var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); // Create gradient var grd=ctx.createLinearGradient(0,0,200,0); grd.addColorStop(0,"red"); grd.addColorStop(1,"white"); // Fill with gradient ctx.fillStyle=grd; ctx.fillRect(10,10,150,80);
創(chuàng)建了一個(gè)線性漸變,使用漸變填充矩形
Canvas - 圖像
把一幅圖像放置到畫布上, 使用 drawImage(image,x,y) 方法
var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var img=document.getElementById("scream"); ctx.drawImage(img,10,10);
把一幅圖像放置到了畫布上
(5)SVG繪圖
SVG是指可伸縮的矢量圖形
SVG 與 Canvas兩者間的區(qū)別
SVG 是一種使用 XML 描述 2D 圖形的語(yǔ)言。
Canvas 通過 JavaScript 來繪制 2D 圖形。
SVG 基于 XML,這意味著 SVG DOM 中的每個(gè)元素都是可用的。您可以為某個(gè)元素附加 JavaScript 事件處理器。
在 SVG 中,每個(gè)被繪制的圖形均被視為對(duì)象。如果 SVG 對(duì)象的屬性發(fā)生變化,那么瀏覽器能夠自動(dòng)重現(xiàn)圖形。
Canvas 是逐像素進(jìn)行渲染的。在 canvas 中,一旦圖形被繪制完成,它就不會(huì)繼續(xù)得到瀏覽器的關(guān)注。如果其位置發(fā)生變化,那么整個(gè)場(chǎng)景也需要重新繪制,包括任何或許已被圖形覆蓋的對(duì)象。
(6)地理定位
HTML5 Geolocation(地理定位)用于定位用戶的位置。
window.navigator.geolocation { getCurrentPosition: fn 用于獲取當(dāng)前的位置數(shù)據(jù) watchPosition: fn 監(jiān)視用戶位置的改變 clearWatch: fn 清除定位監(jiān)視 }
獲取用戶定位信息:
navigator.geolocation.getCurrentPosition( function(pos){
console.log('用戶定位數(shù)據(jù)獲取成功') //console.log(arguments); console.log('定位時(shí)間:',pos.timestamp) console.log('經(jīng)度:',pos.coords.longitude) console.log('緯度:',pos.coords.latitude) console.log('海拔:',pos.coords.altitude) console.log('速度:',pos.coords.speed)
}, //定位成功的回調(diào)function(err){
console.log('用戶定位數(shù)據(jù)獲取失敗') //console.log(arguments);
} //定位失敗的回調(diào))
(7)拖放API
拖放是一種常見的特性,即抓取對(duì)象以后拖到另一個(gè)位置。在 HTML5 中,拖放是標(biāo)準(zhǔn)的一部分,任何元素都能夠拖放。
拖放的過程分為源對(duì)象和目標(biāo)對(duì)象。源對(duì)象是指你即將拖動(dòng)元素,而目標(biāo)對(duì)象則是指拖動(dòng)之后要放置的目標(biāo)位置。
拖放的源對(duì)象(可能發(fā)生移動(dòng)的)可以觸發(fā)的事件——3個(gè):
dragstart:拖動(dòng)開始
drag:拖動(dòng)中
dragend:拖動(dòng)結(jié)束
整個(gè)拖動(dòng)過程的組成: dragstart*1 + drag*n + dragend*1
拖放的目標(biāo)對(duì)象(不會(huì)發(fā)生移動(dòng))可以觸發(fā)的事件——4個(gè):
dragenter:拖動(dòng)著進(jìn)入
dragover:拖動(dòng)著懸停
dragleave:拖動(dòng)著離開
drop:釋放
整個(gè)拖動(dòng)過程的組成1: dragenter*1 + dragover*n + dragleave*1
整個(gè)拖動(dòng)過程的組成2: dragenter*1 + dragover*n + drop*1
dataTransfer:用于數(shù)據(jù)傳遞的“拖拉機(jī)”對(duì)象;
在拖動(dòng)源對(duì)象事件中使用e.dataTransfer屬性保存數(shù)據(jù):
e.dataTransfer.setData( k, v )
在拖動(dòng)目標(biāo)對(duì)象事件中使用e.dataTransfer屬性讀取數(shù)據(jù):
var value = e.dataTransfer.getData( k )
(8)Web Worker
當(dāng)在 HTML 頁(yè)面中執(zhí)行腳本時(shí),頁(yè)面的狀態(tài)是不可響應(yīng)的,直到腳本已完成。
web worker 是運(yùn)行在后臺(tái)的 JavaScript,獨(dú)立于其他腳本,不會(huì)影響頁(yè)面的性能。您可以繼續(xù)做任何愿意做的事情:點(diǎn)擊、選取內(nèi)容等等,而此時(shí) web worker 在后臺(tái)運(yùn)行。
首先檢測(cè)瀏覽器是否支持 Web Worker
if(typeof(Worker)!=="undefined"){ // 是的! Web worker 支持! // 一些代碼..... }else{ // //抱歉! Web Worker 不支持 }
下面的代碼檢測(cè)是否存在 worker,如果不存在,- 它會(huì)創(chuàng)建一個(gè)新的 web worker 對(duì)象,然后運(yùn)行 "demo_workers.js" 中的代碼
if(typeof(w)=="undefined") { w=new Worker("demo_workers.js"); }
然后我們就可以從 web worker 發(fā)送和接收消息了。向 web worker 添加一個(gè) "onmessage" 事件監(jiān)聽器:
w.onmessage=function(event){ document.getElementById("result").innerHTML=event.data; };
當(dāng) web worker 傳遞消息時(shí),會(huì)執(zhí)行事件監(jiān)聽器中的代碼。event.data 中存有來自 event.data 的數(shù)據(jù)。當(dāng)我們創(chuàng)建 web worker 對(duì)象后,它會(huì)繼續(xù)監(jiān)聽消息(即使在外部腳本完成之后)直到其被終止為止。
如需終止 web worker,并釋放瀏覽器/計(jì)算機(jī)資源,使用 terminate() 方法。
完整的 Web Worker 實(shí)例代碼
<!DOCTYPE html> <html> <body> <p>Count numbers: <output id="result"></output></p> <button onclick="startWorker()">Start Worker</button> <button onclick="stopWorker()">Stop Worker</button> <br><br> <script>var w;function startWorker() {if(typeof(Worker)!=="undefined") { if(typeof(w)=="undefined") { w=new Worker("demo_workers.js"); } w.onmessage = function (event) { document.getElementById("result").innerHTML=event.data; }; }else{ document.getElementById("result").innerHTML="Sorry, your browser does not support Web Workers..."; } }function stopWorker() { w.terminate(); }</script> </body> </html>
創(chuàng)建的計(jì)數(shù)腳本,該腳本存儲(chǔ)于 "demo_workers.js" 文件中
var i=0; function timedCount() { i=i+1; postMessage(i); setTimeout("timedCount()",500); } timedCount();
(9)Web Storage
使用HTML5可以在本地存儲(chǔ)用戶的瀏覽數(shù)據(jù)。早些時(shí)候,本地存儲(chǔ)使用的是cookies。但是Web 存儲(chǔ)需要更加的安全與快速. 這些數(shù)據(jù)不會(huì)被保存在服務(wù)器上,但是這些數(shù)據(jù)只用于用戶請(qǐng)求網(wǎng)站數(shù)據(jù)上.它也可以存儲(chǔ)大量的數(shù)據(jù),而不影響網(wǎng)站的性能。數(shù)據(jù)以 鍵/值 對(duì)存在, web網(wǎng)頁(yè)的數(shù)據(jù)只允許該網(wǎng)頁(yè)訪問使用。
客戶端存儲(chǔ)數(shù)據(jù)的兩個(gè)對(duì)象為:
在使用 web 存儲(chǔ)前,應(yīng)檢查瀏覽器是否支持 localStorage 和sessionStorage
if(typeof(Storage)!=="undefined") { // 是的! 支持 localStorage sessionStorage 對(duì)象! // 一些代碼..... } else { // 抱歉! 不支持 web 存儲(chǔ)。 }
不管是 localStorage,還是 sessionStorage,可使用的API都相同,常用的有如下幾個(gè)(以localStorage為例):
(10)WebSocket
WebSocket是HTML5開始提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通訊的協(xié)議。在WebSocket API中,瀏覽器和服務(wù)器只需要做一個(gè)握手的動(dòng)作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。瀏覽器通過 JavaScript 向服務(wù)器發(fā)出建立 WebSocket 連接的請(qǐng)求,連接建立以后,客戶端和服務(wù)器端就可以通過 TCP 連接直接交換數(shù)據(jù)。當(dāng)你獲取 Web Socket 連接后,你可以通過 send() 方法來向服務(wù)器發(fā)送數(shù)據(jù),并通過 onmessage 事件來接收服務(wù)器返回的數(shù)據(jù)。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>W3Cschool教程(w3cschool.cn)</title> <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" in window) { alert("您的瀏覽器支持 WebSocket!"); // 打開一個(gè) web socket var ws = new WebSocket("ws://localhost:9998/echo"); ws.onopen = function() { // Web Socket 已連接上,使用 send() 方法發(fā)送數(shù)據(jù) ws.send("發(fā)送數(shù)據(jù)"); alert("數(shù)據(jù)發(fā)送中..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("數(shù)據(jù)已接收..."); }; ws.onclose = function() { // 關(guān)閉 websocket alert("連接已關(guān)閉..."); }; } else { // 瀏覽器不支持 WebSocket alert("您的瀏覽器不支持 WebSocket!"); } } </script> </head> <body> <div id="sse"> <a href="javascript:WebSocketTest()">運(yùn)行 WebSocket</a> </div> </body> </html>
更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問:編程學(xué)習(xí)??!
? ??? html5? ??? ??? ??????? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!
??? ???? ??
???? ?? ??? ??? ?? AI ?? ?
???? ?? ???? ??? AI ?????.
AI ? ???
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!
???? ?? ?? ?? ???
??? ??, ???? ?? ????.
??? PHP ?? ?? ??
??? ? ?? ??
? ??? ?? ?? ?????(SublimeText3)
HTML5SSE? ???? ?? ? ?? ? ??? ???? ???? ??? ?????. 1. ?? ? ?? ????? ??????. ??? ??? ????? ??? ?? ? ? 3 ? ?? ? ?????. ??? ??? ?? ??? ??? ?? ? ? ????. 2. ?? ???? ?? ?? ?? ?? ?? ?? ??? ???? ?? ??? ???? ?? ? ??? ???? ???? ??, ?? ?? ? ?? ?? ? ?? ?? TOKEN? ?? ?? ??? ?????. 3. ??? ???? ?? ????, ?? ??? ?? ?? ????, Navigator.online? ???? ??? ???? ?? ??? ????? ? ? ?? ??? ????? ??????. ??? ??? ?? ???? ???? ??? ??? ???? ? ????.
HTML5, CSS ? JavaScript? ??? ??, ???? ?? ?? ? ???? ??? ????? ????????. 1. SEO ? ????? ???? ????? ??? ??? ? ?? ??? ??? ?? HTML5 ??? ??? ??????. 2. CSS? ???? ?? ??? ???? ???? ???? ??? ???? ????? ??? ?????. 3. JavaScript? ??? ???? ?? ???? DEFER ?? ASYNC? ???? ?? ???? ??? ?? ??? ????????. 4. ??? ??? ??? ???? ??? ??? ?? ? ??? ?? ?? ??? ?? ??? ???? ?? ?? ?? ??? ?? ?? ???? ??????. ??? ??? ??? ??? ????? ????? ?? ?? ? ? ????.
DocType? HTML ?? ????? ???? ?? ???? ? ???? ????? ???? ????. ?? ? ???? HTML ??? ?? ????? ???????. ? ??? ????? ??? ??? ?? ?? ??? ???? ????? ? ?? ?? ???????. ?? ?? ??? ??? ?? ??? ?? ???? ?? ??? ???? ?? ????. Charset, Viewport ?? ?? ?? ??? ????? ???????.
SSE (Server-Sentevents)? HTML5?? ??? ????? ????? ???? ?? ???? ?? ??????. ?? ??, ?? ? ?? ????? ??? ? HTTP ??? ?? ?? ?? ??? ?????. ??? ?? ????? ???? ??? ??? ? ???? ????. consteventSource = newEventSource ( '/stream'); eventSource.onMessage = function (event) {console.log ( '?? ??? :', event.data);}; ??? ??? ??? ???/???? ???????
HTML5 ??? ??? Microdata? ???? ?? ??? ??? ?? ? ??? ??? ? ? ???? ? ????? ??? SEO? ???? ? ????. 1. HTML5 ??? ??? ???? ??? ??? ??? ????? ?? ?? ????? ??? ??? ??? ???? ? ??????. 2. ?? ??, ???, ?? ?? ?? ?? ?? ???? ???? ?? MicroData ??? ? ???? ???? ?? ??? ?? ??? ???? ?? ??? ??? ???? ? ??? ? ???; 3. ??? ???, ?? ??? ???, ??? ? ???? ??? ?????, Schema.org? ??? ????? ????? ??????, ?? SEO ??? ???? ????? ????? ?? ?????? ??????.
????? ??? ?? ?? ?????. ??? ??? ???? ? ??? ??? ?????. 1. ?, ??, ?? ? ??? ????? ??? ? ???, ?? ?? ??? ????? ?????. 2. ??? ?? ??? ??? ??? ?? ???? ?? ??? ??? ?? ?? ??? ?????. 3. ??? ? ???? ??? ? ??? ???? ??? ?? ???????. 4. ?? ? ? ??? ????? ???? ????. 5. ??? ???? ???? ????? ?? ??? ??? ???? ? ?? ??? ?????.
??? ??? ?? ?? html5geolocation API? ???? ?? ?? ??? ??? ?? ??? ??? ???? ???????. ?? ??? Navigator.geolocation.getCurrentPosition ()?? ???? ??, ??? ?? ? ?? ?? ??? ???? ????. ??? ???? ???? ?? ??, ????, ???? ?? ????, ???? ?? ?, ?? ??? ? ??? ????? ????????. ???? ??? ??? ????. 1. ??? ???? ?? ?? ??? ??? ??? ? ?? ?? ??; 2. ???? ??? ????? ?? EnableHighAccuracy, ?? ??, ?? ? ?? ?? ??? ??????. 3. ?? ??? ?? ??? ???????
MSE (MediaSourceExtensions)? W3C ??? ???? JavaScript? ??? ???? ???? ???? ?? ??? ?? ??? ???????. MediaSource? ?? ??? ??? ???? SourceBuffer? ???? ???? ???? ?? ??? ?? ??? ???? ????? ?????? ? ??? ??? ??? ? ? ????. MSE? ???? ?????? ??? ?????. ② ??? ??????. wource ?? ??? ???? ?? ???? ???? ?????. fetch ()? ?? ???? ? ???? ?? ?? ??? ??????. ???? ?? ??? ??? ????. utions ?? ??? ??; ② ?? ??? ?