iOS 在UIWebView中JavaScriptCore實(shí)現(xiàn)OC與JS的交互

在webView中實(shí)現(xiàn)oc與js的交互一般有兩種方式:

1、攔截點(diǎn)擊事件的URL進(jìn)行交互

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

NSString *path=[[request URL] absoluteString];

if ([path isEqualToString:[NSString stringWithFormat:@"%@/ddhong/user/bindMadaiAccountSuc.jsp",kBaseUrl]]) {

....進(jìn)行事件處理.......

}

if (navigationType == UIWebViewNavigationTypeLinkClicked)

{

NSString *path=[[request URL] absoluteString];

if ([path isEqualToString:[NSString stringWithFormat:@"%@/application/skiptoalllistcreditloan",kBaseUrl]]) {

.....進(jìn)行事件處理......

}

}

return YES;

}

2、用JavaScriptCore實(shí)現(xiàn)交互
導(dǎo)入頭文件:

#import<JavaScriptCore/JavaScriptCore.h

@protocol JSObjcDelegate <JSExport>

//這兩個(gè)方法的名字必須與js頁(yè)面里面調(diào)用的方法名字一致

- (void)jumpPublishDynamic;

- (void)jumpLogin;

@end

@interfaceViewController()

@property(nonatomic,strong)UIWebView*webView;

@property(nonatomic,strong)JSContext *jsContext;

@end

@implementation ViewController

- (void)viewDidLoad {??

???? [superviewDidLoad];? ?

???? [selfCustomUI];

}

- (void)CustomUI{

?? self.webView = [[UIWebViewalloc]initWithFrame:self.view.bounds];

self.webView.delegate =self;?

? [self.view addSubview:_webView];

NSURL*url = [[NSBundlemainBundle] URLForResource:@"untitled3"withExtension:@"html"];

? [self.webView loadRequest:[NSURLRequestrequestWithURL:url]];

}

- (void)webViewDidFinishLoad:(UIWebView*)webView{

self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

//此處的JSInterface必須與js頁(yè)面調(diào)用方面的類名名字一致

self.jsContext[@"JSInterface"] = self;

self.jsContext.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {

context.exception = exceptionValue;

NSLog(@"異常信息:%@", exceptionValue);

};

}

//js調(diào)用oc方法的實(shí)現(xiàn)

#pragma mark - JSObjcDelegate

- (void)jumpPublishDynamic {

[self pushController:[PublishViewController class] withTitle:@""];

}

- (void)jumpLogin {

[self pushController:[LoginViewController class] withInfo:nil];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、簡(jiǎn)介 近兩年隨著HTML5的迅速發(fā)展與日趨成熟,越來(lái)越多的移動(dòng)開(kāi)發(fā)者選擇使用HTML5來(lái)進(jìn)行混合開(kāi)發(fā),不僅節(jié)約...
    RainyGY閱讀 2,002評(píng)論 1 12
  • 隨著H5技術(shù)的興起,在iOS開(kāi)發(fā)過(guò)程中,難免會(huì)遇到原生應(yīng)用需要和H5頁(yè)面交互的問(wèn)題。其中會(huì)涉及方法調(diào)用及參數(shù)傳值等...
    Chris_js閱讀 3,234評(píng)論 1 8
  • 項(xiàng)目開(kāi)發(fā)中,會(huì)推一些活動(dòng)供用戶參加,活動(dòng)頁(yè)面一般都是用h5或者web頁(yè)面,這活動(dòng)頁(yè)面有時(shí)候需要跟移動(dòng)端有交互操作,...
    hnxyzhw閱讀 734評(píng)論 0 4
  • 一、簡(jiǎn)介 近兩年隨著HTML5的迅速發(fā)展與日趨成熟,越來(lái)越多的移動(dòng)開(kāi)發(fā)者選擇使用HTML5來(lái)進(jìn)行混合開(kāi)發(fā),不...
    寶寶teacher閱讀 2,448評(píng)論 3 15
  • 鏈接:http://ios.jobbole.com/89330/ 其實(shí)一直想給大家整理一下JS與OC的交互,但是沒(méi)...
    Kean_Qi閱讀 415評(píng)論 0 1

友情鏈接更多精彩內(nèi)容