js 与 ios Android交互
一.android 交互
1.js调用webview
在android API Level 17及以上的版本中,就会出现js调用不了android的代码,这是版本兼容的问题,需要在调用的方法上面加一个注解:@JavascriptInterface,这个注解需要导入一个包:import android.webkit.JavascriptInterface;
public void onCreate(Bundle savedInstanceState) {
//给js设置调用的方法
this.appView.addJavascriptInterface(new JavaScripdtObject(), "android");//这个android是注入对象
}
/**
* 供js调用的对象方法
* */
public class JavaScripdtObject {
@JavascriptInterface//加入这个注解
public void runAndroidMethod(String str) {
Toast.makeText(MainActivity.this, "被js调用"+str, Toast.LENGTH_SHORT).show();
}
}
js 代码
<script>
window.android.runAndroidMethod(str);
</script>
2. android调用 js 这个简单
this.appView.getSettings().setJavaScriptEnabled(true);
this.appView.loadUrl("javascript:view.test()");
二. js 调用ios
- (void)addShowTypeView:(NSString *)nibName{
UIApplication *app = [UIApplication sharedApplication];
AppDelegate *delegeat = app.delegate;
self.creativeView = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil][];
__weak __typeof__(self)self_weak = self;
//返回
self.creativeView.backBtnBlock = ^(UIView *sideView){
[self_weak backBtnClickMainView:self_weak.webView View:sideView];
};
self.creativeView.frame = CGRectMake(kScreenWidth, , kScreenWidth/, kScreenHeight);
[delegeat.window addSubview:_creativeView];
[self TranslationViewAnimationMainView:self.webView rightView:self.creativeView];
}
#pragma mark - UIWebView代理
/**
* 网页的JS动态调用OC的方法!!!
*/
// 此代理方法与加载页面有关系
- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [[request URL] absoluteString];
DLog(@"url = %@",urlString);
NSArray *urlComps = [urlString componentsSeparatedByString:@"://"];
if([urlComps count] && [[urlComps objectAtIndex:] isEqualToString:@"objc"])
{
if (urlComps.count > ) {
if ([urlComps[] hasPrefix:@"showTypeView"]) {
NSArray *arr = [urlComps[] componentsSeparatedByString:@"&"];
if (arr.count > ) {
SEL sel = NSSelectorFromString(arr[]);
if ([self respondsToSelector:sel]) {
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:sel withObject:((arr.count>)?arr[]:nil)];
# pragma clang diagnostic pop
}
}
}
else if ([urlComps[] hasPrefix:@"showshareView"]) {
NSArray *arr = [urlComps[] componentsSeparatedByString:@"&"];
if (arr.count > ) {
SEL sel = NSSelectorFromString(arr[]);
if ([self respondsToSelector:sel]) {
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:sel withObject:((arr.count>)?arr[]:nil)];
# pragma clang diagnostic pop
}
}
}
}
}
return YES;
}
js 代码
document.location="objc://showTypeView:&1";
js 与 ios Android交互的更多相关文章
- Ios开发之 -- js和ios的交互
==WebViewJavascriptBridge的介绍== #下载:https://github.com/marcuswestin/WebViewJavascriptBridge #关于WebVie ...
- JS与IOS、Android的交互
一.JS与Android 放在了assets文件夹下了(注意若使用的是AS这个IDE,assets文件夹应放在src/main目录下) <!DOCTYPE html> <html&g ...
- JS与IOS、安卓的交互
最近做的项目中涉及到了与安卓和ios的交互问题,对于一个新手来说,多多少少会有点迷糊.在调用安卓和ios的callback回调时,很轻松的就调用成功了,而且,步骤也不那么繁琐.刚开始,只知道那样使用可 ...
- Android混合开发之WebViewJavascriptBridge实现JS与java安全交互
前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...
- Ionic中使用Chart.js进行图表展示以及在iOS/Android中的性能差异
Angular Chart 简介 在之前的文章中介绍了使用 Ionic 开发跨平台(iOS & Android)应用中遇到的一些问题的解决方案. 在更新0.1.3版本的过程中遇到了需要使用图表 ...
- iOS中JS 与OC的交互(JavaScriptCore.framework)
iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...
- 毫无保留开源我写的:IOS Android Ipad 多点触摸通用js 库
毫无保留开源我写的:IOS Android Ipad 多点触摸通用js 库 在线演示地址: http://m.yunxunmi.com/ 支持 IOS Android Ipad 等不同操作系统的手持或 ...
- iOS开发:JavaScriptCore.framework的简单使用--JS与OC的交互篇
iOS7之后苹果为众猿推出了JavaScriptCore.framework这个框架,这个框架为大家在与JS交互上提供了很大帮助,可以在html界面上调用OC方法并传参,也可以在OC上调用JS方法并传 ...
- 关于前端本地压缩图片,兼容IOS/Android/PC且自动按需加载文件之lrz.bundle.js
一.介绍说明主要特点: ①在前端压缩好要上传的图片可以更快的发送给后端,因此也特别适合在移动设备上使用. ②兼容IOS/Android,修复了IOS/Android某些版本已知的BUG. ③按需加载文 ...
随机推荐
- Linux入门(16)——Ubuntu16.04下配置sublime text 3使用markdown
sublime text 3安装两个插件: MarkDown Editing OmniMarkupPreviewer 有的人使用 MarkDown Editing markdownpreviewer ...
- [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...
- 【JAVA零基础入门系列】Day10 Java中的数组
什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...
- LeetCode 346. Moving Average from Data Stream (数据流动中的移动平均值)$
Given a stream of integers and a window size, calculate the moving average of all integers in the sl ...
- 《mysql必知必会》读书笔记--存储过程的使用
以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做<MySQL必知必会>,看了之后对MySQL的高级用法有了一定的了解.以下内容只当读书 ...
- 机器学习之二:K-近邻(KNN)算法
一.概述 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中 ...
- A - Wrestling Match HDU - 5971
Nowadays, at least one wrestling match is held every year in our country. There are a lot of people ...
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest H. Delete Them
H. Delete Them time limit per test 2 seconds memory limit per test 512 megabytes input standard inpu ...
- 浏览器怎么解析一个hmtl文档
注意 link里面的css文件是并行请求下载的 script里面的js文件是同步请求下载的 html页面中的语句都是从上往下执行的 浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到 def ...
- jquery IE6 下animate 动画的opacity无效
jquery IE6 下animate 动画的opacity无效,其实是有效的,因为IETester的一个小BUG 原生IE6 没问题...呵呵~~