困扰网络的慢性浏览器错误

从视频故障到内存泄漏,如今的浏览器漏洞更难控制,即使它们把网络速度拖得像爬行一样慢

英格拉姆出版/思想库

Web浏览器是惊人的。如果没有浏览器,我们将无法通过将我们的数据和文档输入到用户的台式机、平板电脑和手机中来与他们保持联系。唉,web浏览器所提供的所有精彩内容,在呈现不像我们希望的那样优雅或没有bug时,会让我们更加沮丧。

当我们开发网站的时候,我们受到浏览器的摆布,就像我们欠浏览器的债一样。任何平台上的任何故障都会跳出来,特别是当它使我们用户的机器崩溃时。由于设计是为了突出或融入,任何粗线条或色彩的错误运用都破坏了我们努力创造的审美体验。即使是最微小的错误,比如在一行的宽度上增加了一个像素,或者表的位置错位了一点,都可能导致令人沮丧的用户体验,更不用说发现、检查和处理它的成本了。

当然,过去情况更糟。浏览器之间的巨大差异已经在很大程度上被W3C网络标准所消除。由于jQuery等库的大量出现,遗留下来的差异通常可以忽略不计,这些库不仅使JavaScript破解变得更容易,而且掩盖了浏览器的不同之处。

这些库有一个固定浏览器bug的习惯。如果浏览器公司修复了一些最严重的漏洞,新的“修复”会破坏旧的补丁和工作区。突然之间,“修复”变成了一个问题,它破坏了我们在错误周围胡乱操纵的旧的稳定性。程序员赢不了。

jQuery等库带来的稳定性也促使浏览器构建者加速并自动化其浏览器更新过程。Mozilla是承诺每隔几个月推出一个新版本的火狐。在过去,每个版本都是web开发人员的稳定目标,我们可以在我们的网站上放一个小GIF,声称它们在IE5中工作得最好。现在里程表转得如此之快,新版本的Firefox将在HTML从服务器到客户端的时间内发布。

同时,我们要求浏览器做更多的事情。我的本地报纸网站让我的机器瘫痪了——弹出式广告、自动播放的视频片段、根据我最近的浏览历史定制广告的代码。如果我女儿看一个娃娃网站,JavaScript会疯狂地寻找一个娃娃广告给我看。所有这些神奇的东西都搞乱了CPU。

+也在网络世界足球竞猜app软件bug和Bugs:比如软件类的虫子+

所有这一切都意味着,今天的浏览器bug比较少见,但却很难控制。下面我们就来看看让web设计人员和开发人员头疼的浏览器bug的最新类型。

布局

最明显的浏览器bug是布局错误。Mozilla的Bugzilla bug数据库中有10个关于布局问题的部分,这还不包括与DOM、CSS或Canvas相关的布局问题。浏览器最重要的工作是排列文本和图像,而正确的排列通常很困难。

许多布局错误看起来很小,几乎深奥到难以理解的程度。Bugzilla错误1303580例如,当CSS标签要求使用斜体时,Firefox要求使用斜体字体。也许只有字体爱好者才会注意到这一点。与此同时Bugzilla错误1296269报道称,部分Comic Sans字体的字母被砍掉了,至少在窗户上是这样。字体设计师做出区分,这对他们很重要。当web设计人员不能在所有浏览器上获得准确正确的外观和感觉时,他们可能会变得有点过于沮丧。

有成百上千甚至上百万个这样的虫子。在InfoWorld,我们遇到过图像在CMS编辑器中消失和span标签只在DOM中出现的问题。

内存泄漏

通常很难注意到内存泄漏。根据定义,它们不会改变任何可见属性。网站的渲染是正确的,但是浏览器没有清理事实。如果访问过多的网站,就会引发泄漏,你的机器就会慢下来,因为所有的内存都被锁定了,存储着一个永远不会被重新使用的数据结构。因此,操作系统疯狂地将虚拟内存块交换到磁盘,而您要花时间等待。最好的选择是重新启动你的机器。

内存泄漏bug的细节可能非常神秘,幸运的是有些程序员花了时间来修复它们。考虑问题640578从Chronium浏览器堆栈。改变DOM的一部分innerHTML财产泄漏内存。带有紧密重复循环调用的一段代码requestAnimationFrame会重复这个问题。像这样的问题有很多。

