Mac Webview OC与JS交互实现

1、首先,需要定义一个JS可识别的变量(如external)用于OC与JS交互

- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame
{
    [self.windowScriptObject setValue:self forKey:@"external"];
}

2、JS调用OC代码

第一步、在OC中声明对JS开放的函数,如下:

+ (BOOL)isSelectorExcludedFromWebScript:(SEL)selector {  

    if ( selector == @selector(Login:password:)) {
        return NO;
    }
    return YES;
}  

第二步、建立名称索引

+ (NSString *) webScriptNameForSelector:(SEL)sel {  

    if (sel == @selector(Login:password:)) {
        return @"Login";
    }
    return nil;
} 

这样,在JS中只要使用external.Login(account,password)就是调用OC中的[self Login:account password:password]。

3、OC调用JS的函数

- (id)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)arguments;
- (void)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)arguments{

    if (arguments.count == 0
        || arguments == nil)
    {
        return;
    }

    @try {
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.windowScriptObject callWebScriptMethod:name withArguments:arguments];
        });

    }
    @catch (NSException *exception) {
        NSLog(@"ex=%@",exception);
    }

}

4、OC执行JS代码

方法一、调用WebScriptObject的方法

- (id)evaluateWebScript:(NSString *)script;

方法二、调用Webview的方法

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

5、如何调试Webview

[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"WebKitDeveloperExtras"];

原文地址:https://www.cnblogs.com/yongbufangqi1988/p/8463378.html

时间: 2024-08-27 19:23:06

Mac Webview OC与JS交互实现的相关文章

iOS开发——网络开发OC篇&OC与JS交互简单案例

OC与JS交互简单案例 网页开发中三个重要的知识,这里就不详细介绍了! Html:页面代码 Css:样式 javascript:响应 先来看一段html的简单代码,里面涉及了上面的三个部分(很简单) 1 <html> 2 <!--描述网页信息--> 3 <head> 4 <meta charset="UTF-8"/> 5 <title>hello world</title> 6 <script> 7 f

oc与js交互-----WKWebView

这些天研究了一些oc与js交互的问题,纯属个人理解 oc与js交互是跨平台iOS与javaScript的通信.公司为了开发节约成本,本来安卓,与iOS两个版本的app开发,利用js通过webView的加载只需要做一些交互工作就使得javaScript书写的页面可以同时在安卓与iOS上使用可谓一举两得. WKWebView里边的方法 1.OC中调用js方法(我认为是oc向js中传值) 使用的是 <span style="background-color: rgb(255, 255, 255)

OC与JS交互之WebViewJavascriptBridge

上一篇文章介绍了通过UIWebView实现了OC与JS交互的可能性及实现的原理,并且简单的实现了一个小的示例DEMO,当然也有一部分遗留问题,使用原生实现过程比较繁琐,代码难以维护.这篇文章主要介绍下开源库WebViewJavascriptBridge的实现原理和使用方法,并用此开源库重写之前的示例,同样,本文的示例代码我会在文章后面给出欢迎star 我们在上一篇文章结尾处简要介绍了WebViewJavascriptBridge的实现原理也是基于UIWebView的协议拦截,通过阅读源码发现,中

Webview Android与js交互

Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android(Java)代码 4) HTML中js调用Android(Java)代码(带参数) 下面示例总结这四种情况,直接上干货:

OC 和 js 交互

首先导入 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #d12f1b } span.s1 { color: #78492a } span.s2 { } #import <JavaScriptCore/JavaScriptCore.h> 声明 对象 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #bb2ca2 } spa

通过WebViewJavascriptBridge实现OC与JS交互

在.m方法当中,申明一个WebViewJavascriptBridge属性: 1 @interface ExampleAppViewController () 2 @property WebViewJavascriptBridge* bridge; 3 @end 4 5 @implementation ExampleAppViewController 6 7 8 - (void)viewDidLoad { 9 10 11 UIWebView* webView = [[UIWebView allo

WebView用法与JS交互(2) 响应webview中的图片点击事件

参考:http://blog.csdn.net/wangtingshuai/article/details/8635787 js代码 // 注入js函数监听 private void addImageClickListner() { // 这段js函数的功能就是,遍历所有的img几点,并添加onclick函数,函数的功能是在图片点击的时候调用本地java接口并传递url过去 contentWebView.loadUrl("javascript:(function(){" + "

WebViewJavascriptBridge源码探究--看OC和JS交互过程

今天把实现OC代码和JS代码交互的第三方库WebViewJavascriptBridge源码看了下,oc调用js方法我们是知道的,系统提供了stringByEvaluatingJavaScriptFromString函数 .现在主要是了解js是如何调用oc方法的,分享下探究过程. 源码不多,就一个头文件WebViewJavascriptBridge.h和实现文件WebViewJavascriptBridge.m, 和一个js文件,实现在js那边可以调用oc方法,也可以在oc里面调用js方法. 先

WebViewJavascriptBridge Android端 乱码问题(webview与页面js交互 传输参数乱码)

场景:Android 项目中webview 加载 远程html url地址,并显示.点击html 按钮后,通过js 传送参数给 webview .原生Android代码中即可获取参数并做处理(根据业务而定).在传输中遇到乱码问题. 乱码主要针对于中文. WebViewJavascriptBridge 交互使用就不重复了,可以参考 http://www.cnblogs.com/whoislcj/p/6104015.html html端js 代码: function setupWebViewJava