Pregunta

Uhm, no estoy seguro de si alguien ha encontrado este problema
una breve descripción es en IE6 cualquier objeto <select> se muestra sobre cualquier otro elemento, incluso div ... lo que significa que si tiene un elegante efecto javascript que muestra un div que se supone que está por encima de todo (por ejemplo: lightbox, multibox, etc. ..) al hacer clic en un elemento determinado y ese div se superpone a un <=> su div se mostrará como si estuviera debajo del <=> [en este caso un índice z máximo y mínimo no funciona]

He intentado buscar en Google y encontré la solución de cuña de iframe
pero quería algunas alternativas bastante limpias o mejor aún, ¿alguien ha encontrado una solución mejor? dado que el método que usa iframes usa alrededor de 130 MB de RAM podría ralentizar las máquinas de los pobres

¿Fue útil?

Solución

No tiene que ocultar cada select usando un bucle. Todo lo que necesitas es una regla CSS como:

* html .hideSelects select { visibility: hidden; }

Y el siguiente JavaScript:

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

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

(O puede usar su implementación addClass / removeClass favorita).

Otros consejos

Hay un complemento para jquery llamado bgiframe que hace que el método iframe sea bastante fácil de implementar .

Personalmente, como desarrollador web, llego al punto en que ya no me importa la experiencia del usuario en IE6. Lo haré renderizar tan cerca de & Quot; correcto & Quot; como sea posible, y asegúrese de que sea funcional, pero en lo que respecta a la velocidad, es una lástima. Pueden actualizarse. IE7 (aunque todavía bastante lento, en comparación con cualquier otro navegador) ha estado fuera durante 2 años (¡casi hasta el día!). IE8 saldrá en breve. Firefox está disponible para todas las plataformas. Safari también es una opción (y súper rápido). Opera está disponible para la mayoría / todas las plataformas.

IE6 fue lanzado hace más de 7 años. En mi humilde opinión, no hay ninguna razón para seguir usándolo, aparte de los usuarios perezosos y los departamentos de TI incompetentes (o si eres un desarrollador web).

en caso de que alguien esté interesado, aquí hay un código de shimming de 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');
}

ref: esta esencia por subtleGradient y esto publicación de Zach Leatherman

Antes de IE7, la lista desplegable era " ventana " control, lo que significa que fue procesado directamente por Windows en lugar de que el navegador lo sintetice. Como tal, no era posible que admitiera la indexación z contra otros controles sintetizados.

Para aparecer sobre un DDL, debe usar otro control de ventana, como IFRAME. También puede usar una característica poco conocida de solo IE llamada window.createPopup () que esencialmente hace una ventana emergente sin cromo. Tiene limitaciones, como un clic imparable, pero en realidad son un poco útiles si está creando un sistema de menú flotante.

La solución más simple y elegante para ese molesto error de IE se encuentra en: http: // docs. jquery.com/Plugins/bgiframe usando jQuery.

Llegué a esa conclusión después de intentar durante 2 días hacer que funcionara con WebSphere Portal / Aplicaciones de portal donde todo es dinámico, incluido el menú desplegable.

También existe el método activex, que estoy empezando a explorar. Requiere crear código condicional para usar un control activex en lugar de un cuadro de selección para ie6. Hay un script de demostración que muestra la técnica, que es discutido en más detalle aquí .

Actualización: parece que se requiere MS Office para que el control active-x esté en la máquina del usuario. En teoría, podría ser posible incluir eso en algún lugar, de alguna manera, pero eso se está volviendo mucho más complicado.

Sé que muchas personas sugirieron sus propios consejos, pero en mi caso, simplemente oculto select usando jquery como se muestra a continuación.

$(':date').dateinput({
    format: 'dd/mm/yyyy',
    onBeforeShow: function(event) {
        $('select').hide();
    },
    onHide: function(event) {
        $('select').show();
    }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top