locked
有关silverlight客户插件的问题? RRS feed

  • 问题

  • 因为现在做的一个程序的需要,我要检测用户是否安装silverlight插件,如果没有安装提示让他安装.
    我想知道的是,在IE ,Firefox中如果客户端插件之后,需不需要重启浏览器,就能使用silverligth功能,如果不重启,
    安装之后,用JS能否检测出它已经安装了?谢谢.
    2009年7月2日 7:36

答案

  • 1.如果是安装插件,你需要重启浏览器
    2.判断的方法如下: 
    var plugin = navigator.plugins["Silverlight Plug-In"] ;
                if ( plugin )
                {
    ....................
    }
    加油!朋友
    这里讲解为什么使用“ActiveXObject('AgControl.AgControl')”
    http://silverlight.net/forums/t/5912.aspx
    这里有一个flash插件的示例:
    http://hi.baidu.com/smvv21/blog/item/d27b4f0fbeaadc2e6059f3eb.html


    Silverlight.isInstalled = function(version)
    {
        var isVersionSupported=false;
        var container = null;
        
        try 
        {
            var control = null;
            
            try
            {
                control = new ActiveXObject('AgControl.AgControl');
                if ( version == null )
                {
                    isVersionSupported = true;
                }
                else if ( control.IsVersionSupported(version) )
                {
                    isVersionSupported = true;
                }
                control = null;
            }
            catch (e)
            {
                var plugin = navigator.plugins["Silverlight Plug-In"] ;
                if ( plugin )
                {
                    if ( version === null )
                    {
                        isVersionSupported = true;
                    }
                    else
                    {
                        var actualVer = plugin.description;
                        if ( actualVer === "1.0.30226.2")
                            actualVer = "2.0.30226.2";
                        var actualVerArray =actualVer.split(".");
                        while ( actualVerArray.length > 3)
                        {
                            actualVerArray.pop();
                        }
                        while ( actualVerArray.length < 4)
                        {
                            actualVerArray.push(0);
                        }
                        var reqVerArray = version.split(".");
                        while ( reqVerArray.length > 4)
                        {
                            reqVerArray.pop();
                        }
                        
                        var requiredVersionPart ;
                        var actualVersionPart
                        var index = 0;
                        
                        
                        do
                        {
                            requiredVersionPart = parseInt(reqVerArray[index]);
                            actualVersionPart = parseInt(actualVerArray[index]);
                            index++;
                        }
                        while (index < reqVerArray.length && requiredVersionPart === actualVersionPart);
                        
                        if ( requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart) )
                        {
                            isVersionSupported = true;
                        }
                    }
                }
            }
        }
        catch (e) 
        {
            isVersionSupported = false;
        }
        if (container) 
        {
            document.body.removeChild(container);
        }
        
        return isVersionSupported;
    }

    努力!写一个js解析器,一个svg插件,一个绘图程序,做好自己,呵呵~!
    2009年7月3日 1:14
    版主

全部回复

  • 需要关闭浏览器再重新打开,用js可以检测出是否安装,和安装的版本是什么

    2009年7月2日 7:50
    版主
  • 这些 微软都做好了 安装后刷新就可以了
    2009年7月2日 7:54
  • 1.如果是安装插件,你需要重启浏览器
    2.判断的方法如下: 
    var plugin = navigator.plugins["Silverlight Plug-In"] ;
                if ( plugin )
                {
    ....................
    }
    加油!朋友
    这里讲解为什么使用“ActiveXObject('AgControl.AgControl')”
    http://silverlight.net/forums/t/5912.aspx
    这里有一个flash插件的示例:
    http://hi.baidu.com/smvv21/blog/item/d27b4f0fbeaadc2e6059f3eb.html


    Silverlight.isInstalled = function(version)
    {
        var isVersionSupported=false;
        var container = null;
        
        try 
        {
            var control = null;
            
            try
            {
                control = new ActiveXObject('AgControl.AgControl');
                if ( version == null )
                {
                    isVersionSupported = true;
                }
                else if ( control.IsVersionSupported(version) )
                {
                    isVersionSupported = true;
                }
                control = null;
            }
            catch (e)
            {
                var plugin = navigator.plugins["Silverlight Plug-In"] ;
                if ( plugin )
                {
                    if ( version === null )
                    {
                        isVersionSupported = true;
                    }
                    else
                    {
                        var actualVer = plugin.description;
                        if ( actualVer === "1.0.30226.2")
                            actualVer = "2.0.30226.2";
                        var actualVerArray =actualVer.split(".");
                        while ( actualVerArray.length > 3)
                        {
                            actualVerArray.pop();
                        }
                        while ( actualVerArray.length < 4)
                        {
                            actualVerArray.push(0);
                        }
                        var reqVerArray = version.split(".");
                        while ( reqVerArray.length > 4)
                        {
                            reqVerArray.pop();
                        }
                        
                        var requiredVersionPart ;
                        var actualVersionPart
                        var index = 0;
                        
                        
                        do
                        {
                            requiredVersionPart = parseInt(reqVerArray[index]);
                            actualVersionPart = parseInt(actualVerArray[index]);
                            index++;
                        }
                        while (index < reqVerArray.length && requiredVersionPart === actualVersionPart);
                        
                        if ( requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart) )
                        {
                            isVersionSupported = true;
                        }
                    }
                }
            }
        }
        catch (e) 
        {
            isVersionSupported = false;
        }
        if (container) 
        {
            document.body.removeChild(container);
        }
        
        return isVersionSupported;
    }

    努力!写一个js解析器,一个svg插件,一个绘图程序,做好自己,呵呵~!
    2009年7月3日 1:14
    版主