问题标签 [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 投票
0 回答
272 浏览

mobile - 移动 Safari:检测是否在 Gmail 应用程序中

我已经创建了一个基本的网络应用程序,如果它不是处于独立模式(即不在您的主屏幕上),它会出现一个小的“单击此处添加到主屏幕”弹出窗口。我有一个基本的注册系统,可以通过电子邮件向用户发送应用程序的链接,但现在注意到,如果他们从他们的 iOS Gmail 应用程序打开链接,带有选项菜单的底部栏不会出现,但弹出窗口仍然会出现。

是否有任何设备、浏览器或导航器属性我可以提取以检测我在 Gmail 应用程序中,而不是在 Mobile Safari 浏览器应用程序本身中?谢谢。

0 投票
2 回答
9930 浏览

javascript - 在没有 jQuery 或 Modernizr 等框架的情况下检测对 transitionend 事件的支持的简单方法?

有没有人找到一种简单的方法来检测浏览器是否支持 vanillaJs 中的 transitionend 事件,尤其是在所有主要浏览器中都可以使用的方式?:(

我在这里找到了这个未回答的线程:Test for transitionend event support in Firefox,以及很多几乎可以工作的黑客。

现在,我正在向所有供应商前缀批量添加事件侦听器,并且效果不错(尽管我认为这是一种可怕的方法,每次看到它都会伤害我的眼睛)。但是IE8和IE9根本不支持,所以我需要检测这两个,分别对待。

我宁愿在没有浏览器嗅探的情况下执行此操作,并且绝对没有像 jQuery 这样的大型库/框架

我制作了一个 jsfiddler 片段来说明我的问题。有一个生成对话框的按钮。当通过单击关闭删除对话框时,它会以顶部和不透明度进行转换,并且在结束转换后它应该显示=无。但是如果从不触发transitionend(如在IE8和IE9中),则永远不会删除对话框,使其覆盖显示对话框按钮,破坏用户体验。如果我可以检测到 transitionend 何时不工作,我可以在关闭这些浏览器时设置 display=none 。

http://jsfiddle.net/QJwzF/22/

它适用于 Opera、Firefox、Chrome 和 IE10,但不适用于 IE8 和 IE9 (afaik)

如果我在解释我的问题时做得不好,请告诉我,我会努力做得更好!:)

0 投票
1 回答
98 浏览

jquery - 如何检测我正在使用的浏览器功能?

我有一个现有的代码库,它使用最新的 jQuery 和 jQuery-ui 以及其他一些插件。我被要求检测不支持此代码库中使用的功能的浏览器,并警告用户他们的浏览器不完全受支持,并建议他们升级/切换浏览器。

似乎适合此任务的工具类似于 Modernizr。问题是,如果不亲自检查每一行代码,我真的不知道哪些功能正在使用或没有被使用。所以我不知道如何构建我的测试用例来确保支持给定的浏览器。

是否有脚本或工具可以用来帮助确定我当前正在使用哪些功能?或者我可以使用一些现有的检查来使这更容易?

0 投票
1 回答
193 浏览

jquery-ui - jquery ui 拖放功能检测

我在我的网站上使用 jQuery UI 拖放。我收集移动设备通常不支持此功能,那么检测此功能是否有效的最简单方法是什么,以提供替代方案以防万一。

注意:我更喜欢特征检测而不是浏览器检测。

0 投票
3 回答
9304 浏览

javascript - 特征检测、特征推断和使用UA字符串有什么区别

我最近在一次工作面试中被问到这个问题,特别是关于 Javascript。我想知道正确的反应。

feature detection,feature inference和使用 User agent字符串之间到底有什么区别?

0 投票
1 回答
91 浏览

javascript - Firefox 和 IE 以不同大小显示 iframe 文本。我可以检测到哪些功能来增加 iframe 的大小?

这个问题特别适用于所有支持特征检测而不是浏览器检测的人。

我以前使用浏览器检测来更改 iframe 的大小,该 iframe 会在 Firefox 和 ie 中切断部分嵌入页面,但现在它不适用于 ie 11。

我有一个来自不同域的页面显示为 i-frame。外部页面上唯一的内容是格式化的文本。我根据 chrome 中的内容设置 iframe 的高度,以使所有文本都被完美地框起来。Safari 和 Opera 使用 Chrome 设置,但 Firefox 和 IE 显示的 iframed 页面大于 chrome 导致部分文本被截断。如果检测到 Firefox 或 IE,我使用更改高度的函数解决了这个问题:

这工作正常,直到 IE 更改其用户代理字符串。

所以我决定倾听所有说不要检测浏览器、检测功能的人。

问题:什么功能?

如果可能的话,我完全不知道如何使用特征检测来解决这个问题。

0 投票
2 回答
715 浏览

javascript - foreignObject内部绝对url图片的特征检测

经过一番研究,我发现如果 Chrome 和 Opera 具有绝对路径,则它们会在 foreignObject 中渲染图像,而 Firefox 仅在它们为 data-uri 格式时才会渲染图像,因为它不加载任何外部资源。

我已经尝试了几种方法,但我找不到一种方法来检测这种行为,例如我试图检查 foreignObject 中图像的尺寸,但它们总是正确的,Firefox 只是简单地绘制了一个透明的矩形图片尺寸。

你知道怎么做吗?

CODE 这种情况很难重现,但是可以这样测试:

  • 转到谷歌主页
  • 在 Chrome 上打开 firebug 控制台或 javascript 控制台
  • 执行这段代码:

在 Chrome 上,徽标图像可见,在 Firefox 上则不可见。svg 代码是 base64 编码的,这是原始代码:

0 投票
1 回答
216 浏览

javascript - 有没有办法在 iframe 上检测 CSS3 调整大小?

我有一个使用 CSS3 调整大小样式声明的 iframe:

我正在使用 Modernizr 来检测cssresize浏览器是否支持,因此当测试失败时,我可以使用 jQuery UI Resizable 插件代替它。

但是,Firefox 似乎不支持在 iframe ( JSFiddle ) 上调整 CSS 大小,但 Modernizr 测试还是通过了,因为 Firefox 确实支持 textarea 调整大小。这让我在 Firefox 上的 iframe 没有任何 CSS 或 JS 调整大小的功能。

如何使用特征检测来确保浏览器支持 iframe 上的 CSS3 调整大小?

0 投票
2 回答
2447 浏览

macos - 如何检测是否启用了 Safari 省电模式?

在 OSX 上的 Safari 6.1 和 7 中启用省电模式时,我遇到了 YouTube 播放器无法加载的问题。如果 youtube 用户使用的是实验性 HTML5 播放器,则不会发生此问题,但它仍处于测试阶段,大多数人仍在使用 Flash 播放器。在大多数新版本的 Safari 中,“禁用插件以节省电量”选项默认开启,这会导致 YouTube iFrame API 在尝试初始化播放器时进入无限循环。

window或对象上是否有任何属性navigator可能表明已启用省电模式,以便我可以警告用户?

0 投票
1 回答
432 浏览

css - @supports 的功能检测?

如何检测浏览器是否支持 CSS @supports 功能?由于 Internet Explorer 和 Safari 不支持它,我的网络应用程序不知道在这些浏览器中应用哪些样式。