HT for Web嵌入QtWebKit的客户端解决方案

HT for Web嵌入QtWebKit的客户端解决方案

HTML5已经足够强大,但很多应用还是需要独立桌面客户端的解决方案,毕竟能操作本地文件等功能还是很多工具类软件短期内无法完全采用云方案替代。

hero

最近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-webkitHT for Web自然也能通过node-webkit打包成客户端应用程序,如下图所示:

22

最近遇到用户通过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的设置后一切就正常了!

Screen Shot 2014-11-14 at 12.11.54 AM

HTML5通过WebKit嵌入打包成本地应用已经不是新鲜事了,整个世界的各种客户端技术正在变得更加融合,无数种千奇百怪的客户端方案正在改变很多观点和架构,不久前的wwdc2014中的JavaScript for Automation我觉得是被严重忽略的亮点,整个mac osx系统和应用程序都可通过JavaScrpit进行调用,早期window得利于众多应用软件而普及,苹果在站稳了移动终端后,借助诸如JavaScript for Automation的动作吸引更多专业客户端开发者,也许会不知不觉在桌面领域翻盘。

Screen Shot 2014-11-14 at 1.27.25 AM

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109656.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GoLand 2021.8 激活码【最新永久激活】「建议收藏」

    (GoLand 2021.8 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWN…

    2022年3月25日
    105
  • maven快照更新策略_eclipse更新maven包

    maven快照更新策略_eclipse更新maven包1、为什么会有快照?开发中,A项目依赖于项目B,没有快照时,B每次改动我们就需要赋予给他一个新版本号,然后在A的pom.xml中修改B的版本,这不仅浪费版本号,而且会带来很多的沟通成本。快照就是为了解决这个问题而生的,每次B发布到私服,maven都会将B打上时间戳,A更新时会检查B的时间戳,如果晚于本地仓库B的时间戳,那么就会进行更新。2、快照更新策略注意,快照并不是每次ins

    2022年10月4日
    2
  • 简单网络管理协议SNMP(史上最全)

    简单网络管理协议SNMP(史上最全)简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议。在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现在,已经有了SNMPv3版本。SNMP版本…

    2022年10月17日
    2
  • 实现iota函数[亲测有效]

    voidReverse(char*s){chartemp;char*p=s;char*q=s;while(*p!='\0'){p++;}q

    2021年12月18日
    35
  • RabbitMq使用demo[通俗易懂]

    RabbitMq使用demo[通俗易懂]1.为什么使用mq2.常见的mq有哪几种3.RabbitMq使用配置4.RabbitMq使用demo4.总结5.参考

    2022年10月4日
    0
  • python实现 猴子摘香蕉「建议收藏」

    python实现 猴子摘香蕉「建议收藏」#猴子摘香蕉importsys#找到箱子defmove():globaliwhileTrue:a_1=input(“输入你下步走的地方:”)whileTrue:ifa_1==b:i+=1print(‘找到箱子,通过第一关,进入第二关’)push()else:.

    2022年9月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号