亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

javascript中BOM部分基礎知識總結

2024-04-27 15:04:09
字體:
來源:轉載
供稿:網友
一、什么是BOM     BOM(Browser Object Document)即瀏覽器對象模型。     BOM提供了獨立于內容 而與瀏覽器窗口進行交互的對象;     由于BOM主要用于管理窗口與窗口之間的通訊,因此其核心對象是window;     BOM由一系列相關的對象構成,并且每個對象都提供了很多方法與屬性;     BOM缺乏標準,javaScript語法的標準化組織是ECMA,DOM的標準化組織是W3C,BOM最初是Netscape瀏覽器標準的一部分。 二、學習BOM學什么     我們將學到與瀏覽器窗口交互的一些對象,例如可以移動、調整瀏覽器大小的window對象,可以用于導航的location對象與history對象,可以獲取瀏覽器、操作系統與用戶屏幕信息的navigator與screen對象,可以使用document作為訪問HTML文檔的入口,管理框架的frames對象等。在這里,只介紹一些window對象等的基礎知識,其中會有一些ECMAscript的知識還會說明。其他對象Location、Screen、Navigator、History不一一詳細介紹了。。 BOM結構圖 三、window對象     window對象是js中的頂級對象,所有定義在全局作用域中的變量、函數都會變成window對象的屬性和方法,在調用的時候可以省略window。          例:打開窗口 window.open(url,target,param);               // url 要打開的地址     //target  新窗口的位置   _blank  _self  _parent(父框架)     //param  新窗口的一些設置     //返回值,新窗口的句柄          關閉窗口:window.close(); 
四、BOM零碎知識(window對象)1.定時器     延遲執行     setTimeout( [string | function] code, interval);                       clearTimeout([number] intervalId);復制代碼
 1 <body> 2 <input type="button" value="closeTimerId" id="btn"> 3 <script> 4     var btn = document.getElementById("btn"); 5     var timerId = setTimeout(function () { 6         alert("23333"); 7     }, 3000); 8     btn.onclick = function () {     //在設置的時間之前(3s內)點擊可以取消定時器 9         clearTimeout(timerId);10     }11 </script>12 </body>復制代碼         定時執行     var timerId = setInterval(code, interval);                       clearInterval(timerId);     //清除定時器 倒計時案例:復制代碼
 1 <body> 2 <input type="button" value="倒計時開始10" id="btn" disabled/> 3 <script> 4     var btn = document.getElementById("btn"); 5     var num = 10; 6     var timerId = setInterval(function () { 7         num--; 8         btn.value = "到時器開始" + num; 9         if (num == 0) {10             clearInterval(timerId);11             btn.disabled = false;12             btn.value = "同意,可以點了";13         }14     },1000);15 </script>    16 </body>復制代碼

 

2.offset系列方法 
offsetWidth和offsetHeightoffsetHeight的構成offsetHeight = height + padding + borderoffsetWidth相同
 offsetHeight和style.height的區別1. demo.style.height只能獲取行內樣式,否則無法獲取到2. .style.height是字符串(有單位px), offsetHeight是數值(無單位)3. .style.height可以設置行內樣式,但offsetHeight是只讀屬性,不可設置所以:demo.style.height獲取 某元素的真實高度/寬度,用.style.height來設置高度/寬度
offsetLeft和offsetTopoffsetLeft的構成1,到距離自身最近的(帶有定位的)父元素的 左側/頂部2,如果所有父級元素都沒有定位,則以body為準3,offsetLeft是自身border左側到父級padding左側的距離
 offsetLeft和style.left的區別1,style.left只能獲取行內樣式2,offsetLeft只讀,style.left可讀可寫3,offsetLeft是數值,style.left是字符串并且有單位px4,如果沒有定位,style.left獲取的數值可能是無效的5,最大的區別:offsetLeft以border左上角為基準, style.left以margin左上角為基準
offsetParent構成1. 返回該對象距離最近的帶有定位的父級元素2. 如果當前元素的所有父級元素都沒有定位(position為absolute或relative),那么offsetParent為body3. offsetLeft獲取的就是相對于offsetParent的距離
 與parentNode的區別parentNode始終指向的是當前元素的最近的父元素,無論定位與否
 offset示意圖 3.scroll系列方法 
scrollHeight和scrollWidth對象內部的實際內容的高度/寬度(不包括border)
scrollTop和scrollLeft被卷去部分的頂部/左側 到 可視區域 頂部/左側 的距離
onscroll事件滾動條滾動觸發的事件
頁面滾動坐標var scrollTop = window.pageYoffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
 scroll示意圖 4.client系列 clientX和clientY     獲取鼠標在可視區域的位置     clientX = width + padding,clientY = height + paddingclientLeft     邊框的寬度,若有滾動條的話,包括滾動條client示意圖 例: 獲得頁面可視區域的大小復制代碼
1 function client() {2             return {3                         clientWidth: window.innerWidth || document.body.clientWidth || document.documentElement.clientWidth || 0;4                         clientHeight: window.innerHeight || document.body.clientHeitght || document.documentElement.clientHeight || 0;5             };6 }復制代碼 5.事件參數e當事件發生的時候,系統會自動的給事件處理函數傳遞一個參數,會提供事件相關的一些數據,事件參數e瀏覽器的兼容性檢測: e = e || window.event 
e.pageX和e.pageY獲取鼠標在頁面中的位置(IE8中不支持pageX和pageY,支持window.event獲取參數事件)pageX = clientX + 頁面滾動出去的距離
 6.獲得計算后樣式的方法 
w3c標準window.get ComputedStyle(element, null)[屬性]
IE瀏覽器element.currentStyle[屬性]
封裝瀏覽器兼容性函數function getStyle(element, attr) {        if(window.getComputedStyle) {            return window.getComputedStyle(element, null)[attr];        } else {            return element.currentStyle[attr];        }    }

 7.事件補充注冊事件注冊事件的性能問題移除事件事件冒泡事件捕獲  事件的三個階段事件對象的常見屬性DOM筆記里有提到注冊事件和移除事件,這里著重講事件對象,事件對象的常見屬性     7.1 target 和currentTarget 
target始終是點擊的元素(IE8及之前是srcElement)
currentTarget執行事件處理函數的元素
this始終和currentTarget一樣
      7.2 事件冒泡用addEventListener注冊事件的時候,第三個參數是false,即是冒泡。      冒泡的好處 - 事件委托從一個例子中說明復制代碼
 1 <body> 2 <ul id="ul"> 3     <li>我是第1個li標簽</li> 4     <li>我是第2個li標簽</li> 5     <li>我是第3個li標簽</li> 6     <li>我是第4個li標簽</li> 7 </ul> 8 <input type="button" value="insertLi" id="btn"> 9 <script>10     var ul = document.getElementById("ul");11     var btn = document.getElementById("btn");12 //把本來應該給li注冊的事件,委托給ul,只需要給一個元素注冊事件13 //動態創建的li,也會執行預期的效果14     ul.addEventListener("click", test, false);     //注冊點擊事件15     btn.onclick = function () {     //點擊同樣會有alert16         var li = document.createElement("li");17         li.innerHTML = "我是新插入的li標簽";18         ul.appendChild(li);19     };20 //函數寫在注冊事件代碼之外,提高性能21     function test(e) {22         alert(e.target.innerText);23     }24 </script>25 </body>復制代碼

    

     當事件冒泡影響到了其他功能的實現時,需要阻止冒泡      
e.stopPRopagation( )IE8及之前:   event.cancleBubble = true;
          阻止默認行為的執行 
e.preventDefault()IE8及之前:  event.returnValue = false;
看一下阻止跳轉到百度的例子:復制代碼
 1 <body> 2     <a  id="link">百度</a> 3 <script> 4     var link = document.getElementById("link"); 5     link.addEventListener("click", fn, false); 6     function fn(e) { 7         e.preventDefault(); 8         //若用return false; 不起作用,若用link.onclick = function();return false可以阻止 9     }10 </script>11 </body>復制代碼       7.3 鼠標事件的參數 
e.type事件的類型,如click,mouSEOver
事件的3個階段1 捕獲階段 2 目標階段 3 冒泡階段
e.eventPhase事件階段
shiftKey/ctrlKey/altKey按下鼠標同時按下組合鍵
button獲取鼠標的按鍵
e.clientX和e.clientY獲取鼠標在可視區域的位置
還有7.2中的取消事件冒泡和阻止默認行為的執行 8.正則表達式     定義:     正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。      規則: 
1 元字符        .   匹配任何單個字符,除了換行        d  數字   /D 非數字       [0-9]        w  數字 字母 下劃線   /W 非     [0-9a-zA-Z_]        /s  空白   /S 非空白        /n  換行        /t  制表符
2 范圍– 匹配的是一個字符[0-9]  [0123]  [a-z]  [A-Z]  匹配的是一個字符
3 | 或者| 或者
4 量詞  -只修飾一個字符        a+  1個或多個a        a?   1個或0個a        a*   0個或多個a   a{x}  x個n   a{x,} 至少x個a   a{x,y}  x-y個a
5 開始結束          ^a  以a開始          a$  以a結束
6 ( ) 看成是一個整體,即分組 
7 匹配漢字[/u4e00-/u9fa5]
8 參數i  忽略大小寫g 全局匹配
9 ^在[ ]中的作用——取反 
10 貪婪模式和非貪婪模式默認情況  貪婪模式  <.+>               非貪婪模式  <.+?>
  
      8.1 正則表達式對象RegExp 復制代碼
1 <body>2     <a  id="link">百度</a>3 <script>4 //    var regularExpression =  new RegExp("http://d");     //第一種寫法5     var regularExpression = //d/;     //第二種寫法6     var str = "adfj23dald";7     console.log(regularExpression.test(str));     //test就是匹配方法,結果是true8 </script>9 </body>復制代碼      8.2 正則之匹配例:驗證電子郵箱復制代碼
//驗證電子郵箱    // abc@sohu.com    // 11111@QQ.com    // aaaaa@163.com    // abc@sina.com.cn      var reg = /^/w+@/w+/./w+(/./w+)?$/;     var str = "abc@sina.com.cn";     console.log(reg.test(str));復制代碼      8.3 正則之提取例:找數字
1 var str = "張三: 1000,李四:5000,王五:8000。";2 var reg = //d+/g;3 //默認情況下,找到第一個匹配的結果就返回,后面加個g,就是全局找4  var arr = str.match(reg);5 console.log(arr);

 

       8.4 正則之替換例:所有的逗號替換成句號
1 var str = "abc,efg,123,abc,123,a";2 str = str.replace(/,/g,".");3 console.log(str);

       8.5 正則的分組( )     在正則表達式中用( )把要分到一組的內容括起來,組分別是RegExp.1&nbsp;&nbsp;&nbsp; RegExp.2等等例:交換位置  源字符串”5=a, 6=b, 7=c”  要的結果”a=5, b=6, c=7”    
1 var str = "5=a, 6=b, 7=c";2 str = str.replace(/(/d+)=(/w+)/g, "$2=$1");3console.log(str);

 

 9.鍵盤事件對象 
方法keydown  按下時keypress  按下keyup  抬起時屬性 keyCode  鍵盤碼,只有數字和字母對應ASCII碼charCode  對應ASCII碼,只有在keypress中才生效(IE9+)
例:在切換鼠標焦點時,用enter鍵代替tab鍵 復制代碼
 1 <body> 2 <input type="text"><input type="text"><input id="t1" type="text"><input type="text"><input type="text"><input type="text"><inputtype="text"><input type="text"><input type="text"><input type="text"> 3 <script> 4     var inputs = document.body.getElementsByTagName("input"); 5     for(var i = 0, length = inputs.length; i < length ; i++) { 6         var input = inputs[i]; 7         //回車鍵的keyCode是13 8         if(input.type === "text") { 9             //按下回車,讓下一個文本框獲得焦點10             input.onkeydown = function (e) {11                 if(e.keyCode === 13) {12                     this.nextElementSibling.focus();//focus() 他觸發了onfocus事件13                 }14             }15         }16     }17 </script>18 </body>復制代碼

 

 補充:js中的instanceof運算符介紹判斷某個變量是不是某種類型的對象
1 var num = 5;2 var arr = [];3 console.log(num instanceof Array);          //false4 console.log(arr instanceof Array);            //true

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品对白刺激| 日韩av免费网站| 国产精品久久久久久久久久| 一本大道香蕉久在线播放29| 欧美国产精品va在线观看| 日韩在线视频中文字幕| 欧美国产日本在线| 亚洲第一精品夜夜躁人人爽| 97超级碰碰人国产在线观看| 亚洲精品wwwww| 国产精品自拍视频| 国产区亚洲区欧美区| 亚洲日本中文字幕| 亚洲第一天堂无码专区| 国产69久久精品成人看| 欧美午夜美女看片| 国产专区精品视频| 在线播放国产一区中文字幕剧情欧美| 国精产品一区一区三区有限在线| 九九精品视频在线| 久久国产精品久久久久| 中文字幕一区二区三区电影| 亚洲精品www久久久久久广东| 欧美黑人性猛交| 国产成人涩涩涩视频在线观看| 中文精品99久久国产香蕉| 国产精国产精品| 国产精品高潮呻吟久久av无限| 午夜精品久久久久久久99黑人| 精品国产欧美成人夜夜嗨| 亚洲成年网站在线观看| 91久久国产婷婷一区二区| 欧美精品电影在线| 成人动漫网站在线观看| 亚洲最大成人免费视频| 在线播放亚洲激情| 国产精品私拍pans大尺度在线| 国产精品欧美亚洲777777| 欧洲午夜精品久久久| 亚洲成色999久久网站| 国产日韩欧美日韩| 日韩精品中文字幕视频在线| 成人精品福利视频| 国产精品三级久久久久久电影| 国产精品久久不能| 国内精品久久久久影院 日本资源| 亚洲成人av中文字幕| 久久免费成人精品视频| 51午夜精品视频| 中文字幕亚洲综合久久| 欧美伦理91i| 久久久极品av| 欧美电影免费观看| 性色av一区二区咪爱| 欧美日韩性视频| 欧美人成在线视频| 午夜精品久久久久久久99黑人| 日本精品久久中文字幕佐佐木| 91精品久久久久久久久| 国产精品亚洲精品| 成人午夜在线观看| 欧美中文字幕视频| 九九热这里只有在线精品视| 日韩成人激情视频| 日韩福利在线播放| 久久免费少妇高潮久久精品99| 国产精品久久久久久久久久久久久| 日本免费在线精品| 日本午夜人人精品| 国模私拍一区二区三区| 日本午夜精品理论片a级appf发布| 中文字幕一区二区三区电影| 中文字幕精品久久久久| yw.139尤物在线精品视频| 欧美噜噜久久久xxx| 91tv亚洲精品香蕉国产一区7ujn| 国产精品永久免费视频| 中文字幕九色91在线| 日韩视频精品在线| 国产精品手机播放| 日韩av影片在线观看| 久久精品久久久久久国产 免费| 2020久久国产精品| 国产精品免费小视频| 精品久久久国产精品999| 久热在线中文字幕色999舞| 久精品免费视频| 国产欧美日韩精品在线观看| 日本成人激情视频| 久久久精品国产一区二区| 国产精品美乳在线观看| 亚洲人成人99网站| 亚洲第一色中文字幕| 俺去亚洲欧洲欧美日韩| 亚洲免费av片| 国产69精品久久久久久| 亚洲影院色在线观看免费| 国产精品第一页在线| 国产精品美女在线观看| 日韩中文字幕免费视频| 在线免费观看羞羞视频一区二区| 日日噜噜噜夜夜爽亚洲精品| 亚洲成人久久一区| 韩日精品中文字幕| 91久久久久久久久| 一二美女精品欧洲| 成人免费看黄网站| 国语自产精品视频在线看一大j8| 亚洲精品国产精品国产自| 国产精品成人一区二区三区吃奶| 亚洲免费视频一区二区| 国产91免费看片| 欧美亚洲免费电影| 欧美精品18videosex性欧美| 午夜精品久久久久久久男人的天堂| 国产91在线视频| 在线日韩日本国产亚洲| 欧美在线观看网址综合| 欧美大片免费观看在线观看网站推荐| 国产精品一区二区三区免费视频| 精品国产一区二区三区久久久| 久久精品中文字幕一区| 国产精品h在线观看| 欧美日韩爱爱视频| 日韩欧美在线国产| 91精品国产综合久久男男| 成人写真福利网| 高清一区二区三区日本久| 日韩av免费看网站| 欧美性受xxx| 久久久久久亚洲精品中文字幕| 中文日韩电影网站| 亚洲国产婷婷香蕉久久久久久| 欧美午夜激情视频| 欧美超级免费视 在线| 色狠狠久久aa北条麻妃| 日韩a**站在线观看| 国产成人精品免高潮在线观看| 亚洲香蕉av在线一区二区三区| 久久久999精品视频| 亚洲黄页视频免费观看| 国产日韩欧美视频在线| 亚洲免费福利视频| 亚洲人成在线观看网站高清| 国产精品视频永久免费播放| 久久av在线看| 亚洲欧美日韩一区在线| 91精品国产高清久久久久久91| 国产成人精品日本亚洲专区61| 久久久精品免费视频| 视频在线观看一区二区| 欧美性在线观看| 在线视频一区二区| 欧美激情乱人伦| 日韩av在线免费观看| 国产91精品网站| 久久露脸国产精品| 一个人www欧美| 欧美精品999| 欧美一区在线直播| 亚洲国产欧美日韩精品| 精品女同一区二区三区在线播放| 国产在线观看一区二区三区| 国产va免费精品高清在线观看|