2010-03-10 5 views
1

Dans une application qui a plusieurs webviews, y a-t-il un moyen d'avoir le Javascript dans deux webviews séparés communiquent directement les uns avec les autres? Je voudrais vraiment utiliser JavaScript dans un webview pour contrôler le contenu de l'autre webview, mais mon pari est que chaque environnement est complètement isolé et que la communication doit être sérialisé et envoyé par le contrôleur Webview.Communiquer entre deux webviews avec Javascript

Répondre

0

Utilisez <frameset>, etc dans la même vue Web pour communiquer entre deux pages.

Sinon, il n'y a aucun moyen de voir en dehors de l'environnement (en particulier. Pour iPhoneOS depuis l'ensemble du cadre de WebKit est une API privée.)

+0

Shoot. C'est dommage. Au coeur de mon problème est que j'ai besoin de plusieurs webviews, chacun qui peut défiler indépendamment. À l'heure actuelle, j'utilise un large webview qui a un défilement latéral géré par un contrôleur de défilement pour se déplacer entre les «pages» de données et le défilement de haut en bas contrôlé par le webview. Side-to-side fonctionne en douceur, mais de haut en bas est très, très difficile à contrôler. Je pensais à sérialiser les fragments HTML et à les transmettre via le contrôleur webview aux webviews qui en ont besoin, mais les événements de liaison vont être très difficiles à gérer. – Andrew

0

Je cherche à faire la même chose et suis tombé sur ce fil dans rechercher le problème. Nous n'avons pas encore eu l'occasion de le modéliser, mais il semble au moins théoriquement réalisable en utilisant d'abord JavaScript pour communiquer avec l'encapsuleur Objective-C, puis en envoyant ces données à la seconde WebView via un appel JavaScript. Des informations sur chacune de ces deux étapes (indépendantes) peuvent être trouvées ici: http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/

+0

Avec Objective C, nous avons fini par rester avec une seule webview. Mais utiliser l'application comme proxy fonctionne. J'ai fini par le faire dans Android (création d'un objet MessageCenter qui dirige les messages entre les différents webviews.) Dans iOS, si vous communiquez avec la couche d'application en changeant l'URL, une chose dont vous devez faire très attention est d'espacer le Si vous définissez deux fois l'URL en succession rapide, seule la dernière URL sera récupérée: il est préférable d'écrire une file d'attente en JavaScript et de faire en sorte que l'application avance dans la file d'attente lorsqu'elle est prête à recevoir de nouveaux messages. – Andrew

Questions connexes