[ dragan.pavlicevic @ 07.03.2012. 13:30 ] @
Koristim javascript da bi odredio koji odredjuje koji browser koristi korisnik i to mi ok radi. Hteo bi da na osnovu toga odredim koji ce se css koristiti u zavisnosti od browser-a. Palo mi je napamet da za to koristim php, ali mi tu nesto ne stima...

evo i koda:

Code:
<script type="text/javascript">
<!--
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: [
        {
            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",
            versionSearch: "Version"
        },
        {
            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();

// -->
</script>

<?php $browse = "<script type=\"text/javascript\">
<!--
document.write(BrowserDetect.browser);
// -->
</script>";

echo $browse; //radi testa sam stavio ovo i dobijam rezultat

if ($browse == "Opera") echo "ovo je opera";
    
if ($browse == "Firefox") echo "ovo je firefox";
?>


medjutim 'if' ovde ne radi iz nekog razloga...
[ mlbrnda @ 07.03.2012. 13:47 ] @
Izgleda da si malo pobrkao lončiće. PHP se izvršava na serveru, a Javascipt na klijentu. To znači da je ovih nekoliko redova koje si napisao u PHP-u već izvršeno a tek kasnije kada skripta dođe do klijenta počinje da se izvršava Javascript odnosno detekcija browswera...
[ dragan.pavlicevic @ 07.03.2012. 13:51 ] @
ok, to razumem... ali ako je tako kao sto ti kazes

onda
Code:
echo $browser;
ne bi vratio nikakav rezultat, zar ne?
ja dobijam rezultat, ali taj rezultat ne mogu da koristim iz nekog razloga...
[ dakipro @ 07.03.2012. 14:00 ] @
Kazes da razumes ali ne deluje tako
Code:

echo $browse; //radi testa sam stavio ovo i dobijam rezultat

sta dobijes kao rezultat, ovaj string:
Code:

<script type=\"text/javascript\">
<!--
document.write(BrowserDetect.browser);
// -->
</script>

i odmah liniju ispod toga poredis dali ovaj string je jednak sa "Opera" ?
Naravno da nije jednak, jer string "Opera" nije jednak sto i "<script type=\"text/javascript\"><!--document.write(BrowserDetect.browser);// --></script>"

To sto ti posle u browseru vidis koji je browser nije isto kao i ono sto server vidi.
Uradi

echo "<pre>";
var_dump($browse);
echo "</pre>";
ili
echo "<pre>";
print_r($browse);
echo "</pre>";

da vidis isto sto i browser



I definitivno je tacno tako kak Mladen kaze
[ dragan.pavlicevic @ 07.03.2012. 14:14 ] @
ok, bez ljutnje... nisam hteo nikog da uvredim.

ocigledno ne razumem, nov sam u ovome, a to nisam naglasio. Tako da se izvinjavam

Da preformulisem onda, kako da iskoristim code koji imam u js-u i da manipulisem dobijenim razultatom. Da li je uopste moguce to sa php-om ili moze iz js-a sve da se odradi?

hvala.
[ mlbrnda @ 07.03.2012. 14:17 ] @
Za ovo što ti želiš morao bi malo da promeniš pristup... Ili odradi detekciju browser-a u PHP-u pa onda ispisuj šta želiš, ili to isto sa javscriptom, kao što si počeo.
U svakom slučaju moraš da shvatiš da sve ono što napišeš u PHP-u je već izvršeno na serveru, a kasnije na scenu stupa klijentski deo recimo javascript.

Pošto si već počeo da radiš u javascriptu možda je bolje da tako i nastaviš...