UIWebView簡單的獲取HTML內容和修改頁面資訊

黑暗森林的歌者發表於2018-02-26

通過 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); 
}
複製程式碼

相關文章