精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript操作DOM的那些坑

開發 前端
js在操作DOM中存在著許多跨瀏覽器方面的坑,本文花了我將近一周的時間整理,我將根據實例整理那些大大小小的“坑”。

js在操作DOM中存在著許多跨瀏覽器方面的坑,本文花了我將近一周的時間整理,我將根據實例整理那些大大小小的“坑”。

DOM的工作模式是:先加載文檔的靜態內容、再以動態方式對它們進行刷新,動態刷新不影響文檔的靜態內容。

PS:IE 中的所有 DOM 對象都是以 COM 對象的形式實現的,這意味著 IE 中的 DOM可能會和其他瀏覽器有一定的差異。

Node 接口

 

firstChild 相當于 childNodes[0];lastChild 相當于childNodes[box.childNodes.length - 1]。

nodeType返回結點的類型

--元素結點返回1

--屬性結點返回2

--文本結點返回3

innerHTML 和 nodeValue

對于文本節點,nodeValue 屬性包含文本。

對于屬性節點,nodeValue 屬性包含屬性值。

nodeValue 屬性對于文檔節點和元素節點是不可用的。

兩者區別

  1. box.childNodes[0].nodeValue = '<strong>abc</strong>';//結果為:<strong>abc</strong> 
  2.  
  3. abcbox.innerHTML = '<strong>abc</strong>';//結果為:abc  

nodeName屬性獲得結點名稱

--對于元素結點返回的是標記名稱,如:<a herf><a>返回的是"a"

--對于屬性結點返回的是屬性名稱,如:class="test" 返回的是test

--對于文本結點返回的是文本的內容

tagName

document.getElementByTagName(tagName):返回一個數組,包含對這些結點的引用

getElementsByTagName()方法將返回一個對象數組 HTMLCollection(NodeList),這個數組保存著所有相同元素名的節點列表。

  1. document.getElementsByTagName('*');//獲取所有元素 

PS:IE 瀏覽器在使用通配符的時候,會把文檔最開始的 html 的規范聲明當作第一個元素節點。

  1. document.getElementsByTagName('li');//獲取所有 li 元素,返回數組 
  2.  
  3. document.getElementsByTagName('li')[0];//獲取第一個 li 元素,HTMLLIElement 
  4.  
  5. document.getElementsByTagName('li').item(0);//獲取第一個 li 元素,HTMLLIElement 
  6.  
  7. document.getElementsByTagName('li').length;//獲取所有 li 元素的數目  

節點的絕對引用:

返回文檔的根節點:document.documentElement

返回當前文檔中被擊活的標簽節點:document.activeElement

返回鼠標移出的源節點:event.fromElement

返回鼠標移入的源節點:event.toElement

返回激活事件的源節點:event.srcElement

節點的相對引用:(設當前對節點為node)

返回父節點:node.parentNode || node.parentElement(IE)

返回子節點集合(包含文本節點及標簽節點):node.childNodes

返回子標簽節點集合:node.children

返回子文本節點集合:node.textNodes

返回第一個子節點:node.firstChild

返回最后一個子節點:node.lastChild

返回同屬下一個節點:node.nextSibling

返回同屬上一個節點:node.previousSibling

節點信息

是否包含某節點:node.contains()

是否有子節點node.hasChildNodes()

創建新節點

createDocumentFragment()--創建文檔碎片節點

createElement(tagname)--創建標簽名為tagname的元素

createTextNode(text)--創建包含文本text的文本節點

獲取鼠標點擊事件的位置

 

以下所描述的屬性在chrome和Safari 都很給力的支持了。

問題一:Firefox,Chrome、Safari和IE9都是通過非標準事件的pageX和pageY屬性來獲取web頁面的鼠標位置的。pageX/Y獲取到的是觸發點相對文檔區域左上角距離,以頁面為參考點,不隨滑動條移動而變化

問題二:在IE 中,event 對象有 x, y 屬性(事件發生的位置的 x 坐標和 y 坐標)火狐中沒有。在火狐中,與event.x 等效的是event.pageX。event.clientX 與 event.pageX 有微妙的差別(當整個頁面有滾動條的時候),不過大多數時候是等效的。

offsetX:IE特有,chrome也支持。鼠標相比較于觸發事件的元素的位置,以元素盒子模型的內容區域的左上角為參考點,如果有boder,可能出現負值

問題三:

scrollTop為滾動條向下移動的距離,所有瀏覽器都支持document.documentElement。

其余參照:http://segmentfault.com/a/1190000002559158#articleHeader11

參照表

(+為支持,-為不支持):

offsetX/offsetY:W3C- IE+ Firefox- Opera+ Safari+ chrome+

x/y:W3C- IE+ Firefox- Opera+ Safari+ chrome+

layerX/layerY:W3C- IE- Firefox+ Opera- Safari+ chrome+

