有些時候我們需要動態的給某個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>

