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
     

    我的同类文章

     
     
    猜你在找
  • 相关阅读:
    CF1539 VP 记录
    CF1529 VP 记录
    CF875C National Property 题解
    CF1545 比赛记录
    CF 1550 比赛记录
    CF1539E Game with Cards 题解
    CF1202F You Are Given Some Letters... 题解
    vmware Linux虚拟机挂载共享文件夹
    利用SOLR搭建企业搜索平台 之九(solr的查询语法)
    利用SOLR搭建企业搜索平台 之四(MultiCore)
  • 原文地址:https://www.cnblogs.com/shuibi/p/6404655.html
Copyright © 2011-2022 走看看