javascript干货,javascript基本

iOS WKWebView与H5交互,JS调OC传值、OC调JS传值、进度条加载等(干货满满)

WKWebView是苹果在iOS 8之后推出的框架,关于它比webview的优势这里就不讲了。主要说一下与JS交互的问题,其实WKWebView已经内置了JS与OC的互调、传值等方法,使用起来也非常方便,下面就来细细的探讨一下以及自己遇到过的坑...

站在用户的角度思考问题,与客户深入沟通,找到临武网站设计与临武网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟空间、企业邮箱。业务覆盖临武地区。

首先来看下WKWebView的初始化相关设置:

一、导入相关头文件、设置相关代理和属性

二、WKWebView初始化

注意:

楼主遇到的第一个坑:如果JS给OC传值为空,必须写成: postMessage(null),如果什么都不写,方法是调不通的。

1、在viewWillAppear中配置, addScriptMessageHandler name: "这里就是JS的方法,方法名必须统一"

楼主遇到的第二个坑:配置完后必须在 viewWillDisappear 中 remove,否则会造成循环引用,导致crash

2、实现 WKScriptMessageHandler 协议

以上就是JS调OC,JS向OC传值...

楼主这里举三个例子:

1: webview加载完成前,将用户信息传给js

2: webview加载完成,将相关信息传给js

3: 调用相册或相机时,将选择的图片请求后台接口,后台返回图片地址,将该地址回传给H5,H5将图片显示到页面上

第一个例子: webView加载完成前传值

因为 evaluateJavaScript 方法默认是在加载完成后调用,所以直接在页面开始加载中调用是传不过去的,这个时候怎么办呢? 我们可以让js端写两个方法, 第一个方法是js端开始向oc端发起信息需求的方法名,当oc端收到该方法名的时候,就去调用js端第二个获取传值的方法,把信息传递过去。

先让JS端写个方法调OC,OC实现方法后在这个方法内部给JS传值

在WKScriptMessageHandler协议中,实现该方法,然后在方法内部给JS传值

注意: 以上就是在Webview加载完成前传值,如果打印没报错,证明传参成功,如果web端没收到,让他把获取到值的方法写到页面中即可。

第二个例子: webView加载完成,传值给js

第三个例子: 传图片地址给js,js拿到后显示图片

1:拍照事件

1.1:将拍的照片请求上传图片接口,成功返回图片地址,并传值给H5

2: 从相册中选取照片

2.2:将相册中选取的照片请求上传图片接口,成功返回图片地址,并传值给H5

注意: getPhotoCallback 即为调用的方法名,后面传值格式必须为: ('') , 这里遇到了第三个坑, 如果方法名写为: 名称.名称 (例如:hello. getPhotoCallback),这种是调不通的,可以写成hello_getPhotoCallback的形式,一般的话最好还是定义一个完整的名称。 刚开始这个问题卡了比较久,一直调不通,在此记录一下.....

在 viewDidLoad 中注册进度条监听

开始加载网页

加载完成

加载失败

页面跳转失败

progressView懒加载

添加监听观察者

最后别忘记 removeObserver

Demo地址:

web前端开发培训去哪好?

如果是在广州的话,不知道你会不会有这样的感觉,以餐厅为里,各种高大上的酒楼琳琅满目,但是,在很多老城区西关,也充满了各具特色隐藏的美食,装修低调但充满惊喜,味道出品好不比大酒楼的差,这也从侧面反应广州的一种特色,不一定名气大牌面大的地方才有好东西,消费者的好口碑广州人最看重的部分,美食如此,培训机构也如此。

传统的培训机构,牌子大名气大的机构这里就不再阐述了,相信题主也会有所了解。

IT培训费用不便宜、时间也长,需要慎重考量,这里给几个建议点,需要题主自己亲自去对比考量,才能找到适合自己的IT培训机构:

1、成立时间:

这几年经济环境充满不确定性,很多机构都生存得不太稳定,无论大小机构,建议选择成立3-4年以上的,具有一定抗风险性,你懂的。

2、大班or小班教学:

IT学习门槛较高,如果是4-50人的大班学习,容易走神分神,或者做练习时,有问题无法和老师深入交流沟通,没法做得那么精细化管理和补课,50人,每人向老师提问1个问题的话,那么基本都不用讲课了。

3、是否有真实的实战项目:

