zoukankan      html  css  js  c++  java
  • 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系统

    可提供的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

    }, functionreterr ){

        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
     

    我的同类文章

     
     
    猜你在找
  • 相关阅读:
    MT4系统自带指标代码
    [转载]一个鼠标键盘控制两台甚至多台主机的方法
    国内外证券交易系统开发平台比较
    Win8系统下MT4不能添加指标无法找到技术指标
    Unable to locate package错误解决办法
    ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock
    ubuntu永久修改主机名
    Ant之build.xml详解
    Memory和Storage有什么区别?
    ubuntu下创建eclipse桌面快捷方式
  • 原文地址:https://www.cnblogs.com/shuibi/p/6404655.html
Copyright © 2011-2022 走看看