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

从视频故障到内存泄漏,如今的浏览器错误很难得到解决,即使它们会使网络缓慢爬行

困扰网络的7个慢性浏览器错误
英格拉姆出版/ Thinkstock

Web浏览器很棒。如果不是浏览器,则无法通过将我们的数据和文档倒入他们的台式机,平板电脑和手机来与用户和客户建立良好的联系。遗憾的是,当渲染效果不如我们所希望的那样优雅或没有错误时,网络浏览器提供的所有精彩内容都会使我们感到沮丧。

在开发网站方面,我们不仅要承担浏览器的责任,还要承担对浏览器的责任。任何平台上的任何故障都会跳出来,尤其是当它使我们的用户的计算机崩溃时。而且,由于设计出类拔萃或脱颖而出,任何粗线或色彩应用不当都会破坏我们努力创造的审美体验。即使是最微小的错误,例如在行的宽度上增加一个额外的像素或使表格稍微对齐,也会导致令人沮丧的用户体验,更不用说发现,审查和解决它的成本了。

当然,它曾经更糟。对W3C Web标准的忠诚度很大程度上消除了浏览器之间的巨大差异。由于jQuery之类的库的激增,剩下的差异通常可以忽略不计,这不仅使JavaScript黑客攻击变得更容易,而且就浏览器不同的方式进行了说明。

这些库有冻结浏览器错误的习惯。如果浏览器公司修复了一些最严重的错误,则新的“修复”可能会破坏旧的补丁程序和解决方法。突然,“修复”成为了破坏我们围绕该错误操纵的旧稳定性的问题。程序员不能赢。

jQuery之类的库所带来的稳定性也鼓励了浏览器构建者加快和自动化其浏览器更新过程。 Mozilla是 承诺的 每几个月推出一个新版本的Firefox。过去,每个版本都是Web开发人员的稳定目标,我们可以在我们的网站上放一些GIF,声称它们在IE5中效果最好。现在,里程表的旋转速度如此之快,以至于在HTML从服务器传输到客户端之前,将会发布新版本的Firefox。

同时,我们要求浏览器做更多的事情。我当地报纸的网站使我的机器陷于瘫痪-扩展了弹出式广告,自动播放的视频片段以及根据我最近的浏览历史对广告进行自定义的代码。如果我女儿在玩偶网站上浏览,则JavaScript疯狂地试图找到一个玩偶广告向我展示。所有这一切使CPU陷入困境。

所有这些都意味着,当今的浏览器错误很少见,但很难确定。以下是最新的浏览器错误类型,这些错误困扰着Web设计人员和开发人员,在很多情况下,甚至是令人讨厌的问题。

布局

浏览器中最明显的错误是布局故障。 Mozilla的Bugzilla Bug数据库包含10个版面问题部分,其中不包括与DOM,CSS或Canvas相关的版面问题。浏览器最重要的工作是排列文本和图像,正确处理通常很困难。

许多布局错误看起来似乎太深奥了。 Bugzilla错误 1303580例如,当CSS标签要求倾斜时,会调用Firefox以使用斜体版本的字体。也许只有字体迷会注意到这一点。同时Bugzilla错误 1296269 报告说,至少在Windows上,Comic Sans中的部分字母被砍掉了。字体设计师做出了区分,这对他们很重要。如果在所有浏览器中都无法获得正确的外观,那么网页设计师可能会变得有些沮丧。

这些错误有成百上千,甚至上百万。在InfoWorld中,我们遇到了以下问题:图片在CMS编辑器中消失,而span标签仅出现在DOM中。

内存泄漏

通常很难注意到内存泄漏。根据定义,它们不会更改任何可见属性。网站显示正确,但事实并非如此。太多次访问会触发泄漏的网站,而您的计算机运行缓慢,因为所有RAM都被锁定,无法保存将要重新使用的数据结构。因此,操作系统疯狂地将虚拟内存块交换到磁盘上,您将花费大量时间等待。最好的选择是重新启动计算机。

