我目前正在编写一个网站,该网站必须与所有浏览器兼容,包括 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") 如果您想定位所有文本输入字段。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top