最近在写一个项目,前端技术使用的是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。

如果觉得文章不错,可以给小编发个红包给予鼓励.

JS在与lua的交互心得的更多相关文章

  1. 转载:js和as间的交互

    转载一: 提及AS3与外部脚本的交互,笔者认为可以总结成两种.一是AS3调用外部函数,二是外部脚本调用AS3函数.无外乎就 这两种.在调用函数的同时,我们还可以向函数传递一些参数.这就达到了传递数据的 ...

  2. 基于SOAP的xml网络交互心得

    感谢小二同学将遇到的问题分享给我们,再此给以掌声.如果看不懂下面文章的建议查找一下HTTP协议的文艺,对HTTP协议要有个概念. XML网络交互心得 目录 一.     xml解析 1.根路径下 2. ...

  3. 表单验证--通过原生js模仿ajax的异步交互

    今天给大家带来个福利,我也是刚刚学习的很实用的一个东西,通过原生js模仿ajax的异步交互. 我的博客只是给那些新手看的大神勿喷,写的不好可留言,请指出. 因为当初自己学的时候一个问题不会找人问,知道 ...

  4. C#在WinForm中使用WebKit传递js对象实现与网页交互的方法

    这篇文章主要介绍了C#在WinForm中使用WebKit传递js对象实现与网页交互的方法,涉及针对WebBroswer控件及WebKit控件的相关使用技巧,需要的朋友可以参考下 本文实例讲述了C#在W ...

  5. php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义

    https://blog.csdn.net/weixin_42231483/article/details/81585322 最近用PHP的tp3.2.3框架和js写的微信分享功能心得,分享的标题内容 ...

  6. Lua C++交互 应用实例步骤(UserData使用)

    一.配置Lua C++交互环境 1.下载Lua 包环境 地址: https://www.lua.org/download.html ,我们这里用的是5.4.2版本. 2.新建C++ 控制台应用程序 3 ...

  7. js(javascript)与OC(Objective-C)交互

    实质上oc与js的通信交互就是发送消息,也即函数调用,iOS7以后官方公布JavaScriptCore framework中很方便我们对他们之间的相互调用.在以前我们只能通过UIWebView的UIW ...

  8. java,js,jstl,EL的简单交互

    EL全名Expression Language.EL提供了在JSP脚本编制元素范围外使用运行时表达式的功能. 脚本编制元素是指页面中能够用于在JSP文件中嵌入java代码的元素. JSP标准标记库(j ...

  9. js前台与后台数据交互-前台调后台

    转自:http://blog.csdn.net/wang379275614/article/details/17033981   网站是围绕数据库来编程的,以数据库中的数据为中心,通过后台来操作这些数 ...

随机推荐

  1. Xml Helper

    类的完整代码: using System;using System.Collections;using System.Xml; namespace Keleyi.Com.XmlDAL{public c ...

  2. Qt 学习之路 2(19):事件的接受与忽略

    Home / Qt 学习之路 2 / Qt 学习之路 2(19):事件的接受与忽略 Qt 学习之路 2(19):事件的接受与忽略  豆子  2012年9月29日  Qt 学习之路 2  140条评论 ...

  3. Maven with Scala

    下面是一个在Maven使用Scala的pom.xml <?xml version="1.0" encoding="UTF-8" standalone=&q ...

  4. Dictionary 检测key是否存在

    if(dict.ContainsKey(T key)) { //已存在key }

  5. Vscode 配置 maven debug

    # maven.cmd 上方设置此变量 set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address= ...

  6. Linux下Redis安装使用,主从模式,哨兵模式与PHP扩展(PHP7适用)

    一,软件准备 #redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz #phpredis 非php7使用 下载后文件名为:ph ...

  7. linux中文件压缩与打包

    一.常见的压缩命令 在linux环境中,压缩文件的扩展名大多是*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,首先我们来介绍以下这些压缩文案的扩展名:. *.Z:compres ...

  8. Sqlite和mysql的区别及优缺点

    小型嵌入式,跟mysql差不多,但更小,功能也少,属于本地数据库多用于读多写少,100W以下的数据压力不大,不支持分布式.   真正开源的小型嵌入式数据库,支持事务.触发器器  性能至少优于mysql ...

  9. PHP漏洞全解—————9、文件上传漏洞

    本文主要介绍针对PHP网站文件上传漏洞.由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 P ...

  10. python模块之openpyxl介绍

    openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档.其 ...