APICloud execScript 传参的参数类型问题

最近遇到了一个细节问题,需要使用execScript,把frame中的数据传递到window中,但是在传参过程中遇到了数据类型变化的问题,导致拿该参数的值做逻辑处理时,报错的bug。

message_talk_person.html页面 以openFrame的方式打开了message_talk_person_bot_frm.html页面。现在要将message_talk_person_bot_frm.html中的的hasRead的值 传到message_talk_person.html页面。

写法一:hasReadFunc方法的参数 hasRead被两个单引号修饰

message_talk_person_bot_frm.html页面

var hasRead = true;
var jsfun = "hasReadFunc('"+hasRead+"');";
api.execScript({
      script: jsfun
});

message_talk_person.html页面

function hasReadFunc(obj) {
  hasRead = obj;
  alert(typeof(obj));

}

打印得知hasRead是个字符串类型的true

2364940-9deef7d25f392d4d.png
image.png

写法二:hasReadFunc方法的参数直接写 hasRead

var hasRead = true;
var jsfun = "hasReadFunc("+hasRead+");";
api.execScript({
      script: jsfun
});

message_talk_person.html页面

function hasReadFunc(obj) {
  hasRead = obj;
  alert(typeof(obj));

}

打印得知hasRead是个布尔类型的true

2364940-1a29af4bf473ea9a.jpg
a.jpg

总结:execScript中写的回调函数的参数,无论参数是什么类型的,只要参数被单引号包围,都会变成字符串,若不被单引号包围,该是什么类型就是什么类型。平时传参遇到问题的时候,要多打印打印数据的类型,不要出现我这种低级错误。

猜你喜欢

转载自blog.csdn.net/weixin_33997389/article/details/90867535
今日推荐