網(wǎng)頁顯示不能創(chuàng)建xmlhttprequest 前端面試的時候,問到兼容性問題怎么回答?
前端面試的時候,問到兼容性問題怎么回答?不同瀏覽器的內(nèi)核也可能不同,所以各個瀏覽器對網(wǎng)頁的解析必然是有的差異。瀏覽器內(nèi)核比較多兩類兩種,一是渲染引擎,那個是js引擎,內(nèi)核極其傾向于說渲染引擎。最常見的
前端面試的時候,問到兼容性問題怎么回答?
不同瀏覽器的內(nèi)核也可能不同,所以各個瀏覽器對網(wǎng)頁的解析必然是有的差異。瀏覽器內(nèi)核比較多兩類兩種,一是渲染引擎,那個是js引擎,內(nèi)核極其傾向于說渲染引擎。最常見的一種的瀏覽器內(nèi)核:
有所不同瀏覽器的默認(rèn)樣式必然差異,可以可以使用磨平這些差異。
1.不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)丁和內(nèi)補(bǔ)丁完全不同
問題癥狀:你隨便寫幾個標(biāo)簽,不加樣式操縱的情況下,各自的margin和padding差異減小。
遇到頻率:100%
解決方案:CSS里*{margin:0padding:0}
備注:這個是最常見的也是也易解決的一個瀏覽器兼容性問題,幾乎所有的CSS文件開頭都會用通配符*來系統(tǒng)設(shè)置各個標(biāo)簽的內(nèi)外補(bǔ)丁是0。
2.塊屬性標(biāo)簽float后,又有橫行的margin情況下,在IE6總是顯示margin比可以設(shè)置的大
問題癥狀:常見癥狀是IE6中后面的一塊被頂?shù)较乱恍?/p>
接觸頻率:90%(還好奇怪點(diǎn)的頁面都會見到過,float布局最常見的瀏覽器不兼容問題)
解決方案:在float的標(biāo)簽樣式再控制中參加display:inline將其能量轉(zhuǎn)化為行內(nèi)屬性
備注:我們最常用的就是divCSS整個布局了,而div是兩個是是的塊屬性標(biāo)簽,橫向布局的時候我們正常情況都是用divfloat利用的,斜向的間距設(shè)置如果沒有用margin實(shí)現(xiàn)程序,這那是一個必然會會見到過的兼容性問題。
3.設(shè)置較大高度標(biāo)簽(一般大于110px),在IE6,IE7,360急速中水平距離遠(yuǎn)遠(yuǎn)超過自己系統(tǒng)設(shè)置高度
問題癥狀:IE6、7和遨游里這個標(biāo)簽的高度不受操縱,遠(yuǎn)遠(yuǎn)超出自己設(shè)置的高度
出現(xiàn)頻率:60%
解決方案:給遠(yuǎn)遠(yuǎn)超出垂直距離的標(biāo)簽設(shè)置中overflow:hidden的或設(shè)置中行高line-height小于等于你設(shè)置中的高度。
備注:那種情況好象出現(xiàn)在我們可以設(shè)置小圓角背景的標(biāo)簽里。再次出現(xiàn)這個問題的原因是IE8之前的瀏覽器都會給標(biāo)簽一個最大時設(shè)置的行高的高度。就算你的標(biāo)簽是空的,這個標(biāo)簽的高度那就會至少默認(rèn)的行高。
4.行內(nèi)屬性標(biāo)簽,設(shè)置里display:block后采用pointer布局,又有劃地為王的margin的情況,IE6間距bug
問題癥狀:IE6里的間距比將近設(shè)置中的間距
接觸幾率:20%
解決方案:在display:block后面加入到display:inlinedisplay:table
備注:行內(nèi)屬性標(biāo)簽,是為設(shè)置中寬高,我們要設(shè)置里display:block(除開input標(biāo)簽比較比較普通)。在用float布局并有縱向的margin后,在IE6下,他就具備了塊屬性float后的縱向margin的bug。不過畢竟它本身那就是行內(nèi)屬性標(biāo)簽,所以我們再另外display:inline的話,它的高寬就絕對不可設(shè)了。這時候我們還不需要在display:inline后面加入到display:talbe。
5.圖片默認(rèn)有間距
問題癥狀:幾個upload標(biāo)簽裝在一起的時候,有些瀏覽器會有默認(rèn)的間距,加了問題一中說起的通配符也不起作用。
接觸幾率:20%
解決方案:在用float64屬性為obj布局
備注:是因?yàn)閕mg標(biāo)簽是行內(nèi)屬性標(biāo)簽,所以我只要不遠(yuǎn)遠(yuǎn)超過容器寬度,image2標(biāo)簽都會排在一行里,但部分瀏覽器的img標(biāo)簽之間會有個間距。去掉后這個間距可以使用float是正道。(我的一個學(xué)生在用負(fù)margin,雖說能幫忙解決,但負(fù)margin本身就是很難過多瀏覽器兼容問題的用法,所以才我私自他們不使用)
6.標(biāo)簽最低相同高度設(shè)置中min-height不不兼容
問題癥狀:而且min-height本身那就是一個不兼容性的CSS屬性,因?yàn)橄到y(tǒng)設(shè)置min-height時不能不能很好的被各個瀏覽器兼容性問題
接觸幾率:5%
解決方案:假如我們要系統(tǒng)設(shè)置一個標(biāo)簽的最大時高度200px,需要并且的設(shè)置為:{min-height:200pxheight:auto!importantheight:200pxoverflow:visible}
備注:在B/S系統(tǒng)前端開時,有很多情況下我們又這種需求。當(dāng)內(nèi)容小于一個值(如300px)時。容器的水平距離為300px;當(dāng)內(nèi)容水平距離小于這個值時,容器相同高度被撐高,而不是什么會出現(xiàn)滾動條。這時候我們可能會面隊(duì)這個兼容性問題。
7.透明度的兼容性問題CSS設(shè)置
.transparent_class{filter:alpha(opacity50)-moz-opacity:0.5-khtml-opacity:0.5opacity:0.5}
假如我們熟得不能再熟標(biāo)簽的默認(rèn)屬性的話,就能很好的理解為什么不會直接出現(xiàn)兼容問題問題包括咋去解決的辦法這些兼容性問題問題。
◆IE6見過的是下劃線_和星號*
◆IE7火狐認(rèn)識的是星號*
比如這樣的一個CSS設(shè)置:
height:300px*height:200px_height:100pxIE6瀏覽器在讀到height:300px的時候會以為高時300px;一直往外讀,他也熟悉*heihgt,所以才當(dāng)IE6讀到*height:200px的時候會覆蓋掉前一條的相無關(guān)設(shè)置里,以為水平距離是200px。再繼續(xù)往下讀,IE6還認(rèn)識_height,所以才他又會瞬間覆蓋掉200px高的設(shè)置,把相同高度可以設(shè)置為100px;
IE7和傲游確實(shí)是一樣的從高度300px的設(shè)置往下讀。當(dāng)它們讀到*200px200px的時候就停下來了,因?yàn)樗鼈儾徽J(rèn)識_height。所以我它們會把一定高度解析為200px,剩的瀏覽器只不認(rèn)識第一個height:300px所以我他們會把高度解析為300px。而且優(yōu)先級完全相同且想的屬性設(shè)置后三個會瞬間覆蓋掉前一個,所以才抄寫的次序是很最重要的。
雙邊距問題:在IE6中設(shè)置里了float,同樣的又設(shè)置里margin,可能會會出現(xiàn)邊距問題解決方案:設(shè)置中display:inline
9.當(dāng)標(biāo)簽的相同高度設(shè)置大于010px,在IE6、IE7中會遠(yuǎn)遠(yuǎn)超出自己設(shè)置里的相同高度解決方案:超出水平距離的標(biāo)簽可以設(shè)置overflow:hidden,或則可以設(shè)置line-height的值小于你的設(shè)置高度
10.圖片系統(tǒng)默認(rèn)有間距解決方案:在用float為image2布局
看看瀏覽器不能不能建議使用opacity解決方案:opacity:0.5filter:alpha(opacity50)filter:(style0,opacity50)
12.邊距相互纏繞問題;當(dāng)相鄰兩個元素都可以設(shè)置了margin邊距時,margin將取的最值,舍棄最小值;解決方案:就是為了不想邊重疊,可以不給子元素增加一個父級元素,并設(shè)置中父級元素為overflow:hidden;
不顯示手型在safari上不接受解決方案:統(tǒng)一使用cursor:pointer
14.兩個塊級元素,父元素設(shè)置中了overflow:auto;子元素設(shè)置里了position:relative且高度小于父元素,在IE6、IE7會被隱藏地而也不是瀉出;解決方案:父級元素系統(tǒng)設(shè)置position:relative
背景閃爍不定的問題
問題:鏈接、選擇按鈕用以及背景,在下會有背景圖閃爍不停的現(xiàn)象。原因是沒有將背景圖緩存,每次來能觸發(fā)的時候都會重新運(yùn)行
能解決:這個可以用系統(tǒng)設(shè)置緩存這些圖片:
document.execCommand(BackgroundImageCache
JavaScript調(diào)用WebService的代碼是什么呢?
WebService(以下3個字母為WS)不使用SOAP協(xié)議,而SOAPHTTPXML,所以才你可以不使用一切訪問其它網(wǎng)頁的方法來對WS接口接受內(nèi)部函數(shù)。
一般情況下是可以建議使用三種方法:表單重新提交,XMLHttpRequest,jQuery.ajax。
其一,表單重新提交(嚴(yán)格的來說這個是HTML調(diào)用,屬于什么JS動態(tài)鏈接庫。。。)