locked
Existe algum método ou script que Detecte se o Browser possui o Plugin do Silverlight ou não RRS feed

  • Pergunta

  • Olá Como todos já sabem existem Browsers (Ex. o Opera) que não possui suporte a SILVERLIGHT 2.0 , gostaria de saber se alguem teria algum método ou script ou artigo ou link que demonstra-se como fazer uma condição de desvio para uma pagina de aviso por exemplo mostrando ou exibindo ao usuario que este Browser não tem suporte a Silverlight

    Fico no aguardo e desde já agradeço
    LADEF
    quinta-feira, 20 de agosto de 2009 23:24

Respostas

  • Pessoal, essas soluções não detectam se o browser tem o plugin do Silverlight instalado. Detectam apenas se o browser suporta plugins.
    Quando você cria um projeto Silverlight no Visual Studio e pede para ele criar o projeto web também, haverá um arquivo chamado Silverlight.js nesse projeto web.

    Se a sua página faz referencia a esse javascript, basta verificar a seguinte variável "Silverlight.isInstalled":

    <script type="text/javascript" language="javascript">
        if (Silverlight.isInstalled) {
            alert("Você não tem o Silverlight instalado.");
        }
    </script>

    Há também uma outra forma mais simples de exibir conteúdo específico quando o usuário não tiver o Silverlight instalado. Todo o conteúdo que estiver dentro da tag object que é colocada na página será exibido caso o plugin não esteja instalado, e apenas nesse caso. No exemplo abaixo, há um link com uma imagem.

    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="500" height="500">
     <param name="source" value="ClientBin/SilverlightApplication1.xap"/>
     <param name="onError" value="onSilverlightError" />
     <param name="background" value="white" />
     <param name="minRuntimeVersion" value="3.0.40818.0" />
     <param name="autoUpgrade" value="true" />
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
     <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
     </a>
    </object>


    Atenciosamente,
    Kelps Leite de Sousa
    blog: http://kelps-sousa.blogspot.com
    twitter : http://twitter.com/kelps

    Não se esqueça de "marcar como resposta" o ítem que lhe ajudou.
    quarta-feira, 2 de dezembro de 2009 01:54
  • Luiz,
    Depois olha esse artigo que é bem interessante e eu achei uma solução mais simples do que o pessoal publicou:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=2005

    Boa sorte.
    • Marcado como Resposta LuizIta quarta-feira, 2 de dezembro de 2009 17:01
    quarta-feira, 2 de dezembro de 2009 16:34
  • O exemplo que eu coloquei mostra 2 jeitos de identificar se o Silverlight está instalado. Um jeito usando Javascript e outro usando HTML puro.

    Se o que você quer é apenas exibir uma mensagem informando o usuário que é necessário ter o Silverlight instalado, sugiro fazer isso usando a segunda opção (colocando o html da mensagem dentro da tag object)

    Se você quiser redirecionar para outra página com conteúdo diferenciado caso o usuário não tenha Silverlight, use a primeira opção (javascript) e troque o alert por 

    document.location.href = "nova-url.html";

    Atenciosamente,
    Kelps Leite de Sousa
    blog: http://kelps-sousa.blogspot.com
    twitter : http://twitter.com/kelps

    Não se esqueça de "marcar como resposta" o ítem que lhe ajudou.
    • Marcado como Resposta LuizIta quarta-feira, 2 de dezembro de 2009 22:33
    quarta-feira, 2 de dezembro de 2009 20:05
  • 1.) é a pagina q vc usa para rodar o seu aplicativo silverlight, seja ela o html ou o aspx.

    2.) para vc entender melhor...  copia o codigo abaixo num arquivo testo e salva como "teste.html" e abre o mesmo num browser

    <html>
    <head>
        <script type="text/javascript" language="javascript">
            var platformName = window.navigator.platform;
            var browserName = window.navigator.appName;
            
            var validateBrowser = 5 +
                browserName.indexOf("Explorer") +
                browserName.indexOf("Netscape") +
                browserName.indexOf("Safari") +
                platformName.indexOf("Win") + 
                platformName.indexOf("Mac");
    
            if (validateBrowser == 0)
                alert("Seu browser não permite utilizar o Silverlight" + '\r\n' + platformName + "/" + browserName);
            else
                alert("Seja bem vindo" + '\r\n' + platformName + "/" + browserName);
        </script>
    </head>
    <body>
    </body>
    </html>

    What would Brian Boitano do ?
    • Marcado como Resposta Lucas Defacio quinta-feira, 27 de agosto de 2009 15:50
    sexta-feira, 21 de agosto de 2009 20:26

