为啥 Android 原生 HTML5 日期选择器上的 Chrome 变得非常慢?

Posted

技术标签:

【中文标题】为啥 Android 原生 HTML5 日期选择器上的 Chrome 变得非常慢?【英文标题】:Why has Chrome on Android's native HTML5 date picker become really slow?为什么 Android 原生 HTML5 日期选择器上的 Chrome 变得非常慢? 【发布时间】:2015-07-29 23:34:04 【问题描述】:

我的网站上有一个日期选择器,它只使用默认的 html5 日期选择器。

我注意到,直到几周前,它都运行良好,但自从 Chrome android 最近更新以来,他们引入了一个新的日期选择器,这个日期选择器真的很慢而且反应迟钝。加载需要几秒钟,我发现很难选择任何日期。

我有一个演示站点 (http://datapickerandroid.meteor.com/)。我已经在 Nexus 7 2013 和 HTC one M8 和 Android 上的 Chrome 上测试过它都有这个问题。我还用 dolphin 和 firefox 以及桌面浏览器对其进行了测试,它们看起来很好,所以看起来这是 chrome 上的日期选择器的问题。

我想知道发生了什么事? Chrome Android 中是否只有一个错误?它只发生在我的设备上吗?我是否以不正确的方式声明我的日期选择器?是否可以向浏览器指定我想使用旧的日期选择器?我也在使用 Meteor(虽然在演示中,我删除了所有非默认包),这可能与此有关吗?

【问题讨论】:

【参考方案1】:

见crbug.com/441060。您可以通过指定 min= 和 max= 属性来避免这种缓慢。

【讨论】:

哇,谢谢!我刚刚指定了 min='0001-01-01' 和 max='9999-12-31' 并且它又快了。不敢相信在如此广泛使用的应用程序中存在这个错误 我认为链接不再存在。【参考方案2】:

要了解更多信息,我做了一些设置无最小值/最大值、仅最大值以及最小值和最大值的操作。每个都有不同的行为/表现。

没有最小值或最大值 - 在 Android 中点击会非常慢

<input type="date">

仅限最大值 - 在 Android 中点击会将您的默认值设置为 01/01/0001 - 有史以来的第一天。 没用

<input type="date" max="1979-12-31">

最小值和最大值 - 默认日期是今天,它加载非常快!

<input type="date" min="0001-01-01" max="9999-12-31" >

https://jsfiddle.net/gpjc3xam/16/


更新

对于在 Angular 中使用此解决方案的任何人,请注意最小日期为 0001 will not work。似乎 100 年是 javascript 允许的最低年...

【讨论】:

以上是关于为啥 Android 原生 HTML5 日期选择器上的 Chrome 变得非常慢?的主要内容,如果未能解决你的问题,请参考以下文章

android日期时间选择器

ios 类似 android 平台的日期/时间选择器

从 iOS/Android 上的 Web 应用调用本机日期选择器

禁用日期的 HTML5 日期选择器在 Angular 中不起作用

日期范围选择器 html5

HTML5 日期选择器仅在第二次点击时打开