3 Stimmen

Onblur-Ereignis wird im IE fälschlicherweise ausgelöst, wenn Teile des Popup-Dokuments angeklickt werden

Ich habe eine Reihe von kleinen Popup-Seiten, die sich selbst schließen sollen, wenn sie den Fokus verlieren, d. h. wenn der Benutzer auf das übergeordnete Dokument klickt.

Leider tritt die Unschärfe im IE8 auch dann auf, wenn der Benutzer beginnt, ein Eingabeformular innerhalb der Popup-Seite auszufüllen. In der Tat klicken überall innerhalb des Formulars verursacht, oder auch wenn der Benutzer versehentlich auf einen Text klickt. Es scheint, dass diese Elemente nicht Teil des Pop-up-Dokuments sind.

Wie kann ich sie dazu bringen?

Hier ist mein Unschärfe-Code (innerhalb eines .js-Skripts), den ich für die verschiedenen Pop-ups verwende:

var fClose=0 

onload=function() {   
 fClose=0  
 setTimeout("doClose()",111);  
 document.onblur=Blur_Me;  
 document.onfocusout = Blur_Me;  
}  

function Blur_Me(){  
 fClose=1;  
 setTimeout("doClose()",111);  
}    
function doClose(){  
 if(fClose)close();  
}

2voto

Kevin M Punkte 1466

Anstelle der Verwendung von blur() können Sie die jQuery-Funktion focusin() y focusout() Bearbeiter.

En focusin Ereignis wird an ein Element gesendet, wenn es oder ein beliebiges Element innerhalb des Elements den Fokus erhält.

En focusout Ereignis wird an ein Element gesendet, wenn es oder ein beliebiges Element innerhalb des Elements den Fokus verliert.

Diese unterscheiden sich von blur() dadurch, dass sie das Erkennen des Verlusts des Fokus von übergeordneten Elementen unterstützen (mit anderen Worten, sie unterstützen Event Bubbling).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X