用$.browser.version經常出現一些不准確的狀況,最近碰到,做了一些總結,不知道是否全面。
用javasript的navigator.userAgent.indexOf("MSIE 8.0")取法結果是一樣的。
1、用webbrowser加載htm、html頁面,此時加載後獲取IE的版本就是不准確的,比如我的機器是IE9,但是通過webbrowser加載之後,$.browser.version方法取得的版本便是變成了7.0,用“<meta http-equiv="x-ua-compatible" content="IE=5;IE=7;IE=8;IE=9;"/>”強制解析後取得的版本依然是7.0,如果想要webbrowser取得正確的結果還是要修改注冊表。
此種問題的解決方案是:在後台通過注冊表獲取:
. 代碼如下:
<span style="font-size:18px;">private int GetIEVersion()
{
using (Microsoft.Win32.RegistryKey versionKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Internet Explorer"))
{
string version = versionKey.GetValue("Version").ToString();
int iVersion = int.Parse(version.Substring(0, 1));
return iVersion;
}
}</span>
2、用“<meta http-equiv="x-ua-compatible" content="IE=5;IE=7;IE=8;"/>”強制解析,我的機器是IE9,添加此標簽之後,再$.browser.version獲得的版本是8.0。
3、嵌套Iframe的狀況,如果外層是IE8解析,內層是IE9解析,這樣內層獲取的版本是IE9,但是實際上頁面是按照IE8來解析,這樣就會造成判斷和實際的執行不符合。
此種情況應用應該比較少,如果遇到需通過內外層解析同時判斷方可解決。