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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM