首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

IE 瀏覽器兼容性填坑:事件對象、目標元素與 style.removeProperty 替代方案

     編輯:程式設計綜合問答

問題場景

原生 JS 綁定 focus/blur 事件,在 IE 中報錯:type 為空或不是對象、border 無法移除。

核心差異對照表

標準瀏覽器IE (≤8/兼容模式)
事件對象傳參 e全局 window.event
目標元素 e.targete.srcElement
移除樣式 removeProperty不支持,需用 style.cssText = '' 或覆蓋屬性

兼容性封裝代碼

function handleFocusEvent(e) {
    e = e || window.event;
    var target = e.srcElement || e.target;

    if (e.type === "focus") {
        target.style.backgroundColor = "lightgray";
        target.style.border = "thick solid red";
    } else {
        // IE 不支持 removeProperty,直接清空 cssText 或單獨覆蓋
        target.style.cssText = '';  // 核暴力但有效
        target.style.border = "thick solid black";
    }
}

最佳實踐建議

  • 優先使用 addEventListener / attachEvent 統一綁定,避免內聯 onfocus 污染全局。
  • 現代項目建議引入 Polyfill(如 eventlistener)或直接放棄 IE 老版本支持。
  • 樣式操作優先用 CSS 類切換(classList.toggle),減少行內樣式操作。

總結

IE 事件模型與標準差異大,封裝兼容層或使用成熟庫(jQuery 等)是工程化解法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved