【问题标题】:Performance of CSS created using jQuery for placeholder使用 jQuery 为占位符创建的 CSS 的性能
【发布时间】:2014-09-27 16:22:05
【问题描述】:

我想要一个用于输入的占位符。我开始测试 Chrome、Mozilla 和 IE 10(IE8 待定)。

属性占位符在 chrome 和 mozilla 中可以正常工作。但在 IE 10 中表现得很奇怪。当焦点转到输入时,文本甚至在将内容写入输入之前就消失了。

我发现这是 IE 中的一个错误。后来又换了@Placeholder using jQuery。这在 IE 10、Mozilla 和 Chrome 中运行良好。不确定它是否也适用于 IE 8。

我的问题在这里:

使用 jQuery 创建的占位符会比内置的 css 属性“占位符”更好吗? 如果 jQuery 的性能不好,我会坚持 CSS 属性并继续处理有缺陷的 IE 行为。这很重要,因为我正在开发的页面将具有最大负载。另外,我必须在 IE 8 中测试这个 jQuery。

提供答案后的解决方案: 我决定使用 jQuery 创建的 CSS,原因如下:

  1. IE 8 不支持属性占位符。
  2. IE 10 存在占位符行为的错误。
  3. 一个小的 jQuery 插件将与 IE、Mozilla 和 Chrome 兼容。 Ans 可以根据我的方便进行修改。
  4. 我正在设计的页面将有 MAX 4 个输入字段。由于页面上的项目较少,性能并不重要,尽管 CSS 的性能更好。

【问题讨论】:

  • 不是 IE 中的一个错误,正如 HTML5 specification 所说:“当元素的值为空时,用户代理应该向用户 [snip] 显示此提示字符串或控件未获得焦点(或两者兼有),例如通过将其显示在空白未获得焦点的控件中并以其他方式隐藏它。”因此,占位符文本不需要在控件获得焦点时呈现。
  • @rink.attendant.6 谢谢。我将在这里添加我的要求:
  • 如果您使用 jQuery 插件,您将获得更一致的行为。使用内置 HTML 功能意味着您受制于每个浏览器如何实现这些功能。
  • 但性能可能会更差,因为它必须为每个输入运行 Javascript,而不是使用浏览器的内置代码。
  • 你不应该依赖占位符,因为旧的浏览器没有它们。除了占位符之外,您还应该有一个标签,以便用户在关注第一个输入时仍然知道他们应该输入的内容。

标签: jquery css


【解决方案1】:

咨询CanIUse,注意只有IE9及以下需要占位符属性polyfill。您可以根据Modernizr 对原生占位符属性支持的检测有效地加载/激活 polyfill。

对于IE10,cmets是对的,很快就会有fix from the IE team

要在没有测试的情况下回答您的实际问题,通常假设浏览器功能的本机实现比需要由浏览器解析和解释的 js 版本更快更安全。我的猜测是没有太大的区别,或者值得关注。一个做得好的 polyfill 可以比一个做得不好的原生实现更快。除非动画或事件处理程序被滥用并且运行过于频繁或每次运行时间过长,否则不应发生糟糕的性能。

【讨论】:

  • 我不知道modernizr 工具。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 2017-03-26
  • 2019-12-08
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多