CSSStyleDeclaration#setProperty と CSSStyleDeclaration#removeProperty

概要

IE8 で未定義の CSSStyleDeclaration#setProperty, CSSStyleDeclaration#removeProperty を IE8 で使えるようにしてみようという試みです。

/**
 * インラインスタイルを定義する
 */
element.style.backgroundColor = '#fee';                    // CSSOM 規定
element.style.setProperty('background-color', '#fee', ''); // CSSOM 規定
element.style.setAttribute('backgroundColor', '#fee');     // IE8の独自実装

/**
 * 定義済みのインラインスタイルを削除する
 */
element.style.backgroundColor = '';               // CSSOM 規定
element.style.removeProperty('background-color'); // CSSOM 規定
element.style.removeAttribute('backgroundColor'); // IE8の独自実装

仕様

  • IE8 の setAttribute() には priority を入力する機構がないので element.cssText をパースして !important 規則を定義する方法を採用しました。cssText のパースは簡易的なものなので誤動作する可能性はあります。原理的には property:value; の value に Block が含まれなければ問題ないと思います。