html onchange/onblur 兼容性
-
20-09-2019 - |
题
我目前正在编写一个网站,该网站必须与所有浏览器兼容,包括 IE 至版本 6。
我特别想知道这两个事件的兼容性问题:我正在使用它们 <input>
标记为 type='text'
.
- 模糊处理
- 变化时
搜索发现了不同的反应和不完整的列表。
具体来说,问题是:
- 上述两个事件是否存在任何已知问题(可以扩展到其他 HTML 事件)?
- 如果是这样,可以使用哪些方法来解决这些问题?
非常感谢任何帮助:)
解决方案
如果您仅在文本框中使用这些事件,所有浏览器都应该相当不错地支持它们。如果您查看 QuirksMode 事件兼容性表, ,您会发现 IE 在单选按钮和复选框中的更改事件方面存在一些问题。
如果您不太熟悉浏览器中的 JavaScript 事件,您会发现事件模型一团糟,因为 IE 决定以与标准不同的方式做事。为了克服这个问题, 你应该使用 JavaScript 框架 喜欢 jQuery, 尤伊, 道场, 穆工具, 扩展JS, , 或者 关闭. 。这些框架消除了差异,因此您(几乎)永远不必处理不同浏览器中的差异和错误。有 关于 CodingHorror 的一篇很棒的文章 解释如果您计划在站点中使用 JavaScript,为什么应该考虑使用 JavaScript 框架,如果您对此感到好奇,则应该阅读该内容 为什么 你应该使用 JavaScript 框架。
另外,如果您完全不熟悉浏览器事件,请确保您了解 onchange 和 onblur 之间的区别.
其他提示
我相信这两个特定事件不会比 Internet Explorer 中的所有事件加上常见的怪癖(例如 这个.
事件处理和许多其他问题的一般解决方案是使用 Javascript 框架,该框架的开发人员已经流尽了自己的血来拯救你的,掩盖了所有 IE(和其他一些)的怪异,例如 道场. 。正如 Dojo 人员在该页面上所说:
“支持”一词意味着对Dojo和Dijit非常具体的内容,因为Dojo Core和Dijit支持浏览器意味着100%可用功能有效,可访问性正确,并且支持所有国际化和本地化。这是一个 非常 高级酒吧,这也意味着,尽管我们可能不会说像Dijit这样的Opera这样的浏览器受到“支持”,但很有可能也可以在那里工作,但是我们可能有一些我们无法解决的警告(这样)作为Opera上的可访问性挂钩)。
他们声称在这个非常高的标准上“受支持”的浏览器是(从 Dojo 1.3.2 开始)IE 6 到 8、Safari 3.1 到 4、Firefox 2 到 3.5、Chrome 1 到 2(核心功能,包括事件处理,也适用于 Opera、Konqueror、FF 1.5,...)。
如果您使用 jQuery,请尝试以下操作:
$('input.text').click(function () {
if (this.value == this.defaultValue) {
this.value = '';
}
});
$('input.text').blur(function () {
if (this.value === '') {
this.value = this.defaultValue;
}
});
$("input:text")
如果您想定位所有文本输入字段。