问题标签 [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.

0 投票
2 回答
1570 浏览

javascript - 检查浏览器是否支持`.textContent`的最佳方法?

我想检查浏览器是否支持.textContent

我想过这些选择:

  1. if( document.body.textContent ) { }
  2. if( document.createElement('div').textContent !== void(0) ) { }

当然,第一个更简单,但我看到的问题是浏览器可能会计算所有字符串,如果网站很大,这可能会很慢。

那么,我应该选择哪一个呢?还是有更好的选择?

编辑:我创建了一个jsperf

0 投票
3 回答
1905 浏览

javascript - 功能检测对 DOMContentLoaded 事件的支持

是否可以检测到对DOMContentLoaded事件的支持?

方法就像 Kangax 的解决方案在这里不起作用,因为DOMContentLoaded没有作为任何元素的属性公开:Detecting event support without browser sniffing

0 投票
1 回答
99 浏览

jquery - 如何检查自定义(伪)选择器是否已添加到 jQuery

我从CSSTricks.com 上这篇文章的评论中获取了以下片段。

本质上,它提供了一个伪选择器:containsNC,它的工作原理与此类似:contains,但不区分大小写。

我希望能够检测此选择器是否可用,以便有条件地:contains用作后备。

如何检查这种自定义选择器的存在?

或者,是否有更好的方法在较新的 jQuery 中进行不区分大小写的匹配?

作为参考,这是我目前使用的方式:contains过滤 Facebook 好友列表

0 投票
1 回答
1465 浏览

internet-explorer-10 - JS 功能检测对嵌套元素的保留 3d 属性支持

任何人都知道这是否可能,如果可以,我如何检测是否完全支持 preserve-3d 属性?

我的意思是嵌套元素相对于它的 3D 定位父元素的 3D 定位,所有这些都使用 CSS3 转换。

我问的原因是IE10,它对preserve-3d 的支持非常有限。它不考虑嵌套元素(它们像父元素一样相对于视口定位),并且它还存在根据 Z 轴分层元素的问题(如果 Z 元素位于 DOM 下方,则较远的 Z 元素与较近的元素重叠)。

到目前为止,决定是使用浏览器引擎检测,但如果我能很好地选择属性本身,那就更好了!

谢谢!

0 投票
1 回答
290 浏览

firefox - 在 Firefox 中检测对没有 navigator.userAgent 的 Shoutcast ICY MP3 的支持?

Mozilla Firefox 的当前版本是 23.0.1,此版本不支持从不同于 80 的 TCP 端口播放 MP3 广播流(最常见的是 Shoutcast 1.9.8 的 8000)。

当 HTML5 音频不支持 MP3 时,我使用 Flash,检测方法是:

Firefox中对 Mp3 广播流的支持将在版本 24 中添加

a.canPlayType("audio/mpeg; codecs=mp3") = 可能在 Chrome 和 Firefox 中,Chrome 确实支持,firefox 不支持,因此当前的代码检测不适用于 Firefox。

当前支持 IE 6 的 jQuery 版本是 1.10.2,这个版本没有 .browser

我认为“风格化”的方式是测试功能而不是查询浏览器/版本,尽管在这里我很难不违反这个“原则”。

在 Firefox 中没有 navigator.userAgent 检测 MP3 ICY 支持的“风格化”方法是什么?

0 投票
1 回答
5254 浏览

css - 使用 Modernizr 测试浏览器对 css calc() 的支持

如何使用 Modernizr 测试浏览器是否支持 CSS3 calc() 属性?

我努力了:

但这只会在控制台中返回“未定义”。

(我正在使用modernizr-2.6.2.js)。

使用 Modernizr 进行浏览器功能检测的正确方法是什么?

0 投票
0 回答
89 浏览

javascript - detect if browser will fire javascript while scrolling

Some mobile browsers freeze javascript while scrolling, and therefore I won't receive scroll events until the user stops scrolling. Is there a way to detect this 'feature' so as to allow for it in a smart way? Or is the only solution to check the user agent?

0 投票
2 回答
999 浏览

javascript - 检测 Windows 8 移动版?

我想知道这是否可以检测到 Windows 8 移动版!

既然说 IE10 放弃了条件注释,他们在移动设备中也实现了相同的功能吗?

0 投票
1 回答
844 浏览

webgl - 用于 WebGL 应用程序的 Javascript 中的浏览器检测

好的,我想做浏览器检测;我知道每个人都说不要。但这就是原因。我有一个 WebGL 应用程序/页面。检测 WebGL 很容易。但是如果不支持 WebGL,我想向用户提供下一步该做什么的信息。为此,我需要浏览器、平台和版本。所以我明白为什么每个人都说要使用特征检测,但在这种情况下,如果我想给出说明,我必须了解浏览器。

例如,对于 Firefox,我会告诉用户更改 about:config 设置,而对于 Safari,它位于开发人员菜单上(如果没有记错的话)。

如果有更好的方法,我会全力以赴。如果没有,是否有一个像样的浏览器检测库,可以持续维护并处理所有边缘情况或浏览器报告方式的不一致。

0 投票
3 回答
4155 浏览

javascript - 如何“检测性能”浏览器

一些移动浏览器和 IE8 javascript 不仅慢了一点,它还慢了 10 倍!有很多东西通过了特征检测测试(js css 操作等),但是速度太慢了,会降低用户体验。

Modernizr 会告诉我某个功能存在,但它不会告诉我它是否低于某个性能阈值。

检测 IE8 对 IE8 用户有效,但不适用于运行旧版本 FF、Safari、移动 Opera 等的慢速移动设备、平板电脑和计算机。

在不惩罚现代浏览器用户的情况下,有哪些有效的方法可以缓和或禁用慢速功能?

比时间戳代码执行块更好的方法吗?