Ich erstelle eine App, die von einem Computer zu einem anderen kommunizieren wird, wenn die andere Person auf das Fenster schaut. Stellen Sie sich zum Beispiel vor, Sie chatten mit jemandem auf Facebook Chat und die andere Person ändert Tab oder Alt + Tabs oder etwas - die andere Person würde wissen (nicht die Besonderheiten, nur dass das Facebook-Fenster nicht oben und aktiv war).onblur und onfocus event aber mit iframes
Dies war schließlich einfach:
/**
* Functions which keeps track of whether the page is the active tab
* this reports back to the host
*/
window.onblur=function(){
if(conn!=null) {
conn.send(JSON.stringify({'type':'upd','ele':'vis','status':0}));
}
make_noise('0000');
};
window.onfocus=function(){ // when you focus the window
if(conn != null) {
conn.send(JSON.stringify({'type':'upd','ele':'vis','status':1}));
}
stop_noise('0000');
};
Dies alles funktioniert, kein Problem.
Allerdings habe ich auch einen iframe auf der Seite. Wenn der Benutzer in der iframe ist dann das onblur Ereignis ausgelöst wird und es sieht aus wie der Benutzer alt + Tabbed, ging zu einem anderen Tab usw.
ich schon versucht, diese zu beheben:
window.onblur=function(){ // when you leave the window
if(conn != null && (document.activeElement != document.getElementById("content_frame"))) {
conn.send(JSON.stringify({'type':'upd','ele':'vis','status':0}));
}
}
make_noise('0000');
};
jedoch, weil die iframe bleibt das activeElement, unabhängig davon, ob das Fenster gerade aktiv ist, löst dies ein falsches positives Ergebnis aus.
Kann jemand über einen Weg um dies denken? . $ (‚Iframe‘) ist (‚: Fokus‘) wurde als ein Weg vorgeschlagen, der die Prüfung der Fokus des iframe, aber dann funktioniert es genauso wie mit active ...
Vielen Dank, Alex
Sowohl der Vater als auch der IFrame sind vom selben Ursprung? – 11thdimension
Was meinst du mit Herkunft? :) –
Sieh dir diese https://en.wikipedia.org/wiki/Same-origin_policy an, allgemein bedeutet es die gleiche Domäne 'Protokoll: // Domäne: Port' – 11thdimension