2010-08-27 8 views
7

Ich habe das bizarre Problem. Wenn ich auf einen Link in IE7 klicke, wird das Fenster minimiert. Es scheint nur eine Teilmenge der Links auf der Seite zu sein. Es passiert auch nicht konsistent mit der gleichen Verbindung und unterscheidet sich von Computer zu Computer.IE ist zufällig minimiert, wenn ein Link geklickt wird

Beispiel Linktext:
<a hidefocus="on" href="#" tabindex="1"><span unselectable="on" id="extdd-102">Canadian Legislation</span></a>

diesen Jedermann vorher gesehen oder eine Ahnung, was es verursachen könnte?

Antwort

15

Endlich herausgefunden. Es war tatsächlich ein benutzerdefinierter JavaScript-Klick-Handler, der das Problem verursachte.

Mein Click-Handler hat activeElement.blur(); auf dem aktuellen aktiven Element aufgerufen (so dass mit der Unschärfe verbundene Ereignisse ausgelöst wurden, wenn die Elemente zerstört wurden).

Problem ist in IE, wenn Sie Unschärfe auf etwas aufrufen, das kein INPUT ist, minimiert es das Fenster.

+2

dies zu vermeiden ist die erste Google-Antwort und ich habe das gleiche Problem, aber die Lösung war nicht das Gleiche. Es sieht so aus, als ob IE genau das gleiche tut, wenn Sie versuchen, einen versteckten Input zu verwischen. Oder eine nicht angefügte Eingabe. – Magus

+2

ja ein weiterer Grund, IE zu hassen! – geedubb

+0

Es geht um Logik mit dem besten Werkzeug der Welt namens IE. :-P Wenn Sie dies im Jahr 2015 lesen, hören Sie auf, mit IE 7, 8 (und 9) zu arbeiten und zu entwickeln, und am wichtigsten: VERSUCHEN SIE NICHT, FEHLER in veralteter Software zu reparieren, damit Ihre Kunden lächeln. Bitte, tu es nicht für eine bessere Internetwelt. – Codebeat

0

IE ist fehlerhaft, so können Sie Fehler beheben, indem Sie "tabindex" entfernen. Wenn das nicht funktioniert, versuche "unwählbar" und dann "hideonfocus" zu entfernen. "Hideonfocus" klingt komisch. Versuchen Sie, das zuerst zu entfernen. Haben Sie Programme oder Plug-Ins von Drittanbietern, die mit IE interagieren? Funktioniert es auf einem anderen Computer?

0

Dies passierte, wenn ich die Unschärfenumgehung verwendete, um das Platzhalterattribut mit IE8 zu arbeiten. In der Problemumgehung sollte ich blur() aufrufen, was dazu führte, dass der Browser unscharf wurde (auf "tray" minimieren). Die Lösung ist zu verwenden:

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

, die nur spezifisch zu sein, was Unschärfe auf rufen.

Der komplette Platzhalter Abhilfe ist:

$('[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

ich das gleiche Problem auf Internet Explorer hatte 10.

  • Internet Explorer 10 getestet Verhalten: nur

Dieses Problem auftreten, wenn Sie rufen die Funktion blur() für das Element document.body auf.

Problem kann reproduziert werden einfach Ausführen

 document.body.blur()
in Ihrer Browser-Konsole.

  • gängiges Szenario, in dem dieses Problem tritt auf:

document.activeElement.blur() Funktionsaufruf ist das häufigste Szenario, in dem dieses Problem, da tritt nach dem ersten Aufruf von document.activeElement.blur () Das body-Element wird zum activeElement und der nachfolgende Aufruf von document.activeElement.blur() ruft blur auf body-Element auf.

  • Lösung:

vermeiden document.body.blur() Funktionsaufruf, wenn Sie Jquery haben, können Sie diese einfache Logik

 $(yourObj).is('body')
vorstellen

zu überprüfen, ob Ihr Objekt das Körperelement ist, um auf sie blur() Funktionsaufruf

+0

Großartig .. sehr nützlich !! – Xstian