找回密码
 立即注册
搜索

开发问题 通过 web 组件 无法实现快应用和网页之间的通信

4
回复
1432
查看
[复制链接]

4

主题

12

帖子

80

积分

 楼主| 2020-7-21 17:19:57 显示全部楼层 |阅读模式
本帖最后由 一路有你 于 2020-7-21 17:26 编辑 说实在的,发这个贴子之前,我已经焦头烂额了。 https://doc.quickapp.cn/widgets/web.html?h=trustedurl 根据上面这个文档,我试了很多代码实践,都无法成功做到 快应用 和 网页 的通信。 比如我在 index.ux 中有一行代码是引用了 web 组件: 其中:curl = ‘http://39.97.xxx.xxx/test/advice/index.html' (具体的ip地址不公开了,后面几位改用 xxx 表示了) 1、不知道 turstedurl 的数组形式,具体该怎么写呢?我用下面几种方式都不行呀,很头大: trustedurl = ['http://39.97.xxx.xxx/test/advice/index.html'] trustedurl = ['https?://.*'] trustedurl = ['/^http:\/\/39.97.xxx.xxx/'] 2、在快应用中通过下面的方式,无法把消息传给被加载进来的网页: this.$element("web_instance").postMessage({ message: 'come from kuai' }) 3、在网页端,不能接收到快应用发送过来的消息:
而且在网页中直接写 system 会报未定义的错呀,这是怎么回事呢? A9EAD347-F56E-4BDD-96E1-AF91D531B37D_4_5005_c.jpeg 4、同时,在快应用中,也不能收到由网页端发送过来的消息: onGetInfoFromWebPage(e) { // 由网页端发送过来的消息没收到呀,下面都无法打印出来...... console.log("e.message", e.message); console.log("e.urlString", e.urlString); } 说实在的,发这个贴子之前,我已经焦头烂额了。希望高手能给予解答!非常感谢!
回复

使用道具 举报

4

主题

12

帖子

80

积分

 楼主| 2020-7-21 19:37:15 显示全部楼层
终于我自己调试出来了! 不要设置 trustedurl 属性就可以了,按文档的说法:“只有trustedurl中链接或者src链接的网页可以和框架进行双向通信” ,所以,实质上,大多数情况,通过 web 组件加载进来的 src 网页地址,不正是我们希望快应用与之通信的目标吗?因此,通过 src 已可以达到目的了,不一定非要设置 trustedurl 属性。 我不得不说,我还是不知道 trustedurl 该怎么具体写它的值,才能有效。 另外,网页端的写法,下面是是我写的例子,测试也是通过的,没错是用 system 关键字,虽然单独看页面会报错,未定义,但被快应用加载后,是可行的,以下代码测试也是通过的OK的:
回复

使用道具 举报

4

主题

12

帖子

80

积分

 楼主| 2020-8-6 18:17:22 显示全部楼层
上面的方式只适用于 一般网页,同时,加载的一般网页没有跳转页面的情况出现,否则加载的网页如果发生了页面跳转,则跳转后的页面,还是不能和快应用进行通信。 如果是 vue 的网页,上面的方式还是不足够的,这也是我的教训。必须要加上 trustedurl 属性才可以。 具体完整的解决方案,参见下面这个帖子: https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=2491
回复

使用道具 举报

1

主题

3

帖子

20

积分

2020-12-4 15:26:20 显示全部楼层
感谢,开发工具里一直都可以,到手机上就不行,改了好久终于好了
回复

使用道具 举报

2

主题

9

帖子

55

积分

2021-1-20 14:19:39 显示全部楼层
trusturl可以写成正则
回复

使用道具 举报

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