粤ICP备10002843        ONE LABORATORY © 2012   
ONE浏览器添加了HTML语法高亮编辑扩展(含自动完成代码和DOM树状定位图功能)和网站(网页)离线下载扩展 ◆ 
如需通过电子邮件附件方式高速免费获取本站各下载资源,请说明具体条目(鼠标指向此处查看条目) ◆ 
最近更新日期:2012年5月17日 ◆ 
资 讯
○ ONE是什么
○ ONE的运行环境
○ 常见问题FAQ
○ 服务介绍
○ 适用范围
○ 费用说明
○ 说 明
○ 下 载
○ 使 用
○ 简 介
○ 下 载
○ 安 装
○ 使 用
○ 定 制
○ 单窗口/多窗口的最小代码
○ 窗口的基本原理
○ ONE的单窗口用法
○ 多窗口的基本原理
○ ONE的多窗口用法
○ 服务内容
○ 使用规则
○ 内容所有权
○ 私隐保护
○ 安全性与风险
○ 免责声明
○ 服务变更
○ 本条款的修改
○ WWW浏览器相关
○ C#, C++, C
○ Trident, Gecko, WebKit
○ 联系作者

下 载
○ Trident
○ Gecko
○ WebKit

开 发 指 引
○ 架构组成
○ 项目设定
○ 使用流程
○ API和接口
○ 枚举和辅助类
○ 控件

ONE是什么

  ONE实验室(ONE-LAB.NET)把主流的HTML排版引擎 WebKit,Gecko,Trident 的编程接口映射至命名一致的ONE接口,整理出一个可以在Visual C++ (6.0-10.0)中再次编程的Native VC++浏览器接口和.NET CLR下的C#、VB.NET开源浏览器控件( 查看全部源代码),ONE的完整模型也包含了一个小型WEB(代理)服务器的模型。

  ONE同时也是把html, javascript, css, c, c++, c#,lua综合研究的一个项目,除了结合了三种WEB浏览器核心技术之外,还根据ONE的设计目的通过静态链接的方式融合了以下技术:

LUA 5.2  SQLite 3.7.11  RAR 4.11  7-Zip 9.20  ZIP 2.0  DEELX RegEx 1.2




核心 Open
Edition

(C#)
Public
Edition

(C++)
Expert
Edition

(C++)
Lite
Edition

(C#, C++)
说明
 首次发布时间 2010.1 2010.9 2011.8 2011.11 ONE模型的演化顺序:
  1. ONE.NET
  2. ONE PE
  3. ONE EE
  4. ONE LE
 Javascript
 扩展能力
未实现 调用Native C++ 调用Native C++ 调用Native C++和.NET CLR 为每一个核心的window.external对象添加若干通用固定函数,利用window参数可以准确报告任何frame/iframe调用本地代码的事件,并包含当前的frame name和frame url
 状态 基本稳定 稳定 稳定 稳定 LE版本是对以往所有版本的审核或重构,以更人性化、更精简、更有效率为设计目标。
 接口定义 开源 固定不变 完善中 完善中 ONE的C++接口模型已完成从早期的.NET版本原型的升迁工作,LE版本的ONE C++接口是目前重点开发的模型,ONE-LAB基本上不再更新原.NET版本的控件项目。但仍提供项目源码给广大的.NET开发者和爱好者参考使用。
Trident5.05.05.05.0 1).NET控件的渲染能力接近当前系统的IE版本
2) C++接口的渲染能力接近当前系统的IE版本
Gecko1.9.2.181.9.2.271.9.2.28 1.9.2.27 1).NET控件的渲染能力接近Firefox 3.6.18
2) C++接口的渲染能力接近3.6.27/28
WebKitr88612534.x534.x 534.x 1).NET控件的渲染能力接近Safari 5.0.5
2) C++接口的渲染能力接近Safari 5.1.x




ONE的运行环境

  ONE的.NET CLR控件调用条件是安装了.NET CLR 2.0.50727运行时的MS Windows XP SP2,或MS Windows Vista/7.0。

  ONE的Native C++接口无需.NET CLR运行时,只需MS Windows XP SP2或以上的Windows操作系统。





常见问题FAQ
  1. .NET控件和C++接口是否必须同时安装:不需要,但.NET版本对.NET CLR运行时环境有依赖;而C++接口对VC/MFC的依赖已经整合在one.dll内部,即使VC6的也可以使用。
  2. C++接口dll编译时是否需要安装许多关联库:不用,只需要一个one.h文件,部分依赖可能来自Windows SDK 6.1,只要开发者正确安装Visual Studio即可。
  3. 为什么在虚拟机的WindowsXP不能运行或速度变慢:虚拟机并非真实的操作系统环境,部分机制可能与one.dll内部的设计要求有冲突,但ONE的设计是面向真实的操作环境。React OS下one.dll无法使用;Oracle Virtual Box/VMWare Workstation/MS Virtual PC下one.dll的性能下降。
  4. ONE是否支持在Linux里运行:Wine模拟器下不支持one.dll
  5. 为什么选择没有Chromium核心:Chromium核心曾经在ONE模型里短暂出现过,后来因Chrome计划的更新速度异常惊人,其模型无法很好的与ONE模型结合。但我们仍然能因为Chrome的优秀发展潜力从而刺激了Trident/Gecko/WebKit(Safari版本)的进化而获得价值。




友情连接 (请把“网站名称”和“网站地址”写好,发邮件至 hikarikurai139.com )

独木成林 X-Star 乐互联 云点云导航
浏览器之家 jQuery中文社区 软件酷 系统研究博客
浏览迷




 技术支持


服务介绍

通过COS(远程协作服务器),(ONE.NET控件、ONE C++接口)的用户和开发者可以在线获得来自ONE-LAB的技术支持服务。COS是ONE-LAB为远程协作服务专门开发的微型服务器程序,免费安装使用,采用非公开的网络通讯协议和优化的设计,可提供简单易用、用户方可控、操作公开透明和安全高效的远程协助服务。

COS运行于Windows XP(SP3)或以上版本的MS Windows系统上,每次启动时随机产生端口和密码,可运行在一般的用户权限之内(无需UAC)。每次启动后,有一驻留图标在桌面任务栏的驻留图标区域内,非连线时的图标状态是,连线时图标是。可以手动关闭服务器(断开远程连接,关闭端口)。连线服务时,可看到来自远端的鼠标操作和按键操作。

COS使用详细说明>>

下载 one-cos.exe (压缩文件411KB,实际大小758KB)>>
 md5: 37dc9927efb5d62bbb789616651acee2
sha1: 4fa4d8dac94d6ae194554ccc01daf36ae83eac53


适用范围
  • 若本机无外网IP地址,或若不能获得本机的网络防火墙设定的许可、或被安全类软件的禁止、或当前网络设备如路由器端口策略的不允许,则无法使用此服务。
  • 所有服务必须在符合国家和地区的法律允许的情况下进行,用户提出任何的违法犯罪的服务请求,则立即终止服务,并保留证据和积极配合相关法律法规追究的调查。
  • 服务1:电子邮件技术咨询服务和电话技术咨询服务。
  • 服务2:每次资助ONE-LAB.NET的发展100元人民币,则可免费获得30日的在线技术咨询服务,资金赞助请参考“支付方式”。技术支援QQ号码: ,转账时和添加QQ好友时,请备注好资助ONE-LAB.NET的发展,以便尽快开展服务。
  • 服务3:测试COS的连接可行性
  • 服务4:涉及ONE.NET控件的(VS2005-VS2010)C#少于2000行代码的调试;涉及ONE C++接口(VS2005-VS2010)VC少于1000行代码的调试。
  • 服务5:不涉及ONE.NET控件的(VS2005-VS2010)C#少于1000行代码的调试;不涉及ONE C++接口(VS2005-VS2010)VC少于500行代码的调试。
  • 服务6:不涉及代码调试,但涉及ONE.NET控件/ONE C++接口的应用程序的使用的主机软件故障排除。
  • 若连线后,意外地发生额外的其他技术支持服务或涉及到大量的代码或复杂的项目调试,视乎具体情况再经过双方议定待追加的差价并支付后执行。
  • 先支付后使用


费用说明
  • 服务1、2、3: 免费
  • 服务4、服务5: 100元人民币/次
  • 服务6: 50元人民币/次
  • 费用数额定期参考经济周期的各项数据指标进行调整
  • 当遇到以上服务暂时不能解决问题时,用户享有下一次相同的服务的免费使用权利,直至得到问题解决时本次收费服务完成。
  • 若因以下不可抗力的因素(非人为原因的停电、非人为原因的网路中断、自然灾难)而中断的服务,则免费继续上一次未完成的相同服务直至完成为止。
  • 支付方式:

    通过转账(支付宝/网上银行/电话银行等)
    至中国建设银行卡号:

    联络人电子邮件: hikarikurai139.com
    联络人移动电话: 139 29 554 117 陈先生

    可通过QQ留言、电子邮件、短信息或电话预约服务。根据建设银行提供的转入方信息和申请者预先通知的转入特征信息(转入方名称、转帐方式、转帐时间、账号的特征、电子邮件、手机号码)进行对比,以确认每个申请者的身份和具体服务,确认到款后即尽快提供服务,每次使用时用户需告知本机的外网IP地址和端口(格式如:1####-########,#表示0-9),具体操作请查看 - COS使用详细说明 >>

 Web(代理)服务器


说 明

  此处的“Web服务器”指ONE-LAB自主设计的万维网服务器和代理服务器(HTTPS:未实现;HTTP Pipeline:未实现;Forward Proxy:已实现;Reverse Proxy:未实现)。Windows 7下用VC10编译,Linux 3.0.3下用GCC 4.6.1环境编译。目前此模型还是一个粗糙的设计,仅适宜作为非商业用途的测试使用,敬请留意。


下 载 (更新日期:2012年1月21日)

(1) 源码编译和运行示意图 >>

(2) Windows版本的 websvr.7z >>
7z文件:53.2KB,实际大小:148KB
md5:69eb65cbcc89063d3b1b41f91228e162
(3) Linux版本的 websvr.gz >>
gz文件(执行文件:elf格式):23.2KB,实际大小:61.2KB
md5:ea707de9b1d01bdff479ccf2d94e1934

使 用

(1) Web服务器性能说明

不同类别的内容(ContentType、目录路径、文件路径)可定制不同的最大并发连接数和最大上传速度,相同服务器进程的综合指标不会超过全局的限制。单个IP的最大并发连接数同时不能超过(Windows:16个,Linux:6个),相同服务器进程的IP并发连接数不会超过全局的限制。

以下是内部定义的Web服务器默认配置(未使用配置文件时的),使用了配置文件后还可以针对指定IP段对应指定目录路径和文件路径进行白名单访问权限限制前提下),配置文件语法设计和相应的解释模块正在调试中。因为HTML/JS/CSS文件是浏览器客户端的首要加载部分,所以默认配置设定中优化了它们的最大上载速度和最大连接数,而图片、octet-stream等其他类型为端点类型,在全局性能平衡策略下弱化了它们最大上载速度和最大连接数。

在按移动平均计算出单个连接的最大上传速度之后,与对应类型(ContentType、目录路径、文件路径)的预定义最大上传速度对比,取更小值作为当前的上传速度,如果运行时突然修改对应类型(ContentType、目录路径、文件路径)的最大上传速度为0,表示暂时禁止该种连接的上传操作。

名目 类型 最大并发连接数 最大上载速度(KB/S)
全局 2-10241-8192
.htm
.html
text/html64128
.jsapplication/x-javascript64128
.pngimage/png6432
.jpg
.jpeg
image/jpeg6432
.gifimage/gif6432
.icoimage/x-icon6432
.csstext/css64128
.swfapplication/x-shockwave-flash6464
.txttext/plain64128
.7z
.rar
.zip
.exe
.bz2
.gz
.tar
application/octet-stream16128


