2012-06-28 13 views
9

Ho un'app per iOS per caricare una stringa html che fa riferimento a file css esterno e file javascript nella stessa directory.iOS loadHtmlString in UIWebView non funziona con Javascript

Ecco il mio file html:

<html> 
<head> 
    <meta name="viewport" content= user-scalable="no", width="device-width" /> 
    <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"/> 
    <link rel="stylesheet" type="text/css" href="mystyle.css" /> 
    <script type="text/javascript" src="myjavascript.js"></script> 
</head> 

il file CSS funziona bene, ma sembra che il file js mai caricato. Quale potrebbe essere la ragione?

A proposito, sto usando loadHtmlString: metodo BaseUrl per caricare la mia stringa html.

Grazie

+1

Fare riferimento a [questo] (http://stackoverflow.com/questions/7012537/sourcing-local-javascript-in-uiwebview-ios?rq=1) link e sperare che sia utile in quanto non l'ho provato. –

+0

Puoi mostrare il tuo codice iOS per questo? – nhahtdh

+3

Assicurati che il javascript sia nella sezione * Copia risorse bundle * e non nella sezione * Compile Sources *. Non so perché ma a volte Xcode pensa che dovrebbe compilare il tuo Javascript. Certo, non può, quindi finisci con un mucchio di codice non operativo e nessuna risorsa per il tuo HTML. – borrrden

risposta

6

questa domanda è un po 'vecchio, ma dato che non è stato risposto, vorrei far notare che, se si vuole che il proprio vista web di caricare un file javascript che risiede nel vostro pacco, il modo in cui per farlo è:

[webView loadHTMLString:html 
       baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 

Se non si specifica il baseURL, non vi è alcuna possibilità che il file javascript sia caricato.

+0

Questo è esattamente quello che ho fatto. Il problema è che il javascript non è ancora caricato, anche se il css va bene. –

+0

Vedo ... sei sicuro che il tuo javascript non contenga errori? il problema con JS è che fallisce silenziosamente. come un debug molto grezzo, puoi inserire alcune istruzioni di avviso (ad esempio, la prima riga nel tuo file js), e vedere se appaiono ... – sergio

+0

Sì, ho verificato che aggiungendo solo una riga di JS codice per avvisare. Ma non funziona. Il CSS funziona. Grazie comunque. –

2

come gli altri hanno detto

  • uso baseURL: [NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]]];

  • copia Bundle Resources e non in Risorse di compilazione.

questo è tutto!

5

Per impostazione predefinita, xcode inserirà nuovi file Javascript in Risorse di compilazione anziché in Risorse di bundle. Clicca sul tuo progetto, quindi sul tuo obiettivo. Sotto 'Build Phases' puoi vedere i file Javascript sotto 'Compile Sources'. Trascinali verso il basso su "Copia risorse pacchetto".

+1

Questo è esattamente quello che è successo a me quando ho trascinato alcuni file JS nel mio progetto. Li ho rimossi da ** Compile Resources ** perché Xcode stava generando un errore, ma senza che fossero contenuti in ** Bundle Resources **, non erano disponibili per la mia applicazione. Grazie! –

+0

Questo mi ha salvato la vita! Grazie a @Kevin Borders! – gilsaints88

Problemi correlati