• User

    browser particolare (problema inedito per tutti)

    ho la necessita di riconoscere un browser poco più che ignoto (versione apposita di OPERA dentro la console Nintendo Wii), questo browser è dentro una console, e si naviga connessi alla tv con un mouse 3d in mano, il problema è la risoluzione, viaggia a risoluzione verticale 480, di conseguenza capirete che ho necessita di riconoscere questo browser e in automatico e legargli un CSS con testi grossi

    mi serve riconoscerlo in automatico e tramite javascript ricollegarlo subito a un css fatto per lui

    mi potreste postare il codice per questa operazione ?


  • User Attivo

    Non sono un esperto di Javascript, ma penso ti basti fare uno sniffing del browser.
    L'user agent di Opera per Wii è:
    Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)


  • Moderatore

    @Laburno said:

    Non sono un esperto di Javascript, ma penso ti basti fare uno sniffing del browser.
    L'user agent di Opera per Wii è:
    Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)
    Questo il codice ASP per catturare lo user agent:

    **Request.ServerVariables("HTTP_USE_AGENT")**
    
    
    ``` -S- e ti serve in PHP, prova a postare la domanda lì in PHP...
    
    :ciauz:

  • Super User

    Questo invece è il codice PHP che restituisce lo user agent in una variabile:

    $useragent = $_SERVER["HTTP_USER_AGENT"];
    

    Ciao :ciauz:


  • User

    non riesco a farlo funzionare, ho messo questo codice dentro l' head:

    <script type="text/javascript">
    var browser_type=navigator.appName
    var browser_version=parseInt(navigator.appVersion)

    //if Wii Opera/9.00
    if (browser_type=="Opera/9.00 ( Nintendo Wii; U; 1309-9; it)"&&browser_version>=9)
    {
    document.getElementById('style').setAttribute("href", "http://www.miosito.it/immagini/wii.css");}
    </script>

    ho provato anche un altro user agent forse della versione italiana, questo:
    Opera/9.00 ( Nintendo Wii; U; 1309-9; it)

    ma non funge lo stesso..


  • Moderatore
    
    document.getElementById('style').setAttribute("hre  f", "http://www.miosito.it/immagini/wii.css");
    
    

    A quale oggetto fa riferimento l'id 'style'? Okkio che l'attributo href è scritto con uno spazio, spero non lo sia anche nella versione utilizzata sulle pagine...

    :ciauz:


  • User

    questo il mio codice head completo:

    <head>
    	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    	<meta name="Nintendo" content="Wii" />
    	<meta name="keywords" content="nintendo, wii, ds, news, recensioni, notizie, info, videogiochi, esperti, mario bros, metroid, giochi wii" />
    	<meta name="description" content="Sito specializzato nel mondo Nintendo, ultime notizie, recensioni, tornei e molto altro..." />
    	<meta name="robots" content="all" />
    	<title>Nintendo Italia</title>
    
    <script type="text/javascript">
    window.onload=function() {
    var browser_type=navigator.appName
    var browser_version=parseInt(navigator.appVersion)
    
    //if Wii Opera/9.00
    if (browser_type=="Opera/9.00 ( Nintendo Wii; U; 1309-9; it)"&&browser_version>=9)
       {
      document.getElementById('style').setAttribute("href", "http://www.nintendoglobal.net/nintendo/wii.css");
       }
    }
    </script>
    
    
    	<!-- to correct the unsightly Flash of Unstyled Content -->
    	
    	<link id="style" type="text/css" rel="stylesheet" href="http://www.nintendoglobal.net/nintendo/n.css" />
    </head>
    
    

    ma come detto prima non funge 😞 secondo voi dovrebbe funzionare, e quindi è solo colpa dell'user agent sbagliato o casa ?


  • Moderatore

    A questo punto non ti resta che verificare cosa il Server riceve come user agent quando usi Opera per WII...

    Ovvero costruisci una pagina che fa esclusivamente questo:

    
    <script type="text/javascript">
    window.onload=function() 
    {
        var browser_type=navigator.appName;
        var browser_version=parseInt(navigator.appVersion);
        var browser_agent=navigator.userAgent;
        document.write("type: "+browser_type+"<br />"+"version: "+browser_version+"<br />"+"agent: "+browser_agent);
    }
    </script>
    
    

    A questo punto rilevi il nome dell'applicazione, la versione e lo user agent e poi testi quello che ti serve per modificare il layout della pagina.

    Puoi costruire una pagina apposta che poi andrai ad eliminare...

    :ciauz:


  • User Attivo

    Ciao -s-!
    Dai un occhiata qui, forse può tornarti utile!


  • User

    niente da fare, ho testato personalmente il browser e l'user agent che distribuisce è questo :

    Opera/9.00 (Nintendo Wii; U; ; 1309-9; it)

    tuttavia inserendolo nello script non funziona, esistono altri modi di legare un css da lato server ?

    se si mi indicate come ?

    grazie

    (ho anche seguito il link di Laburno, ma ho solo ricavato un user agent sbagliato, non capisco perchè è la decima volta che trovo user agent errati, sembra che ogni console abbia il suo, e comunque non funge nemmeno con quello che ho ricavato io personalmente.)


  • User Attivo

    @-s- said:

    niente da fare, ho testato personalmente il browser e l'user agent che distribuisce è questo :

    Opera/9.00 (Nintendo Wii; U; ; 1309-9; it)

    tuttavia inserendolo nello script non funziona, esistono altri modi di legare un css da lato server ?

    se si mi indicate come ?

    grazie

    (ho anche seguito il link di Laburno, ma ho solo ricavato un user agent sbagliato, non capisco perchè è la decima volta che trovo user agent errati, sembra che ogni console abbia il suo, e comunque non funge nemmeno con quello che ho ricavato io personalmente.)

    Ti ho linkato quell'articolo non tanto per l'User Agent, quanto perchè cerca di affrontare il tuo problema usando le media query.

    :ciauz:


  • User

    si si, avevo capito, facilmente mi sarà utile, pero per ora cercavo un sistema più semplice 😞


  • User Attivo

    Ma il browser lo interpreta javascript?
    Se lo fai in javascript allora deleghi la cosa al client.
    Dovresti farlo lato server col codice che ti è stato gia postato.


  • User

    @FuSioNmAn said:

    Ma il browser lo interpreta javascript?
    Se lo fai in javascript allora deleghi la cosa al client.
    Dovresti farlo lato server col codice che ti è stato gia postato.

    be javascript si, altrimenti mezzo web non si vedrebbe

    comunque come si realizza questa cosa da lato server ?
    chi me lo ha scritto ?


  • Moderatore

    @claudioweb said:

    Questo invece è il codice PHP che restituisce lo user agent in una variabile:

    >$useragent = $_SERVER["HTTP_USER_AGENT"];
    >``` 
    Ciao :ciauz: 
    Visto che il sito è in php devi seguire il consiglio di **claudioweb**. Io PHP non lo conosco bene :bho: e non mi resta che fermarmi qui...
    
    :ciauz:

  • Super User

    Un codice simile dovrebbe funzionare...

    if (strpos(strtolower($_SERVER[&#8217;HTTP_USER_AGENT&#8217;]), "wii"))
    {
       echo "<link rel='stylesheet' type='text/css' href='wii.css'>";
    }
    

    Ciao :ciauz:


  • User

    @claudioweb said:

    Un codice simile dovrebbe funzionare...

    if (strpos(strtolower($_SERVER[?HTTP_USER_AGENT?]), "wii"))
    {
      echo "<link rel='stylesheet' type='text/css' href='wii.css'>";
    }
    

    Ciao :ciauz:

    ok, e mettiamo caso che metto tale codice nel mio head, non è che per qualche strana ragione GOOGLE interpreta la cosa come una bastardata, tipo un redirect e mi penalizza nell'indicizzazione ?


  • Super User

    Solo gli utenti con uno user agent contenente la parola wii noteranno la differenza.

    Google dunque non lo saprà mai.

    Comunque con un utilizzo mirato dei CSS non è necessario fare tutti questi giri. Anche perchè oltre al WII esistono decine di altri browser.
    E' impossibile creare un css differente per ognuno. Bisogna cercare di creare qualcosa di compatibile con tutti.

    Ma visto la tua richiesta era specifica, ti avevo indicato la strada specifica e funzionante 😉

    Ciao :ciauz:


  • User

    @claudioweb said:

    Solo gli utenti con uno user agent contenente la parola wii noteranno la differenza.

    Google dunque non lo saprà mai.

    Comunque con un utilizzo mirato dei CSS non è necessario fare tutti questi giri. Anche perchè oltre al WII esistono decine di altri browser.
    E' impossibile creare un css differente per ognuno. Bisogna cercare di creare qualcosa di compatibile con tutti.

    Ma visto la tua richiesta era specifica, ti avevo indicato la strada specifica e funzionante 😉

    Ciao :ciauz:

    stranamente questo codice non funziona:

    <script type="text/javascript">
    if (strpos(strtolower($_SERVER[&#8217;HTTP_USER_AGENT&#8217;]), "wii"))
    { echo "<link rel='stylesheet' type='text/css' href='http://www.nintendoglobal.net/nintendo/wii.css'>"; }
    </script>
    

    invece questo FUNZIONA:

    <script type="text/javascript">
    if (navigator.platform == "Nintendo Wii") {
    document.write('<link rel="stylesheet" type="text/css" href="http://www.nintendoglobal.net/nintendo/wii.css">');
    }
    else {
    document.write('<link rel="stylesheet" type="text/css" href="http://www.nintendoglobal.net/nintendo/n.css">');
    }
    </script>
    

    va bene lo stesso ?

    grazie per i consigli, pero io ovviamente ho la versione adatta a tutti i browser da pc , l'unica versione particolare è quella wii (che altrimenti sarebbe illeggibile su tv)

    EDIT la versione funzionante, purtroppo dà 4 errori nell' html validator...


  • Super User

    Avevo indicato nel mio primo intervento che il codice che postavo era php e non javascript... 🙂

    Ho capito che tu vuoi fare una versione per wii, e io ti volevo far riflettere sul fatto che forse bisogna farne una anche per playstation? O perchè no per un palmare? E per un cellulare Symbian?

    Di solito tranne siti importanti come Google che possono permettersi di anilizzare moltissimi user agent, gli altri si adattano a fare versioni differenti in base alla risoluzione e non allo user agent.

    Però se nel tuo caso, per la specificità del sito, è tanto importante individuare solo gli utenti Wii, le strade possibili ti sono state indicate. 😉