通常我們在做網(wǎng)站兼容性測試時(shí)會(huì)遇到一些諸如此類的問題,其他瀏覽都正常,不會(huì)出亂,偏偏某種瀏覽出亂,經(jīng)過無數(shù)的測試及調(diào)整還是找不出原因.針對這樣的情況,南昌網(wǎng)站建設(shè)公司工程課告訴您需要靜下心來找個(gè)是不是瀏覽器本身有問題,有時(shí)我們在網(wǎng)上線時(shí)測試一切都正常,可是過了兩天測試又有問題,您也不要急著更改排版代碼,您可需要檢測下是不是瀏覽器有BGU.通俗地講就是"怪癖". 與能力檢測類似,怪癖檢測(quirks detection)的目標(biāo)是識(shí)別瀏覽器的特殊行為。但與能力檢測確認(rèn)瀏覽器支持什么能力不同,怪癖檢測是想要知道瀏覽器存在什么缺陷(“怪癖”也就是bug)。這通常需要運(yùn)行一小段代碼,以確定某一特性不能正常工作。例如,IE中存在一個(gè)bug,即如果某個(gè)實(shí)列屬性與標(biāo)記為[[DontEnum]]的某個(gè)原型屬性同名,那么該實(shí)例屬性將不會(huì)出現(xiàn)在fon-in循環(huán)當(dāng)中。可以使用如下代碼來檢測這種“怪癖”:
var hasDontEnumQuirk=function(){
var o=(toString:functionI)t));
for(var prop in o){
if (prop=="toString"){
return false;
}
}
return true:
}();
以上代碼通過一個(gè)匿名函數(shù)來測試該“怪癖”,函數(shù)中創(chuàng)建了一個(gè)帶有toString()方法的對象。 在正確的ECMAScript實(shí)現(xiàn)中,toString應(yīng)該在for-in循環(huán)中作為屬性返回。
另一個(gè)經(jīng)常需要檢測的“怪癖”是Safari 3.0以前版本會(huì)枚舉被隱藏的屬性??梢杂孟旅娴暮瘮?shù)來檢測該“怪癖”:
var hasEnumShadowsQuirk=function(){
var o={toString:function()t});
var count=O;
for (var prop in o){
if (prop=="toString"){
count++;
)
)
return (count>1);
}();
如果瀏覽器存在這個(gè)bug,那么使用for-in循環(huán)枚舉帶有自定義的toString()方法的對象,就會(huì)返回兩個(gè)toString的實(shí)例。
一般來說,“怪癖”都是個(gè)別瀏覽器所獨(dú)有的,而且通常被歸為bug。在相關(guān)瀏覽器的新版本中,這些問題可能會(huì)也可能不會(huì)被修復(fù)。由于檢測“怪癖”涉及運(yùn)行代碼,因此南昌網(wǎng)站設(shè)計(jì)公司工程師建議僅檢測那些對你有直接影響的“怪癖”,而且最好在腳本一開始就執(zhí)行此類檢測,以便盡早解決問題。
本文僅限內(nèi)部技術(shù)人員學(xué)習(xí)交流,不得作于其他商業(yè)用途.文章出自:南昌網(wǎng)站建設(shè)公司-百恒網(wǎng)絡(luò) http://www.myforexfactory.net 如轉(zhuǎn)載請注明出處!