内存泄漏错误的详细信息可能令人难以置信,我们很幸运,一些程序员花时间修复它们。考虑问题 640578 from the Chronium browser stack. Changing a part of the DOM by fiddling with the innerHTML property leaks memory. A sample piece of code with a tight repeated loop calling requestAnimationFrame will duplicate the problem. There are dozens of issues like this.

当然,这并不总是浏览器的错。铬问题 640922, for instance, also details a memory leak and provides an example. Further analysis, though, shows that the example code was creating Date() objects along the way to test the time, and they were probably the source of the problem.

这几乎是官方的。每个人都已经忘记了Adobe 闪 带来的出色的抗锯齿艺术品和网络视频。相反,我们将其归咎于所有可能是或不是其故障的崩溃。现在正式退休了,但是进展并不很快。即使是一些最有远见的公司在推行Web标准,它们的页面中似乎仍然包含Flash代码。我很惊讶能在MySpace和GeoCities网站之外找到Flash代码的频率。

触碰和点击

处理各种类型的输入并不容易,尤其是现在平板电脑和手机产生的触摸可能会或可能不会像单击鼠标一样起作用。然后发现这方面有很多错误就不足为奇了。 Bootstrap JavaScript框架不断 热门清单 其最令人发指的错误,以及一些最糟糕的错误。

Safari, for instance, will sometimes miss finger taps on the text in the <body> tag (151933). Sometimes the <select> menus don’t work on the iPad because the browser has shifted the rectangle for looking for input (150079)。有时,点击会在项目中触发怪异的摆动-甚至看起来就像是由前卫设计师故意(158276)。当屏幕上的文本或图像没有按照我们期望的方式反应时,所有这些都会导致混乱。

视频

该计划一直是通过将责任转移到浏览器内部和插件世界之外来简化音频和视频的传递。这样可以消除界面问题,但并不能消除所有问题。视频错误的列表很长,很多都太明显了。 Bugzilla条目 754753 描述“主要包含各种鬼影的红色和绿色斑点”,以及Bugzilla条目 1302991 “‘口吃’因为缺少更好的词。”

随着浏览器集成了旨在防止盗版的各种加密机制,一些最复杂的问题正在出现。虫子 1304899 建议Firefox不会自动从Adobe下载正确的加密机制(EME)。是Firefox的错吗? Adobe的?还是奇怪的代理?

视频错误将继续占据主导地位。通过将视频标签添加到HTML5来将Web视频与其他形式的内容集成在一起,为设计人员带来了许多新的可能性,但是每种新的可能性都意味着出现错误和不一致的新机会。

盘旋

网页跟随鼠标在页面上移动的能力有助于网页设计人员向用户提示图像或文字后面可能隐藏哪些功能。 las,悬停事件并不一定总是尽其所能。

The new Microsoft Edge browser, for instance, doesn’t hide the cursor when the mouse is hovering over some <select> input items (817822)。有时悬停并没有结束(5381673)。有时,悬停事件链接到错误的项目(7787318)。所有这些都导致混乱,并且不鼓励使用非常简洁的效果。

恶意软件

虽然很容易将所有浏览器错误归咎于浏览器开发人员,但这通常是不公平的。许多问题是由设计为有用的扩展程序或插件的恶意软件引起的。在许多情况下,该恶意软件在后台秘密窃取点击或进行商业交易时,确实起到了真正有用的作用。

The problem is that the extension interface is pretty powerful. An extension can insert arbitrary tags and code into all websites. In the right hands, this is very cool, but it’s easy to see how the new code from the extension can bump into the code from the website. What? You didn’t want to redefine the behavior of the $ function?

与其说它是一个深奥的哲学问题,还不如说它是一个很酷的功能,而是一个错误。但是,强大的力量带来了巨大的责任-也许比任何扩展程序员都可以承担的更大。解决此问题的最好方法是意识到这是我们用户可以控制的区域。我们可以关闭扩展程序并将其限制为只有几个没有问题的网站。该API对于日常使用来说有点过于强大-如此强大,以至于很容易将扩展API称为所有最大的错误。但这将否认它为我们所做的一切。

相关文章

这个故事“困扰网络的7个长期浏览器错误”最初是由 信息世界 .

版权 © 2016 IDG通讯 ,Inc.