为JavaScript提供睡眠功能(sleep) 自编译JS引擎_javascript技巧

即然该功能如此需要,但为什么js中不提供这样的函数呢?

目前浏览器都是在UI线程解析js,以火狐浏览器为例,我重新编译了js引擎,并且在js引警中添加了sleep方法,该方法调用c语言的线程睡眠函数.
将方法附加到Object上,方法签名为sleep();无参数.默认休眠1秒钟,如果你在js中调用该函数,浏览器UI界面将被阻碍。

另外如果你的js函数存在死循环,浏览器的js解析会检测到js执行超时会提醒你是否终止执行本页面的js.
最后提供新编译的js引擎,将它们替换firefox下的js引擎即可.

然后你可以写一段js玩一玩,比如"testSleep".sleep();因为我是在Object添加的,所以你可以在任何js对象上调用这个函数.

使用说明:
主要是需要网站访问者需要安装您定制的浏览器。
你自已发布火狐客户端不就行了,如果你的项目真需要.
必须指定我们自已的浏览器,就像要求用户必须安装flash插件一样简单.

附件:firefox_js.rar

时间: 2024-09-20 16:48:27

为JavaScript提供睡眠功能(sleep) 自编译JS引擎_javascript技巧的相关文章

javascript省市级联功能实现方法实例详解_javascript技巧

本文实例讲述了javascript省市级联功能实现方法.分享给大家供大家参考,具体如下: 初步实现方法: <html> <head> <script language="javascript"> function changecity(){ var province = document.form1.selprovince.value; var newoption1,newoption2; switch(province){ case "四

JavaScript中的原型和继承详解(图文)_javascript技巧

请在此暂时忘记之前学到的面向对象的一切知识.这里只需要考虑赛车的情况.是的,就是赛车. 最近我正在观看 24 Hours of Le Mans ,这是法国流行的一项赛事.最快的车被称为 Le Mans 原型车.这些车虽然是由"奥迪"或"标致"这些厂商制造的,可它们并不是你在街上或速公路上所见到的那类汽车.它们是专为参加高速耐力赛事而制造出来的. 厂家投入巨额资金,用于研发.设计.制造这些原型车,而工程师们总是努力尝试将这项工程做到极致.他们在合金.生物燃料.制动技术

JavaScript每天必学之数组和对象部分_javascript技巧

对象部分  Object类型  Object 是一个无序的集合,可以存放任意类型对象,所有其他对象都继承自这个对象.  创建Object类型有两种,一种是使用new运算符,一种是字面量表示法.  1.使用new运算符创建Object var obj = new Object();//注意大写,也可以直接写成Object() 注意,通过new Object() 的写法生成新对象,与字面量的写法 obj = {} 是等价的.  2. 使用字面量方式创建: var obj = { name : 'tr

Javascript匿名函数的一种应用 代码封装_javascript技巧

在一些Javascript库中可以看见这种写法: 复制代码 代码如下: (function(){ //所有库代码代码 })(); 说实话,对于js初学者的我来说.这个东西太吓人了,在这些JS库中,这个函数基本上把整个库的所有代码全括起来了,这种写法完全超越了我的常识.难道不应该好好的划分一下吗,难道不应该体现出层次和功能划分吗,怎么会一个函数搞定呢.我一开始完全不敢去细想它的道理.直到使用JS一段时间后,某一天一位同事在闲聊时说起了这个问题,我才知道这个叫匿名函数.匿名函数我并不陌生,C#,Py

JavaScript constructor和instanceof,JSOO中的一对欢喜冤家_javascript技巧

至少每个尝试JavaScriptOO的程序员都花费很多精力用在面向对象机制的模拟上而非业务本身. 这对Java,C++甚至Php的开发者来讲都是难以想象的. 更糟糕的是模拟OO对于JavaScript高级程序员都有着邪恶的吸引. 因为干这个事儿超然于业务之上,有种创造新编程语言一般的快感,可以令IQ尽情挥洒. 正如前些年大家都想把自个网站的common.js写成个框架一样.直到YUI,JQuery等等的强势推出才稍有平息. 然而虽然各个框架都有对JavaScriptOO模拟,但还未到有谁谁谁可以

JavaScript中this的四个绑定规则总结_javascript技巧

前言 如果要问javascript中哪两个知识点容易混淆,作用域查询和this机制绝对名列前茅.所以这篇文章开始将介绍javascript中this的四个绑定规则,下面来一起看看吧. 绑定规则 1. 默认绑定 独立函数调用时,this 指向全局对象,如果使用严格模式,那么全局对象无法使用默认绑定, this绑定至 undefined. function foo() { console.log(this.a); } var a = 2; foo(); // 2 严格模式时: function fo

javascript日期对象格式化为字符串的实现方法_javascript技巧

javascript提供的日期格式化太简单,一般应用都需要自己实现格式化方法.下面是我想出的一个格式化处理方案,应该是可以满足常用的需求.日期模板中可以使用任意分隔符,还可以使用文字作为分隔符,甚至支持类似yyyyMMdd之类没有分隔符的格式化. 原理:用正则表达式将日期模板中的日期元素[如yyyy, MM, dd]和分隔符拆分成数组,然后用实际的值替换日期元素形成日期字符串. 实现共有两个函数,粘贴可运行. 扩展方式: 示例中只支持了年月日时分秒毫秒的元素,如果需要显示星期则可以在values

判断JavaScript对象是否可用的最正确方法分析_javascript技巧

原文:http://www.quirksmode.org/js/support.html原文作者:Peter-Paul Koch 以下为对原文的翻译: 判断对象存在的方法 很快你就会注意到,JavaScript的部分功能在部分浏览器中无效.如果你要使用一些脚本的高级特性,你首先要检查浏览器是否支持要使用的对象,本文具体说明判断的正确方法. 通过判断浏览器的版本:不! 如果你想知道浏览器是否支持代码中使用的那些对象,记住,永远都不要通过浏览器的版本来判断.我确定你知道,有些浏览器支持你的代码,而有

JavaScript的类型转换(字符转数字 数字转字符)_javascript技巧

在Java中,基本类型之间的强制转换也不是这样的,比如,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf(). 可见,不能把JavaScript中的类型转换看作为"强制类型转换". 在JavaScript中,Double类型和Int类型都是看作为Number对象,因此无论是typeof 1还是typeof 1.0,都是返回number.这样我们可以不用去管是I