iOS之路21-JS與OC交互

一: 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;

}

相關文章
相關標籤/搜索