当然,这并不总是浏览器的错。铬的问题640922,还详细说明了内存泄漏并提供了一个示例。然而,进一步的分析表明,示例代码正在创建日期()对象沿途测试时间,它们可能是问题的根源。

闪光

这是非常正式的。每个人都已经忘记了奥多比Flash带来的精彩的反锯齿艺术作品和网络视频。相反,我们将所有的崩溃归咎于它,而这些崩溃可能是它的错,也可能不是。现在它正式退役了,但速度并不快。即使是一些推动网络标准的最具前瞻性的公司似乎也在他们的页面中添加了Flash代码。我很惊讶地发现Flash代码经常出现在MySpace和GeoCities网站之外。

触摸并单击

要在不同类型的输入之间切换并不容易,尤其是现在平板电脑和手机生成的触控功能可能像也可能不像鼠标点击。因此,发现这一领域存在大量bug就不足为奇了。引导JavaScript框架保持一个详细的名单其中最令人愤怒的bug,以及一些最严重的bug都属于这一类。

例如,Safari浏览器有时会错过手指点击文本的机会<身体>标记(151933)。有时,<选择>菜单在iPad上无法工作,因为浏览器在寻找输入(150079)。有时点击会引发物品的奇怪摆动,甚至看起来像是某个前卫设计师故意设计的。158276)。当屏幕上的文字或图像没有按照我们期望的方式反应时,所有这些都会导致混乱。

视频

我们的计划一直是通过将责任转移到浏览器内部而非插件来简化音频和视频的交付。这消除了接口问题,但并没有消除所有问题。视频bug的列表很长,其中很多都很明显。Bugzilla条目754753描述“主要是红色和绿色的斑点,包含各种幽灵图像,”和Bugzilla条目1302991“结结巴巴,因为找不到更好的词。”

一些最复杂的问题正在出现,因为浏览器整合了各种加密机制,以防止盗版。错误1304899这表明Firefox没有从Adobe自动下载正确的加密机制(EME)。这是火狐的错吗?Adobe的吗?或者是一个奇怪的代理?

视频漏洞将继续占据主导地位。通过在HTML5中添加视频标签,将web视频与其他形式的内容结合起来,这为设计者提供了许多新的可能性,但每一个新的可能性都意味着出现bug和不一致性的新机会。

徘徊

web页面跟随鼠标在页面上移动的能力,帮助web设计者为用户提供关于隐藏在图像或单词后面的特性的暗示。遗憾的是,盘旋的事件并不总是以最快的速度向链条上延伸。

例如,当鼠标悬停在某些图形上时,新的微软Edge浏览器就不会隐藏光标<选择>输入项(817822)。有时徘徊不会结束5381673)。有时,悬停事件链接到错误的项目(7787318)。所有这些都会导致混乱,阻碍使用整洁的效果。

恶意软件

虽然把浏览器漏洞的全部责任都推到浏览器开发人员身上很容易,但这通常是不公平的。许多问题是由恶意软件引起的,这些恶意软件被设计成有用的扩展或插件。在很多情况下,恶意软件在暗中窃取点击或商业信息的同时,做了一些真正有用的事情。

问题是扩展接口非常强大。扩展可以插入任意标签和代码到所有网站。对于正确的人来说,这很酷,但是很容易看到扩展中的新代码是如何与来自网站的代码碰撞的。什么?你不想重新定义美元函数?

与其说这是一个bug,不如说是一个具有非常酷的特性的深刻的哲学问题。但是,能力越大,责任越大——可能比任何扩展程序员都要大。看待这个问题的最佳方式是认识到这是我们——用户——能够控制的一个领域。我们可以关闭扩展,把它们限制在几个没有问题的网站上。对于日常使用来说,这个API有点太强大了——它太强大了,以至于忍不住把扩展API称为最大的bug。但那将否定它为我们所做的一切。

相关文章

这篇文章,“困扰网络的7个浏览器慢性错误”最初是由信息世界

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对最重要的话题发表评论。
相关:

版权©2016足球竞彩网下载

工资调查:结果在