首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从UIWebView获取html内容?

如何从UIWebView获取html内容?
EN

Stack Overflow用户
提问于 2015-03-24 14:28:41
回答 3查看 21.7K关注 0票数 14

我正在使用UIWebView加载一个网页

代码语言:javascript
运行
复制
let urlStr = "http://duckduckgo.com"
let urlReq = NSMutableURLRequest(URL: NSURL(string: urlStr)!)
webView.loadRequest(urlReq)

然后,当页面加载完毕后,我想访问html内容。

代码语言:javascript
运行
复制
func webViewDidFinishLoad(webView: UIWebView) {
    let href = webView.stringByEvaluatingJavaScriptFromString("window.location.href")
    println("window.location.href  = \(href)")

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

但是document只返回一个空字符串(Optional(""))。window.location.href部件工作正常。我做错什么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-24 17:07:26

我认为您必须像这样评估javascript:

代码语言:javascript
运行
复制
let doc = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")

在这种情况下,您将得到整个HTML。

票数 24
EN

Stack Overflow用户

发布于 2020-03-09 02:15:54

现在,当UIWebView被否决时,您需要使用如下语法:

代码语言:javascript
运行
复制
webView.evaluateJavaScript("document.documentElement.outerHTML") { (html, error) in
    guard let html = html as? String else {
        print(error)
        return
    }
    // Here you have HTML of the whole page.
}

在此之后,您可以创建这样一个函数,它可以很容易地从webView获得HTML:

代码语言:javascript
运行
复制
func getHTML(_ completion: @escaping (String) -> ()) {
    webView.evaluateJavaScript("document.documentElement.outerHTML") { (html, error) in
        guard let html = html as? String else {
            print(error)
            return
        }
        completion(html)
    }
}

getHTML { html in
    // Here you have HTML string
    print(html) // for example...
}
票数 6
EN

Stack Overflow用户

发布于 2015-11-17 10:10:23

我找到了jqxWidget问题的解决方案。UIWebView内容引用的是.js和.css文件,这两个文件已经捆绑在应用程序中。我只添加了应用程序的MainBundle的基本网址。

代码语言:javascript
运行
复制
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];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29235225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档