(2) 代理服务器使用方式

命令行方式: 执行websvr --proxy ip:端口, 顺序必须一致。 如: websvr --proxy 127.0.0.1:8080 。运行时,能看到GET指令和POST指令的地址信息,HTTPS代理未实现。

(3) Windows的Web服务器使用方式

命令行方式: 执行websvr 路径名称 端口 IP 最大上载速度 最大并发连接 默认的index文件, 顺序必须一致。 如: websvr z:/one-lab/http/ 80 127.0.0.1 256 32 index.htm

(4) Linux的Web服务器使用方式

下载websvr.gz到特定的目录,如:/home/bin,执行gunzip websvr.gz,再执行chmod +x ./websvr使其具有可执行权限。使用时如: /home/bin/websvr /home/websvr/http/ 80 0.0.0.0 64 64 index.htm

(5) 关闭

按下ctrl+c即可停止服务、关闭端口和退出进程。也可关闭控制台窗口。

 ONE浏览器

  基于ONE接口技术开发的ONE浏览器是一个实现最基本的互联网WWW内容浏览功能的浏览器应用程序,主要支持http和https两种互联网通讯协议的内容浏览(已内置无需安装的最新版本Adobe Flash Player播放插件、Sumatra PDF文件阅读插件、VLC影音文件播放插件)。多窗口显示,内置的沙盒设计模型支持以进程为单位的插件白名单和黑名单功能(ActiveX和NPAPI),是一个以保持简洁高效为设计目的浏览器。通过适当的定制,用户还可以同时启动多个进程实例,且分别独立使用各自的缓存和会话信息,支持无界面(无导航工具条、无状态栏)仅一个窗口的最简洁运行方式使用。当用户把缓存目录定制在NTFS分区时,自动使用缓存保密算法。
