html onchange / onblur兼容性

时间:2009-10-07 03:47:05

标签: html compatibility onchange onblur

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

我特别想知道这两个事件的兼容性问题: 我使用带有<input>的{​​{1}}标记。

  • 的onblur
  • 的OnChange

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

具体来说,问题是:

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

任何帮助非常感谢:)

3 个答案:

答案 0 :(得分:9)

如果您只在文本框中使用它们,那么所有浏览器都应该非常适合支持这些事件。如果您查看QuirksMode event compatibility tables,您会看到IE在单选按钮和复选框中的更改事件存在一些问题。

如果你不熟悉浏览器中的JavaScript事件,你会发现事件模型很乱,因为IE决定采用与标准不同的方式。要解决此问题,you should be using a JavaScript framework,例如jQueryYUIDojoMooToolsExtJSClosure。这些框架可以消除差异,因此您(几乎)永远不必处理差异和差异。不同浏览器中的错误。有a great article on CodingHorror解释为什么您应该考虑使用JavaScript框架,如果您计划在您的网站中使用JavaScript,如果您对为什么应该使用JavaScript框架感到好奇

此外,如果您完全不熟悉浏览器事件,请务必了解the difference between onchange and onblur

答案 1 :(得分:1)

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

事件处理和许多其他问题的一般解决方案是使用一个Javascript框架,其开发人员已经放弃了自己的血液来保存你的所有IE,以及所有IE(和其他一些)奇怪的内容,例如dojo 。正如Dojo人在该页面上所说:

  

“支持”这个词意味着什么   非常具体的Dojo和Dijit,in   说Dojo Core和Dijit   支持浏览器意味着100%   可用的功能有效,   处理可访问性   正确的,那一切   国际化和本地化   得到支持。这是非常高   吧,这也意味着我们   可能不会说浏览器喜欢   对于Dijit来说,Opera是“支持”的   它很可能会全部奏效   那里也有,但可能有一些   我们无法工作的警告   周围(如可访问性挂钩)   戏)。

他们声称在这个非常高的级别“支持”的浏览器是(从Dojo 1.3.2开始)IE 6到8,Safari 3.1到4,Firefox 2到3.5,Chrome 1到2(核心功能) ,包括事件处理,也适用于Opera,Konqueror,FF 1.5,......)。

答案 2 :(得分: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")如果您想定位所有文字输入字段。