aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: JacenHe

使用 web.kit 开发桌面软件

  [复制链接]

1

主题

10

回帖

94

积分

一级会员

积分
94
发表于 2016-1-21 00:47:57 | 显示全部楼层
暂停按任意键后继续的代码怎么写哦

0

主题

2

回帖

17

积分

新手入门

积分
17
发表于 2016-3-12 23:41:54 | 显示全部楼层
用webkit 套用WEB时,WEB上实现的导出电子表格,会显视在WEBkit窗体上,并且乱码,不能弹出下载电子表格的东西。是什么原因?

1

主题

32

回帖

258

积分

二级会员

积分
258
发表于 2016-4-26 10:08:04 | 显示全部楼层
收藏学习

0

主题

10

回帖

89

积分

一级会员

积分
89
发表于 2016-5-15 17:52:12 | 显示全部楼层
谢谢分享

7

主题

46

回帖

377

积分

新手入门

积分
377
发表于 2016-6-1 20:22:20 | 显示全部楼层
ghost 发表于 2016-3-12 23:41
用webkit 套用WEB时,WEB上实现的导出电子表格,会显视在WEBkit窗体上,并且乱码,不能弹出下载电子表格的 ...

不仅是电子表格,WORD附件也是如此。。。

0

主题

9

回帖

58

积分

一级会员

积分
58
发表于 2016-6-15 14:04:06 | 显示全部楼层
还不能发送消息吗?

12

主题

39

回帖

310

积分

二级会员

积分
310
发表于 2016-9-23 09:15:26 | 显示全部楼层
  1.         <span onClick="abc()"> 点击测试 </span>
  2.         <script>
  3.         function abc(){
  4.         alert("点击测试"); //可以执行
  5.         windowCommand('close');  //可以执行 执行结果 关闭窗口
  6.         //windowCommand('alert('s')');
  7.         }
  8.         </script>
复制代码


这个是用webkit.go 打开的页面,这个页面里面怎么调用aardio的里面的函数,我是这么定义的

webkit.external = {
       
        newfuc=function(){
       
        winform.msgbox("开始")
               
        }
       
};


怎么在go打开的网址调用这个 newfuc 函数呢?

0

主题

1

回帖

7

积分

新手入门

积分
7
发表于 2016-9-27 10:42:59 | 显示全部楼层
在这个插件中,不能使用表单文件域,即上传控件点不开,怎么处理?

0

主题

1

回帖

7

积分

新手入门

积分
7
发表于 2016-12-16 01:36:47 | 显示全部楼层
想改UserAgent,有啥办法么?

0

主题

2

回帖

13

积分

新手入门

积分
13
发表于 2017-1-18 15:49:10 | 显示全部楼层
双击事件 dblclick 没有用了???怎么监听div的双击事件哪?

3

主题

11

回帖

124

积分

一级会员

积分
124
发表于 2017-2-12 20:41:13 | 显示全部楼层
Jacen.He 发表于 2017-2-12 12:46
此示例演示了aardio与Javascript间使用JSON交换数据的方法。

import win.ui;

请问还能买官方教程吗

2

主题

19

回帖

179

积分

一级会员

积分
179
发表于 2017-6-25 08:03:34 | 显示全部楼层
谢谢,原来这里有对web.kit, web.layout(HTMLayout内核), web.form的详细介绍

1

主题

13

回帖

176

积分

一级会员

