在指定 window 或者 frame 中执行脚本,对于 frameGroup 里面的 frame 也有效,若 name 和 frameName 都未指定,则在当前 window 中执行脚本,具体执行逻辑见补充说明。

execScript({params})

params

name:

  • 类型:字符串
  • 默认值:无
  • 描述:(可选项)window 名称,若要跨 window 执行脚本,该字段必须指定,首页的名称为 root

frameName:

  • 类型:字符串
  • 默认值:无
  • 描述:(可选项)frame名称

script:

  • 类型:字符串
  • 默认值:无
  • 描述:js代码

示例代码

//在名为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
}); //在当前window中找到//名为frmName的frame,并在该frame中执行jsfun脚本var jsfun = 'funcGoto();';
api.execScript({
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。

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本
 
//在名为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
});
 
//在当前window中找到
//名为frmName的frame,并在该frame中执行jsfun脚本
var jsfun='funcGoto();';
api.execScript({
   frameName:'frmName',
   script:jsfun
});

接下来说一说这个方法在项目中的实际应用.

应用场景:

如上图所示,当选择入学时间,毕业时间的时候,需要从下方空白处弹出一个新的frame,在新的frame中添加模块控件

UICustomPicker,代码如下:

apiready = function(){

var text = api.pageParam.text4;

varUICustomPicker = api.require('UICustomPicker');

//        if(UICustomPicker == nil){

UICustomPicker.open({

rect: {

x: 10,

y: 0,

w: 320,

h: 100

},

styles: {

bg: 'rgba(0,0,0,0)',

normalColor: '#959595',

selectedColor: '#3685dd',

selectedSize: 36,

tagColor: '#3685dd',

tagSize: 10

},

data: [{

tag: '年',

scope: '1980-2020'

}, {

tag: '月',

scope: ["01","02","03","04","05","06","07","08","09","10","11","12"]

}, {

tag: '日',

scope: ["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"]

}],

rows: 3,

id:1,

fixedOn: api.frameName,

fixed: true

}, function( ret, err ){

if( ret ){

//       alert( JSON.stringify( ret ) );

time = ret.data[0]+"-"+ret.data[1] + "-" + ret.data[2];

//使用execScriptAPI,将时间作为参数进行传递.

var param = { date: time};

api.execScript({

name: 'win_addExperience.html',

script: 'funcGoto('+JSON.stringify( param )+')'

});

}else{

//       alert( JSON.stringify( err ) );

}

});

};

此时点击时间输入框,就有上图所示的效果了.最终想要的是想将模块控件的数据 填写到window的输入框,这里就要用到主人公execScript这个API接口了.

整个过程大致是这样的:在时间Picker中选好时间,直接将时间作为json格式的参数,通过execScript在父window执行script方法,从而实现功能.

//frame 中execScript方法

//使用execScriptAPI,将时间作为参数进行传递.

var param = { date: time};

api.execScript({

name: 'win_addExperience.html',

script: 'funcGoto('+JSON.stringify( param )+')'

});

//win_addExperience.html中的script方法

function  funcGoto(time){

text4.value = time.date;

}

这样,就可以实现所要的功能了,还是非常方便的!

 
顶
0

踩
0
 

我的同类文章

APICloud(4)
 
 
猜你在找

api.execScript的更多相关文章

  1. apicloud+融云实现即时通讯

    请尊重作者的辛勤劳动!!! 使用apicloud开发已经快2个月了,起初的目的就是为了实现安卓和苹果的兼容,属于一个试验项目,究竟apicloud是否能够满足公司的要求?最 终看来还是不错的,使用ap ...

  2. APIcloud微信支付和支付宝支付(方案2,主要在后台进行)

    支付宝代码 var aliPay = api.require('aliPay'); api.ajax({ url: yuming+'index.php/api/Alipay/getOrder', me ...

  3. apicloud 按返回键

    api.addEventListener({ name: 'keyback' }, function(ret, err) { //调取index.html暴露的方法 api.execScript({ ...

  4. apicloud 自定义模块的开发与上架注意事项

    模块开发要点与返回刷新页面注意事项 1.介绍 apicloud 除了使用官方提供的模块外,我们可以自定义一些模块供自己使用和上传到官方出售.针对没有提供或者价格过贵的模块,如果有时间自己可以进行研究. ...

  5. apcloud混合式开发app学习笔记

    修改图标新建项目检出到本地--------------------------1.api.ajax var loginName = $api.val($api.byId('uname')); var ...

  6. apicloud踩坑集锦

    最近在用apicloud开发,这里录入一些踩坑的地方,从头到尾,要多尴尬有多尴尬,新入app开发,记录一些心得,和遇到的坑以及解决办法. 1,apicloud 打包的Android app ,打开fr ...

  7. APICloud项目纪要

    一.页面之间的传递参数通过pageParam传递参数: api.openWin({ name: 'ware', url: './ware.html', pageParam: { wareId: 'w1 ...

  8. Apicloud_(项目)网上书城03_拓展模块实现

    Apicloud_(项目)网上书城01_前端页面开发 传送门 Apicloud_(项目)网上书城02_后端数据获取 传送门 Apicloud_(项目)网上书城03_拓展模块实现 传送门 实现商品详情页 ...

  9. doT模板双重循环模板渲染方法

    doT模板作为一个前端渲染模板,有着非常显著的有点.1.轻量.2.快捷.3.无依赖. 本文介绍一种几乎所有模板都会遇到的问题,双重循环渲染.我们知道在dot模板中循环渲染用的是{{~ it:value ...

随机推荐

  1. datename和datepart

    select datename(year, getdate()) + 'aaa11' --不报错 datename返回的是nvarchar类型 select datalength(datename(y ...

  2. BitAdminCore框架应用篇:(四)核心套件querySuite按钮功能

    索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/coo ...

  3. Win10更新失败 无限重启 怎么修复

    首先使用安全模式进入电脑,win+R 输入gpedit.msc,进入组策略管理器.或者在开始菜单输入gpedit.msc 在组策略的左侧依次单击打开“计算机配置—管理模板—Windows组件”,并在右 ...

  4. STM32F4时钟配置库函数详解

    在STM32中,所有的应用都是基于时钟,所以时钟的配置就尤为重要了,而不能仅仅只知道使用默认时钟. STM32F4的时钟树如上图所示,HSE为外部接入的一个8M的时钟,然后再给PLL提供输入时钟,经过 ...

  5. ! [rejected] master -> master (non-fast-forward)

    当向GitHub远程仓库提交请求时,常会出现  ! [rejected]  master -> master (non-fast-forward) 错误. 出现这种错误通常是由于远程仓库的文件版 ...

  6. tensorflow的日常Demo

    Session Session 是 Tensorflow 为了控制,和输出文件的执行的语句. 运行 session.run() 可以获得你要得知的运算结果, 或者是你所要运算的部分. 01-graph ...

  7. [HTML] H5在webApp中的注意事项

    常用的meta标签 <!--防止手机中网页放大和缩小--> <meta name="viewport" content="width=device-wi ...

  8. 当需要给<span>标签设宽度

    span{ display: inline-block; width: 100px; } 当需要实现横排单行文字,用到span并且想设宽度的时候, 用以上css来实现.

  9. JAVA是是如何处理字符的。

    String s = "fs123fdsa";//String变量 byte b[] = s.getBytes();//String转换为byte[] String t = new ...

  10. python学习笔记07-元组 字典

    元组: 元组里面的元素不可修改  创建后只可读  不可写 一个元素的时候 在后面加一个逗号 字典: 无序的 Python 中唯一的映射类型 采用键值对的形式存储数据 key必须是可哈希的  可哈希表示 ...