1甲喝、UIWebView加載網頁:
接口:
- (void)loadRequest:(NSURLRequest *)request;
- (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;
示例:
NSString *url = @"www.baidu.com";
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[request setTimeoutInterval:30];
self.webView = [[UIWebView alloc] init];
self.webView.delegate = self;
[self.webView loadRequest:request];
關閉webView前需要將delegate置為nil栏妖,并停止加載網頁資源以防crash:
_webView.delegate = nil;
[_webView stopLoading];
2伏穆、safari調試UIWebView網頁:
mac safari-》Preferences(設置)-》advanced(高級)-》勾選開發(fā)模式
Snip20170212_1.png
真機(模擬器)-》設置-》safari-》高級-》開啟Web檢查器和JavaScript
IMG_0588.PNG
之后真機或者模擬器webView可以用safari進行調試:
Snip20170212_4.png
3耻卡、Objective-C調用UIWebView js方法:
接口:
- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
在webiview頁面加載完成之后調用stringByEvaluatingJavaScriptFromString:方法運行JS
示例:
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('kw').value = 'UIWebview';document.getElementById('su').click();"];
注意:
stringByEvaluatingJavaScriptFromString:方法只有在webView網頁加載結束后調用才會真正執(zhí)行js代碼屿脐。
如果判斷webView頁面是否加載完成挺益,需要滿足兩個條件:
- webView delegate回調webViewDidFinishLoad:方法古戴;
- webViewDidFinishLoad:方法回調后webView網頁資源加載完成,用webView.isLoading來判斷(可用其他方法)矩肩。
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//網頁為www.baidu.com
if ([self isTargetUrl:webView.request.URL.absoluteString] && !webView.isLoading) {
NSString *js = @"document.getElementById('kw').value = 'UIWebview';document.getElementById('su').click();";
[webView stringByEvaluatingJavaScriptFromString:js];
}
}