2009-10-07 23 views
3

我目前正在寫一個網站必須與所有的瀏覽器包括IE回版本6HTML的onchange /的onblur兼容性

我想知道在特定的這兩個事件的兼容性問題兼容: 我使用他們的<input>標籤與type='text'

  • 的onblur
  • 的OnChange

搜索發現混合反應和一個不完整的清單。

具體來說,問題是:

  • 是否有任何已知問題與上述兩個事件(可以擴展到其他HTML事件)?
  • 如果是這樣,可以採用哪些方法來解決這些問題?

任何幫助非常感謝:)

回答

9

如果您只在文本框中使用它們,所有瀏覽器都應該很好地支持這些事件。如果您查看QuirksMode event compatibility tables,您會發現IE在單選按鈕和複選框中的更改事件中存在一些問題。

如果你不熟悉瀏覽器中的JavaScript事件,你會發現事件模型是一團糟,這要歸功於IE決定做與標準不同的事情。爲了克服這個問題,you should be using a JavaScript framework,如jQuery,YUI,Dojo,MooTools, ExtJSClosure。這些框架消除了差異,因此您幾乎不必處理不同瀏覽器中的差異&錯誤。有a great article on CodingHorror解釋了爲什麼你應該考慮使用JavaScript框架,如果你打算在你的網站使用JavaScript,你應該閱讀,如果你好奇爲什麼你應該使用JavaScript框架。

此外,如果您完全不熟悉瀏覽器事件,請確保您瞭解the difference between onchange and onblur

+4

+1不只是給股票「使用jquery」的迴應。 – 2009-10-07 03:59:16

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")如果要針對所有的文本輸入字段。

1

我相信這兩個特定事件沒有問題比在Internet Explorer中的所有事件再加上通常的奇怪怪癖,如this one

一般的解決方法,以事件處理等諸多問題是使用JavaScript框架,其開發者流鼻血自己的血救你的,掩蓋了所有的IE瀏覽器(和其他幾個)weirdnesses,如dojo。作爲道場鄉親頁面上說:

的「支持」一詞意味着什麼 非常具體的道場和Dijit的,在 是說,Dojo的核心和Dijit的 支持瀏覽器意味着 100%可用功能正常工作, 正確處理可訪問性 ,並支持所有 國際化和本地化 。這是一個非常高 吧,這也意味着,儘管我們 可能不是說像 Opera瀏覽器的「支持」爲Dijit的,這是 極有可能將所有的工作 有太多,但可能會有一些 我們無法工作的警告 左右(如可訪問鉤 歌劇)。

他們聲稱爲「支持」在這個非常高的水平條的瀏覽器是(如道場1.3.2)IE 6至8時,Safari 3.1至4,火狐2至3.5,鉻1至2 (包括事件處理功能在內的核心功能也適用於Opera,Konqueror,FF 1.5,...)。