обнаружение совместимости версий jQuery

Есть ли какие-либо ресурсы, которые могут протестировать jQuery script/extension/plugin/whatever на проблемы совместимости версий?

8
задан Derek Adair 25 June 2010 в 20:50
поделиться

3 ответа

Для этого не существует автоматизированных инструментов, по крайней мере, я когда-либо видел. Причина этого в том, что основная группа jQuery пытается не вводить критические изменения, если нет реальной долгосрочной выгоды. Это означает, что когда происходят критические изменения, то, что вы хотели , не всегда может вам сказать автоматизированная система.

Давайте возьмем jQuery 1.4 в качестве примера, вот список критических изменений:
http://jquery14.com/day-01/jquery-14#backwards

  • jQuery () теперь пустой набор, хорошо или плохо?
  • jQuery.browser.version теперь версия браузера, хорошая или плохая?
  • JSON теперь подвергается гораздо более строгому синтаксическому анализу, хорошо или плохо?

Те являются лишь горсткой, но часто зависит, сломают ли они или помогут вашему коду. Теперь, если у вас есть .attr (val, func ()) , тогда, очевидно, это только 1.4+, который вы могли бы обнаружить ... поэтому движок, который может определить минимальную версию jQuery, которую может использовать ваш код, может быть возможно.

Проверять проблемы совместимости, которые, как я понимаю, в большинстве случаев означают критические изменения, было бы намного сложнее, потому что они (в основном) по своей природе очень странные или критические случаи, которые ломаются ... иначе у команды не было бы сломал их :)

3
ответ дан 5 December 2019 в 08:51
поделиться

Вы хотите получить текущую версию jQuery и протестировать ее, чтобы убедиться, что это определенная версия?

$().jquery;

Будет получена версия.

Metropolis

1
ответ дан 5 December 2019 в 08:51
поделиться

Просто написал небольшой плагин 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
13
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: