настройка iframe или ie6 (и ниже) для выбора ошибки z-индекса

StackOverflow https://stackoverflow.com/questions/224471

Вопрос

Хм, я не уверен, сталкивался ли кто-нибудь с этой проблемой
краткое описание есть на IE6 любом <select> объекты отображаются поверх любого другого элемента, даже div...это означает, что если у вас есть необычный эффект javascript, который отображает div, который должен быть поверх всего (например:лайтбокс, мультибокс и т.д.) Щелкает по определенному элементу, и этот div перекрывает <select> ваш div get должен отображаться так, как если бы он находился под <select> [в этом случае максимальный и минимальный z-индекс не работают]

Я попробовал погуглить и нашел решение iframe shim
но я хотел несколько довольно чистых альтернатив или еще лучше, кто-нибудь нашел лучшее решение?поскольку метод, использующий iframes, использует около 130 МБ оперативной памяти, это может замедлить работу компьютеров бедных людей

Это было полезно?

Решение

Вам не нужно скрывать каждый select цикл. Все, что вам нужно, это правило CSS вроде:

* html .hideSelects select { visibility: hidden; }

И следующий JavaScript:

//hide:
document.body.className +=' hideSelects'

//show:
document.body.className = document.body.className.replace(' hideSelects', '');

(или вы можете использовать свою любимую addClass / removeClass реализацию).

Другие советы

Существует плагин для jquery под названием bgiframe , который делает метод iframe довольно простым для реализации .

Лично я как веб-разработчик дошел до того, что меня больше не волнует пользовательский опыт в IE6. Я сделаю так, чтобы он был как можно ближе к & Quot; правильному & Quot; насколько это возможно, и убедитесь, что он функционирует, но что касается скорости, то это тоже плохо. Они могут обновить. IE7 (хотя все еще довольно медленный, по сравнению с любым другим браузером) был выпущен в течение 2 лет (почти до самого дня!). IE8 скоро выйдет. Firefox доступен для любой платформы. Safari также вариант (и супер быстрый). Опера доступна для большинства / каждой платформы.

IE6 был выпущен более 7 лет назад. ИМХО, нет никаких причин использовать его, кроме ленивых пользователей и некомпетентных ИТ-отделов (или, если вы веб-разработчик).

на случай, если кому-то интересно, вот некоторый код для настройки IE.

* html .shimmed {
    _azimuth: expression(
        this.shimmed = this.shimmed || 'shimmed:'+this.insertAdjacentHTML('beforeBegin','<iframe style="filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);position:absolute;top:0px;left:0px;width:100%;height:100%" frameBorder=0 scrolling=no src="javascript:false;document.write('+"''"+');"></iframe>'),
        'inherit');
}

ссылка: в этом суть Автор: Тонкоградиентный и это сообщение от Зака Литермана

До IE7 выпадающий список был " оконным " контроль означает, что он был представлен как элемент управления непосредственно Windows, а не синтезирующим его браузером. Таким образом, он не мог поддерживать z-индексацию для других синтезированных элементов управления.

Для отображения поверх DDL необходимо использовать другой оконный элемент управления, например IFRAME. Вы также можете использовать малоизвестную функцию IE-only, называемую window.createPopup (), которая по сути делает всплывающее окно без хрома. У него есть ограничения, такие как неостанавливаемый щелчок, но они действительно полезны, если вы строите систему меню при наведении.

Самое простое и элегантное решение этой надоедливой ошибки IE можно найти по адресу: http: // docs. jquery.com/Plugins/bgiframe с использованием jQuery.

Я пришел к такому заключению после двухдневной попытки заставить его работать с WebSphere Portal / Portal Applications, где все динамично, включая всплывающее меню.

Есть также метод activex, который я начинаю исследовать. Требуется создание условного кода для использования элемента управления activex вместо поля выбора для ie6. Существует демонстрационный скрипт , показывающий метод, который более подробно обсуждается здесь .

Обновление: похоже, что MS Office необходим для того, чтобы элемент управления active-x находился на компьютере пользователя. Теоретически, это может быть как-то включено, но это становится намного грязнее.

Я знаю, что многие люди предлагали свои советы, но в моем случае я просто скрываю select, используя jquery, как показано ниже.

$(':date').dateinput({
    format: 'dd/mm/yyyy',
    onBeforeShow: function(event) {
        $('select').hide();
    },
    onHide: function(event) {
        $('select').show();
    }
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top