帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
78
帖子
3
勋章
5459
Y币

利用api.execScript进行两个页面的数据传递

[复制链接]
发表于 2017-5-7 11:35:17
本帖最后由 马小超 于 2017-8-24 11:38 编辑

页面传递:模拟场景:A和B两个界面,从A跳入B后,获取B的页面数据再将B页面数据传入A;
1 简单的字符串传递;
B页面:
var name= '中国';
api.execScript({
                        name : 'A',    //这里只要写A界面的名字,即从别的界面跳入A时会给其命名name;该name就是这个名字;具体参考API.openwin接口;
                         script: 'aa(\''+name+'\')'  //首先是单引号'  '把A页面方法名称写入;\''不是一个斜杠+双引号;而是\+两个'引号;\'是什么意思可以查看转义字符的内容
                        });

//如果需要把B页面关掉;然后调用api.closewin();即可备注:如果是传递两个参数;可以这么写:  script: 'aa(\'' + name+"','"+ age+ '\');'  //中间,是外层一个双引号,再加一个单引号组成
A页面:
function aa(value){
alert(value)
}
此时就可以看到数据传递过来了;
2 传递一个对象或者JSON格式的集合
B:页面
var person= {
id :'123456',
name :'马小超',
age :'12'
}
api.execScript({
                        name : 'A',    //这里只要写A界面的名字,即从别的界面跳入A时会给其命名name;该name就是这个名字;具体参考API.openwin接口;
                         script: 'aa('+JSON.stringify(person)+')'  //JSON.stringify方法是将json转换为字符串;
                        });

A:页面
function aa(value){
alert(JSON.stringify(value));//这里我也没弄明白,为什么传过来的值已经在B转为字符串了;但是这里打印还是需要转;不然会报错;
还要一点我发现这里传递过来的value居然是JSON格式;可以直接用;例如如果打印里面的age;直接alert(value.age)就可以获取到;
}
备注:查了半天的论坛,看到很多都只是技术片段的分享;所以把自己该问题发现的解决办法归纳总结了下,也非常感谢那些愿意技术分享的人;也希望其他有好的技术大家都可以分享下;如果好,就顶下支持下;谢谢;



75
帖子
0
勋章
822
Y币
谢谢分享, 收藏先
23
帖子
1
勋章
988
Y币
先顶了再说
25
帖子
0
勋章
200
Y币
顶了再讲咯
75
帖子
0
勋章
822
Y币
感谢分享
0
帖子
0
勋章
4
Y币
为什么有这个错啊‘aa’is not defined at jsruntime :1
13
帖子
6
勋章
105
Y币
信长的野望 发表于 2018-7-3 20:20
为什么有这个错啊‘aa’is not defined at jsruntime :1

你的代码是怎么写的
34
帖子
0
勋章
169
Y币
顶顶顶,解决了中文字无法传递的问题,原来要转义
2
帖子
0
勋章
9
Y币
麻烦能讲下script后面的单双引号为什么那么写么,转义字符倒是了解,但还是不是太清楚为什么单双引号这么写,
18
帖子
0
勋章
186
Y币
我觉得 可以用api.addEventListener替代
12下一页
您需要登录后才可以回帖 登录

本版积分规则