pageX/pageY:W3C- IE- Firefox+ Opera+ Safari+ chrome+

clientX/clientY:W3C+ IE+ Firefox+ Opera+ Safari+ chrome+

screenX/screenY:W3C+ IE+ Firefox+ Opera+ Safari+ chrome+

查看下方DEMO:

你會發現offsetX在Firefox下是undefined,在chrome和IE則會正常顯示。

https://jsfiddle.net/f4am208m/embedded/result/

 

offsetLeft和style.left區別

1.style.left返回的是字符串,比如10px。而offsetLeft返回的是數值,比如數值10

2.style.left是可讀寫的,offsetLeft是只讀的

3.style.left的值需要事先定義(在樣式表中定義無效,只能取到在html中定義的值),否則取到的值是空的

getComputedStyle與currentStyle

getComputedStyle()接受兩個參數:要取得計算樣式的元素和一個偽元素,如果不需要偽元素,則可以是null。然而,在IE中,并不支持getComputedStyle,IE提供了currentStyle屬性。

getComputedStyle(obj , false ) 是支持 w3c (FF12、chrome 14、safari):在FF新版本中只需要第一個參數,即操作對象,第二個參數寫“false”也是大家通用的寫法,目的是為了兼容老版本的火狐瀏覽器。

缺點:在標準瀏覽器中正常,但在IE6/7/8中不支持

  1. window.onload=function(){ 
  2.  
  3.     var oBtn=document.getElementById('btn'); 
  4.  
  5.     var oDiv=document.getElementById('div1'); 
  6.  
  7.   
  8.  
  9.     oBtn.onclick=function(){ 
  10.  
  11.         //alert(oDiv.style.width); //寫在樣式表里無法讀取,只能得到寫在行內的 
  12.  
  13.         //alert(getComputedStyle(oDiv).width); //適用于標準瀏覽器       IE6、7、8不識別 
  14.  
  15.         //alert(oDiv.currentStyle.width); //適用于IE瀏覽器,標準瀏覽器不識別 
  16.  
  17.         if(oDiv.currentStyle){ 
  18.  
  19.             alert(oDiv.currentStyle.width); 
  20.  
  21.         }else
  22.  
  23.             alert(getComputedStyle(oDiv).width); 
  24.  
  25.         } 
  26.  
  27.   
  28.  
  29.     }; 
  30.  
  31. };  

取消表單提交

  1. <script type="text/javascript"
  2.  
  3.     function listenEvent(eventObj,event,eventHandler){ 
  4.  
  5.         if(eventObj.addEventListener){ 
  6.  
  7.             eventObj.addEventListener(event,eventHandler,false); 
  8.  
  9.         }else if(eventObj.attachEvent){ 
  10.  
  11.             event = "on" + event; 
  12.  
  13.             eventObj.attachEvent(event,eventHandler); 
  14.  
  15.         }else
  16.  
  17.             eventObj["on" + event] = eventHandler; 
  18.  
  19.         } 
  20.  
  21.     } 
  22.  
  23.   
  24.  
  25.     function cancelEvent(event){ 
  26.  
  27.         if(event.preventDefault){ 
  28.  
  29.             event.preventDefault();//w3c 
  30.  
  31.         }else
  32.  
  33.             event.returnValue = true;//IE 
  34.  
  35.         } 
  36.  
  37.     } 
  38.  
  39.   
  40.  
  41.     window.onload = function () { 
  42.  
  43.         var form = document.forms["picker"]; 
  44.  
  45.         listenEvent(form,"submit",validateFields); 
  46.  
  47.     }; 
  48.  
  49.   
  50.  
  51.     function validateFields(evt){ 
  52.  
  53.         evt = evt ? evt : window.event; 
  54.  
  55.         ... 
  56.  
  57.         if(invalid){ 
  58.  
  59.             cancelEvent(evt); 
  60.  
  61.         } 
  62.  
  63.     } 
  64.  
  65. </script>  

確定瀏覽器窗口的尺寸

對于主流瀏覽器來說,比如IE9、Firefox,Chrome和Safari,支持名為innerWidth 和 innerHeight的窗口對象屬性,它返回窗口的視口區域,減去任何滾動條的大小。IE不支持innerWidth 和 innerHeight

  1. <script type="text/javascript"
  2.  
  3.     function size(){ 
  4.  
  5.         var w = 0, h=0; 
  6.  
  7.   
  8.  
  9.         if(!window.innerWidth){ 
  10.  
  11.             w = (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth); 
  12.  
  13.   
  14.  
  15.             h = (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight); 
  16.  
  17.         }else
  18.  
  19.             w = window.innerWidth; 
  20.  
  21.             h = window.innerHeight; 
  22.  
  23.         } 
  24.  
  25.         return {width:w,height:h}; 
  26.  
  27.     } 
  28.  
  29.   
  30.  
  31.     console.log(size());//Object { width: 1366, height: 633 } 
  32.  
  33. </script>  

