Нужен полифил значения flex свойства display.
Ну то есть нужно, чтобы в старых браузерах понималась запись:
document.querySelector("div").style.display = "flex";
Вот полифил на свойство например:
if (!('lastElementChild' in document.documentElement)) {
Object.defineProperty(Element.prototype, 'lastElementChild', {
get: function() {
for (let nodes = this.children, n, i = nodes.length — 1; i >= 0; --i) {
if (n = nodes[i], 1 === n.nodeType) {
return n;
}
}
return null;
}
});
}
А на значение как написать? Планирую прослушивать через MutationObserver. Если есть вариант обойтись без Mutation Observer, то вообще супер.
Пока что flex не ловит:
var observer = new WebKitMutationObserver(function(mutations)
{
mutations.forEach(function(mutationRecord)
{
if (window.getComputedStyle(mutationRecord.target).display == "flex")
{
alert();
}
});
});
document.querySelectorAll("div").forEach( function(el) { observer.observe(el, { attributes : true, attributeFilter : ['style'] }) } );
Кстати, а при переопределении hidden, теги option и optgroup получиться скрыть в браузере iOS 6?