问题 使用Silverlight进行版本检测


如何有效地检测版本,以及有关实例的任何可用信息 Silverlight的 目前在浏览器上运行?


4827
2017-08-21 18:30


起源



答案:


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 Beta包含一个control.settings.version属性,该属性已替换为isVersionSupported()方法。这个想法是你不应该针对特定版本的Silverlight进行编程。相反,您应该检查客户端是否有 至少 verion 1.0,或2.0等

话虽这么说,您可以通过检查Silverlight插件描述获取Firefox中的Silverlight版本号:

alert(navigator.plugins["Silverlight Plug-In"].description);

在我的电脑上显示“2.0.30523.8”。

请注意,可以通过迭代所有已发布的版本号来强制它。 据推测,这就是BrowserHawk所做的  - 他们将报告客户端安装的Silverlight版本。


7
2017-08-25 21:31





我得到了这个 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
};

2
2017-08-21 18:42





发现这个网站检测到银光的完整版本 - silverlight版 (又名silverlightversion.com)


2
2017-09-22 15:24



只是fyi,这个解决方案实际上找到了已安装插件的确切版本号。 - Brady Moritz


答案:


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 Beta包含一个control.settings.version属性,该属性已替换为isVersionSupported()方法。这个想法是你不应该针对特定版本的Silverlight进行编程。相反,您应该检查客户端是否有 至少 verion 1.0,或2.0等

话虽这么说,您可以通过检查Silverlight插件描述获取Firefox中的Silverlight版本号:

alert(navigator.plugins["Silverlight Plug-In"].description);

在我的电脑上显示“2.0.30523.8”。

请注意,可以通过迭代所有已发布的版本号来强制它。 据推测,这就是BrowserHawk所做的  - 他们将报告客户端安装的Silverlight版本。


7
2017-08-25 21:31





我得到了这个 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
};

2
2017-08-21 18:42





发现这个网站检测到银光的完整版本 - silverlight版 (又名silverlightversion.com)


2
2017-09-22 15:24



只是fyi,这个解决方案实际上找到了已安装插件的确切版本号。 - Brady Moritz


如上面的评论所述,目前没有有效的直接方式来获取已安装的Silverlight版本号(适用于跨浏览器平台)。

我写了一篇关于如何解决这个问题的帖子,并使用JavaScript以编程方式更有效地检测Silverlight主要版本号(包括版本3)。

您可以在以下位置找到代码和帖子:

http://www.apijunkie.com/APIJunkie/blog/post/2009/04/How-to-programmatically-detect-Silverlight-version.aspx

祝你好运!


1
2018-04-26 09:48





Environment.Version会做你想要的!自Silverlight 2.0起支持


1
2017-07-04 15:21





看看silverlight.js:

http://forums.asp.net/p/1135746/1997617.aspx#1997617


0
2017-08-21 18:35