JS在与lua的交互心得
最近在写一个项目,前端技术使用的是Vue,在与lua的交互过程,是通过一个公共JS,前端调用公共js的方法给lua发送命令,lua接到命令,去执行一些方法,然后又通过回调返回到了前端,由于是第一次写这样的项目,遇到了一些坑,总结下。
1、提示
null is not an Object (evaluating 'this.msgList')
在解析Vue中的数据的时候,在回调函数中,this的指向丢失,导致报错,最终采用了箭头函数的方法来解决了这个问题
2、
null is not an Object (evaluating 'document.getElementById')
在Vue的methods里面去操作dom遇到了问题,考虑是dom节点还没有的情况下拿不到dom,这个选择要再mounted里面来执行
3、
var cbDispatcher = null;
var eventDispatcher = null;var H5SDK = {};H5SDK.get=function(){}H5SDK.put=function(){}
由于在公共变量里面有三个变量,lua也有引用其中的方法,我把这个方法改写成了Es6的,export default H5SDK,在lua在引用方法的时候就找不到了 ,因此最后的解决方案是在html里面引入了JS。
4、
在Vue的created里面给lua发送了多个命令同一个请求后台数据的命令,但lua同时只能处理一个命令,因此只会执行最后一次发送的命令,覆盖了前面几次的命令,解决方法呢,就是采用了定时器来延迟执行。
5、页面无法滚动
一方面lua代码禁止了view的滚动,另一方面,前端也写了overflow:hidden。
解决方法:前端删除overflow:hidden,lua:View.scrollEnable=YES,并且webview的自适应改为false,防止webview下面的内容暴露。
6、请求回来的数据格式和前端需要的数据不一致,这时候就要做容错处理,判断下如果不是需要的数据return就可以了。
7、前端和客户端lua交互的请求数据方式封装为一个方法,url,params由web端来传,主要post与get请求的不同处理。
8、客户端在访问本地开发环境的时候图片加载出来是框框,编译完了之后,访问html页面也一样,
解决办法:在updated里面加入了window.onload之后再与乱交互,保证静态资源的加载;还有个问题,就是请求后台的数据发送命令的时候偶现性不加载图片,发现一旦发送命令,就把js引擎的 http线程给cancel掉了,因此要保证静态资源加载完毕再发送命令,也可以绕过去依赖计数线程来达到异步加载。
9、乱点击会挂掉,处理方式客户端解答是跳过乱点击报的错就ok了,有更好的方法,欢迎留言。
10、需求左侧left要和右侧一样 在Vue中动态获得元素的高度,在updated生命周期中,只能获取上个状态。
最后解决方案是使用display:flex;把设置的高度全部去掉,使用的是
align-item:stretch
stretch
(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
然后给容器设置了个最小高度:window.innerHeight。
如果觉得文章不错,可以给小编发个红包给予鼓励.
转载于:https://www.cnblogs.com/yiyi17/p/8760769.html
JS在与lua的交互心得相关推荐
- 转载:js和as间的交互
转载一: 提及AS3与外部脚本的交互,笔者认为可以总结成两种.一是AS3调用外部函数,二是外部脚本调用AS3函数.无外乎就 这两种.在调用函数的同时,我们还可以向函数传递一些参数.这就达到了传递数据的 ...
- doo14 视图和js的按钮上面的交互
doo14 视图和js的按钮上面的交互 自定义按钮上面的属性应用操作 js代码块 odoo.define({var FormController = require('web.FormControll ...
- java内嵌chrome浏览器,JS和JAVA如何进行交互
2019独角兽企业重金招聘Python工程师标准>>> 为了上线之后,客户不用安装chrome (主要还是客户用IE.firefox居多),我们现在开发都是使用chrome ,为了提 ...
- flash和js通过什么类如何交互
flash和js通过类ExternalInterface进行交互. ExternalInterface有两个方法call和addCallback: 1.ExternalInterface.addCal ...
- objective-c与Lua的交互(一)
objective-c与Lua的交互(一) 第一步的学习转自于: ios开发愤怒的小鸟的Lua语言:Wax框架详解(一) http://www.duote.com/tech/ios/19919_3.h ...
- 使用node js 和天猫精灵 开发交互
这里写自定义目录标题 使用node js 和天猫精灵 开发交互 准备工作 最好的教程 使用node js 和天猫精灵 开发交互 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你 ...
- java,js,jstl,EL的简单交互
EL全名Expression Language.EL提供了在JSP脚本编制元素范围外使用运行时表达式的功能. 脚本编制元素是指页面中能够用于在JSP文件中嵌入java代码的元素. JSP标准标记库(j ...
- Netflix发布Polly.JS,一个用于HTTP交互的开源库
Netflix最近发布了Polly.JS,一个用于记录.重放和模拟HTTP交互的开源库. \\ Polly利原生机浏览器API来模拟请求和响应,以便减少配置工作,为开发人员提供一种管理HTTP请求的机 ...
- Ember.js如何与后端服务交互?adapter、store、ember data关系揭秘
2019独角兽企业重金招聘Python工程师标准>>> 文章来源:Ember Teach 本项目讲解如何使用adapter.EmberData以及怎么连接到本地数据库. 项目简介 主 ...
最新文章
- DocumentManager 在标签位置显示气泡框 z
- 一个含有crc32算法的CrackMe分析
- [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
- Android开发的之基本控件和详解四种布局方式
- vue表格刷新数据_Vue.js+Layer表格数据绑定与实现更新的实例
- 自己动手写PHP MVC框架
- SqlDependency不起作用
- 【H.264/AVC 句法和语义详解】(十二):H264中的帧场编码模式详解
- 如何将Figma转成蓝湖教程
- 问题 B: PIPI发工资(拓扑排序遍历)
- Excel催化剂开源第35波-图片压缩及自动旋转等处理
- 作为硅谷大佬,大战周鸿祎是怎样的一种体验?|独家采访
- PCIe 分类、速度
- 扇贝python编程课 百度云,扇贝编程python课程分享
- 格签名相似概念区分: SVP、SIS、LWE的区分
- 2、GO语言多进程编程
- STM32 擦除flash失败问题
- 炫酷3D相册❤ 520七夕情人节表白网页制作❤(HTML+CSS+JavaScript)
- SaaSBase:最受欢迎的ERP软件有哪些
- K2 BPM_“流程平台可以解决哪些问题?”,企业关心的都在这里(二)