一: OC執行JS代碼web
1.webView加載請求, request, 控制器成爲webView的代理, 監聽網頁加載完畢會調用代理方法函數
/**this
* 網頁加載完畢
*/lua
- (void)webViewDidFinishLoad:(UIWebView *)webView { }url
2.讓頁面調用OC的方法, 它屬於webView的方法,注意: 執行JS代碼僅僅只有這一種方法:spa
[webView stringByEvaluatingJavaScriptFromString:@「JS代碼」];設計
舉例 一:
/**
* 網頁加載完畢
*/
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *js = @"document.getElementsByTagName('footer')[0].remove();";
[webView stringByEvaluatingJavaScriptFromString:js];
}
舉例 二:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *JS代碼 = @"function login (username, pwd) { "
" return 10;"
" }"
" login();";
// 在OC中調用JS的函數(執行JS代碼)
[webView stringByEvaluatingJavaScriptFromString:@「JS代碼」];代理
}orm
二: JS調用OC代碼, JS調用OC中的方法ip
1.須要自定義href協議, 能夠指定方法名和參數: 而後將OC方法和參數值拼接在一個URL中
/* 通用url的設計
1> 協議固定: hm:
2> 通常有2個參數 2.1> 方法名 2.2> 方法參數
*/
window.location.href = 'hm:saveImageToAblum:&' + this.src
2.使用 <UIWebViewDelegate>代理方法攔截請求, 每發送請求以前系統會自動調用該代理方法:
/**
調用 : 每當webView發送一個請求以前都會先調用這個方法
request : 即將發送的請求
BOOL : Yes : 容許發送這個請求 No : 禁止發送這個請求
navigationType : 是否在新窗口中打開
*/
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// a) 在這個代理方法中攔截JS請求的URL
// b) 從URL中截取相應的方法名和參數
// c) 調用方法,傳遞參數
return YES/NO;
}