Обнаружение версии с помощью Silverlight
-
09-06-2019 - |
Вопрос
Как я могу эффективно и действенно определить версию и, если уж на то пошло, любую доступную информацию об экземпляре Сильверлайт сейчас работает в браузере?
Решение
Элемент управления Silverlight имеет только Функция IsVersionSupported, который возвращает true/false, когда вы указываете номер версии, например:
if(slPlugin.isVersionSupported("2.0")) {
alert("I haz some flavour of Silverlight 2");
При проверке сборки вы можете быть настолько конкретными, насколько захотите, поскольку строка версии может включать в себя все следующее:
- мажор - главное число
- минор - младшее число
- build - номер сборки
- ревизия - номер ревизии
Таким образом, мы можем проверить конкретный номер сборки следующим образом:
if(slPlugin.isVersionSupported("2.0.30523")) {
alert("I haz Silverlight 2.0.30523, but could be any revision.");
Бета-версия Silverlight 1.0 включала свойство control.settings.version, которое было заменено методом isVersionSupported()..Идея состоит в том, что вам не следует программировать для определенных версий Silverlight.Вместо этого вам следует проверить, есть ли у клиента по меньшей мере версия 1.0 или 2.0 и т. д.
При этом вы можете получить номер версии Silverlight в Firefox, проверив описание плагина Silverlight:
alert(navigator.plugins["Silverlight Plug-In"].description);
На моем компьютере отображается «2.0.30523.8».
Обратите внимание, что его можно перебрать, перебрав все выпущенные номера версий. Вероятно, именно это и делает BrowserHawk. - они сообщат, какая версия Silverlight установлена на клиенте.
Другие советы
Я получил это от http://forums.asp.net/p/1135746/1997617.aspx#1997617 это та самая ссылка Стю дал вам.Я просто включил фрагмент кода.
Silverlight.isInstalled = function(d)
{
var c = false, a = null;
try
{
var b = null;
if(Silverlight.ua.Browser == "MSIE")
b = new ActiveXObject("AgControl.AgControl");
else
if(navigator.plugins["Silverlight Plug-In"])
{
a = document.createElement("div");
document.body.appendChild(a);
a.innerHTML = '<embed type="application/x-silverlight" />';
b = a.childNodes[0]
}
if(b.IsVersionSupported(d))
c = true;
b = null;
Silverlight.available = true
}
catch(e)
{
c=false
}
if(a)
document.body.removeChild(a);
return c
};
нашел этот сайт, который обнаруживает полную версию silverlight- серебристая версия (он же silverlightversion.com)
Как упоминалось в комментариях выше, в настоящее время не существует эффективного прямого способа получить номер установленной версии Silverlight (который работает на кросс-браузерной платформе).
Я написал пост о том, как обойти эту проблему и определить основной номер версии Silverlight (включая версию 3) программно и более эффективно с помощью JavaScript.
Вы можете найти код и сообщение по адресу:
Удачи!
Environment.Version будет делать то, что вы хотите!Поддерживается начиная с Silverlight 2.0.
Посмотрите silverlight.js: