Go语言使用go-sciter创建桌面应用(五) 加载元素资源

有些时候我们需要动态的给某个UI元素加载内容或数据。

demo6.go代码如下:

package main;
 
import (
    "github.com/sciter-sdk/go-sciter/window"
    "github.com/sciter-sdk/go-sciter"
    "log"
    "fmt"
)
 
func load(root *sciter.Element) {
    frame, _ := root.SelectById("frame");
    //load()类似jquery.load(),用于给元素加载指定内容
    //加载html内容
    frame.Load("http://www.qq.com", sciter.RT_DATA_HTML);
 
    txt, _ := root.SelectById("txt");
    //附加元素事件处理
    txt.AttachEventHandler(&sciter.EventHandler{
        //OnDataArrived 当资源被加载但未使用时调用
        //返回true,取消资源使用
        //返回false,遵循正常过程
        OnDataArrived: func(he *sciter.Element, params *sciter.DataArrivedParams) bool {
            //设置元素html
            he.SetHtml(string(params.Data()), sciter.SIH_REPLACE_CONTENT);
            return false;
        },
    });
    //加载本地原始数据
    txt.Load("file:///D:/gopath/src/gui/1.txt", sciter.RT_DATA_RAW);
 
    img, _ := root.SelectById("img");
    img.AttachEventHandler(&sciter.EventHandler{
        //OnDataArrived 当资源被加载但未使用时调用
        OnDataArrived: func(he *sciter.Element, params *sciter.DataArrivedParams) bool {
            //设置属性,给img标签设置src
            he.SetAttr("src", params.Uri());
            return false;
        },
    });
    img.Load("http://mat1.gtimg.com/www/images/qq2012/qqLogoFilter.png", sciter.RT_DATA_IMAGE);
 
    script, _ := root.SelectById("script");
    script.AttachEventHandler(&sciter.EventHandler{
        //OnDataArrived 当资源被加载但未使用时调用
        OnDataArrived: func(he *sciter.Element, params *sciter.DataArrivedParams) bool {
            fmt.Println(string(params.Data()));
            return false;
        },
    });
    //加载脚本资源
    script.Load("http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js", sciter.RT_DATA_SCRIPT);
}
 
func main() {
    w, err := window.New(sciter.DefaultWindowCreateFlag, sciter.DefaultRect);
    if err != nil {
        log.Fatal(err);
    }
    //加载文件
    w.LoadFile("demo6.html");
    //设置标题
    w.SetTitle("元素加载内容");
    //获取根元素
    root, _ := w.GetRootElement();
    //元素加载资源
    load(root);
    w.Show();
    w.Run();
}

demo6.html代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>元素加载内容</title>
    <style>
        #frame {
            width: 100%;
            height: 50%;
        }
 
        #txt {
            border: 1px solid #ccc;
            height: 50px;
            color: #000;
        }
    </style>
</head>
<body>
<iframe id="frame">
 
</iframe>
 
<div id="txt"></div>
 
<img id="img">
 
<script type="text/javascript" id="script"></script>
</body>
</html>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Regulations/article/details/105655361
今日推荐