炫意html5
最早CSS3和HTML5移动技术网站之一

APICloud api.execScript 参数传对象问题

execScript

在指定 window 或者 frame 中执行脚本,对于 frameGroup 里面的 frame 也有效,若 name 和 frameName 都未指定,则在当前 window 中执行脚本,具体执行逻辑见补充说明。
execScript({params})
params
name:
类型:字符串
默认值:无
描述:(可选项)window 名称,若要跨 window 执行脚本,该字段必须指定,首页的名称为 root
frameName:
类型:字符串
默认值:无
描述:(可选项)frame名称
script:
类型:字符串
默认值:无
描述:js代码
示例代码

示例代码

//在当前window中执行jsfun脚本
var jsfun = 'funcGoto();';
api.execScript({
script: jsfun
});
//在当前window中找到名为frmName的frame,并在该frame中执行jsfun脚本
var jsfun = 'funcGoto();';
api.execScript({
frameName: 'frmName',
script: jsfun
});
//在名为winName的window中执行jsfun脚本
var jsfun = 'funcGoto();';
api.execScript({
name: 'winName',
script: jsfun
});
//在名为winName的window中找到名为frmName的frame,并在该frame中执行jsfun脚本
var jsfun = 'funcGoto();';
api.execScript({
name: 'winName',
frameName: 'frmName',
script: jsfun
});

补充说明

统一处理逻辑为:exec->window->frame

name 参数: 当 name 不传值,或者传空字符串的情况下,execScript 对象为调用 execScript 的window(该 window 可能位于屏幕或者后台),在该 window 中继续 frameName 的逻辑; 当 name 传值且非空字符串,但并未找到名为 name 的 window,则直接返回不处理(不论 frameName 是否有值)。若找到了对应的 window,则在该 window 中继续 frameName 的逻辑;

frameName 参数: 当 frameName 不传值,或者传空字符串的情况下,execScript 对象为调用 execScript 的 window(该 window 可能位于屏幕或者后台),在该 window 中执行 script; 当 frameName 传值且非空字符串,但并未找到名为 frameName 的 frame,则直接返回不处理。若找到了该 frame,则在该 frame 中执行 script。

以上是官方的api使用说明,当我们需要在页面之间相互跳转传递参数时应该这么做

正确传对象写法:
var obj ={'id':1,'name':'ffhh'};
var objStr =JSON.stringify(obj);
console.log('getjson('+objStr+')');
api.execScript({
name:'root',
frameName:'frame1',
script : 'getjson('+objStr+')'
});
frame1页面:
function getjson(obj){
console.log(typeof(obj));
console.log(obj.name);
}
传参数
var obja = {'name':'fff'}        
var objStr =JSON.stringify(obja);                
api.execScript({
    name:'root',
    frameName : 'frame1',
    script : 'var objJson='+objStr
});
//frame1页面
console.log(typeof(objJson));//object类型
console.log(JSON.stringify(objJson));//输出 {'name':'fff'}

 

炫意HTML5 » APICloud api.execScript 参数传对象问题

CSS3教程HTML5教程