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