为什么 Firefox 不遵守标准 javascript 支持元素测试

Why is Firefox not respecting the standard javascript support element test

我正在使用这个非常基本的 javascript 测试来测试对 datetime and/or datetime-local 元素的支持。

var delm =document.createElement("input")
delm.setAttribute("type", "datetime");
if (delm.type != "datetime") {
    // do some custom datepicker
}

我也在用 "datetime-local" 元素类型做同样的测试。在我测试的所有其他浏览器中,我都得到了预期的结果。

在 Firefox 移动版中,delm.type 变为 "text",因此我实现了后备日期选择器。除了聚焦该字段时,会弹出本机日期时间选择器!

我使用最新版本的 Modernizr 得到了同样糟糕的结果。

是否有更好的方法来测试元素支持?

This is a bug in Firefox Mobile. 尽管 UI 对话框运行良好,但 DOM 接口中的 none 目前已实现。在 DOM 中,<input type="datetime" /> 看起来和感觉上仍然像 <input type="text" />,没有明显的检测方法。

根据您的应用程序,您可以为 Firefox Mobile 创建一个特例(不幸的是浏览器嗅探)。或者,您可以 强制type 设为 "text" 以确保没有浏览器会尝试为其使用自己的 UI:

var delm =document.createElement("input")
delm.setAttribute("type", "datetime");
if (delm.type != "datetime") {
    delm.type = "text"; // prevent double dialogs
    // do some custom datepicker
}

我希望我能为您提供更好的答案...