ios js交互

第一章 javaScript简介

≡放荡痞女 提交于 2019-11-29 05:01:32
1.javaScript概念 javaScript是基于对象的,事件驱动的,跨平台的,解释型客户端脚本语言 1.1,基于对象的: 我们先来理解对象的概念,什么是对象昵?现实生活中,我们把每一种事物都可以叫对象。每一个对象都有自己的外在特征和功能,例如一部手机是一种对象,它的外在特征有颜色,重量,大小等,手机的功能可以打电话,发信息,视频等。于是我们把一个对象的外在特征称为“属性”,功能称为“行为方式”,也可以叫方法。因此,所有的对象都包含了属性和方法这两种东西。 于是我们知道了,对象有属性和方法。使用对象,利用对象的功能(方法),我们可以做很多事,比如用手机打电话,用笔可以写字,用电饭锅可以做饭,用刀切菜...... js中,也有很多现成的对象供我们使用,使用这些对象,就可以实现很多功能。因此,我们说,js是基于对象来实现许多功能的一门语言 1.2,事件驱动的: 我们在浏览很多网站的时候,通常要对很多HTML元素进行操作,例如点击一个注册按钮注册会员,点击登录按钮登录网站,在文本框中输入用户名时自动检测用户名是否已存在等,很多功能的实现,需要建立在某些鼠标或键盘或文本框的操作上,才能得以实现。而js为我们提供了一些事件机制,利用这些事件机制,我们可以让HTML的元素通过不同的事件操作,实现需要的功能。 1.3,跨平台的: js的代码,可以在不同的系统及平台中运行

javascript与Objective-C的交互

大城市里の小女人 提交于 2019-11-28 22:31:08
在iOS开发中, 苹果api味我们提供了多种javascript和Objective-C交互的方法, 使用还是比较简单的. 1. 普通的方式实现javascript和Objective-C交互 1.1 oc原生代码调用js代码 通过webView的stringByEvaluatingJavaScriptFromString:方法调用js代码. 此方法可以无限制的执行任何的js代码. /** 原生调用js, 普通的方法: * 通过webView的stringByEvaluatingJavaScriptFromString:方法, 可以无限制的执行任意的js代码,可以通过js代码操控webView上面的任意元素, 也可以直接通过js调用webView中的js代码. 实现从原生代码到javascript的联系. * */ [self.webView stringByEvaluatingJavaScriptFromString:@"showAlert('javascript message')"]; [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('abshdfnb').style.backgroundColor = 'blue';"]; 1.2 通过js调用js代码

JS实现多语言方式

痴心易碎 提交于 2019-11-28 11:50:23
应用场景: 在不同移动平台(IOS,Android)上,建立一套与HTML页面通讯框架;主要业务逻辑使用HTML开发;想支持多语言开发。 动机: 通过主动发消息的方式,在页面完成初始化前,获取当前语言选项,并且根据该语言选项,调用对应的JS文件(每种语言对应一个JS文件)解析页面。 实现细节: 向本地语言框架发请求获取语言种类; $(document).on("pageinit",function(){ /*Kaiwii 向本地代码发请求获取当前语言种类*/ }); 本地语言框架触发回调函数(JS方法):根据语言选项,动态将对应语言的JS文件嵌入HTML并且触发其执行; /*Kaiwii 本地语言框架回调本方法*/ function GetLanguageCodeCallBack(Jstring,ERROR){ var i18File = $("script[name='i18']"); if(i18File.length==0){//没有成功加载js文件 var i18FileLink = "<script name='i18' src='../../js/i18.js'></script>"; switch (Jstring){ case "EN": i18FileLink = "<script name='i18' src='../../js/i18.js'></script

程序员笔记|JSBridge框架解决通信问题实现移动端跨平台开发

时光总嘲笑我的痴心妄想 提交于 2019-11-26 00:09:57
一、跨平台开发是趋势 目前主流的移动端平台主要是Android和iOS,为了尽可能复用代码和节省开发成本,各大巨头都开发了自己的跨平台框架,比如Facebook的React-Native、阿里的Weex、Cordova,以及今年Google开发者大会上介绍的Flutter框架。这些框架各有优缺点,但是到目前为止都没有大规模地推广开来,在我看来主要有以下几个原因: 1、开发者生态圈还不够成熟 RN是三大跨平台框架中关注人最多、生态最活跃的框架,但是到目前为止也没有到1.0版本(最新的release是0.57.8),更别说作为后来者的Weex和Flutter了。生态不成熟,意味着开发文档少,可以使用的开源控件少,比如在RN上想做一个最基本的下拉刷新和上拉加载更多的listview都比较费劲。Weex已经贡献给Apache,很久没有更新release了。Flutter现在还在beta版本,其发展还有待观察。 2、性能问题 虽然这几大框架都对渲染性能做了优化,但是相比原生还是差一些,RN和weex都自己实现了一个浏览器内核(JSCore),因此多了一层js解析,渲染较慢。比如RN的listview,如果数据量太大就会出现卡顿。Flutter虽然自带绘制引擎,但是跟原生比起来还是有一些距离。 3、兼容问题 虽然这三大平台的初衷都是为了跨平台(Write/Learn once, run