2015-03-24 2 views
6

Я загрузки веб-страницы, используя UIWebViewКак получить содержимое html из UIWebView?

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

Затем, когда завершения загрузки страницы, я хочу, чтобы получить доступ к содержимому 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)") 
} 

Но документ просто возвращает пустую строку (Optional("")). window.location.href часть работает нормально. Что я делаю неправильно?

ответ

11

Я думаю, вы должны оценить JavaScript, как это:

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

В этом случае вы получаете весь HTML.

+0

Это сделало трюк, спасибо! – ihatetoregister

0

Я использую jqxWidget для отображения аналитики (диаграммы) в UIWebView, и мое требование состоит в том, чтобы отображать один и тот же график на полном экране, когда пользователь нажимает «Предварительный просмотр» на другом FullScreenViewController на iPad. Когда я использую выше решение, он отображает график, содержащий без цвета (черный).

Я не хочу загружать динамический контент, который уже был загружен в предыдущий объект UIWebView.

+1

- это ответ на вопрос. Если у вас есть вопрос самостоятельно, создайте вопрос. – jogo

0

Я нашел решение проблемы относительно jqxWidget. Этот контент UIWebView ссылался на файлы .js и .css, которые уже включены в приложение. Я только что добавил базовый url из MainBundle приложения.

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]; 
Смежные вопросы