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