2011-11-02 15 views
6

Ho riscontrato un problema con UIWebView. Voglio rendere il mio codice html in UIWebView.loadHTMLString baseURL: nil non funziona in iOS5

se utilizzo il codice seguente, funziona correttamente.

NSBundle *thisBundle = [NSBundle mainBundle]; 
    NSString *path = [thisBundle pathForResource:@"foo" ofType:@"html"]; 
    NSURL *baseURL = [NSURL fileURLWithPath:path]; 
    [self.webView loadHTMLString:@"foo.html" baseURL:baseURL]; 

Desidero rendere l'html con il seguente codice. Ma non sta funzionando. foo.html contiene esattamente lo stesso contenuto di NSString *. Qualche suggerimento? Grazie in anticipo. =)

NSString* one = @"<html><head><title></title></head><body><img src=\"image.jpg\"/></body></html>"; 
    [self.webView loadHTMLString:one baseURL:nil] ; 

risposta

23

Io uso questo codice che funziona perfettamente:

NSString* htmlContent = @"<html><head><title></title></head><body><img src='image.jpg' /></body></html>"; 
[self.webView loadHTMLString:htmlContent baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 

Bu sicuri che image.jpg è incluso nel progetto.

+0

Ciao, non voglio leggere il file html locale. Voglio usare direttamente in questo modo. NSString * one = @ ""; – moon

+0

@moon: sì, mi dispiace, basta sostituire htmlContent con il tuo HTML. È stato fatto quando ho scritto questo codice. Modifico la mia risposta – Oliver

+0

Ciao Oliver, sì, funziona. Molte grazie. :) – moon

1

creare il file JS demo.js e aggiungere il codice

var hello = function(str){       return str; };

aggiungere UIWebView => Per incorporare JavaScript in un file html fittizio e caricare che nel UIWebView

[self.webView loadHTMLString:@"<script src=\"demo.js\"></script>"               baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];

Ecco il codice per effettuare la chiamata JS

NString *[email protected]"hi JavaScript"; 
NSString *function = [[NSString alloc] initWithFormat: @"hello(%@)", str]; 
NSString *result = [webView stringByEvaluatingJavaScriptFromString:function]; 

Ora, c'è un suggerimento di sicurezza importante per farlo funzionare: l'UIWebView deve essere effettivamente caricato in una vista. Non deve essere visibile, ma affinché il motore WebKit possa eseguire il JS, deve essere visibile.

Problemi correlati