热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

APICloudexecScript方法参数传递问题及解决方案

本文探讨了在APICloud平台使用execScript方法时如何正确传递对象参数,并提供了详细的示例和解释。

execScript 方法详解

此方法用于在特定的窗口或框架中执行 Javascript 脚本,支持对框架组中的框架执行操作。如果未指定名称和框架名称,则默认在当前窗口中执行脚本。具体执行逻辑如下:

execScript({params})

  • params
    • name: 类型:字符串;默认值:无;描述:(可选)窗口名称,用于跨窗口执行脚本,首页名称为 root。
    • frameName: 类型:字符串;默认值:无;描述:(可选)框架名称。
    • script: 类型:字符串;默认值:无;描述:待执行的 Javascript 代码。

示例代码

// 在当前窗口中执行 jsfun 脚本
var jsfun = 'funcGoto();';
api.execScript({
script: jsfun
});
// 在当前窗口中名为 frmName 的框架中执行 jsfun 脚本
var jsfun = 'funcGoto();';
api.execScript({
frameName: 'frmName',
script: jsfun
});
// 在名为 winName 的窗口中执行 jsfun 脚本
var jsfun = 'funcGoto();';
api.execScript({
name: 'winName',
script: jsfun
});
// 在名为 winName 的窗口中名为 frmName 的框架中执行 jsfun 脚本
var jsfun = 'funcGoto();
api.execScript({
name: 'winName',
frameName: 'frmName',
script: jsfun
});

补充说明

执行逻辑遵循:先确定目标窗口,再确定框架,最后执行脚本。

  • name 参数: 如果未提供或为空字符串,将默认在调用 execScript 的窗口中执行脚本;如果提供了非空字符串但找不到对应窗口,则不执行任何操作。找到对应窗口后,将继续根据 frameName 参数确定框架。
  • frameName 参数: 如果未提供或为空字符串,将在当前窗口中执行脚本;如果提供了非空字符串但找不到对应框架,则不执行任何操作。找到对应框架后,将在该框架中执行脚本。

对象参数传递示例

// 正确传递对象的方式
var obj = {'id': 1, 'name': 'ffhh'};
var objStr = JSON.stringify(obj);
console.log('getjson(' + objStr + ')');
api.execScript({
name: 'root',
frameName: 'frame1',
script: 'getjson(' + objStr + ')' // 将对象转换为 JSON 字符串并作为参数传递
});
// 在 frame1 页面定义 getjson 函数
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'}


推荐阅读
author-avatar
七彩咩_131
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有