积分
176
发表于 2017-6-27 19:00:33 | 显示全部楼层
Jacen.He 发表于 2017-3-7 16:43
import win.ui;
/*DSG{{*/
var winform = win.form(text="图标字体演示 - 注意字体从服务器下载需要一点 ...

使用这代码测试正常
  1. wb.go("http://download.aardio.com/v10.files/demo/font-awesome/test.html")
复制代码

里的URL改成本机IIS的测试页面字体就变成方框了,但在chrome和IE11显示都是正常的
这跟服务器端设置有关系么?

7

主题

16

回帖

149

积分

一级会员

积分
149
发表于 2017-9-6 09:12:39 | 显示全部楼层
webkit中怎样自定义http header???

170

主题

2184

回帖

1万

积分

管理员

积分
13236
 楼主| 发表于 2017-10-22 19:39:20 | 显示全部楼层
Firebug Lite支持web.kit,web.form这些浏览器组件,
只要简单的在HTML里加上这句代码就可以了:
  1. <script src="https://getfirebug.com/firebug-lite.js#overrideConsole"></script>
复制代码

如果加载速度慢可以改用国内的CDN https://cdn.bootcss.com/firebug- ... .js#overrideConsole 或者下载JS文件到本地。

下面是一个完整的示例,打开后按F12启动Firebug Lite:
//Firebug Lite
import win.ui;
/*DSG{{*/
winform = win.form(text=
"请稍候正在加载 firebug-lite.js......";right=1095;bottom=687)
winform.add()
/*}}*/

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

wbKit.onDocumentReady =
function(url,mainFrameJSState,frameJSState){
    winform.text =
"firebug-lite.js已加载,请按 F12 试一试!"
}

wbKit.html =
/**
<!doctype html>
<html>
<head>
    <script src="https://cdn.jsdelivr.net/gh/firebug/firebug-lite@firebug1.4/build/firebug-lite.js#startOpened"></script>
</head>
<body>
    <div id="header">现在主流的浏览器都提供开发工具,都可以通过按F12打开开发工具非常方便</div>
    <div id="container">
        在 web.kit 里只要简单的在代码中加上下面的代码也可以启动一个简单的开发工具:<br><br>
        <script src="https://cdn.jsdelivr.net/gh/firebug/firebug-lite@firebug1.4/build/firebug-lite.js#startOpened"></script>
    </div>
</body>
</html>
**/


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

/*
firebug lite支持的参数如下:
    saveCookies - false
    startOpened - false
    startInNewWindow - false
    showIconWhenHidden - true
    overrideConsole - true
    ignoreFirebugElements - true
    disableXHRListener - false
    disableWhenFirebugActive - true
    enableTrace - false
    enablePersistent - false

可以直接写在js网址后面,多个参数用逗号分开,例如:
    path/to/firebug-lite.js#enableTrace=true,overrideConsole=false

只写选项不写值默认就是(true)例如:
    path/to/firebug-lite.js#enableTrace,overrideConsole=false

也可以这样写:
    <script type="text/javascript"
    src="https://cdn.jsdelivr.net/gh/firebug/firebug-lite@firebug1.4/build/firebug-lite.js">
    {
        overrideConsole: false,
        startInNewWindow: true,
        startOpened: true,
        enableTrace: true
    }
    </script>
   
注意:
    不要改为压缩版 firebug-lite.min.js,这个JS压缩后会出错
*/


   

170

主题

2184

回帖

1万

积分

管理员

积分
13236
 楼主| 发表于 2017-12-26 02:14:52 | 显示全部楼层
新版改进了一下(升级aardio和web.kit扩展库),操作JS对象、数组更简单了:
import win.ui;
/*DSG{{*/
var winform = win.form(text="webkit - aardio操作js对象";right=1123;bottom=570)
winform.add(
edit={cls=
"edit";left=898;top=26;right=1363;bottom=539;db=1;dr=1;dt=1;edge=1;multiline=1;vscroll=1;z=1}
)
/*}}*/

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

//使用external接口定义网页脚本可调用的本地函数
wb.external = {  
    aardioCall =
function(object){
        
        winform.edit.print(
"-----------------遍历JS对象的所有成员-----------------------");
        
for name,value in table.eachName(object){
            winform.edit.print(
"对象",name,value);
        }
        
        winform.edit.print(
"-----------------遍历JS数组的所有成员-----------------------");
        
for i,v in table.eachIndex(object.array){
            winform.edit.print(
"数组",i,v);
        
        }
        
        winform.edit.print(
"-----------------直接转换为普通的对象-----------------------");
        
var obj = web.json.strip(object);
        winform.edit.print(obj);
    };
}

wb.html =
/**  
    <a href='javascript:
    external.aardioCall({
        url:"服务端URL",
        param:{a:1,b:2,c:3},
        array:[11,12,13,14,15]
    }); '>调用aardio函数external.aardioCall()操作JS对象、数组</a>
**/


winform.edit.orphanWindow();

winform.show()
win.loopMessage();


170

主题

2184

回帖

1万

积分

管理员

积分
13236
 楼主| 发表于 2017-12-26 02:16:36 | 显示全部楼层
大家知道inet.http与 web.form浏览器控件是可以自动共享会话的,这非常的方便,而webkit并不能与inet.http共享会话,但是没有关系,今天我已经升级了web.kit 扩展库以及标准库中的inet.http,使两者之间可以实现共享会话。

下面是演示代码,运行以下代码打开论坛以后,请输入用户名、密码登录论坛,然后点击“后台抓网页”按钮在 aardio中调用 inet.http 抓取网页,注意这时候抓取到的页面显示的是登录后的页面,可以看到 inet.http 与 web.kit 成功共享会话。
import win.ui;
/*DSG{{*/
var winform = win.form(text="web.kit/inet.http 共享会话 - 登录后再试";right=1206;bottom=795)
winform.add(
btnHttpGet={cls=
"button";text="后台抓取网页";left=1079;top=16;right=1183;bottom=60;dr=1;dt=1;z=1};
btnOpen={cls=
"button";text="打开网页";left=961;top=15;right=1062;bottom=57;dr=1;dt=1;z=5};
custom={cls=
"custom";text="custom";left=36;top=88;right=1173;bottom=766;db=1;dl=1;dr=1;dt=1;z=3};
edit={cls=
"edit";left=28;top=76;right=1190;bottom=765;db=1;dl=1;dr=1;dt=1;edge=1;hide=1;multiline=1;z=4};
editUrl={cls=
"edit";text="http://bbs.aardio.com";left=28;top=21;right=956;bottom=50;dl=1;dr=1;dt=1;edge=1;multiline=1;z=2}
)
/*}}*/

import web.kit.form;
var wb = web.kit.form( winform.custom );
winform.show();

//打开网页
wb.go("http://bbs.aardio.com/")

//自动点击登录页面
wb.waitQueryEles("a",{innerText="登录";href="login"} ).click();

import string.html;
import inet.http;
winform.btnHttpGet.oncommand =
function(id,event){
   
   
//首先取浏览器的userAgent,假装是浏览器
    var http = inet.http(wb.script.navigator.userAgent);
     
   
//禁用默认的cookie管理
    http.disableCache();
    http.disableCookies();
   
   
//把浏览器的cookie加上去
    http.addHeaders ={cookie = wb.cookie}
   
   
var str = http.get(wb.location);
   
if( str ){
        
if(!string.isUtf8(str))
            str = string.fromto(str,0,65001);   
            
        winform.edit.text = string.html.toText(str);
    }
   
else {
        winform.edit.text =
"";
    }
   
    winform.custom.hide =
true;
    winform.edit.hide =
false;
}

winform.btnOpen.oncommand =
function(id,event){
    wb.go( winform.editUrl.text );
    winform.custom.hide =
false;
    winform.edit.hide =
true;
}

wb.onURLChanged =
function(url){
    winform.editUrl.text = url;
}

//启动消息循环
win.loopMessage();

170

主题

2184

回帖

1万

积分

管理员

积分
13236
 楼主| 发表于 2017-12-26 02:17:29 | 显示全部楼层
import win.ui;
/*DSG{{*/
var winform = win.form(text="webkit 获取所有网站cookie")
/*}}*/

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

wb.go(
"http://www.baidu.com")
winform.show();   

win.delay(1000);

//写网站cookie
wb.cookieSet(   
    name =
"test";
    value =
"abc";
    domain =
".baidu.com";
    path =
"/";
    expires = time().addday(30)
)

//输出所有网站cookie
winform.msgbox( wb.cookieData().stringify() )

//转换为HTTP请求头格式
var cookies  = wb.cookieData().getCookies("baidu.com")

//首先取浏览器的userAgent,假装是浏览器
import inet.http;
var http = inet.http(wb.script.navigator.userAgent);

//禁用默认的cookie管理
http.disableCache();
http.disableCookies();

//把浏览器的cookie加上去
http.addHeaders ={cookie = cookies }

//跟浏览器共话
var str = http.get(wb.location);

win.loopMessage();
webkit的cookie格式支持标准库中的,可以使用 fsys.cookies加载,转换,存储,详细的请看库函数文档。

170

主题

2184

回帖

1万

积分

管理员

积分
13236
 楼主| 发表于 2017-12-29 02:10:36 | 显示全部楼层
web.kit可以直接支持上传文件:
import win.ui;
/*DSG{{*/
var winform = win.form(text="WebKit上传文件")
winform.add()
/*}}*/

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

wb.html =
/**
<body>
    <form action="http://eu.httpbin.org/post" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="file1" /><br />
        <input type="submit" value="上传" />
    </form>
</body>
**/


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

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

本版积分规则

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

GMT+8, 2024-4-15 04:11 , Processed in 0.076524 second(s), 20 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

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