Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm using the following function, as described here:

http://www.nathanrice.net/blog/browser-detection-and-the-body_class-function/

Now when I use the following css styles, it does exactly what I want in Safari and Chrome:

.safari li#linkrss {margin-top: -15px;}
.chrome li#linkrss {margin-top: -15px;}

When I try .gecko li#linkrss {margin-top: 0px;} for Firefox, however, it doesn't seem to apply. For example, when I inspect the css element using FireBug, it shows the style for Safari. Any tips on how to fix this?

share|improve this question
    
You mean the global $is_gecko variable is not being set to true in Firefox (what's the version, btw?); if this is correct then WordPress is not detecting your Firefox correctly, and assuming it is $is_safari. Can you dump these globals to make sure that Firefox is getting recognized as $is_safari instead? Do you have some header-altering Firefox plugins enabled? Disable all Firefox plugins. –  soulseekah Apr 2 '12 at 1:45

1 Answer 1

up vote 1 down vote accepted

Can't tell you exactly why but that function didnt work for me either..
Finally i have found this script i have modified a little bit here: get_browser()

Here it is (in your functions.php):

function whatBrowser() {
    //browsers
    define("UNKNOWN", 0);
    define("TRIDENT", 1);
    define("GECKO", 2);
    define("PRESTO", 3);
    define("WEBKIT", 4);
    define("VALIDATOR", 5);
    define("ROBOTS", 6);

    if(!isset($_SESSION["info"]['browser'])) {
        $_SESSION["info"]['browser']['engine'] = UNKNOWN;
        $_SESSION["info"]['browser']['version'] = UNKNOWN;
        $_SESSION["info"]['browser']['platform'] = 'Unknown';

        $navigator_user_agent = ' ' . strtolower($_SERVER['HTTP_USER_AGENT']);

        if (strpos($navigator_user_agent, 'linux')) :
            $_SESSION["info"]['browser']['platform'] = 'Linux';
        elseif (strpos($navigator_user_agent, 'mac')) :
            $_SESSION["info"]['browser']['platform'] = 'Mac';
        elseif (strpos($navigator_user_agent, 'win')) :
            $_SESSION["info"]['browser']['platform'] = 'Windows';
        endif;

        if (strpos($navigator_user_agent, "trident")) {
            $_SESSION["info"]['browser']['engine'] = TRIDENT;
            $_SESSION["info"]['browser']['version'] = floatval(substr($navigator_user_agent, strpos($navigator_user_agent, "trident/") + 8, 3));
        }
        elseif (strpos($navigator_user_agent, "webkit")) {
            $_SESSION["info"]['browser']['engine'] = WEBKIT;
            $_SESSION["info"]['browser']['version'] = floatval(substr($navigator_user_agent, strpos($navigator_user_agent, "webkit/") + 7, 8));
        }
            elseif (strpos($navigator_user_agent, "presto")) {
            $_SESSION["info"]['browser']['engine'] = PRESTO;
            $_SESSION["info"]['browser']['version'] = floatval(substr($navigator_user_agent, strpos($navigator_user_agent, "presto/") + 6, 7));
        }
        elseif (strpos($navigator_user_agent, "gecko")) {
            $_SESSION["info"]['browser']['engine'] = GECKO;
            $_SESSION["info"]['browser']['version'] = floatval(substr($navigator_user_agent, strpos($navigator_user_agent, "gecko/") + 6, 9));
        }
        elseif (strpos($navigator_user_agent, "robot"))
            $_SESSION["info"]['browser']['engine'] = ROBOTS;
        elseif (strpos($navigator_user_agent, "spider"))
            $_SESSION["info"]['browser']['engine'] = ROBOTS;
        elseif (strpos($navigator_user_agent, "bot"))
            $_SESSION["info"]['browser']['engine'] = ROBOTS;
        elseif (strpos($navigator_user_agent, "crawl"))
            $_SESSION["info"]['browser']['engine'] = ROBOTS;
        elseif (strpos($navigator_user_agent, "search"))
            $_SESSION["info"]['browser']['engine'] = ROBOTS;
        elseif (strpos($navigator_user_agent, "w3c_validator")) 
            $_SESSION["info"]['browser']['engine'] = VALIDATOR;
        elseif (strpos($navigator_user_agent, "jigsaw"))
            $_SESSION["info"]['browser']['engine'] = VALIDATOR;

    echo $_SESSION['browser']['engine'];
        switch($_SESSION["info"]['browser']['engine']) {
            case UNKNOWN: echo "unknown";
            break;
            case TRIDENT: echo "trident";
            break;
            case GECKO: echo "gecko";
            break;
            case PRESTO: echo "presto";
            break;
            case WEBKIT: echo "Webkit";
            break;
            case VALIDATOR: echo "validator";
            break;
            case ROBOTS: echo "robot";
        }
    }
}

.
Then just change the body tag to this:

<body class="<?php whatBrowser(); ?>">

.
I tested it with chrome, IE & Firefox... worked gr8 for me..

Hope this Helps.
Best of luck, Sagive.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.