2015-03-24 3 views
6

che sto caricamento di una pagina web utilizzando UIWebViewCome ottenere il contenuto html da UIWebView?

let urlStr = "http://duckduckgo.com" 
let urlReq = NSMutableURLRequest(URL: NSURL(string: urlStr)!) 
webView.loadRequest(urlReq) 

Poi, quando la pagina ha terminato il caricamento, voglio accedere al contenuto HTML

func webViewDidFinishLoad(webView: UIWebView) { 
    let href = webView.stringByEvaluatingJavaScriptFromString("window.location.href") 
    println("window.location.href = \(href)") 

    let doc = webView.stringByEvaluatingJavaScriptFromString("document") 
    println("document = \(doc)") 
} 

Ma documento solo restituire una stringa vuota (Optional("")). La parte window.location.href funziona correttamente. Cosa sto facendo di sbagliato?

risposta

11

Credo che bisogna valutare il javascript in questo modo:

let doc = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML") 

In questo caso si ottiene l'intero HTML.

+0

Questo ha fatto il trucco, grazie! – ihatetoregister

0

Sto utilizzando jqxWidget per visualizzare l'analisi (Grafico) su UIWebView e il mio requisito è quello di visualizzare lo stesso grafico a schermo intero mentre l'utente fa clic su "Anteprima di stampa" su un altro FullScreenViewController su iPad. Quando utilizzo la soluzione di cui sopra, viene visualizzato il grafico con senza colore (nero).

Non desidero caricare nuovamente il contenuto dinamico che è già stato caricato sul precedente oggetto UIWebView.

+1

è questa una risposta alla domanda. Se hai una domanda da solo, allora crea una domanda. – jogo

0

Ho trovato la soluzione del problema riguardante jqxWidget. Il contenuto di UIWebView faceva riferimento a file .js e .css che sono già in bundle nell'app. Ho solo aggiunto l'url di base di MainBundle di App.

NSString *html = [self.webview1 stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"]; //document.body.innerHTML 

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

[objFullScreenViewCntrl.webview2 loadHTMLString:html baseURL:baseURL];