本文介绍通过重新编译Firefox JavaScript引擎,在Object原型上添加sleep()方法,实现JavaScript中的睡眠功能。该方法调用C语言线程睡眠函数,默认休眠1秒,会导致UI界面阻塞。文章提供了新编译引擎的下载及使用方法,建议通过定制浏览器分发以支持此类功能。
自定义JS引擎实现sleep功能
既然该功能如此需要,为什么JavaScript标准中不提供这样的函数呢?
目前浏览器都在UI线程解析JavaScript。以火狐浏览器为例,我重新编译了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