1. 程式人生 > >iOS開發中oc程式碼響應js網頁點選事件的方法

iOS開發中oc程式碼響應js網頁點選事件的方法

在APP開發中我們經常碰到一種情況:app開啟一個網頁,網頁裡有些按鈕需要我們去響應,比如開啟一個遊戲介紹的網頁,點選網頁中的“立即下載”按鈕,app需要跳轉到對應下載介面。那麼我們怎麼響應?程式碼如下:

-(void)makeWeb

{

self.webView = [[UIWebViewalloc] initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, self.view.frame.size.height - 200)];

self.webView.backgroundColor = [UIColorwhiteColor

];

self.webView.scalesPageToFit = YES;

self.webView.delegate = self;

NSString *webPath = [[NSBundlemainBundle] pathForResource:@"ocandjs"ofType:@"html"];

NSURL *webURL = [NSURLfileURLWithPath:webPath];

NSURLRequest *URLRequest = [[NSURLRequestalloc] initWithURL:webURL];

    [self.webViewloadRequest

:URLRequest];

    [self.viewaddSubview:self.webView];

    //核心方法如下

JSContext *content = [self.webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    content[@"getUrl"] = ^() {

NSLog(@"js呼叫oc---------begin--------");

NSArray *thisArr = [JSContextcurrentArguments];

for (

JSValue *jsValue in thisArr) {

NSLog(@"=======%@",jsValue);

            [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:[NSStringstringWithFormat:@"%@",jsValue]]];

        }

NSLog(@"js呼叫oc---------The End-------");

//[self.webView stringByEvaluatingJavaScriptFromString:@"show();"];

    };

}

這是app端的程式碼,程式碼通過

JSContext *content = [self.webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    content[@"getUrl"] = ^() {

    };

這個方法來識別js程式碼中含有的getUrl名字的引數。

在html網頁中,我們在點選按鈕響應的的方法裡做如下定義:

function btnClick()

            {

                getUrl("http://www.baidu.com");

            }

注意:上面程式碼是網頁端寫的,其中getUrl與oc程式碼中content[@"getUrl"]對應,這樣oc程式碼才能識別。