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

  • 相关阅读:
    Git代码行数统计命令
    JPA访问数据库的几种方式
    爱码小士丨代码一敲十年,收入虽高前途摇摆
    “肉瘾”女孩从软件测试工程师到主管的成长感悟
    华为测试大牛Python+Django接口自动化怎么写的?
    携程大牛的单元测试是怎么样写的?
    Jmeter参数的AES加密使用
    弄啥嘞?热爱你的Bug
    “进腾讯工作一个月,我想辞职了”
    我在华为,软件测试人员在工作中如何运用Linux?
  • 原文地址:https://www.cnblogs.com/jkko123/p/7053998.html
Copyright © 2011-2022 走看看