首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌Chrome在PC上的成功在document.createEvent(“TouchEvent”).?

谷歌Chrome在PC上的成功在document.createEvent(“TouchEvent”).?
EN

Stack Overflow用户
提问于 2012-02-13 19:27:14
回答 1查看 669关注 0票数 1

这个代码片段曾经起作用。我认为谷歌Chrome最近的一次更新打破了它。还有其他人看到这个吗?

代码语言:javascript
复制
function DenyIfTablet() {
    try {
        document.createEvent("TouchEvent");
        alert("Silverlight not supported on touch-screen devices.");
        window.location = document.referrer;
    }
    catch(exception){ 
        //OK to continue.
    }
}

在IE9下,将引发异常,并且不会发生警报/重定向。

在Chrome17.0.963.43下,一个例外是抛出的而不是,即使我没有使用触摸屏设备,也会被重定向。

我在这里做了什么不恰当的事情吗,还是在Chrome更新中,地毯在我下面被拉出来了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-14 07:27:40

是的,Chrome 17和18的一些变化使得这个测试不起作用,但它在19岁时又起作用了。然而,面对浏览器选择表达对触摸的支持的许多不同方式,这个测试可能不够强大。

现代化的人对此做了大量的研究,结果在数百个版本的浏览器上,包括移动浏览器和桌面浏览器,如下所示:

http://modernizr.github.com/Modernizr/touch.html

我的理解是,无论是好是坏(大部分是坏的),都没有一个可以用来检测支持的灵丹妙药(甚至在某一天,也没有一致同意的标准方法)。

现代化检测支持的主要方法是

代码语言:javascript
复制
('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch

但是,随后他们将一个元素注入一个“启用触摸”的媒体查询,并测试它是否具有额外的确定性(这有点难理解,但请查看来源)。

因此,我至少会考虑切换到ontouchstart的测试(在浏览器范围列表中它看起来最接近),但是,如果您真的想要正确的话,我只需要使用现代化。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9266662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档