2015-04-22 15 views
11

Pracuję nad aplikacją mobilną opartą na platformie jonowej (głównie dla systemu Android). Mój projekt to aplikacja oparta na kartach. W pierwszej zakładce chcę załadować zewnętrzną stronę internetową, ale nie mogę wymyślić, jak to zrobić.Pokaż stronę internetową w zakładce jonowej

Próbowałem ngCordova InAppBrowser, ale zajmuje to cały ekran, a moje zakładki nawigacji pozostają w tyle.

Próbowałem także ładować iFrame i działa w symulatorze, ale to rozwiązanie nie działa na urządzeniach z Androidem i pokazuje puste iFrame (poza limitami pozycjonowania, które myślę, że mógłbym rozwiązać za pomocą css).

Czy jest coś, czego mi brakuje? Jakieś sugestie?

Ostateczna aplikacja powinna wygląda jak (natywnej wersji iOS): Sample Output Design

+0

strona internetowa jest na białej liście? – Flatlineato

+0

Tak @Flatlineato – KiNG

+3

Czy jest jakiś sposób na załadowanie InAppBrowser w części aplikacji ?! – KiNG

Odpowiedz

2

Udało mi się go rozwiązać za pomocą iFrame.

Używanie ajax .load() ma problemy, takie jak ładowanie metadanych. Aby użyć iFrame, powinieneś dodać <access origin="yourwebsite.com/*"/>. Ponadto, należy zmienić swoją główną działalność na Android Tworzenie tak ( nie mogę znaleźć źródła źródło: iframe for Android apps using Phonegap not working):

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    super.init(); 
    super.appView.setWebViewClient(new CordovaWebViewClient(this, super.appView) { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return false; 
     } 
    }); 
    // Set by <content src="index.html" /> in config.xml 
    loadUrl(launchUrl); 
} 
+0

Czy nie ma czystej metody jonowej? –

+0

@ KiJéy tego rozwiązania nie więcej działa w najnowszej wersji jonowej. Nie jestem pewien (nie pamiętam!), Ale myślę, że problem już minął. – KiNG

+0

Problem nie dla mnie, obecnie rozwiązuję go za pomocą iFrame, ale wydaje się tak brudny! –

4

próbie załadowania treści ze strony internetowej za pośrednictwem ajax, a nie całej strony poprzez iframe. Możesz to osiągnąć, robiąc to następująco:

Najpierw wstawisz div do tego miejsca, w którym chcesz wyświetlić stronę.

HTML:

<div id="loadExternalURL"></div> 

I w JavaScript Ci pobrać kod za pośrednictwem Ajax lub jQuery i po to masz, masz zamiar wypełnić div z tym kodem:

JS :

/*jQuery*/ 
$('#loadExternalURL').load('http://www.google.com'); 

/*ajax*/ 
$.ajax({ 
    dataType:'html', 
    url:'http://www.google.com', 
    success:function(data) { 
    $('#ajax').html($(data).children()); 
    } 
}); 
+0

Dzięki @Sithys, myślałem o tej metodzie. Ale myślę, że pliki JS na stronie zdalnej nie będą działać w ten sposób (jak Google Analytics). Czy mam rację? A jeśli tak, czy możesz zaproponować jakieś rozwiązanie? – KiNG

+0

Google Analytics jest dostępny za pośrednictwem wtyczki. Zamieszczona przeze mnie metoda dotyczy tylko strony, którą chcesz wyświetlić na stronie internetowej. Czy chcesz także korzystać z funkcji z tej strony? – Sithys

+0

Strona jest http://Bazar360.com. Jak widać, nie ma na nim ważnego JS, nawet jQuery. Ale kiedy próbuję tej metody, trafiłem http://en.wikipedia.org/wiki/Same-origin_policy: -/Udało mi się ominąć ją przez jQuery, ale nie działa na urządzeniu. To naprawdę frustrujące, więc myślę w ruchu do rodzimych ...: -/ – KiNG