2015-03-24 6 views
6

mam ładowania strony internetowej przy użyciu UIWebViewJak uzyskać zawartość html z UIWebView?

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

Wtedy, gdy strona zakończeniu ładowania, chcę uzyskać dostęp do zawartości 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)") 
} 

Ale dokument tylko zwróci pusty ciąg (Optional("")). Część window.location.href działa poprawnie. Co robię źle?

Odpowiedz

11

Chyba trzeba ocenić skrypt tak:

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

W tym przypadku można dostać całą HTML.

+0

To się udało, dzięki! – ihatetoregister

0

Używam jqxWidget do wyświetlania danych analitycznych (wykresu) w UIWebView, a moim wymaganiem jest wyświetlanie tego samego wykresu na pełnym ekranie, podczas gdy użytkownik klika "Podgląd wydruku" na innym kontrolerze FullScreenView Controller na iPadzie. Gdy korzystam z powyższego rozwiązania, wyświetla się wykres o bez koloru (Czarny).

Nie chcę ładować ponownie dynamicznej zawartości, która została już załadowana do poprzedniego obiektu UIWebView.

+1

jest to odpowiedź na pytanie. Jeśli masz własne pytanie, utwórz pytanie. – jogo

0

Znalazłem rozwiązanie problemu dotyczącego jqxWidget. Ta zawartość UIWebView odnosiła się do pliku .js i .css, który jest już dołączony do aplikacji. Właśnie dodałem podstawowy URL MainBundle aplikacji.

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];