2013-03-04 9 views
13

Mam aplikację internetową, której używam w PhoneGap/Cordova do zainstalowania w iOS i Androidzie. W pewnym momencie aplikacji mam element iframe ładujący zawartość z drugiego serwera.Jak mogę otworzyć element iframe w aplikacji phonegap/cordova działającej na IOS?

Po uruchomieniu aplikacji z przeglądarki wszystko działa zgodnie z oczekiwaniami - element iframe otwiera się na tej samej stronie i ładuje zawartość z drugiej witryny.

Po uruchomieniu aplikacji internetowej na symulatorze iPhone'a za pomocą Cordova, gdy otworzy się element iframe, system iOS przełącza się na Safari i umieszcza moją aplikację w tle.

Kroki podjęte:

  1. dodałem drugą stronę do "ExternalHosts" tablicy w pliku Cordova.plist.
  2. Utworzono plik config.xml obok pliku index.html w katalogu/www, zgodnie z dokumentacją PhoneGap/Cordova (https://build.phonegap.com/docs/config-xml).
  3. Dodałem nazwę preferencji < = "stay-in-webview" wartość = "true"/> znacznik do pliku config.xml jako element podrzędny znacznika .

Podejrzewam, że to nie jest czytanie/używanie pliku config.xml, ale może być coś jeszcze ... Czy ktoś ma jakieś pomysły, co mogę robić źle?

Odpowiedz

19

Po dodaniu InAppBrowser zamiast elementu iframe używanego wcześniej, ostatecznie spróbowałem iframe ponownie, a element iframe działa teraz bez Przeskakując do przeglądarki telefonu, tak jak to było wcześniej, a iframe działa konsekwentnie zarówno w systemie iOS, jak i Android.

2 rzeczy zmieniły się od czasu, iframe zostały podzielone na kiedy zaczęli pracę:

  1. I przeniesieni do Cordova 2,5
  2. zacząłem dynamicznie tworzenie/dodanie iframe do strony za pomocą jQuery, raczej niż tylko odkrywania już istniejących iframe, jak robiłem początkowo:

    $ (”< iframe src = "whatever.com" height = "100%" width = "100%" frameborder = "0" > </iframe > ') .appendTo (' body '); .

I nie przeszkadzało sprawdzenie czy to nr 1 lub nr 2, która stała się kwestią iframe (zgaduję, że to # 1), ale myślę, że byłoby zakładać, że możliwe jest uzyskanie iframes pracy z aplikacją PhoneGap/Cordova, na wypadek, gdyby ktoś inny wpadł na ten sam problem.

5

Dlaczego nie korzystasz z InAppBrowser? http://docs.phonegap.com/en/2.3.0/cordova_inappbrowser_inappbrowser.md.html. Trudno będzie użyć elementów iframe, które działają zarówno w systemie Android, jak i iOS

+0

Dzięki za odpowiedź. Wydaje się dziwne, że element iframe nie będzie obsługiwany ...W każdym razie, InAppBrowser wydaje się mieć ten sam problem - wciąż jest tylko tłem mojej aplikacji i otwiera Safari. Wygląda na to, że Cordova po prostu ignoruje plik config.xml ... Dokumentacja wydaje się wskazywać, że samo umieszczenie pliku config.xml w poprawnej lokalizacji spowoduje automatyczne załadowanie pliku, ale tak naprawdę nie jest tak w przypadku ... – Troy

+0

Wygląda na to, że InAppBrowser może nie być dostępny w Cordova 2.2. Spróbuję uaktualnić i ponownie przetestować. – Troy

+1

Jeśli nie chcesz dokonać aktualizacji, możesz użyć wtyczki przeglądarki podrzędnej dla PhoneGap 2.2: https://github.com/phonegap/phonegap-plugins/tree/master/iOS/ChildBrowser – Whizkid747

0

To samo teraz z iOS 8 nie działa. Dostaję iFrame bez przewijania i przepełniania na innych elementach div. Próbowałem różnych stylów CSS, ale bez rozwiązania. Działa dobrze w aplikacjach na Androida. Używa najnowszej wersji Phonegap.

Powiązane problemy