用$.browser.version經常出現一些不準確的狀況,最近碰到,做了一些總結,不知道是否全面。
用javasript的navigator.userAgent.indexOf("MSIE 8.0")取法結果是一樣的。
1、用webbrowser載入htm、html頁面,此時載入後取得IE的版本就是不準確的,例如我的機器是IE9,但是透過webbrowser載入之後,$.browser.version方法取得的版本變成了7.0,用「」強制解析後取得的版本依然是7.0,如果想要webbrowser取得正確的結果還是要修改註冊表。
此種問題的解決方案是:在後台透過登錄機碼取得:
private int GetIEVersion()
{
using (Microsoft.Win32.RegistryKey versionKey = Microsoft.Win32. .OpenSubKey(@"SoftwareMicrosoftInternet Explorer"))
{
string version = versionKey.GetValue("Version").ToString();
int iVersion = int.Parse(version.Substring(0, 1 ));
return iVersion;
}
}
2、用「
」強制解析,我的機器是IE9,加入此標籤之後,再$.browser.version獲得的版本是8.0。
3、嵌套Iframe的狀況,如果外層是IE8解析,內層是IE9解析,這樣內層獲取的版本是IE9,但是實際上頁面是按照IE8來解析,這樣就會造成判斷和實際的執行不符合。
此種情況應用應該比較少,如果遇到需透過內外層解析同時判斷方可解決。