api.execScript
在指定 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系统
接下来说一说这个方法在项目中的实际应用.
应用场景:
如上图所示,当选择入学时间,毕业时间的时候,需要从下方空白处弹出一个新的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
- 上一篇iOS简单的本地缓存
- 下一篇WKWebView与JS的交互
我的同类文章
- •APICloud平台的融云2.0优化2016-07-07阅读577
- •APICloud平台的融云2.0集成2016-04-06阅读3160
- •关于APICloud开发iOS出现不全屏问题2016-06-27阅读426
- •APICloud的iOS模块开发过程2016-02-17阅读574
- 猜你在找
api.execScript的更多相关文章
- apicloud+融云实现即时通讯
请尊重作者的辛勤劳动!!! 使用apicloud开发已经快2个月了,起初的目的就是为了实现安卓和苹果的兼容,属于一个试验项目,究竟apicloud是否能够满足公司的要求?最 终看来还是不错的,使用ap ...
- APIcloud微信支付和支付宝支付(方案2,主要在后台进行)
支付宝代码 var aliPay = api.require('aliPay'); api.ajax({ url: yuming+'index.php/api/Alipay/getOrder', me ...
- apicloud 按返回键
api.addEventListener({ name: 'keyback' }, function(ret, err) { //调取index.html暴露的方法 api.execScript({ ...
- apicloud 自定义模块的开发与上架注意事项
模块开发要点与返回刷新页面注意事项 1.介绍 apicloud 除了使用官方提供的模块外,我们可以自定义一些模块供自己使用和上传到官方出售.针对没有提供或者价格过贵的模块,如果有时间自己可以进行研究. ...
- apcloud混合式开发app学习笔记
修改图标新建项目检出到本地--------------------------1.api.ajax var loginName = $api.val($api.byId('uname')); var ...
- apicloud踩坑集锦
最近在用apicloud开发,这里录入一些踩坑的地方,从头到尾,要多尴尬有多尴尬,新入app开发,记录一些心得,和遇到的坑以及解决办法. 1,apicloud 打包的Android app ,打开fr ...
- APICloud项目纪要
一.页面之间的传递参数通过pageParam传递参数: api.openWin({ name: 'ware', url: './ware.html', pageParam: { wareId: 'w1 ...
- Apicloud_(项目)网上书城03_拓展模块实现
Apicloud_(项目)网上书城01_前端页面开发 传送门 Apicloud_(项目)网上书城02_后端数据获取 传送门 Apicloud_(项目)网上书城03_拓展模块实现 传送门 实现商品详情页 ...
- doT模板双重循环模板渲染方法
doT模板作为一个前端渲染模板,有着非常显著的有点.1.轻量.2.快捷.3.无依赖. 本文介绍一种几乎所有模板都会遇到的问题,双重循环渲染.我们知道在dot模板中循环渲染用的是{{~ it:value ...
随机推荐
- c#中取整方式
主要用到 System 命名空间下的一个数据类 Math ,调用他的方法 一共有三种方式: 第一种 Math.Round:根据四舍五入取整 第二种 Math.Ceiling:向上取整,有小数,整数加1 ...
- AJPFX平台有哪些优势?
AJPFX为全世界的客户提供高端金融投资产品服务.在欧洲,大洋洲.北美洲,亚洲均设有交易专用服务器,以保证交易系统正常和高速运作.给投资者提供可靠.稳定.正确的交易服务系统也是我们一直以来为客户提供的 ...
- yum 安装指定 kernel 版本源码
yum install "kernel-devel-uname-r == $(uname -r)"
- Python3.5 学习八 附加知识点 paramiko和rsa非对称秘钥的适用
关于paramiko: SSH SFTP 机器上没有安装该模块,只是初步了解了下,没有细细研究. 可能以后只有做运维的才能用到的吧 利用秘钥,在ssh中不输入用户名密码进行登录 利用秘钥进行FTP操作 ...
- window主机和centos主机之间相互传送文件
命令实现linux和window文件传送 一:下载配置pscp软件从http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html下载p ...
- 常见无线组网分析(NB-IOT组网和Mesh组网)
NB-IOT LoRa Zigbee WIFI 蓝牙 组网方式 基于现有蜂窝组网 基于LoRa网关 基于Zigbee网关 基于无线路由器 居于蓝牙Mesh的网关 网络部署方式 节点 节点 + 网关 ...
- Swift 里集合类型协议的关系
  Sequence A type that provides sequential, iterated access to its elements. 是最基础的协议,可以通过迭代来获取它的元素 ...
- Python小白学习之路(二十二)—【生成器】
一.什么是生成器? 生成器可以理解成是一种数据类型,特殊地是生成器可以自动实现迭代器协议其他的数据类型需要调用自己内置的__iter__方法所以换种说法,生成器就是可迭代对象 !回忆:很重要的迭代器协 ...
- iOS(Swift)-Runtime之关于页面跳转的捷径【Runtime获取当前ViewController,很常用】
写在前面 在我们操作页面跳转时,如果当前的类不是UIViewcontroller(下面用VC表示),你会不会写一个代理,或者block给VC传递信息,然后在VC里面进行 ///假如targetVc是将 ...
- 2、如何解决xamarin没有相关教程的的指导贴
本篇文章主要在于解决xamarin相关文档偏少的问题. 最终的代码并不重要.重要的还是那种处理的方式 授人以渔 群里有群友讨论说需要读取安卓的 充电电流.这样的问题实际上在原生java有一堆.但是到了 ...