實用的 JavaScript 方案(涵蓋所有瀏覽器):

  1. var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 
  2.  
  3. var h=window.innerHeight || document.documentElement.clientHeight|| document.body.clientHeight;  

對于 IE 6、7、8的方案如下:

  1. document.documentElement.clientHeight 
  2.  
  3. document.documentElement.clientWidth  

或者

  1. document.body.clientHeight 
  2.  
  3. document.body.clientWidth  

Document對象的body屬性對應HTML文檔的<body>標簽。Document對象的documentElement屬性則表示 HTML文檔的根節點。

attributes 屬性

attributes 屬性返回該節點的屬性節點集合。

  1. document.getElementById('box').attributes//NamedNodeMap 
  2.  
  3. document.getElementById('box').attributes.length;//返回屬性節點個數 
  4.  
  5. document.getElementById('box').attributes[0]; //Attr,返回最后一個屬性節點 
  6.  
  7. document.getElementById('box').attributes[0].nodeType; //2,節點類型 
  8.  
  9. document.getElementById('box').attributes[0].nodeValue; //屬性值 
  10.  
  11. document.getElementById('box').attributes['id']; //Attr,返回屬性為 id 的節點 
  12.  
  13. document.getElementById('box').attributes.getNamedItem('id'); //Attr  

setAttribute 和 getAttribute

在IE中是不認識class屬性的,需改為className屬性,同樣,在Firefox中,也是不認識className屬性的,Firefox只認識class屬性,所以通常做法如下:

  1. element.setAttribute(class, value); //for firefox 
  2.  
  3. element.setAttribute(className, value); //for IE  

IE:可以使用獲取常規屬性的方法來獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性

Firefox:只能使用getAttribute()獲取自定義屬性.

解決方法:統一通過getAttribute()獲取自定義屬性

  1. document.getElementById('box').getAttribute('id');//獲取元素的 id 值 
  2.  
  3. document.getElementById('box').id;//獲取元素的 id 值 
  4.  
  5. document.getElementById('box').getAttribute('mydiv');//獲取元素的自定義屬性值 
  6.  
  7. document.getElementById('box').mydiv//獲取元素的自定義屬性值, IE 不支持非 
  8.  
  9. document.getElementById('box').getAttribute('class');//獲取元素的 class 值,IE 不支持 
  10.  
  11. document.getElementById('box').getAttribute('className');//非 IE 不支持  

PS:在 IE7 及更低版本的IE瀏覽器中,使用 setAttribute()方法設置 class 和 style 屬性是沒有效果的,雖然 IE8 解決了這個bug,但還是不建議使用。

removeAttribute()方法

removeAttribute()可以移除 HTML 屬性。

document.getElementById('box').removeAttribute('style');//移除屬性

PS:IE6 及更低版本不支持 removeAttribute()方法。

跨瀏覽器事件Event對象

  1. <!doctype html> 
  2.  
  3. <html lang="en"
  4.  
  5. <head> 
  6.  
  7.     <meta charset="UTF-8"
  8.  
  9.     <title>Document</title> 
  10.  
  11.     <style type="text/css"
  12.  
  13.        #drop
  14.  
  15.            width: 300px; 
  16.  
  17.            height: 200px; 
  18.  
  19.            background-color: #ff0000; 
  20.  
  21.            padding: 5px; 
  22.  
  23.            border: 2px solid #000000; 
  24.  
  25.        } 
  26.  
  27.        #item{ 
  28.  
  29.            width: 100px; 
  30.  
  31.            height: 100px; 
  32.  
  33.            background-color: #ffff00; 
  34.  
  35.            padding: 5px; 
  36.  
  37.            margin: 20px; 
  38.  
  39.            border: 1px dashed black; 
  40.  
  41.        } 
  42.  
  43.        *[draggable = true]{ 
  44.  
  45.            -moz-user-select: none; 
  46.  
  47.            -webkit-user-select: none; 
  48.  
  49.            cursormove
  50.  
  51.        } 
  52.  
  53.     </style> 
  54.  
  55. </head> 
  56.  
  57. <body> 
  58.  
  59. <div> 
  60.  
  61.     <p>將金黃色的小方塊拖到紅色的大方塊中,不兼容IE7及以下瀏覽器,兼容主流瀏覽器!</p> 
  62.  
  63. </div> 
  64.  
  65. <div id="item" draggable="true"></div> 
  66.  
  67. <div id="drop"></div> 
  68.  
  69. <script type="text/javascript"
  70.  
  71.     function listenEvent(target,type,handler){ 
  72.  
  73.         if(target.addEventListener){//w3c 
  74.  
  75.             target.addEventListener(type,handler,false); 
  76.  
  77.         }else if(target.attachEvent){//IE 
  78.  
  79.             type = "on" + type; 
  80.  
  81.             target.attachEvent(type,handler);//IE 
  82.  
  83.         }else
  84.  
  85.             target["on" + type] = handler; 
  86.  
  87.         } 
  88.  
  89.     } 
  90.  
  91.   
  92.  
  93.     //取消事件 
  94.  
  95.     function cancelEvent(e){ 
  96.  
  97.         if(e.preventDefault){ 
  98.  
  99.             e.preventDefault();//w3c 
  100.  
  101.         }else
  102.  
  103.             e.returnValue = false;//IE 
  104.  
  105.         } 
  106.  
  107.     } 
  108.  
  109.     //取消傳遞 
  110.  
  111.     function cancelPropagation(e){ 
  112.  
  113.         if(e.stopPropagation){ 
  114.  
  115.             e.stopPropagation();//w3c 
  116.  
  117.         }else
  118.  
  119.             e.cancelBubble = true;//IE 
  120.  
  121.         } 
  122.  
  123.     } 
  124.  
  125.   
  126.  
  127.     window.onload = function () { 
  128.  
  129.         var target = document.getElementById('drop'); 
  130.  
  131.         listenEvent(target,'dragenter',cancelEvent); 
  132.  
  133.         listenEvent(target,"dragover",dragOver); 
  134.  
  135.         listenEvent(target,'drop'function (evt) { 
  136.  
  137.             cancelPropagation(evt); 
  138.  
  139.             evt = evt || window.event; 
  140.  
  141.             evt.dataTransfer.dropEffect = 'copy'
  142.  
  143.             var id = evt.dataTransfer.getData('Text'); 
  144.  
  145.             target.appendChild(document.getElementById(id)); 
  146.  
  147.         }); 
  148.  
  149.   
  150.  
  151.         var item = document.getElementById('item'); 
  152.  
  153.         item.setAttribute("draggable",'true'); 
  154.  
  155.         listenEvent(item,'dragstart'function (evt) { 
  156.  
  157.             evt = evt || window.event; 
  158.  
  159.             evt.dataTransfer.effectAllowed = 'copy'
  160.  
  161.             evt.dataTransfer.setData('Text',item.id); 
  162.  
  163.         }); 
  164.  
  165.     }; 
  166.  
  167.   
  168.  
  169.     function dragOver(evt){ 
  170.  
  171.         if(evt.preventDefault) evt.preventDefault(); 
  172.  
  173.         evt = evt || window.event; 
  174.  
  175.         evt.dataTransfer.dropEffect = 'copy'
  176.  
  177.         return false
  178.  
  179.     } 
  180.  
  181. </script> 
  182.  
  183. </body> 
  184.  
  185. </html>  

dataTransfer 對象

| 屬性 | 描述 |

| ————- |:————-:|

| dropEffect | 設置或獲取拖曳操作的類型和要顯示的光標類型 |

| effectAllowed | 設置或獲取數據傳送操作可應用于該對象的源元素 |

| 方法 | 描述 |

| ————- |:————-:|

| clearData | 通過 dataTransfer 或 clipboardData 對象從剪貼板刪除一種或多種數據格式 |

| getData | 通過 dataTransfer 或 clipboardData 對象從剪貼板獲取指定格式的數據

| setData | 以指定格式給 dataTransfer 或 clipboardData 對象賦予數據

HTML5拖拽的瀏覽器支持

Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放

為了使元素可拖動,需把 draggable 屬性設置為 true :

  1. <img draggable="true" /> 

| 事件 | 描述 |

| ————- |:————-:|

| dragstart | 拖拽事件開始 |

| drag | 在拖動操作上 |

| dragenter | 拖動到目標上,用來決定目標是否接受放置

|dragover | 拖動到目標上,用來決定給用戶的反饋

|drop | 放置發生

| dragleave| 拖動離開目標

|dragend | 拖動操作結束

上述代碼的一些瀏覽器兼容性:

1.為了兼容IE,我們將`window.event`賦給 `evt`,其他瀏覽器則會正確將接收到的`event`對象賦給`evt`。

2.w3c使用addEventListener來為事件元素添加事件監聽器,而IE則使用attachEvent。addEventListener為事件冒泡到的當前對象,而attachEvent是window

3.對于事件類型,IE需要加`on + type`屬性,而其他瀏覽器則不用

4.對于阻止元素的默認事件行為,下面是w3c和IE的做法:

e.preventDefault();//w3c

e.returnValue = false;//IE

5.對于取消事件傳播,w3c和IE也有不同的處理機制:

e.stopPropagation();//w3c

e.cancelBubble = true;//IE

