propertychange input change

IE678 支持propertychange事件,能夠監聽全部屬性(包括自定義屬性)的改變事件,包括手動修改輸入框文本以及js修改輸入框文本。
propertychange事件有個特色就是不支持冒泡,這樣就不能實現事件的委託,並且jquery也沒有解決這個BUG,因此下面的代碼是有問題的:php

$("#container").on("propertychange", "input", func);

由於IE9開始支持addEventListener,並且還兼容attachEvent,因此其實IE9也是支持propertychange事件的,只不過只能使用attachEvent來註冊事件。
而jquery內部應該是使用addEventListener註冊事件的,致使jquery的on()方法在IE9下面註冊propertychange事件無效。jquery

IE9+,其餘現代瀏覽器支持input事件,用來監聽輸入框文本內容的改變,且不須要失去焦點就能夠觸發。瀏覽器

change事件則是須要失去焦點纔會觸發,全部瀏覽器都支持該事件。ui

其中input事件和change事件都不能監聽js操做的修改。.net

對於IE9+和firefox以及Opera瀏覽器,支持DOMAttrModified事件,和propertychange事件很類似,監聽屬性的變化,可是不監聽用戶操做的修改。firefox

參考:
propertychange event
IE9的一個BUG:propertychange和input事件在拖拽 / 剪切 / 刪除時沒法觸發
IE神奇小bug一則code

相關文章
相關標籤/搜索