WinCC OA-JS-CTRL脚本与JS交互

2021-03-02 12:28

阅读:585

标签:https   message   title   log   bottom   splay   返回   img   2-2   

使用webview 控件的时候 不免涉及到CTRL 与JS互相调用,这主要用到两个函数

oaJsApi.toctrl()及webview.execJsFunction(),

其中oaJsApi.toctrl()为js 向ctrl 发送消息;

webview.execJsFunction()执行js中的某个函数

JS传递消息到CTRL

1)新建pnl 拖入测试用控件

技术图片

依次拖入了 button textedit 和 webview 三个控件

2)新建jsctrl.html写入以下测试代码

div style="width:100%;text-align:center;font-size:20px;font-weight:bold;">CTRL 与 JS 交互div>

div style="width:100%;text-align:center;">
    button id="btn01" style="font-size: 20px;background-color: #00dd1c">发送消息到01button>
div>

div style="width:100%;text-align:center;">
    button id="btn02" style="font-size: 20px;background-color: #33aaff">发送消息到02button>
div>
script>
    //使用jQuery绑定 按钮1 触发函数
    $("#btn01").click(function () {
        btn01();
    });
    //使用jQuery绑定 按钮2 触发函数
    $("#btn02").click(function () {
        btn02();
    });
    //按钮1按下执行的的函数
    function btn01() {
        let params = {
            //命令参数 重要
            command:"btnClick01"
        };
        //关键代码
        oaJsApi.toCtrl(params,{
            //成功打印 ctrl 返回的内容
            success: function(data) {console.log(data);},
            error: function(data) { console.error(data);}
        });
    }
    //按钮2按下执行的的函数
    function btn02() {
        let params = {
            command:"btnClick02"
        };
        oaJsApi.toCtrl(params,{
            success: function(data) {console.log(data);},
            error: function(data) { console.error(data);}
        });
    }
script>

3)编写pnl的initialize事件 将jsctrl.html片段加载到webview中

技术图片

4)编写webview 的messageReceiced事件

技术图片

代码如下

messageReceived(mapping params)
{
    switch(params.params.command)
  {
    case "btnClick01":
      {
        //将btnClick01 marked 填入到TEXT_EDIT1 中
        string textcontent = TEXT_EDIT1.text();
        textcontent+="btnClick01 marked\n";
        TEXT_EDIT1.text(textcontent);
        //回传信息received btn01 给oaJsApi
        this.msgToJs(params, "received btn01");
        break;
      }
    case "btnClick02":
      {
        string textcontent = TEXT_EDIT1.text();
        textcontent+="btnClick02 marked\n";
        TEXT_EDIT1.text(textcontent);
        this.msgToJs(params, "received btn02");
        break;
      }
     default:
      break;
   }
}

5) 运行测试

技术图片

可以看到HTML中的按钮成功触发了CTRL的动作 并接收到CTRL 回传的信息

CTRL 调用JS

使用CTRL 调用JS 就简单了许多

1) jsctrl.html 新增代码

div style="width:100%;text-align:center;font-size:20px;font-weight:bold;">CTRL 与 JS 交互div>

div style="width:100%;text-align:center;">
    button id="btn01" style="font-size: 20px;background-color: #00dd1c">发送消息到01button>
div>

div style="width:100%;text-align:center;">
    button id="btn02" style="font-size: 20px;background-color: #33aaff">发送消息到02button>
div>

div id="ewoFun" style="width:100%;text-align:center;font-size:20px;">div>
script>
    //使用jQuery绑定 按钮1 触发函数
    ....省略...
    //按钮2按下执行的的函数
    function btn02() {
        let params = {
            command:"btnClick02"
        };
        oaJsApi.toCtrl(params,{
            success: function(data) {console.log(data);},
            error: function(data) { console.error(data);}
        });
}
//供CTRL 调用
function ewoFunction(param01,param02){
   $("#ewoFun").append(""+param01+param02+""+"");
}

/script>

新增了 ewoFunction 方法

2) 对button clicked 事件进行编码

技术图片

WebView_ewo1.execJsFunction("ewoFunction","Hello","JS");

我们传入了参数Hello 跟 JS 均为字符串

3) 运行测试

技术图片

可以看到 点击了三次button 均调用成功

更多精彩 码上关注

技术图片

WinCC OA-JS-CTRL脚本与JS交互

标签:https   message   title   log   bottom   splay   返回   img   2-2   

原文地址:https://www.cnblogs.com/indus-eric/p/13041624.html


评论


亲,登录后才可以留言!