跨瀏覽器獲取目標對象

  1. //跨瀏覽器獲取目標對象 
  2.  
  3. function getTarget(ev){ 
  4.  
  5.     if(ev.target){//w3c 
  6.  
  7.         return ev.target; 
  8.  
  9.     }else if(window.event.srcElement){//IE 
  10.  
  11.         return window.event.srcElement; 
  12.  
  13.     } 
  14.  
  15.  

對于獲取觸發事件的對象,w3c和IE也有不同的做法:

  1. event.target;//w3c 
  2.  
  3. event.srcElement;//IE  

我們可以使用三目運算符來兼容他們:

  1. obj = event.srcElement ? event.srcElement : event.target; 

innerText的問題

innerText在IE中能正常工作,但是innerText在FireFox中卻不行。

  1. <p id="element"></p> 
  2.  
  3. <script type="text/javascript"
  4.  
  5.     if(navigator.appName.indexOf("Explorer") >-1){ 
  6.  
  7.         document.getElementById('element').innerText = "my text"
  8.  
  9.     } else
  10.  
  11.         document.getElementById('element').textContent = "my text"
  12.  
  13.     } 
  14.  
  15. </script>  

跨瀏覽器獲取和設置innerText

  1. //跨瀏覽器獲取innerText 
  2.  
  3. function getInnerText(element){ 
  4.  
  5.     return (typeof element.textContent == 'string') ? element.textContent : element.innerText; 
  6.  
  7.  
  8. //跨瀏覽器設置innerText 
  9.  
  10. function setInnerText(element,text){ 
  11.  
  12.     if(typeof element.textContent == 'string'){ 
  13.  
  14.         element.textContent = text; 
  15.  
  16.     }else
  17.  
  18.         element.innerText = text; 
  19.  
  20.     } 
  21.  
  22.  

oninput,onpropertychange,onchange的用法

onchange觸發事件必須滿足兩個條件:

a)當前對象屬性改變,并且是由鍵盤或鼠標事件激發的(腳本觸發無效)

b)當前對象失去焦點(onblur);

onpropertychange的話,只要當前對象屬性發生改變,都會觸發事件,但是它是IE專屬的;

oninput是onpropertychange的非IE瀏覽器版本,支持firefox和opera等瀏覽器,但有一點不同,它綁定于對象時,并非該對象所有屬性改變都能觸發事件,它只在對象value值發生改變時奏效。

訪問XMLHTTPRequest對象

  1. <script type="text/javascript"
  2.  
  3.     if(window.XMLHttpRequest){ 
  4.  
  5.         xhr = new XMLHttpRequest();//非IE 
  6.  
  7.     }else if(window.ActiveXObject){ 
  8.  
  9.         xhr = new ActiveXObject("Microsoft.XMLHttp");//IE 
  10.  
  11.     } 
  12.  
  13. </script>  

禁止選取網頁內容

問題:

FF需要用CSS禁止,IE用JS禁止

解決方法:

IE: obj.onselectstart = function() {return false;}

FF: -moz-user-select:none;

三大不冒泡事件

所有瀏覽器的focus/blur事件都不冒泡,萬幸的是大部分瀏覽器支持focusin/focusout事件,不過可惡的firefox連這個都不支持。

IE6、7、8下 submit事件不冒泡。

IE6、7、8下 change事件要等到blur時才觸發。

萬惡的滾輪事件

滾輪事件的支持可謂是亂七八糟,規律如下:

IE6-11 chrome mousewheel wheelDetla 下 -120 上 120

firefox DOMMouseScroll detail 下3 上-3

firefox wheel detlaY 下3 上-3

IE9-11 wheel deltaY 下40 上-40

chrome wheel deltaY 下100 上-100

關于鼠標滾輪事件,IE支持mousewheel,火狐支持DOMMouseScroll。

判斷鼠標滾輪是向上還是向下,IE是通過wheelDelta屬性,而火狐是通過detail屬性

事件委托方法 

  1. //事件委托方法 
  2.  
  3. IE:document.body.onload = inject; //Function inject()在這之前已被實現 
  4.  
  5. FF:document.body.onload = inject();  

HTML5 的瀏覽器支持情況

  

 

來源地址:http://fmbip.com/litmus/

查詢操作

查詢通過指的是通過一些特征字符串來找到一組元素,或者判斷元素是不是滿足字符串。 

  1. IE6/7不區分id和nam在IE6/7下使用getElementById和getElementsByName時會同時返回id或name與給定值相同的元素。由于name通常由后端約定,因此我們在寫JS時,應保證id不與name重復。
  2. IE6/7不支持getElementsByClassName和querySelectorAll 這兩個函數從IE8開始支持的,因此在IE6/7下,我們實際可以用的只有getElementByTagName。
  3. IE6/7不支持getElementsByTagName(‘*’)會返回非元素節點 要么不用*,要么自己寫個函數過濾一下。
  4. IE8下querySelectorAll對屬性選擇器不友好 幾乎所有瀏覽器預定義的屬性都有了問題,盡量使用自定義屬性或者不用屬性選擇器。
  5. IE8下querySelectorAll不支持偽類 有時候偽類是很好用,IE8并不支持,jquery提供的:first、:last、:even、:odd、:eq、:nth、:lt、:gt并不是偽類,我們在任何時間都不要使用它們。
  6. IE9的matches函數不能處理不在DOM樹上的元素只要元素不在dom樹上,一定會返回false,實在不行把元素丟在body里面匹配完了再刪掉吧,當然了我們也可以自己寫匹配函數以避免回流。

 