Todas as Respostas

  • vc pode fazer isso via javascript...

    segue um exemplo de como detectar o browser em uso
    http://www.quirksmode.org/js/detect.html
    What would Brian Boitano do ?
    sexta-feira, 21 de agosto de 2009 03:50
  • Tá via java-script eu vi ácima que ele detecta os browsers, mas ele tb detecta se os mesmos suportam Silverlight?

    e no caso mesmo que fosse java script como eu adapto este script ao meu projeto silverlight é na pagina .xaml enfim como eu adapto tal script e como os direciono para determinada pagina de aviso este browser não dá suporte á Silverlight

    Fico no aguardo e desde já agradeço
    LADEF
    sexta-feira, 21 de agosto de 2009 03:58
  • vc vai ter que criar o javascript na pagina html que vc vai usar de host para o silverlight, ja que se o browser nao suportar o mesmo... nao vai rodar o xaml :)

    o que vc prescisa é fazer um if... primeiro ve se o OS nao é Windows ou Mac (ou Linux... se o a sua aplicaçao nao funcionar no Moonlight) 

    depois vc faz outro if para ver se o browser é diferente dos browser que vc sabe q rodam o silverlight....

    What would Brian Boitano do ?
    sexta-feira, 21 de agosto de 2009 04:02
  • Não teria como me fazer um exemplo para mim já que sou iniciante em Silverlight

    Fico no aguardo e desde já agradeço
    LADEF
    sexta-feira, 21 de agosto de 2009 04:04
  • Tá duas coisas -

    A )esse html é o projeto .html que qdo criado no Silverlight acompanha a pasta do Silverlight ou da pagina aspx


    B)no JavaScript do Link que vc me passou aonde e como eu coloco dentro das propriedades de cada um
     como mostrado abaixo

    {
    			string: navigator.userAgent,
    			subString: "Chrome",
    			identity: "Chrome"
    		},
    		{ 	string: navigator.userAgent,
    			subString: "OmniWeb",
    			versionSearch: "OmniWeb/",
    			identity: "OmniWeb"
    		},
    		{
    			string: navigator.vendor,
    			subString: "Apple",
    			identity: "Safari",
    			versionSearch: "Version"
    		},
    		{
    			prop: window.opera,
    			identity: "Opera"
    		},
    		{
    			string: navigator.vendor,
    			subString: "iCab",
    			identity: "iCab"
    		},
    		{
    			string: navigator.vendor,
    			subString: "KDE",
    			identity: "Konqueror"
    		},
    		{
    			string: navigator.userAgent,
    			subString: "Firefox",
    			identity: "Firefox"
    		},
    		{
    			string: navigator.vendor,
    			subString: "Camino",
    			identity: "Camino"
    		},
    		{		// for newer Netscapes (6+)
    			string: navigator.userAgent,
    			subString: "Netscape",
    			identity: "Netscape"
    		},
    		{
    			string: navigator.userAgent,
    			subString: "MSIE",
    			identity: "Explorer",
    			versionSearch: "MSIE"
    		},
    		{
    			string: navigator.userAgent,
    			subString: "Gecko",
    			identity: "Mozilla",
    			versionSearch: "rv"
    		},
    		{ 		// for older Netscapes (4-)
    			string: navigator.userAgent,
    			subString: "Mozilla",
    			identity: "Netscape",
    			versionSearch: "Mozilla"
    		}
    	],
    	dataOS : [
    		{
    			string: navigator.platform,
    			subString: "Win",
    			identity: "Windows"
    		},
    		{
    			string: navigator.platform,
    			subString: "Mac",
    			identity: "Mac"
    		},
    		{
    			   string: navigator.userAgent,
    			   subString: "iPhone",
    			   identity: "iPhone/iPod"
    	    },
    		{
    			string: navigator.platform,
    			subString: "Linux",
    			identity: "Linux"
    		}
    	]
    
    };
    BrowserDetect.init();
    

    Aonde e como eu coloco o link ou url da pagina que dependendo do Browser ele será redirecionado?

    Fico no aguardo e desde já agradeço
    LADEF
    sexta-feira, 21 de agosto de 2009 19:39
  • 1.) é a pagina q vc usa para rodar o seu aplicativo silverlight, seja ela o html ou o aspx.

    2.) para vc entender melhor...  copia o codigo abaixo num arquivo testo e salva como "teste.html" e abre o mesmo num browser

    <html>
    <head>
        <script type="text/javascript" language="javascript">
            var platformName = window.navigator.platform;
            var browserName = window.navigator.appName;
            
            var validateBrowser = 5 +
                browserName.indexOf("Explorer") +
                browserName.indexOf("Netscape") +
                browserName.indexOf("Safari") +
                platformName.indexOf("Win") + 
                platformName.indexOf("Mac");
    
            if (validateBrowser == 0)
                alert("Seu browser não permite utilizar o Silverlight" + '\r\n' + platformName + "/" + browserName);
            else
                alert("Seja bem vindo" + '\r\n' + platformName + "/" + browserName);
        </script>
    </head>
    <body>
    </body>
    </html>

    What would Brian Boitano do ?
    • Marcado como Resposta Lucas Defacio quinta-feira, 27 de agosto de 2009 15:50
    sexta-feira, 21 de agosto de 2009 20:26
  • OLÁ RUI boa tarde no Lugar do 

       

    alert("Seu browser não permite utilizar o Silverlight" + '\r\n' + platformName + "/" + browserName);
    não tem como colocar neste script para redirecionar para alguma pagina .aspx e se sim como eu o faria neste script e o mesmo script pd ser colocado dentro da pagina .aspx que contem o silverlight

    Fico no aguardo e desde já agradeço
    LADEF
    terça-feira, 1 de dezembro de 2009 18:41
  • Pessoal, essas soluções não detectam se o browser tem o plugin do Silverlight instalado. Detectam apenas se o browser suporta plugins.
    Quando você cria um projeto Silverlight no Visual Studio e pede para ele criar o projeto web também, haverá um arquivo chamado Silverlight.js nesse projeto web.

    Se a sua página faz referencia a esse javascript, basta verificar a seguinte variável "Silverlight.isInstalled":

    <script type="text/javascript" language="javascript">
        if (Silverlight.isInstalled) {
            alert("Você não tem o Silverlight instalado.");
        }
    </script>

    Há também uma outra forma mais simples de exibir conteúdo específico quando o usuário não tiver o Silverlight instalado. Todo o conteúdo que estiver dentro da tag object que é colocada na página será exibido caso o plugin não esteja instalado, e apenas nesse caso. No exemplo abaixo, há um link com uma imagem.

    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="500" height="500">
     <param name="source" value="ClientBin/SilverlightApplication1.xap"/>
     <param name="onError" value="onSilverlightError" />
     <param name="background" value="white" />
     <param name="minRuntimeVersion" value="3.0.40818.0" />
     <param name="autoUpgrade" value="true" />
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
     <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
     </a>
    </object>


    Atenciosamente,
    Kelps Leite de Sousa
    blog: http://kelps-sousa.blogspot.com
    twitter : http://twitter.com/kelps

    Não se esqueça de "marcar como resposta" o ítem que lhe ajudou.
    quarta-feira, 2 de dezembro de 2009 01:54
  • <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="promoçõesfirefox.aspx.cs" Inherits="dominio.promocoesfirefox"  %>
    
    <%@ Register Assembly="DSHHitCounter" Namespace="DSHHitCounter" TagPrefix="cc1" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
        <title></title>
       
        <link rel="stylesheet" type="text/css" id="StyleFirefox" runat="server" />
         <style type="text/css">
        html, body {
    	    height: 100%;
    	    
    	    background-attachment:fixed;
        }
        body {
    	    padding: 0;
    	    margin: 0;
        }
        #silverlightControlHost {
    	    height: 100%;
    	    text-align:center;
        }
        </style>
        <script type="text/javascript" src="Silverlight.js"></script>
        <script type="text/javascript">
            function onSilverlightError(sender, args) {
                var appSource = "";
                if (sender != null && sender != 0) {
                  appSource = sender.getHost().Source;
                }
                
                var errorType = args.ErrorType;
                var iErrorCode = args.ErrorCode;
    
                if (errorType == "ImageError" || errorType == "MediaError") {
                  return;
                }
    
                var errMsg = "Unhandled Error in Silverlight Application " +  appSource + "\n" ;
    
                errMsg += "Code: "+ iErrorCode + "    \n";
                errMsg += "Category: " + errorType + "       \n";
                errMsg += "Message: " + args.ErrorMessage + "     \n";
    
                if (errorType == "ParserError") {
                    errMsg += "File: " + args.xamlFile + "     \n";
                    errMsg += "Line: " + args.lineNumber + "     \n";
                    errMsg += "Position: " + args.charPosition + "     \n";
                }
                else if (errorType == "RuntimeError") {           
                    if (args.lineNumber != 0) {
                        errMsg += "Line: " + args.lineNumber + "     \n";
                        errMsg += "Position: " +  args.charPosition + "     \n";
                    }
                    errMsg += "MethodName: " + args.methodName + "     \n";
                }
    
                throw new Error(errMsg);
            }
        </script><script type="text/javascript" language="javascript">    if (Silverlight.isInstalled) {        alert("Você não tem o Silverlight instalado.");    }</script>
    </head>
    <body runat="server" id="mydominio">
        <form id="form1" runat="server" style="height:100%">
        <div class="TopHeader">
             
         <br />
              
            <br />
            <br /><div align="right">LOGIN</div><div align="right"><cc1:HitCounter ID="HitCounter1" runat="server" TextFileName="" Padding="6" />
                            <div class="TextoConteudo" >visitas desde<br />20/08/2009
                           </div></div>
            <br />
            <br />
            <br />
           <br />
               
         </div>
         <div class="LeftColumn"><div align="center" class="Texto"><br /><br />
                            [<asp:Label CssClass="TextoSobre" ID="lblUsuOnLine" runat="server" Text="Label"></asp:Label>]<br />
                            Usuários(as)<br />On-Line
    </div>
          <br />       
            <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1" EnableTheming="True" StaticEnableDefaultPopOutImage="False">
            <LevelSelectedStyles>
                <asp:MenuItemStyle Font-Underline="False" />
            </LevelSelectedStyles>
            <LevelSubMenuStyles>
                <asp:SubMenuStyle Font-Underline="False" BorderStyle="Outset" BorderWidth="1px" />
            </LevelSubMenuStyles>
            <LevelMenuItemStyles>
                <asp:MenuItemStyle BorderStyle="Outset" BorderWidth="1px" Font-Underline="False" />
            </LevelMenuItemStyles>
            <DynamicMenuStyle BorderStyle="Outset" BorderWidth="1px" />
            </asp:Menu>
            <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="False" />
        </div>
        <div class="CenterColumn"  id="silverlightControlHost">
            <asp:ScriptManager ID="ScriptManager1" runat="server" /><asp:SiteMapPath ID="SiteMapPath1" runat="server" Font-Names="Verdana" Font-Size="0.8em"
                                PathSeparator=" : " TabIndex="1">
                                <PathSeparatorStyle Font-Bold="True"  />
                                <CurrentNodeStyle />
                                <NodeStyle Font-Bold="True"  />
                                <RootNodeStyle Font-Bold="True"  />
                            </asp:SiteMapPath><asp:HyperLink ID="hplRoot" runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="XX-Small">[hplRoot]</asp:HyperLink><asp:Label
                                ID="lblSeparator1" runat="server" Text=" : " Font-Bold="False" Font-Names="Verdana" Font-Size="XX-Small" ForeColor="Black"></asp:Label><asp:HyperLink CssClass="TextoParentSiteMap" ID="hplParent1" runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="XX-Small" NavigateUrl="#">[hplParent1]</asp:HyperLink><asp:Label
                                ID="lblParent1" runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="XX-Small"></asp:Label><asp:Label
                                ID="lblSeparator2" runat="server" Text=" : " Font-Bold="True" Font-Names="Verdana" Font-Size="XX-Small" ForeColor="Black"></asp:Label><asp:HyperLink CssClass="TextoParentSiteMap" ID="hplParent2" runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="XX-Small">[hplParent2]</asp:HyperLink><asp:Label
                                ID="lblParent2" runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="XX-Small"></asp:Label><asp:Label
                                ID="lblSeparator3" runat="server" Text=" : " Font-Bold="True" Font-Names="Verdana" Font-Size="XX-Small"></asp:Label><asp:Label
                                ID="lblCurrentNode" runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="XX-Small"></asp:Label>
                            <br /><br /><fieldset style="padding-left:10px;padding-right:10px; margin-left:15px; width:565px; font-weight: normal; font-size: 9pt; font-family: verdana;"><legend style="font-weight: bold; font-size: 11pt; color: #a5b5bf; font-family: Arial; text-align:left"><div style="color:#8E0000">PROMOÇÕES</div></legend><div style="text-align:justify">
        &nbsp;&nbsp; 
        Clique no botão <b>Play (&gt;)</b> do <b>Dominio Sexy Player</b> abaixo e veja as 
        nossas promoções.</div></fieldset><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
    		  <param name="source" value="ClientBin/dominiosexyfullplayer.xap"/>
    		  <param name="onError" value="onSilverlightError" />
    		  <param name="background" value="white" />
    		  <param name="minRuntimeVersion" value="3.0.40624.0" />
    		  <param name="autoUpgrade" value="true" />
    		  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
     			  <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
    		  </a>
    	    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
          
        <fieldset style="padding-left:10px;padding-right:10px; margin-left:15px; width:565px; font-weight: normal; font-size: 9pt; font-family: verdana;"><div style="text-align:justify">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Atenciosamente - <b> - Diretor Responsável</b><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Desenvolvedor e Programador Web, Asp, Asp.Net, Asp.Net Mobile e 
        Vídeo-Streaming)<br />
        <br />
        <br />
        <b> - Copyright © 2009 - Todos os Direitos Reservados.</b></div></fieldset>
        </form>
    </body>
    </html>
    
    Olá Kelps vc está querendo dizer que na pagina aonde exibirei meu silverlight eu tenho que verificar a variavel Silverlight.isInstalled nela assim como mostrado ácima e no caso se for isso como mudar de alert para um javascript de redirecionamento de pagina ou pagina de aviso fico no aguardo e desde já agradeço


    LADEF
    quarta-feira, 2 de dezembro de 2009 03:30
  • Luiz,
    Depois olha esse artigo que é bem interessante e eu achei uma solução mais simples do que o pessoal publicou:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=2005

    Boa sorte.
    • Marcado como Resposta LuizIta quarta-feira, 2 de dezembro de 2009 17:01
    quarta-feira, 2 de dezembro de 2009 16:34
  • O exemplo que eu coloquei mostra 2 jeitos de identificar se o Silverlight está instalado. Um jeito usando Javascript e outro usando HTML puro.

    Se o que você quer é apenas exibir uma mensagem informando o usuário que é necessário ter o Silverlight instalado, sugiro fazer isso usando a segunda opção (colocando o html da mensagem dentro da tag object)

    Se você quiser redirecionar para outra página com conteúdo diferenciado caso o usuário não tenha Silverlight, use a primeira opção (javascript) e troque o alert por 

    document.location.href = "nova-url.html";

    Atenciosamente,
    Kelps Leite de Sousa
    blog: http://kelps-sousa.blogspot.com
    twitter : http://twitter.com/kelps

    Não se esqueça de "marcar como resposta" o ítem que lhe ajudou.
    • Marcado como Resposta LuizIta quarta-feira, 2 de dezembro de 2009 22:33
    quarta-feira, 2 de dezembro de 2009 20:05
  • segunda-feira, 13 de maio de 2013 20:12