版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
WEB前端標(biāo)準(zhǔn)在各瀏覽器中的實(shí)現(xiàn)差異貘2010-08-28歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍標(biāo)準(zhǔn)都說了什么?文檔格式:HTML布局:CSS與宿主環(huán)境有關(guān)腳本語(yǔ)言:Javascript文檔操作方式:DOM歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍IE的hasLayout與BlockFormattingContext規(guī)范異同linebox與InlineFromattingContexts的理解DOMAttributes與JSObject差異tracemonkey的腳本優(yōu)化HTTP頭內(nèi)編碼聲明在瀏覽器內(nèi)的容錯(cuò)影響主要話題IEHASLAYOUT
AND
BLOCKFORMATTINGCONTEXTS
歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍'Layout'是IE的專有概念,它決定了元素如何對(duì)其內(nèi)容進(jìn)行定位和尺寸計(jì)算,與其他元素的關(guān)系和相互作用,以及對(duì)應(yīng)用還有使用者的影響。MSDN"HasLayout"Overview:/en-us/library/bb250481(VS.85).aspxIE的haslayout與BlockFormattingContexts規(guī)范異同BlockFormattingContexts(塊格式化上下文)是W3CCSS2.1規(guī)范中的一個(gè)概念,它決定了元素如何對(duì)其內(nèi)容進(jìn)行定位,以及與其他元素的關(guān)系和相互作用。在BFC中,每一個(gè)元素左外邊與包含塊的左邊相接觸(對(duì)于從右到左的格式化,右外邊接觸右邊),即使存在浮動(dòng)也是如此(盡管一個(gè)元素的內(nèi)容區(qū)域會(huì)由于浮動(dòng)而壓縮),除非這個(gè)元素也創(chuàng)建了一個(gè)新的BFC。浮動(dòng)元素、絕對(duì)定位元素、inline-blocks、table-cells、table-captions以及'overflow'值不是'visible'的元素,會(huì)創(chuàng)建BFC?!咀ⅰ浚篊SS3中,將Blockformattingcontexts叫做flowroot。對(duì)于觸發(fā)方式也做了修改:Thevalueof‘position’isneither‘static’nor‘relative’見[CSS3]:/TR/css3-box/#block-level0歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍IE的hasLayout與BlockFormattingContexts規(guī)范異同在觸發(fā)hasLayout的元素和創(chuàng)建了BlockFormattingContexts的元素中,浮動(dòng)元素參與高度的計(jì)算?!咀ⅰ?IE8標(biāo)準(zhǔn)文檔模式下觸發(fā)了haslayout特性的元素不再擁有"清理"浮動(dòng)元素功能,它回歸了標(biāo)準(zhǔn)的BlockFormattingContexts規(guī)范
,只有創(chuàng)建BFC后才擁有此功能。<divstyle="width:300px;background:gray;overflow:auto;"> <divstyle="float:left;background:gold;">float:left</div></div>包含浮動(dòng)元素特性(浮動(dòng)清理):<divstyle="width:300px;background:gray;"> <divstyle="float:left;background:gold;">float:left</div></div>歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍IE的hasLayout與BlockFormattingContexts規(guī)范異同不能與浮動(dòng)元素相互覆蓋特性:<divstyle="width:300px;height:150px;background:gray"><divstyle="float:left;background:gold;margin:010px;">FloatBlock</div><divstyle="background:green;zoom:1;">BlockFormattingContent/haslayout</div></div><divstyle="width:300px;height:150px;background:gray"><divstyle="float:left;background:gold;margin:010px;">FloatBlock</div><divstyle="background:green;overflow:auto;">BlockFormattingContent/haslayout</div></div>歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍IE的hasLayout與BlockFormattingContexts規(guī)范異同不能與浮動(dòng)元素相互覆蓋特性:在觸發(fā)hasLayout的元素和創(chuàng)建了BlockFormattingContexts的元素中,浮動(dòng)元素參與高度的計(jì)算。【注】:IE8標(biāo)準(zhǔn)文檔模式下zoom:1不再觸發(fā)haslayout特性。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍在標(biāo)準(zhǔn)文檔模式中,合理利用blockformatingcontext與IE的haslayout特性實(shí)現(xiàn)兩列文字布局。IE的hasLayout與BlockFormattingContexts規(guī)范異同<style>*{margin:0;padding:0;font-size:14px;}ol{list-style:none;width:200px;}olli{overflow:hidden;}ollistrong{float:left;}ollip{_display:inline;overflow:auto;zoom:1;}/*用inlinehack修復(fù)IE6bug*/</style><ol><li><strong>內(nèi)容:</strong><p>“地球一小時(shí)”</p></li><li><strong>內(nèi)容.內(nèi)容:</strong><p>“地球一小時(shí)”</p></li><li><strong>內(nèi)容.容:</strong><p>“地球一小時(shí)”</p></li><li><strong>內(nèi)容.內(nèi)容.內(nèi)容:</strong><p>“地球一小時(shí)”</p></li></ol>歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍利用BFC和hasLayout清理LI容器內(nèi)浮動(dòng)元素,并利用BFC和haslayout區(qū)域不與浮動(dòng)框重合的特性,簡(jiǎn)單的實(shí)現(xiàn)兩列文字布局。IE的hasLayout與BlockFormattingContexts規(guī)范異同LINEBOX
AND
INLINEFROMATTINGCONTEXT歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍LineBox與InlineFromattingContext歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍LineBox是個(gè)計(jì)算值,它由line-height(height)和vertical-align特性值共同決定的,多個(gè)LineBoxs構(gòu)成了行內(nèi)格式化上下文每一個(gè)行內(nèi)元素會(huì)產(chǎn)生一個(gè)行內(nèi)框;行內(nèi)框會(huì)在行框內(nèi)橫向排列;'line-height'特性值指定了每個(gè)行內(nèi)非替換元素生成的行內(nèi)框的
確切
高度;行內(nèi)替換元素的高度由'height'特性值決定;文字在行內(nèi)框中垂直排列,上下空隙用半差異填補(bǔ);如果字號(hào)大于行內(nèi)框則文字從上下方向上溢出行內(nèi)框,并可能滲入到其他行框內(nèi)(行框是永遠(yuǎn)不會(huì)重疊的);'vertical-align'特性值指定了每個(gè)行內(nèi)框的垂直對(duì)齊方式;行框的頂邊界是這一系列垂直對(duì)齊的行內(nèi)框最高的頂邊框,底邊界是最低的底邊框。行框的高度是頂邊界到底邊界的距離。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍正常LineBox計(jì)算示意圖歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍IE6IE7IE8(Q)下LineBox計(jì)算錯(cuò)誤錯(cuò)誤的計(jì)算正確的計(jì)算歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍IE6IE7IE8(Q)下LineBox計(jì)算錯(cuò)誤正確的計(jì)算錯(cuò)誤的計(jì)算DOMATTRIBUTES
AND
JAVASCRIPTPROPERTY歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍DOMAttributes歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍這需要從DOM-Level-2的附錄D說起:AppendixD:ECMAScriptLanguageBinding根據(jù)W3CDOM規(guī)范附錄中DOM對(duì)象與ECMAScript規(guī)范中對(duì)象的綁定關(guān)系可知,DOM本身是一套接口實(shí)現(xiàn),調(diào)用相應(yīng)的方法或取得相應(yīng)的屬性,其返回值是嚴(yán)格遵循DOM本身規(guī)范的。而ECMAScript規(guī)范中描述的對(duì)象類型有其自身意義范疇,當(dāng)使用ECMAScript語(yǔ)法調(diào)用DOM是需要將兩者提供的不同對(duì)象類型間的綁定。比如某DOM方法返回一個(gè)Element對(duì)象,他被綁定到ECMAScript中一個(gè)對(duì)象(Object)上,如果對(duì)這個(gè)Object某屬性進(jìn)行賦值和取值操作,究竟是對(duì)Object對(duì)象本身屬性還是對(duì)Element對(duì)象屬性做相關(guān)操作呢?這就產(chǎn)生了二意性。由此DOM規(guī)范中提供了getAttribute與setAttribute方法用來明確為Element對(duì)象屬性做賦值取值操作。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍這兩者是綁定關(guān)系,但是他們都有相應(yīng)的方法設(shè)置、修改和刪除屬性。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍HTMLELEMENT=HTML的標(biāo)簽屬性(ElementAttribute)+JS對(duì)象內(nèi)屬性(ObjectProperty)<ElementAttributes/>+{JSObject:Propertys}DOMObject.*Attribute?方法用來對(duì)Element內(nèi)String型屬性進(jìn)行處理DOMObject.*方法用來對(duì)JSObjecte內(nèi)property屬性進(jìn)行處理歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍<divid="A"></div><script>varA=document.getElementById("A");A.setAttribute("myAttribute","DOMAttribute")A.myAttribute="ObjectProperty";A.innerHTML=A.getAttribute("myAttribute")+":"+A.myAttribute;</script>IE6IE7IE8print:ObjectProperty:ObjectPropertyotherprint:DOMAttribute:ObjectPropertyIE8以及以下版本瀏覽器中混淆了DOMAttribute和ObjectProperty導(dǎo)致以上問題出現(xiàn)。TRACEMONKEY
SCRIPTOPTIMIZATION歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍tracemonkey的腳本優(yōu)化歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍tracemonkey就是Firefox的腳本引擎啦~~functionfoo(){return2+4};alert(foo);Firefoxprint:functionfoo(){return6}otherprint:functionfoo(){return2+4};歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍tracemonkey的條件函數(shù)表達(dá)式邏輯語(yǔ)句中的函數(shù)定義會(huì)被轉(zhuǎn)換為函數(shù)表達(dá)式,這與它本身的優(yōu)化機(jī)制還有關(guān)系。先來看對(duì)邏輯語(yǔ)句的優(yōu)化:functionfoo(){if(true){functionA(){alert('A')}}else{functionA(){alert('B')}}A();}foo();alert(foo);歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍tracemonkey的條件函數(shù)表達(dá)式Firefoxprint:Afunctionfoo(){functionA(){alert("A");}A();}otherprint:Bfunctionfoo(){if(true){functionA(){alert('A')}}else{functionA(){alert('B')}}A();}Firefox中不可能被運(yùn)行到的分支被優(yōu)化掉了。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍tracemonkey的條件函數(shù)表達(dá)式規(guī)避其優(yōu)化策略,可以使用計(jì)算值代替TRUE。使用計(jì)算值避免Firefox對(duì)邏輯語(yǔ)句的優(yōu)化:functionfoo(){if(1===1){functionA(){alert('A')}}else{functionA(){alert('B')}}A();}foo();alert(foo);這樣Firefox就不會(huì)優(yōu)化代碼內(nèi)容了
。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍tracemonkey的條件函數(shù)表達(dá)式這就沒問題了么?還是看看結(jié)果吧:?。???!!無(wú)語(yǔ)了==botherprint:Bfunctionfoo(){if(1===1){functionA(){alert('A')}}else{functionA(){alert('B')}}A();}Firefoxprint:Afunctionfoo(){if(1===1){functionA(){alert('A')}}else{functionA(){alert('B')}}A();}歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍tracemonkey的條件函數(shù)表達(dá)式實(shí)際上問題是這樣的:JS引擎在處理腳本程序之前會(huì)對(duì)內(nèi)容作語(yǔ)法整理,由于JS內(nèi)沒有塊級(jí)作用域,函數(shù)聲明會(huì)被提高到當(dāng)前執(zhí)行塊(Global或Function)的頂端執(zhí)行。語(yǔ)法樹整理后代碼:functionfoo(){functionA(){alert('A')};functionA(){alert('B')};if(1===1){}else{}A();}同名函數(shù)A覆蓋前面的函數(shù)A,導(dǎo)致執(zhí)行結(jié)果為B。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍tracemonkey的條件函數(shù)表達(dá)式tracemonkey則處理的不是這么"規(guī)范"。這個(gè)引擎太聰明了,它認(rèn)為條件語(yǔ)句內(nèi)的函數(shù)聲明應(yīng)該是函數(shù)表達(dá)式,因此并不將其進(jìn)行比要的語(yǔ)法整理。tracemonkey語(yǔ)法樹整理后代碼:functionfoo(){varA;if(1===1){A=function(){alert('A')};}else{A=function(){alert('B')};}A();}同名函數(shù)表達(dá)式存在于不同分支語(yǔ)句中,并不產(chǎn)生覆蓋/重寫效果,實(shí)際結(jié)果為A。ENCODINGDECLARATION
INTHEBROWSERAFFECTS
THEFAULT-TOLERANT歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍編碼聲明在瀏覽器內(nèi)的容錯(cuò)影響確定一個(gè)文檔的字符編碼的優(yōu)先級(jí)順序(由高至低):HTTP"Content-Type"字段中的"charset"參數(shù)。
Content-Type:text/html;charset=ISO-8859-1META聲明中"http-equiv"為"Content-Type"對(duì)應(yīng)的值中的"charset"的值。
<METAhttp-equiv="Content-Type"content="text/html;charset=ISO-8859-1">元素的charset屬性。
<scriptcharset="iso-8859-1"src="XXX"></script>我們通常情況下為頁(yè)面設(shè)定的字符編碼信息所指對(duì)應(yīng)到瀏覽器內(nèi)部大多是字符編碼別名,如ISO-8859-1。指定了瀏覽器無(wú)法識(shí)別的字符編碼別名時(shí),瀏覽器參照上面的優(yōu)先級(jí)順序采用更低優(yōu)先級(jí)的字符編碼,以此類推。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍編碼聲明在瀏覽器內(nèi)的容錯(cuò)影響各瀏覽器對(duì)于沒有任何字符編碼設(shè)定的頁(yè)面所采用的編碼類型:<!DOCTYPEhtml><html><head></head><body><script>document.write((document.charset||document.characterSet).toUpperCase());</script></body></html>IE6IE7IE8FirefoxChromeSafariOpera字符編碼---GB2312×?·?±à??---ISO-8859-1字符編碼---GBK操作系統(tǒng)及瀏覽器語(yǔ)言均為簡(jiǎn)體中文。頁(yè)面中沒有設(shè)定任何的字符編碼信息,頁(yè)面自身的編碼為
GB2312。當(dāng)頁(yè)面沒有設(shè)置任何字符編碼信息或者瀏覽器無(wú)法識(shí)別HTTP頭字段以及META元素中所聲明的字符編碼信息時(shí),所有瀏覽器均會(huì)以各自在當(dāng)前語(yǔ)言版本下的默認(rèn)字符編碼顯示頁(yè)面。因?yàn)轫?yè)面自身的編碼為
GB2312,則Windows平臺(tái)下
IEFirefoxOpera
簡(jiǎn)體中文版的默認(rèn)字符編碼剛好為
GB2312,所以頁(yè)面中的字符顯示正常。歡迎到CSDN的跨瀏覽開發(fā)論壇發(fā)帖^_^版主WebAdvocate
很彪悍編碼聲明在瀏覽器內(nèi)的容錯(cuò)影響看一組特殊的例子:<?phpheader("Content-Type:text/html;charset=maccyrillic");?><!DOCTYPEHTML><html><head><metahttp-equiv="Content-Type"content="text/html;charset=b.i.g+5"/></head><bodystyle="font:24pxTahoma;">字符編碼---<script>document.write((document.charset||document.characterSet).toUpperCase());</script></body></html>IE6IE7IE8FirefoxChromeSafariOpera才絪絏---GB2312?r≤≈?s?X---X-MAC-CYRILLIC字符編碼---BIG5動(dòng)態(tài)頁(yè)面自身的編碼為
BIG5。IEFirefox
無(wú)法識(shí)別maccyrillic,也無(wú)法識(shí)別b.i.g+5,繼而采用了當(dāng)前語(yǔ)言版本的默認(rèn)編碼GB2312,與頁(yè)面自身的字符編碼
BIG5
不相符,導(dǎo)致頁(yè)面中的文字顯示異常。ChromeSafari
識(shí)別maccyrillic為合法的X-MAC-CYRILLIC。不再理會(huì)更低優(yōu)先級(jí)的編碼設(shè)置。Opera
無(wú)法識(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 夏季高溫施工措施
- 2025至2030年中國(guó)香香脆糖行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)電子式調(diào)節(jié)閥行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)新型多功能洗浴器行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)手持式割草機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)存貯設(shè)備行業(yè)投資前景及策略咨詢研究報(bào)告
- 醫(yī)療核心制度自查報(bào)告及整改措施
- 2025至2030年中國(guó)內(nèi)置式雙人電腦桌行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)Α-氧化鋁微粉行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年中國(guó)精梳棉毛兒童內(nèi)衣市場(chǎng)調(diào)查研究報(bào)告
- 電動(dòng)托盤搬運(yùn)車操作規(guī)程范文(2篇)
- 教育部中國(guó)特色學(xué)徒制課題:基于中國(guó)特色學(xué)徒制的“金教師”團(tuán)隊(duì)建設(shè)研究
- 【MOOC】輪滑高級(jí)教程-東北大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024年醫(yī)院副院長(zhǎng)工作總結(jié)范文(2篇)
- 【MOOC】診斷學(xué)-山東大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 周1530安全教育記錄
- 建筑工程管理與實(shí)務(wù)二級(jí)建造師考試試卷及解答參考
- 中國(guó)非遺文化魚燈介紹2
- 村集體經(jīng)濟(jì)入股分紅協(xié)議書
- 2024-2030年中國(guó)清潔供熱行業(yè)發(fā)展趨勢(shì)與投資前景預(yù)測(cè)報(bào)告版
- 2025屆上海市交大附中嘉定分校物理高二上期末達(dá)標(biāo)檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論