2010-08-27 8 views
7

Tengo el extraño problema. Cuando hago clic en un enlace en IE7, la ventana se minimiza. Parece ser solo un subconjunto de los enlaces en la página. Tampoco ocurre de manera consistente con el mismo enlace y difiere de una computadora a otra.IE se minimiza al azar cuando se hace clic en un enlace

ejemplo enlace de texto:
<a hidefocus="on" href="#" tabindex="1"><span unselectable="on" id="extdd-102">Canadian Legislation</span></a>

Alguien ha visto esto antes o tiene alguna idea de lo que podría ser la causa?

Respuesta

15

Finalmente lo resolvió. En realidad, era un controlador de clic de JavaScript personalizado que causaba el problema.

Mi manejador de clics llamaba al activeElement.blur(); en el elemento activo actual (de modo que los eventos vinculados al desenfoque se disparaban cuando los elementos se destruían).

El problema está en IE, si se llama borrosidad en cualquier cosa que no sea una ENTRADA, se minimiza la ventana.

+2

Este es la primera respuesta de Google y recibí el mismo problema pero la solución no era la misma. Parece que IE hace exactamente lo mismo cuando intenta desenfocar una entrada oculta. O una entrada no conectada. – Magus

+2

sí, otra razón para odiar IE! – geedubb

+0

Todo se trata de lógica con la mejor herramienta del mundo llamada IE. :-P Cuando lea esto en 2015, deje de usar y desarrollar con IE 7, 8 (y 9) y lo más importante: NO INTENTE ARREGLAR ERRORES en el viejo software obsoleto para hacer sonreír a sus clientes. Por favor, no lo hagas para un mundo de internet mejor. – Codebeat

0

IE tiene errores, por lo que puede solucionar los problemas eliminando "tabindex". Si eso no funciona, intente eliminar "unelectable" y luego "hideonfocus". "Hideonfocus" suena raro. Intenta eliminar eso primero. ¿Tiene algún programa de terceros o complementos que interactúen con IE? ¿Funciona en una computadora diferente?

0

Esto sucedió cuando utilicé la solución de desenfoque para obtener el atributo de marcador de posición para trabajar en IE8. En la solución alternativa, debo llamar a blur() que causó que el navegador se volviera borroso (minimizar a la bandeja). La solución es utilizar:

$.each($('[placeholder]'), function(i,item){ item.blur();}); 

que sólo está siendo específica qué llamar falta de definición en.

La solución completa de marcador de posición es:

$('[placeholder]').focus(function() { 
    var input = $(this); 
    if (input.val() === input.attr('placeholder')) { 
     input.val(''); 
     input.removeClass('placeholder'); 
    } 
}).blur(function() { 
    var input = $(this); 
    if (input.val() === '' || input.val() == input.attr('placeholder')) { 
     input.addClass('placeholder'); 
     input.val(input.attr('placeholder')); 
    } 
}).blur(); 

$(window).on('load', function() { 
    if ($('[placeholder]').length){ 
    $.each($('[placeholder]'), function(i, item){item.blur();}); 
    } 
}); 
4

que tenían el mismo problema en Internet Explorer 10.

  • Internet Explorer 10 comportamiento probado:

Este problema sólo ocurre cuando Invoca la función blur() en el elemento document.body.

El problema se puede reproducir simplemente ejecutando

 document.body.blur()
en la consola del navegador.

  • escenario común en el que ocurre este problema:

document.activeElement.blur() la función de invocación es el escenario más común en el que este problema se produce porque después de la primera invocación de document.activeElement.blur () el elemento del cuerpo se convertirá en el elemento activo y la llamada subsiguiente a document.activeElement.blur() invocará el desenfoque en el elemento del cuerpo.

  • Solución:

evitar document.body.desenfoque() la función de invocación, si usted tiene jQuery se puede introducir esta lógica simple

 $(yourObj).is('body')

para comprobar si su objeto es el elemento del cuerpo, con el fin de evitar las imágenes borrosas() invocación de la función en él

+0

Genial ... muy útil !! – Xstian

Cuestiones relacionadas