【问题标题】:How to detect the ability to trigger an upload by triggering a click event on the element如何通过触发元素上的点击事件来检测触发上传的能力
【发布时间】:2013-08-06 14:12:15
【问题描述】:

您可能已经知道,最新版本的 jQuery 移除了对$.browser 的支持。我需要知道用户是否使用 Firefox 3.6 或更低版本。有没有办法使用可用功能而不是查看用户代理来检测?

我们需要这种检测的原因是我们使用另一个元素设置上传按钮的样式,然后触发对不可见上传元素的点击。这不适用于 FF

澄清

  1. 在上传时触发像 $('#uploader').trigger('click') 这样的事件是行不通的
  2. 我不想查看用户代理就知道是这种情况,尽管说这是唯一的方法可能是一个可以接受的答案
  3. 我不知道这个“特征”会是什么来检测它

【问题讨论】:

  • 究竟是什么在 FF
  • 是通过在元素上触发点击事件来触发上传的能力。
  • 你确定 firefox 3.6 是唯一有这个问题的浏览器吗?我很确定不是。
  • @DaveStein 你可能应该问如何检测“通过触发元素上的点击事件来触发上传的能力”而不是特定的浏览器。

标签: javascript jquery


【解决方案1】:

是的,实际上特征检测是推荐的方法,而不是用户代理检测。 (因此 jQuery 放弃了 $.browser 功能)

FF3.6 没有很多功能,但您的主要目标应该是检测您特别需要使用的功能。

不要试图根据特性来判断浏览器是否为FF3.6;这只是破坏了特征检测的全部意义。如果你这样做,你也可以做UA检测。

您需要做的只是弄清楚您的网站正在使用哪些功能(您没有提到任何关于您的网站的内容,所以我只能在这里猜测)。然后为您正在使用的任何功能执行检测脚本,如果它们不存在会破坏您的站点,并让站点在发现缺少的功能时采取相应的行动。 (这可能是警告用户该网站将无法运行,添加替代方案或加载 polyfill ......您所做的具体操作取决于该功能是什么以及您的网站用它做什么)

PS - 您可能需要查看 Modernizr 库以获取有关特征检测的更多帮助。

希望对您有所帮助。

[编辑]

您提到了文件上传功能......也许the answers here 可能会有所帮助?

【讨论】:

  • 我上面的说明有帮助吗?
  • 这是我们已经检测到的另一种情况 :) 这只是这种情况。事实上,一位同事告诉我这是一个错误,它应该在 3.6 中工作
【解决方案2】:

浏览器检测不是推荐的技术 - 看看这个: Browser detection versus feature detection

【讨论】:

  • 这就是为什么我要问是否有一个功能在 3.6 中不被支持,但在 4 中......无需专门查看浏览器即可检测它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
  • 2018-12-24
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多