2012-11-30 10 views
7

Un'app per iOS 6 per iOS mostra il contenuto in due UIWebViews. Se entrambe le visualizzazioni web contengono un rotatore di immagini jQuery, solo uno funzionerà alla volta. In esecuzione < iOS 6, entrambi funzionano correttamente.iOS 6 multiple UIWebViews: Javascript viene eseguito solo in uno

Se il contenuto della webview non di animazione viene ricaricato, inizia a funzionare e l'altro si arresta. Inoltre, nel simulatore SOLO, a volte posso causare l'avvio della visualizzazione Web interrotta (e l'altra interruzione) facendo clic/trascinando su di essa.

Se una delle visualizzazioni Web NON contiene javascript, il ricaricamento della visualizzazione Web interrotta non interrompe il funzionamento dell'altro.

Il mio primo pensiero è stato che si trattava di un problema di messa a fuoco, ma l'ultima parte sembra smentire ciò e indicare così una sorta di inquinamento tra le due visualizzazioni web. I due rotatori hanno gli stessi selettori e gli stessi script js, ma i file js sono memorizzati nella cache localmente e sono rinominati in modo univoco per eliminare qualsiasi avanzamento durante il processo di memorizzazione nella cache.

Non riesco a trovare nulla nelle note di rilascio di iOS 6 per descrivere un cambiamento di priorità tra le diverse UIWebViews.

Le viste Web si trovano in un XIB, ma ma non i fratelli della stessa UIView genitore.

Il comportamento desiderato è che nessuna delle viste Web si addormenti, ovviamente.

+0

Non sono sicuro che sarete fortunati su questo. Ho sentito che sono state apportate ampie modifiche al motore Javascript in iOS 6. È stato considerato un successo perché, dal punto di vista funzionale, nessuno ha notato una differenza. C'è un riferimento, anche se ottuso, al lavoro svolto qui: http://en.wikipedia.org/wiki/IOS_6 Quando nella pagina cerca Javascript. – TheBasicMind

risposta

1

JavaScript funziona in più UIWebViews ma dipende dal codice JavaScript. L'uso di JQuery o di un altro codice JavaScript esterno può essere un problema nel caso in cui lo si colleghi a un href. Puoi risolvere questi problemi copiando il codice di tutte le librerie JavaScript esterne nella tua pagina Web HTML. Questo è il motivo per cui JavaScript semplice funziona bene. Esempio:

Screenshot of JavaScript in multiple web views

Questo è un UITableView con un UIWebView in ogni UITableViewCell. In webViewDidFinishLoad lo faccio [webView stringByEvaluatingJavaScriptFromString:@"document.write('hey hallo'+new Date().getTime())"];

1

Hai provato a realizzare una WebView delle dimensioni delle tue 3 WebViews e l'utilizzo di 3 iFrame all'interno di 1 UIWebView che carica ogni pagina abilitata per javascript?

+0

Sì, ma ho problemi con il posizionamento di quelle pagine, in quanto contengono due metà di una grande immagine a due pagine. –

+0

@pro_metedor hmm ... Oh cosa succede se ... Okay, quindi rendi il tuo UIWebView due volte più grande quindi rendi l'iFrame due volte più grande (aggiusta la posizione usando i CSS) quindi configura l'intero UIWebView in un UIScrollView e ingrandisci a 0.5 (50%) quindi UIWebView è tornato alle sue dimensioni normali, ma il contenuto è due volte più piccolo, quindi tutto si adatta. :) Boo-yah! –

+0

@pro_metedor CSS dovrebbe posizionarli bene! Davvero :) –

Problemi correlati