2015-04-22 9 views
11

Sto lavorando su un'applicazione mobile basata su framework ionico (principalmente destinata ad Android). Il mio progetto è un'applicazione basata su schede. Nella prima scheda voglio caricare un sito Web esterno, ma non riesco a capire come farlo.Mostra un sito Web all'interno di una scheda ionica

Ho provato ngCordova InAppBrowser, ma esso occupa tutto lo schermo e le mie schede di navigazione rimangono indietro.

Ho anche provato a caricare un iFrame e funziona nel simulatore, ma questa soluzione non funziona affatto su dispositivi Android e mostra un iFrame vuoto (oltre ai suoi limiti di posizionamento che penso di poter risolvere tramite css).

C'è qualcosa che mi manca? Qualche suggerimento?

L'applicazione finale dovrebbe assomigliare (La sua versione nativa iOS): Sample Output Design

+0

sito web è nella lista bianca? – Flatlineato

+0

Sì @Flatlineato – KiNG

+3

C'è un modo per caricare InAppBrowser in una parte dell'app ?! – KiNG

risposta

2

sono riuscito a risolvere utilizzando iFrame.

L'utilizzo di ajax .load() presenta problemi come il caricamento dei metadati. Per utilizzare iFrame, è necessario aggiungere <access origin="yourwebsite.com/*"/>. Inoltre, si dovrebbe cambiare il vostro MainActivity Android su Create come questo ( Non riesco a trovare fonte fonte: 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

Non esiste un modo ionico puro? –

+0

@ KiJéy questa soluzione non funziona più nella versione recente di ionico. Non sono sicuro (non ricordo!) Ma penso che il problema sia già andato. – KiNG

+0

Problema non è andato per me, attualmente sto risolvendolo con un iFrame ma sembra così sporco! –

4

tenta di caricare i contenuti dal sito web tramite la tecnologia AJAX, non l'intera pagina tramite iframe. È possibile ottenere ciò attenendosi alla seguente procedura:

Per prima cosa si deve mettere un div in quel punto, dove si desidera visualizzare la pagina.

HTML:

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

E in JavaScript si recupera il codice tramite Ajax o jQuery e dopo averlo ricevuto, si sta andando a riempire il div con quel codice:

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

Grazie a @Sithys, ho pensato a questo metodo. Ma penso che i file JS sulla pagina remota non funzioneranno in questo modo (come Google Analytics). Ho ragione? E se sì, puoi suggerire qualche soluzione per questo? – KiNG

+0

Google Analytics è disponibile tramite plug-in. Il metodo che ho postato è solo per una pagina che desideri visualizzare su un sito web. Vuoi utilizzare anche le funzioni di quel sito? – Sithys

+0

Il sito Web è http://Bazar360.com. Come puoi vedere, non c'è JS importante su di esso, nemmeno jQuery. Ma quando provo questo metodo, premo http://en.wikipedia.org/wiki/Same-origin_policy: -/Sono riuscito a bypassarlo con jQuery, ma non funziona sul dispositivo. È davvero frustrante, quindi sto pensando di trasferirmi in nativo ...: -/ – KiNG

Problemi correlati