发布日期:2012年5月17日 文件大小:45.4MB, 发email至 hikarikurai@139.com 免费下载文件
md5: be98e13242d96a719955a2945c148647
sha1: 73145a5584f8d4f0249f2304fd205076b0e2a4d9
三种核心 + { Adobe Flash插件, Sumatra PDF插件, VLC视频音频播放插件 } x { ActiveX, NPAPI }
  建议Windows XP用户选择WebKit或Gecko核心安装,直接安装即可,Windows 7用户无需UAC权限,Windows XP用户也无需使用管理员权限,ONE是面向一般用户级别的系统权限而设计的。ONE是绿色软件,不含第三方广告插件。如果你熟悉了ONE浏览器启动参数,也可以根据实际需求自行定制打包分发给其他用户使用。
  • 影音文件直接播放:直接把webm, 3gp, amr, ra, aac, wav, mp3, flv, mp4, asf, avi, f4v, ogg, rmvb, rm, mpg, mov文件拖入窗口立即播放,当网页内的iframe来源值src检测时,也能在子窗口内播放。此功能正在进一步完善之中,ONE-LAB正在优化ONE专用VLC核心和专用的ActiveX和NPAPI模块代码,将逐渐支持更多格式的视频和音频文件。
  • PDF/XPS/CHM文件加载:直接将电脑上的PDF、XPS、CHM文件拖入窗口,即可打开这三种文件;若从网页上加载PDF、XPS,三种核心均可直接在页面内(或iframe内)加载。
  • 动态Lua脚本加载:
    1. 支持Lua脚本对浏览器窗口进行动态修改和管制 >>
    2. 查看使用Lua脚本在页面内创建PDF阅读器的示范代码 >>
  • 7Z/ZIP/RAR文件置换为本地HTTP功能:把一个7Z(7zchm)/ZIP/RAR文件(含密码的压缩文件需在文件尾加*号,如7z://k:\temp\file1.7z*,只支持英文数字符号文件名)转变为一个本地http服务器文件源,并限制在本进程内读取(不产生临时文件,直接解压在内存中),重复请求的文件地址已缓存在内存中加速读取(最大缓存文件数256个)。

      在地址输入栏输入: zip://c:\one-lab\index.epub(或rar://,或7z://),这里假设index.epub是对一个文件夹的zip打包文件,按下回车键后即可像访问一个http服务器一样访问该zip文件的文件和子目录的文件,默认根文件名为index.htm,最大支持压缩文件大小是256MB,单个还原文件的原始大小不超过16MB。如果该zip文件包内有一个被压缩文件是OEBPS\catalog.xhtml,则输入:http://127.0.0.1:动态端口/OEBPS/catalog.xhtml

  •   
  • 浏览操作:在输入框输入网址,按下回车即可浏览,只支持英文网址。(提示:ONE浏览器地址栏已内置了4600多个常用网址,输入中文或英文时若遇到类似的网址,可加速你的输入。
  •   
  • 搜索操作1:在输入框输入文本,按下回车。
  •   
  • 搜索操作2:在输入框输入文本,按下右边的搜索按钮,根据自己的需要,可分别使用网页搜索和视频搜索。
  •   
  • 选项操作:另存文件、缩放文档视图大小、清除会话信息和缓存信息、设定当前文档的字符集编码、搜索文本、打印文档、管理插件、查看安全证书(HTTPS通讯SSL证书)、批量刷新窗口、批量暂停加载窗口、批量关闭窗口
  • 保存整个网站:此功能可以另存当前的网址,通过适当的定制可以自动探测网页内元素从而能够另存特定网站的资源。提示:此功能正在完善和简化中,暂时只能通过英文菜单使用。
  • 页面另存后编辑文件:“页面另存为”操作成功后,自动打开源码编辑器编辑文件,此时文件处于“只读”状态,如需修改源码,需先从View菜单取消只读限制。此编辑器具有HTML源码语法高亮、自动完成代码和DOM树状图定位功能。出现乱码时,鼠标右键点击状态栏的编码框的Open As菜单切换编码,常见的乱码多出现在936 GBK和65001 UTF-8之间。提示:此功能正在完善中,暂时只能通过英文菜单使用。
  •   
  • 插件管理:打开插件管理窗口,默认状态下全部允许在本进程中加载,全部禁止后,再允许少数必须允许的条目后,则形成一个插件白名单,标识为禁止标记的条目的插件黑名单则在下次运行时失效,基于每进程设定的,不同进程可以设定不同。
  •   
  • 书签添加:按下输入框左边的按钮,选择“添加到书签”。
  •   
  • 书签管理:按下输入框左边的按钮,选择“打开书签文件夹”后可以删除、修改名称、添加目录、修改目录或移动位置。再次点击“打开书签文件夹”后看到修改后的结果。
  •   
  • 快速关闭窗口操作:鼠标中键(滑动键)点击当前窗口的标题栏会关闭当前窗口,如果剩下最后一个窗口时,会清除当前窗口的内容和浏览历史,然后最小化。
  •   
  • 缩放显示页面:按下Ctrl键+鼠标滑动键,向上滑动时放大显示,向下滑动时缩小显示。显示比例范围在原来0.1倍至10倍之间。
  • 前后翻阅历史:按下Alt键+方向左键,向后(更旧的时间)翻阅;按下Alt键+方向右键,向前(更新的时间)翻阅
  •   
  • 总是在当前窗口打开网址:按下Ctrl键+鼠标左键点击的网址在当前窗口打开
  •   
  • 总是在新窗口打开网址:按下Shift键+鼠标左键点击的网址在新窗口打开
  •   
  • 总是在新窗口后台打开网址:鼠标中键(滑动键)点击的网址在新窗口后台打开
  •   
  • 帮助操作:按下F1键可看到更多的键盘操作和鼠标操作。
  •   
  • 切换弹出窗口策略操作:按下F2键切换弹出窗口策略(窗口左下角状态栏处出现#符号时表示处于严格的弹出窗口过滤状态),默认状态时,弹出窗口由正在浏览的网页的脚本决定,切换为--strict-pop策略时,只有鼠标点击时的网址才允许弹出新窗口(拦截其他不符合条件的弹出窗口,也对包括Flash插件的弹出窗口)。
  •   
  • 定制启动参数   
        
    1. --help:查看所有启动参数的用法。
    2.   
    3. --self-proxy:激活进程内的代理服务器功能,能使加载到浏览器的内容不写入到磁盘而只发生在当前的内存中(物理内存少于1GB不建议使用),由于此功能独占了当前进程的HTTP代理通道(HTTPS不受影响),激活时其他需使用HTTP的程序可能不能正常使用HTTP协议通讯。(提示:仍在进一步完善,请慎用)
    4.   
    5. --strict-pop:严格限制新窗口打开的行为,新窗口的网址必须与鼠标指针点击时网址一致,否则被拒绝。此参数能有效防止正常点击但被恶意弹窗口的行为,但部分通过Javascript事件打开新窗口的行为也可能被拦截,只适用于特定网站,例如某些为了获取高访问量而刻意加载新窗口从而干扰正常浏览体验的网站。定制时需慎用,默认时无效。
    6.   
    7. --home:指定当前进程使用的缓存目录。示范:navigator.exe --home::d:\cache (提示:每个相同的缓存目录只能使用一个进程实例,也对应使用同一组的插件设定配置方案。
    8.   
    9. --url:指定启动时的网址。示范:navigator.exe --url::http://www.one-lab.net
    10.   
    11. --no-ui:当指定了启动时的网址后,再使用此参数可进入无界面的纯窗口状态。
    12. --ie7:使用IE7的工作方式启动,仅适用于Trident浏览器。
    13.   
    14. --private:进入私隐浏览模式(窗口左下角状态栏处出现*符号时表示处于私隐浏览模式),浏览时的浏览日志也不会被记录。关闭进程后,当前浏览过的缓存和会话信息被清除。(建议:为需要进行私隐浏览的那些网站指定自己的缓存目录,使其与不需要私隐浏览的缓存目录分开使用。
    15.   
    16. --allow-dlls:允许所有dll文件注入到当前的进程,不启用此功能时除了windows目录、当前one.dll所在目录、或系统能根据环境变量自动找到的dll文件之外的所有dll都不能注入当前的进程中(如某些字典工具、信息拦截程序)。默认时此功能是无效的(即禁止注入),禁止时可能不能使用部分扩展程序(如某些浏览器插件、多媒体播放扩展)。(没有被标记为“禁止”的插件仍然允许被加载使用
    17.   
    18. --rect:启动时的指定窗口位置和大小,单位为像素。示范:navigator.exe --rect::左,上,宽度,高度
    19.   
    20. --auto-download:启用下载检测功能,默认状态时不能自动下载。
    21.   
      
  •   
  不同的组合可以产生不同的运行配置策略:不同的独立缓存地址、不同插件白名单、不同的启动界面窗口、严格或宽松的弹出窗口策略、是否允许自动下载、是否保护用户的浏览私隐等等,根据实际情况而使用即可。

基本原理

发email至 hikarikurai@139.com 免费下载文件

(以下示例均使用了PE版本的one.h,尝试E(以下示例均使用了PE版本的one.h,尝试EE版本的示范前需先把EE版本的one.h覆盖示例项目中的PE版本one.h。两者的差别在于接口定义不同,基本原理是一致的。)

项目说明下载
单窗口程序1 (c++) 由vc编写,只包含了最必要的代码,示范如何创建一个窗口(无菜单栏,无状态栏,无任何元素,有图标)。 代码视图 >>
单窗口程序2 (c++) 更少的代码,用资源对话框实现。 代码视图 >>
单窗口程序3 (MFC) 只包含了最必要的MFC代码,示范如何创建一个窗口(无菜单栏,无状态栏,无任何元素,有图标)。 代码视图 >>
单窗口的ONE程序1 (c++) 由vc编写,只包含了最必要的代码,示范如何创建一个单窗口的ONE浏览器窗口(无事件处理,无方法调用)。one.dll文件和plugins目录(gecko/webkit)需放在Debug目录或者Release目录(假设$(OutDir)的位置是Debug或Release),工作目录需设定为$(OutDir) 代码视图1 >>
代码视图2 >>
代码视图3 >>
单窗口的ONE程序2 (c++) 更少的代码,用资源对话框实现,示范如何创建一个单窗口的ONE浏览器窗口(无事件处理,无方法调用)。one.dll文件和plugins目录(gecko/webkit)需放在Debug目录或者Release目录(假设$(OutDir)的位置是Debug或Release),工作目录需设定为$(OutDir)
单窗口的ONE程序3 (MFC) 只包含了最必要的MFC代码,示范如何创建一个单窗口的ONE浏览器窗口(无事件处理,无方法调用)。one.dll文件和plugins目录(gecko/webkit)需放在Debug目录或者Release目录(假设$(OutDir)的位置是Debug或Release),工作目录需设定为$(OutDir)
多窗口的ONE程序1 (c++) 由vc编写,用资源对话框实现,示范如何创建一个多窗口的ONE浏览器程序。one.dll文件和plugins目录(gecko/webkit)需放在Debug目录或者Release目录(假设$(OutDir)的位置是Debug或Release),工作目录需设定为$(OutDir) 代码视图 >>
ONE的使用条款

1. 服务内容
  ONE是一个在个人计算机 (桌面计算机、便携计算机)上提供可编程的浏览器组件与浏览器应用的计算机软件,ONE的主要功能是提供方便灵活的互联网超文本网页浏览服务。


2. 使用规则
  任何个人或者组织均可以在遵守所在国家和地区相关法律的前提下,自由地使用ONE控件、ONE接口和ONE浏览器。


3. 内容所有权
  ONE项目的著作权属于作者所有。
  Trident引擎 (源自Internet Explorer浏览器) 微软公司
  Gecko引擎 (源自Firefox浏览器) Mozilla组织
  WebKit引擎 (源自Safari浏览器) WebKit组织


4. 私隐保护
  ONE浏览器组件无任何收集用户私隐信息的功能,但不能确定所衍生出的第三方应用程序是否收集用户的私隐信息。
  ONE浏览器应用程序包含了方便浏览时使用的统计数据功能,该功能采用了ONE内部非开源的加密算法保护,不能随意被其他应用程序读取或修改 (基于MS Windows的特性,不能保证不被破坏)。这部分的数据仅保存在用户主机上作系统功能的一部分,不会传送到任何服务器上。
  ONE浏览器组件和ONE浏览器应用程序均运行在普通的MS Windows用户权限上,无需管理员权限或UAC。


5. 安全性与风险
  ONE不是一个完美的商业应用软件。基于MS Windows系统的特性,不能保证其不被恶意程序和计算机病毒感染;基于计算机网络的特性,不能保证其通讯不被截取或纂改。


6. 免责声明
  任何个人或团体因违反了本条款的第2条,与ONE的作者无关。ONE仅作为一个信息技术产品而存在发展,不牵涉任何政治、宗教或种族方面的主题。
  ONE是一个互联网应用程序组件,基于计算机网络的特性,在用户所在的网络线路出现故障或受管制的情况下不能保证完全访问任何网站。
  ONE作为一个MS Windows系统下的计算机程序,在用户所用的主机出现硬件或软件系统故障的情况下亦不能保证正常的运作。


7. 服务变更
  ONE是一个开发中的计算机软件项目,任何现有所提供的服务均有可能变更。


8. 本条款的修改
  本使用条款有可能因应需要随时修改,修过后的使用条款将出现在本页面上并即时生效。



接口库和控件下载

发email至 hikarikurai@139.com 免费下载文件



○ 文件目录说明

C++版本的入门必修项目有两个:Tiny Browser - 如何实现单窗口多页面Sample - 本地代码和Javascript的互相通讯、自定义右键菜单。多窗口方式可参考本文档的“基本原理”部分里面的相关示范。这两个项目则重点不同:Tiny Browser则重于如何实现完全使用资源对话框方式的单窗口多页面;Sample则重于IOne的主要方法调用示范。

Tiny Browser项目是为PE版本入门者学习的示范项目,是一个单窗口多页面(Tab Pages)方式的示范。EE版本编译时替换EE版本的one.h和one.dll后重新编译即可。

Sample项目默认拦截了application/x-shockwave-flash的Content-Type(用于演示如何精确地过滤每一个HTTP通讯下的Url和Content-Type),首次体验sample.exe示范程序时是不能加载Flash内容(因IOneFilters的过滤作用生效了),开发者需了解IOneFilters接口修改示范代码才能加载Flash内容(开发者自行开发的ONE应用在默认情况下是允许通过任何的Url和Content-Type)。

one.h 是Native C++接口的头文件。(提示:PE版本的one.h和EE版本的one.h是不同的,不能共用。)


○ 使用Gecko核心可能遇到的问题

(1) ONE.NET控件只能使用英文数字符号作为路径名称;C++接口不受此限制。

(2) 每次升级核心文件后,ONE.NET控件Gecko库若遇到Flash无法加载时,可尝试删除“%USERPROFILE%\AppData\Local\One Web Browser”下面的gecko目录。

(3) 每次升级Gecko版本后,必须先删除旧版本的fs目录,否则无法使用。

(4) 每次升级核心文件后,ONE C++接口的Gecko核心若遇到Flash无法加载时,可尝试删除“%USERPROFILE%\AppData\Local\Mozilla”下面的ONE目录。若指定了缓存目录(使用了ONE_SetHomeFolder()),则把该路径删除让Gecko重建缓存。


○ 使用WebKit核心可能遇到的问题

(1) ONE.NET控件不支持Java的运行,ONE C++接口模型支持Java。

(2) ONE-LAB已针对官方WebKit项目源码作了若干的改进或扩展功能,使用非ONE-LAB编译的Webkit.dll可能出现不可预测的运行结果。

(3) 请尽量使用ONE_SetHomeFolder()函数设定缓存路径以便在需要的时候可以方便地定位。在极少数的情况下,可能需要通过清除缓存目录让WebKit重建以排除缓存错误引起的故障。


○ ONE .NET开源(LGPL v3开源协议)控件 (Trident/Gecko/WebKit VS2010项目源码)

发布日期:2012年2月18日

压缩文件大小:23.1M


○ ONE LE (C#和C++通用模型,内含一个C#编写的多窗口多核浏览器项目源码)

版本说明:此版本是试用版本。正式完整版本需付费使用,包含ONE EE大部分功能,具体安排请密切留意公告信息。

发布日期:2012年4月24日

压缩文件大小:23.8M

OneLe.Src目录是源代码目录。

OneLe.{ Trident, Gecko, WebKit } 目录是标准的编译结果目录,调试时须先把这些对应核心所需的dll文件和相关文件都复制到Debug目录中。


○ ONE PE (Trident/Gecko/WebKit Native C++接口)

版本说明:此版本核心已不再升级,仅作为试用和演示。

发布日期:2012年4月24日

压缩文件大小:23.2M

三个引擎分别在各自的目录,每个引擎均独立运作;已包含Tiny Browser示范项目和Sample示范项目源码和标准编译结果

Gecko和WebKit的plugins目录可用于定制插件,实现了NPAPI规范的插件>>均可以放在plugins目录中,Trident的插件按一般Windows下的ActiveX安装方式使用。

○ ONE EE (Trident/Gecko/WebKit Native C++接口)

版本说明:此版本为付费使用版本。


基本概念



○ ONE for Native C++的架构组成(Native VC++开发)

1. API和接口

1.1 由"ONE_"式样开头的API函数和"IOne"式样开头的结构定义组成。

1.2 IOne结构是浏览器实例的入口定义,开发者可使用ONE_CreateNavigator()API创建和IOne.DestroyNavigator()方法释放。

2. 文件组

2.1 核心文件: one.dll -- 由C++编写/VS2005编译,根据不同的核心,分别包含了trident、gecko、webkit的接口,使用C语言风格的API定义和指针传递的方式实现(非ActiveX),每种核心独立运作。

2.2 Trident库文件: trident目录 -- 由C++编写/VS2005编译,集成了VC8 CRT运行时代码。

2.3 Gecko库文件: gecko目录 -- 由C++编写/VS2005编译,集成了VC8 CRT运行时代码。

2.4 WebKit库文件: webkit目录 -- 由C++编写/VS2005编译,集成了VC8 CRT运行时库文件。

2.5 地址过滤器
  • 使用与one.dll同目录下的 *-white-urls.txt 和 *-black-urls.txt 设定的条目进行过滤。
  • 包括了:白名单white和黑名单black。
  • 同时存在白名单和黑名单时,只采用白名单策略 (只有包含了白名单的字符串的网址才能被加载,因为是更严格的策略,请慎重使用,设定错误可能不能访问任何地址)。
  • 黑名单策略是指包含了黑名单上的字符串的网址都不能加载。
  • 以上两个策略的字符串都与大小写相关,具体用法请参考示范文件。



○ ONE for Native C++的项目设定(Native VC++开发)

输出文件夹设定:程序的输出文件夹(或调试时的工作目录)必须和one.dll(trident库/gecko库/webkit库)的位置一样。
32位编译方式:Visual Studio编译时目标平台必须采用Win32。
输出目录设置




○ ONE for .NET CLR控件的架构组成

1. 控件

1.1 主要由OneWebNavigatorControl控件和一些子类组成。

1.2 OneWebNavigatorControl是ONE命名空间里的浏览器控件,开发者可以在WinForm设计时嵌入,也可以在代码运行时动态创建和释放。

2. 文件组

2.1 核心文件:one.exe -- 由C#2.0编写/VS2010编译,同时集成了trident引擎和mshtml接口、gecko接口和webkit接口,集合了托管代码与非托管代码,使用了COM/XPCOM/Side-by-Side Assembly技术,基于.NET CLR的特性,既是库文件 (包含了ONE),亦是可执行文件 (包含了ONE Browser)。

2.2 Gecko库文件:gecko目录 -- 由C++编写/VS2005编译,集成了VC8 CRT运行时代码,基于ONE已作了部分修改,可参考源码下载。

2.3 WebKit库文件:webkit目录 -- 由C++编写/VS2005编译,集成了VC8 CRT运行时库文件,基于ONE已作了部分修改,可参考源码下载。

3. 过滤器

3.1 地址过滤器

  使用与one.exe同目录下的 *-white-urls.txt 和 *-black-urls.txt 设定的条目进行过滤。

  包括了:白名单white和黑名单black。

  同时存在白名单和黑名单时,只采用白名单策略 (只有包含了白名单的字符串的网址才能被加载,因为是更严格的策略,请慎重使用,设定错误可能不能访问任何地址)。

  黑名单策略是指包含了黑名单上的字符串的网址都不能加载。

  以上两个策略的字符串都与大小写无关,具体用法请参考示范文件。

3.2 内容过滤器:使用 *-download-types.txt 设定的内容类型进行下载检测,命中的类型对应的网络地址将被拦截 (无论是否下载),由开发者再根据事件报告的网址和类型决定是否下载。




○ ONE for .NET CLR控件的项目设定

输出文件夹设定:程序集文件的输出文件夹必须和one.exe的位置一样。
32位编译方式:在64位的Windows里,Visual Studio编译时目标平台必须采用x86 (32位)。
编译平台选择与输出目录设置


在调试器设定处取消hosting process选项。
不使用hosting process
Native VC++开发文档


 使用流程
  1. 启动引擎环境(每进程): ONE_Startup(引擎id, 模块实例hInstance)
  2. 定义IOne指针变量:IOne *pOne;
  3. 创建IOne实例:pOne = (IOne *)ONE_CreateNavigator(引擎id, 宿主窗口的HWND, 启动url, 宿主窗口内上下左右须保留的空白像素rectBounds)
  4. 初始化前的各种设定: pOne->Execute(命令id, 命令参数)
  5. 初始化前的设定事件处理器: pOne->SetEventsHandler(COneEvents *pEvents)
    /* 开发者自定义的class COneEvents : public IOneEvents {...}; */
  6. 初始化: pOne->Initialize(NULL)
  7. 释放: pOne->DestroyNavigator()
    /* 不能使用C++的delete方法 */
  8. 关闭引擎环境(每进程): ONE_Shutdown(引擎id)
  • 提示1: 对IOne和IOneEvents等接口进行继承和指针获取时的定义必须按照one.h的设定顺序编排,否则结构指针在传递时会因为顺序不对出现无可预测的错误。
  • 提示2: 宿主窗口收到WM_SIZE时IOne实例会自动根据rectBounds预留大小调整自己的窗口矩形。
  • 提示3: 不设定IOneEvents处理器时仅能浏览,不能处理用户输入、打开/弹出窗口处理。
  • 提示4: 使用IOneEvents处理器必须在所在的Windows线程信息处理过程处(TranslateMessage()和DispatchMessage()方法之前)加入ONE_PreProcessMessage()预处理输入信息,详情可参考示范代码。
  • 提示5: 示范项目sample虽然用vs2005编写,但对lib文件无依赖,只针对one.h有依赖,对于vs2008和vs2010环境升级解决方案后即可使用。
  • 提示6: 编译链接不成功时,请确认vs2005/vs2008/vs2010的VC安装相关项是否完整,部分关联可能源自Windows SDK(建议安装Windows SDK 6.1或以上的版本)
  • 提示7: PE版本和EE版本的头文件有区别,使用时须根据不同的版本使用,不能通用。
  • 提示8: C++版本的ONE WebKit核心暂不能兼容vs2010项目编译。
 API (更新日期:2011年12月24日),详细定义可参考one.h文件。

名称用途tridentgeckowebkit
ONE_SetHomeFolder在创建首个IOne实例前,指定主目录,重导向缓存目录和其他运行时数据的存放位置。可用可用可用
ONE_CreateNavigator创建IOne实例指针可用可用可用
ONE_PreProcessMessage预处理宿主窗口所在线程的用户输入信息可用可用可用
ONE_InstallFilter安装Url地址和ContentType内容类型过滤器接口可用可用可用
ONE_Startup启动引擎环境可用可用可用
ONE_Shutdown关闭引擎环境可用可用可用

 IOneEvents接口 (更新日期:2012年2月28日)

名称用途tridentgeckowebkit
导航信息变化事件
Event_ReportNavigatingProgress报告加载进度百分比可用可用可用
Event_NavigationTitleChanged导航标题变化可用可用可用
Event_NavigationStatusTextChanged状态栏文本变化可用可用可用
Event_NavigationUrlChanged导航网址变化可用可用可用
Event_NavigationStateChanged导航状态变化(内置的浏览日志使用)可用可用可用
窗口事件
Event_BeforeOpenUrl在打开新的url之前(用户输入引起)可用可用可用
Event_BeforePopupUrl在弹出新的url之前(脚本运行引起)可用可用可用
Event_BeforeCloseWindow关闭窗口(脚本运行引起,主文档窗口执行window.close()时发生,frame/iframe无效)可用可用可用
Event_BeforeOpenModalDialog在打开模式对话框之前(脚本运行引起)可用可用可用
用户输入事件
Event_BeforeClickMouse在用户点击鼠标之后发送到引擎核心之前可用可用可用
Event_BeforePressKey在用户按下键盘之后发送到引擎核心之前可用可用可用
导航行为变化事件
Event_BeforeNavigate在每一个Frame决定浏览一个网址之前(可取消)可用可用可用
Event_StartNavigating每一个Frame开始浏览一个网址可用可用可用
Event_CompleteNavigating每一个Frame完成浏览一个网址可用可用可用
Event_BeforeDownload请求下载一个网址之前可用可用可用
Event_NotifyNavigationError在出现浏览错误时提示可用可用可用
Event_BeforeMoveWindow响应window.moveTo(), window.moveBy(), window.sizeTo(), window.sizeBy()函数
Event_BeforeMoveWindow(IOne* CONST source, INT flag, INT nValue1, INT nValue2, INT nValue3)
  • 若flag = 1024,nValue1表示x方向的位移, nValue2表示y方向的位移
  • 若flag = 2048,nValue1表示x轴的新坐标, nValue2表示y轴的新坐标
  • 若flag = 4096,nValue1表示宽度的增量, nValue2表示高度的增量
  • 若flag = 8192,nValue1表示新的宽度, nValue2表示新的高度
  • nValue3是用于对齐现有IOneEvent接口内存地址表的保留变量,暂不使用
可用可用可用
脚本信息提示事件
Event_BeforeAlertMessagewindow.alert()执行之前可用可用可用
Event_BeforeConfirmMessagewindow.confirm()执行之前可用可用可用
Event_BeforePromptMessagewindow.prompt()执行之前。此事件已被取消实现,为保持现有的内存格式,切勿去掉one.h中的定义。未实现未实现未实现
右键菜单事件
Event_BeforeShowContextMenu在显示右键菜单之前可用可用可用
Event_AfterShowContextMenu在显示右键菜单之后(自定义菜单项执行之前)可用可用可用
对象通讯事件
Event_DispatchFunction在成功部署(Deploy方法)一个外部函数后(相对于HTML文档对象而言),当HTML文档的Javascript调用这个函数时响应的事件可用可用可用

 IOne接口 (更新日期:2012年2月19日)

名称用途tridentgeckowebkit
EE方法(Expert Edition,包含PE的方法)
ClearCaches清除缓存数据可用可用可用
ClearCookies清除Cookies信息可用可用可用
GetZoom读取当前的文档视图缩放比例可用可用可用
SetZoom设定当前的文档视图缩放比例可用可用可用
GetMainDocumentUrl读取当前的主文档地址可用可用可用
GetUrlAtPoint读取当前核心窗口的指定鼠标指针的网址(如果存在)可用可用可用
GetSnapBitmap获取当前核心窗口的位图可用可用可用
GetCoreWindowHWND获取当前核心窗口的HWND值可用可用可用
GetCoreWindowMargins获取当前核心窗口的边界空白值可用可用可用
ReadMainDocumentHtml读取主文档的HTML文本可用可用可用
WriteMainDocumentHtml写入主文档的HTML文本可用可用可用
ShowFindTextWindow打开搜索文本窗口可用可用可用
GetMainDocumentEncoding获取主文档的字符集编码可用可用可用
SetMainDocumentEncoding设定主文档的字符集编码可用可用可用
PrintDocument打印文档可用可用可用
ClearHistoryLogs清除当前记录的浏览历史可用可用可用
GetSelectionText获取选定的文本可用可用可用
PE方法(Public Edition)
Initialize初始化可用可用可用
DestroyNavigator释放浏览器可用可用可用
Navigate浏览网址(支持指定名称的子文档窗口iframe/frame的浏览)可用可用可用
NavigateByNamedFrame浏览网址(支持指定名称的子文档窗口iframe/frame的浏览,支持按文本特征检索。)可用可用可用
Inject注入HTML和Javascript(可运行,不返回结果)(支持指定名称的子文档窗口iframe/frame的注入)可用可用可用
InjectByNamedFrame注入HTML和Javascript(可运行,不返回结果)(支持指定名称的子文档窗口iframe/frame的注入,支持按文本特征检索。)可用可用可用
Deploy配置外部接口(支持指定名称的子文档窗口iframe/frame的配置)

使用说明
  • 把本地对象接口安装到指定的HTML文档中,让文档中的HTML和Javascript可以访问外部接口并传送数据。
  • 每次被部署的扩展对象调用时会分发Event_DispatchFunction事件,并传递事件来源(IOne*)、函数名称、输入参数表指针和输出参数指针。
  • 和Invoke方法的区别:Invoke指的是本地代码对HTML文档中的Javascript的调用,Deploy是为HTML文档中添加外部对象(如c++本地代码的接口),然后让Javascript调用,从而可扩展更多的对象或覆盖原有的对象。
不适用可用可用
DeployByNamedFrame配置外部接口(支持指定名称的子文档窗口iframe/frame的配置,支持按文本特征检索。)不适用可用可用
Invoke调用Javascript,返回结果(支持指定名称的子文档窗口iframe/frame的调用)

使用规则
  1. 使用VARIANT结构传送输入参数表和输出结果
  2. 输入参数的类型目前支持:VT_BOOL(c++的bool, 对应VARIANT.boolVal值);VT_I4(c++的long, 对应VARIANT.lVal值);VT_R8(c++的double, 对应VARIANT.dblVal值);VT_BSTR(BSTR类型, 对应VARIANT.bstrVal值)
  3. 其他VT类型的输入参数会返回一个E_INVALIDARG值
  4. 对Gecko和WebKit,输出结果只返回VT_BOOL/VT_I4/VT_R8/VT_BSTR类型的值
可用可用可用
InvokeByNamedFrame调用Javascript,返回结果(支持指定名称的子文档窗口iframe/frame的调用,支持按文本特征检索。)可用可用可用
Execute执行预定义命令(ONE_COMMAND_开头的设置命令,IOne::Initialize()方法调用前执行)
  • NO_IMAGES: 不加载图片(默认加载)
  • NO_SCRIPTS: 不加载javascript(默认加载)
  • NO_JAVA: 不加载java(除gecko)(默认加载)
  • NO_RUN_PLUGINS: 不加载插件(默认加载)
  • NO_DOWNLOAD_PLUGIN: 不下载插件(仅trident)(默认下载)
  • NO_VIDEO: 不加载视频(仅trident)(默认加载)
  • NO_BGSOUNDS: 不加载背景声音(仅trident)(默认加载)
  • NO_FRAMES: 不加载iframe/frame(除webkit)(默认加载)
  • SET_KEYPRESS_PROBER: 开关键盘按键事件元素探测(默认无效,关闭可提升性能)
  • SET_MOUSECLICK_PROBER: 开关鼠标单击事件元素探测(默认无效,关闭可提升性能)
  • SET_INTERNAL_LOG: 开关内部的浏览日志记录器(默认不启用,关闭可提升性能)
可用可用可用
StopNavigating停止加载可用可用可用
Reload重新加载当前正在浏览的网址可用可用可用
SetCursorFocus设置光标焦点可用可用可用
SetContextMenu设定右键菜单
  1. 设置内置菜单的Enable和Visible
  2. 动态添加、设定和删除自定义菜单项
可用可用可用
GoBackward往访问时间旧的方向打开内置的浏览历史记录网址可用可用可用
GoForward往访问时间新的方向打开内置的浏览历史记录网址可用可用可用
GoToLogCursor跳转到浏览内置的浏览历史记录节点所在的网址可用可用可用
获取属性
GetVersion版本编号,格式为:年/月/日 时:分:秒,即编译时间可用可用可用
GetIsAlive引擎核心是否处于活动状态可用可用可用
GetHostWindow获取宿主窗口的HWND可用可用可用
GetIsNavigationBusy导航状态是否繁忙可用可用可用
GetEngine引擎ID
  • 0 = UNKNOWN
  • 1 = TRIDENT
  • 2 = GECKO
  • 4 = WEBKIT
可用可用可用
GetNavigationTitle当前导航文档的标题可用可用可用
GetNavigationUrl当前导航文档的网址可用可用可用
GetLastStatusText最近一次记录的状态栏文本可用可用可用
GetCurrentLogCursor当前所在内置的浏览历史记录节点可用可用可用
GetNavigationState导航状态(内置的浏览历史记录是否可前进或后退)可用可用可用
处理器设定
SetEventsHandler设定事件处理器可用可用可用
鼠标按键设定
GetMouseKeyEnable查询鼠标按键是否可用可用可用可用
SetMouseKeyEnable设定鼠标按键是否可用可用可用可用



ONE-LAB.NET © 2009,2010,2011,2012, All rights reserved.