很多机构都是用“仿站”来给学生布置作业和练习,但缺少了真实的实战项目,没有实战项目的话,缺少的是真正的开发经验,和流程体验,真实的项目还能写进简历作为开发经验。仿站的话几乎不行。

4、是否有严谨的考核制度和补课服务:

除了正常的学习、练习以外,考核与补习机制,也是十分重要的,如果考核机制和补课不完善,容易为后期埋下大坑,IT编程学习都是环环相扣的,根基打不好后面就很难学会。

5、是否有就业服务or就业保障:

【注意】,前面的可以不怎么看,这点一定要看,【就业保障】≠【包你就业】,大部分机构主要是辅助你去做模拟面试和简历指导,这是正常的,如果机构说【包你就业】,多半是销售在忽悠你。千万别幻想报了个培训,就随便学习,然后等分配工作,这是不可能的。

说了这么多,都是满满的干货,希望对大家有所帮助。

重磅:微信小程序发布WeUI.js 官方视觉组件库!

12月16日,微信正式发布了WeUI.js动态视觉组件库。WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,可以让用户的使用感知更加统一。WeUI.js动态视觉组件库包含了button、cell、dialog、progress、toast、article、actionsheet、icon等各式元素。

一、weui.js是什么?

weui.js是WeUI的轻量级JS封装,不需要依赖其它库,GZIP后仅有9.0 KB。

二、weui.js包含哪些组件?

actionsheet

alert

confirm

dialog

form

gallery

loading

picker

searchbar

slider

tab

toast

toptips

uploader

三、使用方式:

Github:

详细文档:

四、微信团队为何在此时公布官方视觉组件库:

1、为了更像微信OS

微信团队和之前的轻应用平台相比,不是简单为了给开发者和用户之间提供一个平台连接、也不是只为了做一个流量入口平台那么简单,而是为了打造一个完美的微信OS生态。当年百度、UC等平台推出的轻应用,更多的只是起到了一个平台倒流和连接的作用,并没有对开发框架和设计规范进行过如此统一的规范和要求。现在看来,最好的生态,当然是类似苹果安卓OS那样,所有的应用具备统一的开发框架和接近OS生态的完美体验。

2、为了极致的用户体验

从小程序内测到公测已经过去了三个月,我们有理由相信微信团队已经接到了不少小程序开发者的审核需求,这其中最让微信团队头疼的应该就是开发设计规范不符合微信团队的要求,达不到微信团队想要的那种用户体验。微信官方进一步推出Weui就是为了让所有开发者提交的小程序都能够接近微信APP的体验效果,从而给微信用户带去最佳的用户体验,这也是未来小程序生态能否提高8亿用户使用热度和频率的一个重要指标。

3、倒逼第三方服务商转型

微信团队在早年推出公众号的时候曾经推出过“开发者模式”,当时,微信团队鼓励第三方公司利用微信公众号开放的接口进行各种微应用的开发,比如:微网站、微商城,微工具等各种应用。但是,微信团队早期并没有对这些接入应用的开发框架和设计规范进行统一的定义和严格要求,导致每一个服务接入商基本都是按照自己的开发框架和设计标准进行开发来设计,使得市面上看到的这些应用页面呈现五花八门,用户体验极其糟糕,这也就造成了早期的应用服务被用户的接受度过低,同时无法给企业带来实际价值的症结所在。随着微信小程序的出现,微信团队重塑统一的开发框架和设计规范,倒逼这些第三方服务机构重新定义自己的跟随策略,按照新的开发规范重新提供新的平台服务。或许,现有的微信第三方服务机构格局将被打破,第三方服务机构将面临新一轮的洗牌。

五、WeUI.js给小程序开发者带来了哪些好处?

1、使用Weui设计出来的小程序如同用户使用微信客户端一样的视觉效果,可以让小程序的体验感更强。

2、使用Weui设计小程序更够提高开发者的开发效率,降低开发者的开发成本,从而让开发者更快的开发出符合规范的小程序。

3、使用Weui设计小程序如同您雇佣一支国内顶尖的设计团队帮您打造一个接近完美的视觉框架。

六、微信小程序给前端设计领域带来了那些影响和推动:

1、全平台兼容

微信小程序重新定义了APP,使得一款应用能够在android、iphone以及windows

phone中都能运行,对于前端来说实现了“一次编译,到处运行”的理念。

2、前端开发思维的改变

设计理念需要从传统的PC思维需要转向到以移动为先的思维,这其中主要考虑的差异化在于屏幕尺寸、网络带宽、输入设备等几个方面的不同。同时很多之前可以用于iOS与Android的控件需要在小程序上重新调整和创新。

3、推动前端技术的发展

微信小程序以其简单的开发环境,使以Javascript和HTML5为主的前端技术成为真正的主流,越来越多的人开始接触前端开发,为前端技术的发展贡献力量。

4、前端投入成本的增加

原本一家传统企业的前端开发人员需要覆盖PC端、移动端、APP应用等各种平台,微信小程序的出现会导致未来的前端开发人员还需要涉及小程序的前端开发设计,这在一定程度增加了前端开发人员学习和工作成本,同时也会给企业带来更多的人才投入成本。

5、前端人才的竞争更加明显

微信小程序的诞生会吸引一大批后台开发、APP开发的程序猿们加入前端开发大军,进一步冲击现有的前端开发人员的的知识结构,加剧前端开发岗位的竞争格局,迫使一些低端且知识结构不全面的前端开发人员面临被淘汰或者失业的风险。

6、全栈工程师会越来越吃香

随着微信小程序的出现,既懂后台,又懂前端的人才会越来越受到企业的重视和拥抱,特别对于创业团队和互联网企业来说,一个拥有全局思维、熟悉各种技术的人才非常重要。身为技术人员,我们需要不断拥抱变化,不断get新技能,努力成为一个全栈工程师。

微信正式发布WeUI.js动态视觉组件库,这意味着,大家可以在小程序里面,直接使用在官方设计文档附录中的视觉组件(而不需要额外引入其他库)。微信团队真的是用心在打造小程序生态,笔者也是真的在用心给大家带来更多干货,这也是笔者第一时间给大家带来的解读。码字不易,如果本文对你和你身边的朋友有所启发,感谢转发,你的支持是我们码字员最大的动力。

js 字符串超长部分显示'...'的二种方法(css和js)

具体实现方法不再重复,可参见: css:文字超长后显示为 "..."

采用js方法,需要处理一个核心问题,即字符的半角与全角问题,直接上干货:

threejs--模型动画线性控制

最近遇见一个比较有意思需求,需要将模型动画像视频一样可以线性拖拽播放动画进程、调节动画播放速度及随时暂停和播放动画。效果如下图

现在开始干货分享:

1. 初始化场景、相机、灯光、及模型加载的基本工作就不再赘述了,不太清楚的朋友看下threejs--初创项目。

2. 需要一个k好动画的模型,这个大家可以自己完成 

3. 我们需要一个可以自由滑动的滑块,用来记录动画播放的进程。还需要一个暂停和播放的按钮来控制动画的开启和暂停

p class="h_manualDrop"span装配进度/spaninput class="h_manualInstallVal" type="range" min="0" step="0.01"/p

4. 模型加载阶段 我们需要对模型动画进行处理

load.loader('./model/test.glb,function(gl){

scene.add(gl.scene)//将模型加入到场景中

mixer =new THREE.AnimationMixer(gl.scene);

action = mixer.clipAction(gl.animations[0]);

action.play();///

$('.h_manualInstallVal').attr('max',glb.animations[0].duration.toFixed(1));// 给滑块初始值

renderer.render( scene, camera );//渲染

});

5. 在刷新场景时同步滑块上动画进度

function onUpdate() {

let renderTime = clock.getDelta();

if (action) {// 实时更新滑块进度

$('.h_manualInstallVal').val(action.time);

}

if (mixer) {

mixer.update(renderTime);

}

requestAnimationFrame( onUpdate );

renderer.render( scene, camera );

controls.update();// 想让相机控制器有效 这个就需要实时更新控制器。必须在摄像机的变换发生任何手动改变后调用

}

6. 滑块添加事件,反向控制模型动画播放进度

$('.h_manualInstallVal').on('input',function (){

action.time=$(this).val()*1;

action.paused=true;

$('.h_manualDrop').attr('data-bool','act');

})

7.  播放暂停按钮控制动画的播放与暂停

$('.h_manualDrop').on(‘click',function (){// 动画 播放与暂停

if($(this).attr('data-bool')=='act'){

$(this).attr('data-bool','');

  action.paused=false;

}else{

$(this).attr('data-bool','act');

  action.paused=true;

}

});

结语:模型的自主操控之前已经讲过了,不再赘述,欢迎大家一起学习交流 需要测试模型的话 可以给我留言 


网站名称:javascript干货,javascript基本
文章来源:http://pwwzsj.com/article/phsgep.html