Есть ли какие-либо ресурсы, которые могут протестировать jQuery script/extension/plugin/whatever на проблемы совместимости версий?
Для этого не существует автоматизированных инструментов, по крайней мере, я когда-либо видел. Причина этого в том, что основная группа jQuery пытается не вводить критические изменения, если нет реальной долгосрочной выгоды. Это означает, что когда происходят критические изменения, то, что вы хотели , не всегда может вам сказать автоматизированная система.
Давайте возьмем jQuery 1.4 в качестве примера, вот список критических изменений:
http://jquery14.com/day-01/jquery-14#backwards
jQuery ()
теперь пустой набор, хорошо или плохо? jQuery.browser.version
теперь версия браузера, хорошая или плохая? JSON
теперь подвергается гораздо более строгому синтаксическому анализу, хорошо или плохо? Те являются лишь горсткой, но часто зависит, сломают ли они или помогут вашему коду. Теперь, если у вас есть .attr (val, func ())
, тогда, очевидно, это только 1.4+, который вы могли бы обнаружить ... поэтому движок, который может определить минимальную версию jQuery, которую может использовать ваш код, может быть возможно.
Проверять проблемы совместимости, которые, как я понимаю, в большинстве случаев означают критические изменения, было бы намного сложнее, потому что они (в основном) по своей природе очень странные или критические случаи, которые ломаются ... иначе у команды не было бы сломал их :)
Вы хотите получить текущую версию jQuery и протестировать ее, чтобы убедиться, что это определенная версия?
$().jquery;
Будет получена версия.
Metropolis
Просто написал небольшой плагин jQuery, чтобы помочь с проблемами совместимости версий ... не стесняйтесь улучшать его.
(function($) {
/**
* Used for version test cases.
*
* @param {string} left A string containing the version that will become
* the left hand operand.
* @param {string} oper The comparison operator to test against. By
* default, the "==" operator will be used.
* @param {string} right A string containing the version that will
* become the right hand operand. By default, the current jQuery
* version will be used.
*
* @return {boolean} Returns the evaluation of the expression, either
* true or false.
*/
$.isVersion = function(left, oper, right) {
if (left) {
var pre = /pre/i,
replace = /[^\d]+/g,
oper = oper || "==",
right = right || $().jquery,
l = left.replace(replace, ''),
r = right.replace(replace, ''),
l_len = l.length, r_len = r.length,
l_pre = pre.test(left), r_pre = pre.test(right);
l = (r_len > l_len ? parseInt(l) * ((r_len - l_len) * 10) : parseInt(l));
r = (l_len > r_len ? parseInt(r) * ((l_len - r_len) * 10) : parseInt(r));
switch(oper) {
case "==": {
return (true === (l == r && (l_pre == r_pre)));
}
case ">=": {
return (true === (l >= r && (!l_pre || l_pre == r_pre)));
}
case "<=": {
return (true === (l <= r && (!r_pre || r_pre == l_pre)));
}
case ">": {
return (true === (l > r || (l == r && r_pre)));
}
case "<": {
return (true === (l < r || (l == r && l_pre)));
}
}
}
return false;
}
})(jQuery);
Может использоваться так:
$.isVersion("1.4.2"); // returns true, if $().jquery == "1.4.2"
$.isVersion("1.3.2", ">"); // returns true if $().jquery > "1.3.2"
$.isVersion("1.3", ">", "1.2.6"); // returns true
$.isVersion("1.3.2", "<", "1.3.1"); // returns false
$.isVersion("1.4.0", ">=", "1.3.2"); // returns true
$.isVersion("1.4.1", "<=", "1.4.1"); // returns true
Также поддерживает предварительные версии (версии имеют больший вес, чем предварительные версии, поэтому 1.4.0pre <1.4.0):
$.isVersion("1.4.2", "<=", "1.4.2pre"); // returns false