整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript 關(guān)于事件兼容寫法匯總

          JavaScript 關(guān)于事件兼容寫法匯總

          avascript添加事件、移除事件、阻止冒泡、阻止瀏覽器默認(rèn)行為等寫法(兼容IE/FF/CHROME)

          添加事件

          var addEvent=function( obj, type, fn ) {
              if (obj.addEventListener)
              obj.addEventListener( type, fn, false );
              else if (obj.attachEvent) {
              obj["e"+type+fn]=fn;
              obj.attachEvent( "on"+type, function() {
              obj["e"+type+fn].call(obj, window.event);
              } );
              }
          };

          使用方法:

          window.onload=function(){
          var it=document.getElementsByTagName("input")[0];
          addEvent(it,'click',f1);
          }

          移除事件

          var removeEvent=function( obj, type, fn ) {
              if (obj.removeEventListener)
              obj.removeEventListener( type, fn, false );
              else if (obj.detachEvent) {
              obj.detachEvent( "on" +type, obj["e"+type+fn] );
              obj["e"+type+fn]=null;
              }
          };

          阻止事件(包括冒泡和默認(rèn)行為)

          var stopEvent=function(e){
              e=e || window.event;
              if(e.preventDefault) {
              e.preventDefault();
              e.stopPropagation();
              }else{
              e.returnValue=false;
              e.cancelBubble=true;
              }
          },

          僅阻止事件冒泡

          var stopPropagation=function(e) {
              e=e || window.event;
              if (!+"\v1″) {
              e.cancelBubble=true; //否則,我們得使用IE的方法來(lái)取消事件冒泡
              } else {
              e.stopPropagation(); //因此它支持W3C的stopPropation()方法
              }
          }

          !+"\v1″的理解:

          其實(shí)就是利用各瀏覽器對(duì)轉(zhuǎn)義字符"\v"的理解

          在ie瀏覽器中,"\v"沒(méi)有轉(zhuǎn)義,得到的結(jié)果為"v"

          而在其他瀏覽器中"\v"表示一個(gè)垂直制表符(一定程度上相當(dāng)于空格)

          僅阻止瀏覽器默認(rèn)行為

          var preventDefault=function(e) {
              e=e || window.event;
              if(e.preventDefault) {
              e.preventDefault();
              }else{
              e.returnValue=false;
              }
          }

          取得事件源對(duì)象

          var getEventTarget=function(e){
              e=e || window.event;
              var target=event.srcElement ? event.srcElement : event.target;
              return target;
          }

          附:綁定onpropertychange事件

          onpropertychange, 它在一個(gè)元素的屬性發(fā)生變化的時(shí)候觸發(fā), 一般用在表單元素中捕獲其value值改變, 它比onchange事件更實(shí)時(shí)捕獲它的改變,

          不過(guò)為微軟私有事件。FF大致和它相似的有oninput事件, 不過(guò)它只針對(duì)textfield與textarea的value屬性。

          safari, firefox, chrome與opera都支持此事件。

          多人都說(shuō)HTML是一門很簡(jiǎn)單的語(yǔ)言,看看書,看看視頻就能讀懂。但是,如果你完全沒(méi)有接觸過(guò),就想通過(guò)看一遍教程,背背標(biāo)簽,想要完全了解HTML,真的有點(diǎn)太天真了。

          HTML中文“超文本標(biāo)記語(yǔ)言”,英文名叫HTML沒(méi)有變量,沒(méi)有循環(huán),沒(méi)有函數(shù),只是單純的一門靜態(tài)語(yǔ)言而已。你可以用來(lái)描述靜態(tài)的東西,比如標(biāo)題、段落、圖片。

          1)HTML通常被稱為靜態(tài)網(wǎng)頁(yè)

          2)HTML的一些標(biāo)簽代碼規(guī)則將內(nèi)容呈現(xiàn)在瀏覽器中所需的風(fēng)格。

          3)HTML可以使用記事本創(chuàng)建,并以.html為擴(kuò)展名保存。

          打開瀏覽器,例如打開百度的首頁(yè)

          這個(gè)頁(yè)面非常的簡(jiǎn)潔,但是包含了很多內(nèi)容,有文字、圖片、動(dòng)畫、超鏈接等一系列HTML頁(yè)面所能夠包含的元素。什么意思,也就是說(shuō),HTML頁(yè)面就是能夠包含文本、圖像、聲音、超鏈接等內(nèi)容的集合,然后通過(guò)瀏覽器對(duì)這些元素進(jìn)行渲染,就呈現(xiàn)出多彩的頁(yè)面。

          打開頁(yè)面的審查元素(快捷鍵是【F12】),就能夠看到構(gòu)成HTML頁(yè)面的所有元素,當(dāng)我們?cè)趯戫?yè)面,對(duì)頁(yè)面進(jìn)行調(diào)試的時(shí)候,也是通過(guò)審查元素,在這個(gè)窗口里面檢測(cè)問(wèn)題,所以審查的方法一定要掌握。


          一個(gè)HTML頁(yè)面最基本框架。

          優(yōu)點(diǎn)

          易于使用,松散的語(yǔ)法(雖然,過(guò)于靈活的將不符合標(biāo)準(zhǔn)),HTML還允許使用模板,這使設(shè)計(jì)網(wǎng)頁(yè)變得容易、對(duì)Web設(shè)計(jì)領(lǐng)域的初學(xué)者來(lái)說(shuō)非常有用。幾乎所有瀏覽器都支持該功能。被廣泛使用的; 建立在幾乎所有網(wǎng)站上。與XML語(yǔ)法非常相似,后者已越來(lái)越多地用于數(shù)據(jù)存儲(chǔ)。免費(fèi)-無(wú)需購(gòu)買任何軟件,即使對(duì)于新手程序員而言,都易于學(xué)習(xí)和編碼。

          缺點(diǎn)

          由于它是一種靜態(tài)語(yǔ)言,它不能單獨(dú)產(chǎn)生動(dòng)態(tài)輸出。有時(shí),HTML文檔的結(jié)構(gòu)難以掌握。程序錯(cuò)誤可能會(huì)導(dǎo)致高昂的代價(jià)。它只能創(chuàng)建靜態(tài)頁(yè)面和普通頁(yè)面,因此如果我們需要?jiǎng)討B(tài)頁(yè)面,則HTML無(wú)效。需要編寫大量代碼來(lái)制作簡(jiǎn)單的網(wǎng)頁(yè)。您必須跟上已棄用的標(biāo)記,并確保不要使用它們,因?yàn)槌霈F(xiàn)了另一種與HTML兼容的語(yǔ)言代替了標(biāo)記的原始工作。因此需要學(xué)習(xí)其他語(yǔ)言(大多數(shù)情況下是CSS)HTML提供的安全功能受到限制。

          在了解這么多之后,一定想要自己寫個(gè)HTML頁(yè)面試試手,那么HTML頁(yè)面怎么寫呢,用什么工具來(lái)寫呢?在電腦上建立一個(gè)hello.txt的文件,將下面的代碼粘貼復(fù)制進(jìn)去保存 。

          然后將后綴名修改為.html,用瀏覽器在頁(yè)面上看到hello world字樣的輸出,這就是第一個(gè)HTML頁(yè)面

          今天我們就先分享到這里啦,趕快去練練手吧~(私信我有免費(fèi)IT課程可以領(lǐng)取喲)

          什么會(huì)有瀏覽器兼容問(wèn)題

          瀏覽器兼容性問(wèn)題,是指因?yàn)椴煌臑g覽器標(biāo)準(zhǔn)不同對(duì)同一段代碼的解析有差異或者是統(tǒng)一瀏覽器由于版本的不同,導(dǎo)致支持的特性不一樣,造成頁(yè)面顯示效果不一致。在大多數(shù)情況下,我們的需求是,無(wú)論用戶用什么瀏覽器來(lái)查看我們的頁(yè)面,都應(yīng)該是統(tǒng)一的效果,所以需要一些方法讓他的頁(yè)面顯示效果一致。

          部分兼容問(wèn)題解決方案

          問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的內(nèi)外邊距不同

          //解決方案: 
           *{margin:0;padding:0;}
          

          問(wèn)題二:圖片默認(rèn)有間距

          解決方案:使用float屬性為img布局(問(wèn)題一中提到的通配符不起作用)

          問(wèn)題三:li之間有間距

          解決方法:li設(shè)置vertical-align:middle

          問(wèn)題四:標(biāo)簽最低高度設(shè)置min-height不兼容

          解決方案:設(shè)置一個(gè)標(biāo)簽的最小高度200px

          p{min-height:200px; 
           height:auto !important; 
           height:200px; 
           overflow:visible;
          } 
          

          問(wèn)題五:ie各個(gè)版本的hack

          //類內(nèi)部hack:
          .header {_width:100px;} /* IE6專用*/
          .header {*+width:100px;} /* IE7專用*/
          .header {*width:100px;} /* IE6、IE7共用*/
          .header {width:100px\0;} /* IE8、IE9共用*/
          .header {width:100px\9;} /* IE6、IE7、IE8、IE9共用*/
          .header {width:330px\9\0;} /* IE9專用*/
          
          //選擇器Hack:
          *html .header{} /*IE6*/ 
          *+html .header{} /*IE7*/ 
          

          問(wèn)題六:常見(jiàn)屬性的兼容情況

          • inline-block: >=ie8min-width/min-height: >=ie8:before,:after: >=ie8div:hover: >=ie7inline-block: >=ie8background-size: >=ie9圓角: >=ie9陰影: >=ie9動(dòng)畫/漸變: >=ie10

          問(wèn)題七:clear float

          .clearfix:after{
           content: '';
           display: block;
           clear: both;
          }
          .clearfix{
           *zoom: 1; /* 僅對(duì)ie67有效 */
          } 
          

          可能用到的技巧和工具

          • 條件注釋

          條件注釋 (conditional comment) 是于HTML源碼中被IE有條件解釋的語(yǔ)句。條件注釋可被用來(lái)向IE提供及隱藏代碼。

           <!--[if IE 6]>
           <p>You are using Internet Explorer 6.</p>
           <![endif]-->
           <!--[if !IE]><!-->
           <script>alert(1);</script>
           <!--<![endif]-->
           <!--[if IE 8]>
           <link href="ie8only.css" rel="stylesheet">
           <![endif]--> 
          
          • IE Hack

          IE條件注釋法(即HTML條件注釋Hack):針對(duì)所有IE(注:IE10+已經(jīng)不再支持條件注釋): <!--[if IE]>IE瀏覽器顯示的內(nèi)容 <![endif]-->,針對(duì)IE6及以下版本:<!--[if lt IE 6]>只在IE6-顯示的內(nèi)容 <![endif]-->。這類Hack不僅對(duì)CSS生效,對(duì)寫在判斷語(yǔ)句里面的所有代碼都會(huì)生效。

          • js 能力檢測(cè)

          能力檢測(cè)的目標(biāo)不是識(shí)別特定的瀏覽器,而是識(shí)別瀏覽器的能力。使用這種方式無(wú)需顧及瀏覽器如何如何,只需確定瀏覽器是否支持特定的能力,就可以給出相關(guān)的方案。

           //特性檢測(cè)
          if (object.propertyInQuestion) {
           //使用object.propertyInQuestion
           }
          
          • html5shiv.js

          瀏覽器IE8及以下IE版本對(duì)HTML5標(biāo)簽的支持是有限的,我們可以通過(guò)在網(wǎng)頁(yè)中添加腳本的方式來(lái)解決目前IE瀏覽器對(duì)HTML5支持的問(wèn)題。

          <!–[if IE]>
          <script src=”http://html5shiv.googlecode.com/svn/trunk/html5.js”></script> 
          <[endif]–>
          
          • Respond.js

          Respond.js讓不支持css3 Media Query的瀏覽器包括IE6-IE8等其他瀏覽器支持查詢兼容響應(yīng)式布局

          • css reset

          css reset重置樣式,清除瀏覽器默認(rèn)樣式,并配置適合設(shè)計(jì)的基礎(chǔ)樣式(強(qiáng)調(diào)文本是否大多是粗體、主文字色,主鏈接色,主字體等)。reset 的目的,是將所有的瀏覽器的自帶樣式重置掉,這樣更易于保持各瀏覽器渲染的一致性。例如 yui3 reset 中的一段:

          ol, ul {list-style: none}
          h1, h2, h3, h4, h5, h6 {font-size: 100%;font-weight: normal}
          
          • normalize

          Normalize.css 是一個(gè)可定制的 CSS 文件,使瀏覽器呈現(xiàn)的所有元素,更一致和符合現(xiàn)代標(biāo)準(zhǔn);是在現(xiàn)代瀏覽器環(huán)境下對(duì)于CSS reset的替代。 它正是針對(duì)只需要統(tǒng)一的元素樣式。該項(xiàng)目依賴于研究瀏覽器默認(rèn)元素風(fēng)格之間的差異,精確定位需要重置的樣式。 這是一個(gè)現(xiàn)代的,HTML5-ready 的 CSS 重置樣式集。bootstrap就使用了它,github的地址為:https://github.com/necolas/normalize.css/, Normalize.css做了以下幾件事:

          • 保護(hù)有用的瀏覽器默認(rèn)樣式而不是完全去掉它們一般化的樣式:為大部分HTML元素提供修復(fù)瀏覽器自身的bug并保證各瀏覽器的一致性優(yōu)化CSS可用性:用一些小技巧解釋代碼:用注釋和詳細(xì)的文檔來(lái)Modernizr

          Modernizr


          主站蜘蛛池模板: 精品一区二区三区在线播放| 色一情一乱一伦一区二区三欧美| 韩日午夜在线资源一区二区| 99国产精品一区二区| 亚洲香蕉久久一区二区| 日本高清成本人视频一区| 在线观看一区二区三区视频| 99精品国产一区二区三区不卡| 亚洲av区一区二区三| 国产MD视频一区二区三区| 国内精品视频一区二区三区八戒| 91精品一区二区综合在线 | 免费一区二区三区四区五区| 色狠狠色狠狠综合一区| 国产手机精品一区二区| 成人中文字幕一区二区三区| 日韩一区二区超清视频| 亚洲一区二区三区乱码在线欧洲| 色窝窝无码一区二区三区| 一区二区视频在线观看| 亚洲国产精品一区二区第一页| 亚洲日韩精品无码一区二区三区| 制服中文字幕一区二区| 久久99国产精一区二区三区 | 成人精品一区二区不卡视频| 国产精品亚洲午夜一区二区三区| 亚洲一区二区三区91| 色综合视频一区二区三区44| 四虎成人精品一区二区免费网站| 国产精品成人免费一区二区| 国产成人一区二区三区免费视频| 精品国产一区二区三区免费看| 国产一区二区三区无码免费| 一级毛片完整版免费播放一区 | 亚洲丰满熟女一区二区v| 在线精品亚洲一区二区| 无码人妻av一区二区三区蜜臀| 精品国产一区二区三区久久影院 | 波霸影院一区二区| 久久无码人妻精品一区二区三区| 国产熟女一区二区三区四区五区 |