本文回答了一系列关于K/3 Cloud HTML5端应用的疑问,包括浏览器滚动条出现原因、大数据量下的分页处理、HTML5与桌面客户端的功能差异、IE11兼容性问题、数字录入控制、内外网端口映射设置以及https到http的映射配置。解释了浏览器滚动条因内容超出屏幕而自动出现,大数据量下为提升性能采用分页,HTML5端不支持某些桌面客户端功能如布局调整,IE11兼容性问题需关闭兼容性设置,数字录入为方便用户不做严格控制,提供了内外网端口映射及https到http映射的解决方案。
【问题1】:在1920*1080分辨率情况下,火狐最新版浏览器登陆K/3 Cloud的HTML5端应用,浏览器还是会出现横竖两个滚动条?
【答】:在H5下,我们的主要采用流式布局方式,默认宽度未屏幕宽度1920,支持主页数据的无限扩展,当主页数据超出屏幕的时候,这时会出现右边纵向滚动条,滚动条占用了21个像素位置,导致内容部分实际是1920+21=1941像素,这时浏览器会由于内容大于1920(1941>1920)而自动出现横向滚动条;这个一般流式内容网页都是如此;如果强制去掉横向滚动,就得实时计算实际内容高度,并依据该高度是否超出屏幕动态调整所有元素布局,导致整体性能下降。这不是流式布局的初衷,如果实在纠结,建议二次开发采用非流式布局单据做自定义主页。
【问题2】:在较大数据量下,比如1K~10K行数据时,表格和列表都会出现分页,操作就不大方便?
【答】:由于网页性能考虑,在超过200行的情况下强制进行数据分页。否则网页的DOM树会巨大导致网页性能很慢(网页的性能取决于DOM的大小)。如果网页支持很大数据量,但操作性能不好,整体还不如分页方案综合起来好。如果需要巨量数据应用,建议使用桌面客户端。H5的定位是跨平台的中小数据量操作。
对于需要巨量数据和全键盘快捷操作的录单同学,一律建议采用桌面客户端。
为了提高网页表格的性能,关于表格的分页如下:
1、普通列表,基础资料列表:1~200行列表报表:我们采用网页虚模式展示列表,超过200行采用强制进行页内数据二次分页处理,每页50行,在左下角以页码按钮展示;
2、单据体或使用可编辑表格实现的报表:1~200行->我们采用实模式,超过200行采用强制进行页内数据二次分页处理,每页50行,在左下角以页码按钮展示;
【问题3】:桌面客户端支持右键调整单据布局,HTML5端不支持?
【答】:考虑下面三方面内容:
1、考虑到网页元素操作性,尤其是拖动大小等操作性不好;
2、网页端我们将向流式文档布局方向发展,在流式布局中,不存在可以用户随意调整字段位置的可能,都是这个业务块的位置调整,这样的调整可以通过流式布局的纵向,横向,列布局完成;
3、而且布局调整也不是常用性功能,一般一次调整完成后,后续基本按月或按年都不会动了。
因此,有这方面需求的,可以在桌面客户端调整好。在网页端就能展示效果了。
【问题4】:HTML5中列不能支持列拖动到表格外面实现列删除的功能?桌面客户端可以哦。
【答】:这个功能其实意义不大,一旦点击刷新,删除的列又回回来,最好的做法是把不想看到的列在过滤方案中设置为隐藏即可一劳永逸;另外,动态拖动删除列也会导致界面的表格布局重算,当数据量较大,列较多时会严重影响性能表现,因此一般也不建议这样做。
【问题5】:为何IE11浏览器打开K/3 Cloud HTML5端应用,始终还是提示浏览器不符合?
【答】:由于用户设置了IE11浏览器的兼容性设置,导致IE11浏览器运行在IE7的内核上,引起不支持HTML5的现象,去掉浏览器的兼容性设置即可。(如何去掉兼容性设置,请直接百度搜索一下,会有很多答案)。
【问题6】:为何HTML5录入数字比较随意,首位也可以录入0?
【答】:为了提高网页数字录入的便捷性,录入时不做严格控制,录入完成后再做校验。否则校验非法会导致数据修复,会导致光标定位,会导致修改中间某个数字时,修改个位小数时等等都会出现录入困难,操作性不佳的问题。最初考虑对数字控件录入的严格控制,但发现实际各种情况都有,录入,录入后定位光标再修改,在首位修改为0再加小数点,加完小数点回去改整数位,首位加负号,中间修改...等(人类行为的随机性),导致数字控件的录入非常麻烦不好用,最后为了优先快速录入的便捷性,全部控制都去掉了。再网页端这些控制带来了现有性能消耗(录入卡顿)和导致快速录入的便捷性受到极大的影响。为了保证录入的流畅性和可用性,不再做特殊控制。
【问题7】:外网xxxx映射到内网的iis的yyy端口,内网的yyy端口部署了K/3 Cloud,但从外网访问总报错;
【答】:
方案一、更新补丁到2018-3-23号以后补丁,已经支持了内外网不同端口的映射设置;(推荐)
方案二、如果暂时升级不了,可以按下面配置实现外网访问:
服务器并不知道外网代理映射了多少次,所以这个必须从部署层面进行解决。建议如下:
1、外网80映射 内网IISxxx端口;(比如8081端口).
2、外网xxx端口映射内网IISxxx端口;(比如外网8081->IIS:8081).
3、或者外网xxx端口映射外网的xxx端口;(比如外网8081->外网80).
4、如果是ARR反向代理,也是可以配置url重写规则的。
5、如果外网80被屏蔽,内网创建和外网端口一致的虚拟站点(比如外网是7088,内网也创建7088的站点),然后在该站点下创建虚拟应用K3Cloud,指向WebSite目录,同时应用程序池和安装虚拟站点的一致即可。(路由设置虚拟服务器映射:外网7088->IIS:7088)
【问题8】:外网https到内网http的映射
【答】:如果做了https到http的映射,必须在转发的请求的headers里面增加下面参数。
X-Forwarded-Proto = https
【...】
推荐阅读