HT for Web嵌入QtWebKit的client解决方式
HTML5已经足够强大,但非常多应用还是须要独立桌面client的解决方式,毕竟能操作本地文件等功能还是非常多工具类软件短期内无法全然採用云方案替代。
近期Adobe公布的http://brackets.io也是类似的应用,Brackets这样描写叙述自己:An open source code editor for the web, written in JavaScript, HTML and CSS. 这种描写叙述在过去非常难想象竟然是编辑器的工具,现在採用WebKit嵌套各种壳的方案已让这类应用成为主流。
Adobe的Brackets採用的是自家的https://github.com/adobe/brackets-shell/套壳框架,只是brackets-shell仅为Brackets量身定做,并不建议一般应用使用:
Note: The brackets-shell is only maintained for use by the Brackets project. Although some people have definitely had success using it as an app shell for other projects, we don’t provide any official support for that and we haven’t done a ton of work to make
the app shell easily reusable. Many people will likely find it easier to use a project like node-webkit, which is more generic by design.
一般应用採用https://github.com/rogerwang/node-webkit,HT for Web自然也能通过node-webkit打包成client应用程序,例如以下图所看到的:
近期遇到用户通过Qt将HT for Web嵌入QtWebKit的解决方式,但遇到了显示正常但无法鼠标操作的奇怪问题,经过一番折腾才发现HT竟然把QtWebKit在桌面的环境,错误的识别为可Touch的移动终端环境,怎样正确推断Touch和Mouse的交互环境是很狗血的事情,可參考http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript/4819886#4819886 加上现在window8的就可以touch又可mouse让问题更加复杂化。
还好HT预留了可配置的方案,通过在引入ht.js包之前设置htconfig = {Default: {isTouchable:false}};强制HT採用常规的mouse事件进行处理。由于HT内部简单採用”ontouchend” in document的方案来推断,普通情况下桌面环境该值为undefined,移动终端为null,而QtWebKit竟然在桌面环境下也为null,结果HT採用了Touch的监听事件从而导致了无法操作的现象,通过htconfig的设置后一切就正常了!
HTML5通过WebKit嵌入打包成本地应用已经不是新奇事了,整个世界的各种client技术正在变得更加融合,无数种千奇百怪的client方案正在改变非常多观点和架构,不久前的wwdc2014中的JavaScript
for Automation我认为是被严重忽略的亮点,整个mac osx系统和应用程序都可通过JavaScrpit进行调用,早期window得利于众多应用软件而普及,苹果在站稳了移动终端后,借助诸如JavaScript for Automation的动作吸引很多其它专业client开发人员,或许会不知不觉在桌面领域翻盘。
HT for Web嵌入QtWebKit的client解决方式的更多相关文章
- HT for Web嵌入QtWebKit的客户端解决方案
HTML5已经足够强大,但很多应用还是需要独立桌面客户端的解决方案,毕竟能操作本地文件等功能还是很多工具类软件短期内无法完全采用云方案替代. 最近Adobe发布的http://brackets.io也 ...
- Unable to connect to web server 'IIS Express'(无法连接到Web服务器“IIS Express”)的解决方式-Jexus Manager
在运行微软示例工程eShopOnWeb时候, 在经过一段时间再运行启动报Error "Unable to connect to web server 'IIS Express'" ...
- Maven 用Eclipse创建web项目后报错的解决方式
1.maven中创建web项目后jsp可能会报错,因为其没有相关的依赖(包),和自带的动态网页项目创建不一样.所以在配置文件中要添加相关的依赖,比如servlet的 2.项目右键-maven-upda ...
- 基于HT for Web矢量实现3D叶轮旋转
在上一篇<基于HT for Web矢量实现2D叶轮旋转>中讲述了叶轮旋转在2D上的应用,今天我们就来讲讲叶轮旋转在3D上的应用. 在3D拓扑上可以创建各种各样的图元,在HT for Web ...
- HT for Web基于HTML5的图像操作(一)
HT for Web独创的矢量图片设计架构,使其具有强大丰富的动态图形呈现能力,但从最近知乎热议的“Adobe Photoshop 是否已经过时?”的话题,大家能体会到很多情况下实际项目不可能完全采用 ...
- 怎样用C#代码管理SharePoint解决方式
怎样用C#代码管理SharePoint解决方式 本文我们将了解怎样用代码管理SharePoint解决方式.我们使用server端对象模型抽取解决方式. SharePoi ...
- 基于HT for Web的Web SCADA工控移动应用
在电力.油田燃气.供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex.Silverlight甚至Applet这样的重客户端方案,在 ...
- 基于HT for Web的3D拓扑树的实现
在HT for Web中2D和3D应用都支持树状结构数据的展示,展现效果各异,2D上的树状结构在展现层级关系明显,但是如果数据量大的话,看起来就没那么直观,找到指定的节点比较困难,而3D上的树状结构在 ...
- 基于HT for Web的3D树的实现
在HT for Web中2D和3D应用都支持树状结构数据的展示,展现效果各异,2D上的树状结构在展现层级关系明显,但是如果数据量大的话,看起来就没那么直观,找到指定的节点比较困难,而3D上的树状结构在 ...
随机推荐
- Mysql 官方Memcached 插件初步试用感受 - schweigen - ITeye技术网站
Mysql 官方Memcached 插件初步试用感受 - schweigen - ITeye技术网站 Mysql 官方Memcached 插件初步试用感受
- 怎样高速正确的安装 Ruby, Rails 执行环境
对于新入门的开发人员,怎样安装 Ruby, Ruby Gems 和 Rails 的执行环境可能会是个问题,本页主要介绍怎样用一条靠谱的路子高速安装 Ruby 开发环境. 次安装方法相同适用于产品环境! ...
- POJ1087 A Plug for UNIX 【最大流】
A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13855 Accepted: 4635 ...
- VS2012配置astyle格式化代码
1.工具->扩展和更新,搜astyle插件,下载安装重启,当前是2.0版本. 2.工具->选项->AStyle Formatter->Edit,填入下面的,点击save,确定. ...
- 提升Delphi编程效率必须使用的快捷键(Delphi2007版本)
1. [CTRL+空格] [CTRL+SHIFT+空格] 这两个快捷键都是在代码编写过程中用到的,起提示作用,使用频率最高. CTRL+空格: 在当前光标处提示有哪些变量.函数可以使用.这个功能对于无 ...
- windows程序员进阶系列:《软件调试》之Win32堆
win32堆及内部结构 Windows在创建一个新的进程时会为该进程创建第一个堆,被称为进程的默认堆.默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中. 要获得_PEB的地址, ...
- hnnu 11546 Sum of f(x) (求一个数的全部约数和)
代码: #include<cstdio> #include<cstring> #define N 200000 using namespace std; long long f ...
- 浅谈 PHP 变量可用字符
原文:浅谈 PHP 变量可用字符 先来说说php变量的命名规则,百度下一抓一大把:(1) PHP的变量名区分大小写;(2) 变量名必须以美元符号$开始;(3) 变量名开头可以以下划线开始;(4) 变量 ...
- android画笔错位问题的解决
下面的画画板的代码: public class MainActivity extends Activity { private ImageView iv; private Bitmap baseBit ...
- PVPlayer的实现方式
关于opencore下多媒体播放,在mediaserver进程里面仅仅有一行代码: MediaPlayerService::instantiate(); 这行代码的作用是初始化一个MediaPlaye ...