Ho qualche javascript che si basa sull'uso di window.open e comunicazione inter-finestra (dove la nuova finestra "figlio" communicates success/failure to the 'parent' window).Rileva supporto browser per comunicazione inter-finestra
Questa (comunicazione tra finestre) funziona nella maggior parte dei casi, ma non funziona con alcuni browser che non supportano la comunicazione tra finestre. Gli esempi includono Windows Phone e iPhone's UIWebView.
Attualmente eseguo il client (basato su javascript) user-agent sniffing per rilevare questi scenari e il fallback su un percorso di codice diverso per risolvere il problema.
Esiste un'alternativa allo sniffing user-agent che potrei utilizzare?
Per essere chiari, window.open funziona (dove funziona significa 'apre l'URL richiesto'). Cosa non è affidabile sta usando window.opener e postMessage per fare comunicazione inter-finestra dal 'figlio' al 'genitore'.
Il bambino può anche accedere alla proprietà window.opener - che dovrebbe essere nullo - ma sfortunatamente questa non è una tecnica di rilevamento affidabile. Ad esempio, se si apre direttamente la finestra secondaria (senza utilizzare window.open dal padre), window.opener sarà nullo anche se il bambino effettivamente supporta effettivamente la comunicazione tra finestre. – mjwills
so che 'window.open' funzionerà, ma la funzione restituirà l'ID della finestra figlio? – Raptor
Non sono sicuro di come possa essere utile avere queste informazioni. Quello che voglio è il rilevamento di funzionalità all'interno della finestra figlio per sapere se può parlare con il genitore. Il valore di ritorno della chiamata a funzione window.open è ovviamente disponibile solo per il genitore - quindi "è piuttosto coinvolto dall'altra parte di questo boccaporto ermetico". Tutto ciò che viene detto, controllando il valore restituito produce null in mobile IE9 e un oggetto finestra in UIWebView. E notare che in entrambi i casi la nuova finestra è stata caricata correttamente (ma non sarà in grado di comunicare con il suo genitore). – mjwills