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>

go语言使用go-sciter创建桌面应用(五) 加载元素资源的更多相关文章
- js动态创建的select2标签样式加载不上解决办法
js动态创建的select2标签样式加载不上:调用select2的select2()函数来初始化一下: js抛出了Uncaught query function not defined for Sel ...
- DLL动态库的创建,隐式加载和显式加载
动态库的创建 打开VS,创建如下控制台工程,工程命名为DllTest: 在弹出的对话框中选择"DLL"后单击"完成"按钮: 在工程中新建DllTest.h和Dl ...
- Swift微博项目--Swift中通过类名字符串创建类以及动态加载控制器的实现
Swift中用类名字符串创建类(用到了命名空间) OC中可以直接通过类名的字符串转换成对应的类来操作,但是Swift中必须用到命名空间,也就是说Swift中通过字符串获取类的方式为NSClassFro ...
- Android Handler 异步消息处理机制的妙用 创建强大的图片加载类(转)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 最近创建了一个群,方便大家交流,群号: ...
- React(九)create-react-app创建项目 + 按需加载Ant Design
(1)create-react-app如何创建项目我前面第一章介绍过了,这里就不过多写了, (2)我们主要来说说按需加载的问题 1. 引入antd npm install antd --save 2. ...
- 从整体上理解进程创建、可执行文件的加载和进程执行进程切换,重点理解分析fork、execve和进程切换
学号后三位<168> 原创作品转载请注明出处https://github.com/mengning/linuxkernel/ 1.分析fork函数对应的内核处理过程sys_clone,理解 ...
- 如何用Swift创建一个复杂的加载动画
现在在苹果应用商店上有超过140万的App,想让你的app事件非常具有挑战的事情.你有这样一个机会,在你的应用的数据完全加载出来之前,你可以通过一个很小的窗口来捕获用户的关注. 没有比这个更好的地方让 ...
- ASP.NET MVC - 启动创建项目,未能加载错误
VS2012以常规方式创建一ASP.NET MVC internet 项目.创建后F5启动项目,遇一错误: 未能加载文件或程序集“MySql.Web.v20, Version=6.9.4.0, Cul ...
- 在/etc/docker/下 创建daemon.json重新加载后docker无法启动问题 /etc/docker/daemon.json编辑不了 找不到
可能产生这个问题的原因至少有以下几个: 编辑daemon.json步骤不对:想要创建并编辑daemon.json,应该是先启动docker服务,此时系统自动产生/etc/docker目录,此时cat生 ...
随机推荐
- Haskell语言学习笔记(78)fix
fix 函数 fix 是一个在 Data.Function 模块中定义的函数,它是对于递归的封装,可以用于定义不动点函数. fix :: (a -> a) -> a fix f = let ...
- 如何遍历Map对象
方法一 通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使 ...
- java Overloaded的方法是否可以改变返回值的类型?
刚才看到这样一个题,下面的解释很乱,所以还是做一下试验比较好 public class Test { public static void main(String[] args){ Bae b = n ...
- CMake Error at cmake/OpenCVUtils.cmake
CMake Error at cmake/OpenCVUtils.cmake:1047 (message): Failed to download . Status= Call Stack (most ...
- NFS 网络文件系统制作
1. 构建根文件系统主要是建立相关的文件目录,以及各目录下相关的配置文件.管理工具等. 2. 首先创建文件目录. mkdir rootfs cd rootfs mkdir bin dev etc li ...
- Numpy random arange zeros
seed( ) 用于指定随机数生成时所用算法开始的整数值. .如果使用相同的seed( )值,则每次生成的随即数都相同: .如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间 ...
- fiddler常用操作之断点
fiddler常用操作断点 标签(空格分隔): fiddler断点 一.断点: 1.为什么要打断点呢? 比如一个购买的金额输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于1 ...
- 无线渗透wpa加密路由器
破解wpa加密路由器的原理不同于破解wep加密路由器,只能通过暴力破解获取. 但是获取握手keystream的原理差不多 首先杀死可能会和破解冲突的进程 airmon-ng check kill 开启 ...
- mac通过命令行获取证书和配置文件过期时间
背景:ios打包证书的profile配置文件过期了,导致以前已经打完的测试包不能安装.所以需要加上检测机制,在打包时提示证书是否将要过期,如果要过期了给出提示 方案: 1.查找profile配 ...
- Redis备份及回收策略
Redis备份(持久化) Redis备份存在两种方式: 1.一种是"RDB".是快照(snapshotting),它是备份当前瞬间Redis在内存中的数据记录; 2.另一种是&qu ...