起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6835|回复: 10

[处理中5] Android或iOS原生代码调用不了js内的方法

[复制链接]

10

主题

31

帖子

73

积分

初级会员

Rank: 2

积分
73
QQ
发表于 2017-6-13 19:15:33 | 显示全部楼层 |阅读模式
定义的js方法用原生代码调用不到。html5定义的是没问题的。求解~~~
发表于 2017-6-14 09:23:47 | 显示全部楼层
在wex5中 原生代码和js 相互调用只能是通过cordova插件实现!
官方提供的插件
http://doc.wex5.com/cordova-plugins/
/Native/plugins

如果你需要的插件没有提供!就需要自己实现
http://docs.wex5.com/wex5-app-question-list-2051
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

10

主题

31

帖子

73

积分

初级会员

Rank: 2

积分
73
QQ
 楼主| 发表于 2017-6-14 11:43:29 | 显示全部楼层
可能你没明白我意思。我的问题是原生调用不了X5定义的js函数,但反过来X5通过js调用原生是OK的。
调用标准的html内的js函数是没问题的,这个应是.W文件编译和结构原因导致的吧?
我要如何使用原生webView才能调用到X5定义的js?
回复 支持 反对

使用道具 举报

发表于 2017-6-14 14:21:02 | 显示全部楼层
farley 发表于 2017-6-14 11:43
可能你没明白我意思。我的问题是原生调用不了X5定义的js函数,但反过来X5通过js调用原生是OK的。
调用标准 ...

应该是必须用js调用原生才可以的!
都是通过回调实现的 !

原生不能直接调用js的!

请问你想实现什么功能呢??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

10

主题

31

帖子

73

积分

初级会员

Rank: 2

积分
73
QQ
 楼主| 发表于 2017-6-14 15:05:25 | 显示全部楼层
我要用原生的返回按钮结束子页并返回一个参数给父页面。
原生能直接调用js的(百度上很多的)!原生用webView加载一个HTML,通过调用HTML内的js函数可以实现交互的。
可惜X5不是标准的HTML,用标准的方式调用不了。
但x5可以调用和原生约定好的方法去改变原生的title,同理反过来应可以才对啊,可惜不行~~~
你们去尝试下应能找到解决方案
回复 支持 反对

使用道具 举报

发表于 2017-6-14 16:11:08 | 显示全部楼层
farley 发表于 2017-6-14 15:05
我要用原生的返回按钮结束子页并返回一个参数给父页面。
原生能直接调用js的(百度上很多的)!原生用webVi ...

你好楼主,这个特性目前版本不支持,已作为产品功能建议提交(内部编号:2017061400004),感谢楼主的支持与配合。
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

10

主题

31

帖子

73

积分

初级会员

Rank: 2

积分
73
QQ
 楼主| 发表于 2017-6-14 16:49:45 | 显示全部楼层
不应该啊,自定义插件是否能解决
回复 支持 反对

使用道具 举报

发表于 2017-6-14 16:51:10 | 显示全部楼层
farley 发表于 2017-6-14 16:49
不应该啊,自定义插件是否能解决

不能!corodva的机制就是只能js主动调用 原生代码!
原生代码无法直接主动调用js的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

304

帖子

798

积分

高级会员

Rank: 4

积分
798
QQ
发表于 2017-10-31 18:09:15 | 显示全部楼层
这个问题,可以参考百度地图插件的原生实现。里面有原生调用js的代码。

   mBaiduMap.setOnMapClickListener(new BaiduMap.OnMapClickListener() {
            /**
             * 单击地图
             */
            public void onMapClick(LatLng point) {
                try {
                    touchType = "单击地图";
                    currentPt = point;
                    updateMapState();
                    //                baiduMap.prototype.eventOccur
                    //                {action:String,lat:Num,lon:Num,zoom:Num,overlook:Num,rotate:Num}
                    JSONObject js = new JSONObject();
                    js.put("action", "click");
                    js.put("lat", point.latitude);
                    js.put("lon", point.longitude);
                    js.put("zoom", mBaiduMap.getMapStatus().zoom);
                    js.put("overlook", mBaiduMap.getMapStatus().overlook);
                    js.put("rotate", mBaiduMap.getMapStatus().rotate);

                    callJS("navigator.baiduMap.base.eventOccur(" + js + ")");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
回复 支持 反对

使用道具 举报

3

主题

304

帖子

798

积分

高级会员

Rank: 4

积分
798
QQ
发表于 2017-10-31 18:13:44 | 显示全部楼层
farley 发表于 2017-6-14 11:43
可能你没明白我意思。我的问题是原生调用不了X5定义的js函数,但反过来X5通过js调用原生是OK的。
调用标准 ...

还可以参考cordova-plugin-battery-status插件的实现来完成数据到js端的上传处理
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-22 19:44 , Processed in 0.078256 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表