通過 stringByEvaluatingJavaScriptFromString
這個方法我們可以在iOS中與UIWebView中的網頁元素互動。
使用stringByEvaluatingJavaScriptFromString
方法,需要等UIWebView中的 頁面載入完成之後 去呼叫。
建立一個 UIWebView,設定載入的 URL 為
NSURL *url =[[NSURL alloc] initWithString:@"http://www.google.com.hk/m?gl=CN&hl=zh_CN&source=ihp"];
複製程式碼
webview 的代理方法
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// 獲取當前頁面的url
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
// 獲取頁面title
NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];
// 修改介面元素的值
NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='iOS開發';"];
// 表單提交
NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "];
}
複製程式碼
這樣就實現了在google搜尋關鍵字:“iOS開發”。
上面的功能可以封裝到一個 js 的函式中,然後將這個函式插入到頁面上執行:
if ([title compare: @"Google"]==NSOrderedSame ) {
[webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement_x('script');"
// 建立一個script的標籤,type為'text/javascript'
"script.type = 'text/javascript';"
//在這個標籤中插入一段字串,這段字串就是一個函式:mySearch,這個函式實現google自動搜尋關鍵字的功能
"script.text = "function mySearch() { "
"var field = document.getElementsByName('q')[0];"
"field.value='iOS開發';"
"document.forms[0].submit();"
"}";"
"document.getElementsByTagName_r('head')[0].appendChild(script);"];
// 使用stringByEvaluatingJavaScriptFromString執行mySearch函式
[webView stringByEvaluatingJavaScriptFromString:@"mySearch();"];
}
複製程式碼
獲取 HTML 的內容
獲取固定ID內的html 內容
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *js = @"document.getElementById('lg').innerHTML";
NSString *pageSource = [webView stringByEvaluatingJavaScriptFromString:js];
NSLog(@"pagesource:%@", pageSource);
}
複製程式碼