iOS UIWebView loadHTMLString不起作用

时间:2015-07-15 15:04:41

标签: ios objective-c iphone swift webview

我试试:

let body = "<body>.. ANYTHING ..</body>"
self.webView.loadHTMLString(body, baseURL: NSURL(string: "www.google.com")!)

self.webView.loadHTMLString(body, baseURL: nil)

如果我打印:

 self.webView.stringByEvaluatingJavaScriptFromString("document.body.outerHTML")!

此印刷品:

<body></body>

那不是我的整个HTML ..

有什么想法吗?

通知

身体来自

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
                            if error == nil {
    let body = NSString(data: data, encoding: NSUTF8StringEncoding)
}

是的,不是空的

2 个答案:

答案 0 :(得分:2)

如果你打电话

self.webView.stringByEvaluatingJavaScriptFromString("document.body.outerHTML")!
调用loadHTMLString之后的

是期望的行为,因为UIWebView异步加载内容。在UIWebView中设置viewDidLoad的委托,然后在委托方法中调用此evaluateJS ...

func webViewDidFinishLoad(webView: UIWebView) 
{
    let body = self.webView.stringByEvaluatingJavaScriptFromString("document.body.outerHTML")!
    println(body)
}

答案 1 :(得分:0)

将您的html文件保存到您的项目中,然后在webview中加载html,请参阅下面的内容,如果这不起作用请检查: - link

import UIKit


class ViewController: UIViewController {
@IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        // Do any additional setup after loading the view, typically from a nib.
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let localfilePath = NSBundle.mainBundle().URLForResource("test", withExtension: "html");
        let myRequest = NSURLRequest(URL: localfilePath!);
        webView.loadRequest(myRequest);
        //or use as below 
        let myHTMLString:String! = "<h1>Hello Pizza!</h1>"
        webView.loadHTMLString(myHTMLString, baseURL: nil)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }



}