Можно ли узнать, в какой версии браузера запускается приложение для браузера (XBAP) (например, IE6, IE7 или IE8)? Я хочу узнать версию браузера из XBAP.Обнаружение версии браузера в WPF
ответ
С некоторой помощью от форума Microsoft меня привели в направлении, которое наконец-то работает. Ниже доказательство концепции в C++ NET (
using namespace System::Windows::Forms;
[STAThread]
String^ GetBrowserVersion() {
String^ strResult = String::Empty;
WebBrowser^ wb = gcnew WebBrowser();
String^ strJS = "<SCRIPT>function GetUserAgent() { return navigator.userAgent; }</SCRIPT>";
wb->DocumentStream = gcnew MemoryStream(ASCIIEncoding::UTF8->GetBytes(strJS));
while (wb->ReadyState != WebBrowserReadyState::Complete) {
Application::DoEvents();
}
String^ strUserAgent = (String^)wb->Document->InvokeScript("GetUserAgent");
wb->DocumentStream->Close();
String^ strBrowserName = String::Empty;
int i = -1;
if ((i = strUserAgent->IndexOf("MSIE")) >= 0) {
strBrowserName = "Internet Explorer";
} else if ((i = strUserAgent->IndexOf("Opera")) >= 0) {
strBrowserName = "Opera";
} else if ((i = strUserAgent->IndexOf("Chrome")) >= 0) {
strBrowserName = "Chrome";
} else if ((i = strUserAgent->IndexOf("FireFox")) >= 0) {
strBrowserName = "FireFox";
}
if (i >= 0) {
int iStart = i + 5;
int iLength = strUserAgent->IndexOf(';', iStart) - iStart;
strResult = strBrowserName + " " + strUserAgent->Substring(iStart, iLength);
}
return strResult;
}
Хорошая идея, спасибо! Здесь используются C# и WPF. У меня есть элемент управления WebBrowser в моем коде, и для любви к Богу я не мог найти, где получить версию браузера. Я использовал внешнюю html-страницу (то же место, что и мой .exe), загрузил ее как таковую: WebBrowserMain.Navigate ("pack: // siteoforigin: ,,,/useragent.html"); И изнутри useragent.html называется метод в моей программе через javascript, который собирает информацию агента пользователя. Спасибо! – Rowan
Предполагаю, вы имеете в виду Silverlight, а не WPF? (они являются отдельными технологиями, хотя и похожими).
Посмотрите на System.Windows.Browser.BrowserInformation
Class
В частности
System.Windows.Browser.BrowserInformation.BrowserVersion
На странице MSDN выше:
using System;
с использованием System.Windows.Controls; с использованием System.Windows.Browser;
public class Example
{
public static void Demo(System.Windows.Controls.TextBlock outputBlock)
{
outputBlock.Text +=
"\nSilverlight can provide browser information:\n"
+ "\nBrowser Name = " + HtmlPage.BrowserInformation.Name
+ "\nBrowser Version = " +
HtmlPage.BrowserInformation.BrowserVersion.ToString()
+ "\nUserAgent = " + HtmlPage.BrowserInformation.UserAgent
+ "\nPlatform = " + HtmlPage.BrowserInformation.Platform
+ "\nCookiesEnabled = " +
HtmlPage.BrowserInformation.CookiesEnabled.ToString() + "\n";
}
}
XBAP (приложение для браузера XAML) - это приложения WPF, которые могут быть размещен в браузере. http://msdn.microsoft.com/en-us/library/aa970060.aspx – VoidDweller
Нет. Я действительно имею в виду приложение для браузера XAML. Я думаю, что использование вашего решения представляет новую зависимость от Silverlight. Спасибо в любом случае! Я нашел другое решение с некоторой помощью на форуме Microsoft, см. мой ответ на мой собственный вопрос. – Rob
@Rob:.. Вы столкнетесь с необходимостью в этом случае так, что это – VoidDweller
Для нашего приложения мы должны иметь способ сообщить, в каком? версия браузера наше приложение работает. Отчет создается для целей поддержки и имеет все виды системной информации. К сожалению, версия браузера влияет на поведение приложения. – Rob