$.browser is undefined solution

$.browser is used to get basic browser information.

Since jQuery version 1.9, $.browser and $.browser.version have been removed, and $.support has been replaced. In the updated version 2.0, IE 6/7/8 will no longer be supported. In the future, if users need to support IE 6/7/8, they can only use jQuery 1.9.

Solution:

1. Use JQuery version below 1.9 (of course, this method is not suitable and too troublesome);

2. Reference $.browser.js, the code is as follows

(function(jQuery){   
  
if(jQuery.browser) return;   
  
jQuery.browser = {};   
jQuery.browser.mozilla = false;   
jQuery.browser.webkit = false;   
jQuery.browser.opera = false;   
jQuery.browser.msie = false;   
  
var nAgt = navigator.userAgent;   
jQuery.browser.name = navigator.appName;   
jQuery.browser.fullVersion = ''+parseFloat(navigator.appVersion);   
jQuery.browser.majorVersion = parseInt(navigator.appVersion,10);   
var nameOffset,verOffset,ix;   
  
// In Opera, the true version is after "Opera" or after "Version"   
if ((verOffset=nAgt.indexOf("Opera"))!=-1) {   
jQuery.browser.opera = true;   
jQuery.browser.name = "Opera";   
jQuery.browser.fullVersion = nAgt.substring(verOffset+6);   
if ((verOffset=nAgt.indexOf("Version"))!=-1)   
jQuery.browser.fullVersion = nAgt.substring(verOffset+8);   
}   
// In MSIE, the true version is after "MSIE" in userAgent   
else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {   
jQuery.browser.msie = true;   
jQuery.browser.name = "Microsoft Internet Explorer";   
jQuery.browser.fullVersion = nAgt.substring(verOffset+5);   
}   
// In Chrome, the true version is after "Chrome"   
else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {   
jQuery.browser.webkit = true;   
jQuery.browser.name = "Chrome";   
jQuery.browser.fullVersion = nAgt.substring(verOffset+7);   
}   
// In Safari, the true version is after "Safari" or after "Version"   
else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {   
jQuery.browser.webkit = true;   
jQuery.browser.name = "Safari";   
jQuery.browser.fullVersion = nAgt.substring(verOffset+7);   
if ((verOffset=nAgt.indexOf("Version"))!=-1)   
jQuery.browser.fullVersion = nAgt.substring(verOffset+8);   
}   
// In Firefox, the true version is after "Firefox"   
else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {   
jQuery.browser.mozilla = true;   
jQuery.browser.name = "Firefox";   
jQuery.browser.fullVersion = nAgt.substring(verOffset+8);   
}   
// In most other browsers, "name/version" is at the end of userAgent   
else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) <   
(verOffset=nAgt.lastIndexOf('/')) )   
{   
jQuery.browser.name = nAgt.substring(nameOffset,verOffset);   
jQuery.browser.fullVersion = nAgt.substring(verOffset+1);   
if (jQuery.browser.name.toLowerCase()==jQuery.browser.name.toUpperCase()) {   
jQuery.browser.name = navigator.appName;   
}   
}   
// trim the fullVersion string at semicolon/space if present   
if ((ix=jQuery.browser.fullVersion.indexOf(";"))!=-1)   
jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix);   
if ((ix=jQuery.browser.fullVersion.indexOf(" "))!=-1)   
jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix);   
  
jQuery.browser.majorVersion = parseInt(''+jQuery.browser.fullVersion,10);   
if (isNaN(jQuery.browser.majorVersion)) {   
jQuery.browser.fullVersion = ''+parseFloat(navigator.appVersion);   
jQuery.browser.majorVersion = parseInt(navigator.appVersion,10);   
}   
jQuery.browser.version = jQuery.browser.majorVersion;   
})(jQuery);   

Create a new js, copy the above code into it, and then quote it in jsp.

Explanation on the way of writing (function(){xxx})() in JS.


Self-executing anonymous functions:

Common format: (function() { /* code */ })();
Explanation: The first pair of parentheses surrounding the function (function(){}) returns an unnamed function to the script, and then a pair of empty parentheses returns immediately The unnamed function of , the parameters of the anonymous function are inside the parentheses.
Function: You can use it to create a namespace, as long as you write all your code in this special function package, then the outside cannot be accessed unless you allow (add window before the variable, so that the function or variable becomes global) . The code of each JavaScript library is also basically organized in this way.
To sum up, 1. The function of the execution function is mainly anonymous and automatic execution, and the code is already running when it is interpreted.

2. Use anonymous functions and closures to execute the code in xxx. At the same time, all definitions such as the scope of variables are in the closures, which will not pollute the external namespace.

3. If you want to implement a certain function without polluting global variables, you will use this self-executing anonymous function, which is common in jquery plug-ins.


Original link: https://blog.csdn.net/lufuzhang2/article/details/46807813

Guess you like

Origin blog.csdn.net/wybshyy/article/details/131793291
Recommended