TypeError: $.browser is undefined
Asked Answered
A

11

77

I am using msdropdown image combo box to create dropdown select options. when I run this code locally on my PC, everything works great. But when I run it on GoDaddy servers, the msdropdown becomes disabled.

It doesn't work on any browsers. Firebug displays the error as:

TypeError: $.browser is undefined

 echo <<<_START
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
 <title>profile</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="HAPedit 3.1">
<link rel="stylesheet" href="profile.css" type="text/css">
<link rel="stylesheet" type="text/css" href="dd.css" />
<link rel="stylesheet" href="javascript/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script>
<script type="text/javascript" src="jQuery.js"></script>
<script src="javascript/jquery-ui.js"></script>
<script type="text/javascript" src="javascript/drop.js"></script>
<script src="jquery.dd.min.js"></script>
<script type="text/javascript" src="jquery.blockUI3.js"></script>
<script type="text/javascript" src="javascript/req.js"></script>
<link rel="stylesheet" href="css/body.css" />
<script>
$(function() {
$( "#datepicker" ).datepicker({dateFormat: 'dd-mm-yy', minDate: 0, maxDate: "+0M +5D"
 });
});
</script>
<script type="text/javascript">
    <!--
        function otherSelect() {
            var other = document.getElementById("otherBox");
            if    (document.getElementById("form3").place.options[document.getElementById("form3").place.selectedIndex].value == "other") {
                other.style.visibility = "visible";
            }
            else {
                other.style.visibility = "hidden";
            }
        }
    //-->
</script>
</head>

<body id="body">

 <div id="container">
<div class="header">
<a href="profile.php" class="logo">
    <img title="Title" alt="Alter" src="images/logo.png" border="0" height="60px"  width="200px">
</a>
<a style="text-decoration:none; margin-top:15px; font-family:Bookman Old Style;  font-size:12px; color:#FFFFFF; font-weight:bold;" href="logout.php?id='$session_id'"  class="req">
Logout
</a>
<a href="notification.php?email='$encrypted_string'" class="req1">
<img border="0" title="Notifications" alt="Notifications" src="images/notification.png" height="60px" width="60px"><div class="text1">$numbr</div>
</a>
<a href="request.php?email='$encrypted_string'" class="req2">
<img border="0" title="requests" alt="Requests" src="images/request.png" height="60px" width="60px"><div class="text">$req</div>
</a>
</div>

<div id="navigation">
<div id="picture"><img src="$img">
<h1 id="display" style="margin-left:30px;">$name</h1><hr>
<table style="background-color:#81F781;font-family:Chaparral Pro,corbel; font-   size:17px; color:#1C1C1C; width:100%;" border="1" cellpadding="25">
<tr><th>Requests($n)</th></tr></table>
</div>
</div></div>
<div style="margin-top: 90px;" id="conte">

_START;

 echo <<<_START
 </div>
 <div id="accept" style="display:none">
<form method="post" id="form3" action="cnfrm.php">
<br><table border="0" style="width:100%;" cellspacing="4" cellpadding="4"><tr>    <td  style="font-family:Chaparral Pro,corbel; font-size:17px; color:#1C1C1C;">Meeting Date:   <input type="text" id="datepicker" name="date"/></td>
<td style="font-family:Chaparral Pro,corbel; font-size:17px; color:#1C1C1C;">@ about<input  type="text" id="time" size="3">AM<input type="radio" name="time2" id="time2" value="am"> |   PM<input type="radio" name="time2" id="time2" value="pm"></td></tr>
_START;

echo <<<H
<tr><td valign="top" rowspan="2">
<select id="place" name="place" style="width:300px;" onchange="otherSelect()">
    <option value="" data-description="Choose your meeting place"  selected="selected">Meet me @</option>
    <option value="LC" data-image="image/msdropdown/icons/meet.png" data-description="Limbdi Corner">L.C</option>
    <option value="VT" data-image="image/msdropdown/icons/meet.png" data-description="Vishwanath temple">V.T</option>
    <option value="H.G" data-image="image/msdropdown/icons/meet.png" data-description="Hyderabaad Gate">H.G</option>
    <option value="D.G Corner" data-image="image/msdropdown/icons/meet.png" data-description="Dhanrajgiri Corner">D.G corner</option>
    <option value="Library" data-image="image/msdropdown/icons/meet.png" data-description="IIT Library">Library</option>
    <option value="other" data-image="image/msdropdown/icons/meet.png" data-description="Add your own...">Other place</option>
</select> </td></tr>
H;

This problem has been solved:msdropdown update and download the latest files.

Aero answered 10/2, 2013 at 13:47 Comment(4)
what version of jquery are you usingLusatia
OP your code doesn't seem to have $.browser in it, so I assume its in one of your plugins.Andras
jquery 1.9.0...however i shifted to JQuery 1.8.3 just for test purpose. Now the error is not shown. But still the dropdown is disabledAero
I just inserted this script too: code.jquery.com/jquery-migrate-1.2.1.js and it worked perfectly.Blacksmith
F
156

just put the $.browser code in your js

var matched, browser;

jQuery.uaMatch = function( ua ) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
        /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
        /(msie) ([\w.]+)/.exec( ua ) ||
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
        [];

    return {
        browser: match[ 1 ] || "",
        version: match[ 2 ] || "0"
    };
};

matched = jQuery.uaMatch( navigator.userAgent );
browser = {};

if ( matched.browser ) {
    browser[ matched.browser ] = true;
    browser.version = matched.version;
}

// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
    browser.webkit = true;
} else if ( browser.webkit ) {
    browser.safari = true;
}

jQuery.browser = browser;
Fortenberry answered 5/7, 2013 at 18:39 Comment(4)
jQuery.browser (or $.browser) has been deprecated since version 1.3 and has been removed since version 1.9. This fix works for me though!Hamel
I don't know from where you got this idea and the code, but it saves my life. Thank you for the great mind!!!Knucklebone
@Knucklebone this code comes from an older version of code.jquery.com/jquery-migrate-1.2.1.jsWystand
Thanks, this is significantly better than loading an entire library just for one function.Rubstone
V
46

$.browser has been removed from JQuery 1.9. You can to use Modernizr project instead

http://jquery.com/upgrade-guide/1.9/#jquery-browser-removed

UPDATE TO SUPPORT IE 10 AND IE 11 (TRIDENT version)

To complete the @daniel.moura answer, here is a version which support IE 11 and +

var matched, browser;

jQuery.uaMatch = function( ua ) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
        /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
        /(msie)[\s?]([\w.]+)/.exec( ua ) ||       
        /(trident)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
        [];

    return {
        browser: match[ 1 ] || "",
        version: match[ 2 ] || "0"
    };
};

matched = jQuery.uaMatch( navigator.userAgent );
//IE 11+ fix (Trident) 
matched.browser = matched.browser == 'trident' ? 'msie' : matched.browser;
browser = {};

if ( matched.browser ) {
    browser[ matched.browser ] = true;
    browser.version = matched.version;
}

// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
    browser.webkit = true;
} else if ( browser.webkit ) {
    browser.safari = true;
}

jQuery.browser = browser;
// log removed - adds an extra dependency
//log(jQuery.browser)
Venosity answered 10/2, 2013 at 13:51 Comment(4)
Or instead of modernizr, possibly question why you need browser sniffing in the first place.Andras
I added the migrate plugin. But still the problem existsAero
The migrate plugin is only useful to detect removed or depreceted functions, it will not fix your problem. What is your JQuery version?Venosity
i shifted to JQuery 1.8.3 just for test purpose. Now the error is not shown. But still the dropdown is disabledAero
K
40

Just include this script

http://code.jquery.com/jquery-migrate-1.0.0.js

after you include your jquery javascript file.

Krol answered 1/8, 2013 at 13:54 Comment(0)
D
25

I placed the following html in my code and this cleared up the $.browser error

<script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>

Hope this helps u

Dreyfus answered 29/3, 2014 at 4:54 Comment(1)
Worked Like a charm!Pierre
C
8

Replace your jquery files with followings :

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script> <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

Cephalometer answered 19/8, 2015 at 15:33 Comment(1)
Thank you very much. After almost 5-6 hours of trying I fixed my issue with this.Bausch
L
7

$().live(function(){}); and jQuery.browser is undefined in jquery 1.9.0 - $.browser was deprecated in jquery update

sounds like you are using a different version of jquery 1.9 in godaddy so either change your code or include the migrate plugin http://code.jquery.com/jquery-migrate-1.0.0.js

Lusatia answered 10/2, 2013 at 13:53 Comment(5)
I added the migrate plugin. But still the problem existsAero
it's not in the home page... and for logging in, you need a specific domain id. So you wont be able to see the problemAero
curious, if you try loading jquery 1.8 code.jquery.com/jquery-1.8.0.js , does it fix it, or is it a different issue causing the menu not to loadLusatia
I tried using jquery 1.8.3. The error is not shown, however the dropdown still remains disabledAero
So its not related to "$.browser is undefined!" looks like you need to look for a different issue for fixing the menuLusatia
H
3

i did solved it using jQuery migrate link specified below:

<script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>
Haberman answered 15/7, 2014 at 5:27 Comment(0)
F
2

Somewhere the code--either your code or a jQuery plugin--is calling $.browser to get the current browser type.

However, early has year the $.browser function was deprecated. Since then some bugs have been filed against it but because it is deprecated, the jQuery team has decided not to fix them. I've decided not to rely on the function at all.

I don't see any references to $.browser in your code, so the problem probably lies in one of your plugins. To find it, look at the source code for each plugin that you've referenced with a <script> tag.

As for how to fix it: well, it depends on the context. E.g., maybe there's an updated version of the problematic plugin. Or perhaps you can use another plugin that does something similar but doesn't depend on $.browser.

Fervidor answered 10/2, 2013 at 13:55 Comment(0)
S
1

In Wordpress 8.5.1, I installed this plugin "Enable jQuery Migrate Helper".

And it worked without any problem.

Substitutive answered 7/10, 2021 at 16:51 Comment(1)
I certainly got the error in Wordpress, and your recommended plugin patched the problem. Thanks for posting!Serajevo
K
1

Since this thread is the first entry most of the people stumble upon. I would like to share my fix as well. You can enqueue your script as following in functions.php file.

add_action( 'wp_enqueue_scripts', 'patch_jquery_migrate' );
function patch_jquery_migrate() {
    wp_deregister_script('jquery-migrate');
    wp_register_script('jquery-migrate', ("http://code.jquery.com/jquery-migrate-1.0.0.js"), false, null);
    wp_enqueue_script( 'jquery-migrate' );
}
Kirghiz answered 13/5, 2022 at 5:40 Comment(0)
P
0

I did solved using this jquery for Github

<script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>

Please Refer this link for more info. https://github.com/Studio-42/elFinder/issues/469

Pappy answered 20/7, 2015 at 7:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.