2013-09-30 5 views
5

Sto costruendo una demo VOIP rapida usando Skype e quando premo un pulsante di chiamata, l'applicazione Skype distoglie l'attenzione dal browser. Puoi provare qui http://developer.skype.com/skype-uris/skype-uri-tutorial-webpages dove troverai diversi link "Provalo qui". Quando faccio clic su questi collegamenti, vorrei che il browser mantenesse l'attenzione. C'è un modo per fare questo?impedendo a un browser di perdere la concentrazione sull'app esterna chiamata

Grazie.

risposta

4

Quello che dovresti fare è apparentemente chiamato "focus rubare" dalle mie ricerche sul web.

Almeno per quanto riguarda Windows, non sembra esserci un modo affidabile per farlo dal solo browser.

Ho solo cercato su google "focus stealing" (che è ciò che la soluzione solo JavaScript dovrebbe fare per ottenere questo risultato) e ho trovato molte risposte che mostrano che, sebbene teoricamente possibile, a seconda della configurazione di Windows che ruba l'attenzione lontano da Probabilmente Skype dal browser non funzionerebbe nella maggior parte dei casi.

I reclami nei collegamenti di Google sono numerosi e alcune risposte sono in conflitto, ma sembra che il "furto dell'attenzione" sul browser non venga supportato in modo affidabile.

Questa è una buona cosa, però, se ci pensate - non voglio personalmente alcun programma JavaScript vecchio in esecuzione nel mio browser per cambiare il mio focus da quello che sto lavorando al browser willy nilly - questo sarebbe essere un comportamento molto fastidioso per una pagina Web di essere in grado di fare al meglio, rendendo il mio sistema inutile nel peggiore dei casi.

Se si potesse fare in questo caso utilizzando una certa metodologia consentita in un browser, così potrebbe chiunque altro - anche siti Web malevoli.

La migliore risposta è non lasciare mai che il focus lasci il browser, ma non ho idea di come farlo nel caso specifico. Forse qualunque cosa voglia usare per lanciare Skype potrebbe avere un'opzione o qualcosa da lanciare in background o altro, senza mai cambiare l'attenzione.

Non ho trovato collegamenti specifici relativi a sistemi operativi Apple, Linux o sistemi operativi mobili, ma ho la sensazione che le stesse preoccupazioni e limitazioni si applichino anche a quelle.

Ecco alcuni dei link sulla ricerca di Google (e mi dispiace per la cattiva notizia per le vostre esigenze):

Microsoft Answers Forum Post

Focus stealing is evil

http://pcsupport.about.com/od/windowsxp/ht/stealingfocus02.htm

+0

Ok, grazie per il dettaglio risposta! – frenchie

1

è possibile aprirlo in una nuova finestra, quindi chiudere la nuova finestra e riorientare sul vostro

somthing come:

a=window.open('skype:ohadcn?chat',10,10); 
//i couldn't find a relevant event, onload() do not work for me here 
//so i used setTimeOut, hoping that two seconds is enough to open skype but not enough to loose the user 
setTimeout(function(){ a.close();window.focus();},2000) 
1

sono andato alla pagina di skype esercitazione in Chrome, ha portato la console e ha provato la risposta di Ohad, ma non avrebbe restituito l'attenzione alla pagina web del tutorial.

Ho provato anche uno script per mettere perennemente lo stato attivo nella ricerca di testo:

function ASDF() { 
     document.getElementsByName("q")[0].focus(); 
     setTimeout(ASDF, 1000); 
    } 
    setTimeout(ASDF, 1000); 

Ancora nessuna fortuna.

Ho provato a cambiare lo script di Ohad in modo da riaprire la pagina del tutorial in una nuova finestra dopo l'apertura dell'applicazione skype. Funzionerebbe se la pagina tutoral/console è stata l'unica scheda nella finestra:

a=window.open('skype:ohadcn?chat',10,10); 
setTimeout(function(){ 
    a.close(); 
    a=window.open('http://developer.skype.com/skype-uris/skype-uri-tutorial-webpages', 10, 10); 
    window.close();},2000); 

Tuttavia, se lo script/console pagina tutorial è stato in finestra con altre schede, non ha tornare attenzione alla pagina riaperto. Per non parlare, IE potrebbe avvisare l'utente che la pagina originale sta tentando di chiudere.

Non penso che ci sia un modo per raggiungere in modo coerente il tuo obiettivo, ma mi riservo il diritto di sbagliare.