Как я могу обнаружить нефункциональные события указателя?

здесь говорится, что Opera 12 не поддерживает события указателя. И это правда, это ломает мой сайт. Проблема в том, что они поддерживают это свойство в css, даже если кажется, что они не делают с ним правильных вещей. Обнаружение признаков в виде Modernizr в этом случае бесполезно:

>>> Modernizr.testProp('pointerEvents')
true

jQuery.browser удален. Что я могу сделать, чтобы обнаружить этот угловой случай в моем коде javascript? Или получить версию Opera?


person dsign    schedule 04.01.2014    source источник


Ответы (3)


Opera предоставляет собственный простой способ получения версии. Если вы уверены, что Opera

if (window.opera && parseInt(opera.version(), <== 12)) {
 //do the opera thing
}

обнаружит оперу, меньше или равную 12

person Patrick    schedule 04.01.2014

Хорошо, вот мое плохое решение, надеюсь, будет лучше... Это в машинописном тексте:

    ...
    public isBadOpera(): boolean
    {
        var isOpera = Object.prototype.toString.call(window['opera']) == '[object Opera]';
        if ( isOpera )
        {
            var opera: OperaVersion = window['opera'];
            var version_string = opera.version();
            var version_re = /(\d+).(\d+)/;
            var mo = version_re.exec(version_string);
            if ( mo )
            {
                var major_version = Number(mo[1]);
                if ( major_version <= 12)
                {
                    return true;
                }
            }
        }
        return false;
    }
    ...

interface Opera {
    version():string;
}
person dsign    schedule 04.01.2014

Если вы хотите только определить, включены ли события указателя, вы можете использовать свойство navigator в соответствии с спецификация W3C:

window.navigator.pointerEnabled

Это возвращает true для Opera 15 и выше, но дает undefined для Opera 12 и ниже, чего вы и хотите, насколько я понимаю.

person kkara    schedule 05.01.2014
comment
Это относится к событиям указателя ввода, а не к событиям указателя CSS - person Patrick; 05.01.2014