資料參考:

http://w3help.org/zh-cn/kb/,

http://www.zhihu.com/question/29072028 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2010-09-13 17:12:55

JavaScript

2010-09-08 15:47:08

JavsScriptJavaScript

2010-09-08 16:50:11

JavaScriptDOM操作

2010-09-28 14:52:57

JavaScriptDOM

2016-04-06 11:29:58

JavaScriptDOM操作

2010-09-28 15:07:48

JavaScript

2022-05-15 08:13:50

Mysql數據庫Mycat

2021-09-07 14:35:48

DevSecOps開源項目

2020-04-21 15:18:11

財務信息化

2015-03-12 09:51:09

CoreDataiCloud

2021-08-30 10:25:48

JavaScript進階操作前端

2021-08-26 10:25:04

JavaScript進階操作 前端

2022-07-06 07:42:14

DOMHook標簽

2017-07-06 11:41:48

CIOIT技術

2017-03-31 10:27:08

推送服務移動

2020-05-28 16:15:50

HTTP暗坑前端

2013-04-12 15:59:33

2019-12-11 09:23:51

JavaScriptHTMLXML

2010-09-28 15:12:27

Javascript

2010-09-08 09:59:46

JavaScriptDOM操作
點贊
收藏

51CTO技術棧公眾號

国产精品视频播放| 亚洲男人第一av网站| 国产精品国三级国产av| 成人午夜精品福利免费| 亚洲综合日本| www日韩欧美| 国产高潮视频在线观看| 性欧美freehd18| 亚洲美女视频在线| 蜜桃精品久久久久久久免费影院| 日韩乱码一区二区三区| 欧美福利视频| 国产亚洲xxx| 久久久久99人妻一区二区三区| 麻豆mv在线看| 尤物在线观看一区| 日韩福利视频| 日本xxxxwww| 精品一区二区av| 国产91在线播放九色快色| 婷婷色中文字幕| 四虎成人av| 亚洲精品99久久久久| 污污的网站免费| 亚洲精品88| 一区二区三区不卡在线观看| 色噜噜一区二区| 香蕉av一区二区三区| 国产麻豆9l精品三级站| 国产精品电影一区| 国产精品视频久久久久久久| 欧美黄色一级视频| 久久精品在线视频| 日韩不卡av在线| 亚洲性视频大全| 精品成人佐山爱一区二区| 欧美在线aaa| 92国产精品| 午夜精品久久久久久久久| 精品国产三级a∨在线| 川上优的av在线一区二区| 成人黄色国产精品网站大全在线免费观看| 国产欧美精品日韩精品| 色一情一乱一伦| 99视频+国产日韩欧美| 欧美激情精品久久久久久蜜臀| 国产又色又爽又高潮免费 | 亚洲自拍另类欧美丝袜| 中文字幕人妻丝袜乱一区三区| 午夜在线视频观看日韩17c| 韩国精品美女www爽爽爽视频| 中文字幕手机在线观看| 天天影视综合| 久久九九精品99国产精品| 亚洲一区 欧美| 蜜臀91精品国产高清在线观看| √天堂8资源中文在线| 国产电影精品久久禁18| 国产一区视频在线播放| 这里只有精品国产| 蜜臀av性久久久久蜜臀aⅴ四虎| 浅井舞香一区二区| 国产免费av一区| 亚洲一区日韩| 国产精品99久久久久久人 | 免费无码一区二区三区| 久久久久高潮毛片免费全部播放| 精品久久一二三区| 亚洲啪av永久无码精品放毛片| 国产欧美三级电影| 亚洲精品小视频在线观看| 一本色道久久综合亚洲精品图片 | 四虎一区二区| 成人在线免费观看| 中文字幕精品综合| 中文字幕在线亚洲三区| 成a人片在线观看| 欧洲美一区二区三区亚洲| 六月丁香久久丫| 亚洲国产精品字幕| 欧美黑人欧美精品刺激| 亚洲欧洲av| 伊人久久综合97精品| 96精品视频在线| 亚洲国产123| 欧美激情1区2区| 久久久亚洲福利精品午夜| 青青操免费在线视频| 三级在线观看一区二区| 91久久精品美女高潮| 农村少妇久久久久久久| 国产婷婷一区二区| 久久久久亚洲av无码专区喷水| 日韩av毛片| 色久优优欧美色久优优| 国产农村妇女精品久久| 美国一区二区| 最新国产精品拍自在线播放| 动漫精品一区一码二码三码四码| 久久激情中文| 3d蒂法精品啪啪一区二区免费| 五月婷婷六月激情| 成人欧美一区二区三区小说| 久久久性生活视频| 日韩五码电影| 亚洲国产欧美一区二区三区久久| 亚洲精品国产精品国自产网站| 欧美三区视频| 国产精品十八以下禁看| 天天干天天干天天干| 国产精品久久久久aaaa樱花 | 在线不卡视频| 国产精品偷伦一区二区| 日韩一卡二卡在线| 亚洲同性同志一二三专区| 18禁免费无码无遮挡不卡网站| 偷拍自拍亚洲| 一区二区亚洲欧洲国产日韩| 国产一级大片在线观看| 麻豆成人91精品二区三区| 国内精品一区二区| 在线中文免费视频| 欧美日韩国产综合草草| 在线免费观看麻豆| 亚洲无吗在线| 99在线免费观看视频| 日本中文字幕伦在线观看| 日韩欧中文字幕| 亚洲中文字幕无码一区| 国内自拍一区| 91精品国产一区二区三区动漫| 欧美尤物美女在线| 91福利视频久久久久| www.中文字幕av| 99视频精品| 国产一区免费视频| 成年人国产在线观看| 欧美一区二区福利在线| 91制片厂在线| 久草精品在线观看| 亚洲精品一区二区毛豆| 日本一区二区电影| 在线观看中文字幕亚洲| 日韩精品一区二区亚洲av观看| 99久久久精品| 国产精品沙发午睡系列| 神马香蕉久久| 51精品在线观看| 五月婷婷开心中文字幕| 色综合天天综合网天天看片| 国产全是老熟女太爽了| 久久视频一区| 午夜一区二区三区| 久久精品嫩草影院| 日韩网站免费观看高清| 国产精品久久婷婷| 亚洲精品免费一二三区| 美女露出粉嫩尿囗让男人桶| 亚洲激情欧美| 蜜桃狠狠色伊人亚洲综合网站| 伊人久久精品一区二区三区| 亚洲欧美成人网| 亚洲高清视频免费观看| 中文字幕一区二区三区不卡| 天天操精品视频| 亚洲欧洲综合| 欧美日本韩国国产| 狂野欧美性猛交xxxx| 久久久成人精品视频| 亚洲第一页在线观看| 精品久久久国产| 一区二区三区在线观看免费视频| 久久精品国产免费| 99久热在线精品视频| 国产精品视屏| 国产精品96久久久久久| 欧美极品视频| 亚洲成人av在线播放| 狠狠人妻久久久久久综合| 欧美国产日韩在线观看| 精品无码av一区二区三区不卡| 日韩午夜在线| 亚洲欧洲日韩精品| 2023国产精华国产精品| 青草热久免费精品视频| 免费网站免费进入在线| 精品国产免费一区二区三区四区| 狠狠人妻久久久久久| 国产精品国产三级国产普通话99 | 日韩精品免费| 99视频在线播放| 国模冰冰炮一区二区| 日韩视频―中文字幕| 亚洲日本国产精品| 4438x成人网最大色成网站| 成年人免费高清视频| 国产精品国模大尺度视频| 亚洲av无码一区东京热久久| 日本不卡视频在线| 成人午夜精品久久久久久久蜜臀| 国产一区二区三区电影在线观看| 成人中文字幕在线观看| 国产精品伦理| 欧美日本精品在线| 成全电影播放在线观看国语| 亚洲激情久久久| 97精品久久人人爽人人爽| 精品人伦一区二区三区蜜桃网站| 亚洲一级片在线播放| caoporn国产精品| 男女污污视频网站| 久久久夜夜夜| 3d动漫一区二区三区| 亚洲欧美综合久久久| 日韩资源av在线| 欧美一级二级三级视频| 97免费资源站| 日韩福利影视| 国产精品久久久一区| 精精国产xxxx视频在线播放| 欧美成人精品xxx| 在线看免费av| 亚洲视频axxx| 日韩精品视频无播放器在线看| 日韩美女一区二区三区四区| 一级特黄特色的免费大片视频| 日韩欧美中文字幕在线观看 | 色哟哟一区二区在线观看| 精品一区二区三区人妻| 亚洲男人的天堂一区二区| 男女男精品视频网站| 国产网站一区二区| 性欧美13一14内谢| 91香蕉视频污| 亚洲第一黄色网址| www.欧美日韩国产在线| 亚洲乱妇老熟女爽到高潮的片 | 日本大片在线播放| 久久精品国产久精国产一老狼 | 成人免费公开视频| 欧美videossexotv100| av网站在线观看免费| 欧美一区二区三区性视频| 91 中文字幕| 欧美日韩卡一卡二| 一区二区日韩视频| 欧美日韩高清影院| 国产精品欧美亚洲| 欧美一区二区黄色| 国产18精品乱码免费看| 亚洲成人网在线| 日批视频免费播放| 亚洲精品小视频| 粉嫩av在线播放| 中文字幕亚洲二区| 免费a级在线播放| 久久成人国产精品| 日韩少妇视频| 97在线看福利| 成人视屏在线观看| 91精品国产自产在线老师啪| 成人乱码手机视频| 国产精品v欧美精品∨日韩| www国产精品| 欧美二区三区在线| 欧美影院三区| 国产女主播av| 亚洲精品一级| 国产性生交xxxxx免费| 久久99国产精品尤物| 1314成人网| 91蜜桃婷婷狠狠久久综合9色| 中文字幕国产专区| 国产精品二区一区二区aⅴ污介绍| h色网站在线观看| 偷拍亚洲欧洲综合| 国产精品免费无遮挡无码永久视频| 欧美日韩精品专区| 亚洲国产精品久久久久久6q| 精品视频一区在线视频| 午夜在线免费观看视频| 精品少妇v888av| 这里有精品可以观看| 成人黄色网免费| 国产精品色在线网站| 亚洲精品中文字幕在线| 国内激情久久| 国产xxxxx视频| 国产精品1区二区.| 男女黄床上色视频| 亚洲特黄一级片| 精品91久久久| 欧美另类久久久品| 手机福利在线| 久久大大胆人体| 亚洲精品**中文毛片| 97超碰人人模人人爽人人看| 欧美日本成人| 成年女人18级毛片毛片免费| 蜜乳av一区二区| 中国一级特黄录像播放| 日韩美女视频一区二区| 男人午夜免费视频| 精品精品国产高清a毛片牛牛| 岛国在线大片| 2019中文在线观看| 国产成人久久精品一区二区三区| 日本高清一区| 激情久久久久久久| 日韩a一级欧美一级| 久久久精品国产免费观看同学| 黄页网站免费观看| 欧美日韩中文字幕一区| 欧洲亚洲在线| 久久久久亚洲精品| 久久av网站| 一区二区三区国产福利| 日韩精品视频网站| 午夜一区二区三区免费| 亚洲午夜精品一区二区三区他趣| 97人妻精品一区二区三区| 伊人久久大香线蕉av一区二区| 一本大道色婷婷在线| 国产精品一区二区免费| 欧美啪啪一区| 国内精品国产三级国产aⅴ久| 国产精品理论在线观看| 午夜精品一区二| 精品偷拍一区二区三区在线看| av在线不卡免费| 国产98在线|日韩| 欧美另类专区| 国产性猛交96| 亚洲一区二区三区不卡国产欧美| 99精品国产99久久久久久97| 日韩中文在线中文网在线观看| av成人在线播放| 亚洲国产精品一区在线观看不卡 | 999国产精品视频| 国产主播中文字幕| 欧美韩日一区二区三区四区| 久久久久久无码精品大片| 亚洲欧洲在线视频| 三级成人黄色影院| 日韩伦理一区二区三区av在线| 免费在线日韩av| 免费视频91蜜桃| 欧美亚一区二区| 91在线观看| 亚洲va电影大全| 国产一区二区三区四区三区四| 激情av中文字幕| 亚洲成人一区二区在线观看| 天天av天天翘| 热久久美女精品天天吊色| 欧美男男gaytwinkfreevideos| 久久综合久久色| 亚洲国产精华液网站w| 亚洲视频中文字幕在线观看| 久久伊人色综合| 6080成人| 精品国产成人av在线免| 中文字幕国产一区| 国产又粗又猛又黄又爽| 欧美另类99xxxxx| 老汉色老汉首页av亚洲| 日韩黄色片视频| 国产精品国产自产拍在线| 不卡视频免费在线观看| 91国产在线精品| 欧美中文字幕一区二区| 久久综合在线观看| 五月婷婷激情综合| 丁香在线视频| 翡翠波斯猫1977年美国| 一本色道久久综合一区| www成人啪啪18软件| 欧美一卡二卡在线观看| 亚洲第一av| 黄色免费高清视频| 99re亚洲国产精品| 中国女人真人一级毛片| 久热爱精品视频线路一| 嫩草国产精品入口| 久久国产精品国产精品| 亚洲综合网站在线观看| 三级黄视频在线观看| 96sao精品视频在线观看| 亚洲欧美日韩视频二区| 九九热最新地址| 亚洲欧洲美洲在线综合| 国产精品igao视频网网址不卡日韩| 九色自拍视频在线观看| 国产精品三级电影| 天天影院图片亚洲| 亚洲影视中文字幕| 日韩高清一区在线| 欧美一级高潮片| 久久综合九色九九| 国产精品欧美在线观看|