У меня фактически была похожая проблема: не все браузеры обрабатывают элементы с display:none
(или, по крайней мере, их дочерние элементы) одинаково.У меня есть несколько объектов SVG, помещенных в два DIV, и я хочу показать один или другой.Во время инициализации я делаю некоторые манипуляции с элементами SVG (меняю некоторые текстовые элементы внутри SVG).Это отлично работало с Firefox, но не с Opera, Chrome и IE.В этих браузерах элементы, которые были внутри div с display:none
, дали нулевой результат при попытке получить их с document.getElementById(myID)
.Первым обходным решением было установить свойство display:none
только после инициализации (это сработало), но когда я захотел показать их снова, вся инициализация была потеряна (все текстовые метки были по умолчанию).Я думаю, это доказывает, что содержимое DIV с display:none
каким-то образом очищается от DOM, а не просто скрыто.Я также попытался использовать visibility:hidden
вместо display:none
, но это сильно испортило макет страницы.Единственное решение, которое, похоже, работает во всех браузерах, - это (пока что) разместить DIV, который я хочу скрыть, в «космическом пространстве», например , здесь предлагается ...
position: absolute;
top: -9999px;
left: -9999px;