Как утверждает Fresheyeball, IE не видит <object/>
как часть DOM или, скорее, не допускает изменений, как только он был вставлен в документ (тогда как перед вставкой он может быть очень хорошо изменен).
Простое и достаточно безопасное решение, чтобы исправить это, состоит в изменении полного outerHTML
узла. Это не приведет к изменению элемента, но удалит его, создаст заново, заменит его и, следовательно, не вызовет вышеуказанное исключение.
Пример для jQuery:
$("object:has(> param[name=wmode][value=window]), object:not(:has(> param[name=wmode]))").each(replace);
function replace() {
this.outerHTML = this.outerHTML.replace(/<(?:[^">]+|(["']).*?\1)*>/, '$&<param name="wmode" value="opaque"/>');
}
Аналогичный повторный рендеринг для <embed/>
может быть достигнут следующим образом:
$("embed[wmode=window], embed:not([wmode])").attr("wmode", "opaque").wrap("<div/>").unwrap();