f***@163.com
f***@163.com
  • 发布:2022-06-01 15:22
  • 更新:2024-03-22 14:46
  • 阅读:1770

H5通过cordova与原生交互,却访问不到window下的cordova对象

分类:uni-app

别人做的一个安卓/ios的壳子,使用codova提供H5访问原生的能力,通过webview 直接注入codova方法到window对象中。非uniapp项目的H5页面都可以通过window.cordova.exec的方式访问原生的方法,唯独uniapp开发H5页面中无法通过window获取到cordova对象,竟然提示cordova对象是undefined。扒拉了一圈官方文档没有找到解决办法,咱的问答社区也是半死不活没人回复,只能感慨uniapp的坑真不小啊

2022-06-01 15:22 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

这个uni-app的原生支持毫无关系。你这是用uni-app做了一个h5页面,用cordova打包。
这种做法首先就不推荐,你应该用uni-app直接打包app,体验比cordova好非常多。
其次uni-app开发的web页面,都可以在chrome下调试,cordova也是有debug方式的,虽然不太好用,但你得用cordova的remote debug看看问题出在哪里了。这和uni-app的h5也没什么关系

  • f***@163.com (作者)

    很多年前的壳子用的cordova框架,壳子只是通过webview打开uniapp开发的H5页面链接,那为啥非uniapp的H5页面可以获取到壳子挂在在window下的cordova对象呢,所以我怀疑和uniapp的某方面机制有关系

    2022-06-02 17:27

f***@163.com

f***@163.com (作者)

这个官方是不是也不知道怎么回事?

BoredApe

BoredApe - 有问题就会有答案。

是否判断JSBridgeReady后调用的window.cordova.exec方法

  • f***@163.com (作者)

    壳子用的cordova框架,我试了H5判断JSBridgeReady也拿不到

    2022-06-02 17:29

f***@163.com

f***@163.com (作者)

解决了,需要解决办法的私信我吧

  • 9***@qq.com

    大佬可以请教一下怎么弄的吗,私信不了,大佬私信我也行啊,十分感谢

    2022-08-19 16:20

  • RichardL

    回复 9***@qq.com: 大神 你解决了嘛

    2022-11-22 11:33

  • 前端找bug

    私信不了

    2023-04-20 17:17

RichardL

RichardL

大佬,H5中cordova undefined的问题如何解决的呀,求教感谢了! 私信不了……

突然好想你

突然好想你

实现了,在index.html页面写一个函数,在vue页面中调用这个函数就行了.唯一的缺点是调用的cordova的函数得作为参数传过去,所以在vue中一个事件得写俩函数,或者难看一点写在括号里

  • 突然好想你

    index.html function cordovaFunc(func){func();} vue页面中: cordovaFunc(this.ceshi) ceshi(){"这里写引用cordova的函数"}

    2022-12-05 17:39

  • 哈哈哈11111

    回复 突然好想你: 大哥,具体怎么写,不用引入cordova吗?

    2023-02-06 11:10

  • 突然好想你

    回复 哈哈哈11111: 引入的,可以直接在index.html中引入你的文件。上面写的是分别在index.html自定义调用cordova的函数cordovaFunc();和写在vue文件中调用cordovaFunc的函数

    2023-02-06 16:22

  • 突然好想你

    回复 哈哈哈11111: 楼下写了一下,这下应该能看懂了吧

    2023-02-06 16:28

突然好想你

突然好想你

<script  src="./cordova.js"></script>  
<script>  
     function cordovaFunc(func){func();}  
</script>
methods: {  
     //调用Cordova  
    dyCordova(){  
       cordovaFunc(this.ceshi)   
    },  
    ceshi() {  
        "这里写调用cordova的函数比如"  
        androidJs.callPhone(11111111111)  
    }  
}
  • 前端找bug

    androidJs这是什么,无法运行呀

    2023-04-20 10:03

  • 突然好想你

    回复 8***@qq.com: 这是你们安卓暴露给你的函数,你替换成你的就可以了

    2023-04-20 14:00

  • 前端找bug

    回复 突然好想你: 请教下一下,既然原生能提供方法,为什么我们H5这边还要引入cordovajs呢?

    2023-04-20 17:14

  • 突然好想你

    回复 前端找bug: 因为安卓那边使用cordova能暴露方法给h5端实现自定义设计webview的ui。如果没有这种类似的需求,其实安卓用原生的更方便h5操作

    2023-04-21 11:00

  • [已删除]

    针对说index.html是放在uniapp哪里或者说我理解的是通过app进入uniapp生成的h5 需要先进入index.htnl这个页面先加载一下设置的cordova.js 然后在进入到uniapp生成的h5首页。

    2024-03-22 14:49

  • 突然好想你

    回复 [已删除]: index.htnl是你项目的入口页啊,只是uni-app的h5默认了一个index.html的入口页,可以配置成自定义的

    2024-09-13 11:59

[已删除]

[已删除]

@突然好想你 针对说index.html是放在uniapp哪里或者说我理解的是通过app进入uniapp生成的h5 需要先进入index.htnl这个页面先加载一下设置的cordova.js 然后在进入到uniapp生成的h5首页。

要回复问题请先登录注册