Web浏览器是惊人的。如果没有浏览器,我们就无法通过将我们的数据和文件输入用户的台式机、平板电脑和手机,与他们建立良好的联系。可惜的是,网页浏览器提供的所有精彩内容,在呈现不像我们希望的那样优雅或无bug时,让我们更加沮丧。
当我们开发网站时,浏览器对我们的影响不亚于我们欠它们的债。任何平台上的任何故障都会跳出来,特别是当它使我们用户的机器崩溃时。由于设计是突显或融入的重要因素,任何粗线条或色彩的不当运用都会破坏我们努力创造的美学体验。即使是最微小的错误,如在一行的宽度上增加一个额外的像素,或调整一个表格,都可能导致令人沮丧的用户体验,更不用说发现、审查和围绕它的工作成本。
当然,过去的情况更糟。由于对W3C网络标准的忠诚,浏览器之间的巨大差异已经在很大程度上消除了。由于像jQuery这样的库的大量出现,它们不仅使JavaScript破解变得更容易,而且还掩盖了浏览器的不同之处。
这些库有一种习惯冻结浏览器错误的错误。如果浏览器公司修复了一些最糟糕的错误,那么新的“修复”可以扰乱旧修补程序和围绕工作。突然间,“修复”成为扰乱旧稳定性的问题,我们在错误的错误周围陷入困境。程序员无法获胜。
像jQuery这样的库带来的稳定性也鼓励浏览器构建者加快和自动化浏览器更新过程。Mozilla是承诺每隔几个月推出一个新版本的Firefox。在过去,每个版本都是Web开发人员的稳定目标,我们可以在我们的网站上放置一个小GIF,声称它们在一起,例如,IE5。现在,里程表会如此迅速转动,即在从服务器到客户端旅行时将释放新版本的Firefox。
同时,我们要求浏览器做更多的事情。当地报纸的网站让我的电脑瘫痪了——扩展弹窗广告、自动播放的视频片段、根据我最近的浏览历史定制广告的代码。如果我的女儿浏览一个洋娃娃网站,JavaScript会疯狂地寻找一个洋娃娃广告给我看。所有这些魔法都把CPU弄得一团糟。
+也在网络世界有个足球雷竞技appBugs & Bugs:软件和昆虫+
所有这一切都意味着今天的浏览器漏洞越来越少,但也越来越难以解决。下面我们就来看看困扰网页设计师和开发人员的最新类型的浏览器漏洞。
布局
最可见的浏览器错误是布局故障。Mozilla的Bugzilla错误数据库有10个用于布局问题的部分,并且不包括分类为与DOM,CSS或Canvas相关的布局问题。浏览器最重要的工作是安排文本和图像,并效果往往很难。
许多布局错误看起来小到几乎是深奥的程度。Bugzilla错误1303580例如,当CSS标签呼叫斜时,使用字体的斜体版本来呼出Firefox。也许只有一个字体瘾君子会注意到。同时Bugzilla虫子1296269.报告报告漫画SAN中的字母部分被切断,至少在Windows上。字体设计师区分,对他们而言。当他们无法获得所有浏览器的确切正确的外观和感觉时,网页设计师可能会变得有点沮丧。
有成百上千,甚至上百万个这样的细菌。在InfoWorld,我们遇到过图像在CMS编辑器中消失的问题,以及只在DOM中出现的span标记。
内存泄漏
通常很难注意到内存泄漏。根据定义,它们不会改变任何可见属性。网站被正确地呈现,但是浏览器并没有在事后清理。如果多次访问网站,就会触发泄漏,你的机器就会慢得像蜗牛,因为所有的RAM都被锁住了,保存着一个永远不会被重新使用的数据结构。因此,操作系统会疯狂地将虚拟内存块交换到磁盘上,而你则要花时间等待。最好的选择是重新启动您的机器。
内存泄漏错误的细节可能是狂热的,我们很幸运的是一些程序员花时间来解决它们。考虑问题640578从记年浏览器堆栈。通过摆弄了一部分DOMinnerHTML财产泄漏内存。带有紧密重复循环调用的示例代码段requestAnimationFrame将重复这个问题。有这样的几十个问题。
当然,这并不总是浏览器的错。铬的问题640922,还详细描述了内存泄漏并提供了一个示例。但是,进一步的分析显示示例代码正在创建中日期()对象沿着测试时间的方式,并且它们可能是问题的来源。
闪光
这是非常官方的。每个人都忘记了Adobe Flash带到Web的美妙的抗锯齿作品和网络视频。我们责怪它的所有崩溃都可能或可能不是它的错。现在它正式退休,但它不会很快。甚至一些推动Web标准的最前瞻性思维公司似乎仍然有他们的页面中的闪存代码。我很惊讶我多久在MySpace和地理位网站外发现Flash代码。
触摸和点击
兼顾各种类型的输入并不容易,特别是现在,平板电脑和手机会产生可能或可能不像鼠标点击的触摸。这不应该令人惊讶,然后在这个领域找到有很多错误。Bootstrap JavaScript框架保留一个详细的名单它最令人恼火的bug,以及一些最严重的bug都属于这一类。
例如,Safari有时会忽略手指在文本上的点击身体< >标记(151933).有时,<选择>菜单不在iPad上工作,因为浏览器已经移位了矩形以寻找输入(150079).有时点击会触发物品的奇怪摆动——甚至看起来像是前卫的设计师故意做的(158276).当屏幕上的文本或图像的反应与我们预期的不一致时,所有这些都会导致混淆。
视频
这个计划一直以来都是简化音频和视频的传递,将责任转移到浏览器内部,而不是插件的世界。这消除了界面问题,但并没有消除所有问题。视频漏洞列表很长,其中许多漏洞都非常明显。Bugzilla条目754753描述“主要是红色和绿色斑点,包含各种鬼图像,”和Bugzilla条目1302991.“我找不到更好的词来形容‘口吃’了。”
由于浏览器集成了旨在防止盗版的各种加密机制,因此出现了一些最复杂的问题。漏洞1304899.这表明Firefox并没有自动从Adobe下载正确的加密机制(EME)。是火狐的错吗?Adobe的吗?或者是一个奇怪的代理?
视频漏洞将继续占据主导地位。通过在HTML5中添加视频标签,将网络视频与其他形式的内容整合在一起,这为设计师提供了许多新的可能性,但每一种新的可能性都意味着漏洞和矛盾的出现。
徘徊
当鼠标在网页上移动时,网页跟随鼠标移动的能力可以帮助网页设计师向用户提示图片或文字背后可能隐藏的特征。唉,悬疑事件并不总是能以最快的速度向上游发展。
例如,新的Microsoft Edge浏览器在鼠标鼠标悬停在某些时不会隐藏光标<选择>输入项(817822).有时徘徊不会结束(5381673).有时悬停事件链接到错误的项目(7787318).所有这些都会导致混淆,并阻碍使用相当整洁的效果。
恶意软件
虽然在浏览器开发人员上为浏览器错误奠定了所有责任,但它通常是不公平的。许多问题是由恶意软件引起的,旨在构成有用的扩展或插件。在许多情况下,恶意软件在秘密窃取背景下的点击或商业时确实有用。
问题是扩展界面非常强大。扩展可以将任意标记和代码插入所有网站。在右手中,这非常酷,但很容易看到扩展的新代码如何从网站中颠簸。什么?你不想重新定义一个行为$函数?
这与其说是一个bug,不如说是一个具有非常酷的特性的深刻的哲学问题。但是,强大的能力带来了巨大的责任——可能是任何扩展程序员都无法具备的。看待这个问题的最好方法是认识到这是我们用户能够控制的一个领域。我们可以关闭扩展并将其限制在少数没有问题的网站上。对于日常使用来说,这个API有点太强大了——强大到让人忍不住把扩展API称为最大的bug。但那会否定它为我们所做的一切。
相关文章
- 除jQuery之外:JavaScript框架的专家指南
- 回顾:测试的7个JavaScript ide
- HTML5拍摄:Chrome,Safari,Firefox,即和歌剧如何测量
- 点评:13 Primo Python Web框架
- 懒惰编程的威力
- 下载:开发商职业发展指南
- 7个有效的糟糕编程想法
- 9我们暗中爱的不良编程习惯
- 21热长编程趋势 - 和21次冷
这篇题为“困扰网络的7个慢性浏览器漏洞”的文章最初发表于infoworld. .