То, как я делал всплывающие окна раньше в Firefox, было со свойствами CSS.
z-index: 500;
display: block;
, чтобы показать элемент, и
z-index: -10;
display: none;
чтобы скрыть это.
Теперь. Мои значения для z-index экстремальны, но я выбрал именно это. Это работает для меня, но мое приложение предназначалось специально для Firefox; Я использую свойство display, которое, как вы заявили, вы хотите избежать.
Если вы беспокоитесь об использовании display: block или display: hidden, я думаю, возможно, вы могли бы попытаться поиграть с позиционированием или определением размера элемента.
Либо сделайте всплывающий элемент абсолютно позиционированным и переместите его за пределы экрана, когда он невидим, либо, возможно, попробуйте сделать его шириной 0px и высотой 0px, когда он невидим. Это две вещи, которые я мог бы изучить, если бы у меня все еще были проблемы. Я не уверен, что рекомендую их как лучшие решения.
Действительно подумайте, сколько экземпляров ваших всплывающих элементов будут иметь разные отображаемые значения. Я обнаружил, что в моем случае используются только два типа: «none» и «block». Возможно, вам будет достаточно манипулировать свойством display.
Надеюсь, это поможет.