【问题标题】:Check if Browser Supports HTML5 timepicker检查浏览器是否支持 HTML5 时间选择器
【发布时间】:2016-01-20 12:04:41
【问题描述】:

我在 JavaScript 中构建了一个时间掩码,它适用于 PC、Mac、iPhone 和 iPad,但在大多数 Android 手机中并不能始终如一地工作(我不想详细说明为什么这个功能可以) t 在 Android 中始终如一地工作)所以我禁用它。对于三星来说,内置的 HTML5 时间选择器非常有用。

对于 Android 手机,当本机浏览器时间选择器可用时(例如现代三星手机),我想利用 HTML5 时间选择器。

我知道我可以检测到浏览器是否支持date/datetime 输入类型,但这并不一定表明浏览器支持时间选择器(对于任何对此表示怀疑的人,请使用 HTC EVO 3D 进行测试,作为一个例子。)这个问题(Detect browser's native date/time pickers)表示如果支持时间类型,那么浏览器已经实现了一个时间选择器,但这是错误的。

我知道modernizr,但我没有找到真正验证浏览器是否支持时间选择器的方法。

所以有了这些背景信息。有谁知道确定浏览器是否实现了时间选择器的方法?

【问题讨论】:

  • 什么意思,“实际验证浏览器是否支持时间选择器。”?这正是modernizr 所做的。
  • 也许尝试与您引用的问题中建议的解决方案相同的方法,但尝试设置日期并阅读它?如果返回日期,它应该支持输入类型。
  • "实际验证浏览器是否支持时间选择器" = 不仅浏览器支持 ,而且当用户点击 字段它弹出一个时间选择器控件
  • @Rik:据我所知,如果您在任何输入字段上设置.value,无论是否支持输入类型,它都会在获取时简单地返回该值。 Fiddle example。所以,我认为不可能检查输入是否真的“弹出时间选择器控件”
  • 只有一个疯狂的想法:根据this,没有办法访问<input type="date"> 中的shadow dom 元素。但如果可能的话,您可以测试元素的内部工作以检查是否有日期选择器。另外,我尝试使用供应商前缀的伪元素(例如-webkit-calendar-picker-indicator)来解决这个问题,但没有成功。希望对您有所帮助。

标签: javascript html mobile-browser


【解决方案1】:

我认为最安全的选择实际上是假设 <input type="date"> 不受支持。截至今天(2016 年初),日期选择器的实际 UI 在浏览器中仍然非常不一致。除非你正在开发一个非常具体的浏览器子集,否则无论如何你都需要一些 JavaScript。

参考资料:

【讨论】:

  • 这基本上就是我所做的。我在 iOS 设备上使用 type="date" 并在所有其他设备上使用 jQuery 数据选择器
【解决方案2】:

最好的办法是假设支持<input type="date"> 的浏览器也为其实现了时间选择器。
(据我所知,是这样的,如果type="date"没有合理的输入日期的方式,支持有什么意义?)

这是因为无法检查浏览器是否真的显示时间选择器。除了modernizr检查,你真的无能为力。

【讨论】:

  • 不幸的是,这是一个错误的假设
  • 那么,有些浏览器没有时间选择器,即使支持date 输入?恐怕你真的别无选择,只能信任浏览器
  • 不幸的是,情况确实如此。所以选项似乎是 1. 假设所有 Android 手机不支持时间选择器或 2. 检测每个支持时间选择器的手机/运营商 android 设备(通过用户代理)...... 2 个错误选项
  • 恐怕是这样。虽然这并不是您真正想要的答案,但您介意将其标记为答案吗? (遗憾的是,有时,“不,那不可能”是正确的答案。)
  • 如果没有更好的答案,不幸的是,这将是“最佳”答案,我会这样标记。让我们再等几天……希望永存
猜你喜欢
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2018-06-01
相关资源
最近更新 更多