javascript - close - Versión de comprobación de plugin jQuery
tooltip jquery ejemplos (15)
Cuando se escribe un nuevo complemento de jQuery, ¿hay una forma sencilla de verificar que la versión actual de jQuery está por encima de cierto número? Viendo una advertencia o registrando un error de lo contrario.
Sería bueno hacer algo como:
jQuery.version >= 1.2.6
en alguna forma u otra
¿Algo como eso?
Comprueba si jQuery está cargado, y si lo está, comprueba la versión. Este método funciona correctamente para los números de versión de 2 dígitos también (1.10.28), y si es necesario, puede extenderlo por 3 dígitos, si reemplaza los 100 números por 1000 ...
function checkJQueryMinVersion(need) {
var v1 = need.split(''.'');
var v1_num = 0;
var v2 = jQuery.fn.jquery.split(''.'');
var v2_num = 0;
if(v1[0] != undefined) {
v1_num += 100*100*parseInt(v1[0]);
}
if(v1[1] != undefined) {
v1_num += 100*parseInt(v1[1]);
}
if(v1[2] != undefined) {
v1_num += parseInt(v1[2]);
}
if(v2[0] != undefined) {
v2_num += 100*100*parseInt(v2[0]);
}
if(v2[1] != undefined) {
v2_num += 100*parseInt(v2[1]);
}
if(v2[2] != undefined) {
v2_num += parseInt(v2[2]);
}
return (v1_num <= v2_num);
}
if(!window.jQuery || !checkJQueryMinVersion(''1.10.28'')) {
alert(''Loading //ajax.googleapis.com/ajax/libs/jquery/1.10.28/jquery.min.js'');
var script = document.createElement(''script'');script.type = ''text/javascript'';
script.src = ''//ajax.googleapis.com/ajax/libs/jquery/1.10.28/jquery.min.js'';
document.getElementsByTagName(''head'')[0].appendChild(script);
}
else {
alert(''Jquery version OK'');
}
Aquí hay una verificación que usé para asegurarme de que el usuario estaba usando al menos v. 1.3.2 de jQuery.
if (/1/.(0|1|2|3)/.(0|1)/.test($.fn.jquery)
|| /^1.1/.test($.fn.jquery)
|| /^1.2/.test($.fn.jquery))
{
//Tell user they need to upgrade.
}
Divide la cadena de la versión jQuery en números para probar su valor. Algunas cadenas de versión no contienen un incremento, por lo que debe ser 0.
var
version = $.fn.jquery.split(''.''),
versionMinor = parseFloat(version[1]),
versionIncrement = parseFloat(version[2] || ''0'');
if (versionMinor === 4 && versionIncrement < 3 || versionMinor < 4) {
$.error(''Requires jQuery 1.4.3 or higher to support ...'');
}
Utilice la función de error jQuery para evitar la ejecución con una explicación para el desarrollador.
En lugar de usar parseInt
como vi en una de las respuestas anteriores, sugeriría usar parseFloat
como se menciona a continuación
var _jQueryVer = parseFloat(''.''+$().jquery.replace(//./g, ''''));
/* Here the value of _jQueryVer would be 0.1012 if the jQuery version is 1.0.12
which in case of parseInt would be 1012 which is higher than
140 (if jQuery version is 1.4.0)
*/
if(_jQueryVer < 0.130) {
alert(''Please upgrade jQuery to version 1.3.0 or higher'');
}
Encontré esto en jquery.1.3.2 fuente:
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {
.....
// The current version of jQuery being used
jquery: "1.3.2",
No verifiqué, pero algo como "$ .fn.jQuery" podría funcionar.
Me sorprende que nadie haya dado esta solución todavía:
//Returns < 0 if version1 is less than version2; > 0 if version1 is greater than version2, and 0 if they are equal.
var compareVersions = function (version1, version2){
if(version1 == version2)return 0;
var version1Parts = version1.split(''.'');
var numVersion1Parts = version1Parts.length;
var version2Parts = version2.split(''.'');
var numVersion2Parts = version2Parts.length;
for(var i = 0; i < numVersion1Parts && i < numVersion2Parts; i++){
var version1Part = parseInt(version1Parts[i], 10);
var version2Part = parseInt(version2Parts[i], 10);
if(version1Part > version2Part){
return 1;
}
else if(version1Part < version2Part){
return -1;
}
}
return numVersion1Parts < numVersion2Parts ? -1 : 1;
}
Pase la versión como una matriz de enteros, como jQmin([1,4,2])
para verificar si la versión actual es igual o superior a v1.4.2.
function jQmin(min) {
var i, cur,
cver = $.fn.jquery,
c = cver.split(".");
while (min.length < c.length) min.push(0);
for (i = 0; i < min.length; i++) {
cur = parseInt(c[i]);
if (cur > min[i]) return true;
if (cur < min[i]) return false;
}
return (cver === min.join("."));
}
Prueba esto:
>>> jQuery.fn.jquery;
"1.3.2"
Qué pasa:
function minVersion(version) {
var $vrs = window.jQuery.fn.jquery.split(''.''),
min = version.split(''.''),
prevs=[];
for (var i=0, len=$vrs.length; i<len; i++) {
console.log($vrs[i], min[i], prevs[i-1]);
if (min[i] && $vrs[i] < min[i]) {
if (!prevs[i-1] || prevs[i-1] == 0)
return false;
} else {
if ($vrs[i] > min[i])
prevs[i] = 1;
else
prevs[i] = 0;
}
}
return true;
}
Escribí ese código en mi página bifurcada: https://gist.github.com/budiadiono/7954617 , código original escrito por dshaw en: https://gist.github.com/dshaw/652870 .
Si es suficiente para verificar la versión secundaria, no la versión de parche, puedes hacer algo como
parseFloat(jQuery.fn.jquery) >= 1.9
Es posible cambiar esto ligeramente para verificar> = 1.4.3: parseFloat(jQuery.fn.jquery) > 1.4 || parseFloat(jQuery.fn.jQuery) == 1.4 && parseFloat(jQuery.fn.jQuery.slice(2)) >= 4.3
parseFloat(jQuery.fn.jquery) > 1.4 || parseFloat(jQuery.fn.jQuery) == 1.4 && parseFloat(jQuery.fn.jQuery.slice(2)) >= 4.3
Siento que todas las soluciones son bastante voluminosas, ¿me falta algo debajo de la mía?
Versión comprimida:
(parseInt(jQuery.fn.jquery.split(''.'').join('''')) > 140) ? alert("Running jquery greater than 1.4.0") : alert("current jquery version is 1.4.0 or less");
Versión larga para mayor claridad:
// get version as a string and get rid of the periods.
version = jQuery.fn.jquery.split(''.'').join('''');
// Make into one long number for easy comparison. Example, 171, or 141.
version = parseInt(version);
if(version > 141){
alert("We''re using a version greater than 1.4.1");
}else{
alert("jQuery version is 1.4.1 or lower");
}
Vea mi respuesta aquí: jQuery Version Compatibility Detection
Ya que no hay una versión jquery que nos permita más de un dígito, se puede usar de manera segura.
if ([$.fn.jquery,"1.6"].sort()[0] == "1.6")
{
// jquery version greater or same as 1.6
}
else
{
// jquery version lower than 1.6
}
La única respuesta correcta es usar una función de comparación de versiones.
Muchas de las respuestas aquí hacen suposiciones realmente deficientes de que incluso un poco de pensamiento crítico puede mostrarse incorrecto, como suponer que cada subversión es un dígito, o que jQuery nunca alcanzará la versión 2. No quiero volver a hacer hash en esta respuesta, pero esos períodos tienen un significado: Significa que "lo que esté a mi izquierda es un número que importa más que todo a mi derecha". componente si el primer par coincide exactamente, y así sucesivamente.
El número de versión de jQuery está disponible en $.fn.jquery
como se indica en muchas otras respuestas aquí. Es una cadena, y su función de comparación de versión debe esperar cadenas.
Aquí hay un puerto de la función de comparación de versiones de PHP para JS . Tenga en cuenta que probablemente sea una exageración para jQuery, especialmente si asume que solo verá números y no se ocupará de los candidatos de lanzamiento y similares. Pero será confiable y seguro para el futuro.
$().jquery;
o
jQuery.fn.jquery;