• 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>
    

  • 相关阅读:
    网络爬虫学习软件篇-Python(一)下载安装(超详细教程,傻瓜式说明)
    Vue.js+BootStrap+.Net Core开发后台管理系统 初次接触学习记录(11-7)
    形参 ref 到底是做什么用的?
    SweetAlert拒绝单一的弹出警告框
    轻松学习C语言编程之函数知识详解
    C语言的这个小知识点,竟然连开发多年的老司机都了解的不完全
    「C语言」编程学习—控制语句goto语句解析!
    数学思维+C语言画小猪佩奇,来试试?
    抖音很火的告白编程程序,C语言一样也能做
    世界最强的编程语言:C语言
  • 原文地址:https://www.cnblogs.com/jkko123/p/7053998.html
Copyright © 2020-2023  润新知