你們好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新......html
- github:https://github.com/Daotin/Web
- 微信公衆號:Web前端之巔
- 博客園:http://www.cnblogs.com/lvonve/
- CSDN:https://blog.csdn.net/lvonve/
在這裏我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的項目。如今就讓咱們一塊兒進入 Web 前端學習的冒險之旅吧!前端
window.addEventListener("online", function(){}); window.addEventListener("offline", function(){});
全屏操做的主要方法和屬性:html5
一、requestFullScreen(); 開啓全屏顯示git
可是不一樣的瀏覽器須要添加的前綴不一樣:github
chrome:webkit , firefox:moz ,IE:msweb
因而就變成了 webkitRequestFullScreen()
, mozRequestFullScreen()
, msRequestFullScreen()
。因爲使用的方法不一樣,因此要作兼容性處理。chrome
二、cancelFullScreen(); 退出全屏顯示數組
退出全屏的操做也要加前綴,而且調用其的元素只能是 ducument,而不能是其餘元素。瀏覽器
三、fullscreenElement;是不是全屏狀態緩存
判斷是否爲全屏狀態也要加前綴,而且調用其的元素只能是 ducument,而不能是其餘元素。(注意只有 firefox是駝峯寫法,最符合 html5 標準)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <img src="images/l1.jpg"><br> <input type="button" value="進入全屏" id="btn1"> <input type="button" value="退出全屏" id="btn2"> <input type="button" value="是否全屏" id="btn3"> </div> <script> // 開啓全屏顯示 document.querySelector("#btn1").addEventListener("click", function () { var divObj = document.querySelector("div"); if (divObj.requestFullscreen) { divObj.requestFullscreen(); } else if (divObj.webkitRequestFullScreen) { divObj.webkitRequestFullScreen(); } else if (divObj.mozRequestFullScreen) { divObj.mozRequestFullScreen(); } else if (divObj.msRequestFullScreen) { divObj.msRequestFullScreen(); } }, false); // 退出全屏顯示 document.querySelector("#btn2").addEventListener("click", function () { if (document.cancelFullscreen) { document.cancelFullscreen(); } else if (document.webkitCancelFullScreen) { document.webkitCancelFullScreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.msCancelFullScreen) { document.msCancelFullScreen(); } }, false); // 是不是全屏狀態 document.querySelector("#btn3").addEventListener("click", function () { if (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement) { console.log("yes"); } else { console.log("no"); } }, false); </script> </body> </html>
主要應用在:當離線模式下,頁面須要選擇性緩存一些內容的時候。
<!DOCTYPE html> <!--manifest="應用程序緩存清單文件的路徑 建議文件的擴展名是appcache,這個文件的本質就是一個文本文件"--> <html lang="en" manifest="demo.appcache"> <head> <meta charset="UTF-8"> <title>Title</title> <style> img{ width: 300px; display: block; } </style> </head> <body> <img src="../images/l1.jpg" alt=""> <img src="../images/l2.jpg" alt=""> <img src="../images/l3.jpg" alt=""> <img src="../images/l4.jpg" alt=""> </body> </html>
demo.appcache 文件
CACHE MANIFEST #上面一句代碼必須是當前文檔的第一句 #後面寫註釋 #須要緩存的文件清單列表 CACHE: #下面就是須要緩存的清單列表 ../images/l1.jpg ../images/l2.jpg # *:表明全部文件 #配置每一次都須要從新從服務器獲取的文件清單列表 NETWORK: ../images/l3.jpg #配置若是文件沒法獲取則使用指定的文件進行替代 FALLBACK: ../images/l4.jpg ../images/banner_1.jpg # /:表明全部文件
FileReader:主要是讀取文件內容。
使用 new FileReader
生成的對象有下列幾個方法,用於讀取文件:
readAsText()
:讀取文本文件,返回文本字符串,默認編碼是UTF-8
readAsBinaryString()
:讀取任意類型的文件,返回二進制字符串。這個方法不是用來讀取文件展現給用戶看,而是存儲文件。例如:讀取文件的內容,獲取二進制數據,傳遞給後臺,後臺接收了數據以後,再將數據存儲。
readAsDataURL()
:讀取文件獲取一段以data開頭的字符串,這段字符串的本質就是DataURL。
DataURL是一種將文件(這個文件通常就是指圖像或者可以嵌入到文檔的文件格式)嵌入到文檔的一種格式。DataURL是將資源轉換爲base64編碼的字符串形式,而且將這些內容直接存儲在url中,這樣作能夠優化網站的加載速度和執行效率。
abort()
:中斷文件讀取。
好比如今有一需求,選擇圖片並實時顯示(相似在網頁上更換頭像,能夠實時預覽圖片):
<body> <!--需求:即時預覽: 即時:當用戶選擇完圖片以後就馬上進行預覽的處理 >>onchange 預覽:經過文件讀取對象的readAsDataURL()完成--> <form action=""> 文件: <input type="file" name="myFile" id="myFile" onchange="getFileContent();"> <br> <div></div> <input type="submit"> </form> <img src="" alt=""> <script> var div=document.querySelector("div"); function getFileContent(){ /*1.建立文件讀取對象*/ var reader=new FileReader(); /*2.讀取文件,獲取DataURL * 2.1.說明沒有任何的返回值:void:可是讀取完文件以後,它會將讀取的結果存儲在文件讀取對象的result中 * 2.2.須要傳遞一個參數(binary large object):文件(圖片或者其它能夠嵌入到文檔的類型) * 2.3:文件存儲在file表單元素的files屬性中,它是一個數組,當有 multiple 屬性的時候這個數組的值會有多個。*/ var file=document.querySelector("#myFile").files[0]; reader.readAsDataURL(file); /*獲取數據*/ /*FileReader提供一個完整的事件模型,用來捕獲讀取文件時的狀態 * onabort:讀取文件中斷片時觸發 * onerror:讀取錯誤時觸發 * onload:文件讀取完成且成功時觸發 * onloadend:文件讀取完成時觸發,不管成功仍是失敗 * onloadstart:開始讀取時觸發 * onprogress:讀取文件過程當中持續觸發*/ reader.onload=function(){ //console.log(reader.result); /*展現*/ document.querySelector("img").src=reader.result; } // 模擬進度條顯示 reader.onprogress=function(e){ var percent= (e.loaded/ e.total)*100+"%"; div.style.width=percent; } } </script> </body>
onchange:就是當文件內容發生變化時觸發的事件。
方法:
// 參數1:獲取地理信息成功以後的回調函數 // 參數2:獲取地理信息失敗以後的回調函數 // 參數3:調整獲取當前地理信息的方式 // enableHighAccuracy:true/false:是否使用高精度 // timeout:設置超時時間,單位ms // maximumAge:能夠設置瀏覽器從新獲取地理信息的時間間隔,單位是ms navigator.geolocation.getCurrentPosition(success,error,option);
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .de { width: 300px; height: 300px; border: 1px solid #ddd; } </style> </head> <body> <div id="demo" class="de"></div> <script> var x = document.getElementById("demo"); function getLocation() { /*能力測試*/ if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition, showError, { /*enableHighAccuracy:true, timeout:3000*/ }); } else { x.innerHTML = "Geolocation is not supported by this browser."; } } /*成功獲取定位以後的回調*/ function showPosition(position) { x.innerHTML = "Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude; } /*獲取定位失敗以後的回調*/ function showError(error) { switch (error.code) { case error.PERMISSION_DENIED: x.innerHTML = "User denied the request for Geolocation." break; case error.POSITION_UNAVAILABLE: x.innerHTML = "Location information is unavailable." break; case error.TIMEOUT: x.innerHTML = "The request to get user location timed out." break; case error.UNKNOWN_ERROR: x.innerHTML = "An unknown error occurred." break; } } getLocation(); </script> </body> </html>
獲取地理位置成功,將會把獲取到的地理信息以參數的形式傳遞給回調函數:
position.coords.latitude 緯度
position.coords.longitude 經度
position.coords.accuracy 精度
position.coords.altitude 海拔高度
注意:因爲地理位置屬於用戶的隱私信息,通常瀏覽器不容許獲取,只有在瀏覽器中開啓以後纔可以獲取。然而,在中國使用PC端的瀏覽器是不容許獲取到用戶的信息的,手機端能夠。
那麼怎麼在PC端的瀏覽器獲取到用戶的位置信息呢?
調用百度地圖,高德地圖等第三方提供的API接口獲取用戶信息。