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