2012-06-27 25 views
6

Ho una pagina HTML che si costruisce in questo modo:UIWebView baseURL e percorso assoluto

<html> 
    <head> 
    <link rel="stylesheet" href="/style.css" /> 
    </head> 
    <body> 

    </body> 
</html> 

E 'conservato nella mia directory documenti:

/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/index.html 

Ho anche memorizzato lo style.css in la directory di documenti:

/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/style.css 

Ma ora, quando provo a caricare il codice HTML nel mio WebView utilizzando Thi s:

NSURL *test = [NSURL URLWithString:@"file:///Users/username/Library/Application Support/iPhone%20Simulator/5.1/Applications/12345-ID/Documents/mysite/"] 
[myWebView loadHTMLString:<the content retrieved from index.html> baseURL:test]; 

il CSS non è caricato, quando intercettare la richiesta al foglio di stile con un NSURLProtocol posso vedere la richiesta è sbagliato. Si sta cercando di richiesta:

file di

: ///style.css

invece della piena baseURL. Ora posso risolvere questo rimuovendo/davanti a /style.css nel file html. Ma esiste un modo semplice per risolvere questo problema nel codice nativo senza modificare l'html?

+0

che è esattamente quello che sto usando (vedere i contenuti) – Thys

+0

avete provato prendere il '/' al largo della fine del NSURL * Test = [NSURL ....... linea. È possibile che si verifichi una condizione di doppia barra, che potrebbe causarne il default nella posizione dell'utente, solo un pensiero. – trumpetlicks

+0

non funziona :( – Thys

risposta

2

La rimozione della barra era l'unica soluzione

+0

Ma avrai un problema una volta che l'app sarà attiva e non risiede più nel simulatore in quel percorso specifico ... la soluzione trumpetlicks è valida indipendentemente dalla posizione dell'app. – darwin

+0

Dovrebbe essere possibile utilizzare ancora i percorsi assoluti in webview. È necessario implementare NSURLProtocol personalizzato. Anche se richiede un sacco di codice, quindi sto cercando un modo semplice per gestire questo. Una volta lo trovo. Lo posterò qui. –

12

Generare il vostro percorso e URL di base nel seguente modo:

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSURL *baseURL = [NSURL fileURLWithPath:path]; 
[webView loadHTMLString:htmlString baseURL:baseURL]; 

un grande blog sul tema:

http://iphoneincubator.com/blog/windows-views/uiwebview-revisited

Un SO QA sull'argomento

UIWebView and local css file

+0

La rimozione della barra è stata l'unica soluzione, ancora grazie mille per aver almeno tentato di aiutare :) – Thys

+0

Ho pensato che sarebbe stato il caso, ma fino a provi le combinazioni ... Spiacente, non c'era una soluzione adatta alle tue esigenze. – trumpetlicks

Problemi correlati