<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>121-130章總結</title> </head> <body> <pre> 121. 滾輪事件 onmousewheel鼠標滾輪滾動的事件,會在滾輪滾動時觸發, 可是火狐不支持該屬性 在火狐中須要使用 DOMMouseScroll 來綁定滾動事件 注意該事件須要經過addEventListener()函數來綁定 </pre> <style type="text/css"> #glbox{ width: 100px; height: 100px; background-color: red; } </style> <div id="glbox"></div> <script type="text/javascript"> console.log("第121"); var glbox = document.getElementById("glbox") glbox.onmousewheel = function(event){ event = event||window.event //event.wheelDelta 能夠獲取鼠標滾輪滾動的方向 //向上滾 120 向下滾 -120 //wheelDelta這個值咱們不看大小,只看正負 //alert( event.wheelDelta ) //wheelDelta這個屬性火狐中不支持 //在火狐中使用event.detail來獲取滾動的方向 //向上滾 -3 向下滾 3 //alert(event.detail); if ( event.wheelDelta > 0 || event.detail < 0) { if( this.clientHeight >10){ this.style.height = this.clientHeight -10 + "px" } } else{ this.style.height = this.clientHeight + 10 + "px" } /* * 使用 addEventListener()方法綁定響應函數,取消默認行爲時不能使用return false * 須要使用event來取消默認行爲event.preventDefault(); * 可是IE8不支持event.preventDefault();這個玩意,若是直接調用會報錯 */ event.preventDefault && event.preventDefault(); /* * 當滾輪滾動時,若是瀏覽器有滾動條,滾動條會隨之滾動, * 這是瀏覽器的默認行爲,若是不但願發生,則能夠取消默認行爲 */ return false; } //爲火狐綁定滾輪事件 bind(glbox,"DOMMouseScroll",glbox.onmousewheel); function bind(obj , eventStr , callback){ if(obj.addEventListener){ obj.addEventListener(eventStr , callback , false); }else{ obj.attachEvent("on"+eventStr , function(){ callback.call(obj); }); } } </script> <pre> 122. 鍵盤事件 onkeydown - 按鍵被按下 - 對於onkeydown來講若是一直按着某個按鍵不鬆手,則事件會一直觸發 - 當onkeydown連續觸發時,第一次和第二次之間會間隔稍微長一點,其餘的會很是的快 這種設計是爲了防止誤操做的發生。 onkeyup - 按鍵被鬆開 鍵盤事件通常都會綁定給一些能夠獲取到焦點的對象或者是document。 能夠經過keyCode來獲取按鍵的編碼 經過它能夠判斷哪一個按鍵被按下 除了 keyCode,事件對象中還提供了幾個屬性 altKey,ctrlKey,shiftKey - 這個三個用來判斷alt ctrl 和 shift是否被按下,若是按下則返回true,不然返回false </pre> <div class=""> <input type="" placeholder="不能輸入數字" /> </div> <script type="text/javascript"> console.log("第122"); document.onkeydown = function(event){ event = event || window.event var result = event.keyCode console.log("當前按下的按鍵值爲:" + result) if ( event.ctrlKey ){ console.log("當前的按下的按鍵爲:Ctrl") } //判斷y和ctrl是否同時被按下 if( event.keyCode === 89 && event.ctrlKey ){ console.log("ctrl和y都被按下了"); } } document.onkeyup = function(){ console.log("按鍵鬆開了"); } var input1 = document.getElementsByTagName("input") input1[0].onkeydown = function(event){ event = event || window.event // 使文本框中不能輸入數字 48-57 if( event.keyCode>=48 && event.keyCode <= 57 ){ //在文本框中輸入內容,屬於onkeydown的默認行爲 return false } } </script> <pre> 123. 鍵盤移動div </pre> <style type="text/css"> #mvBox {height: 200px;position: relative;} #movebox {width: 100px;height: 100px;background-color: #99FF99;position: absolute;} </style> <div id="mvBox"> <div id="movebox"></div> </div> <script type="text/javascript"> console.log("第123"); //使div能夠根據不一樣的方向鍵向不一樣的方向移動 var mvBox = document.getElementById("mvBox") var movebox = document.getElementById("movebox") // 左,上,右,下 37 38 39 40 mvBox.onkeydown = function(event){ event = event || window.event var speed = 10 if(event.ctrlKey){ speed = 50 } switch(event.keyCode){ case 37: movebox.style.left = movebox.offsetLeft - speed +"px" break case 38: movebox.style.top = movebox.offsetTop - speed +"px" break case 39: movebox.style.left = movebox.offsetLeft + speed +"px" break case 40: movebox.style.top = movebox.offsetTop + speed +"px" break } } </script> <pre> 124. BOM - BOM可使咱們經過JS來操做瀏覽器 - 在BOM中爲咱們提供了一組對象,用來完成對瀏覽器的操做 - BOM對象 Window - 表明的是整個瀏覽器的窗口,同時window也是網頁中的全局對象 Navigator - 表明的當前瀏覽器的信息,經過該對象能夠來識別不一樣的瀏覽器 Location - 表明當前瀏覽器的地址欄信息,經過Location能夠獲取地址欄信息,或者操做瀏覽器跳轉頁面 History - 表明瀏覽器的歷史記錄,能夠經過該對象來操做瀏覽器的歷史記錄 因爲隱私緣由,該對象不能獲取到具體的歷史記錄,只能操做瀏覽器向前或向後翻頁 並且該操做只在當次訪問時有效 Screen - 表明用戶的屏幕的信息,經過該對象能夠獲取到用戶的顯示器的相關的信息 這些BOM對象在瀏覽器中都是做爲window對象的屬性保存的, 能夠經過window對象來使用,也能夠直接使用。 Navigator - 表明的當前瀏覽器的信息,經過該對象能夠來識別不一樣的瀏覽器 - 因爲歷史緣由,Navigator對象中的大部分屬性都已經不能幫助咱們識別瀏覽器了 - 通常咱們只會使用userAgent來判斷瀏覽器的信息, userAgent是一個字符串,這個字符串中包含有用來描述瀏覽器信息的內容,不一樣的瀏覽器會有不一樣的 userAgent </pre> <script type="text/javascript"> console.log("第124"); console.log( Window ) console.log( navigator ) console.log( Location ) console.log( History ) console.log( Screen ) var ua = navigator.userAgent console.log( ua ) /* * 火狐的userAgent * Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0 * * Chrome的userAgent * Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 * * IE8 * Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) * * IE9 * Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) * * IE10 * Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) * * IE11 * Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko * - 在IE11中已經將微軟和IE相關的標識都已經去除了,因此咱們基本已經不能經過UserAgent來識別一個瀏覽器是不是IE了 */ // alert(navigator.appName); if(/firefox/i.test(ua)){ console.log("你是火狐!!!"); }else if(/chrome/i.test(ua)){ console.log("你是Chrome"); }else if(/msie/i.test(ua)){ console.log("你是IE瀏覽器~~~"); }else if("ActiveXObject" in window){ console.log("你是IE11,藏的好深啊~~~"); } /* * 若是經過UserAgent不能判斷,還能夠經過一些瀏覽器中特有的對象,來判斷瀏覽器的信息 * 好比:ActiveXObject */ if("ActiveXObject" in window){ console.log("你是IE,我已經抓住你了~~~"); }else{ console.log("你不是IE~~~"); } </script> <pre> 125. History - 對象能夠用來操做瀏覽器向前或向後翻頁 </pre> <div class=""> <h1>History</h1> <button id="htbtn">點我一下</button> <a href="111-120章總結.html" target="_blank">去111-120章總結</a> </div> <script type="text/javascript"> console.log("第125"); var htbtn =document.getElementById("htbtn") htbtn.onclick = function(){ // length - 屬性,能夠獲取到當成訪問的連接數量 var hl = history.length console.log(hl) // back() - 能夠用來回退到上一個頁面,做用和瀏覽器的回退按鈕同樣 //history.back() // forward() - 能夠跳轉下一個頁面,做用和瀏覽器的前進按鈕同樣 //history.forward() /* * go() * - 能夠用來跳轉到指定的頁面 * - 它須要一個整數做爲參數 * 1:表示向前跳轉一個頁面 至關於forward() * 2:表示向前跳轉兩個頁面 * -1:表示向後跳轉一個頁面 * -2:表示向後跳轉兩個頁面 */ history.go(-1) } </script> <pre> 126. Location 該對象中封裝了瀏覽器的地址欄的信息 </pre> <div class=""> <button id="ltbtn">點我一下</button> </div> <script type="text/javascript"> console.log("第126"); var ltbtn =document.getElementById("ltbtn") ltbtn.onclick = function(){ // 若是直接打印location,則能夠獲取到地址欄的信息(當前頁面的完整路徑) console.log(location) // 若是直接將location屬性修改成一個完整的路徑,或相對路徑,則咱們頁面會自動跳轉到該路徑,而且會生成相應的歷史記錄 // location = "http://www.baidu.com" // assign()- 用來跳轉到其餘的頁面,做用和直接修改location同樣 // location.assign("http://www.baidu.com") // reload() - 用於從新加載當前頁面,做用和刷新按鈕同樣,若是在方法中傳遞一個true,做爲參數,則會強制清空緩存刷新頁面 location.reload(true); // replace() - 可使用一個新的頁面替換當前頁面,調用完畢也會跳轉頁面,不會生成歷史記錄,不能使用回退按鈕回退 // location.replace("http://www.baidu.com") } </script> <pre> 127. 定時器簡介 JS的程序的執行速度是很是很是快的,若是但願一段程序,能夠每間隔一段時間執行一次,可使用定時調用. setInterval() - 定時調用 - 能夠將一個函數,每隔一段時間執行一次 - 參數: 1.回調函數,該函數會每隔一段時間被調用一次 2.每次調用間隔的時間,單位是毫秒 - 返回值: 返回一個Number類型的數據 這個數字用來做爲定時器的惟一標識. clearInterval()能夠用來關閉一個定時器 方法中須要一個定時器的標識做爲參數,這樣將關閉標識對應的定時器 </pre> <div id="count"></div> <script type="text/javascript"> console.log("第127"); var count =document.getElementById("count") var num = 1 var timer = setInterval(function(){ count.innerHTML = num++ if( num==11 ){ clearInterval(timer) } },1000) </script> <pre> 128. 切換圖片練習 </pre> <div class=""> <img id="img" src="images/1.jpg"/> <p> <button id="start" href="javascript:;">開始</button> <button id="stop" href="javascript:;">中止</button> </p> </div> <script type="text/javascript"> console.log("第128"); var img =document.getElementById("img") var start =document.getElementById("start") var stop =document.getElementById("stop") var imgArr = ["images/1.jpg","images/2.jpg","images/3.jpg","images/4.jpg","images/5.jpg"] var index = 0 var timer2 start.onclick = function(){ /* * 目前,咱們每點擊一次按鈕,就會開啓一個定時器, * 點擊屢次就會開啓多個定時器,這就致使圖片的切換速度過快, * 而且咱們只能關閉最後一次開啓的定時器 */ //在開啓定時器以前,須要將當前元素上的其餘定時器關閉 clearInterval(timer2) timer2 = setInterval(function(){ index++ index %= imgArr.length img.src = imgArr[index] },1000) } stop.onclick = function(){ clearInterval(timer2) } </script> <pre> 129. 修改div移動練習 </pre> <div id="editBox" style="height: 300px;position: relative;"> <div id="editMove" style="position: absolute;height: 100px;width: 100px;background-color: #f00;"></div> </div> <script type="text/javascript"> console.log("第129"); var dir = 0 var speed = 10 var timer3 var editBox = document.getElementById("editBox") var editMove = document.getElementById("editMove") timer3 = setInterval(function(){ switch(dir){ case 37: //alert("向左"); left值減少 editMove.style.left = editMove.offsetLeft - speed + "px"; break; case 39: //alert("向右"); editMove.style.left = editMove.offsetLeft + speed + "px"; break; case 38: //alert("向上"); editMove.style.top = editMove.offsetTop - speed + "px"; break; case 40: //alert("向下"); editMove.style.top = editMove.offsetTop + speed + "px"; break; } },30) editBox.onkeydown = function(event){ event = event || window.event dir = event.keyCode } editBox.onkeyup = function(){ dir=0 } </script> <pre> 130. 延時調用 延時調用一個函數不立刻執行,而是隔一段時間之後在執行,並且只會執行一次. 延時調用和定時調用的區別,定時調用會執行屢次,而延時調用只會執行一次. 延時調用和定時調用其實是能夠互相代替的,在開發中能夠根據本身須要去選擇. 使用clearTimeout()來關閉一個延時調用 </pre> <script type="text/javascript"> console.log("第130"); var ynum = 1 var timer4 = setTimeout(function(){ console.log(ynum++) },1000) clearTimeout(timer4) </script> </body> </html>
全部基礎課程連接:javascript
1.JavaScript基礎視頻教程總結(001-010章) 2.JavaScript基礎視頻教程總結(011-020章) 3. JavaScript基礎視頻教程總結(021-030章) 4. JavaScript基礎視頻教程總結(031-040章)css
5. JavaScript基礎視頻教程總結(041-050章) 6. JavaScript基礎視頻教程總結(051-060章) 7. JavaScript基礎視頻教程總結(061-070章) 8. JavaScript基礎視頻教程總結(071-080章)html
9. JavaScript基礎視頻教程總結(081-090章) 10. JavaScript基礎視頻教程總結(091-100章) 11. JavaScript基礎視頻教程總結(101-110章) 12. JavaScript基礎視頻教程總結(111-120章)java
13. JavaScript基礎視頻教程總結(121-130章) 14. JavaScript基礎視頻教程總結(131-140章)chrome
另外,歡迎關注個人新浪微博瀏覽器