转载 iOS js oc相互调用(JavaScriptCore)

iOS js oc相互调用(JavaScriptCore)

从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了。

下面我们就简单了解一下这个框架

首先我导入framework

方法如下

点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework

选中JavaScriptCore.framework后 点击右下角Add 添加完成

好 创建完成之后我们导入一下头文件

[objc] view plain copy

  1. #import <JavaScriptCore/JavaScriptCore.h>

点进去 会看到如下几个方法

#import "JSContext.h"

#import "JSValue.h"

#import "JSManagedValue.h"

#import "JSVirtualMachine.h"

#import "JSExport.h"

这些方法我们等会再细讲

下来我们创建一个UIWebView  用来测试

创建UIWebView

[objc] view plain copy

  1. UIWebView *myWebView;

初始化,添加,打开网址

[objc] view plain copy

  1. //初始化webview
  2. myWebView=[[UIWebView alloc]initWithFrame:CGRectMake(0, 22, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-22)];
  3. myWebView.delegate=self;
  4. //添加webview到当前viewcontroller的view上
  5. [self.view addSubview:myWebView];
  6. //网址
  7. NSString *httpStr=@"https://www.baidu.com";
  8. NSURL *httpUrl=[NSURL URLWithString:httpStr];
  9. NSURLRequest *httpRequest=[NSURLRequest requestWithURL:httpUrl];
  10. [myWebView loadRequest:httpRequest];

运行效果如下

下面我们来实现UIWebView的几个代理方法

首先我们看下它的代理方法

[objc] view plain copy

  1. @protocol UIWebViewDelegate <NSObject>
  2. @optional
  3. - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
  4. - (void)webViewDidStartLoad:(UIWebView *)webView;
  5. - (void)webViewDidFinishLoad:(UIWebView *)webView;
  6. - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
  7. @end

每个方法的作用等会在带里面做注释

首先我们添加协议

[objc] view plain copy

  1. @interface ViewController ()<UIWebViewDelegate>

实现代理方法

[objc] view plain copy

  1. #pragma mark --webViewDelegate
  2. -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
  3. {
  4. //网页加载之前会调用此方法
  5. //retrun YES 表示正常加载网页 返回NO 将停止网页加载
  6. return YES;
  7. }
  8. -(void)webViewDidStartLoad:(UIWebView *)webView
  9. {
  10. //开始加载网页调用此方法
  11. }
  12. -(void)webViewDidFinishLoad:(UIWebView *)webView
  13. {
  14. //网页加载完成调用此方法
  15. }
  16. -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
  17. {
  18. //网页加载失败 调用此方法
  19. }

每个方法是什么时候调用都在注释里面

下来我们先尝试用oc调用一下js方法

[objc] view plain copy

  1. -(void)webViewDidFinishLoad:(UIWebView *)webView
  2. {
  3. //网页加载完成调用此方法
  4. //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)
  5. JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
  6. NSString *alertJS=@"alert(‘test js OC‘)"; //准备执行的js代码
  7. [context evaluateScript:alertJS];//通过oc方法调用js的alert
  8. }

执行效果如下:

好了,我们已经实现了iOS 调用js

js调用iOS 在下节

http://blog.csdn.net/lwjok2007/article/details/47058795

时间: 2024-11-13 01:17:42

转载 iOS js oc相互调用(JavaScriptCore)的相关文章

iOS js oc相互调用JavaScriptCore(一)

原址:http://blog.csdn.net/lwjok2007/article/details/47058101 1.普通调用 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framewor

iOS js oc相互调用(JavaScriptCore)

从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framework后 点击右下角Add 添加完成 好 创建完成之后我们导入一下头文件 #import <JavaScriptCore/JavaScr

iOS js oc相互调用(JavaScriptCore)(二)

http://blog.csdn.net/lwjok2007/article/details/47058795 上节地址 http://blog.csdn.net/lwjok2007/article/details/47058101 接着上节我们讲到的iOS调用js 下来我们使用js调用iOS js调用iOS分两种情况 一,js里面直接调用方法 二,js里面通过对象调用方法 首先我们看第一种,直接调用方法. 其中用到了iOS的block 上代码 [objc] view plaincopy -(v

iOS:在OC中调用JS脚本:示例一

1.首先导入JavaScriptCore.framework这个框架 2.创建webView.设置代理.请求手机端百度 #import "ViewController.h" #import <JavaScriptCore/JavaScriptCore.h> #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width #define SCREEN_HEIGHT [UIScreen mainScreen].bound

ASP.NET的后台代码和前台JS代码相互调用

在实际的Web开发中,我们可能会常常遇到后台调用前台JS代码或者前台JS调用后台代码的情况.今天就把比较实用的前后台相互调用的方法总结出来和大家分享. <1>后台代码调用前台JS代码 一.说到后台代码调用前台的JS代码很多人首先就会想到使用 ClientScript.RegisterStartupScript()方法,该方法主要是注册启动脚本文本,即在后台执行调用前台JS代码 该方法有两个重载, 1.ClientScript.RegisterStartupScript(Type type,st

IOS:ios和javaScript相互调用 oc和js

文章来自:http://blog.csdn.net/intbird 相比android和js进行交互,ios和js进行交互是比较方便的; android和js进行交互,请看这里: http://blog.csdn.net/intbird/article/details/42295453 android和js进行交互框架,看这里: http://blog.csdn.net/intbird/article/details/46461203 这里看ios和js的交互 0.上个丑图 1,oc调用js,超

安卓ios和angularjs相互调用解决首次调用ios传递标题失败的问题

1.angular 调用客户端方法放在 try catch中 try { js_invoke.showShareDialog(angular.toJson(obj));  // 在这里放客户端的方法即可 } catch(e) { console.log('Recommend share',obj); } 2.客户端调用angular的方法,注意方法需全局可以才能正常调用 在首页index.html中声明方法 var goBack = function() { return false }; 在具

Flash与JS之间相互调用以及参数传递

[AS3]ExternalInterface.call传多个参数的写法代码示例 import flash.text.TextField; var param1:uint = 20; var param2:uint =17; var result:uint = ExternalInterface.call("addNumbers", param1, param2); function callMe(str:String):void{ //outtext.text=str; var out

iOS JS 和 OC交互 / JS 和 native 相互调用

现在app 上越来越多需求是通过UIWebView 来展示html 或者 html5的内容, js 和 native OC代码交互 就非常常见了. js 调用 native  OC代码 第一种机制 (1)最常用的是 利用 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationT