如何检测非功能性指针事件?

时间:2014-01-04 18:44:16

标签: javascript css3 opera modernizr pointer-events

它说here Opera 12不支持指针事件。这是事实,它打破了我的网站。问题是他们确实支持css中的属性,即使他们似乎没有做正确的事情。在这种情况下,Modernizr形式的特征检测是无用的:

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

jQuery.browser已被删除。我可以做些什么来检测我的javascript代码中的这个角落案例?或者获得Opera的版本?

3 个答案:

答案 0 :(得分:1)

Opera提供了自己轻松获取版本的方法。如果你确定Opera

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

将检测小于或等于12的歌剧

答案 1 :(得分:0)

好的,这是我的错误解决方案,我希望有更好的解决方案......这是打字稿:

    ...
    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;
}

答案 2 :(得分:-1)

如果您只想检测指针事件是否已启用,您可以根据W3C specification使用导航器属性:

window.navigator.pointerEnabled

这对于Opera 15及更高版本的回报是正确的,但是对于Opera 12及更低版本它是未定义的,这是你所理解的。