Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    detect browser non funziona

    Per verificare se una pagina viene aperta in un browser piuttosto che un altro, utilizzo il seguente script, che dovrebbe scrivere sulla pagina una frase in base al risultato (2 condizioni diverse).
    Codice PHP:
    var BrowserDetect = {
        
    init: function () {
            
    this.browser this.searchString(this.dataBrowser) || "An unknown browser";
            
    this.version this.searchVersion(navigator.userAgent)
                || 
    this.searchVersion(navigator.appVersion)
                || 
    "an unknown version";
            
    this.OS this.searchString(this.dataOS) || "an unknown OS";
        },
        
    searchString: function (data) {
            for (var 
    i=0;i<data.length;i++)    {
                var 
    dataString data[i].string;
                var 
    dataProp data[i].prop;
                
    this.versionSearchString data[i].versionSearch || data[i].identity;
                if (
    dataString) {
                    if (
    dataString.indexOf(data[i].subString) != -1)
                        return 
    data[i].identity;
                }
                else if (
    dataProp)
                    return 
    data[i].identity;
            }
        },
        
    searchVersion: function (dataString) {
            var 
    index dataString.indexOf(this.versionSearchString);
            if (
    index == -1) return;
            return 
    parseFloat(dataString.substring(index+this.versionSearchString.length+1));
        },
        
    dataBrowser: [
            {
                
    stringnavigator.userAgent,
                
    subString"Chrome",
                
    identity"Chrome"
            
    },
            {     
    stringnavigator.userAgent,
                
    subString"OmniWeb",
                
    versionSearch"OmniWeb/",
                
    identity"OmniWeb"
            
    },
            {
                
    stringnavigator.vendor,
                
    subString"Apple",
                
    identity"Safari",
                
    versionSearch"Version"
            
    },
            {
                
    propwindow.opera,
                
    identity"Opera",
                
    versionSearch"Version"
            
    },
            {
                
    stringnavigator.vendor,
                
    subString"iCab",
                
    identity"iCab"
            
    },
            {
                
    stringnavigator.vendor,
                
    subString"KDE",
                
    identity"Konqueror"
            
    },
            {
                
    stringnavigator.userAgent,
                
    subString"Firefox",
                
    identity"Firefox"
            
    },
            {
                
    stringnavigator.vendor,
                
    subString"Camino",
                
    identity"Camino"
            
    },
            {        
    // for newer Netscapes (6+)
                
    stringnavigator.userAgent,
                
    subString"Netscape",
                
    identity"Netscape"
            
    },
            {
                
    stringnavigator.userAgent,
                
    subString"MSIE",
                
    identity"Explorer",
                
    versionSearch"MSIE"
            
    },
            {
                
    stringnavigator.userAgent,
                
    subString"Gecko",
                
    identity"Mozilla",
                
    versionSearch"rv"
            
    },
            {         
    // for older Netscapes (4-)
                
    stringnavigator.userAgent,
                
    subString"Mozilla",
                
    identity"Netscape",
                
    versionSearch"Mozilla"
            
    }
        ],
        
    dataOS : [
            {
                
    stringnavigator.platform,
                
    subString"Win",
                
    identity"Windows"
            
    },
            {
                
    stringnavigator.platform,
                
    subString"Mac",
                
    identity"Mac"
            
    },
            {
                   
    stringnavigator.userAgent,
                   
    subString"iPhone",
                   
    identity"iPhone/iPod"
            
    },
            {
                
    stringnavigator.platform,
                
    subString"Linux",
                
    identity"Linux"
            
    }
        ]

    };
    BrowserDetect.init();

    if (
    BrowserDetect.browser == "Chrome" || BrowserDetect.browser == "Safari" || BrowserDetect.browser == "Firefox" && BrowserDetect.version 10) {
            
    document.getElementById('hstart').innerHTML = ("All you need is web");
    } else {
            
    document.getElementById('hstart').innerHTML = ("Che peccato!");

    Il risultato è che non scrive nulla!
    Idee e/o suggerimenti?
    metatad
    graphic & web design

  2. #2

    Re: detect browser non funziona

    Originariamente inviato da metatad
    Per verificare se una pagina viene aperta in un browser piuttosto che un altro, utilizzo il seguente script, che dovrebbe scrivere sulla pagina una frase in base al risultato (2 condizioni diverse).

    Il risultato è che non scrive nulla!
    Idee e/o suggerimenti?
    mi sembra che stai mescolando funzioni con classi.. la logica è corretta ma scritta male..

    esempio:
    Codice PHP:
    var BrowserDetect = {
        
    init: function () {
            
    this.browser this.searchString(this.dataBrowser) || "An unknown browser";
            
    this.version this.searchVersion(navigator.userAgent)
                || 
    this.searchVersion(navigator.appVersion)
                || 
    "an unknown version";
            
    this.OS this.searchString(this.dataOS) || "an unknown OS";
        } 
    qui il this ha lo scope sulla funzione init() e non su BrowserDetect quindi non ha alcuna utilità all'interno delle altre funzioni..

    come anche
    Codice PHP:
    var BrowserDetect = {
       
    dataBrowser: [] 
    non ti permette di fare this.dataBrowser sulla funzione init() perche lo scope del this è all'interno della funzione init(). Dovresti fare BrowserDetect.dataBrowser...

    dipende se la vuoi fare come classe o come funzioni..
    Questa volta, più che un voto.. è favoreggiamento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.