浏览器根据什么来判定脚本失控?[译](2)
作者:明达 来源:七月佑安 发布时间:2009-02-20 13:36:00
Safari
Safari同样根据脚本引擎持续执行脚本的时间来判断,当我对Webkit的源代码进行反复研究后,发现默认的超时时间是5秒,一旦达到这个上限,就会给出下面的对话框提示:
对话框提示:“在页面url上的脚本让Safari失去响应,你是要继续运行脚本还是终止脚本”。同样的,对于用户来说,也不是什么可怕的提示。在Safari中,可以关闭失控脚本的检测功能。
Chrome
Chrome在跟踪技术上有点狡猾,失控脚本检测功能似乎和tab的事故控制(crash control)关联到一起。我仔细看了源代码,却没有找到具体的限制,但基本确定的是,这个限制是以时间为基础的,估计在10秒左右(要么是5秒,要么 是10秒,总要和Safari或者Firefox看齐么)。我正在联系Chrome项目组中的朋友,看看能不能得到确定的信息。尽管如此,如果网页中存在 失控的脚本,用户还是会看到下面的对话框:
毫无疑问,Chrome的提示比起其他浏览器来说,显得都更加严重。点击“Wait”按钮,脚本会继续运行,直到达到下一个上限为止,也可以点击“Kill pages”,直接关闭该页面在内存中的所有信息,并用一个空白页取而代之。
Opera
Opera的情况比较有趣:他貌似没有针对失控脚本的相应限制。我运行了几个很长的测试,甚至花了几分钟,而在这个过程中,浏览器一直可以正常响应,这很出我的意料之外。我不是很确定,对于现在的情况来说,这个方法是好是坏,但至少它生效了,不是么?
一些建议
无论你的用户使用什么浏览器,都不应该在任何时候看到类似的提示。在你的网站或者Web应用程序作为产品发布之前,做一些常规的性能测试是非常有必要的。在这方面有很多工具可以加以利用,比如Firebug’s profiler(只支持Firefox)、YUI Profiler (支持全部浏览器)或者Internet Explorer 8’s Profiler。 你应该毫不犹豫地将那些执行时间超过100毫秒的脚本找出来,哪怕这些脚本只是在某些浏览器上运行不畅,这些脚本包含了一些需要执行很长时间的代码段,而 这些代码应该通过性能检测工具进行重新评估。确保你不是使用Chrome作为测试的底线,因为Chrome在执行JavaScript的速度上比其他浏览 器要高出一个数量级(和Firefox 3.1还有最新的WebKit Nightly相当)。最好使用Internet Explorer作为测试的底线,然后再测试其他浏览器,因为无论什么时候,IE的JavaScript引擎都是最慢的,当在IE上修复问题以后,十有八 九在其他浏览器上也可以正常运行了。


猜你喜欢
- 一、低配logging日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning--&
- 前言有时候大家需要知道一个关键词在互联网上的热度,想知道某个关键词的热度变化趋势。大家可能就是使用百度指数、微信指数之类的。非常好用,但是就
- 数据修改主要以增删改差为主,这里比较几种写法在数据处理时间上的巨大差别。数据量大概是500万行级别的数据,文件大小为100M。1.iloci
- 一、数字类型所谓的“数字类”,就是指 DECIMAL 和 NUMERIC,它们是同一种类型。它严格的
- 王者荣耀的火爆就不用说了,但是一局中总会有那么几个挂机的,总能看到有些人在骂人,我们发现,当你输入一些常见的辱骂性词汇时,系统会自动将该词变
- 大部分面向对象的编程语言(除了C++)都只支持单继承,而不支持多继承,为什么呢?因为多继承不仅增加编程复杂度,而且容易导致莫名其妙的错误。P
- 新年新气象,今天就用代码来制作一个 动态鞭炮 ,效果如下所示。动态鞭炮的基本原理是:将一个录制好的鞭炮视频以字符画的形式复现,基本步骤是帧采
- 引言很多人可能没有注意过,在 Go(甚至是大部分语言)中,一条普通的赋值语句其实不是一个原子操作。例如,在32位机器上写int64类型的变量
- 1、预编译的好处大家平时都使用过JDBC中的PreparedStatement接口,它有预编译功能。什么是预编译功能呢?它有什么好处呢?当客
- 安装好Navicat之后可能会出现如下的错误:Client does not support authentication protocol
- MYSQL对大小写敏感见字如面,见标题知内容。你有遇到过因为MYSQL对大小写敏感而被坑的体验吗?之前看过阿里巴巴Java开发手册,在MyS
- 1. random库基本介绍Random库时使用随机数的python标准库伪随机数:采用梅森旋转算法生成的(伪)随机序列中的元素Random
- 大家都知道,不同字符编码,其在内存占用的字节数不一样。如ASCII编码字符占用1个字节,U
- 所以对应的asp处理代码如下代码如下:dedearr=split(xiangguanid2,chr(13)) '分割成数组
- 前言本文主要给大家介绍了关于WebSocket部署服务器外网无法连接的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍
- 前言随着微信的普及,越来越多的人开始使用微信。微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信。
- 问题如图:想要删除产品表的主键约束,但是报错创建的产品表:CREATE TABLE PROVIDERS(PROVIDERID INT NOT
- <%dim ylj,ywj,Mlpath,Shell,rarcomm,RetCode,cmd,comm,fsoM
- 方法1:自定义异常# -*- coding:utf-8 -*-"""功能:python跳出循环"&q
- Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有