一种移动平台上JavaScript调用原生功能的方法以及系统,方法包括:S1、JavaScript在调用原生功能时触发经过重写的提示对话框方法,在网页加载时启动轮询以不断地触发提示对话框方法;S2、提示对话框方法对其参数进行解析,如判断执行原生功能,则继续对参数进行解析以获取功能组件信息和调用方式,再执行S3并结束;如判断查找消息队列则执行S4;S3、根据开放的JavaScript接口实现原生功能的调用,如为异步调用,则在新线程中调用对应的功能组件,新线程在完成后把结果放入消息队列中;如为同步调用,则在主线程中调用功能组件;S4、根据开放的JavaScript接口实现从消息队列中检索结果。本发明专利技术可异步调用原生功能,统一了调用的模式,提高了JavaScript与原生功能互相调用的灵活性。
【技术实现步骤摘要】
本专利技术涉及移动互联网
,尤其涉及一种移动平台上JavaScript调用原生功能的方法以及系统。
技术介绍
在开发移动应用时,会用到webview控件(浏览器控件)进行加载网页展示进行交互,会出现javascript调用native code(原生功能)或者native code调用javascript的情况。通常做法是利用原生API进行操作。参考图1,javascript位于前端逻辑层,native code是属于底层原生层,其中,javascript调用native code的具体方法是,WebKit的原生API暴露一个native code的对象给js,即图中所示意的原生层开放的javascript接口,使得javascript可以通过这个javascript接口直接调用native code。这种方法对效率不高,不能异步操作,特别是对于执行时间较长的js操作,会产生阻塞,调用起来不统一,方法多了管理代码会混乱,不利于工程的后期维护与扩张。
技术实现思路
本专利技术要解决的技术问题在于,针对现有技术的上述缺陷,提供一种移动平台上JavaScript调用原生功能的方法以及系统。本专利技术解决其技术问题所采用的技术方案是:构造一种移动平台上JavaScript调用原生功能的方法,所述方法包括:SI JavaScript在调用原生功能时触发浏览器控件中的经过重写的提示对话框方法,所述JavaScript在网页加载时启动轮询以不断地触发所述提示对话框方法;S2、经过重写的提示对话框方法在触发后,首先对其参数进行解析,如果根据解析结果判断执行原生功能,则继续对参数进行解析以获取功能组件信息和调用方式,再执行步骤S3并结束;如果根据解析结果判断查找消息队列则执行步骤S4并结束;S3、根据开放的JavaScript接口实现原生功能的调用,如果调用方式为异步调用,则实例化新线程,在新线程中根据所述功能组件信息调用对应的功能组件,启动新线程后主线程原路返回,所述新线程在完成后把结果放入消息队列中;如果调用方式为同步调用,则在主线程中根据所述功能组件信息调用对应的功能组件,并在调用完毕后将执行结果原路返回;S4、根据开放的JavaScript接口实现从所述消息队列中检索结果。在本专利技术所述的移动平台上JavaScript调用原生功能的方法中,所述步骤S2包括:S21、如果提示对话框方法判断出默认字符串参数的前缀与预设的表示执行原生功能的字符串相同,则根据默认字符串参数的位于前缀后面的字符串获取以下参数数据:与功能组件唯一对应的组件ID、与返回结果唯一对应的Callbackld、调用方式以及其他参数,再执行步骤S3并结束;S22、如果提示对话框方法判断默认字符串参数的前缀与预设的表示查找消息队列的字符串相同,则根据默认字符串参数的位于前缀后面的字符串获取与返回结果唯一对应的Cal lbackld,再执行S4并结束;S23、如果前缀不属于以上的两种情况,则执行默认的操作,弹出提示对话框。在本专利技术所述的移动平台上JavaScript调用原生功能的方法中,所述步骤S3包括:S31、将S21中获取的参数数据发送给浏览器控件中的具有JavaScript接口的原生对象中的原生功能调用方法,原生对象再把参数数据发送给组件管理类的原生功能调用方法,组件管理类中的原生功能调用方法在判断调用方式为异步调用时,执行步骤S32并结束,在判断调用方式为同步调用时,执行步骤S33并结束;S32、实例化新线程,在新线程中根据组件ID调用对应的功能组件,启动新线程后主线程原路返回,所述新线程在完成后把执行结果与Callbackld绑定后放入消息队列中;S33、在主线程中根据组件ID调用对应的功能组件,并在调用完毕后将执行结果原路返回;S34、将S22中获取的Callbackld发送给浏览器控件中的具有JavaScript接口的原生对象中的接收JS消息方法,接收JS消息方法根据Cal lbackld从消息队列中查询结果,并在有对应的结果时将结果原路返回到网页中。在本专利技术所述的移动平台上JavaScript调用原生功能的方法中,所述的启动轮询为:以预设时间间隔调用prompt ()方法,prompt ()方法再触发经过重写的提示对话框方法。本专利技术还公开了一种移动平台上JavaScript调用原生功能的系统,包括位于前端逻辑层的JavaScript模块和位于底层原生层中的浏览器控件、组件管理类、消息队列、执行多种原生功能的多种功能组件;所述JavaScript模块包括调用原生功能子模块和轮询子模块,浏览器控件包括JS触发模块、开放有JavaScript接口的执行原生功能模块、开放有JavaScript接口的检索消息模块;调用原生功能子模块用于触发JS触发模块中的经过重写的提示对话框方法;轮询子模块用于在网页加载时启动轮询以不断地触发所述JS触发模块中的提示对话框方法;JS触发模块中的经过重写的提示对话框方法在执行时,首先对其参数进行解析,如果根据解析结果判断执行原生功能,则继续对参数进行解析以获取功能组件信息和调用方式,与执行原生功能模块的JavaScript接口配合以实现原生功能的调用;如果根据解析结果判断查找消息队列则与检索消息模块的JavaScript接口配合以实现从消息队列中检索结果;组件管理类用于与执行原生功能模块配合实现原生功能的调用,如果调用方式为异步调用,则实例化新线程,在新线程中根据所述功能组件信息调用对应的功能组件,启动新线程后主线程原路返回,所述新线程在完成后把结果放入消息队列中;如果调用方式为同步调用,则在主线程中根据所述功能组件信息调用对应的功能组件,并在调用完毕后将执行结果原路返回。在本专利技术所述的移动平台上JavaScript调用原生功能的系统中,JS触发模块中的经过重写的提示对话框方法具体包括:如果提示对话框方法判断出默认字符串参数的前缀与预设的表示执行原生功能的字符串相同,则根据默认字符串参数的位于前缀后面的字符串获取以下参数数据:与功能组件唯一对应的组件ID、与返回结果唯一对应的Callbackld、调用方式以及其他参数;如果提示对话框方法判断默认字符串参数的前缀与预设的表示查找消息队列的字符串相同,则根据默认字符串参数的位于前缀后面的字符串获取与返回结果唯一对应的Callbackld;如果前缀不属于以上的两种情况,则执行默认的操作,弹出提示对话框。在本专利技术所述的移动平台上JavaScript调用原生功能的系统中,所述执行原生功能模块的具有JavaScript接口的原生对象中的原生功能调用方法获取JS触发模块中的参数数据,再把参数数据发送给组件管理类的原生功能调用方法;组件管理类中的原生功能调用方法在判断调用方式为异步调用时,实例化新线程,在新线程中根据组件ID调用对应的功能组件,启动新线程后主线程原路返回,所述新线程在完成后把执行结果与Callbackld绑定后放入消息队列中;组件管理类中的原生功能调用方法在判断调用方式为同步调用时,在主线程中根据组件ID调用对应的功能组件,并在调用完毕后将执行结果原路返回;检索消息模块中的具有JavaScript接口的原生对象中的接收JS消息方法获取JS触发模块中的本文档来自技高网...
【技术保护点】
一种移动平台上JavaScript调用原生功能的方法,其特征在于,所述方法包括:S1、JavaScript在调用原生功能时触发浏览器控件中的经过重写的提示对话框方法,所述JavaScript在网页加载时启动轮询以不断地触发所述提示对话框方法;S2、经过重写的提示对话框方法在触发后,首先对其参数进行解析,如果根据解析结果判断执行原生功能,则继续对参数进行解析以获取功能组件信息和调用方式,再执行步骤S3并结束;如果根据解析结果判断查找消息队列则执行步骤S4并结束;S3、根据开放的JavaScript接口实现原生功能的调用,如果调用方式为异步调用,则实例化新线程,在新线程中根据所述功能组件信息调用对应的功能组件,启动新线程后主线程原路返回,所述新线程在完成后把结果放入消息队列中;如果调用方式为同步调用,则在主线程中根据所述功能组件信息调用对应的功能组件,并在调用完毕后将执行结果原路返回;S4、根据开放的JavaScript接口实现从所述消息队列中检索结果。
【技术特征摘要】
【专利技术属性】
技术研发人员:郑彬,
申请(专利权)人:深圳联友科技有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。