搜索
查看: 923|回复: 2

web.blink(miniblink)跨线程调用演示

 关闭 [复制链接]

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-8-3 19:38:42 | 显示全部楼层 |阅读模式
这里一个简单的道理先要明确一下:
跨线程调用界面对象、界面函数的目的是为了方便交互。
但是界面线程始终只有一个,并不会因为你多线程去调用界面线程的函数,界面线程本身就变成多线程了。

例如你多线程调用界面上的浏览器控件打开网页,不等于就能让你界面上的浏览器控件有了分身术。
换句话说,相当于去乘火车,乘火车的是一个人、两个人......更多人,都不能让火车本身的数量增加。

下面我们看web.blink(miniblink)的例子(需要更新到最新版本)
import win.ui;
/*DSG{{*/
var winform = win.form(text="跨线程调用miniblink";right=1213;bottom=743)
/*}}*/

import web.blink.form;
var mb = web.blink.form(winform)

thread.invoke(
   
function(mb){
        
//打开网页
        mb.go("http://www.so.com")
        
        
//等待网页打开
        mb.wait();
        
        
//调用JS函数
        mb.querySelector("#input").value = "aardio";
        mb.querySelector(
"#search-button").click();
        
        
//等待网页打开
        mb.wait();
        
        
//执行JS脚本
        mb.doScript("window.aardioText = '欢迎使用搜索引擎';");
        
        
//调用JS函数
        mb.window.alert( mb.window.aardioText );
            
    },mb
//界面浏览器控件作为参数传入线程
)

winform.show();
win.loopMessage();
用法非常简单,什么都不用做,在新版本中默认就可以支持跨线程调用。


回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
 楼主| 发表于 2018-8-3 19:40:04 | 显示全部楼层

web.kit 跨线程调用演示

web.kit用法是一样的,只要把上面源码中的 web.blink替换为web.kit就行了(web.kit 需要更新到最新版本)

import win.ui;
/*DSG{{*/
var winform = win.form(text="web.kit 跨线程调用";right=1213;bottom=743)
/*}}*/

import web.kit.form;
var mb = web.kit.form(winform)

thread.invoke(
   
function(mb){
        
//打开网页
        mb.go("http://www.so.com")
        
        
//等待网页打开
        mb.wait();
        
        
//调用JS函数
        mb.querySelector("#input").value = "aardio";
        mb.querySelector(
"#search-button").click();
        
        
//等待网页打开
        mb.wait();
        
        
//执行JS脚本
        mb.doScript("window.aardioText = '欢迎使用搜索引擎';");
        
        
//调用JS函数
        mb.window.alert( mb.window.aardioText );
            
    },mb
//界面浏览器控件作为参数传入线程
)

winform.show();
win.loopMessage();


回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
 楼主| 发表于 2018-8-3 19:48:08 | 显示全部楼层
不但是浏览器控件可以支持跨线程调用,包括浏览器控件返回的js对象这些都可以支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-14 02:24 , Processed in 0.062500 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表