作为一个推论,如果一个假设的浏览器只支持严格的HTML5和JavaScript,为了避免兼容性攻击,代码库是否会明显变小?
解决方法
>几个解析器:至少XML,HTML,JavaScript,CSS.
>至少四个独立的布局系统(CSS盒模型,flexbox,SVG,MathML).
>至少一个图形库;对于跨平台浏览器,这需要每平台后端(IE9只使用系统Direct2D库;据我所知,Mac上的Safari只使用Quartz).
>具有JIT,垃圾收集器,一些标准库(一直在增长;请参阅类型化数组和各种其他最新JavaScript功能)的高性能虚拟机.
> DOM实现,包括HTML特定和特定于SVG的DOM接口等各种内容.
>音频和视频处理设施(Mac上的Safari再次将IE卸载到操作系统).
>图像处理设施,至少支持JPG / GIF / PNG.同样,某些浏览器可能能够将部分内容卸载到操作系统中.
>用于将字节流转换为Unicode字符的库.同样,有时这可以卸载到操作系统,有时不会.
>对于跨平台浏览器,某种可移植性层抽象出平台特定的位.
>具有事务和可编程API的HTML编辑器;认为满足.
> textareas的纯文本编辑器.其中一些可以与HTML编辑器共享.
>拼写检查程序,可以卸载也可以不卸载到操作系统.
>支持HTTP的网络库,可能是SPDY,可能是FTP,也可能是其他一些协议.同样,这可能会也可能不会卸载到操作系统.
>用于处理SSL和各种其他加密需求的加密库.同样,这可能会也可能不会卸载到操作系统.
>至少有一个数据库实现(sqlite似乎很受欢迎).
>实际用户界面和诸如此类的各种代码.
>用于处理所有这些之间交互的胶水代码:在JavaScript和DOM之间来回管理调用的代码,在DOM更改时管理重新计算样式和布局信息的代码,处理诸如document.write从JavaScript注入字符串等内容的代码解析器的输入流,等等.请注意,胶水代码的数量通常是交互模块数量的二次方.
我可能错过了一些东西,但这不是我的头脑.
除此之外,至少Gecko和WebKit具有用于字符串和数组之类的模板库(因为C标准库具有各种缺点).
其余的……在这一点上,许多“兼容性黑客”实际上是Web标准的一部分.所以你无法完全避免它们.您的场景涉及JavaScript和HTML,但不涉及SVG或MathML或CSS.如果你真的只是指HTML和JavaScript而不是CSS或其他,那么你显然可以删除一堆代码.如果你包括所有这些,加上HTML5的音频和视频功能,并希望你的浏览器表现良好,那么我怀疑你可以把它做得更小.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。