2016-05-27 6 views
1

Ich suche nach einer Nicht-JQuery-Lösung für eine scheinbar einfache Aufgabe: Erkennen, wenn die Maus die Seite verlassen hat. ABER, Standardmethoden mit:Wie kann es erkannt werden, wenn der Mauszeiger die Webseite verlässt, wenn der Cursor die Kante nicht berührt?

document.onmouseleave 
//or 
document.onmouseout 

funktioniert nur, wenn die Maus die Seite über die Kante verlässt.

Das bedeutet, es wird scheitern wenn die Maus verlässt durch Überkreuzen in ein anderes Programm, das einen höheren Fokus hat (zB: Notepad.exe).
Es wird auch fehlschlagen, wenn der Browser (zB: Win + D) minimiert wird, oder wenn Alt + Tab verwendet wird. Es gibt wahrscheinlich andere Möglichkeiten, wie es scheitern wird.

Welche anderen Methoden haben einen besseren Erfolg bei der Erkennung der Maus verlassen? Vielleicht sogar durch Umfragen?
Dies muss in Chrome + Windows funktionieren, aber idealerweise in jedem modernen Browser.

aktualisieren:
dman2306 zu einigen Verfahren verknüpft ist zum Erfassen, wenn der Browser minimiert ist, einschließlich:

document.addEventListener("visibilitychange", function() { 
    doThings(); 
}, false); 

Ich habe gerade überprüft, die in der neuesten Version von Chrome unter Windows 8.1 funktioniert.

, die genau die Probleme des Cursors verlässt über eine weitere Fensterrand austritt, oder über Alt + Tab .

+0

Was ist der Grund dafür? –

+0

Gut zu minimieren bedeutet nicht wirklich, dass die Maus übrig ist, aber trotzdem können Sie erkennen, minimieren Sie spezifisch mit dieser Technik http://stackoverflow.com/questions/10328665/how-to-detect-browser-minimize-and-maximize-state -in-javascript – dman2306

+0

@ dman2306 Wenn die Maus auf Dinge in Excel klickt, würden Sie wirklich sagen, dass es noch im Browser ist? – Bort

Antwort

1

Es gibt ein Ereignis onblur, das tut, was Sie wollen.

window.onblur = function() { 
     console.log('blur'); 
    } 
+0

In der Tat, das funktioniert! Wenn ich also window.onblur mit document.onmouseleave kombiniere, kann ich keinen Weg finden, die Seite zu denken, die Maus sei noch auf der Seite! – Bort

+0

@Bort - Bitte markieren Sie diese Antwort als ** die Antwort **, wenn dies Ihr Problem tatsächlich gelöst hat. –

+0

Ja werde ich, aber ich lasse in der Regel etwas Zeit für jemand anderen, um eine andere Antwort falsch/fehlerhaft/ineffizient zu beweisen. ZB: Es ist möglich, dass es ein anderes Ereignis gibt, das ich vermisse. – Bort

0

Sie können zu Ihrer Lösung einen anderen Handler für das onfocusout-Ereignis hinzufügen, der erkennt, ob ein anderes Programm den Fokus erhalten hat oder ob das Fenster minimiert wurde.

+0

Ich habe gerade versucht mit "document.onfocusout = function() {alert (" test ")};" in Chrome und konnte die Warnung nicht auslösen(). – Bort

+0

obwohl es an Chrome arbeiten soll, versuche stattdessen das "onblur" -Ereignis zu verwenden. –

Verwandte Themen