也许人们可以发现的浏览器之间存在一些或多或少的细微 javascript 引擎差异,例如
if (typeof(someIESpecificFunction) != "undefined")
使用或使用 try 和 catch
或比较某些内置函数的结果以获得细微差异
http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(ECMAScript)和http://www.robertnyman.com/javascript/index.html可能有助于开始?
更新:另一种特定于浏览器版本的行为:
来自http://technet.microsoft.com/en-us/library/dd361918.aspx:
function FindProxyForURL(url, host)
{
if(weekdayRange("WED", "SAT", "GMT"))
return "PROXY proxy:80";
else
return "DIRECT";
}
weekdayRange(<day1> [,<day2>] [,<GMT>] ) 函数返回当前系统时间是否在参数<day1>、<day2>和<GMT>指定的范围内。只有第一个参数是必需的。GMT 参数设置采用 GMT 而非本地时区的时间。
注意如果使用 <day1> == <day2> 调用该函数,则早期版本的 Internet Explorer 将产生与使用 Netscape Navigator 的结果不同的结果。具体来说,早期版本的 Internet Explorer 会将这一天范围解释为一整周,而 Internet Explorer 6 和 Netscape Navigator 将该范围解释为一天。例如,如果当天是星期一,则调用 weekdayRange("TUE", "TUE") 在 Internet Explorer 的早期版本上返回 TRUE,在 Internet Explorer 6 和 Netscape Navigator 上返回 FALSE。
更新 2:根据http://blogs.msdn.com/b/wndp/archive/2006/07/18/ipv6-wpad-for-winhttp-and-wininet.aspx应该能够区分 IE7 和旧版本IE 版本(其他浏览器可能支持也可能不支持这些扩展,例如这里提到的关于 Chrome:http ://code.google.com/p/pactester/issues/detail?id=9 )
根据目前的信息,应该可以区分 IE 5.5、IE 6、IE 7、IE 8、IE 9?
如果您发现类似的有用信息,请告诉我们。