问题标签 [browser-feature-detection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何使用 Javascript 检测 SVG 动画和显示/隐藏 Flash/SVG 对象?
我一直在尝试使用 SMIL 创建 SVG 动画。它在最新的 Firefox 中运行良好,但在 IE 中当然不能运行。我已经有一个类似的 Flash 动画。我的计划是在页面上同时包含 Flash 和 SVG 动画,并根据 javascript 检测显示/隐藏它们。但我对 javascript 很差劲,不知道该怎么做。我将使用链接的 .js 文件。我的计划是在页面加载时检测浏览器是否支持“http://www.w3.org/TR/SVG11/feature#AnimationEventsAttribute”功能,如果支持,就隐藏Flash对象(id="rotateFlash ") 并显示 SVG 对象 (id="rotateSVG")。
我不知道是否有更好的方法来实现我想要的,我还没有在网上找到任何类似于我想要实现的代码。我找到了显示/隐藏 javascripts,但不知道如何用它们实现检测该功能。
这段代码似乎至少做了一些事情,但它似乎遵循“else”命令,我猜这意味着 Firefox 没有将该功能检测为“True”(IE9 也不是,但这是意料之中的)。
我不知道还能做什么。我尝试了其他更简单的 SVG 功能,但得到了相同的结果。我一直在阅读有关 Modernizr 的文章,但这对我来说似乎太复杂了。我不明白如何,为什么,如果它会工作。
javascript - 功能检测不适用于 Internet Explorer 中的事件
我正在尝试编写一个跨浏览器事件添加方法,但它在 IE 中根本不起作用,这是代码:
索引.html
助手.js
脚本.js
javascript - 在没有用户代理嗅探的情况下使用 Javascript 检测没有本机鼠标支持的浏览器?
我正在为桌面和移动浏览器编写游戏,其中涉及通过将对象拖动到目标来选择对象。
仅当使用用户的浏览器无法拖动时,才允许用户通过单击来选择对象。
在 Windows Phone 上,所有屏幕触摸都由浏览器处理以执行滚动或转换为模拟点击事件。但由于 Windows Phone 中没有鼠标,用户根本无法使用 Windows Phone 浏览器拖动任何对象。
除了检测 Windows Phone 用户代理之外,还有其他方法可以检测到这一点吗?
javascript - How to identify buggy behavior in "input" event without browser detection?
I'll start with the question. When a specific browser has a buggy implementation of a feature and your javascript needs to know whether the current browser has that buggy implementation or not so it can use an alternate strategy, how do you figure out if the implementation is buggy without doing browser type sniffing (which is generally considered bad)?
Here's the whole situation.
I was working on some code that wants to use the "input" event for getting notifications of user changes to an <input type="text">
field (works much more live than the "change" event), but when that event isn't supported, it uses a much more complicated scheme involving a bunch of other events.
Since the "input" event is only supported in some browsers, I went in search of a way to do feature detection for the event (rather than browser user agent sniffing) since feature detection is generally a more robust way of doing things. As such, I came across this great article for doing exactly that and this code seems to work:
Then, I ran into problems with IE (surprise, surprise). While IE purports to support the "input" event and it passes the feature test above and it works most of the time, IE's support is buggy as hell. It doesn't even trigger the event when the user hits the backspace key (among other missing behaviors). As such, I can't rely on it in IE. So, I had built this nice clean code that did a feature test for the "input" event and uses it's very clean implementation when present and when not present used this much uglier work-around involving monitoring eight other events. Now, it's busted in IE because the feature test for the "input" event passes so the code attempts to use it, but it's buggy as hell so it doesn't work.
Since these IE bugs show up on user actions, I can't think of any way to devise a javascript feature test to identify the buggy behavior. As such, my only current path is to resort to browser sniffing and refuse to rely on the "input" tag if the browser is IE.
Are there any options here for identifying the buggy behavior in the "input" event besides browser sniffing? If one had to do browser sniffing, is there a way to identify IE by behavior rather than a user agent string that can be freely spoofed and isn't guaranteed to be accurate?
javascript - 我应该如何检测 IE 浏览器?
我已经对特定功能进行了功能检测,以决定是否可以使用它或是否必须使用变通方法。但是,不幸的是,我发现 IE 在该功能中有一些错误,即使它存在,它也对我毫无用处。因此,即使它通过了功能检测,我也需要检测浏览器是 IE,所以如果它是 IE,我不会使用该功能。
我试图看看我是否可以对实际的错误行为进行功能检测(这将是最好的,因为如果 IE 将来修复该行为,它会适应),但似乎没有任何方法可以做到这一点(主题另一个问题)。这意味着我只能试图最终确定它是一个 IE 浏览器,这样我就可以避免这个错误的功能。 我不想使用 useragent 字符串,因为我们都知道它很容易被欺骗并且很容易出错。
所以,我想对它是否是IE浏览器进行特征检测。
到目前为止我的方法是这样的:
这将查看该attachEvent()
方法是否存在以及是否ActiveXObject
存在支持。因为attachEvent
Opera 支持attachEvent
.
这是检测 IE 的可靠方法吗?有没有更好的方法?
请不要回复我真的不应该做浏览器检测,而是应该使用特征检测。我已经在进行功能检测,但这导致了一个问题,因为“支持”该功能并因此通过功能检测的浏览器结果非常错误,以至于我无法在该浏览器中使用该功能。所以,现在我必须检测有问题的浏览器。
如果您想了解更多有关使用此功能的具体情况,请参阅this other question。
javascript - 使用 Modernizr 检测移动设备的最可靠方法是什么?
我正在开发一个响应式网站,当用户在移动设备上浏览时,我被要求将我们网站上的任何免费电话号码交换为固定电话号码。使用 Modernizr 库(或任何其他库)检测用户是否在移动设备上的最可靠方法是什么?
我知道 Modernizr.touch 和 Modernizr.geolocation。当两者结合在一个if(Modernizr.touch && Modernizr.geolocation)
声明中时,它们可以很好地指示您是否在移动设备上,但是 iPad 将使这两个属性都成立。我不愿意测试设备尺寸,因为移动设备越来越大!
有没有人解决过这个问题?
html - 如何检测电话功能
我正在构建一个 html5 网络应用程序,希望它主要从移动设备运行。该应用程序有一个电话号码,单击该电话号码时,会拨打显示的号码。
如果用户使用的是 iPhone 或 Android 等,这非常有用,但如果用户使用的是没有电话功能的 iPod Touch 或 iPad 怎么办?在 XCode 中的 iPhone 模拟器上,我收到一条错误消息,提示 safari 无法打开页面。
是否可以检测设备是否有电话,如果没有,请禁用链接
谢谢
javascript - 如何正确检测浏览器是否支持border-image?
我制作了一个使用边框图像的 HTML 应用程序。
Chrome 总是自动更新,FireFox 从 3.5+ 开始支持 -moz-border-image。所以我认为可以肯定地说大多数 Chrome 和 FireFox 用户都可以享受这种效果。但对于 IE 用户,我也希望他们享受一种不那么令人愉快,但可以忍受的效果。
因此,我认为我需要一种正确的方法来查找浏览器是否支持使用 JavaScript 的边框图像并进行一些破解,但我不知道该怎么做。
参考: http: //msdn.microsoft.com/en-us/magazine/hh475813.aspx(特征检测)
javascript - 查找 DOM 滚动条宽度
我想找到垂直和水平滚动条的像素宽度。我知道它们对于不同的操作系统/浏览器是不同的。
我发现这段代码试图检测它,但是唉,它似乎在 IE7 上不起作用:
javascript - transtionend/animationend 事件的特征检测?
我正在寻找一种更简洁的方法来检测transitionend
. 我已经看到了很多例子,只是蛮力地将处理程序添加到所有变体中。另外,我不想依赖 jQuery(或类似的框架)。
我基本上是从这个列表开始并希望只绑定最合适的(即,列表中的第一个匹配)。
有人觉得他们有一个干净的解决方案吗?相同的解决方案可能适用于animationend
事件。
编辑: msTransitionEnd 和 '-ms-' 前缀属性在最终的 IE10 候选版本之一中被删除。