HTML5已經足夠強大,但不少應用仍是須要獨立桌面客戶端的解決方案,畢竟能操做本地文件等功能仍是不少工具類軟件短時間內沒法徹底採用雲方案替代。javascript
最近Adobe發佈的http://brackets.io也是相似的應用,Brackets這樣描述本身:An open source code editor for the web, written in JavaScript, HTML and CSS. 這樣的描述在過去很難想象竟然是編輯器的工具,現在採用WebKit嵌套各類殼的方案已讓這類應用成爲主流。java
Adobe的Brackets採用的是自家的https://github.com/adobe/brackets-shell/套殼框架,不過brackets-shell僅爲Brackets量身定作,並不建議通常應用使用:node
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.git
通常應用採用https://github.com/rogerwang/node-webkit,HT for Web天然也能經過node-webkit打包成客戶端應用程序,以下圖所示:github
最近遇到用戶經過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讓問題更加複雜化。web
還好HT預留了可配置的方案,經過在引入ht.js包以前設置htconfig = {Default: {isTouchable:false}};強制HT採用常規的mouse事件進行處理。由於HT內部簡單採用」ontouchend」 in document的方案來判斷,通常狀況下桌面環境該值爲undefined,移動終端爲null,而QtWebKit竟然在桌面環境下也爲null,結果HT採用了Touch的監聽事件從而致使了沒法操做的現象,經過htconfig的設置後一切就正常了!shell
HTML5經過WebKit嵌入打包成本地應用已經不是新鮮事了,整個世界的各類客戶端技術正在變得更加融合,無數種千奇百怪的客戶端方案正在改變不少觀點和架構,不久前的wwdc2014中的JavaScript for Automation我以爲是被嚴重忽略的亮點,整個mac osx系統和應用程序均可經過JavaScrpit進行調用,早期window得利於衆多應用軟件而普及,蘋果在站穩了移動終端後,藉助諸如JavaScript for Automation的動做吸引更多專業客戶端開發者,也許會不知不覺在桌面領域翻盤。架構