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