十年专注于品牌网站建设 十年专注于品牌网站建设,低调、有情怀的网络应用服务商!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

浏览器BUG检测方法

百恒网络 2013-06-19 1390

通常我们在做网站兼容性测试时会遇到一些诸如此类的问题,其他浏览都正常,不会出乱,偏偏某种浏览出乱,经过无数的测试及调整还是找不出原因.针对这样的情况,南昌网站建设公司工程课告诉您需要静下心来找个是不是浏览器本身有问题,有时我们在网上线时测试一切都正常,可是过了两天测试又有问题,您也不要急着更改排版代码,您可需要检测下是不是浏览器有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。在相关浏览器的新版本中,这些问题可能会也可能不会被修复。由于检测“怪癖”涉及运行代码,因此南昌网站设计公司工程师建议仅检测那些对你有直接影响的“怪癖”,而且最好在脚本一开始就执行此类检测,以便尽早解决问题。

本文仅限内部技术人员学习交流,不得作于其他商业用途.文章出自:南昌网站建设公司-百恒网络 https://www.jxbh.cn 如转载请注明出处!

400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×