3

我目前正在编写一个必须与所有浏览器兼容的网站,包括 IE 回到版本 6。

我特别想知道这两个事件的兼容性问题:我将它们与<input>带有type='text'.

  • OnBlur
  • 改变

搜索发现混合响应和不完整的列表。

具体来说,问题是:

  • 以上两个事件是否有任何已知问题(可以扩展到其他 HTML 事件)?
  • 如果是这样,可以使用哪些方法来解决这些问题?

非常感谢任何帮助:)

4

3 回答 3

9

如果您只在文本框中使用它们,所有浏览器都应该相当不错地支持这些事件。如果您查看QuirksMode 事件兼容性表,您会发现 IE 在单选按钮和复选框的更改事件方面存在一些问题。

如果你对浏览器中的 JavaScript 事件不是很熟悉,你会发现事件模型是一团糟,这要归功于 IE 决定做与标准不同的事情。要克服这个问题,您应该使用jQueryYUIDojoMooToolsExtJSClosure等JavaScript 框架。这些框架消除了差异,因此您(几乎)永远不必处理不同浏览器中的差异和错误。CodingHorror 上有一篇很棒的文章解释如果您计划在您的网站中使用 JavaScript,您应该考虑使用 JavaScript 框架的原因,如果您对为什么应该使用 JavaScript 框架感到好奇,您应该阅读。

此外,如果您完全不熟悉浏览器事件,请确保您了解onchange 和 onblur 之间的区别

于 2009-10-07T03:56:47.860 回答
1

我相信这两个特定事件不会比 Internet Explorer 中的所有事件加上常见的怪癖(例如这个)有更多问题。

事件处理和许多其他问题的一般解决方案是使用一个 Javascript 框架,它的开发人员已经流血了自己的血来拯救你的,掩盖所有 IE(和其他一些)怪异,例如dojo。正如 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,...)。

于 2009-10-07T04:05:16.507 回答
0

如果你使用 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")如果您想定位所有文本输入字段。

于 2009-10-07T03:55:34.260 回答