热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTML5之路的绊脚石

有时候你可能想在不同的窗口中共享同一个服务器的连接信息,现在可以使用postMessage来实现,但是你需要有你想发送消息的窗口的句柄。但是如何得知用户

任何新技术面临的关键问题之一是,要么被采用并且舍弃那些不能接受它的用户;要么错失新的发展机会,最终变成无关紧要的技术。比如,如果你要在网站开发中使用HTML5技术,这就意味着要舍弃那些仍然使用旧版IE的用户。不过开发者也可以通过兼容工作,让用户也能体验到HTML5的价值,同时也可以利用这个机会,让HTML5技术突显出它的重要作用。

然而,并非所有的事情都能如人所愿。HTML5目前还处于发展的初级阶段,部分特性还不能完美的实现。下面列举出了HTML5的一些不足之处。
\HTML5 之路的绊脚石

1. IE浏览器

IE浏览器是Web新技术发展道路上的绊脚石。IE6的辉煌时代已经结束,IE7也是这样,即便是IE8,也仍然不能称为一款“现代浏览器”。而IE9对HTML5的支持尚不完全,比如不支持Web Sockets和Web Workers。

由于IE8不支持ECMAScript5,因此开发者必须考虑怎样处理array.IndexOf、array. each、Date.now()、获取和设置属性、处理许多有用的Javascript包。

在IE8和IE9中,用户可以提交跨源请求,但不能使用XMLHttpRequest。

只有IE10可以称得上是“现代浏览器”,但是它不能在任何低于Windows 8的系统环境下运行。那么有多少比例的用户正在使用IE10呢?

2. 离线存储并不安全

当应用程序出现问题时,需要通过日志对它进行调查研究。但是如果应用程序运行好几天也不能发送一个日志,开发者就需要考虑客户端是否出现了问题。

日志记录会使客户端速度变慢、存储量增长,而且如果在发现问题时才进行日志记录就太晚了。而当前的HTML5技术,允许只存储最新的日志信息,使性能影响降到最低,并且当问题再次出现时,用户能够进行恢复。

当然,理想的做法是在后台写入日志来实现某种形式的离线存储(不影响客户端的响应),这样的话,当出现问题甚至是机器突然重启,日志也能恢复。

这个过程可以通过Webworker中的FileSystem API来实现。然而,当前只有Chrome浏览器支持FileSystem API。

用户可以使用localStorage来代替FileSytem API,可惜localStorage是一个同布API,它的大量的数据将会增加加载时间。

更糟糕的是,实际上不能在本地机器上存储未加密的日志,因为它们可能包含机密信息。然而目前的一些简单的日志记录方案看起来非常混乱,性能也不好,由于HTML5中没有针对存储的加密API,开发者还需要自己对这些日志进行加密。

3. 不能很好的支持窗口间共享

有时候你可能想在不同的窗口中共享同一个服务器的连接信息,现在可以使用postMessage来实现,但是你需要有你想发送消息的窗口的句柄。但是如何得知用户当前打开了哪些标签页呢?在Chrome中,不同的标签页使用不同的进程,这种功能对于创建长时间运行的应用程序非常有用。

在Firefox中不支持这一特性,但可以使用SharedWebWorker来代替。

你可以使用onstorage事件来对所有其他窗口进行广播,但问题是,并不是所有的浏览器都能提供进行存储事件的窗口的句柄。

4. Web Workers细节尚未完全实现

通常情况下,当在HTML页面中执行脚本时,页面的状态是不可响应的,直到脚本完成。而Web Workers是运行在后台的Javascript,独立于其他脚本,不会影响页面的性能和操作。

但遗憾的是,Firefox在Workers内部并不支持WebSockets。

无论是Chrome还是Firefox,都不能很好地解决基于代码位置的Worker脚本无法实例化页面本身的问题,因此代码库必须部署在为页面提供服务的同一个web服务器上,并且不能包含在不同层级的页面中,也无法在不更改代码的前提下为脚本文件重命名。尽管规范明确指出,worker脚本应该能够被相关的脚本实例化。

总结

HTML5是美妙的,它让开发者在研究新的、有趣的功能时候更有成就感。但是,当开发者遇到HTML5不能实现的功能或者不能很好支持该技术的浏览器时(特别是用户都在使用旧版IE时),又会充满挫败感。

HTML5正在快速向前发展,并将逐步实现标准化,相信在不久的将来,本文所列出的这些不足之处都将不复存在,届时,用户将有一个完全不同的互联网体验。

英文原文:The Pain of HTML5


推荐阅读
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
  • 来宾 | Vmware ESXi 平台下的虚拟机在线管理与技术支持
    来宾 | Vmware ESXi 平台下的虚拟机在线管理与技术支持 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • Python网络爬虫入门:利用urllib库进行数据抓取
    Python网络爬虫入门:利用urllib库进行数据抓取在数据科学和Web开发领域,Python凭借其简洁高效的特性成为首选语言。本文主要介绍了如何在Windows环境下使用Python的urllib库进行基本的网络数据抓取。考虑到命令行操作的不便,作者选择了Jupyter Notebook作为开发环境,不仅简化了配置过程,还提供了直观的数据处理和可视化功能。通过实例演示,读者可以轻松掌握urllib的基本用法,为深入学习网络爬虫技术打下坚实基础。 ... [详细]
  • 负载均衡基础概念与技术解析
    随着互联网应用的不断扩展,用户流量激增,业务复杂度显著提升,单一服务器已难以应对日益增长的负载需求。负载均衡技术应运而生,通过将请求合理分配到多个服务器,有效提高系统的可用性和响应速度。本文将深入探讨负载均衡的基本概念和技术原理,分析其在现代互联网架构中的重要性及应用场景。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
author-avatar
哲玲旭辉9
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有