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'}
共有 0 条评论